From da4f50e1008b815067cf47352747bf6d23b8b043 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期四, 27 一月 2022 13:58:54 +0800
Subject: [PATCH] bug修复

---
 src/pages/settings/views/clusterManagement.vue   |   39 
 src/pages/datapush/index/RightEvent.vue          | 1916 +++++++++++++++++++++-------------------
 src/pages/cameraAccess/components/TimeSlider.vue |  481 +++++----
 src/components/searching/UploadImg.vue           |  216 ++-
 src/pages/desktop/index/components/Tools.vue     |   46 
 src/components/giantTree/index.vue               |   98 +
 6 files changed, 1,480 insertions(+), 1,316 deletions(-)

diff --git a/src/components/giantTree/index.vue b/src/components/giantTree/index.vue
index 1e63341..ab602d2 100644
--- a/src/components/giantTree/index.vue
+++ b/src/components/giantTree/index.vue
@@ -26,12 +26,23 @@
       :style="{ left: clientX + 'px', top: clientY + 'px' }"
     >
       <el-card :body-style="{ padding: '10px' }">
-        <el-form :model="dialogForm" size="mini" :rules="rules" ref="dialogForm" label-width="70px">
+        <el-form
+          :model="dialogForm"
+          size="mini"
+          :rules="rules"
+          ref="dialogForm"
+          label-width="70px"
+        >
           <el-form-item label="鍚嶇О锛�" prop="name">
-            <el-input v-model="dialogForm.text" oninput="if(value.length>10)value=value.slice(0,10)"></el-input>
+            <el-input
+              v-model="dialogForm.text"
+              oninput="if(value.length>10)value=value.slice(0,10)"
+            ></el-input>
           </el-form-item>
           <div class="text-center pb-2">
-            <el-button size="mini" type="primary" @click="submitForm">淇濆瓨</el-button>
+            <el-button size="mini" type="primary" @click="submitForm"
+              >淇濆瓨</el-button
+            >
             <el-button size="mini" @click="hideDialogBox">鍙栨秷</el-button>
           </div>
         </el-form>
@@ -41,32 +52,32 @@
 </template>
 
 <script>
-import ZTree from "./zTree/ztree"
+import ZTree from "./zTree/ztree";
 
 export default {
   name: "GiantTreeMenu",
   components: {
-    ZTree
+    ZTree,
   },
   props: {
     app: {
       type: String,
-      default: "Video"
+      default: "Video",
     },
     node: {
-      type: Array
+      type: Array,
     },
     treeName: {
       type: String,
-      default: ""
+      default: "",
     },
     gb28181: {
       type: Boolean,
-      default: false
+      default: false,
     },
     height: {
       type: Number,
-      default: 0
+      default: 0,
     },
     setting: {
       type: Object,
@@ -82,15 +93,15 @@
       clientX: 0,
       clientY: 0,
       dialogForm: {
-        text: ""
+        text: "",
       },
       rules: {
         text: [
           { required: true, message: "璇疯緭鍏ヨ妭鐐瑰悕绉�", trigger: "change" },
-          { min: 2, max: 10, message: "闀垮害鍦�2鍒�10涓瓧", trigger: "change" }
-        ]
+          { min: 2, max: 10, message: "闀垮害鍦�2鍒�10涓瓧", trigger: "change" },
+        ],
       },
-      curNodeTid: '',
+      curNodeTid: "",
     };
   },
   created() {
@@ -104,27 +115,29 @@
       if (newValue !== this.treeName) {
         this.TreeDataPool.cleanTree(this.treeName);
       }
-    }
+    },
   },
   methods: {
     handleCreated: function (ztreeObj) {
       let _this = this;
       this.ztreeObj = ztreeObj;
-      ztreeObj.expandAll(true)
+      ztreeObj.expandAll(true);
       // onCreated 涓搷浣渮treeObj瀵硅薄灞曞紑绗竴涓妭鐐�
       // ztreeObj.expandNode(ztreeObj.getNodes()[0], true);
 
       // 鎽勫儚鏈洪厤缃垏鎹㈡椂, 璁剧疆閫変腑鐘舵��
       if (this.TreeDataPool.selectedNode.id) {
         // 鍙栨秷鎵�鏈夊閫夌殑鑺傜偣,浠呬繚鐣欏綋鍓嶅崟閫夌殑鑺傜偣
-        this.TreeDataPool.selectedNodes = [this.TreeDataPool.selectedNode.id]
+        this.TreeDataPool.selectedNodes = [this.TreeDataPool.selectedNode.id];
         this.curNodeTid = this.TreeDataPool.selectedNode.tId;
         //鎽勫儚鏈轰俊鎭洿鏂颁俊鎭悗锛屽鏋滆妭鐐逛綅缃湁鍙榯Id灏变笉鍑嗕簡,this.TreeDataPool.selectedNode姝ゆ椂杩樻槸鏃х殑淇℃伅
         let ztreeNodes = ztreeObj.getNodes();
         //var curNodeTid = '';
         _this.findTidByIdFromArr(ztreeNodes);
         this.TreeDataPool.selectedNode.tId = _this.curNodeTid;
-        let node = this.ztreeObj.getNodeByTId(this.TreeDataPool.selectedNode.tId)
+        let node = this.ztreeObj.getNodeByTId(
+          this.TreeDataPool.selectedNode.tId
+        );
 
         // 澶氶�夋椂, 閫変腑鍗曢�夊崟鍑荤殑鑺傜偣
         if (this.TreeDataPool.multiple) {
@@ -132,7 +145,7 @@
           this.ztreeObj.checkNode(node, true, false, false);
         }
 
-        this.ztreeObj.selectNode(node, false, true)
+        this.ztreeObj.selectNode(node, false, true);
       }
     },
 
@@ -148,7 +161,6 @@
           this.findTidByIdFromArr(arr[i].children);
         }
       }
-
     },
     onDblClick(evt, treeId, item) {
       if (item.type !== "4" || this.app !== "Camera") {
@@ -163,14 +175,18 @@
         this.TreeDataPool.activeVideoIndex !== "" &&
         this.TreeDataPool.activeVideoIndex <= videoArr.length - 1
       ) {
-        this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this);
+        this.TreeDataPool.setVideoArr(
+          this.TreeDataPool.activeVideoIndex,
+          undefined,
+          this
+        );
         this.$nextTick(() => {
           this.TreeDataPool.setVideoArr(
             this.TreeDataPool.activeVideoIndex,
             item,
             this
           );
-        })
+        });
         return;
       }
 
@@ -188,14 +204,18 @@
         }
       }
       if (nullVideoIndex === "") {
-        this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this);
+        this.TreeDataPool.setVideoArr(
+          this.TreeDataPool.activeVideoIndex,
+          undefined,
+          this
+        );
         this.$nextTick(() => {
           this.TreeDataPool.setVideoArr(
             this.TreeDataPool.activeVideoIndex,
             item,
             this
           );
-        })
+        });
       } else {
         // this.TreeDataPool.setVideoArr(this.TreeDataPool.activeVideoIndex, undefined, this);
         this.$nextTick(() => {
@@ -204,7 +224,7 @@
             item,
             this
           );
-        })
+        });
         this.TreeDataPool.activeVideoIndex = nullVideoIndex;
       }
     },
@@ -218,7 +238,7 @@
       this.dialogForm = {
         text: "",
         method: "add",
-        node: node.id
+        node: node.id,
       };
       this.showDialogBox(event);
     },
@@ -228,7 +248,7 @@
         method: "edit",
         node: node.id,
         alias: node.alias,
-        gb28181: this.gb28181
+        gb28181: this.gb28181,
       };
       this.showDialogBox(event);
     },
