From 2cb264ec2b7c7dd9798d1821927104fad35bd063 Mon Sep 17 00:00:00 2001
From: ZZJ <10913410+zzj2100@user.noreply.gitee.com>
Date: 星期二, 28 六月 2022 14:47:43 +0800
Subject: [PATCH] 系统设置自适应

---
 src/pages/settings/views/clusterManagement.vue            |  498 +++++---
 src/pages/datapush/index/RightEvent.vue                   |   13 
 src/pages/login/index/App.vue                             |    4 
 src/pages/search/index/Searching.vue                      |   14 
 src/components/canvas/index.vue                           |  513 +++++---
 src/pages/settings/components/AuthorizationSetting.vue    |    2 
 src/pages/settings/views/NetSettings.vue                  |   17 
 public/apps/loginData/login.json                          |    6 
 src/pages/cameraAccess/components/SceneRule.vue           |  368 ++++--
 src/pages/settings/components/UnbindBox.vue               |    3 
 src/pages/settings/index/index.vue                        |  993 ++++++++++-------
 src/pages/settings/asset/common.scss                      |    4 
 src/pages/settings/components/LoraGateway.vue             |   60 
 src/pages/settings/components/WifiGateway.vue             |    2 
 src/pages/settings/components/AuthorizationManagement.vue |    2 
 src/pages/cameraAccess/index/VideoManage.vue              |    1 
 src/pages/settings/views/generalSettings.vue              |    4 
 src/pages/analysisPower/index/App.vue                     |  361 ++++--
 src/pages/search/index/App.vue                            |    4 
 src/pages/cameraAccess/components/SeparateRules.vue       |  373 +++--
 20 files changed, 1,948 insertions(+), 1,294 deletions(-)

diff --git a/public/apps/loginData/login.json b/public/apps/loginData/login.json
index deddd30..da292da 100644
--- a/public/apps/loginData/login.json
+++ b/public/apps/loginData/login.json
@@ -1,5 +1,5 @@
 {
-    "title_firstLine" : "Smart AI",
-    "title_secondLine":"浜哄伐鏅鸿兘鎿嶄綔绯荤粺",
-    "website":"www.smartai.com"
+    "title_firstLine": "Smart AI",
+    "title_secondLine": "浜哄伐鏅鸿兘鎿嶄綔绯荤粺",
+    "website": "www.smartai.com"
 }
\ No newline at end of file
diff --git a/src/components/canvas/index.vue b/src/components/canvas/index.vue
index aec91a9..a34a12d 100644
--- a/src/components/canvas/index.vue
+++ b/src/components/canvas/index.vue
@@ -1,21 +1,33 @@
 <template>
-  <div class="s-cavas" :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px' }">
+  <div
+    class="s-cavas"
+    :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px' }"
+  >
     <canvas
       ref="myCanvas"
       :width="canvasWidth"
       :height="canvasHeight"
-      :style="
-        `background:url(${canvasBg}) center / ${canvasWidth}px ${canvasHeight}px no-repeat; background-size: contain;`
-      "
+      :style="`background:url(${canvasBg}) center / ${canvasWidth}px ${canvasHeight}px no-repeat; background-size: contain;`"
     ></canvas>
 
-    <el-tooltip content="鍒锋柊搴曞浘" placement="bottom" popper-class="atooltip" v-if="isShowRefresh">
+    <el-tooltip
+      content="鍒锋柊搴曞浘"
+      placement="bottom"
+      popper-class="atooltip"
+      v-if="isShowRefresh"
+    >
       <span class="iconfont icongengxin" @click="refresh"></span>
     </el-tooltip>
     <p class="tip" :style="disabled ? `display:block;` : `display:none;`">
       鎵归噺閰嶇疆鏂瑰紡涓嶅厑璁哥粯鍒跺尯鍩燂紝璇烽�夋嫨鎽勫儚鏈鸿繘琛屽尯鍩熺粯鍒�
     </p>
-    <el-dialog title :visible.sync="visible" width="1150px" append-to-body :before-close="cancelFunc">
+    <el-dialog
+      title
+      :visible.sync="visible"
+      width="1150px"
+      append-to-body
+      :before-close="cancelFunc"
+    >
       <canvas-dialog
         ref="bigCanvas"
         :canvasDataToChild="canvasData"
@@ -24,96 +36,98 @@
       ></canvas-dialog>
       <span slot="footer" class="dialog-footer">
         <el-button @click="cancelFunc" size="small">鍙� 娑�</el-button>
-        <el-button type="primary" @click="handleOk" size="small">纭� 瀹�</el-button>
+        <el-button type="primary" @click="handleOk" size="small"
+          >纭� 瀹�</el-button
+        >
       </span>
     </el-dialog>
   </div>
 </template>
 <script>
-import canvasDialog from "./Dialog"
-import { updateSnapshot } from "@/api/camera"
+import canvasDialog from "./Dialog";
+import { updateSnapshot } from "@/api/camera";
 export default {
   name: "myCanvas",
   components: {
-    canvasDialog
+    canvasDialog,
   },
   props: {
     divId: {
       default: "my-canvas",
-      type: String
+      type: String,
     },
     isGB28181: {
       default: false,
-      type: Boolean
+      type: Boolean,
     },
     isShowRefresh: {
       default: true,
-      type: Boolean
+      type: Boolean,
     },
     sourceType: {
       default: 1,
-      type: Number
+      type: Number,
     },
     isShowDrawArrow: {
       default: false,
-      type: Boolean
+      type: Boolean,
     },
     disabled: {
       default: false,
-      type: Boolean
+      type: Boolean,
     },
     canvasDataShow: {
       default: () => {
-        return { line: [], rect: [], arrow: [], polygon: [] }
+        return { line: [], rect: [], arrow: [], polygon: [] };
       },
-      type: Object
+      type: Object,
     },
     currentCameraId: {
       type: String,
-      default: ""
+      default: "",
     },
     snapshot_url: {
       type: String,
-      default: ""
+      default: "",
     },
     isLink: {
       type: Boolean,
-      default: false
+      default: false,
     },
     loading: {
       type: Boolean,
-      default: false
+      default: false,
     },
     canvasWidth: {
       type: Number,
-      default: 576
+      default: 576,
     },
     canvasHeight: {
       type: Number,
-      default: 324
+      default: 324,
     },
     showProportion: {
       type: Number,
-      default: 1.666
-    }
+      default: 1.666,
+    },
   },
   computed: {
     canvasBg() {
       if (this.snapshot_url) {
         // 鏁版嵁鏍堣嚜鍔ㄤ笂浼犲鐞�
         if (this.snapshot_url.indexOf("/opt/vasystem") == 0) {
-          return this.snapshot_url.replace("/opt/vasystem", "")
+          return this.snapshot_url.replace("/opt/vasystem", "");
         }
 
         if (this.sourceType == 2) {
-          return `${this.snapshot_url}`
+          return `${this.snapshot_url}`;
         } else {
-          return `/httpImage/${this.snapshot_url}`
+          return `/httpImage/${this.snapshot_url}`;
         }
       } else {
-        return this.blackImg
+        return this.blackImg;
       }
-    }
+    },
   },
   data() {
     return {
@@ -122,7 +136,7 @@
         line: [],
         rect: [],
         arrow: [],
-        polygon: []
+        polygon: [],
       }, // 鏈�缁堣緭鍑虹殑鐢诲竷鍧愭爣鏁版嵁
       canvasPic: new Image(), // 鎾ら攢鐢ㄧ殑鍥剧墖
       canvasHistory: [], // 鍘嗗彶鏁版嵁锛屼互渚涙挙閿�浣跨敤
@@ -130,169 +144,234 @@
       c: null,
       ctx: null,
       visible: false,
-      baseImg: undefined
+      baseImg: undefined,
       //showProportion: 1.666
-    }
+    };
   },
   watch: {
     loading: {
       handler(newVal, oldVal) {
         // console.log(newVal,'loading')
         if (newVal) {
-          this.baseImg = ""
-          this.refresh()
+          this.baseImg = "";
+          this.refresh();
         }
       },
-      deep: true
+      deep: true,
     },
     canvasDataShow: {
       handler(newVal, oldVal) {
         // console.log(newVal, "canvasDataShow newVal");
-        this.canvasData.line = newVal.line
-        this.canvasData.rect = newVal.rect
-        this.canvasData.arrow = newVal.arrow
-        this.canvasData.polygon = newVal.polygon
-        this.clickSelect(this.canvasData)
+        this.canvasData.line = newVal.line;
+        this.canvasData.rect = newVal.rect;
+        this.canvasData.arrow = newVal.arrow;
+        this.canvasData.polygon = newVal.polygon;
+        this.clickSelect(this.canvasData);
       },
-      deep: true
-    }
+      deep: true,
+    },
   },
   mounted() {
     this.$nextTick(() => {
       // this.c = document.querySelector("#" + this.divId);
-      this.c = this.$refs.myCanvas
-      this.ctx = this.c.getContext("2d")
-      this.canvasData = JSON.parse(JSON.stringify(this.canvasDataShow))
-      this.clickSelect(this.canvasData)
-    })
+      this.c = this.$refs.myCanvas;
+      this.ctx = this.c.getContext("2d");
+      this.canvasData = JSON.parse(JSON.stringify(this.canvasDataShow));
+      this.clickSelect(this.canvasData);
+    });
   },
   methods: {
     // 鑾峰彇canvas搴曞浘
     async getCanvasPic() {
+      if (TreeDataPool.selectedNode.type == "MENU") {
+        return;
+      }
       // this.$emit('changeBaseImg',this.currentCameraId)
-      this.$emit("changeLoading", true)
+      this.$emit("changeLoading", true);
       if (this.currentCameraId) {
-        let _this = this
+        let _this = this;
         await updateSnapshot(this.currentCameraId, this.isGB28181)
           .then((res) => {
             if (res.data.cameraId === _this.currentCameraId) {
-              this.baseImg = res.data.snapshotUrl
-              this.$emit("refresh", res.data.snapshotUrl, _this.currentCameraId)
-              this.$forceUpdate()
+              this.baseImg = res.data.snapshotUrl;
+              this.$emit(
+                "refresh",
+                res.data.snapshotUrl,
+                _this.currentCameraId
+              );
+              this.$forceUpdate();
               this.$notify({
                 type: "success",
-                message: "搴曞浘宸插埛鏂�"
-              })
+                message: "搴曞浘宸插埛鏂�",
+              });
             }
           })
           .catch((err) => {
             this.$notify({
               type: "error",
-              message: "搴曞浘鍒锋柊澶辫触"
-            })
-          })
-        this.$emit("changeLoading", false)
+              message: "搴曞浘鍒锋柊澶辫触",
+            });
+          });
+        this.$emit("changeLoading", false);
       }
     },
     showModal() {
       // console.log(this.canvasData, "鐐瑰嚮缁樺埗鐨勬椂鍊欎紶閫掕繃鍘荤殑鏁版嵁");
-      this.visible = true
+      this.visible = true;
       this.$nextTick(() => {
         // this.$refs.bigCanvas.delCursor = {}
-      })
+      });
     },
     cancelFunc() {
-      this.visible = false
-      this.$refs.bigCanvas.cancel()
+      this.visible = false;
+      this.$refs.bigCanvas.cancel();
       // console.log("鍏抽棴浜�");
     },
     handleOk() {
       // 鍒ゆ柇鍥惧舰鐨勫悕瀛楁槸鍚﹂噸澶�
       // console.log("ok");
-      this.$refs.bigCanvas.changeType("0")
-      let repeatName = this.isRepeat()
+      this.$refs.bigCanvas.changeType("0");
+      let repeatName = this.isRepeat();
       if (repeatName !== "") {
         this.$notify({
           type: "error",
-          message: repeatName + "鍥惧舰鍚嶇О閲嶅锛岃鏇存锛�"
-        })
-        return
+          message: repeatName + "鍥惧舰鍚嶇О閲嶅锛岃鏇存锛�",
+        });
+        return;
       }
       this.$notify({
         type: "success",
-        message: "宸蹭繚瀛樼粯鍒讹紒"
-      })
+        message: "宸蹭繚瀛樼粯鍒讹紒",
+      });
       // 姣忔淇濆瓨鍏抽棴妯℃�佺獥鏃堕兘瑕佹妸妯℃�佺獥鐨勬暟鎹啓鍒扮埗缁勪欢閲屾潵
-      this.canvasData = this.$refs.bigCanvas.canvasData
+      this.canvasData = this.$refs.bigCanvas.canvasData;
       // 椤轰究鐢╁埌鏇村灞傚幓
-      this.$emit("fromCanvas", this.$refs.bigCanvas.canvasData)
+      this.$emit("fromCanvas", this.$refs.bigCanvas.canvasData);
       // console.log("浣犲ソ", this.canvasData);
 
-      this.clickSelect(this.canvasData)
-      this.visible = false
+      this.clickSelect(this.canvasData);
+      this.visible = false;
     },
     // 鍥炴樉cavas鏁版嵁
     // 鐐瑰嚮閫変腑鍙樿壊 灏嗗綋鍓嶉〉闈㈡墍鏈夎矾寰勯噸缁樺垽鏂綋鍓嶉紶鏍囩殑鍧愭爣鍦ㄥ摢涓浘褰㈠唴 濡傛灉涓嶄紶鍧愭爣鍙傛暟灏辨槸鍥炴樉鐨勬柟娉�
     clickSelect(e) {
-      this.ctx.clearRect(0, 0, this.c.width, this.c.height)
-      let _this = this // 闆嗗悎涓亶鍘嗛渶瑕佸皢this杞瓨涓�涓嬩娇鐢�
-      _this.canvasData.line.forEach(function(v, i) {
-        _this.ctx.strokeStyle = "yellow"
-        _this.ctx.beginPath()
-        _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-        _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion)
-        _this.ctx.stroke()
-        _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-        _this.c.style.cursor = "default"
+      this.ctx.clearRect(0, 0, this.c.width, this.c.height);
+      let _this = this; // 闆嗗悎涓亶鍘嗛渶瑕佸皢this杞瓨涓�涓嬩娇鐢�
+      _this.canvasData.line.forEach(function (v, i) {
+        _this.ctx.strokeStyle = "yellow";
+        _this.ctx.beginPath();
+        _this.ctx.moveTo(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion
+        );
+        _this.ctx.lineTo(
+          v.location[1].x / _this.showProportion,
+          v.location[1].y / _this.showProportion
+        );
+        _this.ctx.stroke();
+        _this.showRemarks(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion,
+          v.name
+        );
+        _this.c.style.cursor = "default";
         if (e && _this.ctx.isPointInStroke(e.offsetX, e.offsetY)) {
           // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓�
           // 濡傛灉褰撳墠鐜瑕嗙洊浜嗚鍧愭爣锛屽氨灏嗗浘褰㈢殑index鏀惧埌鏁扮粍閲�
           // 褰撻紶鏍囩Щ鍏ヤ箣鍚庡皢褰撳墠鐨勬ā寮忓垏鎹负閫変腑妯″紡
-          _this.type = "0"
-          _this.delCursor.type = "1"
-          _this.delCursor.index = i
+          _this.type = "0";
+          _this.delCursor.type = "1";
+          _this.delCursor.index = i;
           // 灏嗗綋鍓嶅厓绱犳爣绾�
-          _this.ctx.strokeStyle = "red"
-          _this.ctx.beginPath()
-          _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-          _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion)
-          _this.ctx.stroke()
-          _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-          _this.c.style.cursor = "pointer"
+          _this.ctx.strokeStyle = "red";
+          _this.ctx.beginPath();
+          _this.ctx.moveTo(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion
+          );
+          _this.ctx.lineTo(
+            v.location[1].x / _this.showProportion,
+            v.location[1].y / _this.showProportion
+          );
+          _this.ctx.stroke();
+          _this.showRemarks(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion,
+            v.name
+          );
+          _this.c.style.cursor = "pointer";
         }
-      })
-      _this.canvasData.rect.forEach(function(v, i) {
-        _this.ctx.strokeStyle = "yellow"
-        _this.ctx.beginPath()
-        _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-        _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion)
-        _this.ctx.lineTo(v.location[2].x / _this.showProportion, v.location[2].y / _this.showProportion)
-        _this.ctx.lineTo(v.location[3].x / _this.showProportion, v.location[3].y / _this.showProportion)
-        _this.ctx.lineTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-        _this.ctx.stroke()
-        _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-        _this.c.style.cursor = "default"
+      });
+      _this.canvasData.rect.forEach(function (v, i) {
+        _this.ctx.strokeStyle = "yellow";
+        _this.ctx.beginPath();
+        _this.ctx.moveTo(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion
+        );
+        _this.ctx.lineTo(
+          v.location[1].x / _this.showProportion,
+          v.location[1].y / _this.showProportion
+        );
+        _this.ctx.lineTo(
+          v.location[2].x / _this.showProportion,
+          v.location[2].y / _this.showProportion
+        );
+        _this.ctx.lineTo(
+          v.location[3].x / _this.showProportion,
+          v.location[3].y / _this.showProportion
+        );
+        _this.ctx.lineTo(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion
+        );
+        _this.ctx.stroke();
+        _this.showRemarks(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion,
+          v.name
+        );
+        _this.c.style.cursor = "default";
         if (e && _this.ctx.isPointInPath(e.offsetX, e.offsetY)) {
           // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓�
           // 褰撻紶鏍囩Щ鍏ヤ箣鍚庡皢褰撳墠鐨勬ā寮忓垏鎹负閫変腑妯″紡
-          _this.type = "0"
-          _this.delCursor.type = "2"
-          _this.delCursor.index = i
+          _this.type = "0";
+          _this.delCursor.type = "2";
+          _this.delCursor.index = i;
           // 灏嗗綋鍓嶅厓绱犳爣绾�
-          _this.ctx.strokeStyle = "red"
-          _this.ctx.beginPath()
-          _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-          _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion)
-          _this.ctx.lineTo(v.location[2].x / _this.showProportion, v.location[2].y / _this.showProportion)
-          _this.ctx.lineTo(v.location[3].x / _this.showProportion, v.location[3].y / _this.showProportion)
-          _this.ctx.lineTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
-          _this.ctx.stroke()
-          _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-          _this.c.style.cursor = "pointer"
+          _this.ctx.strokeStyle = "red";
+          _this.ctx.beginPath();
+          _this.ctx.moveTo(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion
+          );
+          _this.ctx.lineTo(
+            v.location[1].x / _this.showProportion,
+            v.location[1].y / _this.showProportion
+          );
+          _this.ctx.lineTo(
+            v.location[2].x / _this.showProportion,
+            v.location[2].y / _this.showProportion
+          );
+          _this.ctx.lineTo(
+            v.location[3].x / _this.showProportion,
+            v.location[3].y / _this.showProportion
+          );
+          _this.ctx.lineTo(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion
+          );
+          _this.ctx.stroke();
+          _this.showRemarks(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion,
+            v.name
+          );
+          _this.c.style.cursor = "pointer";
         }
-      })
-      _this.canvasData.arrow.forEach(function(v, i) {
-        _this.ctx.strokeStyle = "yellow"
+      });
+      _this.canvasData.arrow.forEach(function (v, i) {
+        _this.ctx.strokeStyle = "yellow";
         // _this.ctx.beginPath()
         // _this.ctx.moveTo(v.location[0].x / 2, v.location[0].y / 2)
         // _this.ctx.lineTo(v.location[1].x / 2, v.location[1].y / 2)
@@ -306,18 +385,22 @@
           20,
           30,
           "yellow"
-        ) // 缁樺埗鏂规硶
-        _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-        _this.c.style.cursor = "default"
+        ); // 缁樺埗鏂规硶
+        _this.showRemarks(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion,
+          v.name
+        );
+        _this.c.style.cursor = "default";
         if (e && _this.ctx.isPointInStroke(e.offsetX, e.offsetY)) {
           // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓�
           // 濡傛灉褰撳墠鐜瑕嗙洊浜嗚鍧愭爣锛屽氨灏嗗浘褰㈢殑index鏀惧埌鏁扮粍閲�
           // 褰撻紶鏍囩Щ鍏ヤ箣鍚庡皢褰撳墠鐨勬ā寮忓垏鎹负閫変腑妯″紡
-          _this.type = "0"
-          _this.delCursor.type = "4"
-          _this.delCursor.index = i
+          _this.type = "0";
+          _this.delCursor.type = "4";
+          _this.delCursor.index = i;
           // 灏嗗綋鍓嶅厓绱犳爣绾�
-          _this.ctx.strokeStyle = "red"
+          _this.ctx.strokeStyle = "red";
           //   _this.ctx.beginPath()
           //   _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
           //   _this.ctx.lineTo(v.location[1].x / _this.showProportion, v.location[1].y / _this.showProportion)
@@ -331,62 +414,78 @@
             20,
             30,
             "red"
-          ) // 缁樺埗鏂规硶
-          _this.showRemarks(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion, v.name)
-          _this.c.style.cursor = "pointer"
+          ); // 缁樺埗鏂规硶
+          _this.showRemarks(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion,
+            v.name
+          );
+          _this.c.style.cursor = "pointer";
         }
-      })
-      _this.canvasData.polygon.forEach(function(v, i) {
+      });
+      _this.canvasData.polygon.forEach(function (v, i) {
         if (v.location.length === 0) {
-          return
+          return;
         }
-        _this.ctx.strokeStyle = "yellow"
-        _this.ctx.beginPath()
-        _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
+        _this.ctx.strokeStyle = "yellow";
+        _this.ctx.beginPath();
+        _this.ctx.moveTo(
+          v.location[0].x / _this.showProportion,
+          v.location[0].y / _this.showProportion
+        );
         for (let i = 1; i < v.location.length; i++) {
-          _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportion)
+          _this.ctx.lineTo(
+            v.location[i].x / _this.showProportion,
+            v.location[i].y / _this.showProportion
+          );
         }
-        _this.ctx.closePath()
-        _this.ctx.stroke()
+        _this.ctx.closePath();
+        _this.ctx.stroke();
         _this.showRemarks(
           v.location[v.location.length - 1].x / _this.showProportion,
           v.location[v.location.length - 1].y / _this.showProportion,
           v.name
-        )
-        _this.c.style.cursor = "default"
+        );
+        _this.c.style.cursor = "default";
         if (e && _this.ctx.isPointInPath(e.offsetX, e.offsetY)) {
           // 濡傛灉浼犲叆浜嗕簨浠跺潗鏍囷紝灏辩敤isPointInStroke鍒ゆ柇涓�涓�
           // 濡傛灉褰撳墠鐜瑕嗙洊浜嗚鍧愭爣锛屽氨灏嗗浘褰㈢殑index鏀惧埌鏁扮粍閲�
           // 褰撻紶鏍囩Щ鍏ヤ箣鍚庡皢褰撳墠鐨勬ā寮忓垏鎹负閫変腑妯″紡
-          _this.type = "0"
-          _this.delCursor.type = "5"
-          _this.delCursor.index = i
+          _this.type = "0";
+          _this.delCursor.type = "5";
+          _this.delCursor.index = i;
           // 灏嗗綋鍓嶅厓绱犳爣绾�
-          _this.ctx.strokeStyle = "red"
-          _this.ctx.beginPath()
-          _this.ctx.moveTo(v.location[0].x / _this.showProportion, v.location[0].y / _this.showProportion)
+          _this.ctx.strokeStyle = "red";
+          _this.ctx.beginPath();
+          _this.ctx.moveTo(
+            v.location[0].x / _this.showProportion,
+            v.location[0].y / _this.showProportion
+          );
           for (let i = 1; i < v.location.length; i++) {
-            _this.ctx.lineTo(v.location[i].x / _this.showProportion, v.location[i].y / _this.showProportion)
+            _this.ctx.lineTo(
+              v.location[i].x / _this.showProportion,
+              v.location[i].y / _this.showProportion
+            );
           }
-          _this.ctx.closePath()
-          _this.ctx.stroke()
+          _this.ctx.closePath();
+          _this.ctx.stroke();
           _this.showRemarks(
             v.location[v.location.length - 1].x / _this.showProportion,
             v.location[v.location.length - 1].y / _this.showProportion,
             v.name
-          )
-          _this.c.style.cursor = "pointer"
+          );
+          _this.c.style.cursor = "pointer";
         }
