From ccee429d379e0108b7445f72ade8d97c110a6fb3 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期二, 09 十一月 2021 18:01:59 +0800
Subject: [PATCH] 问题修复

---
 src/pages/datapush/index/RightEvent.vue |  254 +++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 186 insertions(+), 68 deletions(-)

diff --git a/src/pages/datapush/index/RightEvent.vue b/src/pages/datapush/index/RightEvent.vue
index 5722008..f4dce22 100644
--- a/src/pages/datapush/index/RightEvent.vue
+++ b/src/pages/datapush/index/RightEvent.vue
@@ -186,7 +186,7 @@
       </div>
       <div class="config-item">
         <b>鎺ㄩ�佸瓧娈�</b>
-        <el-button type="primary" size="mini" @click="pushFieldDialog=true">璁剧疆</el-button>
+        <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>
@@ -203,10 +203,10 @@
       <div slot="title" class="slot-title">
         <p>璇烽�夋嫨鎯宠鎺ㄩ�佺殑瀛楁</p>
         <div class="right">
-          <el-checkbox v-model="allFieldChecked"></el-checkbox>
+          <el-checkbox v-model="allFieldChecked" @change="allCheckChange"></el-checkbox>
         </div>
       </div>
-      <div class="check-area" v-for="configObj in pushFields" :key="configObj.id">
+      <div class="check-area" v-for="configObj in tempPushSet" :key="configObj.id">
         <div class="header">
           <div class="title">{{configObj.name}}</div>
           <div class="right">
@@ -215,7 +215,7 @@
         </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"></el-checkbox>
+            <el-checkbox v-model="param.checked" @change="checkChildren"></el-checkbox>
             <span class="param-name">{{param.name}}</span>
             <el-input
               v-model="param.alias"
@@ -228,7 +228,7 @@
         </div>
       </div>
       <div slot="footer" class="text-center">
-        <el-button size="small">鍙栨秷</el-button>
+        <el-button size="small" @click="canclePushFieldSet">鍙栨秷</el-button>
         <el-button
           size="small"
           type="primary"
@@ -241,7 +241,7 @@
 </template>
 <script>
 
-import { eventPushsSave, findByEventTopic } from "@/api/event";
+import { eventPushsSave, findByEventTopic, getPushSet } from "@/api/event";
 import { findDictionaryByType, findDictionaryByID } from "@/api/dictionary";
 import { getTaskList } from "@/api/search";
 
