Browse Source

出库问题

flower_bs 1 day ago
parent
commit
64633b0b4c
35 changed files with 904 additions and 279 deletions
  1. 7 1
      bound/views.py
  2. 1 1
      container/filter.py
  3. 41 4
      container/views.py
  4. 1 0
      templates/dist/spa/css/17.20ec1b8f.css
  5. 0 1
      templates/dist/spa/css/17.2246dfbb.css
  6. 1 0
      templates/dist/spa/css/21.e2633675.css
  7. 0 1
      templates/dist/spa/css/21.f4e6d623.css
  8. 1 0
      templates/dist/spa/css/23.97f5bf6a.css
  9. 0 1
      templates/dist/spa/css/23.bdff6d34.css
  10. 1 0
      templates/dist/spa/css/5.19d5044b.css
  11. 0 1
      templates/dist/spa/css/5.7100e471.css
  12. 1 1
      templates/dist/spa/index.html
  13. 0 1
      templates/dist/spa/js/17.071874fc.js
  14. BIN
      templates/dist/spa/js/17.071874fc.js.gz
  15. 1 0
      templates/dist/spa/js/17.d6d38b20.js
  16. BIN
      templates/dist/spa/js/17.d6d38b20.js.gz
  17. 1 0
      templates/dist/spa/js/21.8f0d2bb0.js
  18. BIN
      templates/dist/spa/js/21.8f0d2bb0.js.gz
  19. 0 1
      templates/dist/spa/js/21.aab9191c.js
  20. BIN
      templates/dist/spa/js/21.aab9191c.js.gz
  21. 0 1
      templates/dist/spa/js/23.ac5c0d62.js
  22. BIN
      templates/dist/spa/js/23.ac5c0d62.js.gz
  23. 1 0
      templates/dist/spa/js/23.bdf67356.js
  24. BIN
      templates/dist/spa/js/23.bdf67356.js.gz
  25. 1 0
      templates/dist/spa/js/5.5e716db3.js
  26. BIN
      templates/dist/spa/js/5.5e716db3.js.gz
  27. 0 1
      templates/dist/spa/js/5.889114d6.js
  28. BIN
      templates/dist/spa/js/5.889114d6.js.gz
  29. BIN
      templates/dist/spa/js/app.82bf6bed.js.gz
  30. 1 1
      templates/dist/spa/js/app.82bf6bed.js
  31. BIN
      templates/dist/spa/js/app.f728804a.js.gz
  32. 155 3
      templates/src/pages/container/containerlist.vue
  33. 138 8
      templates/src/pages/container/containeroperate.vue
  34. 166 16
      templates/src/pages/outbound/dn.vue
  35. 386 236
      templates/src/pages/task/task.vue

+ 7 - 1
bound/views.py

@@ -835,7 +835,13 @@ class OutBoundBatchViewSet(viewsets.ModelViewSet):
         data['openid'] = self.request.auth.openid
         data.setdefault('is_delete', False)
         data['goods_total_weight'] = data['goods_weight']*data['goods_out_qty']
-        data['goods_qty'] = batch_obj.goods_qty -batch_obj.goods_reserve_qty - data['goods_out_qty']
+        from decimal import Decimal
+
+        #  data['goods_out_qty'] 是一个字符串或浮点数
+        data['goods_out_qty'] = Decimal(str(data['goods_out_qty']))
+
+        # 现在 data['goods_out_qty'] 是 Decimal 类型,可以进行减法操作
+        data['goods_qty'] = batch_obj.goods_qty - batch_obj.goods_reserve_qty - data['goods_out_qty']
 
         data['status'] = 0  #现在处于出库申请状态
    

+ 1 - 1
container/filter.py

@@ -74,7 +74,7 @@ class WCSTaskFilter(FilterSet):
             "current_location": ['exact', 'icontains'],
             "target_location": ['exact', 'icontains'],
             "message": ['exact', 'icontains'],
-            "working": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
+            "working": ['exact', 'icontains','gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
             "status": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
             "create_time": ['exact', 'gt', 'gte', 'lt', 'lte', 'range'],
             "is_delete": ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],

+ 41 - 4
container/views.py

@@ -1664,13 +1664,36 @@ class OutboundService:
     @staticmethod
     def process_next_task():
         """处理下一个任务"""
-        next_task = ContainerWCSModel.objects.filter(status=100).order_by('sequence').first()
+        next_task = ContainerWCSModel.objects.filter(status=100,working=1,is_delete=False).order_by('sequence').first()
         if not next_task:
             logger.info("没有待处理任务")
             return
+        location = next_task.current_location
+        if location =='103' or location =='203':
+            logger.info (f"需要跳过该任务")
+            next_task.status = 200
+            next_task.working = 0
+            next_task.save()
+            OutboundService.process_next_task()
+            return
+  
+
         allocator = LocationAllocation()
         OutboundService.perform_initial_allocation(allocator, next_task.current_location)
         OutboundService.send_task_to_wcs(next_task)
+    
+    @staticmethod
+    def process_current_task(task_id):
+        """发送指定任务"""
+        try:
+            task = ContainerWCSModel.objects.get(taskid=task_id)
+            allocator = LocationAllocation()
+            OutboundService.perform_initial_allocation(allocator, task.current_location)
+            OutboundService.send_task_to_wcs(task)
+        except Exception as e:
+            logger.error(f"任务处理失败: {str(e)}")
+      
+
 
     def perform_initial_allocation(allocator, location):
         """执行初始库位分配操作"""
@@ -1707,10 +1730,22 @@ class OutTaskViewSet(APIView):
     def post(self, request):
         try:
             data = self.request.data
-            logger.info(f"收到 WMS 推送数据: {data}")
+            logger.info(f"收到 出库 推送数据: {data}")
             
-            # 假设从请求中获取 bound_list_id
+            # 从请求中获取 bound_list_id
             bound_list_id = data.get('bound_list_id')
