diff --git a/main/manager-mobile/src/pages.json b/main/manager-mobile/src/pages.json
index 5ddd6f53..400fdf28 100644
--- a/main/manager-mobile/src/pages.json
+++ b/main/manager-mobile/src/pages.json
@@ -1,7 +1,7 @@
{
"globalStyle": {
"navigationStyle": "default",
- "navigationBarTitleText": "小智",
+ "navigationBarTitleText": "小智智控台",
"navigationBarBackgroundColor": "#f8f8f8",
"navigationBarTextStyle": "black",
"backgroundColor": "#FFFFFF"
diff --git a/main/manager-mobile/src/pages/login/index.vue b/main/manager-mobile/src/pages/login/index.vue
index 225c5da0..71f53cce 100644
--- a/main/manager-mobile/src/pages/login/index.vue
+++ b/main/manager-mobile/src/pages/login/index.vue
@@ -115,6 +115,15 @@ function generateUUID() {
})
}
+let skipReLaunch = false // 全局或组件作用域
+
+//跳转至服务端设置页面
+function goToServerSetting() {
+ uni.switchTab({
+ url: '/pages/settings/index',
+ })
+}
+
// 获取验证码
async function refreshCaptcha() {
const uuid = generateUUID()
@@ -217,6 +226,15 @@ onMounted(async () => {
+
+
+
+
+
@@ -775,4 +793,32 @@ onMounted(async () => {
}
}
}
+.server-btn {
+ position: absolute;
+ right: 20rpx; // 距离右边距
+ top: 40rpx; // 顶部稍微下移,不贴状态栏
+ width: 48rpx;
+ height: 48rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 999;
+ cursor: pointer;
+ background: rgba(255, 255, 255, 0.15); // 半透明背景,更好看
+ border-radius: 24rpx; // 圆形按钮
+ box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.2); // 阴影
+
+ &:active {
+ transform: scale(0.95);
+ }
+
+ .server-icon {
+ font-size: 28rpx;
+ color: #FFFFFF; // 白色图标
+ }
+
+ &:hover {
+ background: rgba(255, 255, 255, 0.25); // 悬停效果
+ }
+}
diff --git a/main/manager-mobile/src/pages/settings/index.vue b/main/manager-mobile/src/pages/settings/index.vue
index bcc3ced1..cef02761 100644
--- a/main/manager-mobile/src/pages/settings/index.vue
+++ b/main/manager-mobile/src/pages/settings/index.vue
@@ -116,6 +116,9 @@ function restartApp() {
// 切换地址后自动清空所有缓存
function clearAllCacheAfterUrlChange() {
try {
+ // 备份运行时覆盖地址,确保清理后恢复
+ const preservedOverride = getServerBaseUrlOverride()
+
// 完全清空所有缓存,包括token
uni.clearStorageSync()
@@ -126,6 +129,11 @@ function clearAllCacheAfterUrlChange() {
}
// #endif
+ // 恢复运行时覆盖地址(如有),需要在清理完成后再写入
+ if (preservedOverride) {
+ setServerBaseUrlOverride(preservedOverride)
+ }
+
// 重新获取缓存信息
getCacheInfo()
}
@@ -164,6 +172,8 @@ function showAbout() {
uni.showModal({
title: `关于${import.meta.env.VITE_APP_TITLE}`,
content: `${import.meta.env.VITE_APP_TITLE}\n\n基于 Vue.js 3 + uni-app 构建的跨平台移动端管理应用,为小智ESP32智能硬件提供设备管理、智能体配置等功能。\n\n© 2025 xiaozhi-esp32-server`,
+ title: `关于小智智控台`,
+ content: `小智智控台\n\n基于 Vue.js 3 + uni-app 构建的跨平台移动端管理应用,为小智智控台ESP32智能硬件提供设备管理、智能体配置等功能。\n\n© 2025 xiaozhi-esp32-server 0.7.5`,
showCancel: false,
confirmText: '确定',
})
@@ -192,6 +202,7 @@ onMounted(async () => {
@@ -206,6 +217,17 @@ onMounted(async () => {
+
+
+