miaofuhao 2 nedēļas atpakaļ
vecāks
revīzija
4d564e6dfd

+ 10 - 4
apps/web-ele/src/api/aiAnalysis/aiAnalysis.ts

28
  * 查询检测统计
28
  * 查询检测统计
29
  * @returns 检测统计结果
29
  * @returns 检测统计结果
30
  */
30
  */
31
-export function getDetectStatistics() {
32
-  return requestClient.get<BaseResult<DetectStatisticsModel>>(Api.detectStatistics);
31
+export function getDetectStatistics(params: any) {
32
+  return requestClient.get<BaseResult<DetectStatisticsModel>>(Api.detectStatistics, {
33
+    params,
34
+  });
33
 }
35
 }
34
 
36
 
35
 /**
37
 /**
36
  * 查询每个分类的预警未处理数量
38
  * 查询每个分类的预警未处理数量
37
  * @returns 预警分类统计结果
39
  * @returns 预警分类统计结果
38
  */
40
  */
39
-export function getWarningStatistics() {
40
-  return requestClient.get<BaseResult<WarningStatisticsModel[]>>(Api.warningStatistics);
41
+export function getWarningStatistics(params: any) {
42
+  return requestClient.get<BaseResult<WarningStatisticsModel[]>>(Api.warningStatistics, {
43
+    params,
44
+  });
41
 }
45
 }
42
 
46
 
47
+
48
+
43
 /**
49
 /**
44
  * 查询预警记录列表
50
  * 查询预警记录列表
45
  * @param params 查询参数
51
  * @param params 查询参数

+ 5 - 5
apps/web-ele/src/api/workflow/task/index.ts

42
  * @param data
42
  * @param data
43
  */
43
  */
44
 export function completeTask(data: CompleteTaskReqData) {
44
 export function completeTask(data: CompleteTaskReqData) {
45
-  return requestClient.postWithMsg<void>('/workflow/task/completeTask', data);
45
+  return requestClient.post<void>('/workflow/task/completeTask', data);
46
 }
46
 }
47
 
47
 
48
 /**
48
 /**
113
  * 终止任务
113
  * 终止任务
114
  */
114
  */