-      })
+      });
     },
     // 鍥炴樉鍥惧舰澶囨敞
     showRemarks(x, y, remarks) {
-      this.ctx.moveTo(x, y - 10) // 鍥犱负鏀惧ぇ涔嬪悗鏄痽-20锛屾墍浠ョ缉灏忕増鐨勪负y-10
-      this.ctx.fillStyle = "green" // 璁剧疆濉厖棰滆壊涓虹豢鑹�
-      this.ctx.font = '10px "寰蒋闆呴粦"' // 璁剧疆瀛椾綋
-      this.ctx.textBaseline = "bottom" // 璁剧疆瀛椾綋搴曠嚎瀵归綈缁樺埗鍩虹嚎
-      this.ctx.textAlign = "left" // 璁剧疆瀛椾綋瀵归綈鐨勬柟寮�
-      this.ctx.fillText(remarks, x, y - 10) // 濉厖鏂囧瓧
+      this.ctx.moveTo(x, y - 10); // 鍥犱负鏀惧ぇ涔嬪悗鏄痽-20锛屾墍浠ョ缉灏忕増鐨勪负y-10
+      this.ctx.fillStyle = "green"; // 璁剧疆濉厖棰滆壊涓虹豢鑹�
+      this.ctx.font = '10px "寰蒋闆呴粦"'; // 璁剧疆瀛椾綋
+      this.ctx.textBaseline = "bottom"; // 璁剧疆瀛椾綋搴曠嚎瀵归綈缁樺埗鍩虹嚎
+      this.ctx.textAlign = "left"; // 璁剧疆瀛椾綋瀵归綈鐨勬柟寮�
+      this.ctx.fillText(remarks, x, y - 10); // 濉厖鏂囧瓧
     },
     // 绠ご缁樺埗鍑芥暟
     drawArrow(ctx, fromX, fromY, toX, toY, theta, headlen, width, color) {
@@ -397,86 +496,86 @@
       // headlen锛氫笁瑙掓枩杈归暱搴�
       // width锛氱澶寸嚎瀹藉害
       // color锛氱澶撮鑹�
-      theta = typeof theta !== "undefined" ? theta : 30
-      headlen = typeof theta !== "undefined" ? headlen : 10
-      width = typeof width !== "undefined" ? width : 1
-      color = typeof color !== "undefined" ? color : "yellow"
+      theta = typeof theta !== "undefined" ? theta : 30;
+      headlen = typeof theta !== "undefined" ? headlen : 10;
+      width = typeof width !== "undefined" ? width : 1;
+      color = typeof color !== "undefined" ? color : "yellow";
       // 璁$畻鍚勮搴﹀拰瀵瑰簲鐨凱2,P3鍧愭爣
-      let angle = (Math.atan2(fromY - toY, fromX - toX) * 180) / Math.PI
-      let angle1 = ((angle + theta) * Math.PI) / 180
-      let angle2 = ((angle - theta) * Math.PI) / 180
-      let topX = headlen * Math.cos(angle1)
-      let topY = headlen * Math.sin(angle1)
-      let botX = headlen * Math.cos(angle2)
-      let botY = headlen * Math.sin(angle2)
+      let angle = (Math.atan2(fromY - toY, fromX - toX) * 180) / Math.PI;
+      let angle1 = ((angle + theta) * Math.PI) / 180;
+      let angle2 = ((angle - theta) * Math.PI) / 180;
+      let topX = headlen * Math.cos(angle1);
+      let topY = headlen * Math.sin(angle1);
+      let botX = headlen * Math.cos(angle2);
+      let botY = headlen * Math.sin(angle2);
 
-      ctx.save()
-      ctx.beginPath()
-      let arrowX = fromX - topX
-      let arrowY = fromY - topY
-      ctx.moveTo(arrowX, arrowY)
-      ctx.moveTo(fromX, fromY)
-      ctx.lineTo(toX, toY)
-      arrowX = toX + topX
-      arrowY = toY + topY
-      ctx.moveTo(arrowX, arrowY)
-      ctx.lineTo(toX, toY)
-      arrowX = toX + botX
-      arrowY = toY + botY
-      ctx.lineTo(arrowX, arrowY)
-      ctx.strokeStyle = color
-      ctx.lineWidth = width
-      ctx.stroke()
-      ctx.restore()
+      ctx.save();
+      ctx.beginPath();
+      let arrowX = fromX - topX;
+      let arrowY = fromY - topY;
+      ctx.moveTo(arrowX, arrowY);
+      ctx.moveTo(fromX, fromY);
+      ctx.lineTo(toX, toY);
+      arrowX = toX + topX;
+      arrowY = toY + topY;
+      ctx.moveTo(arrowX, arrowY);
+      ctx.lineTo(toX, toY);
+      arrowX = toX + botX;
+      arrowY = toY + botY;
+      ctx.lineTo(arrowX, arrowY);
+      ctx.strokeStyle = color;
+      ctx.lineWidth = width;
+      ctx.stroke();
+      ctx.restore();
     },
     async refresh() {
       // console.log(this.loading,'鍒锋柊搴曞浘',this.snapshot_url)
       if (!this.currentCameraId) {
-        return false
+        return false;
       }
       // await this.$emit('changeLoading', true)
-      this.getCanvasPic()
+      this.getCanvasPic();
     },
     // 鍒ゆ柇鍥惧舰鍚嶇О鏄惁閲嶅
     isRepeat() {
-      let _this = this // 闆嗗悎涓亶鍘嗛渶瑕佸皢this杞瓨涓�涓嬩娇鐢�
-      let nameArray = []
+      let _this = this; // 闆嗗悎涓亶鍘嗛渶瑕佸皢this杞瓨涓�涓嬩娇鐢�
+      let nameArray = [];
       for (const v of _this.$refs.bigCanvas.canvasData.line) {
         for (const item of nameArray) {
           if (v.name === item) {
-            return v.name
+            return v.name;
           }
         }
-        nameArray.push(v.name)
+        nameArray.push(v.name);
       }
       for (const v of _this.$refs.bigCanvas.canvasData.arrow) {
         for (const item of nameArray) {
           if (v.name === item) {
-            return v.name
+            return v.name;
           }
         }
-        nameArray.push(v.name)
+        nameArray.push(v.name);
       }
       for (const v of _this.$refs.bigCanvas.canvasData.rect) {
         for (const item of nameArray) {
           if (v.name === item) {
-            return v.name
+            return v.name;
           }
         }
-        nameArray.push(v.name)
+        nameArray.push(v.name);
       }
       for (const v of _this.$refs.bigCanvas.canvasData.polygon) {
         for (const item of nameArray) {
           if (v.name === item) {
-            return v.name
+            return v.name;
           }
         }
-        nameArray.push(v.name)
+        nameArray.push(v.name);
       }
-      return ""
-    }
-  }
-}
+      return "";
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 canvas {
diff --git a/src/pages/analysisPower/index/App.vue b/src/pages/analysisPower/index/App.vue
index e5b7ce9..18819bb 100644
--- a/src/pages/analysisPower/index/App.vue
+++ b/src/pages/analysisPower/index/App.vue
@@ -16,13 +16,18 @@
       </div>
     </div>
 
-    <div class="bottom" :style="{'height':strethTable?'calc(100% - 30px)':'calc(100% - 220px)'}">
-      <div style="width: 100%;height: 10px;background-color: #E9EBF2;"></div>
+    <div
+      class="bottom"
+      :style="{
+        height: strethTable ? 'calc(100% - 30px)' : 'calc(100% - 220px)',
+      }"
+    >
+      <div style="width: 100%; height: 10px; background-color: #e9ebf2"></div>
       <div class="content">
         <div class="toolBar">
           <el-input
             size="small"
-            style="width: 180px;"
+            style="width: 180px"
             placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�"
             prefix-icon="el-icon-search"
             clearable
@@ -31,50 +36,72 @@
           <el-button
             size="small"
             type="primary"
-            style="margin-left: 20px; margin-right: 50px;"
+            style="margin-left: 20px; margin-right: 50px"
             @click="pollSeach"
-          >鎼滅储</el-button>
+            >鎼滅储</el-button
+          >
           <div class="tip">
             <span>
               杞鏃堕棿 :
-              <b>{{PollData.Config.poll_period}}</b>鍒嗛挓
+              <b>{{ PollData.Config.poll_period }}</b
+              >鍒嗛挓
             </span>
             <span>
               杞鍛ㄦ湡 :
-              <b>{{pollCycle}}</b>鍒嗛挓
+              <b>{{ pollCycle }}</b
+              >鍒嗛挓
             </span>
             <span>
               杞寮�鍏� :
-              <b>{{PollData.Enabled | switchText}}</b>
+              <b>{{ PollData.Enabled | switchText }}</b>
             </span>
           </div>
-          <span :class="stretchStyle" @click="strethTable = !strethTable"></span>
+          <span
+            :class="stretchStyle"
+            @click="strethTable = !strethTable"
+          ></span>
 
           <el-button
             size="small"
             type="primary"
-            style="float:right"
+            style="float: right"
             @click="openDrawer"
             v-if="showSetting"
-          >璁剧疆</el-button>
+            >璁剧疆</el-button
+          >
         </div>
 
         <el-table
-          :header-cell-style="{background:'#F8F8F8', color: '#222222'}"
+          :header-cell-style="{ background: '#F8F8F8', color: '#222222' }"
           height="93%"
           :data="PollData.CameraList"
           border
           :cell-style="cellStyle"
         >
-          <el-table-column label="搴忓彿" type="index" align="center" width="60px"></el-table-column>
-          <el-table-column label="鎽勫儚鏈哄悕绉�" align="center" show-overflow-tooltip>
+          <el-table-column
+            label="搴忓彿"
+            type="index"
+            align="center"
+            width="60px"
+          ></el-table-column>
+          <el-table-column
+            label="鎽勫儚鏈哄悕绉�"
+            align="center"
+            show-overflow-tooltip
+          >
             <template slot-scope="scope">
-              <span
-                :style="scope.row.is_running ? `color:#3d68e1` : '' "
-              >{{scope.row.alias !== '' ? scope.row.alias: scope.row.name}}</span>
+              <span :style="scope.row.is_running ? `color:#3d68e1` : ''">{{
+                scope.row.alias !== "" ? scope.row.alias : scope.row.name
+              }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="鎽勫儚鏈哄湴鍧�" prop="addr" align="center" show-overflow-tooltip sortable></el-table-column>
+          <el-table-column
+            label="鎽勫儚鏈哄湴鍧�"
+            prop="addr"
+            align="center"
+            show-overflow-tooltip
+            sortable
+          ></el-table-column>
           <el-table-column
             label="鎽勫儚鏈篒P"
             prop="ip"
@@ -85,39 +112,59 @@
           ></el-table-column>
           <el-table-column label="鎽勫儚鏈虹被鍨�" align="center" width="120px">
             <template slot-scope="scope">
-              <span>{{scope.row.run_type | cameraType}}</span>
+              <span>{{ scope.row.run_type | cameraType }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="鎵ц绠楁硶" align="center" show-overflow-tooltip>
+          <el-table-column
+            label="鎵ц绠楁硶"
+            align="center"
+            show-overflow-tooltip
+          >
             <template slot-scope="scope">
-              <span v-if="scope.row.run_type === -1 ">-</span>
-              <span v-else-if="scope.row.tasks != null ">{{scope.row.tasks | taskList}}</span>
+              <span v-if="scope.row.run_type === -1">-</span>
+              <span v-else-if="scope.row.tasks != null">{{
+                scope.row.tasks | taskList
+              }}</span>
               <span v-else>-</span>
             </template>
           </el-table-column>
-          <el-table-column label="杩愯璁惧" align="center" width="160px" sortable>
+          <el-table-column
+            label="杩愯璁惧"
+            align="center"
+            width="160px"
+            sortable
+          >
             <template slot-scope="scope">
-              <span v-if="scope.row.run_type === -1 ">-</span>
-              <span v-else>{{scope.row.runServerName}}</span>
+              <span v-if="scope.row.run_type === -1">-</span>
+              <span v-else>{{ scope.row.runServerName }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="鐘舵��" align="center" show-overflow-tooltip width="100px">
+          <el-table-column
+            label="鐘舵��"
+            align="center"
+            show-overflow-tooltip
+            width="100px"
+          >
             <template slot-scope="scope">
-              <span v-if="scope.row.status === -1 ">-</span>
-              <span v-else-if="scope.row.status === 2">{{"澶勭悊涓�"}}</span>
-              <span v-else-if="scope.row.status === 1">{{"绛夊緟澶勭悊"}}</span>
-              <span v-else-if="scope.row.status === 0">{{"瑙勫垯涓嶅叏"}}</span>
+              <span v-if="scope.row.status === -1">-</span>
+              <span v-else-if="scope.row.status === 2">{{ "澶勭悊涓�" }}</span>
+              <span v-else-if="scope.row.status === 1">{{ "绛夊緟澶勭悊" }}</span>
+              <span v-else-if="scope.row.status === 0">{{ "瑙勫垯涓嶅叏" }}</span>
             </template>
           </el-table-column>
           <el-table-column label="瀹炴椂/杞" align="center" width="100px">
             <template slot-scope="scope">
-              <span v-if="scope.row.run_type === -1 ">-</span>
+              <span v-if="scope.row.run_type === -1">-</span>
               <toggle-button
                 v-else
                 :value="scope.row.run_type === 1"
                 :width="60"
-                :labels="{checked: '瀹炴椂', unchecked: '杞'}"
-                :color="{checked: '#4D88FF', unchecked: '#FF7733', disabled: '#CCCCCC'}"
+                :labels="{ checked: '瀹炴椂', unchecked: '杞' }"
+                :color="{
+                  checked: '#4D88FF',
+                  unchecked: '#FF7733',
+                  disabled: '#CCCCCC',
+                }"
                 :sync="true"
                 @change="pollSwitch(scope.row)"
               />
@@ -137,29 +184,34 @@
       :before-close="closeDrawer"
     >
       <div class="dawer_details">
-        <span>鎬荤畻鍔� {{formData.totalChanle}} 閫氶亾</span>
-        <span style="margin-left:20px">瀹炴椂绠楀姏 {{formData.realTime}} 閫氶亾</span>
+        <span>鎬荤畻鍔� {{ formData.totalChanle }} 閫氶亾</span>
+        <span style="margin-left: 20px"
+          >瀹炴椂绠楀姏 {{ formData.realTime }} 閫氶亾</span
+        >
       </div>
       <div class="e-drawer_rate">
         <div class="rate">
           <label>杞鏃堕棿</label>
           <el-input-number
             size="small"
-            style="width: 60px;margin-left:25px"
+            style="width: 60px; margin-left: 25px"
             v-model.number="formData.pollPeriod"
             :controls="false"
-            :min="0"
+            :min="1"
             :max="60 * 24 * 1"
           ></el-input-number>
           <span>鍒嗛挓</span>
 
           <label>杞寮�鍏�</label>
-          <el-switch style="margin-left: 10px;" v-model="formData.pollEnable"></el-switch>
+          <el-switch
+            style="margin-left: 10px"
+            v-model="formData.pollEnable"
+          ></el-switch>
         </div>
         <div class="rate">
           <label>杞绠楀姏</label>
           <el-input-number
-            style="margin-left:25px;width:90px"
+            style="margin-left: 25px; width: 90px"
             size="small"
             v-model="formData.polling"
             @change="changePoll"
@@ -171,7 +223,7 @@
         <div class="rate">
           <label>鏁版嵁鏍堢畻鍔�</label>
           <el-input-number
-            style="margin-left:11px;width:90px"
+            style="margin-left: 11px; width: 90px"
             size="small"
             v-model="formData.dataStack"
             @change="changeStack"
@@ -184,10 +236,17 @@
         <el-button
           size="small"
           type="primary"
-          style="margin:10px 10px 0px 200px"
+          style="margin: 10px 10px 0px 200px"
           @click="saveSetting"
-        >淇濆瓨</el-button>
-        <el-button size="small" type="info" style="color:black" @click="closeDrawer">鍙栨秷</el-button>
+          >淇濆瓨</el-button
+        >
+        <el-button
+          size="small"
+          type="info"
+          style="color: black"
+          @click="closeDrawer"
+          >鍙栨秷</el-button
+        >
       </div>
     </el-drawer>
   </div>
@@ -195,9 +254,14 @@
 
 <script>
 import echarts from "echarts";
-import { changeRunType, updatePollEnable, updatePollPeriod, updateChannelCount } from "@/api/pollConfig";
+import {
+  changeRunType,
+  updatePollEnable,
+  updatePollPeriod,
+  updateChannelCount,
+} from "@/api/pollConfig";
 
-import Sysinfo from "@/components/subComponents/SystemInfo"
+import Sysinfo from "@/components/subComponents/SystemInfo";
 export default {
   name: "PollSeting",
   components: {
@@ -208,15 +272,18 @@
       return type === -1 ? "鐩戞帶鎽勫儚鏈�" : "AI鎽勫儚鏈�";
     },
     taskList(tasks) {
-      return tasks.filter(task => {
-        return task.hasRule;
-      }).map(task => {
-        return task.taskname
-      }).join(',')
+      return tasks
+        .filter((task) => {
+          return task.hasRule;
+        })
+        .map((task) => {
+          return task.taskname;
+        })
+        .join(",");
     },
     switchText(type) {
       return type ? "宸插紑鍚�" : "鏈紑鍚�";
-    }
+    },
   },
   computed: {
     maxPoll() {
@@ -227,26 +294,29 @@
     },
     stretchStyle() {
       let arry = ["iconfont", "stretch-btn"];
-      arry.push(this.strethTable ? "iconzhankai" : "iconshouqi")
+      arry.push(this.strethTable ? "iconzhankai" : "iconshouqi");
       return arry;
     },
     pollCycle() {
-      if (this.PollData.PollValidCount===0||!this.PollData.PollValidCount) {
-        return 0
+      if (this.PollData.PollValidCount === 0 || !this.PollData.PollValidCount) {
+        return 0;
       }
       let sumPollingCamera = 0;
-      this.PollData.CameraList.forEach(cam => {
+      this.PollData.CameraList.forEach((cam) => {
         if (cam.run_type === 0) {
-          sumPollingCamera++
+          sumPollingCamera++;
         }
-      })
+      });
       // 鎵�鏈夎疆璇㈢殑鎽勫儚鏈烘�绘暟 * 杞鏃堕棿 / 杞绠楀姏 - 1
-      let ret = (sumPollingCamera * this.PollData.Config.poll_period) / this.PollData.PollValidCount - 1
+      let ret =
+        (sumPollingCamera * this.PollData.Config.poll_period) /
+          this.PollData.PollValidCount -
+        1;
       if (String(ret).indexOf(".") > 0) {
-        ret = ret.toFixed(1)
+        ret = ret.toFixed(1);
       }
 
-      return ret < 0 ? 0 : ret
+      return ret < 0 ? 0 : ret;
     },
     isAdmin() {
       if (
@@ -260,8 +330,10 @@
       return false;
     },
     showSetting() {
-      return this.isAdmin || this.buttonAuthority.indexOf("analysisPower:set") > -1
-    }
+      return (
+        this.isAdmin || this.buttonAuthority.indexOf("analysisPower:set") > -1
+      );
+    },
   },
   data() {
     return {
@@ -288,10 +360,16 @@
   },
   methods: {
     ipSortMethod(a, b) {
-      if (Number(a.ip.substr(a.ip.lastIndexOf('.') + 1)) < Number(b.ip.substr(b.ip.lastIndexOf('.') + 1))) {
+      if (
+        Number(a.ip.substr(a.ip.lastIndexOf(".") + 1)) <
+        Number(b.ip.substr(b.ip.lastIndexOf(".") + 1))
+      ) {
         return -1;
       }
-      if (Number(a.ip.substr(a.ip.lastIndexOf('.') + 1)) > Number(b.ip.substr(b.ip.lastIndexOf('.') + 1))) {
+      if (
+        Number(a.ip.substr(a.ip.lastIndexOf(".") + 1)) >
+        Number(b.ip.substr(b.ip.lastIndexOf(".") + 1))
+      ) {
         return 1;
       }
       return 0;
@@ -313,34 +391,36 @@
         pollPeriod: this.PollData.Config.poll_period,
         polling: this.PollData.PollChannelTotal,
         dataStack: this.PollData.localVideo,
-      }
+      };
     },
     pollSeach() {
       this.PollData.fetchPollList();
     },
     pollEnable() {
-      updatePollEnable({ enable: this.PollData.Enabled }).then(rsp => {
+      updatePollEnable({ enable: this.PollData.Enabled }).then((rsp) => {
         this.$notify({
           type: "success",
-          message: "淇敼鎴愬姛"
+          message: "淇敼鎴愬姛",
         });
         // this.PollData.fetchPollConfig()
-      })
+      });
     },
     updateDelayTime() {
-      updatePollPeriod({ period: this.PollData.Config.poll_period }).then(rsp => {
-        if (rsp && rsp.success) {
-          this.$notify({
-            type: 'success',
-            message: '杞鏃堕棿淇敼鎴愬姛锛�'
-          })
-        } else {
-          this.$notify({
-            type: 'error',
-            message: '杞鏃堕棿淇敼澶辫触锛�'
-          })
+      updatePollPeriod({ period: this.PollData.Config.poll_period }).then(
+        (rsp) => {
+          if (rsp && rsp.success) {
+            this.$notify({
+              type: "success",
+              message: "杞鏃堕棿淇敼鎴愬姛锛�",
+            });
+          } else {
+            this.$notify({
+              type: "error",
+              message: "杞鏃堕棿淇敼澶辫触锛�",
+            });
+          }
         }
-      })
+      );
     },
     statistic() {
       this.PollData.statistics();
@@ -351,19 +431,18 @@
     },
     pollSwitch(row) {
       changeRunType({ camera_ids: [row.id], run_type: row.run_type ^ 1 }).then(
-        rsp => {
+        (rsp) => {
           if (rsp && rsp.success) {
             this.$notify({
               type: "success",
-              message: "閰嶇疆鎴愬姛"
+              message: "閰嶇疆鎴愬姛",
             });
 
-            row.run_type = row.run_type ^ 1
-
+            row.run_type = row.run_type ^ 1;
           } else {
             this.$notify({
               type: "error",
-              message: "閰嶇疆澶辫触"
+              message: "閰嶇疆澶辫触",
             });
           }
 
@@ -380,14 +459,14 @@
           trigger: "axis",
           axisPointer: {
             // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
-            type: "shadow" // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
-          }
+            type: "shadow", // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+          },
         },
         grid: {
           top: 40,
           // bottom: '45%',
           left: 0,
-          containLabel: true
+          containLabel: true,
         },
 
         xAxis: [
@@ -398,138 +477,144 @@
               // alignWithLabel: true
             },
             axisLine: {
-              show: false
+              show: false,
             },
-            nameLocation: 'start',
+            nameLocation: "start",
             axisTick: {
-              show: false
+              show: false,
             },
             axisLabel: {
               rotate: 45,
               formatter: function (value, index) {
-                let name = ""
+                let name = "";
                 if (value.length > 2) {
-                  name = value.substring(0, 2) + '...'
+                  name = value.substring(0, 2) + "...";
                 } else {
-                  name = value
+                  name = value;
                 }
-                let text = [`{a|${name}}`]
-                return text
+                let text = [`{a|${name}}`];
+                return text;
               },
               rich: {
                 a: {
                   fontSize: 10,
-                  with: 30
-                }
-              }
-            }
-          }
+                  with: 30,
+                },
+              },
+            },
+          },
         ],
         yAxis: [
           {
             type: "value",
             show: true,
             axisLine: {
-              show: false
+              show: false,
             },
             splitLine: {
               lineStyle: {
                 type: "dotted",
-                color: ['#f1f1f1']
-              }
+                color: ["#f1f1f1"],
+              },
             },
             axisTick: {
-              show: false
-            }
-          }
+              show: false,
+            },
+          },
         ],
         series: [
           {
             name: "鏁伴噺",
             type: "bar",
             barWidth: "30%",
-            data: this.dataList
-          }
-        ]
+            data: this.dataList,
+          },
+        ],
       };