+            current_WCS = ContainerWCSModel.objects.filter(tasktype='outbound',bound_list_id = bound_list_id,is_delete=False).first()
+            if current_WCS:
+                logger.info(f"当前{bound_list_id}已有出库任务{current_WCS.taskid}")
+
+                if current_WCS.working == 1:
+                    OutboundService.process_current_task(current_WCS.taskid)
+                    return Response({"code": "200", "msg": f"下发任务{ current_WCS.taskid }到WCS成功"}, status=200)
+                else :
+                    return Response({"code": "200", "msg": f"当前任务{current_WCS.taskid}正在处理中"}, status=200)
+
+
+
             # 获取关联的出库批次
             out_batches = OutBatchModel.objects.filter(
                 bound_list_id=bound_list_id,
@@ -1755,7 +1790,7 @@ class OutTaskViewSet(APIView):
             return Response({"code": "200", "msg": "Success"}, status=200)
         except Exception as e:
             logger.error(f"任务生成失败: {str(e)}")
-            return Response({"code": "500", "msg": str(e)}, status=500)
+            return Response({"code": "200", "msg": str(e)}, status=200)
 
 
 
@@ -2202,6 +2237,8 @@ class OutDetailViewSet(viewsets.ModelViewSet):
                 container_detail_obj = ContainerDetailModel.objects.filter(id=container_detail_id,is_delete=False).first()
                 if not container_detail_obj:
                     continue
+                from decimal import Decimal
+                out_qty = Decimal(out_qty)
                 container_detail_obj.goods_out_qty += out_qty
                 container_detail_obj.save()
             return Response({"code": "200", "message": "Success"}, status=status.HTTP_200_OK)

+ 1 - 0
templates/dist/spa/css/17.20ec1b8f.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-71400de4]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-71400de4]{background-color:rgba(25,118,210,0.1)}[data-v-71400de4] .q-field__label{margin-top:8px;align-self:center}[data-v-71400de4] .q-field__control-container{padding-left:50px;margin-top:-5px}

+ 0 - 1
templates/dist/spa/css/17.2246dfbb.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-a9ddb4fe]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-a9ddb4fe]{background-color:rgba(25,118,210,0.1)}[data-v-a9ddb4fe] .q-field__label{margin-top:8px;align-self:center}[data-v-a9ddb4fe] .q-field__control-container{padding-left:50px;margin-top:-5px}

+ 1 - 0
templates/dist/spa/css/21.e2633675.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-8214f958]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-8214f958]{background-color:rgba(25,118,210,0.1)}

+ 0 - 1
templates/dist/spa/css/21.f4e6d623.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-44e0a5ca]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-44e0a5ca]{background-color:rgba(25,118,210,0.1)}

+ 1 - 0
templates/dist/spa/css/23.97f5bf6a.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-c4bb9d72]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-c4bb9d72]{background-color:rgba(25,118,210,0.1)}

+ 0 - 1
templates/dist/spa/css/23.bdff6d34.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-7fe0b347]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-7fe0b347]{background-color:rgba(25,118,210,0.1)}

+ 1 - 0
templates/dist/spa/css/5.19d5044b.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-4e9ffad2]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-4e9ffad2]{background-color:rgba(25,118,210,0.1)}

+ 0 - 1
templates/dist/spa/css/5.7100e471.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-0b572384]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-0b572384]{background-color:rgba(25,118,210,0.1)}

File diff suppressed because it is too large
+ 1 - 1
templates/dist/spa/index.html


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/17.071874fc.js


BIN
templates/dist/spa/js/17.071874fc.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/17.d6d38b20.js


BIN
templates/dist/spa/js/17.d6d38b20.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/21.8f0d2bb0.js


BIN
templates/dist/spa/js/21.8f0d2bb0.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/21.aab9191c.js


BIN
templates/dist/spa/js/21.aab9191c.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/23.ac5c0d62.js


BIN
templates/dist/spa/js/23.ac5c0d62.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/23.bdf67356.js


BIN
templates/dist/spa/js/23.bdf67356.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/5.5e716db3.js


BIN
templates/dist/spa/js/5.5e716db3.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/5.889114d6.js


BIN
templates/dist/spa/js/5.889114d6.js.gz


BIN
templates/dist/spa/js/app.82bf6bed.js.gz


File diff suppressed because it is too large
+ 1 - 1
templates/dist/spa/js/app.82bf6bed.js


BIN
templates/dist/spa/js/app.f728804a.js.gz


+ 155 - 3
templates/src/pages/container/containerlist.vue

@@ -17,6 +17,33 @@
         flat
         bordered
       >
+        <template v-slot:header-cell="props">
+          <q-th :props="props" @dblclick="handleHeaderDblClick(props.col)">
+            <!-- 为特定列添加下拉选择器 -->
+            <template v-if="['bound_department'].includes(props.col.name)">
+              <q-select
+                dense
+                outlined
+                v-model="filterModels[props.col.name]"
+                :options="getFilterOptions(props.col.name)"
+                option-label="label"
+                option-value="value"
+                emit-value
+                map-options
+                clearable
+                @input="handleFilterChange"
+                style="min-width: 120px"
+              >
+                <template v-slot:prepend>
+                  <span class="text-caption">{{ props.col.label }}</span>
+                </template>
+              </q-select>
+            </template>
+            <template v-else>
+              {{ props.col.label }}
+            </template>
+          </q-th>
+        </template>
         <template v-slot:top>
           <q-btn-group push>
             <q-btn :label="'新增'" icon="add" @click="add()"></q-btn>
@@ -234,7 +261,7 @@
 
     />
   </div>
-  </div>
+
 </template>
 
 <script>
