14 Commits
9 changed files with 49 additions and 88 deletions
+4 -8
View File
@@ -4,6 +4,10 @@
"libVersion": "3.7.7", "libVersion": "3.7.7",
"packOptions": { "packOptions": {
"ignore": [ "ignore": [
{
"type": "folder",
"value": "static/coin"
},
{ {
"type": "file", "type": "file",
"value": "static/common/dialog-light.png" "value": "static/common/dialog-light.png"
@@ -243,14 +247,6 @@
{ {
"type": "folder", "type": "folder",
"value": "static/training-difficulty-design" "value": "static/training-difficulty-design"
},
{
"type": "folder",
"value": "static/coin"
},
{
"type": "folder",
"value": "static/home-device"
} }
], ],
"include": [] "include": []
+1 -3
View File
@@ -164,8 +164,6 @@ const defaultHighlightStyle = {
color: "rgba(255, 228, 0, 0.6)", color: "rgba(255, 228, 0, 0.6)",
strokeColor: "rgba(254, 216, 71, 0.82)", strokeColor: "rgba(254, 216, 71, 0.82)",
lineWidthRatio: 0.003, lineWidthRatio: 0.003,
// 在最小线宽计算后应用倍数,确保不同靶面尺寸下按比例加粗。
lineWidthScale: 1,
}; };
// 合并默认靶纸样式和外部传入样式,ringColors 单独深合并。 // 合并默认靶纸样式和外部传入样式,ringColors 单独深合并。
@@ -321,7 +319,7 @@ const drawSectorHighlight = (
(angles.endAngle - angles.startAngle) * safeRevealProgress, (angles.endAngle - angles.startAngle) * safeRevealProgress,
style.color, style.color,
style.strokeColor, style.strokeColor,
Math.max(1, targetRadius * style.lineWidthRatio) * style.lineWidthScale Math.max(1, targetRadius * style.lineWidthRatio)
); );
}); });
}; };
+4 -8
View File
@@ -55,6 +55,10 @@
"appid" : "wxa8f5989dcd45cc23", "appid" : "wxa8f5989dcd45cc23",
"packOptions" : { "packOptions" : {
"ignore" : [ "ignore" : [
{
"type" : "folder",
"value" : "static/coin"
},
{ {
"type" : "file", "type" : "file",
"value" : "static/common/dialog-light.png" "value" : "static/common/dialog-light.png"
@@ -294,14 +298,6 @@
{ {
"type" : "folder", "type" : "folder",
"value" : "static/training-difficulty-design" "value" : "static/training-difficulty-design"
},
{
"type" : "folder",
"value" : "static/coin"
},
{
"type" : "folder",
"value" : "static/home-device"
} }
] ]
}, },
-15
View File
@@ -21,9 +21,6 @@
{ {
"path": "pages/audio-test" "path": "pages/audio-test"
}, },
{
"path": "pages/calibration"
},
{ {
"path": "pages/about-us" "path": "pages/about-us"
}, },
@@ -60,12 +57,6 @@
{ {
"path": "pages/match-page" "path": "pages/match-page"
}, },
{
"path": "pages/my-device"
},
{
"path": "pages/device-intro"
},
{ {
"path": "pages/user" "path": "pages/user"
}, },
@@ -107,12 +98,6 @@
}, },
{ {
"path": "pages/mine-bow-data" "path": "pages/mine-bow-data"
},
{
"path": "pages/ota-wifi",
"style": {
"navigationStyle": "custom"
}
} }
], ],
"globalStyle": { "globalStyle": {
+5 -5
View File
@@ -447,12 +447,12 @@ onShow(async () => {
<text class="highlight-text">射灵智能弓箭</text> <text class="highlight-text">射灵智能弓箭</text>
<text>设备上的二维码</text> <text>设备上的二维码</text>
</view> </view>
<!-- <view class="benefit-copy"> <view class="benefit-copy">
<text>新设备首次绑定账号可获赠</text> <text>新设备首次绑定账号可获赠</text>
<text class="highlight-text">6个月射灵会员礼包</text> <text class="highlight-text">6个月射灵会员礼包</text>
<text>,</text> <text>,</text>
<text>该礼包仅可使用一次,请确保当前登录账号为您本人账号。</text> <text>该礼包仅可使用一次,请确保当前登录账号为您本人账号。</text>
</view> --> </view>
<button class="help-link" hover-class="none" @click="showTip = true"> <button class="help-link" hover-class="none" @click="showTip = true">
<text>没找到二维码或遇到问题&gt;</text> <text>没找到二维码或遇到问题&gt;</text>
</button> </button>
@@ -866,7 +866,7 @@ onShow(async () => {
} }
.help-link { .help-link {
margin-top: 36rpx; margin-top: 72rpx;
color: #ffd947; color: #ffd947;
font-size: 26rpx; font-size: 26rpx;
line-height: 36rpx; line-height: 36rpx;
@@ -874,8 +874,8 @@ onShow(async () => {
.product-link { .product-link {
position: fixed; position: fixed;
bottom: 208rpx; bottom: 104rpx;
/* bottom: calc(env(safe-area-inset-bottom) + 104rpx); */ bottom: calc(env(safe-area-inset-bottom) + 104rpx);
left: 0; left: 0;
z-index: 2; z-index: 2;
width: 100%; width: 100%;
+1 -20
View File
@@ -39,7 +39,6 @@ const connectMode = ref("secure"); // secure | open | manual
const connectError = ref(""); const connectError = ref("");
const connectStatusText = ref(""); const connectStatusText = ref("");
const isSubmittingWifi = ref(false); const isSubmittingWifi = ref(false);
const wifiSuccessVisible = ref(false);
const keyboardHeight = ref(0); const keyboardHeight = ref(0);
// 控制密码输入框是否显示明文 // 控制密码输入框是否显示明文
const showPassword = ref(false); const showPassword = ref(false);
@@ -365,13 +364,10 @@ const submitDeviceWifiConfig = async ({ ssid, password }) => {
secure: connectMode.value === "secure" || !!password, secure: connectMode.value === "secure" || !!password,
}; };
connectError.value = ""; connectError.value = "";
currentState.value = STATES.CONNECTED;
void refreshConnectedWifiName(); void refreshConnectedWifiName();
if (fromFirmwareUpdate.value) { if (fromFirmwareUpdate.value) {
currentState.value = STATES.CONNECTED;
openFirmwareCountdown(); openFirmwareCountdown();
} else {
// 保留配网输入界面,避免成功提示出现前先露出 WiFi 列表。
wifiSuccessVisible.value = true;
} }
} catch (err) { } catch (err) {
if (requestId === wifiConnectRequestId) { if (requestId === wifiConnectRequestId) {
@@ -386,13 +382,6 @@ const submitDeviceWifiConfig = async ({ ssid, password }) => {
} }
}; };
// 普通配网成功后,确认并收起输入界面,停留在当前 WiFi 页面。
const confirmWifiSuccess = () => {
if (!wifiSuccessVisible.value) return;
wifiSuccessVisible.value = false;
currentState.value = STATES.CONNECTED;
};
// 校验用户输入并提交 WiFi 配置,不再把手机连接结果当作设备连接成功。 // 校验用户输入并提交 WiFi 配置,不再把手机连接结果当作设备连接成功。
const joinNetwork = () => { const joinNetwork = () => {
if (joinDisabled.value) return; if (joinDisabled.value) return;
@@ -766,14 +755,6 @@ onUnmounted(() => {
</view> </view>
</view> </view>
<ModalDialog
:show="wifiSuccessVisible"
content="WIFI连接成功"
confirmText="确定"
:showCancel="false"
:onConfirm="confirmWifiSuccess"
></ModalDialog>
<ModalDialog <ModalDialog
:show="countdownVisible" :show="countdownVisible"
title="WiFi连接成功" title="WiFi连接成功"
@@ -546,7 +546,6 @@ onBeforeUnmount(() => {
:showCrosshair="false" :showCrosshair="false"
:showRingLabels="false" :showRingLabels="false"
:highlightOnly="true" :highlightOnly="true"
:highlightStyle="{ strokeColor: '#00fffc', lineWidthScale: 3 }"
:sectorCount="sectorCount" :sectorCount="sectorCount"
:activeSector="activeSector" :activeSector="activeSector"
:activeRings="activeRings" :activeRings="activeRings"
+2 -3
View File
@@ -501,15 +501,14 @@ const trainingCopy = computed(() => {
const targetArrows = const targetArrows =
getPositiveInteger(practiceInfo.value.targetArrows) || getPositiveInteger(practiceInfo.value.targetArrows) ||
getPositiveInteger(trainingParams.value.totalReq) || totalArrows; getPositiveInteger(trainingParams.value.totalReq) || totalArrows;
// 展示当前节奏序号,从 1 开始;内部仍累计已完成次数。 const completedArrows = rhythmCompletedRounds.value;
const currentRound = Math.min(totalArrows, rhythmCompletedRounds.value + 1);
const hitReq = rhythmHitReq.value; const hitReq = rhythmHitReq.value;
const qualifiedArrows = scores.value.filter((arrow) => arrow?.ok === true).length; const qualifiedArrows = scores.value.filter((arrow) => arrow?.ok === true).length;
return { return {
inline: true, inline: true,
details: [ details: [
{ text: `(${currentRound}/${totalArrows})`, highlight: true }, { text: `(${completedArrows}/${totalArrows})`, highlight: true },
{ text: " 个节奏内,跟随节奏射箭,命中 " }, { text: " 个节奏内,跟随节奏射箭,命中 " },
{ text: `(${qualifiedArrows}/${targetArrows})`, highlight: true }, { text: `(${qualifiedArrows}/${targetArrows})`, highlight: true },
{ text: " 箭" }, { text: " 箭" },
+16 -9
View File
@@ -93,30 +93,36 @@ function createWebSocket(token, onMessage) {
"/addons/shoot/otaResult", "/addons/shoot/otaResult",
]; ];
if (passthroughEvents.includes(event)) { if (passthroughEvents.includes(event)) {
if ((code == null || Number(code) === 0) && onMessage && data && typeof data === "object") { if (
(code == null || Number(code) === 0) &&
onMessage &&
data &&
typeof data === "object"
) {
onMessage({ event, data, code, timestamp }); onMessage({ event, data, code, timestamp });
} }
return; return;
} }
if (data?.type) { if (!data || typeof data !== "object") return;
if (data.type) {
if (ENABLE_REALTIME_MESSAGE_LOG) { if (ENABLE_REALTIME_MESSAGE_LOG) {
console.log("收到 WebSocket 消息", getMessageTypeName(data.type)); console.log("收到 WebSocket 消息", getMessageTypeName(data.type));
} }
if (onMessage) onMessage({ ...(data.data || {}), type: data.type }); if (onMessage) onMessage({ ...(data.data || {}), type: data.type });
return; return;
} }
const updates = Array.isArray(data?.updates) ? data.updates : []; if (!Array.isArray(data.updates)) return;
if (!updates.length) return; if (onMessage) onMessage(data.updates);
if (onMessage) onMessage(updates); const firstMessage = data.updates[0];
const msg = updates[0]; if (firstMessage && ENABLE_REALTIME_MESSAGE_LOG) {
if (msg) {
if (ENABLE_REALTIME_MESSAGE_LOG) {
console.log( console.log(
"收到 WebSocket 更新", "收到 WebSocket 更新",
getMessageTypeName(msg.constructor), getMessageTypeName(firstMessage.constructor),
{ updateCount: data.updates.length } { updateCount: data.updates.length }
); );
} }
data.updates.forEach((msg) => {
if (msg) {
if (msg.constructor === MESSAGETYPES.RankUpdate) { if (msg.constructor === MESSAGETYPES.RankUpdate) {
uni.setStorageSync("latestRank", msg.lvl); uni.setStorageSync("latestRank", msg.lvl);
} else if (msg.constructor === MESSAGETYPES.LvlUpdate) { } else if (msg.constructor === MESSAGETYPES.LvlUpdate) {
@@ -130,6 +136,7 @@ function createWebSocket(token, onMessage) {
} }
} }
}); });
});
socketTask.onError((err) => { socketTask.onError((err) => {
if (socket !== socketTask) return; if (socket !== socketTask) return;