@@ -237,7 +257,7 @@
     },
     submitForm() {
       // 鎻愪氦鏂板鎴栬�呯紪杈戝尯鍩熻妭鐐硅〃鍗�
-      this.$refs.dialogForm.validate(valid => {
+      this.$refs.dialogForm.validate((valid) => {
         if (valid) {
           if (this.dialogForm.method == "add") {
             this.TreeDataPool.add(this.dialogForm.text, this.dialogForm.node);
@@ -267,7 +287,6 @@
       this.showDialog = true;
     },
     itemClick(evt, treeId, treeNode) {
-
       this.TreeDataPool.selectedNode = treeNode;
       this.TreeDataPool.treeType = this.treeName;
 
@@ -296,7 +315,7 @@
     itemCheck(evt, treeId, treeNode) {
       this.TreeDataPool.selectedNode = treeNode;
       this.TreeDataPool.treeType = this.treeName;
-      debugger
+      debugger;
       // 澶氶��
       // this.ztreeObj.checkNode(treeNode, true, false, false);
       let checkedNodes = this.ztreeObj.getCheckedNodes(true);
@@ -306,25 +325,24 @@
       this.TreeDataPool.countCheckedNodes(checkedNodes);
 
       // 淇濆瓨涓�浠芥暟鎹�
-      this.TreeDataPool.activeTreeData = this.ztreeObj.getNodes()
-      
+      this.TreeDataPool.activeTreeData = this.ztreeObj.getNodes();
     },
     //灞曞紑
     itemExpand(e, id, node) {
-      delete this.TreeDataPool.foldNodeList[node.id]
+      delete this.TreeDataPool.foldNodeList[node.id];
     },
     // 鎶樺彔
     itemCollapse(e, id, node) {
-      this.TreeDataPool.foldNodeList[node.id] = true
+      this.TreeDataPool.foldNodeList[node.id] = true;
     },
     dropNode(node, item, draggedItem, e) {
       // console.log('dropNode', node, item, draggedItem);
-      this.TreeDataPool.dropNode(draggedItem.id, item.id)
+      this.TreeDataPool.dropNode(draggedItem.id, item.id);
     },
     showCameraPic(nodeId) {
-      this.TreeDataPool.showBaseImage(nodeId)
-    }
-  }
+      this.TreeDataPool.showBaseImage(nodeId);
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
@@ -385,7 +403,7 @@
 }
 .tree-menu {
   // max-width: 350px;
-  overflow-x: hidden;
+  overflow-x: auto;
   overflow-y: hidden;
   margin-bottom: 4px;
 }
@@ -410,8 +428,6 @@
   background: rgba(0, 0, 0, 0.4);
 }
 .tree-menu:hover {
-  overflow-x: visible;
   overflow-y: auto;
-  margin-bottom: 0px;
 }
 </style>
diff --git a/src/components/searching/UploadImg.vue b/src/components/searching/UploadImg.vue
index 7ed4555..56eb295 100644
--- a/src/components/searching/UploadImg.vue
+++ b/src/components/searching/UploadImg.vue
@@ -5,14 +5,21 @@
         鏁版嵁婧�
         <i
           class="iconfont iconchushaixuanxiang close"
-          style="margin-left:200px;cursor:pointer;color:#ccc"
+          style="margin-left: 200px; cursor: pointer; color: #ccc"
           @click="closeUploadImg"
         ></i>
       </h2>
       <p class="compearValue">
         <span
-          style="font-family: PingFangSC-Regular;font-size: 13px;color: #333333;letter-spacing: 0.28px;margin-right:10px"
-        >瀵规瘮闃堝��</span>
+          style="
+            font-family: PingFangSC-Regular;
+            font-size: 13px;
+            color: #333333;
+            letter-spacing: 0.28px;
+            margin-right: 10px;
+          "
+          >瀵规瘮闃堝��</span
+        >
         <el-input-number
           size="mini"
           v-model="VideoPhotoData.threshold"
@@ -22,7 +29,12 @@
         ></el-input-number>
       </p>
       <div class="upload-img-box">
-        <img :src="'/httpImage/'+tempUploadImg" alt="涓存椂娴嬭瘯" v-show="!displayUpload" class="bigPhoto" />
+        <img
+          :src="'/httpImage/' + tempUploadImg"
+          alt="涓存椂娴嬭瘯"
+          v-show="!displayUpload"
+          class="bigPhoto"
+        />
         <el-upload
           ref="upload"
           :list-type="'picture-card'"
@@ -39,11 +51,22 @@
           <i
             ref="uploadIcon"
             class="el-icon-upload"
-            style="color:#3D68E1;font-size:60px;position:relative;left:50px"
+            style="
+              color: #3d68e1;
+              font-size: 60px;
+              position: relative;
+              left: 50px;
+            "
           ></i>
           <span
             class="el-upload__text"
-            style="font-size:12px;color:#3D68E1;position:relative;top:25px;left:-30px"
+            style="
+              font-size: 12px;
+              color: #3d68e1;
+              position: relative;
+              top: 25px;
+              left: -30px;
+            "
           >
             <em>鐐瑰嚮閫夋嫨涓婁紶鍥剧墖</em>
           </span>
@@ -54,24 +77,35 @@
           <img width="100%" :src="dialogImageUrl" alt />
         </el-dialog>-->
       </div>
-      <div class="res-img-box" v-if="resReady" :style="oneLine? 'height:95px':'height:185px'">
-        <div class="single-box fl" v-for="(item, index) in realSmallPath" :key="index">
+      <div
+        class="res-img-box"
+        v-if="resReady"
+        :style="oneLine ? 'height:95px' : 'height:185px'"
+      >
+        <div
+          class="single-box fl"
+          v-for="(item, index) in realSmallPath"
+          :key="index"
+        >
           <img
-            :src="item
-              ? '/httpImage/'+item
-              : tempImg
-          "
-            @click="selected($event,index)"
-            style="max-height:100%"
-            :style="index == clickNum ? 'border:1px solid #FF7733':''"
+            :src="item ? '/httpImage/' + item : tempImg"
+            @click="selected($event, index)"
+            style="max-height: 100%"
+            :style="index == clickNum ? 'border:1px solid #FF7733' : ''"
           />
-          <img class="select" v-show="index == clickNum" :src="selectedIcon" alt />
+          <img
+            class="select"
+            v-show="index == clickNum"
+            :src="selectedIcon"
+            alt
+          />
         </div>
-        <div class="single-box fl" v-for="(item, index) in unrealSmallPath" :key="index+'t'">
-          <img :src="item
-                ? item
-                : tempImg
-            " />
+        <div
+          class="single-box fl"
+          v-for="(item, index) in unrealSmallPath"
+          :key="index + 't'"
+        >
+          <img :src="item ? item : tempImg" />
         </div>
       </div>
       <el-select
@@ -80,20 +114,28 @@
         multiple
         collapse-tags
         @change="selectChange"
-        style="margin: 15px 0;width: 100%"
+        style="margin: 15px 0; width: 100%"
         placeholder="璇烽�夋嫨"
       >
         <el-option
           v-for="item in VideoPhotoData.tabsForUploadImg"
-          :key="item.key+'p'"
+          :key="item.key + 'p'"
           :label="item.title"
           :disabled="item.disabled"
           :value="item.key"
         ></el-option>
       </el-select>
-      <el-button-group v-if="resReady" style="margin-top:10px;">
-        <el-button type="info" size="small" @click="reUpload">閲嶆柊涓婁紶</el-button>
-        <el-button type="primary" size="small" style="margin-left:10px" @click="searchStart">寮�濮嬫绱�</el-button>
+      <el-button-group v-if="resReady" style="margin-top: 10px">
+        <el-button type="info" size="small" @click="reUpload"
+          >閲嶆柊涓婁紶</el-button
+        >
+        <el-button
+          type="primary"
+          size="small"
+          style="margin-left: 10px"
+          @click="searchStart"
+          >寮�濮嬫绱�</el-button
+        >
       </el-button-group>
     </div>
   </div>
@@ -101,26 +143,26 @@
 
 <script>
 import Card from "../subComponents/Card";
-import request from "@/scripts/httpRequest"
+import request from "@/scripts/httpRequest";
 export default {
   watch: {
     "VideoPhotoData.tabsForUploadImg": function (value) {
-      this.selectChange()
+      this.selectChange();
     },
     "VideoPhotoData.uploadImg": {
       handler(val) {
         // console.log('val:::', val)
         if (val !== "") {
-          this.tempUploadImg = val
-          this.realSmallPath = [val]
-          this.unrealSmallPath = [this.tempImg, this.tempImg]
-          this.resReady = true
-          this.displayUpload = false
+          this.tempUploadImg = val;
+          this.realSmallPath = [val];
+          this.unrealSmallPath = [this.tempImg, this.tempImg];
+          this.resReady = true;
+          this.displayUpload = false;
         }
       },
       immediate: true,
-      deep: true
-    }
+      deep: true,
+    },
   },
   computed: {
     getResImg() {
@@ -139,7 +181,7 @@
         arr.length = 9;
       }
       return arr;
-    }
+    },
   },
   data() {
     return {
@@ -159,21 +201,21 @@
       realSmallPath: [],
       unrealSmallPath: [],
       oneLine: true,
-      multiSelect: false
+      multiSelect: false,
     };
   },
   mounted() {
-    this.selectChange()
+    this.selectChange();
     this.$nextTick(() => {
-      let scrollContain = this.$refs.rightSection
-      console.log("璧嬪�煎鍣細", scrollContain)
-      this.VideoPhotoData.scrollContainDom = scrollContain
-    })
+      let scrollContain = this.$refs.rightSection;
+      console.log("璧嬪�煎鍣細", scrollContain);
+      this.VideoPhotoData.scrollContainDom = scrollContain;
+    });
   },
   methods: {
     closeUploadImg() {
-      this.VideoPhotoData.uploadDiaplay = false
-      this.VideoPhotoData.clearStatus()
+      this.VideoPhotoData.uploadDiaplay = false;
+      this.VideoPhotoData.clearStatus();
     },
     selectChange() {
       if (!this.compareTabs.includes("esData") && this.compareTabs.length > 0) {
@@ -182,7 +224,7 @@
             this.VideoPhotoData.tabsForUploadImg[i].disabled = true;
           }
         }
-        this.$emit('labelDisabled', true)
+        this.$emit("labelDisabled", true);
         return;
       }
       if (this.compareTabs.includes("esData")) {
@@ -191,7 +233,7 @@
             this.VideoPhotoData.tabsForUploadImg[i].disabled = true;
           }
         }
-        this.$emit('labelDisabled', false)
+        this.$emit("labelDisabled", false);
       } else {
         for (let i = 0; i < this.VideoPhotoData.tabsForUploadImg.length; i++) {
           this.VideoPhotoData.tabsForUploadImg[i].disabled = false;
@@ -199,36 +241,38 @@
       }
     },
     selected(e, index) {
-      this.clickNum = index
+      this.clickNum = index;
     },
     async uploadImg(param) {
-      const fd = new FormData()
-      fd.append('file', param.file)
-      fd.append('picQuality', this.VideoPhotoData.threshold)
+      const fd = new FormData();
+      fd.append("file", param.file);
+      fd.append("picQuality", this.VideoPhotoData.threshold);
       let res = await request({
-        method: 'post',
+        method: "post",
         url: `/data/api-v/dbperson/faceExtract`,
-        data: fd
-      })
-      this.unrealSmallPath.length = 0
-      console.log("鍒囧浘杩斿洖锛�", res)
+        data: fd,
+      });
+      this.unrealSmallPath.length = 0;
+      console.log("鍒囧浘杩斿洖锛�", res);
       if (res.success) {
-        document.querySelector(".el-upload-list").querySelector("img").src = "/httpImage/" + res.data.uploadImage
+        document.querySelector(".el-upload-list").querySelector("img").src =
+          "/httpImage/" + res.data.uploadImage;
         this.resReady = true;
-        this.realSmallPath = res.data.smImage
-        this.VideoPhotoData.isHaveRealSmallImg = res.data.smImage.length > 0 ? true : false
+        this.realSmallPath = res.data.smImage;
+        this.VideoPhotoData.isHaveRealSmallImg =
+          res.data.smImage.length > 0 ? true : false;
         if (res.data.smImage.length > 3) {
-          this.oneLine = false
+          this.oneLine = false;
         } else {
-          this.oneLine = true
+          this.oneLine = true;
         }
         if (res.data.smImage.length % 3 !== 0) {
           // 鐢ㄨ櫄鎷熶汉鍍忚ˉ鍏ㄦ暣琛�
-          const length = res.data.smImage.length % 3
-          console.log("鐪嬬湅length鐨勫��", length)
-          this.unrealSmallPath.length = 0
+          const length = res.data.smImage.length % 3;
+          console.log("鐪嬬湅length鐨勫��", length);
+          this.unrealSmallPath.length = 0;
           for (var i = 0; i < 3 - length; i++) {
-            this.unrealSmallPath.push(this.tempImg)
+            this.unrealSmallPath.push(this.tempImg);
           }
         }
       }
@@ -237,36 +281,36 @@
       this.$notify({
         title: "鎴愬姛",
         message: "鍥剧墖涓婁紶鎴愬姛锛�",
-        type: "success"
+        type: "success",
       });
       this.resReady = true;
-      console.log("鏂囦欢鍒楄〃锛�", file, fileList)
-      console.log("涓婁紶鐨勬枃浠讹細", this.bigPhoto)
+      console.log("鏂囦欢鍒楄〃锛�", file, fileList);
+      console.log("涓婁紶鐨勬枃浠讹細", this.bigPhoto);
     },
     beforeUpload() {
       this.$refs.uploadIcon.parentNode.classList.add("s-display");
-      console.log("涓婁紶涔嬪墠鏂囦欢锛�", this.bigPhoto)
+      console.log("涓婁紶涔嬪墠鏂囦欢锛�", this.bigPhoto);
     },
     uploadError(err) {
       this.$notify({
         title: "澶辫触",
-        message: "鍥剧墖涓婁紶澶辫触锛�" + err.data,
-        type: "error"
+        message: err.msg,
+        type: "error",
       });
-      console.log("涓婁紶澶辫触", err)
+      console.log("涓婁紶澶辫触", err);
       this.dialogImageUrl = "";
       this.dialogVisible = false;
       this.$refs.uploadIcon.parentNode.classList.remove("s-display");
     },
     toAdd(item) {
-      this.CardList.addBaseList.push(item)
+      this.CardList.addBaseList.push(item);
     },
     removeImg() {
       this.resReady = false;
       this.$refs.uploadIcon.parentNode.classList.remove("s-display");
     },
     reUpload() {
-      this.displayUpload = true
+      this.displayUpload = true;
       this.$refs.upload.clearFiles();
       // this.dialogImageUrl = "";
       // this.dialogVisible = false;
@@ -279,30 +323,30 @@
           title: "璀﹀憡",
           type: "warning",
           message: "鎮ㄨ繕娌℃湁閫夋嫨瑕佹瘮瀵圭殑鐩爣搴�",
-        })
-        return
+        });
+        return;
       }
       this.rightSectionDisplay = true;
       this.VideoPhotoData.uploadType = true;
-      this.VideoPhotoData.picUrl = this.realSmallPath[this.clickNum]
-      this.VideoPhotoData.compareTabs = this.compareTabs
-      console.log("閫夌殑搴擄細", this.compareTabs)
-      this.VideoPhotoData.showType = "findByPic"
+      this.VideoPhotoData.picUrl = this.realSmallPath[this.clickNum];
+      this.VideoPhotoData.compareTabs = this.compareTabs;
+      console.log("閫夌殑搴擄細", this.compareTabs);
+      this.VideoPhotoData.showType = "findByPic";
       if (this.displayUpload) {
-        this.VideoPhotoData.findPerson()
+        this.VideoPhotoData.findPerson();
       } else {
-        this.VideoPhotoData.findPerson2()
+        this.VideoPhotoData.findPerson2();
       }
     },
     getDetails(ev, index) {
-      this.CardList.datalist = this.VideoPhotoData.persons
+      this.CardList.datalist = this.VideoPhotoData.persons;
       let obj = this.CardList.datalist[index];
       this.CardList.details = Array.from(
         new Set([...this.CardList.details, ...[obj]])
       );
-      this.VideoPhotoData.activeCard = obj.activeObject.id
-    }
-  }
+      this.VideoPhotoData.activeCard = obj.activeObject.id;
+    },
+  },
 };
 </script>
 <style lang="scss">
@@ -311,7 +355,7 @@
   height: 100%;
   box-sizing: border-box;
   padding: 5px;