-      this.showSysInfo = true
+      this.showSysInfo = true;
       this.barChart.setOption(optionBar);
-      this.barChart.resize()
+      this.barChart.resize();
       this.$nextTick(() => {
-        this.barChart.resize()
-      })
+        this.barChart.resize();
+      });
     },
 
     //婊戝潡鏁版嵁鏇存柊鍥炶皟
     changeSlider(val) {
       // console.log(val, '婊戝潡鍊煎彉鍔�')
-      let fileChannelCount = val[val.length - 1] - val[val.length - 2]
-      let pollChannelCount = val[val.length - 2] - val[val.length - 3]
-      this.PollData.updateChannelCount(fileChannelCount, pollChannelCount)
+      let fileChannelCount = val[val.length - 1] - val[val.length - 2];
+      let pollChannelCount = val[val.length - 2] - val[val.length - 3];
+      this.PollData.updateChannelCount(fileChannelCount, pollChannelCount);
     },
 
     async saveSetting() {
-      let rsp = await updatePollEnable({ enable: this.formData.pollEnable })
+      let rsp = await updatePollEnable({ enable: this.formData.pollEnable });
       if (!rsp || !rsp.success) {
-        this.formData.pollEnable = !this.formData.pollEnable
+        this.formData.pollEnable = !this.formData.pollEnable;
         this.$notify({
           type: "error",
-          message: "杞寮�鍏冲垏鎹㈠け璐ワ紒"
+          message: "杞寮�鍏冲垏鎹㈠け璐ワ紒",
         });
-        return
+        return;
       }
 
-      rsp = await updatePollPeriod({ period: this.formData.pollPeriod })
+      rsp = await updatePollPeriod({ period: this.formData.pollPeriod });
       if (!rsp || !rsp.success) {
         this.$notify({
           type: "error",
-          message: "杞鏃堕棿淇敼澶辫触锛�"
+          message: "杞鏃堕棿淇敼澶辫触锛�",
         });
-        return
+        return;
       }
-      rsp = await updateChannelCount({ videoChannelCount: this.formData.dataStack, pollChannelCount: this.formData.polling })
+      rsp = await updateChannelCount({
+        videoChannelCount: this.formData.dataStack,
+        pollChannelCount: this.formData.polling,
+      });
       if (!rsp || !rsp.success) {
         this.$notify({
           type: "error",
-          message: "绠楀姏閰嶇疆澶辫触锛�"
+          message: "绠楀姏閰嶇疆澶辫触锛�",
         });
-        return
+        return;
       } else {
         this.$notify({
           type: "success",
-          message: "閰嶇疆淇濆瓨鎴愬姛"
+          message: "閰嶇疆淇濆瓨鎴愬姛",
         });
       }
-      this.PollData.statisticTaskInfo()
-      this.PollData.fetchPollConfig()
+      this.PollData.statisticTaskInfo();
+      this.PollData.fetchPollConfig();
     },
 
     //鐩戝惉杞绠楀姏
     changePoll(newVal, oldVal) {
       if (newVal > oldVal) {
-        this.formData.dataStack--
+        this.formData.dataStack--;
       }
       if (newVal < oldVal) {
-        this.formData.dataStack++
+        this.formData.dataStack++;
       }
       // console.log("this.formData.dataStack:"+this.formData.dataStack)
     },
     //鐩戝惉鏁版嵁鏍堢畻鍔�
     changeStack(newVal, oldVal) {
       if (newVal > oldVal) {
-        this.formData.polling--
+        this.formData.polling--;
       }
       if (newVal < oldVal) {
-        this.formData.polling++
+        this.formData.polling++;
       }
       // console.log("this.formData.polling:"+this.formData.polling)
     },
     cellStyle(obj) {
-      if (obj.column.label == '鎽勫儚鏈哄悕绉�' || obj.column.label == '鎽勫儚鏈哄湴鍧�') {
-        return 'text-align:left;padding-left:8px;'
+      if (
+        obj.column.label == "鎽勫儚鏈哄悕绉�" ||
+        obj.column.label == "鎽勫儚鏈哄湴鍧�"
+      ) {
+        return "text-align:left;padding-left:8px;";
       }
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="scss">
diff --git a/src/pages/cameraAccess/components/SceneRule.vue b/src/pages/cameraAccess/components/SceneRule.vue
index c5d985a..b89044f 100644
--- a/src/pages/cameraAccess/components/SceneRule.vue
+++ b/src/pages/cameraAccess/components/SceneRule.vue
@@ -1,8 +1,13 @@
 <template>
   <div class="scene-edit-container">
     <div class="scene-title">
-      <b style="font-size: 14px; line-height: 18px;">鍦烘櫙</b>
-      <el-button type="primary" size="mini" @click="handleCreate" style="margin-left:90%" v-show="!editScene"
+      <b style="font-size: 14px; line-height: 18px">鍦烘櫙</b>
+      <el-button
+        type="primary"
+        size="mini"
+        @click="handleCreate"
+        style="margin-left: 90%"
+        v-show="!editScene && TreeDataPool.selectedNode.type !== 'MENU'"
         >+ 娣诲姞鍦烘櫙</el-button
       >
     </div>
@@ -11,10 +16,19 @@
       <div class="flex-form">
         <div class="left">
           <el-form-item label="鍦烘櫙鍚嶇О">
-            <el-input v-model="sceneForm.scene_name" size="mini" maxlength="15"></el-input>
+            <el-input
+              v-model="sceneForm.scene_name"
+              size="mini"
+              maxlength="15"
+            ></el-input>
           </el-form-item>
           <el-form-item label="浜嬩欢绛夌骇">
-            <el-select v-model="sceneForm.alarm_level" placeholder="璇烽�夋嫨" size="mini" style="width:250px">
+            <el-select
+              v-model="sceneForm.alarm_level"
+              placeholder="璇烽�夋嫨"
+              size="mini"
+              style="width: 250px"
+            >
               <el-option label="涓�绾�" :value="1"></el-option>
               <el-option label="浜岀骇" :value="2"></el-option>
               <el-option label="涓夌骇" :value="3"></el-option>
@@ -23,7 +37,11 @@
             </el-select>
           </el-form-item>
           <el-form-item label="鏃堕棿娈�">
-            <el-select v-model="sceneForm.time_rule_id" placeholder="璇烽�夋嫨" size="mini">
+            <el-select
+              v-model="sceneForm.time_rule_id"
+              placeholder="璇烽�夋嫨"
+              size="mini"
+            >
               <el-option
                 v-for="item in VideoManageData.TimeRules"
                 :key="item.id"
@@ -35,19 +53,42 @@
         </div>
         <div class="right">
           <el-form-item label="鍦烘櫙鎻忚堪">
-            <el-input v-model="sceneForm.desc" type="textarea" size="mini"></el-input>
+            <el-input
+              v-model="sceneForm.desc"
+              type="textarea"
+              size="mini"
+            ></el-input>
           </el-form-item>
           <el-form-item label="浜嬩欢澹伴煶">
-            <el-select v-model="sceneForm.voice" placeholder="绌�" size="small" value-key="id" @change="selSound">
-              <el-option v-for="item in soundList" :key="item.id" :label="item.name" :value="item"></el-option>
+            <el-select
+              v-model="sceneForm.voice"
+              placeholder="绌�"
+              size="small"
+              value-key="id"
+              @change="selSound"
+            >
+              <el-option
+                v-for="item in soundList"
+                :key="item.id"
+                :label="item.name"
+                :value="item"
+              ></el-option>
             </el-select>
-            <span @click="togglePlayer" style="cursor:pointer; margin-left:20px" v-show="sceneForm.voiceId.length">
+            <span
+              @click="togglePlayer"
+              style="cursor: pointer; margin-left: 20px"
+              v-show="sceneForm.voiceId.length"
+            >
               <i
                 v-if="togglePlay"
                 class="el-icon-video-play"
-                style="font-size:26px; vertical-align:middle; color:#409eff"
+                style="font-size: 26px; vertical-align: middle; color: #409eff"
               ></i>
-              <i v-else class="el-icon-video-pause" style="font-size:26px; vertical-align:middle; color:#409eff"></i>
+              <i
+                v-else
+                class="el-icon-video-pause"
+                style="font-size: 26px; vertical-align: middle; color: #409eff"
+              ></i>
             </span>
           </el-form-item>
         </div>
@@ -61,9 +102,11 @@
         @sdkNameChange="getSceneName"
       ></scene-editor>
 
-      <el-form-item style="width: 60%;min-width: 1048px;">
+      <el-form-item style="width: 60%; min-width: 1048px">
         <el-button size="mini" @click="editScene = false">鍙栨秷</el-button>
-        <el-button type="primary" size="mini" @click="saveSceneRule">淇濆瓨</el-button>
+        <el-button type="primary" size="mini" @click="saveSceneRule"
+          >淇濆瓨</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -73,19 +116,42 @@
         <el-table
           :data="tableRuleList"
           border
-          style="width:100%"
+          style="width: 100%"
           :cell-style="cellStyle"
           :header-cell-style="{ background: '#f8f8f8', color: '#222222' }"
         >
-          <el-table-column label="搴忓彿" type="index" align="center"></el-table-column>
-          <el-table-column label="鍦烘櫙鍚嶇О" prop="scene_name" align="center" show-overflow-tooltip></el-table-column>
-          <el-table-column label="绛栫暐" prop="group_text" align="center" min-width="350px">
+          <el-table-column
+            label="搴忓彿"
+            type="index"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            label="鍦烘櫙鍚嶇О"
+            prop="scene_name"
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            label="绛栫暐"
+            prop="group_text"
+            align="center"
+            min-width="350px"
+          >
             <template slot-scope="scope">
               <span v-html="scope.row.group_text"></span>
             </template>
           </el-table-column>
-          <el-table-column label="鏃堕棿娈�" prop="time_name" align="center"></el-table-column>
-          <el-table-column label="鎻忚堪" prop="desc" align="center" min-width="120"></el-table-column>
+          <el-table-column
+            label="鏃堕棿娈�"
+            prop="time_name"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            label="鎻忚堪"
+            prop="desc"
+            align="center"
+            min-width="120"
+          ></el-table-column>
           <!-- <el-table-column label="鐘舵��" align="center" width="90">
             <template slot-scope="scope">
               <el-switch v-model="scope.row.defence_state" @change="updateDefence(scope.row)"></el-switch>
@@ -103,13 +169,27 @@
           </el-table-column>
           <el-table-column label="鎿嶄綔" fixed="right" align="center">
             <template slot-scope="scope">
-              <el-tooltip content="缂栬緫" :hide-after="700" placement="top" popper-class="atooltip">
-                <i class="iconfont iconbianji1 btn-icon" style="font-size: 28px;" @click="handleEdit(scope.row)"></i>
+              <el-tooltip
+                content="缂栬緫"
+                :hide-after="700"
+                placement="top"
+                popper-class="atooltip"
+              >
+                <i
+                  class="iconfont iconbianji1 btn-icon"
+                  style="font-size: 28px"
+                  @click="handleEdit(scope.row)"
+                ></i>
               </el-tooltip>
-              <el-tooltip content="鍒犻櫎" :hide-after="700" placement="top" popper-class="atooltipgroup_">
+              <el-tooltip
+                content="鍒犻櫎"
+                :hide-after="700"
+                placement="top"
+                popper-class="atooltipgroup_"
+              >
                 <i
                   class="iconfont iconshanchu4 btn-icon"
-                  style="font-size: 28px; color:red;"
+                  style="font-size: 28px; color: red"
                   @click="handleDelScene(scope.row)"
                 ></i>
               </el-tooltip>
@@ -122,65 +202,65 @@
 </template>
 
 <script>
-import { saveCameraScene, deleteCameraScene } from "@/api/scene"
-import RuleEditor from "@/components/subComponents/RuleEditor"
-import SceneEditor from "./scene/Editor"
-import { getSoundList } from "@/api/event"
+import { saveCameraScene, deleteCameraScene } from "@/api/scene";
+import RuleEditor from "@/components/subComponents/RuleEditor";
+import SceneEditor from "./scene/Editor";
+import { getSoundList } from "@/api/event";
 
 export default {
   name: "SceneRuleEditor",
   components: {
-    SceneEditor
+    SceneEditor,
   },
   props: {
     seletedCameras: {
       type: Array,
       default: () => {
-        return []
-      }
+        return [];
+      },
     },
     tableRuleList: {
       type: Array,
       default: () => {
-        return []
-      }
+        return [];
+      },
     },
     onSaveScene: {
       type: Function,
-      default: () => false
+      default: () => false,
     },
     linkRule: {
       type: Boolean,
-      default: false
-    }
+      default: false,
+    },
   },
   filters: {
     alarmLevel(level) {
       switch (level) {
         case 1:
-          return "涓�绾�"
+          return "涓�绾�";
         case 2:
-          return "浜岀骇"
+          return "浜岀骇";
         case 3:
-          return "涓夌骇"
+          return "涓夌骇";
         case 4:
-          return "鍥涚骇"
+          return "鍥涚骇";
         case 5:
-          return "浜旂骇"
+          return "浜旂骇";
       }
-    }
+    },
   },
   watch: {
     tableRuleList(n, o) {
-      this.editScene = false
-    }
+      this.editScene = false;
+    },
   },
   mounted() {
     // window.addEventListener('resize', this.windowSizeChange)
-    this.getSounds()
+    this.getSounds();
     this.eventAudio.addEventListener("ended", () => {
-      this.togglePlay = true
-    })
+      this.togglePlay = true;
+    });
   },
   data() {
     return {
@@ -194,7 +274,7 @@
         template_id: "",
         time_rule_id: "",
         voice: {},
-        voiceId: ""
+        voiceId: "",
       },
       templateSdks: [],
       templateRules: "",
@@ -202,53 +282,55 @@
       sceneNameStore: [],
       eventAudio: new Audio(),
       soundList: [],
-      togglePlay: true
-    }
+      togglePlay: true,
+    };
   },
   methods: {
     getSoundById(id) {
       if (id) {
-        let sound = this.soundList.find((item) => item.id == id)
-        return sound.name
+        let sound = this.soundList.find((item) => item.id == id);
+        return sound.name;
       } else {
-        return ""
+        return "";
       }
     },
     getSounds() {
-      let _this = this
+      let _this = this;
       getSoundList()
         .then((res) => {
           if (res.success) {
             //_this.soundList = [{ id: "", name: "绌�", path: "" }].concat(res.data.list)
-            _this.soundList = [{ id: "", name: "绌�", path: "" }].concat(res.data)
+            _this.soundList = [{ id: "", name: "绌�", path: "" }].concat(
+              res.data
+            );
           }
         })
-        .catch((e) => console.log(e))
+        .catch((e) => console.log(e));
     },
     selSound(sound) {
-      this.soundPath = sound.path
-      this.sceneForm.voiceId = sound.id
-      this.togglePlay = true
-      this.eventAudio.pause()
-      this.$forceUpdate()
+      this.soundPath = sound.path;
+      this.sceneForm.voiceId = sound.id;
+      this.togglePlay = true;
+      this.eventAudio.pause();
+      this.$forceUpdate();
       // this.eventAudio.
     },
     togglePlayer() {
       if (!this.soundPath) {
         this.$notify({
           type: "info",
-          message: "璇峰厛閫夋嫨涓�涓0闊�!"
-        })
-        return false
+          message: "璇峰厛閫夋嫨涓�涓0闊�!",
+        });
+        return false;
       }
-      debugger
-      this.eventAudio.src = this.soundPath
+      debugger;
+      this.eventAudio.src = this.soundPath;
       if (this.togglePlay) {
-        this.eventAudio.play()
-        this.togglePlay = false
+        this.eventAudio.play();
+        this.togglePlay = false;
       } else {
-        this.eventAudio.pause()
-        this.togglePlay = true
+        this.eventAudio.pause();
+        this.togglePlay = true;
       }
       // this.togglePlay = !this.togglePlay
     },
@@ -256,19 +338,19 @@
       for (var i = arr.length - 1; i > 0; i--) {
         for (var j = 0; j < i; j++) {
           if (arr[j] > arr[j + 1]) {
-            let temp = arr[j]
-            arr[j] = arr[j + 1]
-            arr[j + 1] = temp
+            let temp = arr[j];
+            arr[j] = arr[j + 1];
+            arr[j + 1] = temp;
           }
         }
       }
-      return arr
+      return arr;
     },
     getSceneName(sdk_name) {
-      this.sceneNameStore.push(sdk_name)
+      this.sceneNameStore.push(sdk_name);
 
       if (!this.sceneForm.scene_name.trim()) {
-        this.sceneForm.scene_name = sdk_name
+        this.sceneForm.scene_name = sdk_name;
       }
       // }else if(this.sceneForm.scene_name == store[store.length-2]){
       //   //鍦烘櫙鍚嶇О鍙栫殑鏄笂涓�娆′紶杩囨潵鐨勭畻娉曞悕绉帮紝鍒欓』鏇存柊涓烘渶鏂颁紶鏉ョ殑绠楁硶鍚�
@@ -284,18 +366,18 @@
         template_id: "",
         time_rule_id: "",
         voice: {},
-        voiceId: ""
-      }
-      this.$refs.sceneEditor.cleanRule()
-      this.$refs.sceneEditor.getSdkConnection()
+        voiceId: "",
+      };
+      this.$refs.sceneEditor.cleanRule();
+      this.$refs.sceneEditor.getSdkConnection();
     },
     handleCreate() {
       if (this.linkRule && this.TreeDataPool.selectedNodes.length < 2) {
         this.$notify({
           type: "warning",
-          message: "璇烽�夋嫨鑷冲皯2涓憚鍍忔満!"
-        })
-        return false
+          message: "璇烽�夋嫨鑷冲皯2涓憚鍍忔満!",
+        });
+        return false;
       } else if (
         !this.linkRule &&
         this.TreeDataPool.treeActiveName != "dataStack" &&
@@ -303,117 +385,126 @@
       ) {
         this.$notify({
           type: "warning",
-          message: `璇烽�夋嫨1涓憚鍍忔満!`
-        })
-        return false
-      } else if (this.TreeDataPool.treeActiveName == "dataStack" && !this.DataStackPool.selectedDir.id) {
+          message: `璇烽�夋嫨1涓憚鍍忔満!`,
+        });
+        return false;
+      } else if (
+        this.TreeDataPool.treeActiveName == "dataStack" &&
+        !this.DataStackPool.selectedDir.id
+      ) {
         this.$notify({
           type: "warning",
-          message: `璇峰厛閫夋嫨鏁版嵁鏍堟枃浠跺す!`
-        })
-        return false
+          message: `璇峰厛閫夋嫨鏁版嵁鏍堟枃浠跺す!`,
+        });
+        return false;
       }
-      this.editScene = true
-      this.cleanForm()
+      this.editScene = true;
+      this.cleanForm();
 
       //鍒濆鍖栧満鏅悕绉�
-      var pattern = /^鍦烘櫙\s*\d+\s*$/
-      var tempArr = []
+      var pattern = /^鍦烘櫙\s*\d+\s*$/;
+      var tempArr = [];
       this.tableRuleList.forEach((scene) => {
         if (pattern.test(scene.scene_name)) {
-          tempArr.push(Number(scene.scene_name.substring(2).trim()))
+          tempArr.push(Number(scene.scene_name.substring(2).trim()));
         }
-      })
-      let latest = tempArr.length > 0 ? this.bubbleSort(tempArr)[tempArr.length - 1] + 1 : 1
+      });
+      let latest =
+        tempArr.length > 0
+          ? this.bubbleSort(tempArr)[tempArr.length - 1] + 1
+          : 1;
 
-      this.sceneForm.scene_name = "鍦烘櫙" + latest
+      this.sceneForm.scene_name = "鍦烘櫙" + latest;
       //鍒濆鍖栨椂闂存
-      this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id
+      this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id;
     },
     handleEdit(scene) {
-      this.sceneForm = JSON.parse(JSON.stringify(scene))
+      this.sceneForm = JSON.parse(JSON.stringify(scene));
       // this.originSceneInfo = JSON.parse(JSON.stringify(scene));
-      this.sceneForm.voice = this.soundList.find((o) => o.id === scene.voiceId)
+      this.sceneForm.voice = this.soundList.find((o) => o.id === scene.voiceId);
 
-      this.editScene = true
-      let selectedTpl = {}
+      this.editScene = true;
+      let selectedTpl = {};
       this.sceneTemplates.forEach((t) => {
         if (t.id == this.sceneForm.template_id) {
-          selectedTpl = t
+          selectedTpl = t;
         }
-      })
-      this.templateSdks = selectedTpl.sdks
+      });
+      this.templateSdks = selectedTpl.sdks;
 
-      this.templateRules = JSON.stringify(scene.rules)
-      this.$refs.sceneEditor.editHandle(this.templateRules)
+      this.templateRules = JSON.stringify(scene.rules);
+      this.$refs.sceneEditor.editHandle(this.templateRules);
     },
 
     validateForm() {
       if (!this.sceneForm.scene_name.trim()) {
         this.$notify({
           type: "warning",
-          message: "鍦烘櫙鍚嶄笉鑳戒负绌�"
-        })
-        return false
+          message: "鍦烘櫙鍚嶄笉鑳戒负绌�",
+        });
+        return false;
       } else if (!this.sceneForm.alarm_level) {
         this.$notify({
           type: "warning",
-          message: "浜嬩欢绛夌骇涓嶈兘涓虹┖"
-        })
-        return false
+          message: "浜嬩欢绛夌骇涓嶈兘涓虹┖",
+        });
+        return false;
       } else if (!this.sceneForm.time_rule_id) {
         this.$notify({
           type: "warning",
-          message: "鏃堕棿娈典笉鑳戒负绌�"
-        })
-        return false
+          message: "鏃堕棿娈典笉鑳戒负绌�",
+        });
+        return false;
       }
-      return true
+      return true;
     },
     saveSceneRule() {
       if (!this.validateForm()) {
-        return
+        return;
       }
-      let editorResp = this.$refs.sceneEditor.submitRule()
-      this.sceneForm.rules = editorResp.rules
-      this.sceneForm.id = editorResp.id
-      this.sceneForm.group_text = editorResp.text
+      let editorResp = this.$refs.sceneEditor.submitRule();
+      if (!editorResp) {
+        return;
+      }
+      this.sceneForm.rules = editorResp.rules;
+      this.sceneForm.id = editorResp.id;
+      this.sceneForm.group_text = editorResp.text;
 
-      this.onSaveScene(this.sceneForm)
+      this.onSaveScene(this.sceneForm);
     },
     handleDelScene(groupRule) {
-      let _this = this
+      let _this = this;
       this.$confirm("鎻愮ず锛氬垹闄ゅ悗锛岃鏉¤鍒欏皢澶辨晥锛屾槸鍚﹀垹闄わ紵", {
         center: true,
         cancelButtonClass: "comfirm-class-cancle",
-        confirmButtonClass: "comfirm-class-sure"
+        confirmButtonClass: "comfirm-class-sure",
       })
         .then(() => {
           deleteCameraScene(groupRule.id).then((res) => {
-            this.$emit("delete-rule")
+            this.$emit("delete-rule");
             if (res && res.success) {
               this.$notify({
                 type: "success",
-                message: "鍒犻櫎鎴愬姛"
-              })
-              _this.$root.$children[0].$children[0].querySearchAsync("camera")
+                message: "鍒犻櫎鎴愬姛",
+              });
+              _this.$root.$children[0].$children[0].querySearchAsync("camera");
             } else {
               this.$notify({
                 type: "error",
-                message: "鍒犻櫎澶辫触锛�"
-              })
+                message: "鍒犻櫎澶辫触锛�",
+              });
             }
-          })
+          });
         })
