From 19dfc10826aa399b7b1f0609528a655220edb5d1 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期五, 05 二月 2021 15:41:48 +0800
Subject: [PATCH] 修复 事件推送中选项值为全部、空的处理

---
 src/pages/datapush/index/RightEvent.vue |  129 ++++++++++++++++++++++++++++++------------
 1 files changed, 92 insertions(+), 37 deletions(-)

diff --git a/src/pages/datapush/index/RightEvent.vue b/src/pages/datapush/index/RightEvent.vue
index 59d8ad1..ef2e973 100644
--- a/src/pages/datapush/index/RightEvent.vue
+++ b/src/pages/datapush/index/RightEvent.vue
@@ -241,7 +241,7 @@
 </template>
 <script>
 
-import { eventPushsSave, findByEventTopic,getPushSet } 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: {},
@@ -293,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) {
@@ -315,9 +314,9 @@
               this.$set(this.taskEditData, "urls", [])
             }
             //this.taskEditData.push_set = this.eventObject.push_set;
-            if(!this.eventObject.push_set.length){
+            if (!this.eventObject.push_set.length) {
               this.$set(this.taskEditData, "push_set", this.pushFields)
-            }else{
+            } else {
               this.$set(this.taskEditData, "push_set", this.eventObject.push_set)
             }
             if (newVal.rules) {
@@ -334,7 +333,7 @@
       deep: true
     },
     tempPushSet: {
-      handler (n, o) {
+      handler(n, o) {
         let _this = this;
         let flag = false;
         n.forEach(configObj => {
@@ -359,10 +358,10 @@
       deep: true
     }
   },
-  created () {
+  created() {
     this.reAdd();
   },
-  mounted () {
+  mounted() {
     // 鍔犺浇瀛楀吀
     this.findByType();
     this.getCameras();
@@ -370,11 +369,11 @@
     this.getPushFields();
   },
   methods: {
-    openPushSetDialog(){
-      this.pushFieldDialog=true;
+    openPushSetDialog() {
+      this.pushFieldDialog = true;
       this.tempPushSet = JSON.parse(JSON.stringify(this.taskEditData.push_set));
     },
-    varifyField (param) {
+    varifyField(param) {
       var reg = /^[A-Za-z]+[0-9-_]?$/;
       if (!reg.test(param.alias)) {
         this.$message('璇疯緭鍏ュ悎娉曞瓧娈靛悕');
@@ -388,10 +387,10 @@
       // })
 
     },
-    canclePushFieldSet(){
+    canclePushFieldSet() {
       this.pushFieldDialog = false;
     },
-    submitPushFieldSet () {
+    submitPushFieldSet() {
       let flag = false;
       //this.pushFields.forEach(configObj => {
       this.tempPushSet.forEach(configObj => {
@@ -404,7 +403,7 @@
           flag = true
         }
       });
-      if(flag){
+      if (flag) {
         //NO SUBMIT
         return
       }
@@ -412,14 +411,14 @@
       console.log(this.taskEditData.push_set);
       this.pushFieldDialog = false;
     },
-    toggleConfigCheck (configObj) {
+    toggleConfigCheck(configObj) {
       configObj.children.forEach(child => {
         child.checked = configObj.checked
       })
     },
-    getPushFields () {
+    getPushFields() {
       let _this = this;
-      getPushSet().then(res=>{
+      getPushSet().then(res => {
         _this.pushFields = res.data;
       })
       // this.pushFields = [
@@ -435,19 +434,19 @@
       // ];
 
     },
-    addUrl () {
+    addUrl() {
       this.taskEditData.urls.push({
         checked: true,
         hash: Math.random().toString(36).substr(2),
         url: "",
       });
     },
-    delUrl (index) {
+    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({
@@ -480,7 +479,13 @@
           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)
@@ -523,7 +528,7 @@
       }
     },
     // 鏌ユ壘瀛楀吀
-    async findByType () {
+    async findByType() {
       let res = await findDictionaryByType();
       if (res && res.success) {
         this.dictionary = Object.assign(this.dictionary, res.data)
@@ -537,7 +542,7 @@
         })
       }
     },
-    async getCameras () {
+    async getCameras() {
       let rsp = await findByEventTopic({ topic: 'camera', type: 'name' });
       if (rsp && rsp.success) {
         this.dictionary['camera'] = rsp.data
@@ -553,7 +558,7 @@
         })
       }
     },
-    async getTasks () {
+    async getTasks() {
       this.dictionary['task'] = []
       let rsp = await getTaskList();
       if (rsp && rsp.success) {
@@ -570,22 +575,22 @@
       }
     },
     // 鏂板缓閰嶇疆
-    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;
@@ -596,7 +601,7 @@
         }
       });
     },
-    selectArg (rule, resetNext = false) {
+    selectArg(rule, resetNext = false) {
       let argInfo = rule.topicArgOptions.filter(arg => {
         return arg.value === rule.topic_arg
       })
@@ -615,10 +620,23 @@
         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(",")
+
+        // 澶勭悊 鍏ㄩ儴/绌�
+        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) {
@@ -626,11 +644,48 @@
         rule.rule_values = [];
       }
     },
-    selectValue (rule, val) {
+    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;
       });
@@ -638,7 +693,7 @@
       return s.name;
     },
     // 娓呯┖閲嶆柊鏂板
-    reAdd () {
+    reAdd() {
       this.taskEditData = {
         id: "",
         name: "",
@@ -667,7 +722,7 @@
       };
       this.dataList = [];
     },
-    onCancle () {
+    onCancle() {
       this.$emit('onCancle')
     }
   }

--
Gitblit v1.8.0