115
 export function terminationTask(data: { comment?: string; taskId: string }) {
115
 export function terminationTask(data: { comment?: string; taskId: string }) {
116
-  return requestClient.postWithMsg<void>(
116
+  return requestClient.post<void>(
117
     '/workflow/task/terminationTask',
117
     '/workflow/task/terminationTask',
118
     data,
118
     data,
119
   );
119
   );
128
   taskOperationData: TaskOperationData,
128
   taskOperationData: TaskOperationData,
129
   taskOperation: TaskOperationType,
129
   taskOperation: TaskOperationType,
130
 ) {
130
 ) {
131
-  return requestClient.postWithMsg<void>(
131
+  return requestClient.post<void>(
132
     `/workflow/task/taskOperation/${taskOperation}`,
132
     `/workflow/task/taskOperation/${taskOperation}`,
133
     taskOperationData,
133
     taskOperationData,
134
   );
134
   );
140
  * @param userId 办理人id
140
  * @param userId 办理人id
141
  */
141
  */
142
 export function updateAssignee(taskIdList: IDS, userId: ID) {
142
 export function updateAssignee(taskIdList: IDS, userId: ID) {
143
-  return requestClient.putWithMsg<void>(
143
+  return requestClient.put<void>(
144
     `/workflow/task/updateAssignee/${userId}`,
144
     `/workflow/task/updateAssignee/${userId}`,
145
     taskIdList,
145
     taskIdList,
146
   );
146
   );
151
  * @param data 参数
151
  * @param data 参数
152
  */
152
  */
153
 export function backProcess(data: any) {
153
 export function backProcess(data: any) {
154
-  return requestClient.postWithMsg<void>('/workflow/task/backProcess', data);
154
+  return requestClient.post<void>('/workflow/task/backProcess', data);
155
 }
155
 }
156
 
156
 
157
 /**
157
 /**

+ 13 - 12
apps/web-ele/src/views/Archive/figuresManage/addInventory/addInventory-data.tsx

37
     minWidth: 120,
37
     minWidth: 120,
38
   },
38
   },
39
   {
39
   {
40
-    field: 'position',
40
+    field: 'executePositionName',
41
     title: '岗位',
41
     title: '岗位',
42
     minWidth: 120,
42
     minWidth: 120,
43
   },
43
   },
46
     title: '评论',
46
     title: '评论',
47
     minWidth: 100,
47
     minWidth: 100,
48
     align: 'center',
48
     align: 'center',
49
-    formatter: (cellValue: number) => {
50
-      return cellValue === 1 ? '已评' : '未评';
49
+    formatter: (data: any) => {
50
+      return data.cellValue === 1 ? '已评' : '未评';
51
     },
51
     },
52
   },
52
   },
53
   {
53
   {
54
-    field: 'deadline',
54
+    field: 'endTime',
55
     title: '截止时间',
55
     title: '截止时间',
56
     minWidth: 180,
56
     minWidth: 180,
57
   },
57
   },
58
   {
58
   {
59
-    field: 'processTime',
59
+    field: 'completeTime',
60
     title: '处理时间',
60
     title: '处理时间',
61
     minWidth: 180,
61
     minWidth: 180,
62
   },
62
   },
63
   {
63
   {
64
-    field: 'completionStatus',
64
+    field: 'isOverdue',
65
     title: '完成状态',
65
     title: '完成状态',
66
     minWidth: 120,
66
     minWidth: 120,
67
     align: 'center',
67
     align: 'center',
68
-    formatter: (cellValue: any) => {
68
+    formatter: (data: any) => {
69
       // if (cellValue.status ===)
69
       // if (cellValue.status ===)
70
-      return cellValue === 2 ? '按时完成' : '逾期完成';
70
+      console.log(data.cellValue);
71
+      return data.cellValue === 0 ? '按时完成' : '逾期完成';
71
     },
72
     },
72
   },
73
   },
73
   {
74
   {
75
     title: '创建',
76
     title: '创建',
76
     minWidth: 100,
77
     minWidth: 100,
77
     align: 'center',
78
     align: 'center',
78
-    formatter: (cellValue: number) => {
79
-      return cellValue === 0 ? '系统' : '新增';
79
+    formatter: (data: any) => {
80
+      return data.cellValue === 0 ? '系统' : '新增';
80
     },
81
     },
81
   },
82
   },
82
 ];
83
 ];
107
     component: 'Select',
108
     component: 'Select',
108
     componentProps: {
109
     componentProps: {
109
       options: [
110
       options: [
110
-        { label: '按时完成', value: 2 },
111
+        { label: '按时完成', value: 0 },
111
         { label: '逾期完成', value: 1 },
112
         { label: '逾期完成', value: 1 },
112
       ],
113
       ],
113
     },
114
     },
114
-    fieldName: 'completionStatus',
115
+    fieldName: 'isOverdue',
115
     label: '状态',
116
     label: '状态',
116
   },
117
   },
117
   {
118
   {

+ 11 - 2
apps/web-ele/src/views/aiAnalysis/home/index.vue

119
 import { getDetectStatistics, getWarningStatistics, getSecurityAlertList } from '#/api/aiAnalysis/aiAnalysis';
119
 import { getDetectStatistics, getWarningStatistics, getSecurityAlertList } from '#/api/aiAnalysis/aiAnalysis';
120
 import { selectAllSysStation } from '#/api/system/infoEntry/stationInfo/stationInfo';
120
 import { selectAllSysStation } from '#/api/system/infoEntry/stationInfo/stationInfo';
121
 import type { DetectStatisticsModel, WarningStatisticsModel, SecurityAlertModel } from '#/api/aiAnalysis/model';
121
 import type { DetectStatisticsModel, WarningStatisticsModel, SecurityAlertModel } from '#/api/aiAnalysis/model';
122
+import { useUserStore } from '@vben/stores';
122
 import aiMonitorIcon from '#/assets/icon/ai-monitor.png';
123
 import aiMonitorIcon from '#/assets/icon/ai-monitor.png';
123
 import cameraIcon from '#/assets/icon/camera.png';
124
 import cameraIcon from '#/assets/icon/camera.png';
124
 import monitorTypeIcon from '#/assets/icon/monitor-type.png';
125
 import monitorTypeIcon from '#/assets/icon/monitor-type.png';
126
 import angleRightIcon from '#/assets/icon/angle-right-circle.png';
127
 import angleRightIcon from '#/assets/icon/angle-right-circle.png';
127
 // 路由
128
 // 路由
128
 const router = useRouter();
129
 const router = useRouter();
130
+// 用户store
131
+const userStore = useUserStore();
129
 
132
 
130
 // 搜索表单
133
 // 搜索表单
131
 const searchForm = ref({
134
 const searchForm = ref({
210
 const fetchData = async () => {
213
 const fetchData = async () => {
211
   try {
214
   try {
212
     // 获取检测统计数据
215
     // 获取检测统计数据
213
-    const detectRes = await getDetectStatistics();
216
+    const detectRes = await getDetectStatistics({
217
+      stationId: searchForm.value.stationId,
218
+    });
214
     console.log('detectRes', detectRes);
219
     console.log('detectRes', detectRes);
215
     if (detectRes) {
220
     if (detectRes) {
216
       detectStatistics.value = detectRes || {};
221
       detectStatistics.value = detectRes || {};
217
     }
222
     }
218
 
223
 
219
     // 获取预警分类统计数据
224
     // 获取预警分类统计数据
220
-    const warningRes = await getWarningStatistics();
225
+    const warningRes = await getWarningStatistics({
226
+      stationId: searchForm.value.stationId,
227
+    });
221
     console.log('warningRes', warningRes);
228
     console.log('warningRes', warningRes);
222
     if (warningRes) {
229
     if (warningRes) {
223
       warningStatistics.value = warningRes || [];
230
       warningStatistics.value = warningRes || [];
249
 onMounted(async () => {
256
 onMounted(async () => {
250
   // 获取场站列表
257
   // 获取场站列表
251
   await fetchStationList();
258
   await fetchStationList();
259
+  // 设置默认场站,参考 creatOrder.vue 的实现
260
+  searchForm.value.stationId = userStore.userInfo?.stations[0]?.id || '';
252
   await fetchData();
261
   await fetchData();
253
 });
262
 });
254
 </script>
263
 </script>

+ 2 - 0
apps/web-ele/src/views/system/post/index.vue

153
             plain
153
             plain
154
             @click="handleEdit(row)"
154
             @click="handleEdit(row)"
155
             v-access:code="['system:post:edit']"
155
             v-access:code="['system:post:edit']"
156
+            v-show="row.source === 1"
156
           >
157
           >
157
             编辑
158
             编辑
158
           </ElButton>
159
           </ElButton>
166
                 type="danger"
167
                 type="danger"
167
                 plain
168
                 plain
168
                 v-access:code="['system:post:remove']"
169
                 v-access:code="['system:post:remove']"
170
+                v-show="row.source === 1"
169
               >
171
               >
170
                 删除
172
                 删除
171
               </ElButton>
173
               </ElButton>

+ 49 - 21
apps/web-ele/src/views/workflow/components/actions/flow-actions.vue

241
   handleFormData.processContent = '';
241
   handleFormData.processContent = '';
242
   handleFormData.taskId = props.task!.taskId;
242
   handleFormData.taskId = props.task!.taskId;
243
   handleFileList.value = [];
243
   handleFileList.value = [];
244
+  
245
+  // 设置操作类型为处理
246
+  actionType.value = 'handle';
244
 
247
 
245
   // 打开抽屉
248
   // 打开抽屉
246
   handleDrawerVisible.value = true;
249
   handleDrawerVisible.value = true;
379
   }
382
   }
380
 }
383
 }
381
 
384
 
385
+// 操作类型:handle 处理,return 退回
386
+const actionType = ref('handle');
387
+
382
 // 退回
388
 // 退回
383
-async function handleBack() {
389
+function handleBack() {
390
+  // 重置表单数据
391
+  handleFormData.attachments = '';
392
+  handleFormData.processContent = '';
393
+  handleFormData.taskId = props.task!.taskId;
394
+  handleFileList.value = [];
395
+  
396
+  // 设置操作类型为退回
397
+  actionType.value = 'return';
398
+  
399
+  // 打开抽屉
400
+  handleDrawerVisible.value = true;
401
+}
402
+
403
+// 退回工单提交
404
+async function handleReturnSubmit() {
384
   try {
405
   try {
385
-    await ElMessageBox.confirm('确定要退回该工单吗?', '提示', {
386
-      confirmButtonText: '确定',
387
-      cancelButtonText: '取消',
388
-      type: 'warning',
389
-      center: true,
390
-    });
391
-    await backProcess({
392
-      taskId: props.task!.taskId,
393
-    });
406
+    // 验证处理内容
407
+    if (!handleFormData.processContent.trim()) {
408
+      ElMessage.error('请输入退回原因');
409
+      return;
410
+    }
411
+
412
+    // 调用退回接口
413
+    await requestClient.put<void>('/workOrder/order/return', handleFormData);
414
+    ElMessage.success('工单退回成功');
415
+
416
+    // 关闭抽屉
417
+    handleDrawerVisible.value = false;
418
+
419
+    // 重新加载数据
394
     emit('reload');
420
     emit('reload');
395
-  } catch {
396
-    // 用户取消操作,不做任何处理
397
-    console.log('用户取消了退回操作');
421
+  } catch (error) {
422
+    ElMessage.error('工单退回失败');
423
+    console.error('工单退回失败:', error);
398
   }
424
   }
399
 }
425
 }
400
 
426
 
539
     </div>
565
     </div>
540
   </ElDrawer>
566
   </ElDrawer>
541
 
567
 
542
-  <!-- 处理工单的抽屉组件 -->
568
+  <!-- 处理/退回工单的抽屉组件 -->
543
   <ElDrawer
569
   <ElDrawer
544
     v-model="handleDrawerVisible"
570
     v-model="handleDrawerVisible"
545
-    title="处理工单"
571
+    :title="actionType === 'handle' ? '处理工单' : '退回工单'"
546
     width="800px"
572
     width="800px"
547
     :close-on-click-modal="false"
573
     :close-on-click-modal="false"
548
   >
574
   >
552
         label-width="120px"
578
         label-width="120px"
553
         class="handle-order-form"
579
         class="handle-order-form"
554
       >
580
       >
555
-        <!-- 处理内容 -->
556
-        <ElFormItem label="处理内容" required>
581
+        <!-- 处理内容/退回原因 -->
582
+        <ElFormItem :label="actionType === 'handle' ? '处理内容' : '退回原因'" required>
557
           <ElInput
583
           <ElInput
558
             v-model="handleFormData.processContent"
584
             v-model="handleFormData.processContent"
559
             type="textarea"
585
             type="textarea"
560
             :rows="4"
586
             :rows="4"
561
-            placeholder="请输入处理内容"
587
+            :placeholder="actionType === 'handle' ? '请输入处理内容' : '请输入退回原因'"
562
           />
588
           />
563
         </ElFormItem>
589
         </ElFormItem>
564
 
590
 
565
-        <!-- 处理附件 -->
566
-        <ElFormItem label="处理附件">
591
+        <!-- 处理附件/退回附件 -->
592
+        <ElFormItem :label="actionType === 'handle' ? '处理附件' : '退回附件'">
567
           <ElUpload
593
           <ElUpload
568
             :file-list="handleFileList"
594
             :file-list="handleFileList"
569
             :action="getSingleImageUploadConfig().action"
595
             :action="getSingleImageUploadConfig().action"
590
     >
616
     >
591
       <div class="flex justify-end space-x-2">
617
       <div class="flex justify-end space-x-2">
592
         <ElButton @click="handleDrawerVisible = false">取消</ElButton>
618
         <ElButton @click="handleDrawerVisible = false">取消</ElButton>
593
-        <ElButton type="primary" @click="handleSubmitForm">提交</ElButton>
619
+        <ElButton type="primary" @click="actionType === 'handle' ? handleSubmitForm() : handleReturnSubmit()">
620
+          {{ actionType === 'handle' ? '提交' : '退回' }}
621
+        </ElButton>
594
       </div>
622
       </div>
595
     </div>
623
     </div>
596
   </ElDrawer>
624
   </ElDrawer>