zhuangyunsheng пре 4 месеци
родитељ
комит
76a0c65c76
4 измењених фајлова са 39 додато и 27 уклоњено
  1. 11 2
      src/router/index.js
  2. 1 1
      src/views/device/index.vue
  3. 26 23
      src/views/system/index.vue
  4. 1 1
      src/views/system/main.js

+ 11 - 2
src/router/index.js

@@ -3,6 +3,7 @@ import { createRouter, createWebHashHistory } from "vue-router";
 import NProgress from "nprogress"
 import "nprogress/nprogress.css"
 import config from "@/config";
+import api from "@/api";
 import tool from "@/utils/tool";
 import systemRouter from "./systemRouter";
 import userRoutes from '@/config/route';
@@ -59,8 +60,16 @@ router.beforeEach(async (to, from, next) => {
     
     // 加载动态/静态路由
 	if (!isGetRouter) {
-        tool.data.set("MENU", [...userRoutes]);
-        XEUtils.arrayEach(XEUtils.toTreeArray(filterAsyncRouter([...userRoutes])), item => router.addRoute("layout", item))
+        console.log(111)
+        const res = await api.system.configure.get();
+        const configure = XEUtils.get(res, "expands._configures", {});
+        // 默认为离线模式
+        const mode = XEUtils.get(XEUtils.get(configure, "sys.mode", {}), "v", "box.offline");
+        // 半离线模式
+        const menus = mode == "box.mixed" ? XEUtils.filter(userRoutes, item => ["device", "system"].includes(item.name)) : userRoutes;
+        tool.data.set("CONFIGURES", configure);
+        tool.data.set("MENU", [...menus]);
+        XEUtils.arrayEach(XEUtils.toTreeArray(filterAsyncRouter([...menus])), item => router.addRoute("layout", item))
 		routes_404_r = router.addRoute(routes_404)
         !to.matched.length && router.push(to.fullPath);
 

+ 1 - 1
src/views/device/index.vue

@@ -11,9 +11,9 @@
 </template>
 
 <script setup>
+import moment from "moment";
 import XEUtils from "xe-utils";
 import TOOL from "@/utils/tool";
-import moment from "moment";
 
 const formatOnline = seconds => {
     const hour = XEUtils.floor(XEUtils.divide(seconds, 3600));

+ 26 - 23
src/views/system/index.vue

@@ -9,8 +9,12 @@
                         <el-input-number v-if="key.endsWith('Time')" v-model="form[key].v" :min="60" :controls="false" :readonly="!item.isUpdate">
                             <template #suffix>秒</template>
                         </el-input-number>
+                        <el-select v-else-if="key == 'sys.mode'" v-model="form[key].v" :disabled="!item.isUpdate">
+                            <el-option value="box.offline"></el-option>
+                            <el-option value="box.mixed"></el-option>
+                        </el-select>
                         <el-input v-else v-model="form[key].v" :readonly="!item.isUpdate"></el-input>
-
+                        
                         <template v-if="!key.startsWith('oss.')">
                             <template v-if="item.isUpdate">
                                 <el-button :loading="isSaving" type="primary" link @click="submit(item, key)">保存</el-button>
@@ -28,11 +32,12 @@
 <script setup>
 import XEUtils from "xe-utils";
 import API from "@/api";
-import { defaultConfig } from "./main";
+import TOOL from "@/utils/tool";
+import { useRouter } from "vue-router";
 
-const configures = ref({});
-const form = ref({});
+const router = useRouter()
 
+const form = ref(XEUtils.clone(TOOL.data.get("CONFIGURES"), true));
 const isSaving = ref(false);
 
 const validateConfig = ({ field }, _, callback) => {
@@ -40,21 +45,9 @@ const validateConfig = ({ field }, _, callback) => {
     callback()
 }
 
-const getConfig = () => {
-    API.system.configure.get().then(res => {
-        if (res.code == 200) {
-            configures.value = XEUtils.clone(XEUtils.get(res, "expands._configures"), true);
-            form.value = XEUtils.clone(XEUtils.get(res, "expands._configures"), true);
-        } else throw res.message;
-    }).catch(() => {
-        configures.value = {};
-        form.value = {};
-    });
-}
-
 const resetItem = (item, keyName) => {
     XEUtils.set(item, "isUpdate", false);
-    XEUtils.set(item, "v", XEUtils.get(configures.value, keyName).v);
+    XEUtils.set(item, "v", XEUtils.get(TOOL.data.get("CONFIGURES"), keyName).v);
     formRef.value.validateField(keyName);
 }
 
@@ -74,9 +67,13 @@ const submit = (item, keyName) => {
             API.system.configure.edit({ keyName, v: item.v }).then(res => {
                 if (res.code == 200) {
                     isSaving.value = false;
-                    ElMessage.success("操作成功");
-                    API.system.configure.reload();
-                    XEUtils.set(item, "isUpdate", false);
+                    API.system.configure.reload().then(response => {
+                        if (response.code == 200) {
+                            ElMessage.success("操作成功");
+                            XEUtils.set(item, "isUpdate", false);
+                            if (keyName == "sys.mode" && item.v != XEUtils.get(TOOL.data.get("CONFIGURES"), keyName).v) router.go(0);
+                        }
+                    });
                 } else throw res.message;
             }).catch(() => isSaving.value = false);
         } else {
@@ -84,14 +81,20 @@ const submit = (item, keyName) => {
         }
     });
 }
-
-getConfig();
 </script>
 
 <style lang="scss" scoped>
 .el-card :deep(.el-card__body) {padding-top: calc(var(--el-card-padding) + 18px);}
 
 .el-button {margin-left: 12px;}
-.el-input, .el-input-number {flex: 1;width: unset;}
+
+.el-select, .el-input, .el-input-number {flex: 1;width: unset;}
 .el-input-number :deep(.el-input__inner) {text-align: unset;}
+
+.el-select :deep(.el-select__wrapper.is-disabled) {
+    background-color: var(--el-fill-color-blank);cursor: pointer;
+    &:hover {box-shadow: 0 0 0 1px var(--el-border-color-hover) inset;}
+
+    .el-select__selected-item {color: var(--el-input-text-color,var(--el-text-color-regular));}
+}
 </style>

+ 1 - 1
src/views/system/main.js

@@ -23,7 +23,7 @@ export const defaultConfig = {
     "sys.servaddr": {
         "v": "119.167.167.11:11089"
     },
-    "sys.sn": {
+    "sys.sn": {// 设备编号
         "v": "azATEhvyh-dHPpLCAzr"
     },
     "sys.stagingPath": {