Selaa lähdekoodia

增加服务器配置选择

wangming 2 kuukautta sitten
vanhempi
commit
ebb1f1e50d

+ 12 - 3
src/components/js_sdk/index.js

@@ -3,13 +3,22 @@ const http = new Request();
 http.setConfig(config => {
     /* 设置全局配置 */
     if (__wxConfig.envVersion == 'develop') {
-        config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        let selectedService = uni.getStorageSync("sercviceChoice")
+        if (!selectedService || selectedService == 'aloneServe') {
+            config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        }
     }
     if (__wxConfig.envVersion == 'trial') {
-        config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        let selectedService = uni.getStorageSync("sercviceChoice")
+        if (!selectedService || selectedService == 'aloneServe') {
+            config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        }
     }
     if (__wxConfig.envVersion == 'release') {
-        config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        let selectedService = uni.getStorageSync("sercviceChoice")
+        if (!selectedService || selectedService == 'aloneServe') {
+            config.baseUrl = "https://radar-power.cn/portal-service-server/";
+        }
     }
     config.header = {
         // a: 1,

+ 2 - 2
src/pages.json

@@ -143,10 +143,10 @@
                     "usingComponents": {}
                 },
                 {
-                    "path": "sharePages/sharePages",
+                    "path": "serChange/serChange",
                     "style": {
                         "enablePullDownRefresh": true,
-                        "navigationBarTitleText": "确认分享",
+                        "navigationBarTitleText": "网络配置",
                         "navigationBarBackgroundColor": "#faede2",
                         "navigationBarTextStyle": "black"
                     }

+ 5 - 0
src/pages/home/home.vue

@@ -139,6 +139,11 @@ export default {
                     }
                 });
         }
+        // 配置服务器
+        let selectedService = uni.getStorageSync("sercviceChoice");
+        if (!selectedService) {
+            uni.setStorageSync("sercviceChoice", "aloneServe");
+        }
     },
     onShareAppMessage() {
         return {

+ 5 - 2
src/pagesA/deviceDetail/deviceDetail.vue

@@ -407,8 +407,11 @@ export default {
                 },
                 rejectUnauthorized: false, // 仅开发环境使用,生产环境应设为true或移除
             };
-            let client = mqtt.connect("wxs://radar-power.cn:8084/mqtt", params);
-
+            let client = "";
+            let selectedService = uni.getStorageSync("sercviceChoice");
+            if (!selectedService || selectedService == "aloneServe") {
+                client = mqtt.connect("wxs://radar-power.cn:8084/mqtt", params);
+            }
             // 存储client引用以便后续操作
             this.mqttClient = client;
 

+ 14 - 0
src/pagesA/my/my.vue

@@ -36,6 +36,15 @@
                     <image src="../../static/arrTwo.png" mode="" />
                 </view>
             </view>
+            <view class="menu-item" @click="serverchange()">
+                <view class="meanLeft">
+                    <image src="../../static/logoff.png" mode="" />
+                    <text>网络配置</text>
+                </view>
+                <view class="meanRight">
+                    <image src="../../static/arrTwo.png" mode="" />
+                </view>
+            </view>
         </view>
 
         <view class="logoutBtn" @click="goLogout">退出登录</view>
@@ -115,6 +124,11 @@ export default {
                 },
             });
         },
+        serverchange() {
+            uni.navigateTo({
+                url: "/pagesA/serChange/serChange",
+            });
+        },
     },
 };
 </script>

+ 168 - 0
src/pagesA/serChange/serChange.vue

