From 9b862fc16ff20fdb92b997a10ed2e7f223841fc7 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Thu, 01 Apr 2021 10:03:52 +0800
Subject: [PATCH] 更改筛选组件数据传递模式

---
 plugins/filter/CFilterSelect.vue |   32 ++++++++++++++++++++++----------
 plugins/filter/CFilter.vue       |   12 +++++-------
 2 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/plugins/filter/CFilter.vue b/plugins/filter/CFilter.vue
index d7730c4..a5fde0d 100644
--- a/plugins/filter/CFilter.vue
+++ b/plugins/filter/CFilter.vue
@@ -14,6 +14,7 @@
                 type="bar"
                 :label="bar.label"
                 :options="selectOptions[bar.name]"
+                :value="filterRes[bar.name]"
                 :onChange="evt=>handleChange(bar.name, evt)"
             />
         </view>
@@ -43,6 +44,7 @@
                         type="item"
                         :label="item.label"
                         :options="selectOptions[item.name]"
+                        :value="filterRes[item.name]"
                         :onChange="evt=>handleChange(item.name, evt)"
                     />
                 </view>
@@ -78,18 +80,14 @@
     },
     data() {
         return {
-            filters: {},
+            filterRes: {},
             drawerShow: false,
         };
     },
     methods: {
         handleChange(name, value) {
-            if (typeof value === 'undefined') {
-                delete this.filters[name];
-            } else {
-                this.filters[name] = value;
-            }
-            this.onChange(this.filters);
+            this.$set(this.filterRes, name, value);
+            this.onChange(this.filterRes);
         },
     },
 };
diff --git a/plugins/filter/CFilterSelect.vue b/plugins/filter/CFilterSelect.vue
index 5c8aefe..4976cb5 100644
--- a/plugins/filter/CFilterSelect.vue
+++ b/plugins/filter/CFilterSelect.vue
@@ -26,7 +26,7 @@
                     {{label}}:
                 </view>
                 <view :class="selected ? 'value':'empty'">
-                    {{selected ? options2[selectIndex].name : ('请选择' + label)}}
+                    {{selected ? options2[current].name : ('请选择' + label)}}
                 </view>
                 <view class='at-icon at-icon-chevron-down' />
             </view>
@@ -43,27 +43,39 @@
         type: String,
         label: String,
         options: Array,
+        value: null,
         onChange: Function,
     },
     data() {
-        return {
-            selectIndex: 0,
-            selected: false,
-        };
+        return {};
     },
     computed: {
         options2() {
             return [{ name: '- 取消选择 -' }, ...this.options];
         },
+        current() {
+            for (let i = 0, item; (item = this.options2[i]); i++) {
+                if (this.value === item.value) {
+                    return i;
+                }
+            }
+            return -1;
+        },
+        selected() {
+            for (let item of this.options) {
+                if (this.value === item.value) {
+                    return true;
+                }
+            }
+            return false;
+        },
     },
     methods: {
         handleChange(index) {
-            this.selectIndex = Number(index);
-            if (this.selectIndex > 0) {
-                this.selected = true;
-                this.onChange(this.options2[this.selectIndex].value);
+            const selectIndex = Number(index);
+            if (selectIndex > 0) {
+                this.onChange(this.options2[selectIndex].value);
             } else {
-                this.selected = false;
                 this.onChange();
             }
         },

--
Gitblit v1.9.1