Quellcode durchsuchen

Merge branch 'master' of http://39.164.159.226:3000/hnsh-smart-steward/smart-steward-admin

闪电 vor 2 Wochen
Ursprung
Commit
bb97addc20

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

@@ -28,18 +28,24 @@ enum Api {
28 28
  * 查询检测统计
29 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 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 51
  * @param params 查询参数

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

@@ -42,7 +42,7 @@ export function deleteOrder(taskId: string) {
42 42
  * @param data
43 43
  */
44 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,7 +113,7 @@ export function getTaskByTaskId(taskId: string) {
113 113
  * 终止任务
114 114
  */
115 115
 export function terminationTask(data: { comment?: string; taskId: string }) {
116
-  return requestClient.postWithMsg<void>(
116
+  return requestClient.post<void>(
117 117
     '/workflow/task/terminationTask',
118 118
     data,
119 119
   );
@@ -128,7 +128,7 @@ export function taskOperation(
128 128
   taskOperationData: TaskOperationData,
129 129
   taskOperation: TaskOperationType,
130 130
 ) {
131
-  return requestClient.postWithMsg<void>(
131
+  return requestClient.post<void>(
132 132
     `/workflow/task/taskOperation/${taskOperation}`,
133 133
     taskOperationData,
134 134
   );
@@ -140,7 +140,7 @@ export function taskOperation(
140 140
  * @param userId 办理人id
141 141
  */
142 142
 export function updateAssignee(taskIdList: IDS, userId: ID) {
143
-  return requestClient.putWithMsg<void>(
143
+  return requestClient.put<void>(
144 144
     `/workflow/task/updateAssignee/${userId}`,
145 145
     taskIdList,
146 146
   );
@@ -151,7 +151,7 @@ export function updateAssignee(taskIdList: IDS, userId: ID) {
151 151
  * @param data 参数
152 152
  */
153 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,7 +37,7 @@ export const tableColumns: VxeGridProps['columns'] = [
37 37
     minWidth: 120,
38 38
   },
39 39
   {
40
-    field: 'position',
40
+    field: 'executePositionName',
41 41
     title: '岗位',
42 42
     minWidth: 120,
43 43
   },
@@ -46,28 +46,29 @@ export const tableColumns: VxeGridProps['columns'] = [
46 46
     title: '评论',
47 47
     minWidth: 100,
48 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 55
     title: '截止时间',
56 56
     minWidth: 180,
57 57
   },
58 58
   {
59
-    field: 'processTime',
59
+    field: 'completeTime',
60 60
     title: '处理时间',
61 61
     minWidth: 180,
62 62
   },
63 63
   {
64
-    field: 'completionStatus',
64
+    field: 'isOverdue',
65 65
     title: '完成状态',
66 66
     minWidth: 120,
67 67
     align: 'center',
68
-    formatter: (cellValue: any) => {
68
+    formatter: (data: any) => {
69 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,8 +76,8 @@ export const tableColumns: VxeGridProps['columns'] = [
75 76
     title: '创建',
76 77
     minWidth: 100,
77 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,11 +108,11 @@ export const queryFormSchema: FormSchemaGetter = () => [
107 108
     component: 'Select',
108 109
     componentProps: {
109 110
       options: [
110
-        { label: '按时完成', value: 2 },
111
+        { label: '按时完成', value: 0 },
111 112
         { label: '逾期完成', value: 1 },
112 113
       ],
113 114
     },
114
-    fieldName: 'completionStatus',
115
+    fieldName: 'isOverdue',
115 116
     label: '状态',
116 117
   },
117 118
   {

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

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

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

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

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

@@ -241,6 +241,9 @@ function handleApprove() {
241 241
   handleFormData.processContent = '';
242 242
   handleFormData.taskId = props.task!.taskId;
243 243
   handleFileList.value = [];
244
+  
245
+  // 设置操作类型为处理
246
+  actionType.value = 'handle';
244 247
 
245 248
   // 打开抽屉
246 249
   handleDrawerVisible.value = true;
@@ -379,22 +382,45 @@ async function handleCCSubmit() {
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 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 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,10 +565,10 @@ async function handleApproveDelaySubmit() {
539 565
     </div>
540 566
   </ElDrawer>
541 567
 
542
-  <!-- 处理工单的抽屉组件 -->
568
+  <!-- 处理/退回工单的抽屉组件 -->
543 569
   <ElDrawer
544 570
     v-model="handleDrawerVisible"
545
-    title="处理工单"
571
+    :title="actionType === 'handle' ? '处理工单' : '退回工单'"
546 572
     width="800px"
547 573
     :close-on-click-modal="false"
548 574
   >
@@ -552,18 +578,18 @@ async function handleApproveDelaySubmit() {
552 578
         label-width="120px"
553 579
         class="handle-order-form"
554 580
       >
555
-        <!-- 处理内容 -->
556
-        <ElFormItem label="处理内容" required>
581
+        <!-- 处理内容/退回原因 -->
582
+        <ElFormItem :label="actionType === 'handle' ? '处理内容' : '退回原因'" required>
557 583
           <ElInput
558 584
             v-model="handleFormData.processContent"
559 585
             type="textarea"
560 586
             :rows="4"
561
-            placeholder="请输入处理内容"
587
+            :placeholder="actionType === 'handle' ? '请输入处理内容' : '请输入退回原因'"
562 588
           />
563 589
         </ElFormItem>
564 590
 
565
-        <!-- 处理附件 -->
566
-        <ElFormItem label="处理附件">
591
+        <!-- 处理附件/退回附件 -->
592
+        <ElFormItem :label="actionType === 'handle' ? '处理附件' : '退回附件'">
567 593
           <ElUpload
568 594
             :file-list="handleFileList"
569 595
             :action="getSingleImageUploadConfig().action"
@@ -590,7 +616,9 @@ async function handleApproveDelaySubmit() {
590 616
     >
591 617
       <div class="flex justify-end space-x-2">
592 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 622
       </div>
595 623
     </div>
596 624
   </ElDrawer>