From f133d55b080a1d6c4738b330f899f85582336d38 Mon Sep 17 00:00:00 2001
From: rjg <746338628@qq.com>
Date: Sat, 12 Apr 2025 16:40:28 +0800
Subject: [PATCH] 查询优化

---
 src/views/tickets/orderLog.vue |  170 +++++++++++++++++++++++++++++---------------------------
 src/api/tickets/orderLog.js    |    4 
 2 files changed, 89 insertions(+), 85 deletions(-)

diff --git a/src/api/tickets/orderLog.js b/src/api/tickets/orderLog.js
index 1cf0db0..9ccc471 100644
--- a/src/api/tickets/orderLog.js
+++ b/src/api/tickets/orderLog.js
@@ -1,8 +1,8 @@
 import request from '@/axios';
 
-export const getList = (data) => {
+export const getList = (data,current,size) => {
   return request({
-    url: '/drone-device-core/wayline/orderLog/pageList',
+    url: '/drone-device-core/wayline/orderLog/pageList?current='+current+"&size="+size,
     method: 'post',
     data,
   });
diff --git a/src/views/tickets/orderLog.vue b/src/views/tickets/orderLog.vue
index 150d822..480cb6d 100644
--- a/src/views/tickets/orderLog.vue
+++ b/src/views/tickets/orderLog.vue
@@ -19,40 +19,42 @@
             />
 
             <el-select
-              v-model="filters.create_dept"
               placeholder="请选择所属单位"
+              v-model="filters.create_dept"
+              @change="handleDepartmentChange"
               class="filter-item"
               clearable
             >
               <el-option
-                v-for="item in departments"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
+                v-for="dept in departments"
+                :key="dept.value"
+                :label="dept.label"
+                :value="dept.value"
               />
             </el-select>
 
             <el-date-picker
               v-model="filters.dateRange"
-              type="daterange"
+              type="datetimerange"
               range-separator="至"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
               class="filter-item"
-              style="width: 80px"
-              value-format="yyyy-MM-dd"
+              style="width: 100px"
             />
-
-            
-              <el-select v-model="form.file_id" placeholder="请选择关联航线"  class="filter-item"    clearable >
-                <el-option
-                  v-for="item in wayLineList"
-                  :key="item.wayline_id"
-                  :label="item.name"
-                  :value="item.wayline_id"
-                />
-          </el-select>
-       
+            <el-select
+              v-model="filters.file_id"
+              placeholder="请选择关联航线"
+              class="filter-item"
+              clearable
+            >
+              <el-option
+                v-for="item in wayLineList"
+                :key="item.wayline_id"
+                :label="item.name"
+                :value="item.wayline_id"
+              />
+            </el-select>
 
             <el-select
               v-model="filters.ai_types"
@@ -103,15 +105,14 @@
           <avue-crud
             :data="tableData"
             :option="option"
-            :page.sync="pagination"
             v-model:page="page"
             ref="crud"
             :table-loading="loading"
-            @current-change="handlePaginationChange"
-            @size-change="handlePaginationChange"
+            @current-change="currentChange"
             @refresh-change="refreshChange"
             @on-load="onLoad"
             @search-change="searchChange"
+            @size-change="sizeChange"
           >
             <template #menu-left>
               <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新建工单</el-button>
@@ -270,44 +271,34 @@
       @close="resetForm"
     >
       <el-form :model="form" ref="form" label-width="100px">
- 
-
- <div class="custom-steps-container">
-  <!-- 标题行 -->
-  <div class="steps-titles"  >
-     
-  <div  v-for="(record, index) in form.record_list" :class="{ 'active': record.user_id >=0  }" :key="index" class="step-title" >{{record.status_str}}</div>
-  
-
-       
-
-  </div>
-  
-  <!-- Element Steps 组件 -->
-  <el-steps :active="form.active" align-center class="custom-steps" >
-
-   <el-step v-for="(record, index) in form.record_list"  :key="index">
-      <template #description>
-        <div class="step-description">
-          {{record.user_name}}
+        <div class="custom-steps-container">
+          <!-- 标题行 -->
+          <div class="steps-titles">
+            <div
+              v-for="(record, index) in form.record_list"
+              :class="{ active: record.user_id >= 0 }"
+              :key="index"
+              class="step-title"
+            >
+              {{ record.status_str }}
+            </div>
           </div>
-             <div class="step-description">
-          {{record.create_time_str}}
-          </div>
-          
-      </template>
-    </el-step>
-    
-  
 
+          <!-- Element Steps 组件 -->
+          <el-steps :active="form.active" align-center class="custom-steps">
+            <el-step v-for="(record, index) in form.record_list" :key="index">
+              <template #description>
+                <div class="step-description">
+                  {{ record.user_name }}
+                </div>
+                <div class="step-description">
+                  {{ record.create_time_str }}
+                </div>
+              </template>
+            </el-step>
+          </el-steps>
+        </div>
 
-
-
-  </el-steps>
-</div>
-
-
- 
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工单名称" prop="name">
@@ -405,7 +396,7 @@
 
           <el-col :span="3">
             <el-time-picker
-               style="width: 100px"
+              style="width: 100px"
               v-model="form.deal_time"
               prop="deal_time"
               value-format="HH:mm"
@@ -430,6 +421,7 @@
   orderLogPass,
   orderLogExport,
 } from '@/api/tickets/orderLog';
+import { getTicketInfo } from '@/api/tickets/ticket';
 import { getDictionary } from '@/api/system/dictbiz';
 import { getWaylineFileListByArea } from '@/api/resource/wayline';
 import { export_json_to_excel } from '@/utils/exportExcel';
@@ -460,7 +452,7 @@
         file_id: '',
         ai_types: [],
         status: '',
-        dateRange: null,
+        dateRange: [],
       },
       departments: [],
       types: [],
