From 7e460156de73171f9660ce48f80703e79f8b478d Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期六, 14 六月 2025 11:48:26 +0800
Subject: [PATCH] 初始化提交

---
 src/components/TableSearch/index.vue |  123 +++++++++++++++++++++++++++++++++++++----
 1 files changed, 111 insertions(+), 12 deletions(-)

diff --git a/src/components/TableSearch/index.vue b/src/components/TableSearch/index.vue
index 99eb459..221aaea 100644
--- a/src/components/TableSearch/index.vue
+++ b/src/components/TableSearch/index.vue
@@ -1,40 +1,139 @@
 <template>
   <div class="table-search">
     <el-form
-      v-model="queryParams"
       ref="queryForm"
+      v-model="queryParams"
       size="small"
       :inline="true"
       label-width="68px"
     >
       <el-form-item label="鏃ユ湡锛�">
         <el-date-picker
+          v-model="queryParams.date"
+          value-format="yyyy-MM-dd HH:mm"
+          format="yyyy-MM-dd HH:mm"
           type="datetimerange"
           :picker-options="pickerOptions"
           range-separator="鑷�"
           start-placeholder="寮�濮嬫棩鏈�"
           end-placeholder="缁撴潫鏃ユ湡"
           align="right"
-        >
-        </el-date-picker>
+        />
       </el-form-item>
-      <el-form-item label="瑙勬牸锛�">
-        <el-select placeholder="瑙勬牸鍨嬪彿" clearable style="width: 240px">
+      <el-form-item v-show="show" :label="searchParams.hasOwnProperty('productModel')? '瑙勬牸鍨嬪彿':'瀹㈡埛鍚嶇О'">
+        <el-select v-model="queryParams.type" :placeholder="searchParams.hasOwnProperty('productModel')? '璇烽�夋嫨瑙勬牸鍨嬪彿':'璇烽�夋嫨瀹㈡埛鍚嶇О'" clearable style="width: 240px">
+          <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini"
-          >鎼滅储</el-button
-        >
-        <el-button icon="el-icon-refresh" size="mini">瀵煎嚭</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="search"
+        >鎼滅储</el-button>
+        <el-button :style="{color:'#409EFF',border:' 1px solid #409EFF'}" icon="iconfont icon-wenjiandaochu" size="mini" @click="exportExcel">瀵煎嚭</el-button>
       </el-form-item>
     </el-form>
   </div>
 </template>
 
 <script>
-export default {
 
+export default {
+  props: [
+    'searchData',
+    'searchParams',
+    'options',
+    'getList',
+    'file',
+    'show',
+    'excelName'
+  ],
+  data() {
+    return {
+      queryParams: {
+        date: [],
+        type: ''
+      },
+      pickerOptions: {
+        shortcuts: [{
+          text: '鏈�杩戜竴鍛�',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+            picker.$emit('pick', [start, end])
+          }
+        }, {
+          text: '鏈�杩戜竴涓湀',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+            picker.$emit('pick', [start, end])
+          }
+        }, {
+          text: '鏈�杩戜笁涓湀',
+          onClick(picker) {
+            const end = new Date()
+            const start = new Date()
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+            picker.$emit('pick', [start, end])
+          }
+        }]
+      }
+    }
+  },
+  methods: {
+    search() {
+      // "鏌ヨ鏉′欢锛�"鏃堕棿闇�瑕佹牸寮忓寲鎴恲yyy-mm-dd hh-mm-ss
+      // console.log(this.queryParams)
+      let { date, type } = this.queryParams
+      date = date == null ? [] : date
+      let params = { ...this.searchParams, startTime: date[0], endTime: date[1] }
+      params = this.searchParams.hasOwnProperty('productModel') ? { ...params, productModel: type } : { ...params, customerName: type }
+      const obj = {}
+      const arr = Object.keys(params).filter(key => params[key])
+      arr.forEach(item => obj[item] = params[item])
+      console.log(obj)// 鏌ョ湅鎵�鏈夎姹傚弬鏁�
+      this.getList(obj).then(res => {
+        this.searchData({ ...res.data, startTime: date[0], endTime: date[1] })
+      })
+    },
+    exportExcel() {
+      let { date, type } = this.queryParams
+      date = date == null ? [] : date
+      let params = { startTime: date[0], endTime: date[1] }
+      params = this.searchParams.hasOwnProperty('productModel') ? { ...params, productModel: type } : { ...params, customerName: type }
+      const obj = {}
+      const arr = Object.keys(params).filter(key => params[key])
+      arr.forEach(item => obj[item] = params[item])
+      console.log(obj)// 鏌ョ湅鎵�鏈夎姹傚弬鏁�
+      this.file(obj).then(response => {
+        const blob = new Blob([response.data], { type: 'application/vnd.ms-excel;charset=utf-8' })
+        const downloadElement = document.createElement('a')
+        const href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+        downloadElement.href = href
+        downloadElement.download = `${this.excelName}.xlsx` // 涓嬭浇鍚庢枃浠跺悕
+        document.body.appendChild(downloadElement)
+        downloadElement.click() // 鐐瑰嚮涓嬭浇
+        this.loadingBtn = false
+        document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+        window.URL.revokeObjectURL(href) // 閲婃斁鎺塨lob瀵硅薄
+      }).catch(message => {
+        this.$message.error({
+          message: '鎶辨瓑涓嬭浇閿欒锛侀敊璇師鍥狅細' + message,
+          type: 'error'
+        })
+      })
+    }
+  }
 }
 </script>
 
@@ -43,6 +142,6 @@
    .el-form-item{
       margin-bottom: 0;
       margin: 12px;
-    } 
+    }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3