@@ -0,0 +1,168 @@
+<template>
+    <view class="box">
+        <view class="config-info">
+            <view class="title">服务器选择</view>
+            <radio-group class="input-box" @change="radioChange">
+                <label
+                    v-for="item in options"
+                    :key="item.value"
+                    class="radio-item"
+                >
+                    <radio
+                        :value="item.value"
+                        :checked="item.checked"
+                        color="#774e41"
+                    />
+                    <text class="radio-label">{{ item.name }}</text>
+                </label>
+            </radio-group>
+            <van-cell size="large" title="当前服务器" :value="selectServer" />
+            <view class="login-btn">
+                <button class="btn" @click="confirm">确认</button>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+            options: [
+                { name: "单机服务器", value: "aloneServe", checked: true },
+                { name: "集群服务器", value: "clusterServer", checked: false },
+            ],
+            selectServer: "单机服务器",
+            selectValue: "",
+        };
+    },
+    methods: {
+        radioChange(e) {
+            const value = e.detail.value;
+            this.options = this.options.map((item) => ({
+                ...item,
+                checked: item.value === value,
+            }));
+            this.selectServer =
+                this.options.find((item) => item.checked)?.name || "";
+            this.selectValue =
+                this.options.find((item) => item.checked)?.value || "";
+        },
+        confirm() {
+            if (this.selectValue == "aloneServe") {
+                uni.setStorageSync("sercviceChoice", "aloneServe");
+            } else if (this.selectValue == "clusterServer") {
+                uni.setStorageSync("sercviceChoice", "clusterServer");
+            }
+            uni.removeStorageSync("devId");
+            uni.removeStorageSync("phone");
+            uni.removeStorageSync("userId");
+            uni.removeStorageSync("unionid");
+            uni.removeStorageSync("openid");
+            uni.reLaunch({
+                url: "/pagesA/loginNew/loginNew",
+            });
+        },
+    },
+    onShow() {
+        let selectedValue = uni.getStorageSync("sercviceChoice")
+            ? uni.getStorageSync("sercviceChoice")
+            : "aloneServe";
+        this.options = this.options.map((item) => ({
+            ...item,
+            checked: item.value === selectedValue,
+        }));
+        this.selectServer =
+            this.options.find((item) => item.checked)?.name || "";
+        this.selectValue =
+            this.options.find((item) => item.checked)?.value || "";
+    },
+};
+</script>
+
+<style lang="less">
+// 颜色变量
+.box {
+    padding: 10rpx 18rpx;
+    width: 100vw;
+    height: 100vh;
+    background: linear-gradient(180deg, #faede2 0%, #f4f4f4 100%);
+    box-sizing: border-box;
+
+    .config-info {
+        background: #ffffff;
+        border-radius: 16rpx;
+        padding: 32rpx;
+        box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
+
+        .title {
+            font-size: 36rpx;
+            font-weight: 600;
+            color: #333;
+            margin-bottom: 40rpx;
+            position: relative;
+            padding-left: 20rpx;
+
+            &::before {
+                content: "";
+                position: absolute;
+                left: 0;
+                top: 50%;
+                transform: translateY(-50%);
+                width: 8rpx;
+                height: 36rpx;
+                background: #774e41;
+                border-radius: 4rpx;
+            }
+        }
+
+        .input-box {
+            margin-bottom: 40rpx;
+
+            .radio-item {
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                margin-bottom: 24rpx;
+                padding: 20rpx;
+                background: fade(#8a6845, 5%);
+                border-radius: 12rpx;
+                transition: all 0.3s;
+
+                &:active {
+                    background: fade(#f9eee3, 10%);
+                }
+
+                .radio-label {
+                    margin-left: 16rpx;
+                    font-size: 30rpx;
+                    color: #333;
+                }
+            }
+        }
+
+        .login-btn {
+            margin-top: 60rpx;
+
+            .btn {
+                width: 100%;
+                height: 88rpx;
+                line-height: 88rpx;
+                background: #774e41;
+                color: #ffffff;
+                border-radius: 12rpx;
+                font-size: 32rpx;
+                border: none;
+
+                &::after {
+                    border: none;
+                }
+
+                &:active {
+                    opacity: 0.9;
+                }
+            }
+        }
+    }
+}
+</style>