@@ -330,11 +357,120 @@ export default {
       currentBarcode: '',
       select_container_number: 0,
       select_container_code: 0,
-      showInventoryDetails: false
+      showInventoryDetails: false,
+      filterModels: {
+        bound_department: null
+      },
+      filterdata: {},
+      activeSearchField: '',
+      activeSearchLabel: ''
     }
   },
 
   methods: {
+     // 处理过滤变化
+    handleFilterChange () {
+      this.pagination.page = 1
+      this.getSearchList(1)
+    },
+    getFilterOptions (columnName) {
+      switch (columnName) {
+        case 'type':
+          return [
+            { label: '生产入库', value: 1 },
+            { label: '采购入库', value: 2 },
+            { label: '其他入库', value: 3 },
+            { label: '调拨入库', value: 4 }
+          ]
+        case 'bound_status':
+          return [
+            { label: '待审核', value: 0 },
+            { label: '确认无误', value: 1 }
+          ]
+        case 'bound_department':
+          return this.bound_department_list
+        default:
+          return []
+      }
+    },
+    handleHeaderDblClick (column) {
+      // 排除不需要搜索的列
+      if (['detail', 'action'].includes(column.name)) return
+
+      this.activeSearchField = column.field
+      this.activeSearchLabel = column.label
+
+      // 弹出搜索对话框
+      this.$q
+        .dialog({
+          title: `搜索${column.label}`,
+          message: `请输入${column.label}的搜索条件`,
+          prompt: {
+            model: '',
+            type: 'text'
+          },
+          cancel: true,
+          persistent: true
+        })
+        .onOk((data) => {
+          // 执行搜索
+          this.executeColumnSearch(column.field, data)
+        })
+        .onCancel(() => {
+          this.activeSearchField = ''
+          this.activeSearchLabel = ''
+        })
+    },
+    // 执行列搜索
+    executeColumnSearch (field, value) {
+      // 构建搜索参数
+      if (
+        field === 'type' ||
+        field === 'audit_status' ||
+        field === 'save_status' ||
+        field === 'bound_status'
+      ) {
+        const searchParams = {
+          [field]: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+
+        // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      } else {
+        const searchParams = {
+          [field + '__icontains']: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+        this.filterdata = searchParams
+        this.$q.notify({
+          message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
+          icon: 'search',
+          color: 'positive'
+        })
+
+        // // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      }
+    },
     setCurrentBatch (item) {
       this.currentBarcode = item || ''
     },
@@ -403,6 +539,7 @@ export default {
       getauth(`${_this.pathname}?${queryParams}`)
         .then((res) => {
           _this.table_list = res.results
+
           _this.total = res.count
           _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0
           _this.pathname_previous = res.previous
@@ -436,8 +573,19 @@ export default {
     getSearchList (page = 1) {
       this.current = page
       this.paginationIpt = page
+
+      // 构建过滤参数
+      const filterParams = {}
+      for (const [key, value] of Object.entries(this.filterModels)) {
+        if (value !== null && value !== '') {
+          filterParams[key] = value
+        }
+      }
       this.getList({
-        container_code__icontains: this.filter
+        number__icontains: this.filter,
+        document_date__range: this.date_range,
+        ...filterParams ,// 添加过滤条件
+        ...this.filterdata, // 添加其他过滤条件
       })
     },
     getListPrevious () {
@@ -480,6 +628,10 @@ export default {
     },
     reFresh () {
       var _this = this
+      this.filterdata = {}
+      this.filterModels = {
+        bound_department: null
+      }
       _this.getSearchList()
     },
     detailData (e) {

+ 138 - 8
templates/src/pages/container/containeroperate.vue

@@ -5,6 +5,33 @@
       <q-table class="my-sticky-header-column-table shadow-24" :data="table_list" row-key="id" :separator="separator"
         :loading="loading" :columns="columns" hide-bottom :pagination.sync="pagination" no-data-label="No data"
         no-results-label="No data you want" :table-style="{ height: height }" flat bordered>
+        <template v-slot:header-cell="props">
+          <q-th :props="props" @dblclick="handleHeaderDblClick(props.col)">
+            <!-- 为特定列添加下拉选择器 -->
+            <template v-if="['bound_department'].includes(props.col.name)">
+              <q-select
+                dense
+                outlined
+                v-model="filterModels[props.col.name]"
+                :options="getFilterOptions(props.col.name)"
+                option-label="label"
+                option-value="value"
+                emit-value
+                map-options
+                clearable
+                @input="handleFilterChange"
+                style="min-width: 120px"
+              >
+                <template v-slot:prepend>
+                  <span class="text-caption">{{ props.col.label }}</span>
+                </template>
+              </q-select>
+            </template>
+            <template v-else>
+              {{ props.col.label }}
+            </template>
+          </q-th>
+        </template>
         <template v-slot:top>
           <q-btn-group push>
 
@@ -197,7 +224,12 @@ export default {
       total: 0,
       paginationIpt: 1,
       current: 1,
-
+            filterModels: {
+        bound_department: null
+      },
+      filterdata: {},
+      activeSearchField: '',
+      activeSearchLabel: ''
     }
 
   },
@@ -207,7 +239,90 @@ export default {
     }
   },
   methods: {
-    getList(params = {}) {
+      // 处理过滤变化
+    handleFilterChange () {
+      this.pagination.page = 1
+      this.getSearchList(1)
+    },
+    handleHeaderDblClick (column) {
+      // 排除不需要搜索的列
+      if (['detail', 'action'].includes(column.name)) return
+
+      this.activeSearchField = column.field
+      this.activeSearchLabel = column.label
+
+      // 弹出搜索对话框
+      this.$q
+        .dialog({
+          title: `搜索${column.label}`,
+          message: `请输入${column.label}的搜索条件`,
+          prompt: {
+            model: '',
+            type: 'text'
+          },
+          cancel: true,
+          persistent: true
+        })
+        .onOk((data) => {
+          // 执行搜索
+          this.executeColumnSearch(column.field, data)
+        })
+        .onCancel(() => {
+          this.activeSearchField = ''
+          this.activeSearchLabel = ''
+        })
+    },
+    // 执行列搜索
+    executeColumnSearch (field, value) {
+      // 构建搜索参数
+      if (
+        field === 'type' ||
+        field === 'audit_status' ||
+        field === 'save_status' ||
+        field === 'bound_status'
+      ) {
+        const searchParams = {
+          [field]: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+
+        // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      } else {
+        const searchParams = {
+          [field + '__icontains']: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+        this.filterdata = searchParams
+        this.$q.notify({
+          message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
+          icon: 'search',
+          color: 'positive'
+        })
+
+        // // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      }
+    },
+    getList (params = {}) {
       var _this = this
       _this.loading = true
       // 合并基础参数
@@ -230,14 +345,15 @@ export default {
       })
 
       getauth(`${_this.pathname}?${queryParams}`)
-        .then(res => {
+        .then((res) => {
           _this.table_list = res.results
+
           _this.total = res.count
           _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0
           _this.pathname_previous = res.previous
           _this.pathname_next = res.next
         })
-        .catch(err => {
+        .catch((err) => {
           _this.$q.notify({
             message: err.detail,
             icon: 'close',
@@ -262,12 +378,22 @@ export default {
     },
 
     // 带搜索条件加载
-    getSearchList(page = 1) {
+    getSearchList (page = 1) {
       this.current = page
       this.paginationIpt = page
+
+      // 构建过滤参数
+      const filterParams = {}
+      for (const [key, value] of Object.entries(this.filterModels)) {
+        if (value !== null && value !== '') {
+          filterParams[key] = value
+        }
+      }
       this.getList({
-        goods_desc__icontains: this.filter,
-        create_time__range: this.date_range
+        number__icontains: this.filter,
+        document_date__range: this.date_range,
+        ...filterParams ,// 添加过滤条件
+        ...this.filterdata, // 添加其他过滤条件
       })
     },
 
@@ -309,8 +435,12 @@ export default {
           })
       }
     },
-    reFresh() {
+    reFresh () {
       var _this = this
+      this.filterdata = {}
+      this.filterModels = {
+        bound_department: null
+      }
       _this.getSearchList()
     },
 

+ 166 - 16
templates/src/pages/outbound/dn.vue

@@ -16,6 +16,33 @@
         flat
         bordered
       >
+        <template v-slot:header-cell="props">
+          <q-th :props="props" @dblclick="handleHeaderDblClick(props.col)">
+            <!-- 为特定列添加下拉选择器 -->
+            <template v-if="['bound_department'].includes(props.col.name)">
+              <q-select
+                dense
+                outlined
+                v-model="filterModels[props.col.name]"
+                :options="getFilterOptions(props.col.name)"
+                option-label="label"
+                option-value="value"
+                emit-value
+                map-options
+                clearable
+                @input="handleFilterChange"
+                style="min-width: 120px"
+              >
+                <template v-slot:prepend>
+                  <span class="text-caption">{{ props.col.label }}</span>
+                </template>
+              </q-select>
+            </template>
+            <template v-else>
+              {{ props.col.label }}
+            </template>
+          </q-th>
+        </template>
         <template v-slot:top>
           <q-btn-group push>
             <q-btn
@@ -997,18 +1024,18 @@ export default {
           field: 'bound_code',
           align: 'center'
         },
-        {
-          name: 'bound_code_type',
-          label: '单据类型',
-          field: 'bound_code_type',
-          align: 'center'
-        },
-        {
-          name: 'bound_bs_type',
-          label: '业务类型',
-          field: 'bound_bs_type',
-          align: 'center'
-        },
+        // {
+        //   name: 'bound_code_type',
+        //   label: '单据类型',
+        //   field: 'bound_code_type',
+        //   align: 'center'
+        // },
+        // {
+        //   name: 'bound_bs_type',
+        //   label: '业务类型',
+        //   field: 'bound_bs_type',
+        //   align: 'center'
+        // },
         {
           name: 'bound_desc',
           label: '出入库类别',
@@ -1104,7 +1131,13 @@ export default {
       bound_batch_list: [],
 
       activeTab: 'tab1',
-      target_batch: ''
+      target_batch: '',
+      filterModels: {
+        bound_department: null
+      },
+      filterdata: {},
+      activeSearchField: '',
+      activeSearchLabel: ''
     }
   },
   computed: {
@@ -1117,6 +1150,109 @@ export default {
     }
   },
   methods: {
+    // 处理过滤变化
+    handleFilterChange () {
+      this.pagination.page = 1
+      this.getSearchList(1)
+    },
+    getFilterOptions (columnName) {
+      switch (columnName) {
+        case 'type':
+          return [
+            { label: '生产入库', value: 1 },
+            { label: '采购入库', value: 2 },
+            { label: '其他入库', value: 3 },
+            { label: '调拨入库', value: 4 }
+          ]
+        case 'bound_status':
+          return [
+            { label: '待审核', value: 0 },
+            { label: '确认无误', value: 1 }
+          ]
+        case 'bound_department':
+          return this.bound_department_list
+        default:
+          return []
+      }
+    },
+    handleHeaderDblClick (column) {
+      // 排除不需要搜索的列
+      if (['detail', 'action'].includes(column.name)) return
+
+      this.activeSearchField = column.field
+      this.activeSearchLabel = column.label
+
+      // 弹出搜索对话框
+      this.$q
+        .dialog({
+          title: `搜索${column.label}`,
+          message: `请输入${column.label}的搜索条件`,
+          prompt: {
+            model: '',
+            type: 'text'
+          },
+          cancel: true,
+          persistent: true
+        })
+        .onOk((data) => {
+          // 执行搜索
+          this.executeColumnSearch(column.field, data)
+        })
+        .onCancel(() => {
+          this.activeSearchField = ''
+          this.activeSearchLabel = ''
+        })
+    },
+    // 执行列搜索
+    executeColumnSearch (field, value) {
+      // 构建搜索参数
+      if (
+        field === 'type' ||
+        field === 'audit_status' ||
+        field === 'save_status' ||
+        field === 'bound_status'
+      ) {
+        const searchParams = {
+          [field]: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+
+        // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      } else {
+        const searchParams = {
+          [field + '__icontains']: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+        this.filterdata = searchParams
+        this.$q.notify({
+          message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
+          icon: 'search',
+          color: 'positive'
+        })
+
+        // // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      }
+    },
     refresh_out_form (id) {
       getauth('container/out_detail/' + id + '/').then((res) => {
         this.out_form = res
@@ -1249,9 +1385,19 @@ export default {
     getSearchList (page = 1) {
       this.current = page
       this.paginationIpt = page
+
+      // 构建过滤参数
+      const filterParams = {}
+      for (const [key, value] of Object.entries(this.filterModels)) {
+        if (value !== null && value !== '') {
+          filterParams[key] = value
+        }
+      }
       this.getList({
-        goods_desc__icontains: this.filter,
-        document_date__range: this.date_range
+        number__icontains: this.filter,
+        document_date__range: this.date_range,
+        ...filterParams, // 添加过滤条件
+        ...this.filterdata // 添加其他过滤条件
       })
     },
     downloadlistData () {
@@ -1344,6 +1490,10 @@ export default {
     },
     reFresh () {
       var _this = this
+      this.filterdata = {}
+      this.filterModels = {
+        bound_department: null
+      }
       _this.getSearchList()
     },
 
@@ -1489,7 +1639,7 @@ export default {
           _this.getSearchList()
           if (res.status_code !== 500) {
             _this.$q.notify({
-              message: '开始出库',
+              message: res.msg,
               icon: 'check',
               color: 'green'
             })

+ 386 - 236
templates/src/pages/task/task.vue

@@ -16,6 +16,33 @@
         flat
         bordered
       >
+      <template v-slot:header-cell="props">
+          <q-th :props="props" @dblclick="handleHeaderDblClick(props.col)">
+            <!-- 为特定列添加下拉选择器 -->
+            <template v-if="['bound_department'].includes(props.col.name)">
+              <q-select
+                dense
+                outlined
+                v-model="filterModels[props.col.name]"
+                :options="getFilterOptions(props.col.name)"
+                option-label="label"
+                option-value="value"
+                emit-value
+                map-options
+                clearable
+                @input="handleFilterChange"
+                style="min-width: 120px"
+              >
+                <template v-slot:prepend>
+                  <span class="text-caption">{{ props.col.label }}</span>
+                </template>
+              </q-select>
+            </template>
+            <template v-else>
+              {{ props.col.label }}
+            </template>
+          </q-th>
+        </template>
         <template v-slot:top>
           <q-btn-group push>
             <q-btn :label="$t('refresh')" icon="refresh" @click="reFresh()">
@@ -260,102 +287,102 @@
 <router-view />
 
 <script>
-import { getauth, postauth, putauth, deleteauth } from "boot/axios_request";
-import { date, LocalStorage } from "quasar";
+import { getauth, postauth, putauth, deleteauth } from 'boot/axios_request'
+import { date, LocalStorage } from 'quasar'
 
 export default {
-  name: "Pageflowlist",
-  data() {
+  name: 'Pageflowlist',
+  data () {
     return {
-      createDate1: "",
-      createDate2: "",
-      date_range: "",
-      proxyDate: "",
-      date: "",
-      goods_code: "",
-      goods_desc: "",
-      openid: "",
-      login_name: "",
-      authin: "0",
-      searchUrl: "",
-      pathname: "container/wcs_task/",
-      finishtaskUrl: "container/container_wcs/",
-      pathname_previous: "",
-      pathname_next: "",
-      separator: "cell",
+      createDate1: '',
+      createDate2: '',
+      date_range: '',
+      proxyDate: '',
+      date: '',
+      goods_code: '',
+      goods_desc: '',
+      openid: '',
+      login_name: '',
+      authin: '0',
+      searchUrl: '',
+      pathname: 'container/wcs_task/',
+      finishtaskUrl: 'container/container_wcs/',
+      pathname_previous: '',
+      pathname_next: '',
+      separator: 'cell',
       loading: false,
-      height: "",
+      height: '',
       viewForm: false,
 
       table_list: [],
 
       columns: [
         {
-          name: "id",
-          label: "任务",
-          align: "center",
-          field: "id",
-          sortable: true,
+          name: 'id',
+          label: '任务',
+          align: 'center',
+          field: 'id',
+          sortable: true
         },
 
         {
-          name: "tasknumber",
+          name: 'tasknumber',
           required: true,
-          label: "任务ID",
-          align: "center",
-          field: "tasknumber",
+          label: '任务ID',
+          align: 'center',
+          field: 'tasknumber'
         },
         {
-          name: "tasktype",
-          label: "任务类型",
-          field: "tasktype",
-          align: "center",
-          sortable: true,
+          name: 'tasktype',
+          label: '任务类型',
+          field: 'tasktype',
+          align: 'center',
+          sortable: true
         },
         {
-          name: "container",
-          label: "托盘号",
-          field: "container",
-          align: "center",
-          sortable: true,
+          name: 'container',
+          label: '托盘号',
+          field: 'container',
+          align: 'center',
+          sortable: true
         },
         {
-          name: "current_location",
-          label: "任务起始位置",
-          field: "current_location",
-          align: "center",
+          name: 'current_location',
+          label: '任务起始位置',
+          field: 'current_location',
+          align: 'center'
         },
         {
-          name: "target_location",
-          label: "任务目标位置",
-          field: "target_location",
-          align: "center",
+          name: 'target_location',
+          label: '任务目标位置',
+          field: 'target_location',
+          align: 'center'
         },
         {
-          name: "working",
-          label: "工作状态",
-          field: "working",
-          align: "center",
-          sortable: true,
+          name: 'working',
+          label: '工作状态',
+          field: 'working',
+          align: 'center',
+          sortable: true
         },
         {
-          name: "message",
-          label: "备注",
-          field: "message",
-          align: "center",
+          name: 'message',
+          label: '备注',
+          field: 'message',
+          align: 'center'
         },
         {
-          name: "create_time",
-          label: "创建时间",
-          field: "create_time",
-          align: "center",
+          name: 'create_time',
+          label: '创建时间',
+          field: 'create_time',
+          align: 'center'
         },
-        { name: "action", label: "操作", align: "center" },
+        { name: 'action', label: '操作', align: 'center' }
       ],
-      filter: "",
+      filter: '',
       pagination: {
         page: 1,
-        rowsPerPage: 11,
+        rowsPerPage: 11
       },
 
       editid: 0,
@@ -363,289 +390,412 @@ export default {
       editMode: false,
       deleteForm: false,
       deleteid: 0,
-      bar_code: "",
-      error1: this.$t("goods.view_goodslist.error1"),
-      error2: this.$t("goods.view_goodslist.error2"),
-      error3: this.$t("goods.view_goodslist.error3"),
-      error4: this.$t("goods.view_goodslist.error4"),
-      error5: this.$t("goods.view_goodslist.error5"),
-      error6: this.$t("goods.view_goodslist.error6"),
-      error7: this.$t("goods.view_goodslist.error7"),
-      error8: this.$t("goods.view_unit.error1"),
-      error9: this.$t("goods.view_class.error1"),
-      error10: this.$t("goods.view_brand.error1"),
-      error11: this.$t("goods.view_color.error1"),
-      error12: this.$t("goods.view_shape.error1"),
-      error13: this.$t("goods.view_specs.error1"),
-      error14: this.$t("goods.view_origin.error1"),
-      error15: this.$t("goods.view_goodslist.error8"),
-      error16: this.$t("goods.view_goodslist.error9"),
+      bar_code: '',
+      error1: this.$t('goods.view_goodslist.error1'),
+      error2: this.$t('goods.view_goodslist.error2'),
+      error3: this.$t('goods.view_goodslist.error3'),
+      error4: this.$t('goods.view_goodslist.error4'),
+      error5: this.$t('goods.view_goodslist.error5'),
+      error6: this.$t('goods.view_goodslist.error6'),
+      error7: this.$t('goods.view_goodslist.error7'),
+      error8: this.$t('goods.view_unit.error1'),
+      error9: this.$t('goods.view_class.error1'),
+      error10: this.$t('goods.view_brand.error1'),
+      error11: this.$t('goods.view_color.error1'),
+      error12: this.$t('goods.view_shape.error1'),
+      error13: this.$t('goods.view_specs.error1'),
+      error14: this.$t('goods.view_origin.error1'),
+      error15: this.$t('goods.view_goodslist.error8'),
+      error16: this.$t('goods.view_goodslist.error9'),
       current: 1,
       max: 0,
       total: 0,
       paginationIpt: 1,
-    };
+      filterModels: {
+        bound_department: null
+      },
+      filterdata: {},
+      activeSearchField: '',
+      activeSearchLabel: ''
+    }
   },
   computed: {
-    interval() {
+    interval () {
       return (
-        this.$t("download_center.start") +
-        " - " +
-        this.$t("download_center.end")
-      );
-    },
+        this.$t('download_center.start') +
+        ' - ' +
+        this.$t('download_center.end')
+      )
+    }
   },
   methods: {
-    sendTask(row) {
-      postauth("container/send_again/", { taskid: row.id })
+    // 处理过滤变化
+    handleFilterChange () {
+      this.pagination.page = 1
+      this.getSearchList(1)
+    },
+    getFilterOptions (columnName) {
+      switch (columnName) {
+        case 'type':
+          return [
+            { label: '生产入库', value: 1 },
+            { label: '采购入库', value: 2 },
+            { label: '其他入库', value: 3 },
+            { label: '调拨入库', value: 4 }
+          ]
+        case 'bound_status':
+          return [
+            { label: '待审核', value: 0 },
+            { label: '确认无误', value: 1 }
+          ]
+        case 'bound_department':
+          return this.bound_department_list
+        default:
+          return []
+      }
+    },
+    handleHeaderDblClick (column) {
+      // 排除不需要搜索的列
+      if (['detail', 'action'].includes(column.name)) return
+
+      this.activeSearchField = column.field
+      this.activeSearchLabel = column.label
+
+      // 弹出搜索对话框
+      this.$q
+        .dialog({
+          title: `搜索${column.label}`,
+          message: `请输入${column.label}的搜索条件`,
+          prompt: {
+            model: '',
+            type: 'text'
+          },
+          cancel: true,
+          persistent: true
+        })
+        .onOk((data) => {
+          // 执行搜索
+          this.executeColumnSearch(column.field, data)
+        })
+        .onCancel(() => {
+          this.activeSearchField = ''
+          this.activeSearchLabel = ''
+        })
+    },
+    // 执行列搜索
+    executeColumnSearch (field, value) {
+      // 构建搜索参数
+      if (
+        field === 'type' ||
+        field === 'audit_status' ||
+        field === 'save_status' ||
+        field === 'bound_status'
+      ) {
+        const searchParams = {
+          [field]: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+
+        // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      } else {
+        const searchParams = {
+          [field + '__icontains']: value
+        }
+        // 清除其他搜索条件
+        this.filter = ''
+        this.date_range = ''
+
+        // 执行搜索
+        this.getList({
+          ...searchParams,
+          page: 1
+        })
+        this.filterdata = searchParams
+        this.$q.notify({
+          message: `已搜索 ${this.activeSearchLabel} 含有 "${value}" 的结果`,
+          icon: 'search',
+          color: 'positive'
+        })
+
+        // // 重置激活的搜索字段
+        this.activeSearchField = ''
+        this.activeSearchLabel = ''
+      }
+    },
+    sendTask (row) {
+      postauth('container/send_again/', { taskid: row.id })
         .then((res) => {
           this.$q.notify({
             message: res.message,
-            icon: "check",
-            color: "green",
-          });
-          this.getSearchList();
+            icon: 'check',
+            color: 'green'
+          })
+          this.getSearchList()
         })
         .catch((err) => {
           this.$q.notify({
             message: err.message,
-            icon: "close",
-            color: "negative",
-          });
-        });
+            icon: 'close',
+            color: 'negative'
+          })
+        })
     },
-    finishtask(row) {
+    finishtask (row) {
       putauth(this.finishtaskUrl, {
         taskNumber: row.tasknumber - 20000000000,
         container_number: row.container,
-        current_location: row.target_location,
+        current_location: row.target_location
       }).then((res) => {
         this.$q.notify({
-          message: "手动切换任务状态成功",
-          icon: "check",
-          color: "green",
-          position: "bottom-right", // 核心定位参数
+          message: '手动切换任务状态成功',
+          icon: 'check',
+          color: 'green',
+          position: 'bottom-right', // 核心定位参数
           timeout: 2500, // 推荐与操作节奏匹配的时长
-          actions: [{ icon: "close", color: "white" }], // 添加关闭按钮提升交互
-        });
-        this.getSearchList();
-      });
+          actions: [{ icon: 'close', color: 'white' }] // 添加关闭按钮提升交互
+        })
+        this.getSearchList()
+      })
     },
-    getList(params = {}) {
-      var _this = this;
-      _this.loading = true;
+    getList (params = {}) {
+      var _this = this
+      _this.loading = true
       // 合并基础参数
       const baseParams = {
         page: _this.current,
-        page_size: _this.pagination.rowsPerPage,
-      };
+        page_size: _this.pagination.rowsPerPage
+      }
 
       // 创建URLSearchParams处理参数
       const queryParams = new URLSearchParams({
         ...baseParams,
-        ...params,
-      });
-      console.log(queryParams);
+        ...params
+      })
+      console.log(queryParams)
       // 过滤空值参数
       Array.from(queryParams.entries()).forEach(([key, value]) => {
-        if (value === "" || value === null || value === undefined) {
-          queryParams.delete(key);
+        if (value === '' || value === null || value === undefined) {
+          queryParams.delete(key)
         }
-      });
+      })
 
       getauth(`${_this.pathname}?${queryParams}`)
         .then((res) => {
-          _this.table_list = res.results;
-          _this.total = res.count;
-          _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0;
-          _this.pathname_previous = res.previous;
-          _this.pathname_next = res.next;
+          _this.table_list = res.results
+
+          _this.total = res.count
+          _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0
+          _this.pathname_previous = res.previous
+          _this.pathname_next = res.next
         })
         .catch((err) => {
           _this.$q.notify({
             message: err.detail,
-            icon: "close",
-            color: "negative",
-          });
+            icon: 'close',
+            color: 'negative'
+          })
         })
         .finally(() => {
-          _this.loading = false;
-        });
+          _this.loading = false
+        })
     },
-    changePageEnter() {
+    changePageEnter () {
       if (Number(this.paginationIpt) < 1) {
-        this.current = 1;
-        this.paginationIpt = 1;
+        this.current = 1
+        this.paginationIpt = 1
       } else if (Number(this.paginationIpt) > this.max) {
-        this.current = this.max;
-        this.paginationIpt = this.max;
+        this.current = this.max
+        this.paginationIpt = this.max
       } else {
-        this.current = Number(this.paginationIpt);
+        this.current = Number(this.paginationIpt)
       }
-      this.getSearchList(this.current);
+      this.getSearchList(this.current)
     },
 
     // 带搜索条件加载
-    getSearchList(page = 1) {
-      this.current = page;
-      this.paginationIpt = page;
+    getSearchList (page = 1) {
+      this.current = page
+      this.paginationIpt = page
+
+      // 构建过滤参数
+      const filterParams = {}
+      for (const [key, value] of Object.entries(this.filterModels)) {
+        if (value !== null && value !== '') {
+          filterParams[key] = value
+        }
+      }
       this.getList({
-        goods_desc__icontains: this.filter,
-        create_time__range: this.date_range,
-      });
+        number__icontains: this.filter,
+        document_date__range: this.date_range,
+        ...filterParams, // 添加过滤条件
+        ...this.filterdata // 添加其他过滤条件
+      })
     },
 
-    getListPrevious() {
-      var _this = this;
-      if (LocalStorage.has("auth")) {
+    getListPrevious () {
+      var _this = this
+      if (LocalStorage.has('auth')) {
         getauth(_this.pathname_previous, {})
           .then((res) => {
-            _this.table_list = res.results;
-            _this.pathname_previous = res.previous;
-            _this.pathname_next = res.next;
+            _this.table_list = res.results
+            _this.pathname_previous = res.previous
+            _this.pathname_next = res.next
           })
           .catch((err) => {
             _this.$q.notify({
               message: err.detail,
-              icon: "close",
-              color: "negative",
-            });
-          });
+              icon: 'close',
+              color: 'negative'
+            })
+          })
       } else {
       }
     },
-    getListNext() {
-      var _this = this;
-      if (LocalStorage.has("auth")) {
+    getListNext () {
+      var _this = this
+      if (LocalStorage.has('auth')) {
         getauth(_this.pathname_next, {})
           .then((res) => {
-            _this.table_list = res.results;
+            _this.table_list = res.results
 
-            _this.pathname_previous = res.previous;
-            _this.pathname_next = res.next;
+            _this.pathname_previous = res.previous
+            _this.pathname_next = res.next
           })
           .catch((err) => {
             _this.$q.notify({
               message: err.detail,
-              icon: "close",
-              color: "negative",
-            });
-          });
+              icon: 'close',
+              color: 'negative'
+            })
+          })
       }
     },
-    reFresh() {
-      var _this = this;
-      _this.getSearchList();
+    reFresh () {
+      var _this = this
+      this.filterdata = {}
+      this.filterModels = {
+        bound_department: null
+      }
+      _this.getSearchList()
     },
-
-    deleteData(e) {
-      var _this = this;
-      _this.deleteForm = true;
-      _this.deleteid = e;
+    deleteData (e) {
+      var _this = this
+      _this.deleteForm = true
+      _this.deleteid = e
     },
-    deleteDataSubmit() {
-      var _this = this;
-      deleteauth(_this.pathname + _this.deleteid + "/")
+    deleteDataSubmit () {
+      var _this = this
+      deleteauth(_this.pathname + _this.deleteid + '/')
         .then((res) => {
-          _this.deleteDataCancel();
-          _this.getSearchList();
+          _this.deleteDataCancel()
+          _this.getSearchList()
           _this.$q.notify({
-            message: "Success Edit Data",
-            icon: "check",
-            color: "green",
-          });
+            message: 'Success Edit Data',
+            icon: 'check',
+            color: 'green'
+          })
         })
         .catch((err) => {
           _this.$q.notify({
             message: err.detail,
-            icon: "close",
-            color: "negative",
-          });
-        });
+            icon: 'close',
+            color: 'negative'
+          })
+        })
     },
-    deleteDataCancel() {
-      var _this = this;
-      _this.deleteForm = false;
-      _this.deleteid = 0;
+    deleteDataCancel () {
+      var _this = this
+      _this.deleteForm = false
+      _this.deleteid = 0
     },
 
-    updateProxy() {
-      var _this = this;
-      _this.proxyDate = _this.date;
-    },
+    updateProxy () {
+      var _this = this
+      _this.proxyDate = _this.date
+    }
   },
-  created() {
-    var _this = this;
-    if (LocalStorage.has("openid")) {
-      _this.openid = LocalStorage.getItem("openid");
+  created () {
+    var _this = this
+    if (LocalStorage.has('openid')) {
+      _this.openid = LocalStorage.getItem('openid')
     } else {
-      _this.openid = "";
-      LocalStorage.set("openid", "");
+      _this.openid = ''
+      LocalStorage.set('openid', '')
     }
-    if (LocalStorage.has("login_name")) {
-      _this.login_name = LocalStorage.getItem("login_name");
+    if (LocalStorage.has('login_name')) {
+      _this.login_name = LocalStorage.getItem('login_name')
     } else {
-      _this.login_name = "";
-      LocalStorage.set("login_name", "");
+      _this.login_name = ''
+      LocalStorage.set('login_name', '')
     }
-    if (LocalStorage.has("auth")) {
-      const timeStamp = Date.now();
-      const formattedString = date.formatDate(timeStamp, "YYYY/MM/DD");
-      _this.date = formattedString;
-      console.log(_this.date);
-      _this.authin = "1";
-      _this.getList();
+    if (LocalStorage.has('auth')) {
+      const timeStamp = Date.now()
+      const formattedString = date.formatDate(timeStamp, 'YYYY/MM/DD')
+      _this.date = formattedString
+      console.log(_this.date)
+      _this.authin = '1'
+      _this.getList()
     } else {
-      _this.authin = "0";
+      _this.authin = '0'
     }
   },
-  mounted() {
-    var _this = this;
+  mounted () {
+    var _this = this
     if (_this.$q.platform.is.electron) {
-      _this.height = String(_this.$q.screen.height - 290) + "px";
+      _this.height = String(_this.$q.screen.height - 290) + 'px'
     } else {
-      _this.height = _this.$q.screen.height - 290 + "" + "px";
+      _this.height = _this.$q.screen.height - 290 + '' + 'px'
     }
   },
-  updated() {},
-  destroyed() {},
+  updated () {},
+  destroyed () {},
   // 在 watch 或方法中添加调试代码
   watch: {
-    createDate1(val) {
+    createDate1 (val) {
       if (val) {
         if (val.to) {
-          this.createDate2 = `${val.from} - ${val.to}`;
-          this.date_range = `${val.from},${val.to} `;
+          this.createDate2 = `${val.from} - ${val.to}`
+          this.date_range = `${val.from},${val.to} `
 
           // this.downloadhUrl = this.pathname + 'filelist/?' + 'document_date__range=' + this.date_range
         } else {
-          this.createDate2 = `${val}`;
-          this.dateArray = val.split("/");
+          this.createDate2 = `${val}`
+          this.dateArray = val.split('/')
           this.searchUrl =
             this.pathname +
-            "?" +
-            "document_date__year=" +
+            '?' +
+            'document_date__year=' +
             this.dateArray[0] +
-            "&" +
-            "document_date__month=" +
+            '&' +
+            'document_date__month=' +
             this.dateArray[1] +
-            "&" +
-            "document_date__day=" +
-            this.dateArray[2];
+            '&' +
+            'document_date__day=' +
+            this.dateArray[2]
           // this.downloadhUrl = this.pathname + 'filelist/?' + 'document_date__year=' + this.dateArray[0] + '&' + 'document_date__month=' + this.dateArray[1] + '&' + 'document_date__day=' + this.dateArray[2]
         }
-        this.date_range = this.date_range.replace(/\//g, "-");
+        this.date_range = this.date_range.replace(/\//g, '-')
 
-        this.getSearchList();
-        this.$refs.qDateProxy.hide();
+        this.getSearchList()
+        this.$refs.qDateProxy.hide()
       } else {
-        this.createDate2 = "";
-        this.date_range = "";
-        this.getSearchList();
+        this.createDate2 = ''
+        this.date_range = ''
+        this.getSearchList()
       }
-    },
-  },
-};
+    }
+  }
+}
 </script>
 <style scoped>
 /* 添加在 <style> 中 */