@@ -256,11 +256,11 @@
     }
   },
   computed: {
-    urls () {
+    urls() {
       return this.taskEditData.urls
     }
   },
-  data () {
+  data() {
     return {
       taskEditData: {},
       dataList: [],
@@ -277,7 +277,6 @@
         rule_values: [],
         topic_arg: "",
         topic_type: "",
-
         topicTypeOptions: {},
         topicArgOptions: {},
         operatorOptions: {},
@@ -285,6 +284,7 @@
         ruleValueOptions: []
       },
       pushFieldDialog: false,
+      tempPushSet: [],
       pushFields: [],
       allFieldChecked: false,
       disabledPushFieldSet: true,
@@ -292,7 +292,7 @@
   },
   watch: {
     eventObject: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.taskEditData.enable = this.eventObject.enable;
         if (newVal !== oldVal) {
           if (this.taskEditData.id !== newVal.id) {
@@ -313,6 +313,12 @@
             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)
@@ -326,8 +332,8 @@
       },
       deep: true
     },
-    pushFields: {
-      handler (n, o) {
+    tempPushSet: {
+      handler(n, o) {
         let _this = this;
         let flag = false;
         n.forEach(configObj => {
@@ -352,10 +358,10 @@
       deep: true
     }
   },
-  created () {
+  created() {
     this.reAdd();
   },
-  mounted () {
+  mounted() {
     // 鍔犺浇瀛楀吀
     this.findByType();
     this.getCameras();
@@ -363,11 +369,36 @@
     this.getPushFields();
   },
   methods: {
-    varifyField (param) {
+    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('璇疯緭鍏ュ悎娉曞瓧娈靛悕');
-        debugger
         param.error = true;
       } else {
         param.error = false;
@@ -377,9 +408,22 @@
       // })
 
     },
-    submitPushFieldSet () {
+    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.pushFields.forEach(configObj => {
+      this.tempPushSet.forEach(configObj => {
         let errorOne = configObj.children.find(param => param.checked && param.error);
         if (errorOne) {
           this.$notify({
@@ -389,43 +433,55 @@
           flag = true
         }
       });
-      if(flag){
+      if (flag) {
+        //NO SUBMIT
         return
       }
-      alert('submit')
+
+      this.taskEditData.push_set = this.tempPushSet;
+      this.pushFieldDialog = false;
+
+      // 淇濆瓨瑙勫垯
+      this.eventPushsSave()
     },
-    toggleConfigCheck (configObj) {
+    toggleConfigCheck(configObj) {
+
       configObj.children.forEach(child => {
         child.checked = configObj.checked
       })
+      this.checkFlag()
     },
-    getPushFields () {
-      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 }]        },
-      ];
+    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 () {
+    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)
+    delUrl(index) {
+      this.$set(this.taskEditData.urls, index, this.baseRule);
+      this.taskEditData.urls.splice(index, 1);
     },
     // 淇濆瓨
-    async eventPushsSave () {
+    async eventPushsSave() {
       // 鍒ゆ柇淇濆瓨鐨刬p鏄惁绗﹀悎鏍煎紡瑕佹眰
       if (this.taskEditData.urls.length < 1) {
         this.$notify({
@@ -458,10 +514,16 @@
           str += ' = ';
         }
 
-        str += i.rule_value === "all*all" ? "鍏ㄩ儴" : i.rule_value;
+        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)
+          ruleDesc.push(str);
         }
       });
       // 澶勭悊瑙勫垯鍒楄〃鏁版嵁缁撴瀯
@@ -486,7 +548,8 @@
         time_end: this.taskEditData.time[1],
         urls: this.taskEditData.urls,
         is_satisfy_all: this.taskEditData.radioValue === "1",
-        link_type: this.taskEditData.lineWay
+        link_type: this.taskEditData.lineWay,
+        push_set: this.taskEditData.push_set
       };
 
       let res = await eventPushsSave(json);
@@ -500,7 +563,7 @@
       }
     },
     // 鏌ユ壘瀛楀吀
-    async findByType () {
+    async findByType() {
       let res = await findDictionaryByType();
       if (res && res.success) {
         this.dictionary = Object.assign(this.dictionary, res.data)
@@ -514,10 +577,10 @@
         })
       }
     },
-    async getCameras () {
+    async getCameras() {
       let rsp = await findByEventTopic({ topic: 'camera', type: 'name' });
       if (rsp && rsp.success) {
-        this.dictionary['camera'] = rsp.data
+        this.dictionary['camera'] = rsp.data;
       }
 
       rsp = await findByEventTopic({ topic: 'dbtable' });
@@ -530,7 +593,7 @@
         })
       }
     },
-    async getTasks () {
+    async getTasks() {
       this.dictionary['task'] = []
       let rsp = await getTaskList();
       if (rsp && rsp.success) {
@@ -541,61 +604,78 @@
               value: task.name,
               name: task.name
             })
-            hash[task.name] = true
+            hash[task.name] = true;
           }
         })
       }
     },
     // 鏂板缓閰嶇疆
-    createSet () {
+    createSet() {
       this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
     },
-    cleanSet () {
+    cleanSet() {
       this.dataList.splice(0, this.dataList.length);
     },
     // 娣诲姞瀛愯鍒�
-    addRule () {
+    addRule() {
       this.dataList.push(JSON.parse(JSON.stringify(this.baseRule)));
     },
     // 鍒犻櫎瀛愯鍒�
-    delRule (index) {
+    delRule(index) {
       this.dataList.splice(index, 1);
     },
     // 瑙勫垯涓笅鎷夋鐨勯�夋嫨鍥炶皟
-    selectTopic (rule, resetNext = false) {
+    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)
+            rule.topic_arg = rule.topicArgOptions[0].value;
+            this.selectArg(rule, resetNext);
           }
         }
       });
     },
-    selectArg (rule, resetNext = false) {
+    selectArg(rule, resetNext = false) {
+      debugger
       let argInfo = rule.topicArgOptions.filter(arg => {
-        return arg.value === rule.topic_arg
+        return arg.value === rule.topic_arg;
       })
 
       if (argInfo.length > 0) {
-        let desc = argInfo[0].description.split(",")
+        let desc = argInfo[0].description.split(",");
         if (desc.length > 0) {
           rule.operatorTypeOpionts = this.dictionary.EVENTTYPECOMPUTE.filter(el => {
-            return desc.indexOf(el.value) >= 0
+            return desc.indexOf(el.value) >= 0;
           })
         }
       }
 
       if (resetNext) {
-        rule.operator_type = rule.operatorTypeOpionts[rule.operatorTypeOpionts.length - 1].value
-        this.selectOperator(rule, resetNext)
+        rule.operator_type = rule.operatorTypeOpionts[rule.operatorTypeOpionts.length - 1].value;
+        this.selectOperator(rule, resetNext);
       }
     },
-    selectOperator (rule, resetNext = false) {
+    selectOperator(rule, resetNext = false) {
       if (rule.operator_type === "option") {
-        rule.ruleValueOptions = this.dictionary[rule.topic_type] ? this.dictionary[rule.topic_type] : []
-        rule.rule_values = rule.rule_value.split(",")
+        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) {
@@ -603,11 +683,48 @@
         rule.rule_values = [];
       }
     },
-    selectValue (rule, val) {
-      rule.rule_value = val.join(",")
+    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) {
+    getNameByValue(arr, value) {
       let s = arr.find(item => {
         return item.value === value;
       });
@@ -615,7 +732,7 @@
       return s.name;
     },
     // 娓呯┖閲嶆柊鏂板
-    reAdd () {
+    reAdd() {
       this.taskEditData = {
         id: "",
         name: "",
@@ -640,11 +757,12 @@
           }
         ],
         radioValue: "1",
-        eventTxt: ""
+        eventTxt: "",
+        push_set: this.pushFields
       };
       this.dataList = [];
     },
-    onCancle () {
+    onCancle() {
       this.$emit('onCancle')
     }
   }

--
Gitblit v1.8.0