-        .catch(() => {})
+        .catch(() => {});
     },
     cellStyle(obj) {
       if (obj.column.label == "绛栫暐" || obj.column.label == "浜嬩欢澹伴煶") {
-        return "text-align:left;padding-left:8px;"
+        return "text-align:left;padding-left:8px;";
       }
-    }
-  }
-}
+    },
+  },
+};
 </script>
 
 <style lang="scss">
@@ -481,5 +572,8 @@
       }
     }
   }
+  .el-table th.el-table__cell > .cell {
+    padding-right: 0;
+  }
 }
 </style>
diff --git a/src/pages/cameraAccess/components/SeparateRules.vue b/src/pages/cameraAccess/components/SeparateRules.vue
index 19fb894..bb1e9e3 100644
--- a/src/pages/cameraAccess/components/SeparateRules.vue
+++ b/src/pages/cameraAccess/components/SeparateRules.vue
@@ -2,7 +2,7 @@
   <div class="s-separate-rules">
     <div class="ai">
       <div class="check-area">
-        <div class="ai-select">
+        <div class="ai-select" v-if="TreeDataPool.selectedNode.type !== 'MENU'">
           <div v-show="cameraType === 'camera'">
             <span>
               <span class="label">瑙嗛鍒嗘瀽澶勭悊</span>
@@ -15,7 +15,11 @@
             </span>
           </div>
 
-          <div v-if="Camera.analytics" class="flex-box" v-show="cameraType === 'camera'">
+          <div
+            v-if="Camera.analytics"
+            class="flex-box"
+            v-show="cameraType === 'camera'"
+          >
             <span class="label">澶勭悊鏂瑰紡</span>
             <toggle-button
               :value="Camera.dealWay"
@@ -24,20 +28,29 @@
               :color="{
                 checked: '#3D68E1',
                 unchecked: '#FF7733',
-                disabled: '#CCCCCC'
+                disabled: '#CCCCCC',
               }"
               :sync="true"
               @change="changePoll"
             />
           </div>
-          <div v-if="Camera.analytics" class="flex-box" v-show="cameraType === 'camera'">
+          <div
+            v-if="Camera.analytics"
+            class="flex-box"
+            v-show="cameraType === 'camera'"
+          >
             <span class="label">澶勭悊鐘舵��: {{ camStatus }}</span>
           </div>
-          <div v-if="Camera.analytics" class="flex-box" v-show="cameraType === 'camera'">
+          <div
+            v-if="Camera.analytics"
+            class="flex-box"
+            v-show="cameraType === 'camera'"
+          >
             <span class="label"
               >鍒嗚鲸鐜�:
               {{
-                Camera.camearInfo.resolution_width == 0 || Camera.camearInfo.resolution_height == 0
+                Camera.camearInfo.resolution_width == 0 ||
+                Camera.camearInfo.resolution_height == 0
                   ? "鏈満鍒嗚鲸鐜�"
                   : `${Camera.camearInfo.resolution_width} * ${Camera.camearInfo.resolution_height}`
               }}</span
@@ -51,7 +64,12 @@
           <div v-if="Camera.analytics" class="flex-box">
             <span class="label">绠楁硶蹇�熼�氶亾</span>
             <div class="channel flex-box">
-              <el-tooltip effect="dark" content="澶嶅埗姝ゆ憚鍍忔満绠楁硶瑙勫垯" placement="bottom" popper-class="atooltip">
+              <el-tooltip
+                effect="dark"
+                content="澶嶅埗姝ゆ憚鍍忔満绠楁硶瑙勫垯"
+                placement="bottom"
+                popper-class="atooltip"
+              >
                 <span
                   style="color: #3d68e1; cursor: pointer; font-size: 23px"
                   @click="ctrlC"
@@ -61,7 +79,9 @@
               <el-tooltip
                 effect="dark"
                 :content="
-                  !TreeDataPool.ctrlCameraId ? '绮樿创绠楁硶瑙勫垯' : `绮樿创绠楁硶瑙勫垯锛屾潵婧愶細${TreeDataPool.ctrlCameraName}`
+                  !TreeDataPool.ctrlCameraId
+                    ? '绮樿创绠楁硶瑙勫垯'
+                    : `绮樿创绠楁硶瑙勫垯锛屾潵婧愶細${TreeDataPool.ctrlCameraName}`
                 "
                 placement="bottom"
                 popper-class="atooltip"
@@ -108,13 +128,19 @@
           <div class="draw-box">
             <div class="draw-box-title">
               <b style="font-size: 14px">缁樺埗鍖哄煙</b>
-              <span class="el-dropdown-link" @click="drawBaseImg" style="position: relative; top: 5px; cursor: pointer">
+              <span
+                class="el-dropdown-link"
+                @click="drawBaseImg"
+                style="position: relative; top: 5px; cursor: pointer"
+              >
                 <i class="iconfont iconbianji1" style="font-size: 28px"></i>
               </span>
             </div>
             <div style="width: 590px; height: 16px">
               <b style="font-size: 14px">{{
-                Camera.camearInfo.alias ? Camera.camearInfo.alias : Camera.camearInfo.name
+                Camera.camearInfo.alias
+                  ? Camera.camearInfo.alias
+                  : Camera.camearInfo.name
               }}</b>
             </div>
             <div class="img-box">
@@ -150,9 +176,16 @@
                     class="swiper-box-container2"
                     style="width: 100%"
                   >
-                    <swiper-slide v-for="(data, index) in swipercanvasData" :key="index">
+                    <swiper-slide
+                      v-for="(data, index) in swipercanvasData"
+                      :key="index"
+                    >
                       <div>
-                        <b class="video-title" style="font-size: 14px; margin-top: -10px">{{ data.name }}</b>
+                        <b
+                          class="video-title"
+                          style="font-size: 14px; margin-top: -10px"
+                          >{{ data.name }}</b
+                        >
                         <polygon-canvas
                           class="cavas"
                           ref="canvas"
@@ -176,12 +209,20 @@
                       </div>
                     </swiper-slide>
                   </swiper>
-                  <div class="swiper-local-prev" v-show="swipercanvasData.length > 1" @click="prevClick">
+                  <div
+                    class="swiper-local-prev"
+                    v-show="swipercanvasData.length > 1"
+                    @click="prevClick"
+                  >
                     <div class="icon-btn" slot="button-prev">
                       <i class="iconfont iconzuo"></i>
                     </div>
                   </div>
-                  <div class="swiper-local-next" v-show="swipercanvasData.length > 1" @click="nextClick">
+                  <div
+                    class="swiper-local-next"
+                    v-show="swipercanvasData.length > 1"
+                    @click="nextClick"
+                  >
                     <div class="icon-btn" slot="button-next">
                       <i class="iconfont iconyou1"></i>
                     </div>
@@ -219,21 +260,21 @@
 </template>
 
 <script>
-import { savePolygon } from "@/api/polygon"
+import { savePolygon } from "@/api/polygon";
 
-import { pasteRules } from "@/api/task"
-import { getCameraInfo } from "@/api/camera"
-import { saveCameraScene } from "@/api/scene"
+import { pasteRules } from "@/api/task";
+import { getCameraInfo } from "@/api/camera";
+import { saveCameraScene } from "@/api/scene";
 
-import { changeRunType } from "@/api/pollConfig"
-import { findAllFileByStackId } from "@/api/localVedio"
-import VideoRuleData from "@/Pool/VideoRuleData"
+import { changeRunType } from "@/api/pollConfig";
+import { findAllFileByStackId } from "@/api/localVedio";
+import VideoRuleData from "@/Pool/VideoRuleData";
 
-import TimeSlider from "./TimeSlider"
-import polygonCanvas from "@/components/canvas"
-import Sysinfo from "@/components/subComponents/SystemInfo"
-import SceneRule from "./SceneRule"
-import SlideScene from "./scene/SlideScene"
+import TimeSlider from "./TimeSlider";
+import polygonCanvas from "@/components/canvas";
+import Sysinfo from "@/components/subComponents/SystemInfo";
+import SceneRule from "./SceneRule";
+import SlideScene from "./scene/SlideScene";
 
 export default {
   components: {
@@ -241,19 +282,21 @@
     polygonCanvas,
     Sysinfo,
     SceneRule,
-    SlideScene
+    SlideScene,
   },
   directives: {
     focus: {
-      inserted: function(el) {
-        el.querySelector("input").focus()
-      }
-    }
+      inserted: function (el) {
+        el.querySelector("input").focus();
+      },
+    },
   },
   computed: {
     cameraType() {
-      return this.TreeDataPool.treeActiveName === "camera" ? "camera" : "dataStack"
-    }
+      return this.TreeDataPool.treeActiveName === "camera"
+        ? "camera"
+        : "dataStack";
+    },
   },
   data() {
     return {
@@ -266,12 +309,12 @@
         grabCursor: true,
         pagination: {
           el: ".swiper-pagination",
-          type: "fraction"
+          type: "fraction",
         },
         navigation: {
           nextEl: ".swiper-local-next",
-          prevEl: ".swiper-local-prev"
-        }
+          prevEl: ".swiper-local-prev",
+        },
       },
       tableRuleList: [],
       camStatus: "",
@@ -284,28 +327,28 @@
       swiperIndex: 0,
       swipercanvasData: [],
       stackFilesPage: 1,
-      stackFilesSize: 5
-    }
+      stackFilesSize: 5,
+    };
   },
   mounted() {
-    this.PollData.statistics()
+    this.PollData.statistics();
   },
   watch: {
     "Camera.cameraId": {
       handler(n, o) {
         if (n) {
           if (this.TreeDataPool.treeActiveName == "dataStack") {
-            this.stackFilesPage = 1
-            this.stackFilesSize = 5
-            this.stackId = n
+            this.stackFilesPage = 1;
+            this.stackFilesSize = 5;
+            this.stackId = n;
             if (this.stackId) {
-              this.swipercanvasData = []
-              this.getStackFiles()
+              this.swipercanvasData = [];
+              this.getStackFiles();
             }
           }
         }
-      }
-    }
+      },
+    },
   },
   methods: {
     getStatus() {
@@ -313,296 +356,300 @@
         if (res.success) {
           switch (res.data.status) {
             case 0:
-              this.camStatus = "鏈厤瑙勫垯"
-              return
+              this.camStatus = "鏈厤瑙勫垯";
+              return;
             case 1:
-              this.camStatus = "绛夊緟杞澶勭悊"
-              return
+              this.camStatus = "绛夊緟杞澶勭悊";
+              return;
             case 2:
-              this.camStatus = "姝e湪鎵ц鍒嗘瀽澶勭悊"
-              return
+              this.camStatus = "姝e湪鎵ц鍒嗘瀽澶勭悊";
+              return;
             case -1:
-              this.camStatus = "鍏朵粬鎯呭喌瀵艰嚧鏈鐞�"
-              return
+              this.camStatus = "鍏朵粬鎯呭喌瀵艰嚧鏈鐞�";
+              return;
             case -2:
-              this.camStatus = "鏁呴殰瀵艰嚧鏈鐞�"
-              return
+              this.camStatus = "鏁呴殰瀵艰嚧鏈鐞�";
+              return;
           }
         }
-      })
+      });
     },
     prevClick() {
       if (this.swiperIndex == 0) {
         if (this.stackFilesPage > 1) {
-          this.stackFilesPage--
-          this.getStackFiles(true)
+          this.stackFilesPage--;
+          this.getStackFiles(true);
         } else {
           this.$message({
             type: "info",
-            message: "褰撳墠宸叉槸绗竴椤�"
-          })
+            message: "褰撳墠宸叉槸绗竴椤�",
+          });
         }
       }
     },
     nextClick() {
       if (this.swiperIndex == this.swipercanvasData.length - 1) {
-        this.stackFilesPage++
-        this.getStackFiles(true)
+        this.stackFilesPage++;
+        this.getStackFiles(true);
       }
     },
     getStackFiles(onClick = false) {
-      this.getStackFileLoading = true
-      let _this = this
+      this.getStackFileLoading = true;
+      let _this = this;
       findAllFileByStackId({
         name: "",
         stackId: this.stackId,
         page: this.stackFilesPage,
         size: this.stackFilesSize,
-        type: 0
+        type: 0,
       })
         .then((res) => {
           if (res && res.success) {
             if (res.data.dataList.length > 0) {
-              this.swipercanvasData = []
+              this.swipercanvasData = [];
               this.swipercanvasData = res.data.dataList.map((item) => {
                 return {
                   name: item.name,
                   stackId: item.stack_id,
                   baseImg:
-                    item.type == 2 ? `/files/${item.path.substr(item.path.lastIndexOf("/") + 1)}` : item.snapshot_url,
+                    item.type == 2
+                      ? `/files/${item.path.substr(
+                          item.path.lastIndexOf("/") + 1
+                        )}`
+                      : item.snapshot_url,
                   type: item.type,
                   id: item.id,
-                  loading: false
-                }
-              })
-              this.swiperIndex = 0
-              this.$refs.swiper.swiper.activeIndex = 0
+                  loading: false,
+                };
+              });
+              this.swiperIndex = 0;
+              this.$refs.swiper.swiper.activeIndex = 0;
             } else {
               if (onClick) {
                 this.$message({
                   type: "warning",
-                  message: "宸叉棤鏇村鏁版嵁!"
-                })
+                  message: "宸叉棤鏇村鏁版嵁!",
+                });
               }
             }
           } else {
             this.$message({
               type: "error",
-              message: "鏁版嵁璇锋眰澶辫触,璇风◢鍚庨噸璇�!"
-            })
+              message: "鏁版嵁璇锋眰澶辫触,璇风◢鍚庨噸璇�!",
+            });
           }
-          this.getStackFileLoading = false
+          this.getStackFileLoading = false;
         })
         .catch((e) => {
-          this.getStackFileLoading = false
-        })
+          this.getStackFileLoading = false;
+        });
     },
     swiperSlideChange() {
-      this.swiperIndex = this.$refs.swiper.swiper.activeIndex
+      this.swiperIndex = this.$refs.swiper.swiper.activeIndex;
     },
     drawBaseImg() {
       if (Array.isArray(this.$refs.canvas)) {
         if (this.$refs.canvas.length > 0) {
-          this.$refs.canvas[0].showModal()
+          this.$refs.canvas[0].showModal();
         }
       } else {
-        this.$refs.canvas.showModal()
+        this.$refs.canvas.showModal();
       }
     },
     getCanvasData(data) {
-      let polyon = { ...data }
-      polyon.camera_id = this.Camera.cameraId
+      let polyon = { ...data };
+      polyon.camera_id = this.Camera.cameraId;
       savePolygon(polyon).then((rsp) => {
-        this.Camera.getPolygon()
+        this.Camera.getPolygon();
         //this.Camera.getCameraTask();
-      })
+      });
     },
     refresh(url) {
-      this.Camera.baseImg = url
+      this.Camera.baseImg = url;
     },
     // 鍒濆鍖栨憚鍍忔満淇℃伅锛岀埗缁勪欢璋冪敤
     async initCameraData(id, type) {
-      this.Camera = new VideoRuleData()
+      this.Camera = new VideoRuleData();
 
       if (id && id !== "") {
-        this.loading = false
-        this.Camera.cameraId = id
-        this.Camera.gb28181 = type === 1
+        this.loading = false;
+        this.Camera.cameraId = id;
+        this.Camera.gb28181 = type === 1;
         if (type === 1) {
-          await this.Camera.update(true)
+          await this.Camera.update(true);
         } else {
-          await this.Camera.update()
+          await this.Camera.update();
         }
       }
 
-      this.$refs.timeSlider.activeTab = this.VideoManageData.TimeRules[0].id
-      this.showSysInfo = true
+      this.$refs.timeSlider.activeTab = this.VideoManageData.TimeRules[0].id;
+      this.showSysInfo = true;
       // 鍒ゆ柇姝e湪鎵ц瀹炴椂鎴栬�呰疆璇换鍔�
       this.PollData.CameraList.forEach((element) => {
         if (element.id === this.Camera.cameraId) {
-          this.runType = element.run_type
+          this.runType = element.run_type;
         }
-      })
+      });
     },
 
     saveSceneRule(groupRule) {
-      const payload = { ...groupRule }
-      payload.cameraIds = [this.Camera.cameraId]
-      let _this = this
+      const payload = { ...groupRule };
+      payload.cameraIds = [this.Camera.cameraId];
+      let _this = this;
       saveCameraScene(payload).then((rsp) => {
         if (rsp && rsp.success) {
-          this.Camera.update()
+          this.Camera.update();
           this.$notify({
             type: "success",
-            message: "绛栫暐淇濆瓨鎴愬姛锛�"
-          })
+            message: "绛栫暐淇濆瓨鎴愬姛锛�",
+          });
           //鍒锋柊宸︿晶鏍�
 
-          _this.$root.$children[0].$children[0].querySearchAsync("camera")
+          _this.$root.$children[0].$children[0].querySearchAsync("camera");
         }
-      })
+      });
     },
     delScenRule() {
-      this.Camera.update()
+      this.Camera.update();
     },
     changeLoading(params) {
-      this.loading = params
+      this.loading = params;
     },
     //鏄惁杩涜瑙嗛鍒嗘瀽澶勭悊
     pollEnable(row) {
-      let val = 0
+      let val = 0;
       if (row) {
         if (this.PollData.RealTimeSum < this.PollData.channelTotal) {
-          this.Camera.dealWay = true
-          val = 1
+          this.Camera.dealWay = true;
+          val = 1;
         } else {
-          this.Camera.dealWay = false
-          val = 0
+          this.Camera.dealWay = false;
+          val = 0;
         }
       } else {
-        this.Camera.dealWay = false
-        val = -1
+        this.Camera.dealWay = false;
+        val = -1;
       }
       if (this.Camera.cameraId && this.Camera.cameraId !== undefined) {
         changeRunType({
           camera_ids: [this.Camera.cameraId],
-          run_type: val
+          run_type: val,
         }).then((rsp) => {
-          this.getStatus()
+          this.getStatus();
           if (rsp && rsp.success) {
             this.$notify({
               type: "success",
-              message: "閰嶇疆鎴愬姛"
-            })
+              message: "閰嶇疆鎴愬姛",
+            });
           } else {
             this.$notify({
               type: "error",
-              message: "閰嶇疆澶辫触"
-            })
+              message: "閰嶇疆澶辫触",
+            });
           }
-          this.TreeDataPool.fetchTreeData()
-        })
+          this.TreeDataPool.fetchTreeData();
+        });
       }
-      this.PollData.statisticTaskInfo()
+      this.PollData.statisticTaskInfo();
     },
     //瀹炴椂銆佽疆璇㈠垏鎹�
     changePoll(row) {
       //鍒ゆ柇鏄柊澧炶繕鏄洿鏂�
-      debugger
+      debugger;
       if (this.Camera.cameraId && this.Camera.cameraId !== undefined) {
         if (this.PollData.RealTimeSum < this.PollData.channelTotal) {
           if (row.value) {
-            this.Camera.dealWay = true
+            this.Camera.dealWay = true;
           } else {
-            this.Camera.dealWay = false
+            this.Camera.dealWay = false;
           }
-          debugger
+          debugger;
           changeRunType({
             camera_ids: [this.Camera.cameraId],
-            run_type: this.Camera.dealWay ? 1 : 0
+            run_type: this.Camera.dealWay ? 1 : 0,
           }).then((rsp) => {
             if (rsp && rsp.success) {
               this.$notify({
                 type: "success",
-                message: "閰嶇疆鎴愬姛"
-              })
+                message: "閰嶇疆鎴愬姛",
+              });
             } else {
               this.$notify({
                 type: "error",
-                message: "閰嶇疆澶辫触"
-              })
+                message: "閰嶇疆澶辫触",
+              });
             }
-          })
+          });
         } else {
           if (this.Camera.dealWay) {
-            this.Camera.dealWay = false
-            debugger
+            this.Camera.dealWay = false;
+            debugger;
             changeRunType({
               camera_ids: [this.Camera.cameraId],
-              run_type: this.Camera.dealWay ? 1 : 0
+              run_type: this.Camera.dealWay ? 1 : 0,
             }).then((rsp) => {
               if (rsp && rsp.success) {
                 this.$notify({
                   type: "success",
-                  message: "閰嶇疆鎴愬姛"
-                })
+                  message: "閰嶇疆鎴愬姛",
+                });
               } else {
                 this.$notify({
                   type: "error",
-                  message: "閰嶇疆澶辫触"
-                })
+                  message: "閰嶇疆澶辫触",
+                });
               }
-            })
+            });
           }
         }
-        this.TreeDataPool.fetchTreeData()
-        this.PollData.statisticTaskInfo()
+        this.TreeDataPool.fetchTreeData();
+        this.PollData.statisticTaskInfo();
       }
     },
     //澶嶅埗
     ctrlC() {
-      this.TreeDataPool.ctrlCameraId = this.Camera.cameraId
-      this.TreeDataPool.ctrlCameraName = this.Camera.cameraName
+      this.TreeDataPool.ctrlCameraId = this.Camera.cameraId;
+      this.TreeDataPool.ctrlCameraName = this.Camera.cameraName;
       this.$notify({
         type: "success",
-        message: "澶嶅埗绠楁硶鎴愬姛锛�"
-      })
+        message: "澶嶅埗绠楁硶鎴愬姛锛�",
+      });
     },
     ctrlV() {
       if (this.Camera.cameraId === this.TreeDataPool.ctrlCameraId) {
         this.$notify({
           type: "warning",
-          message: "涓嶈兘绮樿创鏈憚鍍忔満鐨勭畻娉曞埌鏈憚鍍忔満锛�"
-        })
-        return false
+          message: "涓嶈兘绮樿创鏈憚鍍忔満鐨勭畻娉曞埌鏈憚鍍忔満锛�",
+        });
+        return false;
       }
       pasteRules({
         sourceId: this.TreeDataPool.ctrlCameraId,
-        targetIds: [this.Camera.cameraId]
+        targetIds: [this.Camera.cameraId],
       })
         .then((res) => {
           if (res && res.success) {
             this.$notify({
               type: "success",
-              message: "绮樿创绠楁硶鎴愬姛锛�"
-            })
-            this.initCameraData(this.Camera.cameraId)
+              message: "绮樿创绠楁硶鎴愬姛锛�",
+            });
+            this.initCameraData(this.Camera.cameraId);
           } else {
             this.$notify({
               type: "error",
-              message: "绮樿创绠楁硶澶辫触锛�"
-            })
+              message: "绮樿创绠楁硶澶辫触锛�",
+            });
           }
         })
         .catch((err) => {
           this.$notify({
             type: "error",
-            message: "绮樿创绠楁硶澶辫触锛�"
-          })
-        })
-    }
-  }
-}
+            message: "绮樿创绠楁硶澶辫触锛�",
+          });
+        });
+    },
+  },
+};
 </script>
 <style lang="scss">
 .el-message--info .el-message__content {
diff --git a/src/pages/cameraAccess/index/VideoManage.vue b/src/pages/cameraAccess/index/VideoManage.vue
index 0ce1280..2f2bd1d 100644
--- a/src/pages/cameraAccess/index/VideoManage.vue
+++ b/src/pages/cameraAccess/index/VideoManage.vue
@@ -114,6 +114,7 @@
       }
     },
     "TreeDataPool.selectedNode": function (node) {
+      console.log(this.TreeDataPool.selectedNode);
       if (this.activeName == "camera-info") {
         if (this.TreeDataPool.treeActiveName == "camera") {
           this.$refs.cameraInfo.selectCamera(node);
diff --git a/src/pages/datapush/index/RightEvent.vue b/src/pages/datapush/index/RightEvent.vue
index 75d386e..01ca008 100644
--- a/src/pages/datapush/index/RightEvent.vue
+++ b/src/pages/datapush/index/RightEvent.vue
@@ -711,12 +711,12 @@
           if (resetNext) {
             rule.topic_arg = rule.topicArgOptions[0].value;
             this.selectArg(rule, resetNext);
+            this.setOptionsDisable(rule);
           }
         }
       });
     },
     selectArg(rule, resetNext = false) {
-      debugger;
       let argInfo = rule.topicArgOptions.filter((arg) => {
         return arg.value === rule.topic_arg;
       });
@@ -785,9 +785,11 @@
       rule.rule_value = val.join(",");
     },
     setOptionsDisable(rule) {
-      let isAllSelect = rule.rule_values.indexOf("鍏ㄩ儴") >= 0;
+      console.log(rule);
+      let isAllSelect =
+        rule.rule_values.indexOf("鍏ㄩ儴") >= 0 ||
+        rule.rule_values.indexOf("all*all") >= 0;
       let isNullSelect = rule.rule_values.indexOf("绌�") >= 0;
-      console.log(rule.rule_values);
 
       rule.ruleValueOptions.forEach((opt) => {
         if (!rule.rule_values.length) {
@@ -802,6 +804,8 @@
 
         opt.disabled = isAllSelect || isNullSelect;
       });
+      console.log(1212);
+      console.log(rule.ruleValueOptions);
     },
     // 鏍规嵁value杩斿洖瀵瑰簲鐨刵ame
     getNameByValue(arr, value) {
@@ -1003,3 +1007,6 @@
   }
 }
 </style>
