From f9cae9b8bd87208b84c247d6d558f51e22755e33 Mon Sep 17 00:00:00 2001
From: chensiAb <chenchenco03@163.com>
Date: Mon, 05 Aug 2024 12:00:53 +0800
Subject: [PATCH] feat:验证码输入组件-添加刷新cd回到60秒通知父组件

---
 plugins/filter/CFilter.vue |  126 +++++++++++++++++++++++++----------------
 1 files changed, 77 insertions(+), 49 deletions(-)

diff --git a/plugins/filter/CFilter.vue b/plugins/filter/CFilter.vue
index 2b1ff04..2517699 100644
--- a/plugins/filter/CFilter.vue
+++ b/plugins/filter/CFilter.vue
@@ -1,30 +1,39 @@
-/** * CFilter - 页面筛选 * @author Tevin */
+/**
+ * CFilter - 页面筛选
+ * @author Tevin
+ */
 
 <template>
-    <view class="c-filter" ref="filter">
-        <view class="c-filter-bar" v-if="bar">
+    <view
+        class="c-filter"
+        ref="filter"
+    >
+        <view class="c-filter-bar">
             <CFilterSelect
                 v-if="bar.type === 'select'"
-                type="bar"
+                place="bar"
                 :label="bar.label"
+                :name="bar.name"
                 :options="selectOptions[bar.name] || []"
                 :cancelable="bar.cancelable"
                 :value="filterRes[bar.name]"
-                :onChange="evt => handleBarChange(bar.name, evt)"
+                :onChange="evt => handleChange(evt)"
             />
             <CFilterDateRange
-                v-if="bar.type === 'dateRange'"
-                type="bar"
+                v-else-if="bar.type === 'dateRange'"
+                place="bar"
+                :name="bar.name"
                 :label="bar.label"
                 :value="filterRes[bar.name]"
-                :onChange="evt => handleBarChange(bar.name, evt)"
+                :onChange="evt => handleChange(evt)"
             />
             <CFilterInput
-                v-if="bar.type === 'input'"
-                type="bar"
+                v-else-if="bar.type === 'input'"
+                place="bar"
+                :name="bar.name"
                 :label="bar.label"
                 :value="filterRes[bar.name]"
-                :onChange="evt => handleItemChange(bar.name, evt)"
+                :onChange="evt => handleChange(evt)"
             />
         </view>
         <view
@@ -41,47 +50,62 @@
             :show="drawerShow"
             :onClose="evt => handleFinish()"
         >
-            <scroll-view class="c-filter-drawer-list" :scrollY="true">
-                <view class="box" v-for="(item, index) in items" :key="index">
+            <scroll-view
+                class="c-filter-drawer-list"
+                :scrollY="true"
+            >
+                <view
+                    class="box"
+                    v-for="(item, index) in items"
+                    :key="index"
+                >
                     <CFilterSelect
                         v-if="item.type === 'select'"
-                        type="item"
+                        place="item"
                         :label="item.label"
+                        :name="item.name"
                         :options="selectOptions[item.name] || []"
                         :value="filterRes[item.name]"
-                        :onChange="evt => handleItemChange(item.name, evt)"
+                        :onChange="evt => handleChange(evt)"
                     />
                     <CFilterDateRange
-                        v-if="item.type === 'dateRange'"
-                        type="item"
+                        v-else-if="item.type === 'dateRange'"
+                        place="item"
                         :label="item.label"
+                        :name="item.name"
                         :value="filterRes[item.name]"
-                        :onChange="evt => handleItemChange(item.name, evt)"
+                        :onChange="evt => handleChange(evt)"
                     />
                     <CFilterRadio
-                        v-if="item.type === 'radio'"
-                        type="item"
+                        v-else-if="item.type === 'radio'"
+                        place="item"
                         :label="item.label"
+                        :name="item.name"
                         :options="selectOptions[item.name] || []"
                         :value="filterRes[item.name]"
-                        :onChange="evt => handleItemChange(item.name, evt)"
+                        :onChange="evt => handleChange(evt)"
                     />
                     <CFilterInput
-                        v-if="item.type === 'input'"
-                        type="item"
+                        v-else-if="item.type === 'input'"
+                        place="item"
                         :label="item.label"
+                        :name="item.name"
                         :value="filterRes[item.name]"
-                        :onChange="evt => handleItemChange(item.name, evt)"
+                        :onChange="evt => handleChange(evt)"
                     />
                 </view>
             </scroll-view>
             <view class="c-filter-drawer-btn">
-                <AtButton type="primary" :circle="false" :onClick="evt => handleClean()"
-                    >重置</AtButton
-                >
-                <AtButton type="primary" :circle="false" :onClick="evt => handleFinish()"
-                    >完成</AtButton
-                >
+                <AtButton
+                    type="primary"
+                    :circle="false"
+                    :onClick="evt => handleClean()"
+                >重置</AtButton>
+                <AtButton
+                    type="primary"
+                    :circle="false"
+                    :onClick="evt => handleFinish()"
+                >完成</AtButton>
             </view>
         </CDrawer>
     </view>
@@ -135,27 +159,31 @@
         handleOpen() {
             this.drawerShow = true;
         },
-        handleBarChange(name, value) {
-            this.$set(this.filterRes, name, value);
-            this.onChange(this.filterRes);
-        },
-        handleItemChange(name, value) {
-            this.$set(this.filterRes, name, value);
-            this.itemsChanged = true;
-            // 如果变化值不为空
-            if (typeof value !== 'undefined') {
-                this.itemsFilled = true;
+        handleChange(changed) {
+            // 横条项
+            if (changed.place === 'bar') {
+                this.$set(this.filterRes, changed.name, changed.value);
+                this.onChange(this.filterRes);
             }
-            // 为空是检查所有面板值是否为空
-            else {
-                let valuehas = false;
-                for (let item of this.items) {
-                    if (typeof this.filterRes[item.name] !== 'undefined') {
-                        valuehas = true;
-                        break;
-                    }
+            // 展开项
+            else if (changed.place === 'item') {
+                this.$set(this.filterRes, changed.name, changed.value);
+                this.itemsChanged = true;
+                // 如果变化值不为空
+                if (typeof value !== 'undefined') {
+                    this.itemsFilled = true;
                 }
-                this.itemsFilled = valuehas;
+                // 为空时检查所有面板值是否为空
+                else {
+                    let valuehas = false;
+                    for (let item of this.items) {
+                        if (typeof this.filterRes[item.name] !== 'undefined') {
+                            valuehas = true;
+                            break;
+                        }
+                    }
+                    this.itemsFilled = valuehas;
+                }
             }
         },
         handleClean() {

--
Gitblit v1.9.1