Procházet zdrojové kódy

feat: 新增工单列表筛选功能及优化数据展示

- 在工单列表页面添加了工单类型、受理人、时间范围等筛选条件
- 优化了工单列表的数据展示,包括工单编号、工单类型、工单内容、受理人及受理时间
- 在数据存储模块中添加了工单类型字典的初始化逻辑
- 更新了地图组件中的区域名称展示逻辑,使其动态显示当前区域名称
闪电 %!s(int64=9) %!d(string=před) měsíci
rodič
revize
af9d417acb

+ 5 - 2
.env.development

@@ -1,3 +1,4 @@
1
+
1 2
 # 页面标题
2 3
 VITE_APP_TITLE = 智能客服中心
3 4
 
@@ -6,7 +7,9 @@ VITE_APP_ENV = 'development'
6 7
 
7 8
 # 若依管理系统/开发环境 http://192.168.1.15:8010/  http://123.56.29.119:8080  http://192.168.1.15:8120/ 1.194.161.64:8120
8 9
 
9
-VITE_APP_BASE_API = 'http://1.194.161.64:8120/'    
10
+VITE_APP_BASE_API = 'http://192.168.1.15:8120/'  
11
+
12
+# VITE_APP_BASE_API = 'http://1.194.161.64:8120/'    
10 13
 # VITE_APP_BASE_API = 'http://222.139.29.127:8120/'
11 14
 
12 15
 
@@ -14,7 +17,7 @@ VITE_APP_BASE_API = 'http://1.194.161.64:8120/'
14 17
 # VITE_APP_BASE_WS = 'ws://192.168.1.15:8010/'
15 18
 # VITE_APP_BASE_WS = 'ws://192.168.8.17:9000/ws'
16 19
 # VITE_APP_BASE_WS = 'ws://222.139.29.127:9000/ws'
17
-VITE_APP_BASE_WS = 'ws://192.168.1.19:9000/ws'
20
+# VITE_APP_BASE_WS = 'ws://192.168.1.19:9000/ws'
18 21
 
19 22
 # VITE_APP_PHONE_TYPE = 'SIP'
20 23
 # VITE_APP_CALL_TYPE = 'VIDEO'

+ 1 - 0
package.json

@@ -18,6 +18,7 @@
18 18
     "file-saver": "^2.0.5",
19 19
     "js-cookie": "^3.0.5",
20 20
     "lottie-web": "^5.12.2",
21
+    "moment": "^2.30.1",
21 22
     "pinia": "^3.0.1",
22 23
     "vue": "^3.5.13",
23 24
     "vue-router": "^4.5.0",

+ 12 - 0
src/App.vue

@@ -1,7 +1,19 @@
1
+
1 2
 <template>
2 3
   <RouterView />
3 4
 </template>
4 5
 
6
+<script setup>
7
+import { onMounted } from 'vue'
8
+import { useDataStore } from '@/stores/data'
9
+
10
+onMounted(async () => {
11
+  console.log('App mounted')
12
+  await useDataStore().initDictorys()
13
+})
14
+</script>
15
+
16
+
5 17
 <style lang="scss">