+
+
+
diff --git a/src/pages/login/index/App.vue b/src/pages/login/index/App.vue
index 7156115..e0b2279 100644
--- a/src/pages/login/index/App.vue
+++ b/src/pages/login/index/App.vue
@@ -81,7 +81,7 @@
       >
         <el-form-item prop="loginName">
           <el-input
-            v-model="user.loginName"
+            v-model.trim="user.loginName"
             :placeholder="$t('placeholder.enterUsername')"
             :class="{ empty: !user.loginName }"
           >
@@ -92,7 +92,7 @@
           <el-input
             show-password
             @keyup.enter.native="systemLogin()"
-            v-model="user.password"
+            v-model.trim="user.password"
             autocomplete="off"
             :placeholder="$t('placeholder.enterPassword')"
             :class="{ empty: !user.password }"
diff --git a/src/pages/search/index/App.vue b/src/pages/search/index/App.vue
index 9dbeb7c..613e436 100644
--- a/src/pages/search/index/App.vue
+++ b/src/pages/search/index/App.vue
@@ -61,6 +61,10 @@
   overflow: hidden;
   min-width: 1399px;
   height: 100%;
+
+  .window {
+    z-index: 3000 !important;
+  }
 }
 .column-left {
   background-color: #fff;
diff --git a/src/pages/search/index/Searching.vue b/src/pages/search/index/Searching.vue
index 3f44384..abcff6f 100644
--- a/src/pages/search/index/Searching.vue
+++ b/src/pages/search/index/Searching.vue
@@ -38,7 +38,7 @@
             ></el-button>
           </el-tooltip>
           <p class="p-label" style="width: 16%">
-            <b>鏍囩锛�</b>
+            <b>搴曞簱锛�</b>
             <el-select
               v-model="tagValues"
               multiple
@@ -113,7 +113,7 @@
             <el-date-picker
               size="mini"
               v-model="searchTime"
-              @change="searchingBtn"
+              @change="changeTime"
               type="datetimerange"
               start-placeholder="寮�濮嬫棩鏈�"
               end-placeholder="缁撴潫鏃ユ湡"
@@ -644,6 +644,9 @@
       ];
     },
     format(array) {
+      if (array.length === 0) {
+        return [];
+      }
       return [
         this.$moment(array[0]).format("YYYY-MM-DD HH:mm:ss"),
         this.$moment(array[1]).format("YYYY-MM-DD HH:mm:ss"),
@@ -777,6 +780,13 @@
 
       this.setLoadSearch(this.VideoPhotoData.querySearchList());
     },
+    changeTime(val) {
+      if (!val) {
+        this.searchTime = [];
+      }
+
+      this.searchingBtn();
+    },
   },
 };
 </script>
diff --git a/src/pages/settings/asset/common.scss b/src/pages/settings/asset/common.scss
index e8189f0..9a3ba41 100644
--- a/src/pages/settings/asset/common.scss
+++ b/src/pages/settings/asset/common.scss
@@ -1,6 +1,6 @@
 .form-item {
   margin: 0 auto;
-  width: 456px;
+ // width: 456px;
   height: 48px;
   margin-bottom: 4px;
   background-color: #f2f2f7;
@@ -104,7 +104,7 @@
 
 .form-data {
   margin-top: 16px;
-  width: 456px;
+ // width: 456px;
   margin: 0 auto;
 }
 
diff --git a/src/pages/settings/components/AuthorizationManagement.vue b/src/pages/settings/components/AuthorizationManagement.vue
index 82bf597..275270b 100644
--- a/src/pages/settings/components/AuthorizationManagement.vue
+++ b/src/pages/settings/components/AuthorizationManagement.vue
@@ -77,7 +77,7 @@
   position: relative;
 
   .content {
-    width: 456px;
+    // width: 456px;
     margin: 0 auto;
   }
 
diff --git a/src/pages/settings/components/AuthorizationSetting.vue b/src/pages/settings/components/AuthorizationSetting.vue
index 4161551..c421140 100644
--- a/src/pages/settings/components/AuthorizationSetting.vue
+++ b/src/pages/settings/components/AuthorizationSetting.vue
@@ -121,7 +121,7 @@
   position: relative;
 
   .content {
-    width: 456px;
+    //  width: 456px;
     margin: 0 auto;
   }
 
diff --git a/src/pages/settings/components/LoraGateway.vue b/src/pages/settings/components/LoraGateway.vue
index cfce9b1..3154749 100644
--- a/src/pages/settings/components/LoraGateway.vue
+++ b/src/pages/settings/components/LoraGateway.vue
@@ -38,24 +38,28 @@
         </div>
       </el-form-item>
 
-      <div class="block">
+      <div class="block flexBlock">
         <el-form-item class="form-item channel-sele">
           <div class="item-title">棰戦亾</div>
-          <el-select
-            v-model="loraForm.channel"
-            placeholder="璇烽�夋嫨"
-            size="small"
-            :popper-append-to-body="false"
-          >
-            <el-option
-              v-for="item in channel_option"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            ></el-option>
-          </el-select>
-          <div class="channel">
-            褰撳墠杩炴帴閫氶亾锛�<span class="channelCount">{{ channelCount }}</span>
+
+          <div class="right">
+            <el-select
+              v-model="loraForm.channel"
+              placeholder="璇烽�夋嫨"
+              size="small"
+              :popper-append-to-body="false"
+              style="width: 173px"
+            >
+              <el-option
+                v-for="item in channel_option"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+            <div class="channel">
+              褰撳墠杩炴帴閫氶亾锛�<span class="channelCount">{{ channelCount }}</span>
+            </div>
           </div>
         </el-form-item>
 
@@ -153,8 +157,17 @@
 .lora-gateway {
   display: flex;
   flex-direction: column;
+
   .block {
     margin-top: 16px;
+
+    .el-form-item__content {
+      justify-content: space-between;
+
+      .right {
+        display: flex;
+      }
+    }
   }
   .channel-sele {
     .el-select {
@@ -162,5 +175,20 @@
       margin-left: 88px;
     }
   }
+
+  .el-radio-group {
+    text-align: right;
+  }
+
+  .el-form-item ::v-deep .el-form-item__content::before {
+    display: none;
+  }
+
+  .el-form-item ::v-deep .el-form-item__content::after {
+    display: none;
+  }
 }
+</style>
+
+<style>
 </style>
\ No newline at end of file
diff --git a/src/pages/settings/components/UnbindBox.vue b/src/pages/settings/components/UnbindBox.vue
index 30d4f57..8491119 100644
--- a/src/pages/settings/components/UnbindBox.vue
+++ b/src/pages/settings/components/UnbindBox.vue
@@ -39,9 +39,8 @@
 <style lang="scss" scoped>
 .UnbindBox {
   position: fixed;
-  top: 50%;
+  top: 120px;
   left: 50%;
-  margin-top: -166px;
   margin-left: -210px;
   width: 420px;
   height: 332px;
diff --git a/src/pages/settings/components/WifiGateway.vue b/src/pages/settings/components/WifiGateway.vue
index b3dfbad..e68fa7d 100644
--- a/src/pages/settings/components/WifiGateway.vue
+++ b/src/pages/settings/components/WifiGateway.vue
@@ -247,7 +247,7 @@
   margin: 0 auto;
   padding-left: 20px;
   height: 56px;
-  width: 450px;
+  // width: 450px;
   line-height: 56px;
   font-weight: bold;
   font-size: 14px;
diff --git a/src/pages/settings/index/index.vue b/src/pages/settings/index/index.vue
index 138bd99..2f0e257 100644
--- a/src/pages/settings/index/index.vue
+++ b/src/pages/settings/index/index.vue
@@ -31,7 +31,11 @@
             @click="openAccount(item, index)"
           >
             <div class="touxiang">
-              <img v-if="item.headpic" :src="`data:image/png;base64,${item.headpic}`" alt="" />
+              <img
+                v-if="item.headpic"
+                :src="`data:image/png;base64,${item.headpic}`"
+                alt=""
+              />
               <span class="user-name">{{ item.username }}</span>
             </div>
             <div class="login-tag" v-if="item.id == curUserID">
@@ -40,7 +44,11 @@
           </div>
         </div>
         <div class="add-account" v-if="curUserRole != '鏅�氱敤鎴�'">
-          <i class="el-icon-circle-plus" style="font-size: 40px" @click="openAdd"></i>
+          <i
+            class="el-icon-circle-plus"
+            style="font-size: 40px"
+            @click="openAdd"
+          ></i>
         </div>
       </div>
     </div>
@@ -50,21 +58,34 @@
       :class="activeIndex == 0 ? 'container-right-for-account' : ''"
     >
       <div class="account-right" v-if="activeIndex == 0">
-        <div class="account-content" v-if="inAccountDetail == false && isAddAccount == false">
+        <div
+          class="account-content"
+          v-if="inAccountDetail == false && isAddAccount == false"
+        >
           <div class="content-top">
-            <div class="touxiang-big" @mouseenter="showChangePic = true" @mouseleave="showChangePic = false">
+            <div
+              class="touxiang-big"
+              @mouseenter="showChangePic = true"
+              @mouseleave="showChangePic = false"
+            >
               <img
                 v-if="activeAccountItem.headpic"
                 :src="`data:image/png;base64,${activeAccountItem.headpic}`"
                 alt=""
               />
               <div class="touxiang-mask" v-show="showChangePic">
-                <span class="enable" v-if="!showJPGArr" @click="editHeadPic">缂栬緫澶村儚</span>
+                <span class="enable" v-if="!showJPGArr" @click="editHeadPic"
+                  >缂栬緫澶村儚</span
+                >
               </div>
             </div>
             <div class="user-desc">
               <div class="user-name">
-                <span class="icon iconfont" style="font-size: 19px; margin-right: 4px">&#xe737;</span>
+                <span
+                  class="icon iconfont"
+                  style="font-size: 19px; margin-right: 4px"
+                  >&#xe737;</span
+                >
                 <span>{{ activeAccountItem.username }}</span>
               </div>
               <div class="user-role">
@@ -72,13 +93,30 @@
               </div>
               <div class="nick-name">
                 <span class="nick-text">鏄电О锛�</span>
-                <span v-show="!showInputNickName">{{ activeAccountItem.nickname }}</span>
-                <el-input size="mini" v-model="inputNickName" v-if="showInputNickName"></el-input>
-                <span v-show="!showInputNickName" class="icon iconfont edit-icon" @click="editNickName">&#xe60c;</span>
-                <span v-show="showInputNickName" class="icon iconfont clear-icon" @click="showInputNickName = false"
+                <span v-show="!showInputNickName">{{
+                  activeAccountItem.nickname
+                }}</span>
+                <el-input
+                  size="mini"
+                  v-model="inputNickName"
+                  v-if="showInputNickName"
+                ></el-input>
+                <span
+                  v-show="!showInputNickName"
+                  class="icon iconfont edit-icon"
+                  @click="editNickName"
+                  >&#xe60c;</span
+                >
+                <span
+                  v-show="showInputNickName"
+                  class="icon iconfont clear-icon"
+                  @click="showInputNickName = false"
                   >&#xe785;</span
                 >
-                <span v-show="showInputNickName" class="icon iconfont confirm-icon" @click="hideInputNick"
+                <span
+                  v-show="showInputNickName"
+                  class="icon iconfont confirm-icon"
+                  @click="hideInputNick"
                   >&#xe72e;</span
                 >
               </div>
@@ -93,7 +131,12 @@
                 :key="index"
                 @click="pickHeadDefPic(item, index)"
               >
-                <img v-if="item" :src="`data:image/png;base64,${item.path}`" alt="" srcset="" />
+                <img
+                  v-if="item"
+                  :src="`data:image/png;base64,${item.path}`"
+                  alt=""
+                  srcset=""
+                />
                 <div class="img-mask" v-if="selectedPic == index">
                   <span class="icon iconfont enable">&#xe62a;</span>
                 </div>
@@ -108,10 +151,18 @@
             <div class="item-btn alt-pw-btn" @click="showChangePassword">
               淇敼瀵嗙爜
             </div>
-            <div class="item-btn del-usr-btn" v-if="isShowDeleteAccount" @click="deleteAccount">
+            <div
+              class="item-btn del-usr-btn"
+              v-if="isShowDeleteAccount"
+              @click="deleteAccount"
+            >
               鍒犻櫎璐︽埛
             </div>
-            <div v-if="isShowPermitBtn" class="item-btn auth-set-btn" @click="openPermission">
+            <div
+              v-if="isShowPermitBtn"
+              class="item-btn auth-set-btn"
+              @click="openPermission"
+            >
               鏉冮檺璁剧疆
             </div>
           </div>
@@ -122,19 +173,39 @@
             <span class="icon iconfont">&#xe738;</span>
             <span>淇敼瀵嗙爜</span>
           </div>
-          <el-form :model="passwordForm" :rules="pwRules" ref="passwordForm" class="password-form">
-            <el-form-item prop="curPassword" v-if="activeAccountItem.id == curUserID">
+          <el-form
+            :model="passwordForm"
+            :rules="pwRules"
+            ref="passwordForm"
+            class="password-form"
+          >
+            <el-form-item
+              prop="curPassword"
+              v-if="activeAccountItem.id == curUserID"
+            >
               <div class="p-title">褰撳墠瀵嗙爜</div>
 
-              <el-input placeholder="蹇呭~" v-model="passwordForm.curPassword" show-password></el-input>
+              <el-input
+                placeholder="蹇呭~"
+                v-model="passwordForm.curPassword"
+                show-password
+              ></el-input>
             </el-form-item>
             <el-form-item prop="newPassword">
               <div class="p-title">鏂板瘑鐮�</div>
-              <el-input placeholder="蹇呭~" v-model="passwordForm.newPassword" show-password></el-input>
+              <el-input
+                placeholder="蹇呭~"
+                v-model="passwordForm.newPassword"
+                show-password
+              ></el-input>
             </el-form-item>
             <el-form-item prop="confirmPassword">
               <div class="p-title">纭瀵嗙爜</div>
-              <el-input placeholder="蹇呭~" v-model="passwordForm.confirmPassword" show-password></el-input>
+              <el-input
+                placeholder="蹇呭~"
+                v-model="passwordForm.confirmPassword"
+                show-password
+              ></el-input>
             </el-form-item>
           </el-form>
           <div class="btns">
@@ -173,35 +244,68 @@
               :key="index"
               @click="pickHeadDefPic(item, index)"
             >
-              <img v-if="item" :src="`data:image/png;base64,${item.path}`" alt="" srcset="" />
+              <img
+                v-if="item"
+                :src="`data:image/png;base64,${item.path}`"
+                alt=""
+                srcset=""
+              />
               <div class="img-mask" v-if="selectedPic == index">
                 <span class="icon iconfont enable">&#xe62a;</span>
               </div>
             </div>
           </div>
           <div class="fill-group">
-            <el-form :model="addForm" :rules="addRules" ref="addForm" class="add-form">
+            <el-form
+              :model="addForm"
+              :rules="addRules"
+              ref="addForm"
+              class="add-form"
+            >
               <el-form-item prop="userName">
                 <div class="p-title">鐢ㄦ埛鍚�</div>
-                <el-input placeholder="2~10 浣嶅瓧绗︼紝涓嶈兘浠ユ暟瀛楀紑澶达紝涓嶅彲鍖呭惈姹夊瓧" v-model="addForm.userName"></el-input>
+                <el-input
+                  placeholder="2~10 浣嶅瓧绗︼紝涓嶈兘浠ユ暟瀛楀紑澶达紝涓嶅彲鍖呭惈姹夊瓧"
+                  v-model="addForm.userName"
+                ></el-input>
               </el-form-item>
               <el-form-item prop="roleId" v-if="curUserRole != '鏅�氱敤鎴�'">
                 <div class="p-title">瑙掕壊</div>
-                <el-select v-model="addForm.roleId" placeholder="璇烽�夋嫨瑙掕壊" :popper-append-to-body="false">
-                  <el-option v-for="(item, i) in roleList" :key="i" :label="item.name" :value="item.id"></el-option>
+                <el-select
+                  v-model="addForm.roleId"
+                  placeholder="璇烽�夋嫨瑙掕壊"
+                  :popper-append-to-body="false"
+                >
+                  <el-option
+                    v-for="(item, i) in roleList"
+                    :key="i"
+                    :label="item.name"
+                    :value="item.id"
+                  ></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item prop="nickName">
                 <div class="p-title">鏄电О</div>
-                <el-input placeholder="閫夊~锛�2~10 浣嶅瓧绗�" v-model="addForm.nickName"></el-input>
+                <el-input
+                  placeholder="閫夊~锛�2~10 浣嶅瓧绗�"
+                  v-model="addForm.nickName"
+                ></el-input>
               </el-form-item>
               <el-form-item prop="password">
                 <div class="p-title">瀵嗙爜</div>
-                <el-input placeholder="蹇呭~锛岃嚦灏戜负 6 浣�" v-model="addForm.password" show-password></el-input>
+                <el-input
+                  placeholder="蹇呭~锛岃嚦灏戜负 6 浣�"
+                  v-model="addForm.password"
+                  show-password
+                ></el-input>
               </el-form-item>
               <el-form-item prop="confirmPassword">
                 <div class="p-title">纭瀵嗙爜</div>
-                <el-input placeholder="蹇呭~" v-model="addForm.confirmPassword" show-password></el-input>
+                <el-input
+                  placeholder="蹇呭~"
+                  v-model="addForm.confirmPassword"
+                  show-password
+                ></el-input>
               </el-form-item>
             </el-form>
           </div>
@@ -228,10 +332,18 @@
 
           <div class="adjust-zone">
             <div class="two-radio">
-              <div class="radio" :class="isNtp ? '' : 'highlight-radio'" @click="isNtp = false">
+              <div
+                class="radio"
+                :class="isNtp ? '' : 'highlight-radio'"
+                @click="isNtp = false"
+              >
                 鎵嬪姩鏍℃椂
               </div>
-              <div class="radio" :class="isNtp ? 'highlight-radio' : ''" @click="isNtp = true">
+              <div
+                class="radio"
+                :class="isNtp ? 'highlight-radio' : ''"
+                @click="isNtp = true"
+              >
                 NTP鏍℃椂
               </div>
             </div>
@@ -254,8 +366,14 @@
                       />
                     </div>
                     <div class="control">
-                      <span class="icon iconfont" @click="plusOne('hrs')">&#xe60e;</span>
-                      <span class="icon iconfont fanzhuan" @click="minusOne('hrs')">&#xe60e;</span>
+                      <span class="icon iconfont" @click="plusOne('hrs')"
+                        >&#xe60e;</span
+                      >
+                      <span
+                        class="icon iconfont fanzhuan"
+                        @click="minusOne('hrs')"
+                        >&#xe60e;</span
+                      >
                     </div>
                   </div>
                   <div class="sep">:</div>
@@ -274,8 +392,14 @@
                       />
                     </div>
                     <div class="control">
-                      <span class="icon iconfont" @click="plusOne('min')">&#xe60e;</span>
-                      <span class="icon iconfont fanzhuan" @click="minusOne('min')">&#xe60e;</span>
+                      <span class="icon iconfont" @click="plusOne('min')"
+                        >&#xe60e;</span
+                      >
+                      <span
+                        class="icon iconfont fanzhuan"
+                        @click="minusOne('min')"
+                        >&#xe60e;</span
+                      >
                     </div>
                   </div>
                   <div class="sep">:</div>
@@ -294,8 +418,14 @@
                       />
                     </div>
                     <div class="control">
-                      <span class="icon iconfont" @click="plusOne('sec')">&#xe60e;</span>
-                      <span class="icon iconfont fanzhuan" @click="minusOne('sec')">&#xe60e;</span>
+                      <span class="icon iconfont" @click="plusOne('sec')"
+                        >&#xe60e;</span
+                      >
+                      <span
+                        class="icon iconfont fanzhuan"
+                        @click="minusOne('sec')"
+                        >&#xe60e;</span
+                      >
                     </div>
                   </div>
                 </div>
@@ -372,14 +502,21 @@
               </div>
 
               <div class="manual-time">
-                <switchBar :barName="`鍚屾鏈绠楁満鏃堕棿`" @switchChange="syncBrowser" :value="isSyncBrowser"></switchBar>
+                <switchBar
+                  :barName="`鍚屾鏈绠楁満鏃堕棿`"
+                  @switchChange="syncBrowser"
+                  :value="isSyncBrowser"
+                ></switchBar>
               </div>
             </div>
 
             <div class="ntp-wrap" v-if="isNtp">
               <el-form>
                 <el-form-item label="鏈嶅姟鍣ㄥ湴鍧�">
-                  <ipInput :ip="ntpServer" @on-blur="ntpServer = arguments[0]"></ipInput>
+                  <ipInput
+                    :ip="ntpServer"
+                    @on-blur="ntpServer = arguments[0]"
+                  ></ipInput>
                 </el-form-item>
 
                 <el-form-item label="鏍℃椂鏃堕棿闂撮殧">
@@ -394,7 +531,12 @@
                     ></el-input-number>
 
                     <span class="desc-min">鍒嗛挓</span>
-                    <el-button type="text" @click="testNTP" :loading="ntpTestLoading">娴嬭瘯</el-button>
+                    <el-button
+                      type="text"
+                      @click="testNTP"
+                      :loading="ntpTestLoading"
+                      >娴嬭瘯</el-button
+                    >
                   </div>
                 </el-form-item>
               </el-form>
@@ -409,15 +551,40 @@
       </div>
     </div>
 
-    <clusterManagement v-if="activeIndex == 2" ref="view_2" style="width: 100%"></clusterManagement>
-    <netSettings ref="view_3" v-if="activeIndex == 3" style="width: 100%"></netSettings>
-    <keyboardLanguage ref="view_4" v-if="activeIndex == 4" style="width: 100%"></keyboardLanguage>
-    <generalSettings ref="view_5" v-if="activeIndex == 5" style="width: 100%"></generalSettings>
-    <deviceInfo v-if="activeIndex == 6" style="width: 100%" ref="view_6"></deviceInfo>
-    <Authorization v-if="activeIndex == 7" style="width: 100%" ref="view_7"> </Authorization>
+    <clusterManagement
+      v-if="activeIndex == 2"
+      ref="view_2"
+      style="width: 100%"
+    ></clusterManagement>
+    <netSettings
+      ref="view_3"
+      v-if="activeIndex == 3"
+      style="width: 100%"
+    ></netSettings>
+    <keyboardLanguage
+      ref="view_4"
+      v-if="activeIndex == 4"
+      style="width: 100%"
+    ></keyboardLanguage>
+    <generalSettings
+      ref="view_5"
+      v-if="activeIndex == 5"
+      style="width: 100%"
+    ></generalSettings>
+    <deviceInfo
+      v-if="activeIndex == 6"
+      style="width: 100%"
+      ref="view_6"
+    ></deviceInfo>
+    <Authorization v-if="activeIndex == 7" style="width: 100%" ref="view_7">
+    </Authorization>
   </div>
   <div class="welcome-page" v-else ref="curPage" @mouseup="mouseDownIndex = ''">
-    <div class="search-box" :class="showRecomand ? 'border-change' : ''" @click.stop>
+    <div
+      class="search-box"
+      :class="showRecomand ? 'border-change' : ''"
+      @click.stop
+    >
       <el-input
         class="search-input"
         placeholder="鏌ユ壘璁剧疆"
@@ -430,10 +597,17 @@
       </el-input>
 
       <div class="search-res" v-if="showRecomand">
-        <div class="res-bar" v-for="(item, index) in searchArrForShow" :key="index" @click="pickQuick(item.addr)">
+        <div
+          class="res-bar"
+          v-for="(item, index) in searchArrForShow"
+          :key="index"
+          @click="pickQuick(item.addr)"
+        >
           {{ item.name }}
         </div>
-        <div class="no-res-bar" v-if="searchArrForShow.length == 0">娌℃湁鎵惧埌涓� {{ searchText }} 鐩稿叧鐨勭粨鏋�</div>
+        <div class="no-res-bar" v-if="searchArrForShow.length == 0">
+          娌℃湁鎵惧埌涓� {{ searchText }} 鐩稿叧鐨勭粨鏋�
+        </div>
       </div>
       <div class="dummy-end" v-if="showRecomand" style="height: 14px"></div>
     </div>
@@ -456,7 +630,7 @@
 </template>
 
 <script>
-import { getClockInfo, saveClockInfo, testNTPserver } from "@/api/system"
+import { getClockInfo, saveClockInfo, testNTPserver } from "@/api/system";
 import {
   addUser,
   getUsers,
@@ -466,17 +640,17 @@
   deleteUser,
   getUserMenus,
   defHeadPics,
-  getRoles
-} from "@/api/user"
-import switchBar from "../components/switchBar"
-import ipInput from "../components/IPInput"
-import clusterManagement from "../views/clusterManagement"
-import netSettings from "../views/NetSettings"
-import deviceInfo from "../views/deviceInfo"
-import keyboardLanguage from "../views/keyboardLanguage"
-import generalSettings from "../views/generalSettings"
-import Authorization from "../views/Authorization"
-import { pad0, getUrlKey } from "@/api/utils"
+  getRoles,
+} from "@/api/user";
+import switchBar from "../components/switchBar";
+import ipInput from "../components/IPInput";
+import clusterManagement from "../views/clusterManagement";
+import netSettings from "../views/NetSettings";
+import deviceInfo from "../views/deviceInfo";
+import keyboardLanguage from "../views/keyboardLanguage";
+import generalSettings from "../views/generalSettings";
+import Authorization from "../views/Authorization";
+import { pad0, getUrlKey } from "@/api/utils";
 
 export default {
   name: "settings",
@@ -488,41 +662,41 @@
     keyboardLanguage,
     generalSettings,
     deviceInfo,
-    Authorization
+    Authorization,
   },
   data() {
     var v2 = (rule, value, callback) => {
       if (value === "") {
-        callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"))
+        callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"));
       } else if (value !== this.addForm.password) {
-        callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"))
+        callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     var v4 = (rule, value, callback) => {
       if (value === "") {
-        callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"))
+        callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�"));
       } else if (value !== this.passwordForm.newPassword) {
-        callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"))
+        callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     const v1 = (rule, value, callback) => {
       if (value.trim() === "") {
-        callback(new Error("璇疯緭鍏ョ敤鎴峰悕"))
-        this.addForm.userName = ""
+        callback(new Error("璇疯緭鍏ョ敤鎴峰悕"));
+        this.addForm.userName = "";
       } else if (isNaN(Number(value[0])) == false) {
-        callback(new Error("涓嶈兘浠ユ暟瀛楀紑澶�"))
+        callback(new Error("涓嶈兘浠ユ暟瀛楀紑澶�"));
       } else if (/[\u4E00-\u9FA5]/g.test(value)) {
-        callback(new Error("涓嶈兘杈撳叆姹夊瓧"))
+        callback(new Error("涓嶈兘杈撳叆姹夊瓧"));
       } else if (value.length < 2 || value.length > 10) {
-        callback(new Error("闀垮害涓� 2 - 10 涓瓧绗�"))
+        callback(new Error("闀垮害涓� 2 - 10 涓瓧绗�"));
       } else {
-        callback()
+        callback();
       }
-    }
+    };
     return {
       showChangePic: false,
       syncYrs: "",
@@ -556,7 +730,7 @@
         { name: "鎵嬪姩鏍℃椂", addr: [1, 1] },
         { name: "閿洏鍜岃瑷�", addr: [4] },
         { name: "绯荤粺璇█", addr: [4, 0] },
-        { name: "閿洏绠$悊", addr: [4, 1] }
+        { name: "閿洏绠$悊", addr: [4, 1] },
       ],
       inputNickName: "",
       showHourInput: false,
@@ -585,57 +759,57 @@
           icon: "\ue6de",
           imgUrl: "/images/settings/璐︽埛-钃�.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/璐︽埛.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/璐︽埛.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/璐︽埛.png",
         },
         {
           name: "鏃ユ湡鏃堕棿",
           icon: "\ue6ff",
           imgUrl: "/images/settings/鏃堕棿鏃ユ湡.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/鏃堕棿淇℃伅.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/鏃堕棿鏃ユ湡.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/鏃堕棿鏃ユ湡.png",
         },
         {
           name: "闆嗙兢绠$悊",
           icon: "\ue6df",
           imgUrl: "/images/settings/闆嗙兢绠$悊.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/闆嗙兢绠$悊.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/闆嗙兢绠$悊.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/闆嗙兢绠$悊.png",
         },
         {
           name: "缃戠粶璁剧疆",
           icon: "\ue6dd",
           imgUrl: "/images/settings/缃戠粶璁剧疆.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/缃戠粶璁剧疆.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/缃戠粶璁剧疆.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/缃戠粶璁剧疆.png",
         },
         {
           name: "閿洏鍜岃瑷�",
           icon: "\ue6dc",
           imgUrl: "/images/settings/閿洏鍜岃瑷�.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/閿洏鍜岃瑷�.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/閿洏鍜岃瑷�.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/閿洏鍜岃瑷�.png",
         },
         {
           name: "閫氱敤璁剧疆",
           icon: "\ue6db",
           imgUrl: "/images/settings/閫氱敤璁剧疆.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/閫氱敤璁剧疆.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/閫氱敤璁剧疆.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/閫氱敤璁剧疆.png",
         },
         {
           name: "璁惧淇℃伅",
           icon: "\ue756",
           imgUrl: "/images/settings/璁惧淇℃伅.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/璁惧淇℃伅.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/璁惧淇℃伅.png"
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/璁惧淇℃伅.png",
         },
         {
           name: "鎺堟潈绠$悊",
           icon: "\ue7e9;",
           imgUrl: "/images/settings/鎺堟潈绠$悊.png",
           blackIcon: "/images/settings/榛戣壊涓�绾con/鎺堟潈绠$悊.png",
-          whiteIcon: "/images/settings/鐧借壊涓�绾con/鎺堟潈绠$悊.png"
-        }
+          whiteIcon: "/images/settings/鐧借壊涓�绾con/鎺堟潈绠$悊.png",
+        },
       ],
       accountArr: [],
       jpgArr: [],
@@ -653,7 +827,7 @@
       passwordForm: {
         curPassword: "",
         newPassword: "",
-        confirmPassword: ""
+        confirmPassword: "",
       },
       activeAccountIndex: 0,
       sysMenus: [],
@@ -664,482 +838,489 @@
         password: "",
         headpic: "",
         confirmPassword: "",
-        roleId: ""
+        roleId: "",
       },
       props: {
-        label: "name"
+        label: "name",
       },
       addRules: {
         userName: [{ validator: v1, trigger: "blur" }],
-        nickName: [{ min: 2, max: 10, message: "闀垮害涓� 2 - 10 浣�", trigger: "blur" }],
+        nickName: [
+          { min: 2, max: 10, message: "闀垮害涓� 2 - 10 浣�", trigger: "blur" },
+        ],
         password: [
           { required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" },
-          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" }
+          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" },
         ],
-        confirmPassword: [{ validator: v2, trigger: "blur" }]
+        confirmPassword: [{ validator: v2, trigger: "blur" }],
       },
       pwRules: {
         curPassword: [
           { required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" },
-          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" }
+          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" },
         ],
         newPassword: [
           { required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" },
-          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" }
+          { min: 6, message: "闀垮害鑷冲皯涓� 6 浣�", trigger: "blur" },
         ],
-        confirmPassword: [{ validator: v4, trigger: "blur" }]
+        confirmPassword: [{ validator: v4, trigger: "blur" }],
       },
-      account_list_scroll: false
-    }
+      account_list_scroll: false,
+    };
   },
   created() {
-    let color = localStorage.getItem("--colorCard")
+    let color = localStorage.getItem("--colorCard");
     if (color) {
-      document.documentElement.style.setProperty("--colorCard", `${color}`)
+      document.documentElement.style.setProperty("--colorCard", `${color}`);
     }
   },
   beforeDestroy() {
-    clearTimeout(this.clockTimer)
-    clearInterval(this.browserTimer)
+    clearTimeout(this.clockTimer);
+    clearInterval(this.browserTimer);
   },
   mounted() {
     // 杩斿洖鎸夐挳鍥炶皟
     window.addEventListener("message", (e) => {
       if (e.data.msg === "杩斿洖绯荤粺璁剧疆") {
-        this.showWelcome = true
+        this.showWelcome = true;
       }
-    })
-    const menu = getUrlKey("menu")
+    });
+    const menu = getUrlKey("menu");
     if (menu) {
-      this.showWelcome = false
-      this.activeIndex = this.menuArr.findIndex((x) => x.name == menu)
+      this.showWelcome = false;
+      this.activeIndex = this.menuArr.findIndex((x) => x.name == menu);
       this.$nextTick(() => {
-        this.$refs.view_3.openRight(2)
-      })
+        this.$refs.view_3.openRight(2);
+      });
     }