@@ -515,11 +507,7 @@
           { label: '工单状态', prop: 'status', width: 60 },
         ],
       },
-      pagination: {
-        currentPage: 1,
-        pageSize: 10,
-        total: 0,
-      },
+
       page: {
         pageSize: 10,
         currentPage: 1,
@@ -551,6 +539,12 @@
     this.types = word_order_typeResponse.data.data;
     //获取航线
     this.asyncgetWaylineFileListByArea();
+       const response2 = await getTicketInfo();
+      const { dept_data, event_type, ai_type } = response2.data.data;
+      this.departments = dept_data.map(item => ({
+        label: item.dept_name,
+        value: item.id,
+      }));
   },
   mounted() {
     this.fetchTableData();
@@ -568,13 +562,20 @@
       this.onLoad(this.page, params);
       done();
     },
-    onLoad(page, params = {}) {
+    async onLoad(page, params = {}) {
       this.loading = true;
-      getList(null, Object.assign(params, this.query)).then(res => {
+      getList(
+        null,
+        this.page.currentPage,
+        this.page.pageSize,
+        Object.assign(params, this.query)
+      ).then(res => {
         this.tableData = res.data.data;
         this.loading = false;
         this.selectionClear();
       });
+
+   
     },
     selectionClear() {
       this.selectionList = [];
@@ -599,7 +600,7 @@
       try {
         let params = this.getQueryParam();
         console.log('发送的参数:', params);
-        const response = await getList(params);
+        const response = await getList(params, this.page.currentPage, this.page.pageSize);
         if (!response?.data?.data?.records) {
           throw new Error('接口返回数据格式不正确');
         }
@@ -613,13 +614,13 @@
           this.updateGlobalCounts(records, total);
         }
 
-        this.pagination.total = total || 0;
+        this.page.total = total || 0;
         this.updateTabCounts();
       } catch (error) {
         console.error('获取数据失败:', error);
         this.$message.error(error.message || '获取数据失败');
         this.tableData = [];
-        this.pagination.total = 0;
+        this.page.total = 0;
       } finally {
         this.loading = false;
       }
@@ -627,6 +628,12 @@
 
     getQueryParam() {
       const currentTab = this.tabs.find(tab => tab.name === this.activeTab);
+      if (this.filters.dateRange) {
+        console.log(
+          'this.formatDate(this.filters.dateRange[0])',
+          this.formatDate(this.filters.dateRange[0])
+        );
+      }
 
       const params = {
         key_word: this.filters.key_word || undefined,
@@ -644,12 +651,14 @@
         end_date: this.filters.dateRange?.[1]
           ? this.formatDate(this.filters.dateRange[1]).replace('00:00:00', '23:59:59')
           : undefined,
-        current: this.pagination.currentPage,
-        size: this.pagination.pageSize,
+        current: this.page.currentPage,
+        size: this.page.pageSize,
       };
       return params;
     },
-
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
     async submitForm(status) {
       this.$refs.form.validate(async valid => {
         if (valid) {
@@ -724,12 +733,12 @@
     handleTabChange(tab) {
       this.activeTab = tab.props?.name || tab.name;
       this.filters.status = '';
-      this.pagination.currentPage = 1;
+      this.page.currentPage = 1;
       this.fetchTableData();
     },
 
     handleSearch() {
-      this.pagination.currentPage = 1;
+      this.page.currentPage = 1;
       this.fetchTableData();
     },
 
@@ -741,14 +750,12 @@
         dateRange: [],
         status: '',
       };
-      this.pagination.currentPage = 1;
+      this.page.currentPage = 1;
       this.fetchTableData();
     },
 
-    handlePaginationChange(val) {
-      this.pagination.currentPage = val.currentPage;
-      this.pagination.pageSize = val.pageSize;
-      this.fetchTableData();
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
     },
 
     updateGlobalCounts(records, total) {
@@ -990,8 +997,6 @@
   margin-top: 7px;
 }
 
-
-
 .custom-steps-container {
   width: 100%;
   margin: 20px 0;
@@ -1014,7 +1019,7 @@
 }
 
 .step-title.active {
-  color: #409EFF;
+  color: #409eff;
   font-weight: bold;
 }
 
@@ -1036,5 +1041,4 @@
   color: #666;
   line-height: 1.5;
 }
-
 </style>
\ No newline at end of file

--
Gitblit v1.9.3