6 18
 * {
7 19
   margin: 0;

+ 15 - 11
src/stores/data.js

@@ -1,17 +1,21 @@
1 1
 // stores/data.js
2 2
 import { defineStore } from 'pinia'
3 3
 import axios from 'axios'
4
+import { getPageListData } from '@/api/index.js'
4 5
 
5 6
 export const useDataStore = defineStore('data', {
6
-  state: () => ({
7
-    trafficData: [],
8
-    populationData: []
9
-  }),
10
-  actions: {
11
-    async fetchRealTimeData() {
12
-    //   const res = await axios.get('/api/dashboard')
13
-    //   this.trafficData = res.data.traffic
14
-    //   this.populationData = res.data.population
15
-    }
16
-  }
7
+    state: () => ({
8
+        trafficData: [],
9
+        populationData: [],
10
+        orderTypes: [],
11
+    }),
12
+    actions: {
13
+        async fetchRealTimeData() {},
14
+        async initDictorys() {
15
+            const dictOrderTypeResult = await getPageListData(
16
+                '/common/work/type/treeselect'
17
+            )
18
+            this.orderTypes = dictOrderTypeResult.data || []
19
+        },
20
+    },
17 21
 })

+ 5 - 2
src/views/childMap/childMap.vue

@@ -15,7 +15,7 @@
15 15
                     <div class="left-title">
16 16
                         <div class="tit_left">
17 17
                             <span style="cursor: pointer;" @click="goToPage('/')">郑州市</span> /
18
-                            <span style="cursor: pointer;" @click="goToPage('/childMap')">荥阳市</span>
18
+                            <span style="cursor: pointer;" @click="goToPage('/childMap')">{{ areaName }}</span>
19 19
                         </div>
20 20
                         <div class="tit_right">2024-03-25</div>
21 21
                     </div>
@@ -81,11 +81,14 @@ import { useDataStore } from '@/stores/data'
81 81
 import { getPageListData } from '@/api/index.js'
82 82
 import VueWordCloud from 'vuewordcloud';
83 83
 import ChildMapChart from '@/views/childMap/cpns/child-map-chart.vue'
84
-import { useRouter } from 'vue-router';
84
+import { useRouter, useRoute } from 'vue-router';
85 85
 
86 86
 
87 87
 
88 88
 const router = useRouter()
89
+const route = useRoute();
90
+const areaName = ref(route.query.area || '');
91
+const areaId = ref(route.query.areaId || '');
89 92
 const dataStore = useDataStore()
90 93
 const currentTime = ref('')
91 94
 

+ 9 - 5
src/views/childMap/cpns/child-map-chart.vue

@@ -12,7 +12,7 @@ import * as echarts from 'echarts';
12 12
 import { ZZmapData } from '@/utils/zhengzhou.js'
13 13
 
14 14
 import { getPageListData } from '@/api/index.js'
15
-import { useRouter } from 'vue-router';
15
+import { useRouter, useRoute } from 'vue-router';
16 16
 
17 17
 const mapRef = ref(null);
18 18
 const callRegionData = ref([])
@@ -20,6 +20,9 @@ const orderCountData = ref([])
20 20
 const orderObj = ref({})
21 21
 let myChart = null
22 22
 const router = useRouter()
23
+const route = useRoute()
24
+const parentAreaName = ref(route.query.area)
25
+const parentAreaId = ref(route.query.areaId)
23 26
 
24 27
 onMounted(async () => {
25 28
   
@@ -138,10 +141,11 @@ function setOptionHandle() {
138 141
       console.log(params.name)
139 142
       router.push({
140 143
           path: '/orderList',
141
-          // query: {
142
-          //     callNumber:telWSData.Number,
143
-          //     callid: telWSData.CallID,
144
-          // }
144
+          query: {
145
+              pName: parentAreaName.value,
146
+              area: params.name,
147
+              areaId: params.value,
148
+          }
145 149
       });
146 150
       // 动态更新选中状态
147 151
       // myChart.setOption({

+ 40 - 28
src/views/dashboard/cpns/map-chart.vue

@@ -8,7 +8,7 @@
8 8
         <div class="cenItemCon">
9 9
           <div>12356话务总量</div>
10 10
           <div>
11
-            <span class="itemSpan1">186</span> <span>个</span> 
11
+            <span class="itemSpan1">{{ traffic.total || 0 }}</span> <span>个</span> 
12 12
           </div>
13 13
         </div>
14 14
       </div>
@@ -19,9 +19,9 @@
19 19
         <div class="cenItemCon">
20 20
           <div>八院话务总量</div>
21 21
           <div>
22
-            <span class="itemSpan1">186</span> <span class="itemSpan2">个</span> 
23
-            <span class="itemSpan3">呼入</span><span class="itemSpan4">186</span> 
24
-            <span class="itemSpan5">呼出</span><span class="itemSpan6">186</span> 
22
+            <span class="itemSpan1">{{ eightTraffic.total || 0 }}</span> <span class="itemSpan2">个</span> 
23
+            <span class="itemSpan3">呼入</span><span class="itemSpan4">{{ eightTraffic.incoming || 0 }}</span> 
24
+            <span class="itemSpan5">呼出</span><span class="itemSpan6">{{ eightTraffic.exhalation || 0 }}</span> 
25 25
           </div>
26 26
         </div>
27 27
       </div>
@@ -32,9 +32,9 @@
32 32
         <div class="cenItemCon">
33 33
           <div>九院话务总量</div>
34 34
           <div>
35
-            <span class="itemSpan1">186</span> <span class="itemSpan2">个</span> 
36
-            <span class="itemSpan3">呼入</span><span class="itemSpan4">186</span> 
37
-            <span class="itemSpan5">呼出</span><span class="itemSpan6">186</span> 
35
+            <span class="itemSpan1">{{ nineTraffic.total || 0 }}</span> <span class="itemSpan2">个</span> 
36
+            <span class="itemSpan3">呼入</span><span class="itemSpan4">{{ nineTraffic.incoming || 0 }}</span> 
37
+            <span class="itemSpan5">呼出</span><span class="itemSpan6">{{ nineTraffic.exhalation || 0 }}</span> 
38 38
           </div>
39 39
         </div>
40 40
       </div>
@@ -57,6 +57,7 @@ import { useRouter } from 'vue-router';
57 57
 const mapRef = ref(null);
58 58
 const callRegionData = ref([])
59 59
 const orderCountData = ref([])
60
+
60 61
 const orderObj = ref({})
61 62
 let myChart = null
62 63
 const router = useRouter()
@@ -66,7 +67,8 @@ onMounted(async () => {
66 67
   myChart = echarts.init(mapRef.value);
67 68
   // 加载区县地图数据,这里假设地图文件名为
68 69
   echarts.registerMap('districtMap', ZZmapData);
69
-  getSelectRegionOrderCount(0)
70
+  // getSelectRegionOrderCount(0)
71
+  getStatics();
70 72
 
71 73
 });
72 74
 
@@ -75,23 +77,32 @@ function dataTypeHandle(e) {
75 77
   callRegionType.value = e
76 78
   getSelectRegionOrderCount(e)
77 79
 }
78
- // 话务统计
79
-function getSelectRegionOrderCount(type) {
80
-  getPageListData('/DataAnalysis/selectRegionOrderCount/'+type ).then((res)=>{
81
-      if (res.state === 'success') {
82
-        callRegionData.value = []
83
-        orderCountData.value = res.data
84
-        res.data.map(item => {
85
-          if (item.name === '荥阳市') {
86
-            orderObj.value = item
87
-          }
88
-          const obj ={}
89
-          obj.value = item.callNumber
90
-          obj.name = item.name
91
-          callRegionData.value.push(obj)
92
-        })
93
-        setOptionHandle()
94
-      }
80
+
81
+const nineTraffic = ref({});
82
+const eightTraffic = ref({});
83
+const traffic = ref({});
84
+const getStatics = () => {
85
+  getPageListData('/DataAnalysis/selectRegionOrder/0').then((res) => {
86
+    if (res.state === 'success') {
87
+      console.log(res.data)
88
+
89
+      nineTraffic.value = res.data?.nineTraffic || {};
90
+      eightTraffic.value = res.data?.eightTraffic || {};
91
+      traffic.value = res.data?.traffic || {};
92
+
93
+      callRegionData.value = []
94
+      orderCountData.value = res.data?.order
95
+      res.data?.order.map(item => {
96
+        if (item.name === '荥阳市') {
97
+          orderObj.value = item
98
+        }
99
+        const obj = {}
100
+        obj.value = item.callNumber
101
+        obj.name = item.name
102
+        callRegionData.value.push(obj)
103
+      })
104
+      setOptionHandle()
105
+    }
95 106
   })
96 107
 }
97 108
 
@@ -178,9 +189,10 @@ function setOptionHandle() {
178 189
       console.log(params.name)
179 190
       router.push({
180 191
           path: '/childMap',
181
-          // query: {
182
-          //     params:params.name,
183
-          // }
192
+          query: {
193
+              area: params.name,
194
+              areaId: params.value,
195
+          }
184 196
       });
185 197
 
186 198
   });

+ 9 - 9
src/views/dashboard/cpns/pie-top-echart.vue

@@ -9,8 +9,8 @@ import { defineProps, computed } from 'vue'
9 9
 import BaseChart from '@/base-ui/echart/BaseChart.vue'
10 10
 const props = defineProps({
11 11
 	satisfactionPieData: {
12
-		type: Array,
13
-		default: [],
12
+		type: Object,
13
+		default: {},
14 14
 	}
15 15
 });
16 16
 
@@ -34,7 +34,7 @@ const options = computed(() => {
34 34
 		radiusAxis: {
35 35
 			type: 'category',
36 36
 			show: false, // 隐藏半径轴
37
-			data: ['a', 'b', 'c']
37
+			data: ['非常满意', '基本满意', '不满意']
38 38
 		},
39 39
 		tooltip: {},
40 40
 		series: [{
@@ -44,22 +44,22 @@ const options = computed(() => {
44 44
 			data: [
45 45
 
46 46
 				{
47
-					value: 5,
48
-					name: 'c',
47
+					value: props.satisfactionPieData.dissatisfied || 0,
48
+					name: '不满意',
49 49
 					itemStyle: {
50 50
 						color: colors[2]
51 51
 					}
52 52
 				},
53 53
 				{
54
-					value: 10,
55
-					name: 'b',
54
+					value: props.satisfactionPieData.basically || 0,
55
+					name: '基本满意',
56 56
 					itemStyle: {
57 57
 						color: colors[1]
58 58
 					}
59 59
 				},
60 60
 				{
61
-					value: 85,
62
-					name: 'a',
61
+					value: props.satisfactionPieData.satisfied || 0,
62
+					name: '非常满意',
63 63
 					itemStyle: {
64 64
 						color: colors[0]
65 65
 					}

+ 27 - 27
src/views/dashboard/dashboard.vue

@@ -56,28 +56,28 @@
56 56
                                     <div class="satis_dot" style="background: #64C4FF;"></div>
57 57
                                     <div class="satis_item_text">
58 58
                                         <span style="width: 50px;">非常满意</span>
59
-                                        <span>12</span>
60
-                                        <span>0.70%</span>
59
+                                        <span>{{ satisfactionData.satisfied }}</span>
60
+                                        <span>{{ satisfactionData.satisfiedRate }}</span>
61 61
                                     </div>
62 62
                                 </div>
63 63
                                 <div class="satis_text_item">
64 64
                                     <div class="satis_dot" style="background: #7AECEA;"></div>
65 65
                                     <div class="satis_item_text">
66 66
                                         <span style="width: 50px;">基本满意</span>
67
-                                        <span>12</span>
68
-                                        <span>0.70%</span>
67
+                                        <span>{{ satisfactionData.basically }}</span>
68
+                                        <span>{{ satisfactionData.basicallyRate }}</span>
69 69
                                     </div>
70 70
                                 </div>
71 71
                                 <div class="satis_text_item">
72 72
                                     <div class="satis_dot" style="background: #FF935D;"></div>
73 73
                                     <div class="satis_item_text">
74 74
                                         <span style="width: 50px;">不满意</span>
75
-                                        <span>12</span>
76
-                                        <span>0.70%</span>
75
+                                        <span>{{ satisfactionData.dissatisfied }}</span>
76
+                                        <span>{{ satisfactionData.dissatisfiedRate }}</span>
77 77
                                     </div>
78 78
                                 </div>
79 79
                             </div>
80
-                            <PieTopEchart :satisfactionPieData="satisfactionPieData"></PieTopEchart>
80
+                            <PieTopEchart :satisfactionPieData="satisfactionData"></PieTopEchart>
81 81
                         </div>
82 82
                     </div>
83 83
                 </el-col>
@@ -262,30 +262,30 @@
262 262
     }
263 263
     // 满意度统计
264 264
     const satisfactionData =ref({})
265
-    const satisfactionPieData =ref([])
265
+    // const satisfactionPieData =ref([])
266 266
     function getSelectSatisfaction() {
267 267
         getPageListData('/DataAnalysis/selectSatisfaction' ).then((res)=>{
268 268
             if (res.state === 'success') {
269 269
                 satisfactionData.value = res.data
270
-                satisfactionPieData.value = []
271
-                for (const key in res.data) {
272
-                    const obj ={}
273
-                    if (key === 'satisfied') {
274
-                        obj.value = res.data[key]
275
-                        obj.name = '非常满意'
276
-                        satisfactionPieData.value.push(obj)
277
-                    }
278
-                    if (key === 'basically') {
279
-                        obj.value = res.data[key]
280
-                        obj.name = '基本满意'
281
-                        satisfactionPieData.value.push(obj)
282
-                    }
283
-                    if (key === 'dissatisfied') {
284
-                        obj.value = res.data[key]
285
-                        obj.name = '不满意'
286
-                        satisfactionPieData.value.push(obj)
287
-                    }
288
-                }
270
+                // satisfactionPieData.value = []
271
+                // for (const key in res.data) {
272
+                //     const obj ={}
273
+                //     if (key === 'satisfied') {
274
+                //         obj.value = res.data[key]
275
+                //         obj.name = '非常满意'
276
+                //         satisfactionPieData.value.push(obj)
277
+                //     }
278
+                //     if (key === 'basically') {
279
+                //         obj.value = res.data[key]
280
+                //         obj.name = '基本满意'
281
+                //         satisfactionPieData.value.push(obj)
282
+                //     }
283
+                //     if (key === 'dissatisfied') {
284
+                //         obj.value = res.data[key]
285
+                //         obj.name = '不满意'
286
+                //         satisfactionPieData.value.push(obj)
287
+                //     }
288
+                // }
289 289
                 // res.data.map(item => {
290 290
                 //     const obj ={}
291 291
                 //     obj.value = item.number

+ 85 - 30
src/views/orderList/orderList.vue

@@ -16,41 +16,46 @@
16 16
             <div class="child-warp">
17 17
                 <div class="center_item2_tit">
18 18
                     <span class="btn_tit" @click="goToPage('/')">郑州市</span> /
19
-                    <span class="btn_tit" @click="goToPage('/childMap')">荥阳市</span>/
20
-                    <span class="btn_tit" @click="goToPage('/orderList')">广武镇 区域工单</span>
19
+                    <span class="btn_tit" @click="goToPage('/childMap')">{{ parentName }}</span>/
20
+                    <span class="btn_tit" @click="goToPage('/orderList')">{{ areaName }} 区域工单</span>
21 21
                 </div>
22
-                <div  class="center_item2_search">
23
-                    <el-input class="search_item" v-model="queryParams.workordercode" placeholder="请输入编号" clearable/>
24
-                    <el-input class="search_item" v-model="queryParams.workordercode" placeholder="请输入编号" clearable/>
25
-                    <el-input class="search_item" v-model="queryParams.workordercode" placeholder="请输入编号" clearable/>
26
-                    <el-input class="search_item" v-model="queryParams.workordercode" placeholder="请输入编号" clearable/>
22
+                <div class="center_item2_search">
23
+                    <el-input class="search_item" v-model="queryParams.workordercode" placeholder="请输入编号" clearable @blur="getWorkorder"/>
24
+                    <el-input class="search_item" v-model="queryParams.createusername" placeholder="请输入受理人姓名"
25
+                        clearable @blur="getWorkorder"/>
26
+                    <el-cascader class="search_item" v-model="queryParams.workordercate" :options="orderTypes"
27
+                        placeholder="请选择工单类型" :props="{
28
+                value: 'id',
29
+                children: 'children',
30
+            }" @change="getWorkorder" clearable />
31
+
32
+                    <el-date-picker class="search_item" v-model="searchTimes" type="datetimerange" range-separator="至"
33
+                        start-placeholder="开始时间" end-placeholder="结束时间" clearable @change="timeChange"/>
27 34
                 </div>
28 35
                 <div class="item2_con">
29
-                    <div class="item2_con_tit">
30
-                        <div style="width: 50%;">工单类别</div>
31
-                        <div style="width: 25%;">数量</div>
32
-                        <div style="width: 25%;">百分比</div>
36
+                    <div class="item2_con_tit" style="width: 100%;">
37
+                        <div style="width: 150px;">工单编号</div>
38
+                        <div style="width: 150px;">工单类型</div>
39
+                        <div style="width: calc(100vw - 700px);">工单内容</div>
40
+                        <div style="width: 100px;">受理人</div>
41
+                        <div style="width: 150px;">受理时间</div>
33 42
                     </div>
34
-                    <div class="scroll-container item2_con_con" ref="scrollContainerRef"
35
-                        @mouseenter="pauseScroll" @mouseleave="resumeScroll">
43
+                    <div class="scroll-container item2_con_con" ref="scrollContainerRef" @mouseenter="pauseScroll"
44
+                        @mouseleave="resumeScroll">
36 45
                         <div class="con_list" v-for="item in WorkordeData" :key="item.id">
37
-                            <div style="width: 50%; color: #50AEF8;">{{ item.workordercode }}</div>
38
-                            <div style="width: 25%;">{{ item.dealusername }}</div>
39
-                            <div style="width: 25%;">{{ item.workorderstatename }}</div>
46
+                            <div style="width: 150px; color: #50AEF8;">{{ item.workordercode }}</div>
47
+                            <div style="width: 150px;">{{ item.workordercatename }}</div>
48
+                            <div style="width: calc(100vw - 700px);">{{ item.content }}</div>
49
+                            <div style="width: 100px;">{{ item.createusername }}</div>
50
+                            <div style="width: 150px;">{{ item.createtime }}</div>
40 51
                         </div>
41 52
                     </div>
42 53
                 </div>
43
-                <el-pagination
44
-                    :background="false"
45
-                    class="pageEle"
46
-                    v-show="total > 0"
47
-                    :total="total"
48
-                    v-model:current-page="queryParams.pageNum"
49
-                    v-model:page-size="queryParams.pageSize"
50
-                    @pagination="getWorkorder"
51
-                />
54
+                <el-pagination :background="false" class="pageEle" v-show="total > 0" :total="total"
55
+                    v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
56
+                    @pagination="getWorkorder" />
52 57
             </div>
53
-            
58
+
54 59
         </div>
55 60
     </div>
56 61
 </template>
@@ -59,12 +64,18 @@
59 64
 import { ref, onMounted } from 'vue'
60 65
 import { useDataStore } from '@/stores/data'
61 66
 import { getPageListData } from '@/api/index.js'
62
-import { useRouter } from 'vue-router';
67
+import { useRouter, useRoute } from 'vue-router';
68
+import moment from 'moment'
63 69
 
64 70
 const router = useRouter()
65
-const dataStore = useDataStore()
71
+// const dataStore = useDataStore()
66 72
 const currentTime = ref('')
67 73
 
74
+const route = useRoute()
75
+const parentName = ref(route.query.pName || '')
76
+const areaName = ref(route.query.area || '')
77
+const areaId = ref(route.query.areaId || '')
78
+
68 79
 
69 80
 // 实时时钟
70 81
 let timer = null
@@ -72,17 +83,26 @@ const updateTime = () => {
72 83
     currentTime.value = new Date().toLocaleString()
73 84
 }
74 85
 
86
+const orderTypes = ref([])
87
+
75 88
 // 初始化数据
76 89
 onMounted(() => {
77 90
     init()
78 91
     timer = setInterval(updateTime, 1000)
79
-    dataStore.fetchRealTimeData()
92
+    // dataStore.initDictorys()
93
+
94
+    orderTypes.value = useDataStore().orderTypes
95
+    console.log(orderTypes.value, 'orderTypes')
80 96
 })
81 97
 function init() {
82 98
     getWorkorder()
83 99
 }
84 100
 // 工单列表
85 101
 const queryParams = ref({
102
+    starttime: '',
103
+    endtime: '',
104
+    workordercate: '',
105
+    createusername: '',
86 106
     workordercode:'',
87 107
     pageNum: 1,
88 108
     pageSize: 10,
@@ -91,14 +111,35 @@ const total = ref(0)
91 111
 const WorkordeData = ref({})
92 112
 function getWorkorder() {
93 113
     const params = {
114
+        area: 24574,//areaId.value,
94 115
         pageNum: queryParams.value.pageNum,
95 116
         pageSize: queryParams.value.pageSize,
96 117
         listType: 0
97 118
     }
119
+
120
+    if (queryParams.value.workordercode) {
121
+        params.workordercode = queryParams.value.workordercode
122
+    }
123
+
124
+    if (queryParams.value.createusername) {
125
+        params.createusername = queryParams.value.createusername
126
+    }
127
+
128
+    if (queryParams.value.workordercate) {
129
+        params.workordercate = queryParams.value.workordercate[queryParams.value.workordercate.length - 1]
130
+    }
131
+
132
+    if (queryParams.value.createtime) {
133
+        params.createtime = queryParams.value.createtime
134
+    }
135
+    if (queryParams.value.endtime) {
136
+        params.endtime = queryParams.value.endtime
137
+    }
138
+
98 139
     getPageListData('/order/workorder', params).then((res) => {
99 140
         if (res.state === 'success') {
100 141
             WorkordeData.value = res.data
101
-            total.value = 99
142
+            total.value = res.total
102 143
         }
103 144
     })
104 145
 }
@@ -111,12 +152,26 @@ function goToPage(params) {
111 152
         // }
112 153
     });
113 154
 }
155
+const searchTimes = ref([])
156
+const timeChange = (val) => {
157
+    console.log(val, 'val')
158
+    if (val?.length === 2) {
159
+        queryParams.value.createtime = moment(val[0]).format('YYYY-MM-DD HH:mm:ss')
160
+        queryParams.value.endtime = moment(val[1]).format('YYYY-MM-DD HH:mm:ss')
161
+    } else {
162
+        queryParams.value.createtime = ''
163
+        queryParams.value.endtime = ''
164
+    }
165
+
166
+    getWorkorder();
167
+}
114 168
 </script>
115 169
 
116 170
 <style lang="scss" scoped>
117 171
 /* 使用 :deep() 穿透作用域样式 */
118 172
 :deep() {
119 173
   /* 输入框通用样式 */
174
+  .el-cascader,
120 175
   .el-input,
121 176
   .el-select,
122 177
   .el-date-editor {

File diff suppressed because it is too large
+ 1130 - 0
yarn.lock