-    this.fetchUserList()
-    this.fetchDefHeadPic()
-    const e = this.$refs.curPage
+    this.fetchUserList();
+    this.fetchDefHeadPic();
+    const e = this.$refs.curPage;
     if (e) {
       e.addEventListener("click", () => {
         if (this.showRecomand) {
-          this.showRecomand = false
+          this.showRecomand = false;
         }
-      })
+      });
     }
   },
   methods: {
     fetchDefHeadPic() {
       defHeadPics().then((res) => {
-        this.jpgArr = res.data
-      })
+        this.jpgArr = res.data;
+      });
     },
     fetchUserList(showLast = false) {
       getUsers().then((res) => {
-        this.accountArr = res.data
+        this.accountArr = res.data;
         if (this.accountArr.length) {
-          this.activeAccountItem = this.accountArr[this.activeAccountIndex]
+          this.activeAccountItem = this.accountArr[this.activeAccountIndex];
         }
         if (showLast) {
-          this.cancelAdd()
-          const lastIdx = this.accountArr.length - 1
-          this.openAccount(this.accountArr[lastIdx], lastIdx)
+          this.cancelAdd();
+          const lastIdx = this.accountArr.length - 1;
+          this.openAccount(this.accountArr[lastIdx], lastIdx);
         }
-      })
+      });
     },
     confirmChangePic() {
       updateUser({
         id: this.activeAccountItem.id,
-        headpic: this.addForm.headpic
+        headpic: this.addForm.headpic,
       }).then((res) => {
         if (res.success) {
-          this.$message.success(res.msg)
-          this.fetchUserList()
-          this.cacelChoosePic()
+          this.$message.success(res.msg);
+          this.fetchUserList();
+          this.cacelChoosePic();
         }
-      })
+      });
     },
     checkMonthInput() {
-      this.inputMonth = this.inputMonth.replace(/[^\d]/g, "")
-      if (this.inputMonth.length > 2) this.inputMonth = this.inputMonth.slice(0, 2)
+      this.inputMonth = this.inputMonth.replace(/[^\d]/g, "");
+      if (this.inputMonth.length > 2)
+        this.inputMonth = this.inputMonth.slice(0, 2);
       if (+this.inputMonth > 12) {
-        this.inputMonth = "12"
+        this.inputMonth = "12";
       }
     },
     checkDayInput() {
-      this.inputDay = this.inputDay.replace(/[^\d]/g, "")
+      this.inputDay = this.inputDay.replace(/[^\d]/g, "");
       if (this.inputDay.length > 2) {
-        this.inputDay = this.inputDay.slice(0, 2)
+        this.inputDay = this.inputDay.slice(0, 2);
       }
-      const max = this.getMaxDayOfMonth()
+      const max = this.getMaxDayOfMonth();
       if (+this.inputDay > max) {
-        this.inputDay = max + ""
+        this.inputDay = max + "";
       }
     },
     editNickName() {
-      this.showInputNickName = true
-      this.inputNickName = this.activeAccountItem.nickname
+      this.showInputNickName = true;
+      this.inputNickName = this.activeAccountItem.nickname;
     },
     hideInputNick() {
       if (this.inputNickName == this.activeAccountItem.nickname) {
-        this.showInputNickName = false
-        return
+        this.showInputNickName = false;
+        return;
       }
       updateUser({
         id: this.activeAccountItem.id,
-        nickname: this.inputNickName
+        nickname: this.inputNickName,
       }).then((res) => {
-        this.activeAccountItem.nickname = this.inputNickName
-        this.$message.success(res.msg)
-        this.fetchUserList(true)
-        this.showInputNickName = false
-      })
+        this.activeAccountItem.nickname = this.inputNickName;
+        this.$message.success(res.msg);
+        this.fetchUserList(true);
+        this.showInputNickName = false;
+      });
     },
     openAccount(item, i) {
-      this.showInputNickName = false
-      this.activeAccountItem = item
-      this.activeAccountIndex = i
-      this.isChangePw = false
-      this.inAccountDetail = false
-      this.cancelSet()
-      this.inAccountDetail = false
-      this.isAddAccount = false
-      this.selectedPic = null
-      this.cacelChoosePic()
-      this.fetchMenu()
+      this.showInputNickName = false;
+      this.activeAccountItem = item;
+      this.activeAccountIndex = i;
+      this.isChangePw = false;
+      this.inAccountDetail = false;
+      this.cancelSet();
+      this.inAccountDetail = false;
+      this.isAddAccount = false;
+      this.selectedPic = null;
+      this.cacelChoosePic();
+      this.fetchMenu();
     },
     minusOne(typ) {
-      this.isSyncBrowser = false
-      this.syncBrowser(false)
-      let num
+      this.isSyncBrowser = false;
+      this.syncBrowser(false);
+      let num;
       switch (typ) {
         case "hrs":
-          num = +this.syncHour - 1
+          num = +this.syncHour - 1;
           if (num == -1) {
-            num = 23
+            num = 23;
           }
-          this.syncHour = pad0(+num)
-          break
+          this.syncHour = pad0(+num);
+          break;
         case "min":
-          num = +this.syncMin - 1
+          num = +this.syncMin - 1;
           if (num == -1) {
-            num = 59
+            num = 59;
           }
-          this.syncMin = pad0(+num)
-          break
+          this.syncMin = pad0(+num);
+          break;
         case "sec":
-          num = +this.syncSec + 1
+          num = +this.syncSec + 1;
           if (num == -1) {
-            num = 59
+            num = 59;
           }
-          this.syncSec = pad0(+num)
-          break
+          this.syncSec = pad0(+num);
+          break;
         case "yrs":
-          num = +this.syncYrs - 1
-          this.syncYrs = pad0(+num)
-          break
+          num = +this.syncYrs - 1;
+          this.syncYrs = pad0(+num);
+          break;
         case "mth":
-          num = +this.syncMonth - 1
+          num = +this.syncMonth - 1;
           if (num == 0) {
-            num = 12
-            this.minusOne("yrs")
+            num = 12;
+            this.minusOne("yrs");
           }
-          this.syncMonth = pad0(+num)
+          this.syncMonth = pad0(+num);
           if (+this.syncDay > this.getMaxDayOfMonth()) {
-            this.minusOne("day")
+            this.minusOne("day");
           }
-          break
+          break;
         case "day":
-          num = +this.syncDay - 1
+          num = +this.syncDay - 1;
           if (num == 0) {
-            num = this.getMaxDayOfMonth()
+            num = this.getMaxDayOfMonth();
           }
-          this.syncDay = pad0(+num)
-          break
+          this.syncDay = pad0(+num);
+          break;
         default:
-          break
+          break;
       }
     },
     getMaxDayOfMonth() {
-      return new Date(+this.syncYrs, +this.syncMonth, 0).getDate()
+      return new Date(+this.syncYrs, +this.syncMonth, 0).getDate();
     },
     fatherChange(item) {
       item.children.forEach((x) => {
-        x.selected = item.selected
-      })
+        x.selected = item.selected;
+      });
     },
     childrenChange(item) {
-      let SomeOneSelected = item.children.some((x) => x.selected == true)
-      item.selected = SomeOneSelected
+      let SomeOneSelected = item.children.some((x) => x.selected == true);
+      item.selected = SomeOneSelected;
     },
     plusOne(typ) {
-      this.isSyncBrowser = false
-      this.syncBrowser(false)
-      let num
+      this.isSyncBrowser = false;
+      this.syncBrowser(false);
+      let num;
       switch (typ) {
         case "hrs":
-          num = +this.syncHour + 1
+          num = +this.syncHour + 1;
           if (num == 24) {
-            num = 0
+            num = 0;
           }
-          this.syncHour = pad0(+num)
-          break
+          this.syncHour = pad0(+num);
+          break;
         case "min":
-          num = +this.syncMin + 1
+          num = +this.syncMin + 1;
           if (num == 60) {
-            num = 0
+            num = 0;
           }
-          this.syncMin = pad0(+num)
-          break
+          this.syncMin = pad0(+num);
+          break;
         case "sec":
-          num = +this.syncSec + 1
+          num = +this.syncSec + 1;
           if (num == 60) {
-            num = 0
+            num = 0;
           }
-          this.syncSec = pad0(+num)
-          break
+          this.syncSec = pad0(+num);
+          break;
         case "yrs":
-          num = +this.syncYrs + 1
-          this.syncYrs = pad0(+num)
-          break
+          num = +this.syncYrs + 1;
+          this.syncYrs = pad0(+num);
+          break;
         case "mth":
-          num = +this.syncMonth + 1
+          num = +this.syncMonth + 1;
           if (num == 13) {
-            num = 1
+            num = 1;
           }
-          this.syncMonth = pad0(+num)
+          this.syncMonth = pad0(+num);
           if (+this.syncDay > this.getMaxDayOfMonth()) {
-            this.minusOne("day")
+            this.minusOne("day");
           }
-          break
+          break;
         case "day":
-          num = +this.syncDay + 1
+          num = +this.syncDay + 1;
           if (num > this.getMaxDayOfMonth()) {
-            num = 1
+            num = 1;
           }
-          this.syncDay = pad0(+num)
-          break
+          this.syncDay = pad0(+num);
+          break;
         default:
-          break
+          break;
       }
     },
     editHeadPic() {
-      this.showJPGArr = true
+      this.showJPGArr = true;
       this.jpgArr.forEach((item, index) => {
         if (this.activeAccountItem.headpic == item.path) {
-          this.selectedPic = index
+          this.selectedPic = index;
         }
-      })
+      });
     },
     submitClock() {
       if (this.isNtp) {
         if (this.ntpServer === "" || this.ntpServer === "...") {
-          this.$notify.error("NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖")
-          return false
+          this.$notify.error("NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖");
+          return false;
         } else if (this.timeInterval === "") {
-          this.timeInterval = 1
+          this.timeInterval = 1;
         }
       } else if (this.isSyncBrowser) {
         if (this.settime === "") {
-          this.$notify.error("璁剧疆鏃堕棿涓嶈兘涓虹┖")
-          return false
+          this.$notify.error("璁剧疆鏃堕棿涓嶈兘涓虹┖");
+          return false;
         }
       } else {
-        this.settime = `${this.syncYrs}-${this.syncMonth}-${this.syncDay} ${this.syncHour}:${this.syncMin}:${this.syncSec}`
+        this.settime = `${this.syncYrs}-${this.syncMonth}-${this.syncDay} ${this.syncHour}:${this.syncMin}:${this.syncSec}`;
       }
 
-      const now = new Date().getTime()
+      const now = new Date().getTime();
       if (new Date(this.settime).getTime() > now) {
-        this.$message.warning("璁剧疆鐨勬椂闂翠笉鑳芥櫄浜庡綋鍓嶆椂闂�: " + this.formatTime(now, "Y-M-D h:m:s"))
-        return
+        this.$message.warning(
+          "璁剧疆鐨勬椂闂翠笉鑳芥櫄浜庡綋鍓嶆椂闂�: " + this.formatTime(now, "Y-M-D h:m:s")
+        );
+        return;
       }
       saveClockInfo({
         timeZone: this.timezone,
         ntp: this.isNtp,
         ntpServer: this.ntpServer,
         interval: this.timeInterval,
-        newTime: this.settime
+        newTime: this.settime,
       }).then(
         (rsp) => {
           if (rsp && rsp.success) {
-            this.$notify.success("璁剧疆鎴愬姛")
+            this.$notify.success("璁剧疆鎴愬姛");
           }
-          this.initClockConf()
+          this.initClockConf();
         },
         (err) => {
-          this.$notify.error("璁剧疆澶辫触 " + err.msg)
+          this.$notify.error("璁剧疆澶辫触 " + err.msg);
         }
-      )
+      );
     },
     saveAuth() {
       updataUser({
         id: this.activeAccountItem.id,
-        menuIds: this.$refs.treeMenus.getCheckedKeys()
+        menuIds: this.$refs.treeMenus.getCheckedKeys(),
       }).then((res) => {
         if (res.success) {
-          this.$message.success(res.msg)
-          this.cancelSet()
+          this.$message.success(res.msg);
+          this.cancelSet();
         }
-      })
+      });
     },
     formatTime(timestamp, format) {
       const formatNumber = (n) => {
-        n = n + ""
-        return n[1] ? n : "0" + n
-      }
-      var formateArr = ["Y", "M", "D", "h", "m", "s"]
-      var returnArr = []
-      var date = new Date(timestamp)
-      returnArr.push(date.getFullYear())
-      returnArr.push(formatNumber(date.getMonth() + 1))
-      returnArr.push(formatNumber(date.getDate()))
-      returnArr.push(formatNumber(date.getHours()))
-      returnArr.push(formatNumber(date.getMinutes()))
-      returnArr.push(formatNumber(date.getSeconds()))
+        n = n + "";
+        return n[1] ? n : "0" + n;
+      };
+      var formateArr = ["Y", "M", "D", "h", "m", "s"];
+      var returnArr = [];
+      var date = new Date(timestamp);
+      returnArr.push(date.getFullYear());
+      returnArr.push(formatNumber(date.getMonth() + 1));
+      returnArr.push(formatNumber(date.getDate()));
+      returnArr.push(formatNumber(date.getHours()));
+      returnArr.push(formatNumber(date.getMinutes()));
+      returnArr.push(formatNumber(date.getSeconds()));
       for (var i in returnArr) {
-        format = format.replace(formateArr[i], returnArr[i])
+        format = format.replace(formateArr[i], returnArr[i]);
       }
