From aef2a705884dbb25b24d23fc886c563327f4753e Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期一, 27 十一月 2023 17:34:07 +0800
Subject: [PATCH] feat:

---
 admin-web/src/components/mySearch/SearchItem.vue |  126 ++++++++++++++++++++++-------------------
 1 files changed, 67 insertions(+), 59 deletions(-)

diff --git a/admin-web/src/components/mySearch/SearchItem.vue b/admin-web/src/components/mySearch/SearchItem.vue
index 4da675b..fa2580b 100644
--- a/admin-web/src/components/mySearch/SearchItem.vue
+++ b/admin-web/src/components/mySearch/SearchItem.vue
@@ -16,8 +16,9 @@
       v-model="val"
       v-if="item.type === 'cascader'"
       :options="item.options"
-      :props="item.optionsConfig.props||{ checkStrictly: true,value: 'id' }"
-      :clearable="true"
+      :props="item.optionsConfig.props||{ checkStrictly: true,emitPath: false,value: 'id' }"
+      :show-all-levels="false"
+      filterable
       style="width: 150px"
       @change="(v) => this.$emit('change', v)"
     >
@@ -27,7 +28,7 @@
       v-if="item.type === 'select'"
       :placeholder="item.placeholder || ''"
       v-model="val"
-      show-search
+      filterable
       :multiple="item.multiple || false"
       :collapse-tags="item.collapseTags || false"
       :clearable="true"
@@ -66,6 +67,7 @@
       type="year"
       :clearable="true"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyy'"
       @change="(v) => panelChange(v, 'yyyy')"
     />
     <!--鏈堥�夋嫨鍣�-->
@@ -75,6 +77,7 @@
       type="month"
       :clearable="true"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyyMM'"
       @change="(v) => panelChange(v, 'yyyy-MM')"
     />
     <!--鏃ラ�夋嫨鍣�-->
@@ -84,6 +87,7 @@
       type="date"
       :clearable="true"
       style="width: 150px"
+      :value-format="item.format?item.format:'yyyyMMdd'"
       @change="(v) => panelChange(v, 'yyyy-MM-dd')"
     />
     <!--鏃ユ湡甯︽椂闂撮�夋嫨鍣�-->
@@ -132,54 +136,7 @@
     item: Object,
   },
   created() {
-    if (this.item.type === 'select' && this.item.optionsConfig) {
-      if (this.$axios === undefined) {
-        console.error('璇峰厛閰嶇疆this.$axios');
-        return;
-      }
-      request({
-        url: this.item.optionsConfig.url,
-        method: 'get',
-      }).then((res) => {
-        const data = res || [];
-        this.item.options = [];
-        data.forEach((v) => {
-          this.item.options.push({
-            label: v[this.item.optionsConfig.label || 'label'],
-            value: v[this.item.optionsConfig.value || 'value'],
-          });
-        });
-      });
-    }
-    if (this.item.type === 'cascader' && this.item.optionsConfig) {
-      if (this.$axios === undefined) {
-        console.error('璇峰厛閰嶇疆this.$axios');
-        return;
-      }
-      request({
-        url: this.item.optionsConfig.url,
-        method: 'get',
-      }).then((res) => {
-        const data = res || [];
-        this.item.options = [];
-        this.item.options = data;
-      });
-    }
-    if (this.item.type === 'tree-select' && this.item.optionsConfig) {
-      if (this.$axios === undefined) {
-        console.error('璇峰厛閰嶇疆this.$axios');
-        return;
-      }
-      if (this.item.asyncLoad) {
-        this.asyncLoad({value: 0}).then((res) => {
-          this.treeData = res;
-        });
-      } else {
-        this.asyncLoad({}).then((res) => {
-          this.treeData = res;
-        });
-      }
-    }
+    this.initData({})
   },
   watch: {
     value(v) {
@@ -230,15 +187,66 @@
     };
   },
   methods: {
-    panelChange(v, type) {
-      var info = null
-      if (v && this.item.type !== 'date-time-picker') {
-        info = formatDates(v, type)
-      } else {
-        info = v
+    clearData() {
+      this.item.options = []
+      this.treeData = []
+    },
+    initData(params) {
+      this.val = this.item.defaultValue
+      if (this.item.type === 'select' && this.item.optionsConfig) {
+        if (this.$axios === undefined) {
+          console.error('璇峰厛閰嶇疆this.$axios');
+          return;
+        }
+        request({
+          url: this.item.optionsConfig.url,
+          method: 'get',
+          params
+        }).then((res) => {
+          const data = res || [];
+          this.item.options = [];
+          data.forEach((v) => {
+            this.item.options.push({
+              label: v[this.item.optionsConfig.label || 'label'],
+              value: v[this.item.optionsConfig.value || 'value'],
+            });
+          });
+        });
       }
-      this.val = info
-      this.$emit('change', info)
+      if (this.item.type === 'cascader' && this.item.optionsConfig) {
+        if (this.$axios === undefined) {
+          console.error('璇峰厛閰嶇疆this.$axios');
+          return;
+        }
+        request({
+          url: this.item.optionsConfig.url,
+          method: 'get',
+          params
+        }).then((res) => {
+          const data = res || [];
+          this.item.options = [];
+          this.item.options = data;
+        });
+      }
+      if (this.item.type === 'tree-select' && this.item.optionsConfig) {
+        if (this.$axios === undefined) {
+          console.error('璇峰厛閰嶇疆this.$axios');
+          return;
+        }
+        if (this.item.asyncLoad) {
+          params.value = 0
+          this.asyncLoad(params).then((res) => {
+            this.treeData = res;
+          });
+        } else {
+          this.asyncLoad(params).then((res) => {
+            this.treeData = res;
+          });
+        }
+      }
+    },
+    panelChange(v, type) {
+      this.$emit('change', v)
     },
     filterOption(input, option) {
       return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;

--
Gitblit v1.9.1