-  .el-button--info{
+  .el-button--info {
     color: #222;
   }
   .upload-area {
diff --git a/src/pages/cameraAccess/components/TimeSlider.vue b/src/pages/cameraAccess/components/TimeSlider.vue
index c3b4a8e..14cc70b 100644
--- a/src/pages/cameraAccess/components/TimeSlider.vue
+++ b/src/pages/cameraAccess/components/TimeSlider.vue
@@ -1,226 +1,257 @@
-<template>
-  <div class="sub-time-box">
-    <div class="btn-control">
-      <div class="el-tabs-edit">
-        <span v-if="!editSlider" class="add-btn" @click="handleTabsEdit('','edit')">
-          <i class="el-icon-edit"></i>
-          缂栬緫
-        </span>
-        <span v-else class="add-btn" @click="handleTabsEdit('','lock')">
-          <i class="el-icon-lock"></i>
-          閿佸畾
-        </span>
-      </div>
-      <div class="el-tabs-add">
-        <span class="add-btn" @click="handleTabsEdit('','add')">
-          <i class="iconfont iconhebingxingzhuang"></i>
-          鏂板
-        </span>
-      </div>
-    </div>
-    <el-tabs v-model="activeTab" type="border-card" editable @edit="handleTabsEdit">
-      <el-tab-pane v-for="item in VideoManageData.TimeRules" :key="item.id" :name="item.id">
-        <span slot="label" @click="tabClick(item)" style="width:100px">{{item.name}}</span>
-        <multi-range-slider
-          :timeData="JSON.parse(item.time_rule)"
-          :mainId="`${item.id}_${type}`"
-          :itemId="item.id"
-          :itemName="item.name"
-          :edit="editSlider"
-          @range-update="updateTimeRule"
-        ></multi-range-slider>
-      </el-tab-pane>
-    </el-tabs>
-  </div>
-</template>
-
-<script>
-import MultiRangeSlider from "@/components/subComponents/MultiRangeSlider";
-import { saveTimeRule, deleteTimeRule } from "@/api/timeRule";
-
-export default {
-  name: "TimeSlider",
-  components: {
-    MultiRangeSlider
-  },
-  props: {
-    type: {
-      default: "",
-      type: String
-    }
-  },
-  data() {
-    return {
-      editSlider: false,
-      activeTab: "",
-      activeIndex: 0,
-      cavasLength: 800,
-      allDay: [
-        { day: 1, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 2, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 3, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 4, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 5, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 6, time_range: [{ start: "00:00", end: "24:00" }] },
-        { day: 7, time_range: [{ start: "00:00", end: "24:00" }] }
-      ]
-    };
-  },
-  mounted() {
-    // window.addEventListener('resize', this.windowSizeChange)
-  },
-  methods: {
-    handleTabsEdit(tabId, action) {
-      let tabs = this.VideoManageData.TimeRules;
-      if (action === "add") {
-        let newRule = {
-          id: "",
-          name: "鏃堕棿娈�" + this.VideoManageData.TimeRules.length,
-          time_rule: this.allDay
-        };
-        this.updateTimeRule(newRule);
-      }
-      if (action === "remove") {
-        this.$confirm(
-          "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鍒�, 鎵�鍏宠仈鐨勪换鍔″皢浼氬け鏁堬紝鏄惁缁х画?",
-          {
-            center: true,
-            confirmButtonText: "纭畾",
-            cancelButtonText: "鍙栨秷",
-          }
-        ).then(() => {
-          deleteTimeRule({ id: tabId }).then(rsp => {
-            if (rsp && rsp.success) {
-              this.VideoManageData.getTimeRule();
-              // this.VideoManageData.TimeRules.splice(2, 1)
-              this.activeTab = this.VideoManageData.TimeRules[0].id;
-              this.$notify({
-                type: "success",
-                message: "鍒犻櫎鎴愬姛!"
-              });
-            }
-          });
-        }).catch(() => { });
-      }
-      if (action == "edit") {
-        this.editSlider = true;
-      }
-      if (action == "lock") {
-        this.editSlider = false;
-      }
-    },
-    windowSizeChange() {
-      let timeSlideWidth = document.querySelector(".sub-time-box").clientWidth
-      this.cavasLength = timeSlideWidth
-      console.log("鏃堕棿缁勪欢瀹藉害锛�", timeSlideWidth)
-    },
-    updateTimeRule(rule) {
-      saveTimeRule(rule).then(rsp => {
-        if (rsp && rsp.success) {
-          this.VideoManageData.getTimeRule();
-          this.activeTab = rsp.data.id;
-        }
-      });
-    },
-    tabClick(item) {
-      if (this.activeTab === item.id) {
-        this.$prompt("", "淇敼鍚嶇О", {
-          confirmButtonText: "纭畾",
-          cancelButtonText: "鍙栨秷",
-          inputValue: item.name,
-          inputPattern: /^[\S]{1,16}$/,
-          inputErrorMessage: "鍚嶇О涓嶈兘鍖呭惈绌烘牸"
-        }).then(({ value }) => {
-          this.updateTimeRule({
-            id: item.id,
-            name: value,
-            time_rule: JSON.parse(item.time_rule)
-          });
-          this.$notify({
-            type: "success",
-            message: "鏃堕棿瑙勫垯鍚嶇О淇敼鎴愬姛"
-          });
-        }).catch(() => { });
-      }
-    }
-  }
-};
-</script>
-<style lang='scss'>
-.sub-time-box {
-  padding-right: 30px;
-  position: relative;
-  /* height: calc(100% - 32px);
-  width: 100%;
-  padding: 5px; */
-  /* box-sizing: border-box; */
-  /* border-right: 1px solid #ccc;
-  border-top: 1px solid #ccc;
-  border-bottom: 1px solid #ccc; */
-  .btn-control {
-    position: absolute;
-    margin-top: -27px;
-    top: 0;
-    right: 30px;
-    display: flex;
-    i {
-      font-size: 16px;
-    }
-  }
-  .el-tabs__item {
-    border-right-color: #e2e2e2 !important;
-    border-left-color: #e2e2e2 !important;
-    border-top-color: #e2e2e2 !important;
-  }
-  .el-tab-pane {
-    height: calc(100% - 50px);
-  }
-  // .el-tabs__new-tab {
-  //   margin: 15px 19px 9px 10px;
-  // }
-  .el-tabs {
-    height: 100%;
-  }
-
-  .el-tabs__header {
-    margin: 0px !important;
-    height: 45px !important;
-    border-top: 1px solid #e2e2e2 !important;
-    border-bottom: 1px solid #e2e2e2 !important;
-    background-color: #fff !important;
-    .is-active {
-      border-bottom-color: #fff !important;
-    }
-    .el-tabs__item {
-      line-height: 45px !important;
-    }
-  }
-  .el-tabs__content {
-    overflow: auto !important;
-    height: calc(100% - 51px) !important;
-    padding: 13px 0px !important;
-  }
-  .el-tabs__new-tab {
-    visibility: hidden;
-    // width: 130px;
-  }
-  // .el-tabs-add {
-  //   position: relative;
-  //   display: flex;
-  //   width: 70px;
-  //   top: 32px;
-  //   left: 88%;
-  //   z-index: 1;
-  // }
-  // .el-tabs-edit {
-  //   position: relative;
-  //   display: -webkit-box;
-  //   display: -ms-flexbox;
-  //   display: flex;
-  //   width: 70px;
-  //   top: 47px;
-  //   left: 79%;
-  //   z-index: 1;
-  // }
-}
+<template>
+  <div class="sub-time-box">
+    <div class="btn-control">
+      <div class="el-tabs-edit">
+        <span
+          v-if="!editSlider"
+          class="add-btn"
+          @click="handleTabsEdit('', 'edit')"
+        >
+          <i class="el-icon-edit"></i>
+          缂栬緫
+        </span>
+        <span v-else class="add-btn" @click="handleTabsEdit('', 'lock')">
+          <i class="el-icon-lock"></i>
+          閿佸畾
+        </span>
+      </div>
+      <div class="el-tabs-add">
+        <span class="add-btn" @click="handleTabsEdit('', 'add')">
+          <i class="iconfont iconhebingxingzhuang"></i>
+          鏂板
+        </span>
+      </div>
+    </div>
+    <el-tabs
+      v-model="activeTab"
+      type="border-card"
+      editable
+      @edit="handleTabsEdit"
+    >
+      <el-tab-pane
+        v-for="item in VideoManageData.TimeRules"
+        :key="item.id"
+        :name="item.id"
+      >
+        <span slot="label" @click="tabClick(item)" style="width: 100px">{{
+          item.name
+        }}</span>
+        <multi-range-slider
+          :timeData="JSON.parse(item.time_rule)"
+          :mainId="`${item.id}_${type}`"
+          :itemId="item.id"
+          :itemName="item.name"
+          :edit="editSlider"
+          @range-update="updateTimeRule"
+        ></multi-range-slider>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+import MultiRangeSlider from "@/components/subComponents/MultiRangeSlider";
+import { saveTimeRule, deleteTimeRule } from "@/api/timeRule";
+
+export default {
+  name: "TimeSlider",
+  components: {
+    MultiRangeSlider,
+  },
+  props: {
+    type: {
+      default: "",
+      type: String,
+    },
+  },
+  data() {
+    return {
+      editSlider: false,
+      activeTab: "",
+      activeIndex: 0,
+      cavasLength: 800,
+      allDay: [
+        { day: 1, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 2, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 3, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 4, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 5, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 6, time_range: [{ start: "00:00", end: "24:00" }] },
+        { day: 7, time_range: [{ start: "00:00", end: "24:00" }] },
+      ],
+    };
+  },
+  mounted() {
+    // window.addEventListener('resize', this.windowSizeChange)
+  },
+  methods: {
+    handleTabsEdit(tabId, action) {
+      let tabs = this.VideoManageData.TimeRules;
+      if (action === "add") {
+        let newRule = {
+          id: "",
+          name: "鏃堕棿娈�" + this.VideoManageData.TimeRules.length,
+          time_rule: this.allDay,
+        };
+        this.updateTimeRule(newRule);
+      }
+      if (action === "remove") {
+        console.log();
+
+        if (this.VideoManageData.TimeRules.length == 1) {
+          this.$notify({
+            title: "璀﹀憡",
+            message: "姝ゆ椂闂存姝e湪浣跨敤涓紝鏃犳硶鍒犻櫎锛�",
+            type: "warning",
+          });
+
+          return;
+        }
+
+        this.$confirm(
+          "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鍒�, 鎵�鍏宠仈鐨勪换鍔″皢浼氬け鏁堬紝鏄惁缁х画?",
+          {
+            center: true,
+            confirmButtonText: "纭畾",
+            cancelButtonText: "鍙栨秷",
+          }
+        )
+          .then(() => {
+            deleteTimeRule({ id: tabId }).then((rsp) => {
+              if (rsp && rsp.success) {
+                this.VideoManageData.getTimeRule();
+                // this.VideoManageData.TimeRules.splice(2, 1)
+                this.activeTab = this.VideoManageData.TimeRules[0].id;
+                this.$notify({
+                  type: "success",
+                  message: "鍒犻櫎鎴愬姛!",
+                });
+              }
+            });
+          })
+          .catch(() => {});
+      }
+      if (action == "edit") {
+        this.editSlider = true;
+      }
+      if (action == "lock") {
+        this.editSlider = false;
+      }
+    },
+    windowSizeChange() {
+      let timeSlideWidth = document.querySelector(".sub-time-box").clientWidth;
+      this.cavasLength = timeSlideWidth;
+      console.log("鏃堕棿缁勪欢瀹藉害锛�", timeSlideWidth);
+    },
+    updateTimeRule(rule) {
+      saveTimeRule(rule).then((rsp) => {
+        if (rsp && rsp.success) {
+          this.VideoManageData.getTimeRule();
+          this.activeTab = rsp.data.id;
+        }
+      });
+    },
+    tabClick(item) {
+      if (this.activeTab === item.id) {
+        this.$prompt("", "淇敼鍚嶇О", {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          inputValue: item.name,
+          inputPattern: /^[\S]{1,16}$/,
+          inputErrorMessage: "鍚嶇О涓嶈兘鍖呭惈绌烘牸",
+        })
+          .then(({ value }) => {
+            this.updateTimeRule({
+              id: item.id,
+              name: value,
+              time_rule: JSON.parse(item.time_rule),
+            });
+            this.$notify({
+              type: "success",
+              message: "鏃堕棿瑙勫垯鍚嶇О淇敼鎴愬姛",
+            });
+          })
+          .catch(() => {});
+      }
+    },
+  },
+};
+</script>
+<style lang='scss'>
+.sub-time-box {
+  padding-right: 30px;
+  position: relative;
+  /* height: calc(100% - 32px);
+  width: 100%;
+  padding: 5px; */
+  /* box-sizing: border-box; */
+  /* border-right: 1px solid #ccc;
+  border-top: 1px solid #ccc;
+  border-bottom: 1px solid #ccc; */
+  .btn-control {
+    position: absolute;
+    margin-top: -27px;
+    top: 0;
+    right: 30px;
+    display: flex;
+    i {
+      font-size: 16px;
+    }
+  }
+  .el-tabs__item {
+    border-right-color: #e2e2e2 !important;
+    border-left-color: #e2e2e2 !important;
+    border-top-color: #e2e2e2 !important;
+  }
+  .el-tab-pane {
+    height: calc(100% - 50px);
+  }
+  // .el-tabs__new-tab {
+  //   margin: 15px 19px 9px 10px;
+  // }
+  .el-tabs {
+    height: 100%;
+  }
+
+  .el-tabs__header {
+    margin: 0px !important;
+    height: 45px !important;
+    border-top: 1px solid #e2e2e2 !important;
+    border-bottom: 1px solid #e2e2e2 !important;
+    background-color: #fff !important;
+    .is-active {
+      border-bottom-color: #fff !important;
+    }
+    .el-tabs__item {
+      line-height: 45px !important;
+    }
+  }
+  .el-tabs__content {
+    overflow: auto !important;
+    height: calc(100% - 51px) !important;
+    padding: 13px 0px !important;
+  }
+  .el-tabs__new-tab {
+    visibility: hidden;
+    // width: 130px;
+  }
+  // .el-tabs-add {
+  //   position: relative;
+  //   display: flex;
+  //   width: 70px;
+  //   top: 32px;
+  //   left: 88%;
+  //   z-index: 1;
+  // }
+  // .el-tabs-edit {
+  //   position: relative;
+  //   display: -webkit-box;
+  //   display: -ms-flexbox;
+  //   display: flex;
+  //   width: 70px;
+  //   top: 47px;
+  //   left: 79%;
+  //   z-index: 1;
+  // }
+}
 </style>
\ No newline at end of file
diff --git a/src/pages/datapush/index/RightEvent.vue b/src/pages/datapush/index/RightEvent.vue
index f4dce22..0edd147 100644
--- a/src/pages/datapush/index/RightEvent.vue
+++ b/src/pages/datapush/index/RightEvent.vue
@@ -1,926 +1,990 @@
-<template>
-  <div class="s-event-push-right">
-    <div class="s-right-config">
-      <el-form>
-        <el-form-item label="鍚嶇О">
-          <el-input
-            v-model="taskEditData.name"
-            placeholder="璇疯緭鍏ュ悕绉�"
-            size="small"
-            style="width:400px"
-          ></el-input>
-        </el-form-item>
-
-        <el-form-item label="鏃堕棿">
-          <el-date-picker
-            v-model="taskEditData.time"
-            format="yyyy-MM-dd HH:mm:ss"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            type="datetimerange"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡"
-            size="small"
-          ></el-date-picker>
-        </el-form-item>
-
-        <span style="line-height: 38px;">鎺ㄩ�佹湇鍔″櫒</span>
-        <div class="icon-btn" v-if="urls.length < 1" @click="addUrl()">
-          <i class="el-icon-circle-plus-outline"></i>
-          <span>&nbsp;娣诲姞鎺ュ彛鍦板潃</span>
-        </div>
-        <div v-for="(item,index) in urls" :key="item.hash" class="flex-box server-url">
-          <div>
-            <el-checkbox v-model="item.enable"></el-checkbox>
-            <span class="ml20">{{'URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'}}</span>
-            <el-input v-model="item.url" style="width:360px;margin-left:0px;" size="small"></el-input>
-          </div>
-          <div class="server-add">
-            <i
-              class="el-icon-remove-outline"
-              @click="delUrl(index)"
-              style="color:red;margin-right:10px"
-            />
-            <i class="el-icon-circle-plus-outline" @click="addUrl()"></i>
-          </div>
-        </div>
-
-        <el-form-item label="鑱斿姩鏂瑰紡" style="margin-top: 20px;width:100">
-          <el-select v-model="taskEditData.lineWay" placeholder="璇烽�夋嫨" size="small">
-            <el-option
-              v-for="item in taskEditData.lineOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-
-        <el-form-item label="鏍囩">
-          <el-radio v-model="taskEditData.radioValue" label="1">婊¤冻鍏ㄩ儴</el-radio>
-          <el-radio v-model="taskEditData.radioValue" label="2">婊¤冻浠绘剰涓�涓�</el-radio>
-        </el-form-item>
-      </el-form>
-    </div>
-    <div class="s-right-mid"></div>
-    <div class="s-right-rule">
-      <div class="rule-title">
-        <b style="margin-right:20px">浠诲姟閰嶇疆</b>
-        <div class="icon-btn" v-if="dataList.length === 0" @click="createSet">
-          <i class="el-icon-circle-plus-outline"></i>
-          <span>&nbsp;鏂板</span>
-        </div>
-        <div class="icon-btn" v-if="dataList.length > 0" @click="cleanSet">
-          <i class="el-icon-remove-outline"></i>
-          <span>&nbsp;娓呯┖</span>
-        </div>
-      </div>
-
-      <div v-for="(rule,index) in dataList" :key="index" style="margin-top:10px">
-        <el-row :gutter="20">
-          <!-- 涓婚 -->
-          <el-col :span="4">
-            <el-select
-              v-model="rule.topic_type"
-              placeholder="璇烽�夋嫨"
-              @change="selectTopic(rule, true)"
-              size="small"
-            >
-              <el-option
-                v-for="item in rule.topicTypeOptions"
-                :key="item.id"
-                :label="item.name"
-                :value="item.value"
-              ></el-option>
-            </el-select>
-          </el-col>
-
-          <!-- 杩囨护鍊� -->
-          <el-col :span="4">
-            <el-select
-              v-model="rule.topic_arg"
-              placeholder="璇烽�夋嫨"
-              @change="selectArg(rule, true)"
-              size="small"
-            >
-              <el-option
-                v-for="item in rule.topicArgOptions"
-                :key="item.id"
-                :label="item.name"
-                :value="item.value"
-              ></el-option>
-            </el-select>
-          </el-col>
-
-          <!-- 鎿嶄綔绗� -->
-          <el-col :span="4">
-            <el-select v-model="rule.operator" placeholder="璇烽�夋嫨" size="small">
-              <el-option label="==" value="="></el-option>
-            </el-select>
-          </el-col>
-
-          <!-- 鍊肩被鍨� -->
-          <el-col :span="4">
-            <el-select
-              v-model="rule.operator_type"
-              placeholder="璇烽�夋嫨"
-              @change="selectOperator(rule, true)"
-              size="small"
-            >
-              <el-option
-                v-for="item in rule.operatorTypeOpionts"
-                :key="item.id"
-                :label="item.name"
-                :value="item.value"
-              ></el-option>
-            </el-select>
-          </el-col>
-
-          <!-- 杩囨护鍊� -->
-          <el-col :span="4">
-            <div v-if="rule.operator_type === 'custom'">
-              <el-input v-model="rule.rule_value" placeholder="璇疯緭鍏ュ唴瀹�" size="small"></el-input>
-            </div>
-            <div v-else>
-              <el-select
-                v-model="rule.rule_values"
-                multiple
-                collapse-tags
-                placeholder="璇烽�夋嫨"
-                size="small"
-                @change="selectValue( rule, $event)"
-              >
-                <el-option
-                  v-for="item in rule.ruleValueOptions"
-                  :key="item.id"
-                  :label="item.name"
-                  :disabled="item.disabled"
-                  :value="item.value"
-                ></el-option>
-              </el-select>
-            </div>
-          </el-col>
-          <el-col :span="4">
-            <div class="rule-edit-btn">
-              <i
-                v-show="dataList.length > 1"
-                class="el-icon-remove-outline"
-                @click="delRule(index)"
-                style="color:red;margin-right:10px"
-              />
-              <i
-                v-show="index === dataList.length -1"
-                class="el-icon-circle-plus-outline"
-                @click="addRule()"
-                style="color:#3D68E1"
-              ></i>
-            </div>
-          </el-col>
-        </el-row>
-        <el-row></el-row>
-      </div>
-
-      <div class="rule-title2">
-        <b>瑙勫垯</b>
-        <div class="div-border" v-html="taskEditData.eventTxt"></div>
-      </div>
-      <div class="config-item">
-        <b>鎺ㄩ�佸瓧娈�</b>
-        <el-button type="primary" size="mini" @click="openPushSetDialog">璁剧疆</el-button>
-      </div>
-      <div class="save-btn">
-        <el-button type="info" size="small" @click="onCancle" style="color:#222">鍙栨秷</el-button>
-        <el-button type="primary" @click="eventPushsSave" size="small">淇濆瓨</el-button>
-      </div>
-    </div>
-    <el-dialog
-      :visible="pushFieldDialog"
-      :append-to-body="false"
-      :close-on-click-modal="false"
-      class="dialog-push-field"
-      @close="pushFieldDialog=false"
-    >
-      <div slot="title" class="slot-title">
-        <p>璇烽�夋嫨鎯宠鎺ㄩ�佺殑瀛楁</p>
-        <div class="right">
-          <el-checkbox v-model="allFieldChecked" @change="allCheckChange"></el-checkbox>
-        </div>
-      </div>
-      <div class="check-area" v-for="configObj in tempPushSet" :key="configObj.id">
-        <div class="header">
-          <div class="title">{{configObj.name}}</div>
-          <div class="right">
-            <el-checkbox v-model="configObj.checked" @change="toggleConfigCheck(configObj)">鍏ㄩ��</el-checkbox>
-          </div>
-        </div>
-        <div class="flex-box flex-wrap">
-          <div class="param flex-box" v-for="param in configObj.children" :key="param.id">
-            <el-checkbox v-model="param.checked" @change="checkChildren"></el-checkbox>
-            <span class="param-name">{{param.name}}</span>
-            <el-input
-              v-model="param.alias"
-              size="mini"
-              :ref="`input_${param.id}`"
-              @input="varifyField(param)"
-              :style="{color:param.error?'red':'',borderColor:param.error?'red':''}"
-            ></el-input>
-          </div>
-        </div>
-      </div>
-      <div slot="footer" class="text-center">
-        <el-button size="small" @click="canclePushFieldSet">鍙栨秷</el-button>
-        <el-button
-          size="small"
-          type="primary"
-          :disabled="disabledPushFieldSet"
-          @click="submitPushFieldSet"
-        >淇濆瓨</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-<script>
-
-import { eventPushsSave, findByEventTopic, getPushSet } from "@/api/event";
-import { findDictionaryByType, findDictionaryByID } from "@/api/dictionary";
-import { getTaskList } from "@/api/search";
-
-export default {
-  name: "rightEvent",
-  props: {
-    eventObject: {
-      type: Object,
-      default: () => {
-        return {};
-      }
-    }
-  },
-  computed: {
-    urls() {
-      return this.taskEditData.urls
-    }
-  },
-  data() {
-    return {
-      taskEditData: {},
-      dataList: [],
-      dictionary: [],
-      cameras: [],
-      tasks: [],
-      tables: [],
-      baseRule: {
-        event_push_id: "",
-        id: "",
-        operator: "==",
-        operator_type: "",
-        rule_value: "",
-        rule_values: [],
-        topic_arg: "",
-        topic_type: "",
-        topicTypeOptions: {},
-        topicArgOptions: {},
-        operatorOptions: {},
-        operatorTypeOpionts: {},
-        ruleValueOptions: []
-      },
-      pushFieldDialog: false,
-      tempPushSet: [],
-      pushFields: [],
-      allFieldChecked: false,
-      disabledPushFieldSet: true,
-    };
-  },
-  watch: {
-    eventObject: {
-      handler(newVal, oldVal) {
-        this.taskEditData.enable = this.eventObject.enable;
-        if (newVal !== oldVal) {
-          if (this.taskEditData.id !== newVal.id) {
-            this.dataList = [];
-
-            this.taskEditData.id = newVal.id;
-            this.taskEditData.name = newVal.name;
-            this.taskEditData.time = [
-              this.eventObject.time_start,
-              this.eventObject.time_end
-            ];
-            this.taskEditData.serverIp = newVal.ip_ports;
-            this.taskEditData.urls = newVal.urls;
-            this.taskEditData.lineWay = newVal.link_type;
-            this.taskEditData.eventTxt = newVal.rule_text;
-            this.taskEditData.radioValue = newVal.is_satisfy_all ? "1" : "2";
-
-            if (!this.taskEditData.urls) {
-              this.$set(this.taskEditData, "urls", [])
-            }
-            //this.taskEditData.push_set = this.eventObject.push_set;
-            if (!this.eventObject.push_set.length) {
-              this.$set(this.taskEditData, "push_set", this.pushFields)
-            } else {
-              this.$set(this.taskEditData, "push_set", this.eventObject.push_set)
-            }
-            if (newVal.rules) {
-              newVal.rules.forEach(element => {
-                let newRule = Object.assign(JSON.parse(JSON.stringify(this.baseRule)), element)
-                this.dataList.push(newRule)
-                this.selectTopic(newRule);
-                this.selectOperator(newRule);
-              })
-            }
-          }
-        }
-      },
-      deep: true
-    },
-    tempPushSet: {
-      handler(n, o) {
-        let _this = this;
-        let flag = false;
-        n.forEach(configObj => {
-          let notChecked = configObj.children.find(param => !param.checked);
-          if (!notChecked) {
-            configObj.checked = true;
-          } else {
-            configObj.checked = false;
-          }
-          let someoneChecked = configObj.children.find(param => param.checked);
-          if (someoneChecked) {
-            flag = true
-          }
-
-        });
-        if (flag) {
-          this.disabledPushFieldSet = false;
-        } else {
-          this.disabledPushFieldSet = true;
-        }
-      },
-      deep: true
-    }
-  },
-  created() {
-    this.reAdd();
-  },
-  mounted() {
-    // 鍔犺浇瀛楀吀
-    this.findByType();
-    this.getCameras();
-    this.getTasks();
-    this.getPushFields();
-  },
-  methods: {
-    openPushSetDialog() {
-      this.pushFieldDialog = true;
-      this.tempPushSet = JSON.parse(JSON.stringify(this.taskEditData.push_set));
-      this.checkFlag()
-    },
-    checkFlag() {
-      // debugger
-      let flag = true
-      this.tempPushSet.forEach(item => {
-        if (item.checked == false) {
-          flag = false
-        }
-      });
-      this.allFieldChecked = flag
-    },
-    checkChildren(val) {
-      console.log(val, 12121);
-      if (val == false) {
-        this.allFieldChecked = false
-      } else if (val == true && this.allFieldChecked == false) {
-        this.$nextTick(() => {
-          this.checkFlag()
-        })
-      }
-
-    },
-    varifyField(param) {
-      var reg = /^[A-Za-z]+[0-9-_]?$/;
-      if (!reg.test(param.alias)) {
-        this.$message('璇疯緭鍏ュ悎娉曞瓧娈靛悕');
-        param.error = true;
-      } else {
-        param.error = false;
-      }
-      // this.pushFields.forEach(configObj => {
-      //   configObj.children.find(param => param.error)
-      // })
-
-    },
-    canclePushFieldSet() {
-      this.pushFieldDialog = false;
-    },
-    allCheckChange(val) {
-
-      this.tempPushSet.forEach(function (item) {
-        item.checked = val
-        item.children.forEach(function (child) {
-          child.checked = val
-        })
-      })
-    },
-    submitPushFieldSet() {
-      let flag = false;
-      //this.pushFields.forEach(configObj => {
-      this.tempPushSet.forEach(configObj => {
-        let errorOne = configObj.children.find(param => param.checked && param.error);
-        if (errorOne) {
-          this.$notify({
-            type: 'error',
-            message: '璇峰皢閫変腑瀛楁杈撳叆鍚堟硶瀛楁鍚�'
-          })
-          flag = true
-        }
-      });
-      if (flag) {
-        //NO SUBMIT
-        return
-      }
-
-      this.taskEditData.push_set = this.tempPushSet;
-      this.pushFieldDialog = false;
-
-      // 淇濆瓨瑙勫垯
-      this.eventPushsSave()
-    },
-    toggleConfigCheck(configObj) {
-
-      configObj.children.forEach(child => {
-        child.checked = configObj.checked
-      })
-      this.checkFlag()
-    },
-    getPushFields() {
-      let _this = this;
-      getPushSet().then(res => {
-        _this.pushFields = res.data;
-      })
-      // this.pushFields = [
-      //   {          id: 'sxjxx', name: '鎽勫儚鏈轰俊鎭�', checked: false, alias: '',
-      //     children: [
-      //       { name: '鎽勫儚鏈篒D', checked: false, alias: 'cameraID', id: 'cameraID', children: null },
-      //       { name: '鎽勫儚鏈哄悕绉�', checked: false, alias: 'cameraName', id: 'cameraName', children: null },
-      //       { name: '鎽勫儚鏈哄湴鍧�', checked: false, alias: 'cameraAddr', id: 'cameraAddr', children: null },
-      //       { name: '鎽勫儚鏈哄潃', checked: false, alias: 'cameraAdr', id: 'cameraAdr', children: null }
-      //     ]        },
-      //   {          id: 'cjxx', name: '鍦烘櫙淇℃伅', checked: false, alias: '',
-      //     children: [{ name: '鍦烘櫙ID', checked: false, alias: 'taskId', id: 'tskId', children: null }]        },
-      // ];
-
-    },
-    addUrl() {
-      this.taskEditData.urls.push({
-        checked: true,
-        hash: Math.random().toString(36).substr(2),
-        url: "",
-      });
-    },
-    delUrl(index) {
-      this.$set(this.taskEditData.urls, index, this.baseRule);
-      this.taskEditData.urls.splice(index, 1);
-    },
-    // 淇濆瓨
-    async eventPushsSave() {
-      // 鍒ゆ柇淇濆瓨鐨刬p鏄惁绗﹀悎鏍煎紡瑕佹眰
-      if (this.taskEditData.urls.length < 1) {
-        this.$notify({
-          type: "warning",
-          message: "璇烽厤缃嚦灏戜竴鍙版帹閫佹湇鍔″櫒"
-        });
-        return;
-      }
-      for (let i = 0; i < this.taskEditData.urls.length; i++) {
-        if (this.taskEditData.urls[i].url.length < 1) {
-          this.$notify({
-            type: "warning",
-            message: "鎺ュ彛URL鍦板潃涓嶅厑璁镐负绌�"
-          });
-          return;
-        }
-      }
-
-      // 鎷兼帴瀛楃涓�
-      let ruleDesc = []
-      this.dataList.forEach(i => {
-        let str = "";
-        if (i.topic_type) {
-          str += this.getNameByValue(i.topicTypeOptions, i.topic_type);
-        }
-        if (i.topic_arg) {
-          str += this.getNameByValue(i.topicArgOptions, i.topic_arg);
-        }
-        if (i.operator === '==') {
-          str += ' = ';
-        }
-
-        if (i.rule_value === "all*all") {
-          str += "鍏ㄩ儴";
-        } else if (i.rule_value === "null*null") {
-          str += "绌�";
-        } else {
-          str += i.rule_value;
-        }
-
-        if (str.length > 0) {
-          ruleDesc.push(str);
-        }
-      });
-      // 澶勭悊瑙勫垯鍒楄〃鏁版嵁缁撴瀯
-      let ruleList = this.dataList.map(i => {
-        return {
-          topic_type: i.topic_type,
-          topic_arg: i.topic_arg,
-          operator: i.operator,
-          operator_type: i.operator_type,
-          rule_value: i.rule_value
-        }
-      });
-
-      let json = {
-        enable: this.taskEditData.enable,
-        id: this.taskEditData.id,
-        ip_ports: this.taskEditData.serverIp,
-        name: this.taskEditData.name,
-        rule_text: ruleDesc.join("<br/>"),
-        rules: ruleList,
-        time_start: this.taskEditData.time[0],
-        time_end: this.taskEditData.time[1],
-        urls: this.taskEditData.urls,
-        is_satisfy_all: this.taskEditData.radioValue === "1",
-        link_type: this.taskEditData.lineWay,
-        push_set: this.taskEditData.push_set
-      };
-
-      let res = await eventPushsSave(json);
-      if (res && res.success) {
-        this.taskEditData.eventTxt = ruleDesc.join("<br/>");
-        this.$emit("updateList", res.data.id);
-        this.$notify({
-          type: "success",
-          message: "淇濆瓨鎴愬姛"
-        });
-      }
-    },
-    // 鏌ユ壘瀛楀吀
-    async findByType() {
-      let res = await findDictionaryByType();
-      if (res && res.success) {
-        this.dictionary = Object.assign(this.dictionary, res.data)
-        this.baseRule.topicTypeOptions = this.dictionary.EVENTRULETOPIC
-        this.baseRule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE
-        this.dictionary['alarmLevel'] = this.dictionary.ALARMLEVEL.map(el => {
-          return {
-            name: el.name,
-            value: el.name
-          }
-        })
-      }
-    },
-    async getCameras() {
-      let rsp = await findByEventTopic({ topic: 'camera', type: 'name' });
-      if (rsp && rsp.success) {
-        this.dictionary['camera'] = rsp.data;
-      }
-
-      rsp = await findByEventTopic({ topic: 'dbtable' });
-      if (rsp && rsp.success) {
-        this.dictionary['dbtable'] = rsp.data.map(el => {
-          return {
-            name: el.name,
-            value: el.name
-          }
-        })
-      }
-    },
-    async getTasks() {
-      this.dictionary['task'] = []
-      let rsp = await getTaskList();
-      if (rsp && rsp.success) {
-        let hash = {}
-        rsp.data.forEach(task => {
-          if (!task.isDelete && !hash[task.name]) {
-            this.dictionary['task'].push({
-              value: task.name,
-              name: task.name
-            })
-            hash[task.name] = true;
-          }
-        })
-      }
-    },
-    // 鏂板缓閰嶇疆
-    createSet() {
-      this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
-    },
-    cleanSet() {
-      this.dataList.splice(0, this.dataList.length);
-    },
-    // 娣诲姞瀛愯鍒�
-    addRule() {
-      this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
-    },
-    // 鍒犻櫎瀛愯鍒�
-    delRule(index) {
-      this.dataList.splice(index, 1);
-    },
-    // 瑙勫垯涓笅鎷夋鐨勯�夋嫨鍥炶皟
-    selectTopic(rule, resetNext = false) {
-      rule.topicTypeOptions.forEach(element => {
-        if (element.value === rule.topic_type) {
-          rule.topicArgOptions = element.children;
-          if (resetNext) {
-            rule.topic_arg = rule.topicArgOptions[0].value;
-            this.selectArg(rule, resetNext);
-          }
-        }
-      });
-    },
-    selectArg(rule, resetNext = false) {
-      debugger
-      let argInfo = rule.topicArgOptions.filter(arg => {
-        return arg.value === rule.topic_arg;
-      })
-
-      if (argInfo.length > 0) {
-        let desc = argInfo[0].description.split(",");
-        if (desc.length > 0) {
-          rule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE.filter(el => {
-            return desc.indexOf(el.value) >= 0;
-          })
-        }
-      }
-
-      if (resetNext) {
-        rule.operator_type = rule.operatorTypeOpionts[rule.operatorTypeOpionts.length - 1].value;
-        this.selectOperator(rule, resetNext);
-      }
-    },
-    selectOperator(rule, resetNext = false) {
-      if (rule.operator_type === "option") {
-        rule.ruleValueOptions = this.dictionary[rule.topic_type] ? this.dictionary[rule.topic_type] : [];
-
-        if (rule.rule_value != "") {
-          rule.rule_values = rule.rule_value.split(",");
-        }
-
-        // 澶勭悊 鍏ㄩ儴/绌�
-        for (let i = 0; i < rule.rule_values.length; i++) {
-          if (rule.rule_values[i] === "all*all") {
-            rule.rule_values[i] = "鍏ㄩ儴";
-          }
-
-          if (rule.rule_values[i] === "null*null") {
-            rule.rule_values[i] = "绌�";
-          }
-        }
-
-        this.setOptionsDisable(rule);
-      }
-
-      if (resetNext) {
-        rule.rule_value = "";
-        rule.rule_values = [];
-      }
-    },
-    selectValue(rule, val) {
-      if (rule.operator_type === "option") {
-        this.setOptionsDisable(rule);
-
-        if (val.indexOf("鍏ㄩ儴") >= 0) {
-          rule.rule_value = "all*all";
-          return;
-        }
-
-        if (val.indexOf("绌�") >= 0) {
-          rule.rule_value = "null*null";
-          return;
-        }
-      }
-
-      rule.rule_value = val.join(",");
-    },
-    setOptionsDisable(rule) {
-      let isAllSelect = (rule.rule_values.indexOf("鍏ㄩ儴") >= 0);
-      let isNullSelect = (rule.rule_values.indexOf("绌�") >= 0);
-
-      rule.ruleValueOptions.forEach(opt => {
-        if (!rule.rule_values.length) {
-          opt.disabled = false;
-          return
-        }
-
-        if (opt.name === "鍏ㄩ儴") {
-          opt.disabled = !isAllSelect;
-          return
-        }
-
-        if (opt.name === "绌�") {
-          opt.disabled = !isNullSelect;
-          return
-        }
-
-        opt.disabled = (isAllSelect || isNullSelect);
-      })
-    },
-    // 鏍规嵁value杩斿洖瀵瑰簲鐨刵ame
-    getNameByValue(arr, value) {
-      let s = arr.find(item => {
-        return item.value === value;
-      });
-
-      return s.name;
-    },
-    // 娓呯┖閲嶆柊鏂板
-    reAdd() {
-      this.taskEditData = {
-        id: "",
-        name: "",
-        time: [
-          this.$moment().format("YYYY-MM-DD 00:00:00"),
-          this.$moment().format("YYYY-MM-DD HH:mm:ss")
-        ],
-        serverIp: [
-          {
-            enable: true,
-            server_ip: "",
-            port: 0
-          }
-        ],
-        urls: [
-        ],
-        lineWay: "",
-        lineOptions: [
-          {
-            value: "001",
-            label: "IP骞挎挱"
-          }
-        ],
-        radioValue: "1",
-        eventTxt: "",
-        push_set: this.pushFields
-      };
-      this.dataList = [];
-    },
-    onCancle() {
-      this.$emit('onCancle')
-    }
-  }
-};
-</script>
-<style lang="scss">
-.s-event-push-right {
-  text-align: left;
-  font-size: 14px;
-  i {
-    cursor: pointer;
-  }
-  .s-right-config {
-    padding: 10px 40px;
-  }
-
-  .el-form-item__label {
-    text-align: left;
-  }
-
-  .s-right-mid {
-    height: 10px;
-    background-color: #e9ebf2;
-    width: 100%;
-    //position: absolute;
-  }
-
-  .s-right-rule {
-    padding: 20px 40px;
-    margin-top: 17px;
-    .rule-title {
-      border-bottom: 1px solid #e0e0e0;
-    }
-    .rule-title2 {
-      margin-top: 20px;
-    }
-
-    .div-border {
-      width: 995px;
-      padding: 10px;
-      margin-top: 15px;
-      min-height: 80px;
-      background: #fafafa;
-      border: 1px solid #f2f2f2;
-    }
-
-    .rule-edit-btn {
-      font-size: 18px;
-      line-height: 38px;
-    }
-
-    .save-btn {
-      // float: right;
-      margin-top: 20px;
-      margin-left: 895px;
-    }
-  }
-  .config-item {
-    margin: 20px 0;
-    b {
-      margin-right: 10px;
-    }
-  }
-  .el-button--text {
-    text-decoration: unset;
-  }
-
-  .icon-btn {
-    i {
-      font-size: 18px;
-      position: relative;
-      top: 2px;
-    }
-    span {
-      font-size: 14px;
-    }
-    display: inline;
-    color: #3d68e1;
-    line-height: 38px;
-    margin-left: 10px;
-    cursor: pointer;
-  }
-
-  .server-url {
-    padding-top: 25px;
-  }
-  .server-add {
-    font-size: 18px;
-    margin-left: 8px;
-    color: #3d68e1;
-    line-height: 39px;
-  }
-  .dialog-push-field {
-    .el-button--primary.is-disabled,
-    .el-button--primary.is-disabled:hover {
-      background-color: #9eb4f0 !important;
-      border-color: #9eb4f0 !important;
-    }
-    .el-dialog {
-      width: 910px;
-      height: 700px;
-      .el-dialog__body {
-        padding-top: 14px;
-        height: 540px;
-        overflow-y: auto;
-      }
-    }
-    .text-center {
-      text-align: center;
-    }
-    .slot-title {
-      position: relative;
-      .right {
-        position: absolute;
-        top: 0;
-        right: 30px;
-      }
-    }
-    .check-area {
-      padding-bottom: 10px;
-      .header {
-        position: relative;
-        background: #efefef;
-        line-height: 30px;
-        margin-bottom: 14px;
-        font-weight: bold;
-        .title {
-          border-left: 3px solid #2481fa;
-          padding-left: 10px;
-        }
-        .right {
-          position: absolute;
-          top: 0;
-          right: 30px;
-        }
-      }
-      .flex-box.flex-wrap {
-        flex-wrap: wrap;
-      }
-      .param.flex-box {
-        word-break: keep-all;
-        align-items: center;
-        margin: 0 10px;
-        min-width: 260px;
-        margin-bottom: 10px;
-        .param-name {
-          margin: 0 5px;
-        }
-        .el-input {
-          border-color: #dcdfe6;
-          color: #606266;
-          .el-input__inner {
-            color: inherit;
-            border-color: inherit;
-          }
-        }
-      }
-    }
-  }
-}
-</style>
+<template>
+  <div class="s-event-push-right">
+    <div class="s-right-config">
+      <el-form>
+        <el-form-item label="鍚嶇О">
+          <el-input
+            v-model="taskEditData.name"
+            placeholder="璇疯緭鍏ュ悕绉�"
+            size="small"
+            style="width: 400px"
+          ></el-input>
+        </el-form-item>
+
+        <el-form-item label="鏃堕棿">
+          <el-date-picker
+            v-model="taskEditData.time"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            type="datetimerange"
+            range-separator="鑷�"
+            start-placeholder="寮�濮嬫棩鏈�"
+            end-placeholder="缁撴潫鏃ユ湡"
+            size="small"
+          ></el-date-picker>
+        </el-form-item>
+
+        <span style="line-height: 38px">鎺ㄩ�佹湇鍔″櫒</span>
+        <div class="icon-btn" v-if="urls.length < 1" @click="addUrl()">
+          <i class="el-icon-circle-plus-outline"></i>
+          <span>&nbsp;娣诲姞鎺ュ彛鍦板潃</span>
+        </div>
+        <div
+          v-for="(item, index) in urls"
+          :key="item.hash"
+          class="flex-box server-url"
+        >
+          <div>
+            <el-checkbox v-model="item.enable"></el-checkbox>
+            <span class="ml20">{{ "URL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" }}</span>
+            <el-input
+              v-model="item.url"
+              style="width: 360px; margin-left: 0px"
+              size="small"
+            ></el-input>
+          </div>
+          <div class="server-add">
+            <i
+              class="el-icon-remove-outline"
+              @click="delUrl(index)"
+              style="color: red; margin-right: 10px"
+            />
+            <i class="el-icon-circle-plus-outline" @click="addUrl()"></i>
+          </div>
+        </div>
+
+        <el-form-item label="鑱斿姩鏂瑰紡" style="margin-top: 20px; width: 100">
+          <el-select
+            v-model="taskEditData.lineWay"
+            placeholder="璇烽�夋嫨"
+            size="small"
+          >
+            <el-option
+              v-for="item in taskEditData.lineOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="鏍囩">
+          <el-radio v-model="taskEditData.radioValue" label="1"
+            >婊¤冻鍏ㄩ儴</el-radio
+          >
+          <el-radio v-model="taskEditData.radioValue" label="2"
+            >婊¤冻浠绘剰涓�涓�</el-radio
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+    <div class="s-right-mid"></div>
+    <div class="s-right-rule">
+      <div class="rule-title">
+        <b style="margin-right: 20px">浠诲姟閰嶇疆</b>
+        <div class="icon-btn" v-if="dataList.length === 0" @click="createSet">
+          <i class="el-icon-circle-plus-outline"></i>
+          <span>&nbsp;鏂板</span>
+        </div>
+        <div class="icon-btn" v-if="dataList.length > 0" @click="cleanSet">
+          <i class="el-icon-remove-outline"></i>
+          <span>&nbsp;娓呯┖</span>
+        </div>
+      </div>
+
+      <div
+        v-for="(rule, index) in dataList"
+        :key="index"
+        style="margin-top: 10px"
+      >
+        <el-row :gutter="20">
+          <!-- 涓婚 -->
+          <el-col :span="4">
+            <el-select
+              v-model="rule.topic_type"
+              placeholder="璇烽�夋嫨"
+              @change="selectTopic(rule, true)"
+              size="small"
+            >
+              <el-option
+                v-for="item in rule.topicTypeOptions"
+                :key="item.id"
+                :label="item.name"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-col>
+
+          <!-- 杩囨护鍊� -->
+          <el-col :span="4">
+            <el-select
+              v-model="rule.topic_arg"
+              placeholder="璇烽�夋嫨"
+              @change="selectArg(rule, true)"
+              size="small"
+            >
+              <el-option
+                v-for="item in rule.topicArgOptions"
+                :key="item.id"
+                :label="item.name"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-col>
+
+          <!-- 鎿嶄綔绗� -->
+          <el-col :span="4">
+            <el-select
+              v-model="rule.operator"
+              placeholder="璇烽�夋嫨"
+              size="small"
+            >
+              <el-option label="==" value="="></el-option>
+            </el-select>
+          </el-col>
+
+          <!-- 鍊肩被鍨� -->
+          <el-col :span="4">
+            <el-select
+              v-model="rule.operator_type"
+              placeholder="璇烽�夋嫨"
+              @change="selectOperator(rule, true)"
+              size="small"
+            >
+              <el-option
+                v-for="item in rule.operatorTypeOpionts"
+                :key="item.id"
+                :label="item.name"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-col>
+
+          <!-- 杩囨护鍊� -->
+          <el-col :span="4">
+            <div v-if="rule.operator_type === 'custom'">
+              <el-input
+                v-model="rule.rule_value"
+                placeholder="璇疯緭鍏ュ唴瀹�"
+                size="small"
+              ></el-input>
+            </div>
+            <div v-else>
+              <el-select
+                v-model="rule.rule_values"
+                multiple
+                collapse-tags
+                placeholder="璇烽�夋嫨"
+                size="small"
+                @change="selectValue(rule, $event)"
+              >
+                <el-option
+                  v-for="item in rule.ruleValueOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :disabled="item.disabled"
+                  :value="item.value"
+                ></el-option>
+              </el-select>
+            </div>
+          </el-col>
+          <el-col :span="4">
+            <div class="rule-edit-btn">
+              <i
+                v-show="dataList.length > 1"
+                class="el-icon-remove-outline"
+                @click="delRule(index)"
+                style="color: red; margin-right: 10px"
+              />
+              <i
+                v-show="index === dataList.length - 1"
+                class="el-icon-circle-plus-outline"
+                @click="addRule()"
+                style="color: #3d68e1"
+              ></i>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row></el-row>
+      </div>
+
+      <div class="rule-title2">
+        <b>瑙勫垯</b>
+        <div class="div-border" v-html="taskEditData.eventTxt"></div>
+      </div>
+      <div class="config-item">
+        <b>鎺ㄩ�佸瓧娈�</b>
+        <el-button type="primary" size="mini" @click="openPushSetDialog"
+          >璁剧疆</el-button
+        >
+      </div>
+      <div class="save-btn">
+        <el-button
+          type="info"
+          size="small"
+          @click="onCancle"
+          style="color: #222"
+          >鍙栨秷</el-button
+        >
+        <el-button type="primary" @click="eventPushsSave" size="small"
+          >淇濆瓨</el-button
+        >
+      </div>
+    </div>
+    <el-dialog
+      :visible="pushFieldDialog"
+      :append-to-body="false"
+      :close-on-click-modal="false"
+      class="dialog-push-field"
+      @close="pushFieldDialog = false"
+    >
+      <div slot="title" class="slot-title">
+        <p>璇烽�夋嫨鎯宠鎺ㄩ�佺殑瀛楁</p>
+        <div class="right">
+          <el-checkbox
+            v-model="allFieldChecked"
+            @change="allCheckChange"
+          ></el-checkbox>
+        </div>
+      </div>
+      <div
+        class="check-area"
+        v-for="configObj in tempPushSet"
+        :key="configObj.id"
+      >
+        <div class="header">
+          <div class="title">{{ configObj.name }}</div>
+          <div class="right">
+            <el-checkbox
+              v-model="configObj.checked"
+              @change="toggleConfigCheck(configObj)"
+              >鍏ㄩ��</el-checkbox
+            >
+          </div>
+        </div>
+        <div class="flex-box flex-wrap">
+          <div
+            class="param flex-box"
+            v-for="param in configObj.children"
+            :key="param.id"
+          >
+            <el-checkbox
+              v-model="param.checked"
+              @change="checkChildren"
+            ></el-checkbox>
+            <span class="param-name">{{ param.name }}</span>
+            <el-input
+              v-model="param.alias"
+              size="mini"
+              :ref="`input_${param.id}`"
+              @input="varifyField(param)"
+              :style="{
+                color: param.error ? 'red' : '',
+                borderColor: param.error ? 'red' : '',
+              }"
+            ></el-input>
+          </div>
+        </div>
+      </div>
+      <div slot="footer" class="text-center">
+        <el-button size="small" @click="canclePushFieldSet">鍙栨秷</el-button>
+        <el-button
+          size="small"
+          type="primary"
+          :disabled="disabledPushFieldSet"
+          @click="submitPushFieldSet"
+          >淇濆瓨</el-button
+        >
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import { eventPushsSave, findByEventTopic, getPushSet } from "@/api/event";
+import { findDictionaryByType, findDictionaryByID } from "@/api/dictionary";
+import { getTaskList } from "@/api/search";
+
+export default {
+  name: "rightEvent",
+  props: {
+    eventObject: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  computed: {
+    urls() {
+      return this.taskEditData.urls;
+    },
+  },
+  data() {
+    return {
+      taskEditData: {},
+      dataList: [],
+      dictionary: [],
+      cameras: [],
+      tasks: [],
+      tables: [],
+      baseRule: {
+        event_push_id: "",
+        id: "",
+        operator: "==",
+        operator_type: "",
+        rule_value: "",
+        rule_values: [],
+        topic_arg: "",
+        topic_type: "",
+        topicTypeOptions: {},
+        topicArgOptions: {},
+        operatorOptions: {},
+        operatorTypeOpionts: {},
+        ruleValueOptions: [],
+      },
+      pushFieldDialog: false,
+      tempPushSet: [],
+      pushFields: [],
+      allFieldChecked: false,
+      disabledPushFieldSet: true,
+    };
+  },
+  watch: {
+    eventObject: {
+      handler(newVal, oldVal) {
+        this.taskEditData.enable = this.eventObject.enable;
+        if (newVal !== oldVal) {
+          if (this.taskEditData.id !== newVal.id) {
+            this.dataList = [];
+
+            this.taskEditData.id = newVal.id;
+            this.taskEditData.name = newVal.name;
+            this.taskEditData.time = [
+              this.eventObject.time_start,
+              this.eventObject.time_end,
+            ];
+            this.taskEditData.serverIp = newVal.ip_ports;
+            this.taskEditData.urls = newVal.urls;
+            this.taskEditData.lineWay = newVal.link_type;
+            this.taskEditData.eventTxt = newVal.rule_text;
+            this.taskEditData.radioValue = newVal.is_satisfy_all ? "1" : "2";
+
+            if (!this.taskEditData.urls) {
+              this.$set(this.taskEditData, "urls", []);
+            }
+            //this.taskEditData.push_set = this.eventObject.push_set;
+            if (!this.eventObject.push_set.length) {
+              this.$set(this.taskEditData, "push_set", this.pushFields);
+            } else {
+              this.$set(
+                this.taskEditData,
+                "push_set",
+                this.eventObject.push_set
+              );
+            }
+            if (newVal.rules) {
+              newVal.rules.forEach((element) => {
+                let newRule = Object.assign(
+                  JSON.parse(JSON.stringify(this.baseRule)),
+                  element
+                );
+                this.dataList.push(newRule);
+                this.selectTopic(newRule);
+                this.selectOperator(newRule);
+              });
+            }
+          }
+        }
+      },
+      deep: true,
+    },
+    tempPushSet: {
+      handler(n, o) {
+        let _this = this;
+        let flag = false;
+        n.forEach((configObj) => {
+          let notChecked = configObj.children.find((param) => !param.checked);
+          if (!notChecked) {
+            configObj.checked = true;
+          } else {
+            configObj.checked = false;
+          }
+          let someoneChecked = configObj.children.find(
+            (param) => param.checked
+          );
+          if (someoneChecked) {
+            flag = true;
+          }
+        });
+        if (flag) {
+          this.disabledPushFieldSet = false;
+        } else {
+          this.disabledPushFieldSet = true;
+        }
+      },
+      deep: true,
+    },
+  },
+  created() {
+    this.reAdd();
+  },
+  mounted() {
+    // 鍔犺浇瀛楀吀
+    this.findByType();
+    this.getCameras();
+    this.getTasks();
+    this.getPushFields();
+  },
+  methods: {
+    openPushSetDialog() {
+      this.pushFieldDialog = true;
+      this.tempPushSet = JSON.parse(JSON.stringify(this.taskEditData.push_set));
+      this.checkFlag();
+    },
+    checkFlag() {
+      // debugger
+      let flag = true;
+      this.tempPushSet.forEach((item) => {
+        if (item.checked == false) {
+          flag = false;
+        }
+      });
+      this.allFieldChecked = flag;
+    },
+    checkChildren(val) {
+      console.log(val, 12121);
+      if (val == false) {
+        this.allFieldChecked = false;
+      } else if (val == true && this.allFieldChecked == false) {
+        this.$nextTick(() => {
+          this.checkFlag();
+        });
+      }
+    },
+    varifyField(param) {
+      var reg = /^[A-Za-z]+[0-9-_]?$/;
+      if (!reg.test(param.alias)) {
+        this.$message("璇疯緭鍏ュ悎娉曞瓧娈靛悕");
+        param.error = true;
+      } else {
+        param.error = false;
+      }
+      // this.pushFields.forEach(configObj => {
+      //   configObj.children.find(param => param.error)
+      // })
+    },
+    canclePushFieldSet() {
+      this.pushFieldDialog = false;
+    },
+    allCheckChange(val) {
+      this.tempPushSet.forEach(function (item) {
+        item.checked = val;
+        item.children.forEach(function (child) {
+          child.checked = val;
+        });
+      });
+    },
+    submitPushFieldSet() {
+      let flag = false;
+      //this.pushFields.forEach(configObj => {
+      this.tempPushSet.forEach((configObj) => {
+        let errorOne = configObj.children.find(
+          (param) => param.checked && param.error
+        );
+        if (errorOne) {
+          this.$notify({
+            type: "error",
+            message: "璇峰皢閫変腑瀛楁杈撳叆鍚堟硶瀛楁鍚�",
+          });
+          flag = true;
+        }
+      });
+      if (flag) {
+        //NO SUBMIT
+        return;
+      }
+
+      this.taskEditData.push_set = this.tempPushSet;
+      this.pushFieldDialog = false;
+
+      // 淇濆瓨瑙勫垯
+      this.eventPushsSave();
+    },
+    toggleConfigCheck(configObj) {
+      configObj.children.forEach((child) => {
+        child.checked = configObj.checked;
+      });
+      this.checkFlag();
+    },
+    getPushFields() {
+      let _this = this;
+      getPushSet().then((res) => {
+        _this.pushFields = res.data;
+      });
+      // this.pushFields = [
+      //   {          id: 'sxjxx', name: '鎽勫儚鏈轰俊鎭�', checked: false, alias: '',
+      //     children: [
+      //       { name: '鎽勫儚鏈篒D', checked: false, alias: 'cameraID', id: 'cameraID', children: null },
+      //       { name: '鎽勫儚鏈哄悕绉�', checked: false, alias: 'cameraName', id: 'cameraName', children: null },
+      //       { name: '鎽勫儚鏈哄湴鍧�', checked: false, alias: 'cameraAddr', id: 'cameraAddr', children: null },
+      //       { name: '鎽勫儚鏈哄潃', checked: false, alias: 'cameraAdr', id: 'cameraAdr', children: null }
+      //     ]        },
+      //   {          id: 'cjxx', name: '鍦烘櫙淇℃伅', checked: false, alias: '',
+      //     children: [{ name: '鍦烘櫙ID', checked: false, alias: 'taskId', id: 'tskId', children: null }]        },
+      // ];
+    },
+    addUrl() {
+      this.taskEditData.urls.push({
+        checked: true,
+        hash: Math.random().toString(36).substr(2),
+        url: "",
+      });
+    },
+    delUrl(index) {
+      this.$set(this.taskEditData.urls, index, this.baseRule);
+      this.taskEditData.urls.splice(index, 1);
+    },
+    // 淇濆瓨
+    async eventPushsSave() {
+      // 鍒ゆ柇淇濆瓨鐨刬p鏄惁绗﹀悎鏍煎紡瑕佹眰
+      if (this.taskEditData.urls.length < 1) {
+        this.$notify({
+          type: "warning",
+          message: "璇烽厤缃嚦灏戜竴鍙版帹閫佹湇鍔″櫒",
+        });
+        return;
+      }
+      for (let i = 0; i < this.taskEditData.urls.length; i++) {
+        if (this.taskEditData.urls[i].url.length < 1) {
+          this.$notify({
+            type: "warning",
+            message: "鎺ュ彛URL鍦板潃涓嶅厑璁镐负绌�",
+          });
+          return;
+        }
+      }
+
+      // 鎷兼帴瀛楃涓�
+      let ruleDesc = [];
+      this.dataList.forEach((i) => {
+        let str = "";
+        if (i.topic_type) {
+          str += this.getNameByValue(i.topicTypeOptions, i.topic_type);
+        }
+        if (i.topic_arg) {
+          str += this.getNameByValue(i.topicArgOptions, i.topic_arg);
+        }
+        if (i.operator === "==") {
+          str += " = ";
+        }
+
+        if (i.rule_value === "all*all") {
+          str += "鍏ㄩ儴";
+        } else if (i.rule_value === "null*null") {
+          str += "绌�";
+        } else {
+          str += i.rule_value;
+        }
+
+        if (str.length > 0) {
+          ruleDesc.push(str);
+        }
+      });
+      // 澶勭悊瑙勫垯鍒楄〃鏁版嵁缁撴瀯
+      let ruleList = this.dataList.map((i) => {
+        return {
+          topic_type: i.topic_type,
+          topic_arg: i.topic_arg,
+          operator: i.operator,
+          operator_type: i.operator_type,
+          rule_value: i.rule_value,
+        };
+      });
+
+      let json = {
+        enable: this.taskEditData.enable,
+        id: this.taskEditData.id,
+        ip_ports: this.taskEditData.serverIp,
+        name: this.taskEditData.name,
+        rule_text: ruleDesc.join("<br/>"),
+        rules: ruleList,
+        time_start: this.taskEditData.time[0],
+        time_end: this.taskEditData.time[1],
+        urls: this.taskEditData.urls,
+        is_satisfy_all: this.taskEditData.radioValue === "1",
+        link_type: this.taskEditData.lineWay,
+        push_set: this.taskEditData.push_set,
+      };
+
+      let res = await eventPushsSave(json);
+      if (res && res.success) {
+        this.taskEditData.eventTxt = ruleDesc.join("<br/>");
+        this.$emit("updateList", res.data.id);
+        this.$notify({
+          type: "success",
+          message: "淇濆瓨鎴愬姛",
+        });
+      }
+    },
+    // 鏌ユ壘瀛楀吀
+    async findByType() {
+      let res = await findDictionaryByType();
+      if (res && res.success) {
+        this.dictionary = Object.assign(this.dictionary, res.data);
+        this.baseRule.topicTypeOptions = this.dictionary.EVENTRULETOPIC;
+        this.baseRule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE;
+        this.dictionary["alarmLevel"] = this.dictionary.ALARMLEVEL.map((el) => {
+          return {
+            name: el.name,
+            value: el.name,
+          };
+        });
+      }
+    },
+    async getCameras() {
+      let rsp = await findByEventTopic({ topic: "camera", type: "name" });
+      if (rsp && rsp.success) {
+        this.dictionary["camera"] = rsp.data;
+      }
+
+      rsp = await findByEventTopic({ topic: "dbtable" });
+      if (rsp && rsp.success) {
+        this.dictionary["dbtable"] = rsp.data.map((el) => {
+          return {
+            name: el.name,
+            value: el.name,
+          };
+        });
+      }
+    },
+    async getTasks() {
+      this.dictionary["task"] = [];
+      let rsp = await getTaskList();
+      if (rsp && rsp.success) {
+        let hash = {};
+        rsp.data.forEach((task) => {
+          if (!task.isDelete && !hash[task.name]) {
+            this.dictionary["task"].push({
+              value: task.name,
+              name: task.name,
+            });
+            hash[task.name] = true;
+          }
+        });
+      }
+    },
+    // 鏂板缓閰嶇疆
+    createSet() {
+      this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
+    },
+    cleanSet() {
+      this.dataList.splice(0, this.dataList.length);
+    },
+    // 娣诲姞瀛愯鍒�
+    addRule() {
+      this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
+    },
+    // 鍒犻櫎瀛愯鍒�
+    delRule(index) {
+      this.dataList.splice(index, 1);
+    },
+    // 瑙勫垯涓笅鎷夋鐨勯�夋嫨鍥炶皟
+    selectTopic(rule, resetNext = false) {
+      rule.topicTypeOptions.forEach((element) => {
+        if (element.value === rule.topic_type) {
+          rule.topicArgOptions = element.children;
+          if (resetNext) {
+            rule.topic_arg = rule.topicArgOptions[0].value;
+            this.selectArg(rule, resetNext);
+          }
+        }
+      });
+    },
+    selectArg(rule, resetNext = false) {
+      debugger;
+      let argInfo = rule.topicArgOptions.filter((arg) => {
+        return arg.value === rule.topic_arg;
+      });
+
+      if (argInfo.length > 0) {
+        let desc = argInfo[0].description.split(",");
+        if (desc.length > 0) {
+          rule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE.filter(
+            (el) => {
+              return desc.indexOf(el.value) >= 0;
+            }
+          );
+        }
+      }
+
+      if (resetNext) {
+        rule.operator_type =
+          rule.operatorTypeOpionts[rule.operatorTypeOpionts.length - 1].value;
+        this.selectOperator(rule, resetNext);
+      }
+    },
+    selectOperator(rule, resetNext = false) {
+      if (rule.operator_type === "option") {
+        rule.ruleValueOptions = this.dictionary[rule.topic_type]
+          ? this.dictionary[rule.topic_type]
+          : [];
+
+        if (rule.rule_value != "") {
+          rule.rule_values = rule.rule_value.split(",");
+        }
+
+        // 澶勭悊 鍏ㄩ儴/绌�
+        for (let i = 0; i < rule.rule_values.length; i++) {
+          if (rule.rule_values[i] === "all*all") {
+            rule.rule_values[i] = "鍏ㄩ儴";
+          }
+
+          if (rule.rule_values[i] === "null*null") {
+            rule.rule_values[i] = "绌�";
+          }
+        }
+        console.log("-----------");
+        this.setOptionsDisable(rule);
+      }
+
+      if (resetNext) {
+        rule.rule_value = "";
+        rule.rule_values = [];
+      }
+    },
+    selectValue(rule, val) {
+      if (rule.operator_type === "option") {
+        this.setOptionsDisable(rule);
+
+        if (val.indexOf("鍏ㄩ儴") >= 0) {
+          rule.rule_value = "all*all";
+          return;
+        }
+
+        if (val.indexOf("绌�") >= 0) {
+          rule.rule_value = "null*null";
+          return;
+        }
+      }
+
+      rule.rule_value = val.join(",");
+    },
+    setOptionsDisable(rule) {
+      let isAllSelect = rule.rule_values.indexOf("鍏ㄩ儴") >= 0;
+      let isNullSelect = rule.rule_values.indexOf("绌�") >= 0;
+      console.log(rule.rule_values);
+
+      rule.ruleValueOptions.forEach((opt) => {
+        if (!rule.rule_values.length) {
+          opt.disabled = false;
+          return;
+        }
+
+        if (opt.name === "绌�") {
+          opt.disabled = !isNullSelect;
+          return;
+        }
+
+        opt.disabled = isAllSelect || isNullSelect;
+      });
+    },
+    // 鏍规嵁value杩斿洖瀵瑰簲鐨刵ame
+    getNameByValue(arr, value) {
+      let s = arr.find((item) => {
+        return item.value === value;
+      });
+
+      return s.name;
+    },
+    // 娓呯┖閲嶆柊鏂板
+    reAdd() {
+      this.taskEditData = {
+        id: "",
+        name: "",
+        time: [
+          this.$moment().format("YYYY-MM-DD 00:00:00"),
+          this.$moment().format("YYYY-MM-DD HH:mm:ss"),
+        ],
+        serverIp: [
+          {
+            enable: true,
+            server_ip: "",
+            port: 0,
+          },
+        ],
+        urls: [],
+        lineWay: "",
+        lineOptions: [
+          {
+            value: "001",
+            label: "IP骞挎挱",
+          },
+        ],
+        radioValue: "1",
+        eventTxt: "",
+        push_set: this.pushFields,
+      };
+      this.dataList = [];
+    },
+    onCancle() {
+      this.$emit("onCancle");
+    },
+  },
+};
+</script>
+<style lang="scss">
+.s-event-push-right {
+  text-align: left;
+  font-size: 14px;
+  i {
+    cursor: pointer;
+  }
+  .s-right-config {
+    padding: 10px 40px;
+  }
+
+  .el-form-item__label {
+    text-align: left;
+  }
+
+  .s-right-mid {
+    height: 10px;
+    background-color: #e9ebf2;
+    width: 100%;
+    //position: absolute;
+  }
+
+  .s-right-rule {
+    padding: 20px 40px;
+    margin-top: 17px;
+    .rule-title {
+      border-bottom: 1px solid #e0e0e0;
+    }
+    .rule-title2 {
+      margin-top: 20px;
+    }
+
+    .div-border {
+      width: 995px;
+      padding: 10px;
+      margin-top: 15px;
+      min-height: 80px;
+      background: #fafafa;
+      border: 1px solid #f2f2f2;
+    }
+
+    .rule-edit-btn {
+      font-size: 18px;
+      line-height: 38px;
+    }
+
+    .save-btn {
+      // float: right;
+      margin-top: 20px;
+      margin-left: 895px;
+    }
+  }
+  .config-item {
+    margin: 20px 0;
+    b {
+      margin-right: 10px;
+    }
+  }
+  .el-button--text {
+    text-decoration: unset;
+  }
+
+  .icon-btn {
+    i {
+      font-size: 18px;
+      position: relative;
+      top: 2px;
+    }
+    span {
+      font-size: 14px;
+    }
+    display: inline;
+    color: #3d68e1;
+    line-height: 38px;
+    margin-left: 10px;
+    cursor: pointer;
+  }
+
+  .server-url {
+    padding-top: 25px;
+  }
+  .server-add {
+    font-size: 18px;
+    margin-left: 8px;
+    color: #3d68e1;
+    line-height: 39px;
+  }
+  .dialog-push-field {
+    .el-button--primary.is-disabled,
+    .el-button--primary.is-disabled:hover {
+      background-color: #9eb4f0 !important;
+      border-color: #9eb4f0 !important;
+    }
+    .el-dialog {
+      width: 910px;
+      height: 700px;
+      .el-dialog__body {
+        padding-top: 14px;
+        height: 540px;
+        overflow-y: auto;
+      }
+    }
+    .text-center {
+      text-align: center;
+    }
+    .slot-title {
+      position: relative;
+      .right {
+        position: absolute;
+        top: 0;
+        right: 30px;
+      }
+    }
+    .check-area {
+      padding-bottom: 10px;
+      .header {
+        position: relative;
+        background: #efefef;
+        line-height: 30px;
+        margin-bottom: 14px;
+        font-weight: bold;
+        .title {
+          border-left: 3px solid #2481fa;
+          padding-left: 10px;
+        }
+        .right {
+          position: absolute;
+          top: 0;
+          right: 30px;
+        }
+      }
+      .flex-box.flex-wrap {
+        flex-wrap: wrap;
+      }
+      .param.flex-box {
+        word-break: keep-all;
+        align-items: center;
+        margin: 0 10px;
+        min-width: 260px;
+        margin-bottom: 10px;
+        .param-name {
+          margin: 0 5px;
+        }
+        .el-input {
+          border-color: #dcdfe6;
+          color: #606266;
+          .el-input__inner {
+            color: inherit;
+            border-color: inherit;
+          }
+        }
+      }
+    }
+  }
+}
+</style>
diff --git a/src/pages/desktop/index/components/Tools.vue b/src/pages/desktop/index/components/Tools.vue
index 6ef8db8..be2bd4a 100644
--- a/src/pages/desktop/index/components/Tools.vue
+++ b/src/pages/desktop/index/components/Tools.vue
@@ -120,6 +120,7 @@
       :visible.sync="showPasswdForm"
       :append-to-body="true"
       width="500px"
+      @close="cancelPasswordChange"
     >
       <el-form
         :model="passwdForm"
@@ -153,7 +154,7 @@
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
-        <el-button type="info" @click="showPasswdForm = false" size="small"
+        <el-button type="info" size="small" @click="cancelPasswordChange"
           >鍙� 娑�</el-button
         >
         <el-button type="primary" @click="submitForm('ruleForm')" size="small"
@@ -343,7 +344,7 @@
   },
   mounted() {
     document.addEventListener("click", (e) => {
-      if (this.showFastPath||this.showWifi) {
+      if (this.showFastPath || this.showWifi) {
         this.showFastPath = false;
         this.showWifi = false;
       }
@@ -384,10 +385,7 @@
       );
     },
     updateSysNow() {
-      window.parent.postMessage(
-        { msg: `toVindicate?autoUpdate=1` },
-        "*"
-      );
+      window.parent.postMessage({ msg: `toVindicate?autoUpdate=1` }, "*");
     },
     delaySysRemind(sec) {
       delayUpgradeNotice({
@@ -436,7 +434,12 @@
       });
     },
     toggleShowWifi() {
+      this.notificationCenterVisible = false;
       this.showWifi = !this.showWifi;
+      this.$store.commit(
+        "desktop/changeNotificationCenterVisible",
+        this.notificationCenterVisible
+      );
     },
     submitForm(formName) {
       this.$refs[formName].validate((valid) => {
@@ -445,15 +448,22 @@
             oldPwd: this.passwdForm.oldPwd,
             newPwd: this.passwdForm.checkPwd,
           };
-          updatePwd(json).then((res) => {
-            this.$notify({
-              type: res.success ? "success" : "error",
-              message: res.msg,
+          updatePwd(json)
+            .then((res) => {
+              this.$notify({
+                type: res.success ? "success" : "error",
+                message: res.msg,
+              });
+              if (res.success) {
+                this.cancelPasswordChange();
+              }
+            })
+            .catch((err) => {
+              this.$notify({
+                type: "error",
+                message: err.msg,
+              });
             });
-            if (res.success) {
-              this.showPasswdForm = false;
-            }
-          });
         } else {
           console.log("error submit!!");
           return false;
@@ -537,6 +547,14 @@
           console.log("閫�鍑哄け璐�");
         });
     },
+    cancelPasswordChange() {
+      this.showPasswdForm = false;
+      this.passwdForm = {
+        oldPwd: "",
+        newPwd: "",
+        checkPwd: "",
+      };
+    },
   },
 };
 </script>
diff --git a/src/pages/settings/views/clusterManagement.vue b/src/pages/settings/views/clusterManagement.vue
index d13ad38..82da64e 100644
--- a/src/pages/settings/views/clusterManagement.vue
+++ b/src/pages/settings/views/clusterManagement.vue
@@ -2,7 +2,7 @@
   <div class="all">
     <!--  -->
     <div class="cluster-guanli" v-if="showCurCluster && isHasColony">
-      <!-- <cloud-node :nodes="innerNodes"></cloud-node> -->
+      <cloud-node :nodes="innerNodes"></cloud-node>
       <net-node :innerNodes="innerNodes"></net-node>
 
       <div class="cls-bar">瑙嗛鍒嗘瀽闆嗙兢绠$悊</div>
@@ -205,18 +205,6 @@
               </el-input>
             </el-form-item>
           </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)"
-            >
-              <i class="iconfont">&#xe727;</i>
-              {{ item.Address }}
-            </div>
-          </div>
           <div class="btns">
             <div class="ok" @click="join('joinForm')">鍔犲叆闆嗙兢</div>
           </div>
@@ -238,7 +226,7 @@
   updateClusterName,
   joinCluster,
 } from "@/api/clusterManage";
