21 Commits
Author SHA1 Message Date
zhangyi 9699f1356f Merge branch 'feat-shebei' into test 2026-10-29 16:49:26 +08:00
zhangyi 899a222e3f update:优化 2026-10-29 16:49:08 +08:00
zhangyi ca727ec1f7 update:优化wifi反馈 2026-10-29 16:28:03 +08:00
zhangyi aa33a931b1 Merge branch 'feat-shebei' into test 2026-10-29 16:12:32 +08:00
zhangyi bac84536c7 update:优化样式 2026-10-29 16:11:58 +08:00
zhangyi f044a95872 Merge branch 'feat-shebei' into test 2026-10-29 15:08:06 +08:00
zhangyi 318b952a9b Merge branch 'feat-training' into test 2026-10-23 14:50:28 +08:00
zhangyi 14437bb5a7 Merge branch 'feat-training' into test 2026-10-23 11:55:19 +08:00
zhangyi f16b486a89 update:优化打包 2026-10-21 16:02:34 +08:00
zhangyi 6c69e14630 Merge branch 'feat-mendian' into test 2026-10-21 15:50:01 +08:00
zhangyi 34118d59d3 Merge branch 'feat-mendian' into test 2026-10-21 15:38:46 +08:00
zhangyi b82474913a Merge branch 'feat-training' into test 2026-10-13 11:33:10 +08:00
zhangyi 9d9f005ca3 Merge branch 'feat-training' into test 2026-10-12 14:57:28 +08:00
zhangyi 605a0b2d91 Merge branch 'feat-shebei' into test 2026-10-08 14:35:34 +08:00
zhangyi c9bfa6792b Merge branch 'feat-shebei' into test 2026-09-24 17:10:53 +08:00
zhangyi b0ddf147aa Merge branch 'feat-shebei' into test 2026-09-24 15:16:37 +08:00
zhangyi 3caa53d4be Merge branch 'feat-training' into test 2026-09-24 10:23:55 +08:00
zhangyi f4f63954eb Merge branch 'feat-shebei' into test 2026-09-23 18:35:04 +08:00
zhangyi b89744802a Merge branch 'feat-shebei' into test 2026-09-23 15:37:10 +08:00
zhangyi fd6be25ba5 update:恢复ws电量通知代码 2026-09-23 14:22:57 +08:00
zhangyi bad3c8ff9a Merge branch 'feat-training' into test 2026-09-23 10:50:06 +08:00
6 changed files with 62 additions and 59 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": []
+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": {
+2 -2
View File
@@ -874,8 +874,8 @@ onShow(async () => {
.product-link { .product-link {
position: fixed; position: fixed;
bottom: 104rpx; bottom: 208rpx;
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%;
+20 -1
View File
@@ -39,6 +39,7 @@ 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);
@@ -364,10 +365,13 @@ 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) {
@@ -382,6 +386,13 @@ 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;
@@ -755,6 +766,14 @@ 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连接成功"
+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;