-      return format
+      return format;
     },
     initClockConf(ntpTest = false) {
       getClockInfo().then((rsp) => {
         if (rsp && rsp.success) {
-          this.timezone = rsp.data.time_zone
+          this.timezone = rsp.data.time_zone;
           if (!ntpTest) {
-            this.isNtp = rsp.data.ntp
+            this.isNtp = rsp.data.ntp;
           }
           if (rsp.data.ntp) {
-            this.ntpServer = rsp.data.ntp_server
-            this.timeInterval = rsp.data.interval
+            this.ntpServer = rsp.data.ntp_server;
+            this.timeInterval = rsp.data.interval;
           }
-          this.timestamp = rsp.data.local_time
-          this.weekday = "鏄熸湡" + "鏃ヤ竴浜屼笁鍥涗簲鍏�".charAt(new Date(+this.timestamp * 1000).getDay())
+          this.timestamp = rsp.data.local_time;
+          this.weekday =
+            "鏄熸湡" +
+            "鏃ヤ竴浜屼笁鍥涗簲鍏�".charAt(new Date(+this.timestamp * 1000).getDay());
           if (this.clockTimer === null) {
-            this.runClock()
-            if (!this.isNtp) this.parseTime()
+            this.runClock();
+            if (!this.isNtp) this.parseTime();
           }
         }
-      })
+      });
     },
     openMenu(i) {
-      this.activeIndex = i
+      this.activeIndex = i;
       if (this.activeIndex == 1) {
-        this.initClockConf()
+        this.initClockConf();
       }
     },
     openWelcome(i) {
-      this.showWelcome = false
-      this.openMenu(i)
+      this.showWelcome = false;
+      this.openMenu(i);
     },
     showInput(typ) {
-      this[`show${typ}Input`] = true
+      this[`show${typ}Input`] = true;
       this.$nextTick(() => {
-        this.$refs[`ipt${typ}`].focus()
-      })
+        this.$refs[`ipt${typ}`].focus();
+      });
     },
     hideInput(typ) {
       if (this[`input${typ}`]) {
-        this[`sync${typ}`] = pad0(+this[`input${typ}`])
+        this[`sync${typ}`] = pad0(+this[`input${typ}`]);
       }
-      this[`show${typ}Input`] = false
-      this[`input${typ}`] = ""
+      this[`show${typ}Input`] = false;
+      this[`input${typ}`] = "";
       if (typ == "Month") {
-        const max = this.getMaxDayOfMonth()
+        const max = this.getMaxDayOfMonth();
         if (+this.syncDay > max) {
-          this.syncDay = max + ""
+          this.syncDay = max + "";
         }
       }
     },
     cancelSetTime() {
-      this.parseTime()
-      this.ntpServer = "..."
-      this.timeInterval = 10
+      this.parseTime();
+      this.ntpServer = "...";
+      this.timeInterval = 10;
     },
     syncBrowser(enable) {
-      this.isSyncBrowser = enable
+      this.isSyncBrowser = enable;
       if (!enable) {
-        clearInterval(this.browserTimer)
+        clearInterval(this.browserTimer);
       } else {
         this.browserTimer = setInterval(() => {
-          this.settime = this.formatTime(new Date().getTime(), "Y-M-D h:m:s")
-          let [arr1, arr2] = this.settime.split(" ")
-          ;[this.syncYrs, this.syncMonth, this.syncDay] = arr1.split("-")
-          ;[this.syncHour, this.syncMin, this.syncSec] = arr2.split(":")
-        }, 1000)
+          this.settime = this.formatTime(new Date().getTime(), "Y-M-D h:m:s");
+          let [arr1, arr2] = this.settime.split(" ");
+          [this.syncYrs, this.syncMonth, this.syncDay] = arr1.split("-");
+          [this.syncHour, this.syncMin, this.syncSec] = arr2.split(":");
+        }, 1000);
       }
     },
     openAdd() {
-      this.inAccountDetail = false
-      this.isAddAccount = true
-      this.selectedPic = 0
-      this.addForm.headpic = this.jpgArr[0].path
+      this.inAccountDetail = false;
+      this.isAddAccount = true;
+      this.selectedPic = 0;
+      this.addForm.headpic = this.jpgArr[0].path;
       getRoles().then((res) => {
         if (res.success) {
-          this.roleList = res.data
+          this.roleList = res.data;
         }
-      })
+      });
     },
     cancelAdd() {
-      this.inAccountDetail = false
-      this.isAddAccount = false
-      this.$refs["addForm"].resetFields()
-      this.selectedPic = null
+      this.inAccountDetail = false;
+      this.isAddAccount = false;
+      this.$refs["addForm"].resetFields();
+      this.selectedPic = null;
     },
     cancelPassword() {
-      this.isChangePw = false
-      this.inAccountDetail = false
-      this.$refs["passwordForm"].resetFields()
+      this.isChangePw = false;
+      this.inAccountDetail = false;
+      this.$refs["passwordForm"].resetFields();
     },
     pickQuick(addr) {
       if (addr.length == 1) {
-        this.openWelcome(addr[0])
+        this.openWelcome(addr[0]);
       } else {
-        this.openWelcome(addr[0])
+        this.openWelcome(addr[0]);
         this.$nextTick(() => {
           if (addr[0] == 1) {
-            return
+            return;
           }
-          this.$refs[`view_${addr[0]}`].openRight(addr[1])
-        })
+          this.$refs[`view_${addr[0]}`].openRight(addr[1]);
+        });
       }
     },
     cacelChoosePic() {
-      this.addForm.headpic = ""
-      this.showChangePic = false
-      this.selectedPic = null
-      this.showJPGArr = false
+      this.addForm.headpic = "";
+      this.showChangePic = false;
+      this.selectedPic = null;
+      this.showJPGArr = false;
     },
     SaveNewPassword(formName) {
-      let data
+      let data;
       this.$refs[formName].validate((valid) => {
         if (valid) {
           if (this.passwordForm.curPassword == "") {
             data = {
               userId: this.activeAccountItem.id,
               oldPwd: "",
-              newPwd: this.passwordForm.newPassword
-            }
+              newPwd: this.passwordForm.newPassword,
+            };
           } else {
             data = {
               oldPwd: this.passwordForm.curPassword,
-              newPwd: this.passwordForm.newPassword
-            }
+              newPwd: this.passwordForm.newPassword,
+            };
           }
           updatePassword(data).then(
             (res) => {
               if (res.success) {
-                this.$message.success("瀵嗙爜" + res.msg)
+                this.$message.success("瀵嗙爜" + res.msg);
                 setTimeout(() => {
-                  this.cancelPassword()
-                }, 1000)
+                  this.cancelPassword();
+                }, 1000);
               }
             },
             (err) => {
-              this.$message.error("淇濆瓨澶辫触锛�" + err.msg)
+              this.$message.error("淇濆瓨澶辫触锛�" + err.msg);
             }
-          )
+          );
         }
-      })
+      });
     },
     saveAddAccount(formName) {
       this.$refs[formName].validate((valid) => {
@@ -1149,183 +1330,189 @@
             password: this.addForm.password,
             nickname: this.addForm.nickName,
             headpic: this.addForm.headpic,
-            roleId: this.addForm.roleId
-          }
+            roleId: this.addForm.roleId,
+          };
           addUser(data).then(
             (res) => {
-              this.$message.success(res.data)
-              this.fetchUserList(true)
+              this.$message.success(res.data);
+              this.fetchUserList(true);
             },
             (err) => {
-              this.$message.error("淇濆瓨澶辫触锛�" + err.msg)
+              this.$message.error("淇濆瓨澶辫触锛�" + err.msg);
             }
-          )
+          );
         } else {
-          return false
+          return false;
         }
-      })
+      });
     },
     pickHeadDefPic(item, i) {
       if (this.selectedPic == i) {
-        this.selectedPic = null
-        this.addForm.headpic = ""
-        return
+        this.selectedPic = null;
+        this.addForm.headpic = "";
+        return;
       }
-      this.addForm.headpic = item.path
-      this.selectedPic = i
+      this.addForm.headpic = item.path;
+      this.selectedPic = i;
     },
     testNTP() {
-      this.ntpTestLoading = true
+      this.ntpTestLoading = true;
       testNTPserver({ server: this.ntpServer })
         .then((rsp) => {
           if (rsp && rsp.success) {
             this.$notify({
               type: "success",
-              message: "鏃堕棿鍚屾鎴愬姛"
-            })
+              message: "鏃堕棿鍚屾鎴愬姛",
+            });
           } else {
             this.$notify({
               type: "error",
-              message: "鏃堕棿鍚屾澶辫触"
-            })
+              message: "鏃堕棿鍚屾澶辫触",
+            });
           }
-          this.ntpTestLoading = false
-          this.initClockConf(true)
+          this.ntpTestLoading = false;
+          this.initClockConf(true);
         })
         .catch((err) => {
           this.$notify({
             type: "error",
-            message: "鏃堕棿鍚屾澶辫触,璇锋鏌ユ湇鍔″櫒ip"
-          })
-          this.ntpTestLoading = false
-        })
+            message: "鏃堕棿鍚屾澶辫触,璇锋鏌ユ湇鍔″櫒ip",
+          });
+          this.ntpTestLoading = false;
+        });
     },
     cancelSet() {
-      this.isSetPermission = false
-      this.inAccountDetail = false
-      this.sysMenus = []
+      this.isSetPermission = false;
+      this.inAccountDetail = false;
+      this.sysMenus = [];
     },
     showChangePassword() {
-      this.isChangePw = true
-      this.inAccountDetail = true
+      this.isChangePw = true;
+      this.inAccountDetail = true;
     },
     runClock() {
-      const str = this.formatTime(++this.timestamp * 1000, "Y-M-D h:m:s")
-      ;[this.equipmentDate, this.equipmentTime] = str.split(" ")
+      const str = this.formatTime(++this.timestamp * 1000, "Y-M-D h:m:s");
+      [this.equipmentDate, this.equipmentTime] = str.split(" ");
 
       this.clockTimer = setTimeout(() => {
-        this.runClock()
-      }, 1000)
+        this.runClock();
+      }, 1000);
     },
     deleteAccount() {
-      const h = this.$createElement
+      const h = this.$createElement;
       this.$msgbox({
         title: "",
         message: h(
           "div",
           {
-            style: "display: flex;  flex-direction: column; justify-content: center; align-items: center;"
+            style:
+              "display: flex;  flex-direction: column; justify-content: center; align-items: center;",
           },
           [
             h("span", { class: "icon iconfont warn-icon" }, "\ue71c"),
             h("span", { class: "warn-title" }, "鍒犻櫎璐︽埛"),
-            h("span", { class: "warn-dec" }, "鎮ㄦ槸鍚︾‘璁ゅ垹闄よ处鎴凤紵")
+            h("span", { class: "warn-dec" }, "鎮ㄦ槸鍚︾‘璁ゅ垹闄よ处鎴凤紵"),
           ]
         ),
         showCancelButton: true,
         showClose: true,
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
-        customClass: "del-account-message-box"
+        customClass: "del-account-message-box",
       })
         .then(() => {
           let obj = {
-            ids: [this.activeAccountItem.id]
-          }
+            ids: [this.activeAccountItem.id],
+          };
           deleteUser(obj).then((res) => {
             if (res.success) {
-              this.fetchUserList()
-              this.$message.success("鍒犻櫎鎴愬姛!")
+              this.fetchUserList();
+              this.$message.success("鍒犻櫎鎴愬姛!");
             } else {
-              this.$message.error("鍒犻櫎澶辫触")
+              this.$message.error("鍒犻櫎澶辫触");
             }
-          })
+          });
         })
-        .catch(() => {})
+        .catch(() => {});
     },
     fetchMenu() {
       getUserMenus({
-        userId: this.activeAccountItem.id
+        userId: this.activeAccountItem.id,
       }).then((res) => {
         if (res && res.success) {
-          this.sysMenus = res.data
-          let arr = []
-          this.drawChecked(this.sysMenus, arr)
-          this.checkedArr = arr
+          this.sysMenus = res.data;
+          let arr = [];
+          this.drawChecked(this.sysMenus, arr);
+          this.checkedArr = arr;
         }
-      })
+      });
     },
     drawChecked(arr, res) {
       for (const item of arr) {
-        if (item.selected && !item.children) res.push(item.id)
-        if (item.children) this.drawChecked(item.children, res)
+        if (item.selected && !item.children) res.push(item.id);
+        if (item.children) this.drawChecked(item.children, res);
       }
     },
     openPermission() {
-      this.inAccountDetail = true
-      this.isSetPermission = true
+      this.inAccountDetail = true;
+      this.isSetPermission = true;
       if (this.sysMenus.length == 0) {
-        this.fetchMenu()
+        this.fetchMenu();
       }
     },
     parseTime() {
-      ;[this.syncYrs, this.syncMonth, this.syncDay] = this.equipmentDate.split("-")
-      ;[this.syncHour, this.syncMin, this.syncSec] = this.equipmentTime.split(":")
-    }
+      [this.syncYrs, this.syncMonth, this.syncDay] =
+        this.equipmentDate.split("-");
+      [this.syncHour, this.syncMin, this.syncSec] =
+        this.equipmentTime.split(":");
+    },
   },
   computed: {
     activeUserRole() {
-      if (this.activeAccountItem.sysRoles && this.activeAccountItem.sysRoles.length) {
-        return this.activeAccountItem.sysRoles[0].name
+      if (
+        this.activeAccountItem.sysRoles &&
+        this.activeAccountItem.sysRoles.length
+      ) {
+        return this.activeAccountItem.sysRoles[0].name;
       }
-      return "鏅�氱敤鎴�"
+      return "鏅�氱敤鎴�";
     },
     curUserRole() {
-      const info = JSON.parse(sessionStorage.getItem("userInfo"))
-      return info.roleName
+      const info = JSON.parse(sessionStorage.getItem("userInfo"));
+      return info.roleName;
     },
     curUserID() {
-      const info = JSON.parse(sessionStorage.getItem("userInfo"))
-      return info.id
+      const info = JSON.parse(sessionStorage.getItem("userInfo"));
+      return info.id;
     },
     isShowDeleteAccount() {
       if (this.curUserRole == "瓒呯骇绠$悊鍛�") {
-        return this.activeUserRole != "瓒呯骇绠$悊鍛�"
+        return this.activeUserRole != "瓒呯骇绠$悊鍛�";
       } else if (this.curUserRole == "绠$悊鍛�") {
-        return this.activeUserRole == "鏅�氱敤鎴�"
+        return this.activeUserRole == "鏅�氱敤鎴�";
       }
-      return false
+      return false;
     },
     isShowPermitBtn() {
       // basic 鐢ㄦ埛涓嶅厑璁镐慨鏀规潈闄�
       if (this.activeUserRole == "瓒呯骇绠$悊鍛�") {
-        return false
+        return false;
       }
       if (this.curUserRole == "绠$悊鍛�") {
-        return this.activeUserRole == "鏅�氱敤鎴�"
+        return this.activeUserRole == "鏅�氱敤鎴�";
       } else {
-        return this.curUserRole != "鏅�氱敤鎴�"
+        return this.curUserRole != "鏅�氱敤鎴�";
       }
     },
     searchArrForShow() {
       if (this.searchText == "") {
-        return this.searchArr
+        return this.searchArr;
       } else {
         return this.searchArr.filter((item) => {
-          return item.name.indexOf(this.searchText.toUpperCase()) > -1
-        })
+          return item.name.indexOf(this.searchText.toUpperCase()) > -1;
+        });
       }
-    }
+    },
   },
   watch: {
     showWelcome(newVal) {
@@ -1333,22 +1520,22 @@
         // 闅愯棌杩斿洖鎸夋寜閽�
         window.parent.postMessage(
           {
-            msg: "hiddenBack"
+            msg: "hiddenBack",
           },
           "*"
-        )
+        );
       } else {
         //鏄剧ず杩斿洖鎸夐挳
         window.parent.postMessage(
           {
-            msg: "showBack"
+            msg: "showBack",
           },
           "*"
-        )
+        );
       }
-    }
-  }
-}
+    },
+  },
+};
 </script>
 <style lang="scss">
 .welcome-page {
@@ -1399,7 +1586,8 @@
         line-height: 36px;
         outline: 0;
         padding: 0 20px;
-        -webkit-transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
+        -webkit-transition: border-color 0.2s
+          cubic-bezier(0.645, 0.045, 0.355, 1);
         transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
         width: 100%;
         font-weight: bold;
@@ -1845,7 +2033,7 @@
 
       .change-pw {
         padding: 40px 10px;
-        max-width: 600px;
+        // max-width: 600px;
         margin: 0 auto;
         .title {
           font-weight: bold;
@@ -2069,7 +2257,7 @@
           line-height: 22px;
         }
         .fill-group {
-          max-width: 450px;
+          //  max-width: 450px;
           margin-top: 10px;
 
           margin: 0 auto;
@@ -2390,8 +2578,11 @@
           }
         }
       }