-// import cloudNode from "../components/CloudNode";
+import cloudNode from "../components/CloudNode";
 import NetNode from "../components/NetNode";
 import ipInput from "../components/IPInput";
 import { isIPv4 } from "@/scripts/validate";
@@ -246,15 +234,15 @@
 export default {
   data() {
     const checkPwd = (rule, value, callback) => {
-      if (value=="") {
+      if (value == "") {
         return callback(new Error("瀵嗙爜涓嶈兘涓虹┖"));
       }
       // setTimeout(() => {
-        if (value.length != 6) {
-          callback(new Error("瀵嗙爜搴斾负6浣�!"));
-        } else {
-          callback();
-        }
+      if (value.length != 6) {
+        callback(new Error("瀵嗙爜搴斾负6浣�!"));
+      } else {
+        callback();
+      }
       // }, 1000);
     };
     const checkID = (rule, value, callback) => {
@@ -303,18 +291,18 @@
         clustername: [
           { required: true, message: "璇疯緭鍏ラ泦缇ゅ悕绉�", trigger: "blur" },
         ],
-        clusterpwd: [{ validator: checkPwd, required: true,trigger: "blur" }],
+        clusterpwd: [{ validator: checkPwd, required: true, trigger: "blur" }],
         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,
+    cloudNode,
     NetNode,
     ipInput,
   },
@@ -424,9 +412,12 @@
       });
     },
     join(formName) {
+      debugger;
       let _this = this;
       this.$refs[formName].validate((valid) => {
+        debugger;
         if (valid) {
+          debugger;
           _this.joinLoading = true;
           let data = {
             clusterId: _this.joinForm.clusterid,
@@ -903,7 +894,7 @@
       left: 20px;
     }
     .el-form-item {
-          margin-bottom: 16px;
+      margin-bottom: 10px;
       .el-input__inner {
         background-color: #ffffff;
         border: 2px solid transparent;

--
Gitblit v1.8.0