闪电 2 周之前
父节点
当前提交
355de6e69a

+ 4 - 2
apps/web-ele/src/app.vue

@@ -1,10 +1,12 @@
1 1
 <script lang="ts" setup>
2 2
 import { onMounted, onUnmounted, ref } from 'vue';
3
-// @ts-ignore
4
-import { useVbenModal } from '@vben/common-ui';
5 3
 import { useRouter } from 'vue-router';
4
+
5
+// @ts-ignore
6 6
 import { useElementPlusDesignTokens } from '@vben/hooks';
7
+
7 8
 import { ElConfigProvider } from 'element-plus';
9
+
8 10
 import { elementLocale } from '#/locales';
9 11
 
10 12
 defineOptions({ name: 'App' });

+ 1 - 1
apps/web-ele/src/router/routes/modules/dashboard.ts

@@ -15,7 +15,7 @@ const routes: RouteRecordRaw[] = [
15 15
       {
16 16
         name: 'Analytics',
17 17
         path: '/analytics',
18
-        component: () => import('#/views/dashboard/analytics/index.vue'), 
18
+        component: () => import('#/views/dashboard/analytics/index.vue'),
19 19
         meta: {
20 20
           affixTab: true,
21 21
           icon: 'lucide:area-chart',

+ 8 - 1
apps/web-ele/src/views/examManage/exam/cpn/edit/drawer.vue

@@ -125,6 +125,13 @@ const [Drawer, drawerApi] = useVbenDrawer({
125 125
         return;
126 126
       }
127 127
 
128
+      // 判断及格分数是否超过试卷满分
129
+      const paperScore = selectedPapers.value[0]?.score || 0;
130
+      if (Number(examForm.passScore) > paperScore) {
131
+        ElMessage.error('及格分不能超过试卷满分');
132
+        return;
133
+      }
134
+
128 135
       const params: any = {
129 136
         categoryId: examForm.categoryId,
130 137
         passScore: examForm.passScore,
@@ -161,11 +168,11 @@ const [Drawer, drawerApi] = useVbenDrawer({
161 168
       await (isUpdateRef.value ? updateExam(params) : addExam(params));
162 169
 
163 170
       emit('reload');
171
+      clearForm();
164 172
       drawerApi.close();
165 173
     } catch (error) {
166 174
       console.error(error);
167 175
     } finally {
168
-      clearForm();
169 176
       this.confirmLoading = false;
170 177
     }
171 178
   },

+ 9 - 7
apps/web-ele/src/views/schedule/detail/index.vue

@@ -23,8 +23,8 @@ import { keyBy } from 'lodash-es';
23 23
 import {
24 24
   closeTask,
25 25
   getTaskDetail,
26
-  transferTask,
27 26
   setPlanTimeAPI,
27
+  transferTask,
28 28
 } from '#/api/schedule';
29 29
 // @ts-ignore
30 30
 import { confirmDoneTask, handleLicense } from '#/api/task/confirm';
@@ -554,7 +554,7 @@ const PlannedTimeValue = ref('') as any;
554 554
 const [PlannedTimeModal, plannedTimeModalApi] = useVbenModal({
555 555
   title: '修改计划时间',
556 556
   showCancelBtn: false,
557
-  contentClass:'plannedTimeModalclass',
557
+  contentClass: 'plannedTimeModalclass',
558 558
   onConfirm: async () => {
559 559
     if (
560 560
       new Date(PlannedTimeValue.value).getTime() <
@@ -617,12 +617,14 @@ const handlePlannedTimeClick = () => {
617 617
                 {{ priorityConfig[taskInfo.level]?.label || taskInfo.level }}
618 618
               </ElTag>
619 619
               <ElTag
620
-                :type="statusConfig[`${taskInfo.status || 0}`]?.color || 'info'"
620
+                :type="
621
+                  statusConfig[`${taskInfo?.status > 0 || 0}`]?.color || 'info'
622
+                "
621 623
                 size="small"
622 624
                 effect="dark"
623 625
               >
624 626
                 {{
625
-                  statusConfig[`${taskInfo.status || 0}`]?.label ||
627
+                  statusConfig[`${taskInfo.status > 0 || 0}`]?.label ||
626 628
                   taskInfo.status
627 629
                 }}
628 630
                 <!-- {{ taskInfo.status }} -->
@@ -702,15 +704,15 @@ const handlePlannedTimeClick = () => {
702 704
               {{ taskInfo.executorName || '-' }}
703 705
             </ElDescriptionsItem>
704 706
             <ElDescriptionsItem label="计划时间:">
705
-              <el-button type="primary" text @click="handlePlannedTimeClick">
707
+              <ElButton type="primary" text @click="handlePlannedTimeClick">
706 708
                 {{ taskInfo.displayDate || '-' }}
707
-              </el-button>
709
+              </ElButton>
708 710
             </ElDescriptionsItem>
709 711
             <ElDescriptionsItem label="创建:">
710 712
               {{ taskInfo.createBy || '' }}
711 713
             </ElDescriptionsItem>
712 714
             <ElDescriptionsItem label="任务类型:">
713
-              {{ taskInfo.subFormTypeName || taskOther.taskTypeName || '-' }}
715
+              {{ taskInfo.taskTypeName || '-' }}
714 716
             </ElDescriptionsItem>
715 717
             <ElDescriptionsItem label="任务负责人:">
716 718
               {{ taskInfo.taskLeaderName || '-' }}

+ 2 - 283
apps/web-ele/src/views/schedule/view/components/month/index.vue

@@ -11,289 +11,7 @@ const props = defineProps(['month', 'daylist', 'overduedaylist']);
11 11
 const expandedDates = ref({});
12 12
 // 最大显示任务数
13 13
 const MAX_DISPLAY_TASKS = 4;
14
-// 模拟任务数据
15
-// const tasks = ref([
16
-//   {
17
-//     id: 1,
18
-//     name: '未来路摄像头抓图AI检查',
19
-//     date: '2025-12-15',
20
-//     start: '23:59',
21
-//     status: 'processable',
22
-//     department: '管理部',
23
-//   },
24
-//   {
25
-//     id: 2,
26
-//     name: '龙飞街摄像头抓图AI检查',
27
-//     date: '2025-12-15',
28
-//     start: '23:59',
29
-//     status: 'processable',
30
-//     department: '管理部',
31
-//   },
32
-//   {
33
-//     id: 3,
34
-//     name: '中州大道监控设备维护',
35
-//     date: '2025-12-15',
36
-//     start: '07:59',
37
-//     status: 'not-started',
38
-//     department: '技术部',
39
-//   },
40
-//   {
41
-//     id: 4,
42
-//     name: '农业路交通流量分析',
43
-//     date: '2025-12-15',
44
-//     start: '09:30',
45
-//     status: 'cancelled',
46
-//     department: '数据分析部',
47
-//   },
48
-//   {
49
-//     id: 5,
50
-//     name: '未来路摄像头抓图AI检查',
51
-//     date: '2025-12-16',
52
-//     start: '08:15',
53
-//     status: 'processable',
54
-//     department: '管理部',
55
-//   },
56
-//   {
57
-//     id: 6,
58
-//     name: '龙飞街摄像头抓图AI检查',
59
-//     date: '2025-12-16',
60
-//     start: '09:45',
61
-//     status: 'processable',
62
-//     department: '管理部',
63
-//   },
64
-//   {
65
-//     id: 7,
66
-//     name: '文化路监控系统升级',
67
-//     date: '2025-12-16',
68
-//     start: '07:00',
69
-//     status: 'completed',
70
-//     department: '技术部',
71
-//   },
72
-//   {
73
-//     id: 8,
74
-//     name: '纬五路设备巡检',
75
-//     date: '2025-12-16',
76
-//     start: '08:30',
77
-//     status: 'overdue',
78
-//     department: '运维部',
79
-//   },
80
-//   {
81
-//     id: 9,
82
-//     name: '未来路摄像头抓图AI检查',
83
-//     date: '2025-12-17',
84
-//     start: '10:00',
85
-//     status: 'processable',
86
-//     department: '管理部',
87
-//   },
88
-//   {
89
-//     id: 10,
90
-//     name: '龙飞街摄像头抓图AI检查',
91
-//     date: '2025-12-17',
92
-//     start: '11:20',
93
-//     status: 'processable',
94
-//     department: '管理部',
95
-//   },
96
-//   {
97
-//     id: 11,
98
-//     name: '经三路摄像头调试',
99
-//     date: '2025-12-17',
100
-//     start: '13:15',
101
-//     status: 'not-started',
102
-//     department: '技术部',
103
-//   },
104
-//   {
105
-//     id: 12,
106
-//     name: '东风路设备更新计划',
107
-//     date: '2025-12-17',
108
-//     start: '14:00',
109
-//     status: 'cancelled',
110
-//     department: '采购部',
111
-//   },
112
-//   {
113
-//     id: 13,
114
-//     name: '未来路摄像头抓图AI检查',
115
-//     date: '2025-12-18',
116
-//     start: '09:10',
117
-//     status: 'processable',
118
-//     department: '管理部',
119
-//   },
120
-//   {
121
-//     id: 14,
122
-//     name: '龙飞街摄像头抓图AI检查',
123
-//     date: '2025-12-18',
124
-//     start: '10:05',
125
-//     status: 'processable',
126
-//     department: '管理部',
127
-//   },
128
-//   {
129
-//     id: 15,
130
-//     name: '花园路监控中心改造',
131
-//     date: '2025-12-18',
132
-//     start: '15:00',
133
-//     status: 'completed',
134
-//     department: '技术部',
135
-//   },
136
-//   {
137
-//     id: 16,
138
-//     name: '桐柏路设备维护',
139
-//     date: '2025-12-18',
140
-//     start: '16:30',
141
-//     status: 'overdue',
142
-//     department: '运维部',
143
-//   },
144
-//   {
145
-//     id: 17,
146
-//     name: '未来路摄像头抓图AI检查',
147
-//     date: '2025-12-19',
148
-//     start: '08:20',
149
-//     status: 'processable',
150
-//     department: '管理部',
151
-//   },
152
-//   {
153
-//     id: 18,
154
-//     name: '龙飞街摄像头抓图AI检查',
155
-//     date: '2025-12-19',
156
-//     start: '09:05',
157
-//     status: 'processable',
158
-//     department: '管理部',
159
-//   },
160
-//   {
161
-//     id: 19,
162
-//     name: '大学路监控设备安装',
163
-//     date: '2025-12-19',
164
-//     start: '10:00',
165
-//     status: 'not-started',
166
-//     department: '技术部',
167
-//   },
168
-//   {
169
-//     id: 20,
170
-//     name: '汝河路系统测试',
171
-//     date: '2025-12-19',
172
-//     start: '11:10',
173
-//     status: 'cancelled',
174
-//     department: '质量部',
175
-//   },
176
-//   {
177
-//     id: 21,
178
-//     name: '未来路摄像头抓图AI检查',
179
-//     date: '2025-12-20',
180
-//     start: '14:30',
181
-//     status: 'processable',
182
-//     department: '管理部',
183
-//   },
184
-//   {
185
-//     id: 22,
186
-//     name: '龙飞街摄像头抓图AI检查',
187
-//     date: '2025-12-20',
188
-//     start: '15:00',
189
-//     status: 'processable',
190
-//     department: '管理部',
191
-//   },
192
-//   {
193
-//     id: 23,
194
-//     name: '航海路监控数据分析',
195
-//     date: '2025-12-20',
196
-//     start: '09:00',
197
-//     status: 'completed',
198
-//     department: '数据分析部',
199
-//   },
200
-//   {
201
-//     id: 24,
202
-//     name: '长江路设备巡检',
203
-//     date: '2025-12-20',
204
-//     start: '16:45',
205
-//     status: 'overdue',
206
-//     department: '运维部',
207
-//   },
208
-//   {
209
-//     id: 25,
210
-//     name: '未来路摄像头抓图AI检查',
211
-//     date: '2025-12-21',
212
-//     start: '08:40',
213
-//     status: 'processable',
214
-//     department: '管理部',
215
-//   },
216
-//   {
217
-//     id: 26,
218
-//     name: '龙飞街摄像头抓图AI检查',
219
-//     date: '2025-12-21',
220
-//     start: '09:25',
221
-//     status: 'processable',
222
-//     department: '管理部',
223
-//   },
224
-//   {
225
-//     id: 27,
226
-//     name: '嵩山路监控系统优化',
227
-//     date: '2025-12-21',
228
-//     start: '10:50',
229
-//     status: 'not-started',
230
-//     department: '技术部',
231
-//   },
232
-//   {
233
-//     id: 28,
234
-//     name: '紫荆山路设备调试',
235
-//     date: '2025-12-21',
236
-//     start: '11:30',
237
-//     status: 'completed',
238
-//     department: '技术部',
239
-//   },
240
-//   {
241
-//     id: 29,
242
-//     name: '商城路设备维护计划',
243
-//     date: '2025-12-21',
244
-//     start: '13:05',
245
-//     status: 'overdue',
246
-//     department: '运维部',
247
-//   },
248
-//   {
249
-//     id: 30,
250
-//     name: '金水路交通管理培训',
251
-//     date: '2025-12-21',
252
-//     start: '09:15',
253
-//     status: 'cancelled',
254
-//     department: '人力资源部',
255
-//   },
256
-//   {
257
-//     id: 31,
258
-//     name: '龙飞街量缸试水检查',
259
-//     date: '2025-12-17',
260
-//     start: '07:59',
261
-//     status: 'processable',
262
-//     department: '管理部',
263
-//   },
264
-//   {
265
-//     id: 32,
266
-//     name: '龙飞街量缸试水检查',
267
-//     date: '2025-12-17',
268
-//     start: '07:59',
269
-//     status: 'processable',
270
-//     department: '管理部',
271
-//   },
272
-//   {
273
-//     id: 33,
274
-//     name: '龙飞街量缸试水检查',
275
-//     date: '2025-12-17',
276
-//     start: '07:59',
277
-//     status: 'processable',
278
-//     department: '管理部',
279
-//   },
280
-//   {
281
-//     id: 34,
282
-//     name: '龙飞街量缸试水检查',
283
-//     date: '2025-12-17',
284
-//     start: '07:59',
285
-//     status: 'processable',
286
-//     department: '管理部',
287
-//   },
288
-//   {
289
-//     id: 35,
290
-//     name: '龙飞街量缸试水检查',
291
-//     date: '2025-12-17',
292
-//     start: '07:59',
293
-//     status: 'processable',
294
-//     department: '管理部',
295
-//   },
296
-// ]);
14
+
297 15
 const moonlist = computed(() => {
298 16
   const daylists = [...props.daylist];
299 17
   return daylists
@@ -301,6 +19,7 @@ const moonlist = computed(() => {
301 19
     .map((item) => {
302 20
       let status = '#215acd';
303 21
       switch (item.status) {
22
+        case -1:
304 23
         case 0: {
305 24
           status = '#8c8c8c'; // 任务未开始或取消
306 25
           break;

+ 1 - 0
apps/web-ele/src/views/schedule/view/components/week/index.vue

@@ -37,6 +37,7 @@ const weeklist = computed(() => {
37 37
     .map((item) => {
38 38
       let status = 'Authorizable';
39 39
       switch (item.status) {
40
+        case -1:
40 41
         case 0: {
41 42
           status = ''; // 任务未开始或取消
42 43
           break;