-      .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before,
-      .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label:before {
+      .el-form-item.is-required:not(.is-no-asterisk)
+        > .el-form-item__label:before,
+      .el-form-item.is-required:not(.is-no-asterisk)
+        .el-form-item__label-wrap
+        > .el-form-item__label:before {
         display: none;
       }
       .el-form-item {
diff --git a/src/pages/settings/views/NetSettings.vue b/src/pages/settings/views/NetSettings.vue
index a318da7..fa61b0f 100644
--- a/src/pages/settings/views/NetSettings.vue
+++ b/src/pages/settings/views/NetSettings.vue
@@ -720,11 +720,11 @@
   width: 100%;
 }
 .wire {
-  width: 456px;
+  //  width: 456px;
   margin: 0 auto;
 }
 .wire-detail {
-  width: 456px;
+  //  width: 456px;
   margin: 0 auto;
   .title {
     font-size: 16px;
@@ -762,7 +762,7 @@
   }
 }
 .net-set {
-  max-width: 456px;
+  // max-width: 456px;
   margin: 0 auto;
   .title {
     font-size: 16px;
@@ -938,7 +938,7 @@
       max-width: none !important;
     }
     .wifi-set {
-      max-width: 456px;
+      //   max-width: 456px;
       margin: 0 auto;
       .switch-bar {
         background: #f2f2f7;
@@ -989,7 +989,7 @@
       }
     }
     .wifi-detail {
-      max-width: 454px;
+      //  max-width: 454px;
       margin: 0 auto;
       transition: all 0.3s linear 0s;
       .general-box {
@@ -1001,10 +1001,15 @@
         margin-bottom: 20px;
         &.fold {
           height: 342px;
+
+          .in-title {
+            display: flex;
+            justify-content: space-between;
+          }
+
           .icon-fold {
             display: inline-block;
             font-size: 14px;
-            margin-left: 360px;
             transition: all 0.3s linear 0s;
             cursor: pointer;
           }
diff --git a/src/pages/settings/views/clusterManagement.vue b/src/pages/settings/views/clusterManagement.vue
index daf57d2..a903df7 100644
--- a/src/pages/settings/views/clusterManagement.vue
+++ b/src/pages/settings/views/clusterManagement.vue
@@ -19,8 +19,17 @@
             v-model="selfForm.clustername"
             placeholder="璇疯緭鍏ュ唴瀹�"
           ></el-input>
-          <span class="icon iconfont" @click="startInput(1)" v-show="!isFillingName">&#xe60c;</span>
-          <span class="icon iconfont" style="font-size: 18px" @click="clearInput(1)" v-show="isFillingName"
+          <span
+            class="icon iconfont"
+            @click="startInput(1)"
+            v-show="!isFillingName"
+            >&#xe60c;</span
+          >
+          <span
+            class="icon iconfont"
+            style="font-size: 18px"
+            @click="clearInput(1)"
+            v-show="isFillingName"
             >&#xe785;</span
           >
           <span
@@ -49,9 +58,23 @@
         <div class="input-area">
           <div class="text" v-show="!isFillingIp">{{ ruleForm.virtualIp }}</div>
 
-          <ip-input v-if="isFillingIp" :ip="selfForm.virtualIp" :on-blur="onIpBlur" class="ip-input-comp"></ip-input>
-          <span class="icon iconfont" v-show="!isFillingIp" @click="startInput(2)">&#xe60c;</span>
-          <span class="icon iconfont" style="font-size: 18px" @click="clearInput(2)" v-show="isFillingIp"
+          <ip-input
+            v-if="isFillingIp"
+            :ip="selfForm.virtualIp"
+            :on-blur="onIpBlur"
+            class="ip-input-comp"
+          ></ip-input>
+          <span
+            class="icon iconfont"
+            v-show="!isFillingIp"
+            @click="startInput(2)"
+            >&#xe60c;</span
+          >
+          <span
+            class="icon iconfont"
+            style="font-size: 18px"
+            @click="clearInput(2)"
+            v-show="isFillingIp"
             >&#xe785;</span
           >
           <span
@@ -70,7 +93,11 @@
     </div>
     <!-- !showCurCluster || !isHasColony -->
     <div class="cluster-content" v-if="!showCurCluster || !isHasColony">
-      <div class="cluster-center" ref="left" v-if="!showCurCluster || !isHasColony">
+      <div
+        class="cluster-center"
+        ref="left"
+        v-if="!showCurCluster || !isHasColony"
+      >
         <div
           class="menu-item"
           :class="activePage == i ? 'menu-item-active' : ''"
@@ -88,21 +115,40 @@
           <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
             <el-form-item prop="clustername">
               <div class="p-title">闆嗙兢鍚嶇О</div>
-              <el-input v-model="ruleForm.clustername" placeholder="鎵嬪姩杈撳叆, 濡傗�滈泦缇鈥�" size="small"></el-input>
+              <el-input
+                v-model="ruleForm.clustername"
+                placeholder="鎵嬪姩杈撳叆, 濡傗�滈泦缇鈥�"
+                size="small"
+              ></el-input>
             </el-form-item>
             <el-form-item>
               <div class="p-title">闆嗙兢ID</div>
-              <el-input v-model="clusterid" placeholder="涓嶅厑璁歌緭鍏�,淇濆瓨鍚庡洖鏄�" disabled size="small"></el-input>
+              <el-input
+                v-model="clusterid"
+                placeholder="涓嶅厑璁歌緭鍏�,淇濆瓨鍚庡洖鏄�"
+                disabled
+                size="small"
+              ></el-input>
             </el-form-item>
             <el-form-item prop="clusterpwd">
               <div class="p-title">闆嗙兢瀵嗙爜</div>
-              <el-input v-model="ruleForm.clusterpwd" placeholder="璇疯緭鍏�6浣嶅瘑鐮�,鎴栫偣鍑荤敓鎴�" size="small">
-                <el-button type="text" slot="suffix" @click="getPSW">鐢熸垚瀵嗙爜</el-button>
+              <el-input
+                v-model="ruleForm.clusterpwd"
+                placeholder="璇疯緭鍏�6浣嶅瘑鐮�,鎴栫偣鍑荤敓鎴�"
+                size="small"
+              >
+                <el-button type="text" slot="suffix" @click="getPSW"
+                  >鐢熸垚瀵嗙爜</el-button
+                >
               </el-input>
             </el-form-item>
             <el-form-item prop="virtualIp">
               <div class="p-title">闆嗙兢IP</div>
-              <ip-input :ip="ruleForm.virtualIp" :on-blur="onIpBlur" class="ip-input-comp"></ip-input>
+              <ip-input
+                :ip="ruleForm.virtualIp"
+                :on-blur="onIpBlur"
+                class="ip-input-comp"
+              ></ip-input>
             </el-form-item>
           </el-form>
           <div class="btns">
@@ -111,7 +157,13 @@
         </div>
 
         <div class="join-exist" v-if="activePage == 1">
-          <el-form :model="joinForm" :rules="joinExistRules" ref="joinForm" class="join-form" v-loading="joinLoading">
+          <el-form
+            :model="joinForm"
+            :rules="joinExistRules"
+            ref="joinForm"
+            class="join-form"
+            v-loading="joinLoading"
+          >
             <el-form-item prop="clusterid">
               <div class="p-title">闆嗙兢ID</div>
               <el-input v-model="joinForm.clusterid" size="small"></el-input>
@@ -135,8 +187,19 @@
                 autocomplete="new-password"
                 size="small"
               >
-                <el-button type="text" slot="suffix" @click="searchColony" v-show="!searchDis">鎼滅储闆嗙兢</el-button>
-                <el-button type="text" slot="suffix" v-show="searchDis" @click="stopSearch">
+                <el-button
+                  type="text"
+                  slot="suffix"
+                  @click="searchColony"
+                  v-show="!searchDis"
+                  >鎼滅储闆嗙兢</el-button
+                >
+                <el-button
+                  type="text"
+                  slot="suffix"
+                  v-show="searchDis"
+                  @click="stopSearch"
+                >
                   <i class="el-icon-loading"></i>鍋滄鎼滅储
                 </el-button>
               </el-input>
@@ -144,7 +207,12 @@
           </el-form>
           <div class="clu-list">
             <!-- :class="pickedNodeI == index ? 'clu-item-active' : ''" -->
-            <div class="clu-item" v-for="(item, index) in members" :key="index" @click="pickNode(index)">
+            <div
+              class="clu-item"
+              v-for="(item, index) in members"
+              :key="index"
+              @click="pickNode(index)"
+            >
               <i class="iconfont">&#xe727;</i>
               {{ item.Address }}
             </div>
@@ -168,32 +236,32 @@
   stopSearching,
   findCluster,
   updateClusterName,
-  joinCluster
-} from "@/api/clusterManage"
+  joinCluster,
+} from "@/api/clusterManage";
 // import cloudNode from "../components/CloudNode";
-import NetNode from "../components/NetNode"
-import ipInput from "../components/IPInput"
-import { isIPv4 } from "@/scripts/validate"
+import NetNode from "../components/NetNode";
+import ipInput from "../components/IPInput";
+import { isIPv4 } from "@/scripts/validate";
 
 export default {
   data() {
     const checkPwd = (rule, value, callback) => {
       if (value == "") {
-        return callback(new Error("瀵嗙爜涓嶈兘涓虹┖"))
+        return callback(new Error("瀵嗙爜涓嶈兘涓虹┖"));
       }
       // setTimeout(() => {
       if (value.length != 6) {
-        callback(new Error("瀵嗙爜搴斾负6浣�!"))
+        callback(new Error("瀵嗙爜搴斾负6浣�!"));
       } else {
-        callback()
+        callback();
       }
       // }, 1000);
-    }
+    };
     const checkID = (rule, value, callback) => {
       if (!value) {
-        return callback(new Error("ID涓嶈兘涓虹┖"))
+        return callback(new Error("ID涓嶈兘涓虹┖"));
       }
-    }
+    };
     return {
       innerNodes: [],
       intervalTimer: null,
@@ -210,16 +278,16 @@
       ruleForm: {
         clustername: "",
         clusterpwd: "",
-        virtualIp: ""
+        virtualIp: "",
       },
       selfForm: {
         virtualIp: "",
-        clustername: ""
+        clustername: "",
       },
       joinForm: {
         clusterid: "",
         clusterip: "",
-        clusterpwd: ""
+        clusterpwd: "",
       },
       isSearch: false,
       showCurCluster: true,
@@ -232,36 +300,38 @@
       isCreate: true,
       tabList: ["鍒涘缓闆嗙兢", "鍔犲叆宸叉湁闆嗙兢"],
       rules: {
-        clustername: [{ required: true, message: "璇疯緭鍏ラ泦缇ゅ悕绉�", trigger: "blur" }],
+        clustername: [
+          { required: true, message: "璇疯緭鍏ラ泦缇ゅ悕绉�", trigger: "blur" },
+        ],
         clusterpwd: [{ validator: checkPwd, required: true, trigger: "blur" }],
-        virtualIp: [{ required: true, validator: isIPv4, trigger: "change" }]
+        virtualIp: [{ required: true, validator: isIPv4, trigger: "change" }],
       },
       joinExistRules: {
         clusterid: [{ validator: checkID, trigger: "blur" }],
         clusterip: [{ validator: isIPv4, trigger: "blur" }],
-        clusterpwd: [{ validator: checkPwd, required: true, trigger: "blur" }]
-      }
-    }
+        clusterpwd: [{ validator: checkPwd, required: true, trigger: "blur" }],
+      },
+    };
   },
   components: {
     // cloudNode,
     NetNode,
-    ipInput
+    ipInput,
   },
   mounted() {
-    this.findCluster()
+    this.findCluster();
     this.intervalTimer = setInterval(() => {
-      this.findCluster()
-    }, 30000)
+      this.findCluster();
+    }, 30000);
   },
   beforeDestroy() {
-    clearInterval(this.intervalTimer)
+    clearInterval(this.intervalTimer);
   },
   methods: {
     pickNode(index) {
-      this.pickedNodeI = index
-      const node = this.members[index]
-      const h = this.$createElement
+      this.pickedNodeI = index;
+      const node = this.members[index];
+      const h = this.$createElement;
       // Address: "192.168.20.189:30190"
       // cluster_id: "5ee1dfa8-e3fb-4d62-8692-388d7632859b"
       // create_time: ""
@@ -274,168 +344,173 @@
         message: h(
           "div",
           {
-            style: "display: flex;  flex-direction: column; justify-content: center; align-items: center;"
+            style:
+              "display: flex;  flex-direction: column; justify-content: center; align-items: center;",
           },
           [
             h("span", { class: "icon iconfont warn-icon" }, "\ue71c"),
             h("span", { class: "warn-title" }, "鍔犲叆闆嗙兢"),
-            h("span", { class: "warn-dec" }, `鎮ㄦ槸鍚﹁鍔犲叆 ${node.Address} 鍚楋紵`)
+            h(
+              "span",
+              { class: "warn-dec" },
+              `鎮ㄦ槸鍚﹁鍔犲叆 ${node.Address} 鍚楋紵`
+            ),
           ]
         ),
         showCancelButton: true,
         showClose: true,
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
-        customClass: "del-account-message-box"
+        customClass: "del-account-message-box",
       }).then(() => {
-        this.joinLoading = true
+        this.joinLoading = true;
         let data = {
           clusterId: node.cluster_id,
           password: this.joinForm.clusterpwd,
-          nodeIps: [node.Address]
-        }
+          nodeIps: [node.Address],
+        };
         this.joinCluster(data)
           .then(() => {
-            this.joinLoading = false
-            this.findCluster()
+            this.joinLoading = false;
+            this.findCluster();
           })
           .catch((e) => {
-            this.joinLoading = false
-          })
-      })
+            this.joinLoading = false;
+          });
+      });
     },
     async createCluster(json) {
-      let res = await createSerfCluster(json)
+      let res = await createSerfCluster(json);
       this.$notify({
         title: res.success ? "鎴愬姛" : "澶辫触",
         message: res.msg,
-        type: res.success ? "success" : "error"
-      })
+        type: res.success ? "success" : "error",
+      });
     },
     //鎼滅储闆嗙兢
     async getSearchNodes() {
-      let res = await getSearchNodes()
+      let res = await getSearchNodes();
       if (res && res.success) {
         let list = res.data.map((i) => {
-          let obj = {}
-          obj.cluster_id = i.clusterID ? i.clusterID : ""
-          obj.create_time = i.create_time ? i.create_time : ""
-          obj.id = i.nodeID ? i.nodeID : ""
-          obj.node_id = i.nodeID ? i.nodeID : ""
-          obj.Address = i.nodeAddress ? i.nodeAddress : ""
-          obj.nodeName = i.nodeAddress ? i.nodeAddress : ""
-          obj.role = i.role ? i.role : "pc"
-          return obj
-        })
+          let obj = {};
+          obj.cluster_id = i.clusterID ? i.clusterID : "";
+          obj.create_time = i.create_time ? i.create_time : "";
+          obj.id = i.nodeID ? i.nodeID : "";
+          obj.node_id = i.nodeID ? i.nodeID : "";
+          obj.Address = i.nodeAddress ? i.nodeAddress : "";
+          obj.nodeName = i.nodeAddress ? i.nodeAddress : "";
+          obj.role = i.role ? i.role : "pc";
+          return obj;
+        });
         list.map((i) => {
           let found = this.members.find((element) => {
-            return element.node_id === i.node_id
-          })
+            return element.node_id === i.node_id;
+          });
           if (found === undefined) {
-            this.members.push(i)
+            this.members.push(i);
           }
-        })
+        });
       }
     },
     async joinCluster(json) {
-      let res = await joinCluster(json)
+      let res = await joinCluster(json);
       if (res.success) {
-        this.members = []
+        this.members = [];
       }
       this.$notify({
         title: res.success ? "鎴愬姛" : "澶辫触",
         message: res.msg,
-        type: res.success ? "success" : "error"
-      })
+        type: res.success ? "success" : "error",
+      });
     },
     join(formName) {
-      let _this = this
+      let _this = this;
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          _this.joinLoading = true
+          _this.joinLoading = true;
           let data = {
             clusterId: _this.joinForm.clusterid,
             password: _this.joinForm.clusterpwd,
-            nodeIps: [_this.joinForm.clusterip]
-          }
-          debugger
+            nodeIps: [_this.joinForm.clusterip],
+          };
+          debugger;
           _this
             .joinCluster(data)
             .then(() => {
-              _this.joinLoading = false
-              _this.findCluster()
+              _this.joinLoading = false;
+              _this.findCluster();
             })
             .catch((e) => {
-              _this.joinLoading = false
-            })
+              _this.joinLoading = false;
+            });
         } else {
-          return false
+          return false;
         }
-      })
+      });
     },
     setSchedule() {
       this.scheduleId = window.setInterval(() => {
-        this.getSearchNodes()
-      }, 1000)
+        this.getSearchNodes();
+      }, 1000);
     },
     async searchColony() {
-      this.isSearch = true
-      this.$refs["joinForm"].clearValidate()
-      this.$refs["joinForm"].validateField("clusterpwd")
+      this.isSearch = true;
+      this.$refs["joinForm"].clearValidate();
+      this.$refs["joinForm"].validateField("clusterpwd");
       if (this.joinForm.clusterpwd.trim().length === 6) {
-        this.members = []
+        this.members = [];
         const data = {
-          password: this.joinForm.clusterpwd
-        }
+          password: this.joinForm.clusterpwd,
+        };
         this.search(data)
           .then(() => {
-            this.setSchedule()
+            this.setSchedule();
           })
           .catch(() => {
-            this.searchDis = false
-            this.loading = false
-            this.isSearch = false
-          })
+            this.searchDis = false;
+            this.loading = false;
+            this.isSearch = false;
+          });
       } else {
-        this.searchDis = false
-        this.loading = false
-        this.isSearch = false
-        return false
+        this.searchDis = false;
+        this.loading = false;
+        this.isSearch = false;
+        return false;
       }
     },
     async search(data) {
-      let res = await search(data)
+      let res = await search(data);
       if (res && res.success) {
-        this.searchNum = res.data
+        this.searchNum = res.data;
       }
-      this.searchDis = true
-      this.loading = true
+      this.searchDis = true;
+      this.loading = true;
       window.setTimeout(() => {
-        this.stopSearch()
-      }, 10 * 1000)
+        this.stopSearch();
+      }, 10 * 1000);
     },
     openRight(i) {
-      this.activePage = i
+      this.activePage = i;
     },
     async stopSearch() {
       if (!this.loading) {
-        return true
+        return true;
       }
       stopSearching({
-        searchNum: this.searchNum
+        searchNum: this.searchNum,
       })
         .then((res) => {
-          this.loading = false
-          this.searchDis = false
-          window.clearInterval(this.scheduleId)
+          this.loading = false;
+          this.searchDis = false;
+          window.clearInterval(this.scheduleId);
         })
         .catch((err) => {
           this.$notify({
             type: "error",
             duration: 1000,
-            message: "鍋滄鎼滅储鎶ラ敊锛�"
-          })
-        })
+            message: "鍋滄鎼滅储鎶ラ敊锛�",
+          });
+        });
     },
     saveCluster(formName) {
       this.$refs[formName].validate((valid) => {
@@ -444,179 +519,181 @@
             clusterId: this.clusterid,
             clusterName: this.ruleForm.clustername,
             password: this.ruleForm.clusterpwd,
-            virtualIp: this.ruleForm.virtualIp
-          }
+            virtualIp: this.ruleForm.virtualIp,
+          };
           this.createCluster(data).then(() => {
-            this.findCluster()
-          })
+            this.findCluster();
+          });
         } else {
-          return false
+          return false;
         }
-      })
+      });
     },
     getPSW() {
-      var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
-      var uuid = []
+      var chars =
+        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+      var uuid = [];
 
       for (let i = 0; i < 6; i++) {
-        uuid[i] = chars[0 | (Math.random() * 50)]
+        uuid[i] = chars[0 | (Math.random() * 50)];
       }
 
-      this.ruleForm.clusterpwd = uuid.join("")
+      this.ruleForm.clusterpwd = uuid.join("");
     },
     exitCluster() {
-      const h = this.$createElement
-      let res = {}
+      const h = this.$createElement;
+      let res = {};
 
       this.$msgbox({
         title: "",
         message: h(
           "div",
           {
-            style: "display: flex;  flex-direction: column; justify-content: center; align-items: center;"
+            style:
+              "display: flex;  flex-direction: column; justify-content: center; align-items: center;",
           },
           [
             h("span", { class: "icon iconfont warn-icon" }, "\ue71c"),
             h("span", { class: "warn-title" }, "閫�鍑洪泦缇�"),
-            h("span", { class: "warn-dec" }, "纭畾閫�鍑洪泦缇ゅ悧锛�")
+            h("span", { class: "warn-dec" }, "纭畾閫�鍑洪泦缇ゅ悧锛�"),
           ]
         ),
         showCancelButton: true,
         showClose: true,
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
-        customClass: "del-account-message-box"
+        customClass: "del-account-message-box",
       }).then(
         // () => {
         //   this.showCurCluster = false;
         // }
         async () => {
           try {
-            res = await leave()
+            res = await leave();
             if (res && res.success) {
-              clearInterval(this.intervalTimer)
-              this.showCurCluster = false
-              this.ruleForm.virtualIp = ""
-              this.ruleForm.clustername = ""
-              this.ruleForm.clusterpwd = ""
-              this.clusterid = ""
+              clearInterval(this.intervalTimer);
+              this.showCurCluster = false;
+              this.ruleForm.virtualIp = "";
+              this.ruleForm.clustername = "";
+              this.ruleForm.clusterpwd = "";
+              this.clusterid = "";
             }
 
             this.$notify({
               title: res.success ? "鎴愬姛" : "澶辫触",
               message: res.msg,
-              type: res.success ? "success" : "error"
-            })
-            this.findCluster()
+              type: res.success ? "success" : "error",
+            });
+            this.findCluster();
           } catch (err) {
-            console.log(err)
+            console.log(err);
             this.$notify.error({
               title: "澶辫触",
-              message: err.msg
-            })
+              message: err.msg,
+            });
           }
         },
         (err) => {
-          clearInterval(this.intervalTimer)
-          this.showCurCluster = false
-          this.ruleForm.virtualIp = ""
-          this.ruleForm.clustername = ""
-          this.ruleForm.clusterpwd = ""
-          this.clusterid = ""
+          clearInterval(this.intervalTimer);
+          this.showCurCluster = false;
+          this.ruleForm.virtualIp = "";
+          this.ruleForm.clustername = "";
+          this.ruleForm.clusterpwd = "";
+          this.clusterid = "";
         }
-      )
+      );
     },
     clearInput(typ) {
       if (typ == 1) {
-        this.selfForm.clustername = ""
-        this.isFillingName = false
+        this.selfForm.clustername = "";
+        this.isFillingName = false;
       } else {
-        this.selfForm.virtualIp = ""
-        this.isFillingIp = false
+        this.selfForm.virtualIp = "";
+        this.isFillingIp = false;
       }
     },
     async randomPwd() {
-      let res = await randomPwd()
+      let res = await randomPwd();
       if (res && res.success) {
-        this.ruleForm.clusterpwd = res.data
+        this.ruleForm.clusterpwd = res.data;
       }
     },
     startInput(typ) {
       if (typ == 1) {
-        this.selfForm.clustername = this.ruleForm.clustername
-        this.isFillingName = true
+        this.selfForm.clustername = this.ruleForm.clustername;
+        this.isFillingName = true;
       } else {
-        this.selfForm.virtualIp = this.ruleForm.virtualIp
-        this.isFillingIp = true
+        this.selfForm.virtualIp = this.ruleForm.virtualIp;
+        this.isFillingIp = true;
       }
     },
     onIpBlur(ip) {
-      this.ruleForm.virtualIp = ip
+      this.ruleForm.virtualIp = ip;
     },
     async updateCluster(v) {
       if (v == 1 || v == undefined) {
-        this.ruleForm.clustername = this.selfForm.clustername
+        this.ruleForm.clustername = this.selfForm.clustername;
       }
       if (this.ruleForm.clustername === "") {
         this.$message({
           type: "error",
-          message: "闆嗙兢鍚嶇О涓嶈兘涓虹┖"
-        })
-        return
+          message: "闆嗙兢鍚嶇О涓嶈兘涓虹┖",
+        });
+        return;
       }
       const data = {
         clusterName: this.ruleForm.clustername,
-        virtualIp: this.ruleForm.virtualIp
-      }
-      let res = await updateClusterName(data)
+        virtualIp: this.ruleForm.virtualIp,
+      };
+      let res = await updateClusterName(data);
       if (res.success) {
-        this.findCluster()
+        this.findCluster();
       }
 
       this.$notify({
         title: res.success ? "鎴愬姛" : "澶辫触",
         message: res.msg,
-        type: res.success ? "success" : "error"
-      })
-      this.isFillingIp = false
-      this.isFillingName = false
+        type: res.success ? "success" : "error",
+      });
+      this.isFillingIp = false;
+      this.isFillingName = false;
     },
     async findCluster() {
-      let res = await findCluster()
+      let res = await findCluster();
       if (res && res.success) {
         if (res.data && res.data.clusterId) {
-          this.isHasColony = true
-          this.clusterid = res.data.clusterId
-          this.ruleForm.clustername = res.data.clusterName
-          this.ruleForm.clusterpwd = "******"
-          this.ruleForm.virtualIp = res.data.virtualIp
-          this.isSearch = false
+          this.isHasColony = true;
+          this.clusterid = res.data.clusterId;
+          this.ruleForm.clustername = res.data.clusterName;
+          this.ruleForm.clusterpwd = "******";
+          this.ruleForm.virtualIp = res.data.virtualIp;
+          this.isSearch = false;
           this.innerNodes = res.data.nodes.map((i) => {
-            let obj = {}
-            obj.device_type = i.device_type
-            obj.workType = i.device_type.substr(2, 2)
-            obj.hardwareType = i.device_type.substr(4, 2)
-            obj.cluster_id = i.cluster_id
-            obj.clusterName = res.data.clusterName
-            obj.create_time = i.create_time
-            obj.id = i.id
-            obj.node_id = i.node_id
-            obj.node_ip = i.node_ip
-            obj.nodeName = i.node_name
-            obj.Address = i.node_ip
-            obj.role = i.drift_state ? i.drift_state : "pc"
-            return obj
-          })
+            let obj = {};
+            obj.device_type = i.device_type;
+            obj.workType = i.device_type.substr(2, 2);
+            obj.hardwareType = i.device_type.substr(4, 2);
+            obj.cluster_id = i.cluster_id;
+            obj.clusterName = res.data.clusterName;
+            obj.create_time = i.create_time;
+            obj.id = i.id;
+            obj.node_id = i.node_id;
+            obj.node_ip = i.node_ip;
+            obj.nodeName = i.node_name;
+            obj.Address = i.node_ip;
+            obj.role = i.drift_state ? i.drift_state : "pc";
+            return obj;
+          });
         } else {
-          this.isHasColony = false
+          this.isHasColony = false;
         }
       }
     },
     clearInnerNodes() {
-      this.innerNodes = []
-    }
-  }
-}
+      this.innerNodes = [];
+    },
+  },
+};
 </script>
 <style lang="scss">
 .all {
@@ -625,7 +702,7 @@
 }
 .cluster-guanli {
   margin: 0 auto;
-  width: 760px;
+  // width: 760px;
   padding: 0 10px;
   .btns {
     margin-top: 30px !important;
@@ -650,7 +727,11 @@
     display: flex;
     height: 255px;
     border-radius: 8px;
-    background: linear-gradient(180deg, #ffffff 0%, rgba(255, 255, 255, 0) 100%);
+    background: linear-gradient(
+      180deg,
+      #ffffff 0%,
+      rgba(255, 255, 255, 0) 100%
+    );
     .inner {
       background: url(/images/settings/easy-cloud.png) no-repeat;
       background-size: contain;
@@ -771,8 +852,11 @@
     border-top: 4px solid #f2f2f7;
     padding: 20px 40px;
     padding-top: 16px;
-    .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before,
-    .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap > .el-form-item__label:before {
+    .el-form-item.is-required:not(.is-no-asterisk)
+      > .el-form-item__label:before,
+    .el-form-item.is-required:not(.is-no-asterisk)
+      .el-form-item__label-wrap
+      > .el-form-item__label:before {
       display: none;
     }
     .clu-list {
diff --git a/src/pages/settings/views/generalSettings.vue b/src/pages/settings/views/generalSettings.vue
index 35190ce..ae565c1 100644
--- a/src/pages/settings/views/generalSettings.vue
+++ b/src/pages/settings/views/generalSettings.vue
@@ -35,7 +35,7 @@
                   :format-tooltip="formatTooltip"
                 ></el-slider>
               </div>
-              <div class="sec">120s</div>
+              <div class="sec" style="margin: 0 20px">120s</div>
               <el-input-number
                 v-model="min_len"
                 @change="fakeObj.min = +(min_len / 1.2)"
@@ -65,7 +65,7 @@
                   :show-tooltip="true"
                 ></el-slider>
               </div>
-              <div class="sec">120s</div>
+              <div class="sec" style="margin: 0 20px">120s</div>
               <el-input-number
                 v-model="max_len"
                 @change="fakeObj.max = +(max_len / 1.2)"

--
Gitblit v1.8.0