闪电 2 週間 前
コミット
1f0bbc52bf
共有3 個のファイルを変更した513 個の追加144 個の削除を含む
  1. 1 0
      apps/web-ele/src/utils/dicts.ts
  2. 510 142
      apps/web-ele/src/views/schedule/detail/components/check.vue
  3. 2 2
      apps/web-ele/src/views/schedule/detail/index.vue

+ 1 - 0
apps/web-ele/src/utils/dicts.ts

@@ -37,6 +37,7 @@ export const taskLevelOptions = [
37 37
 ];
38 38
 
39 39
 export const taskStatusOptions: any = [
40
+  { label: '已取消', value: -1, color: 'primary' },
40 41
   { label: '已取消', value: 0, color: 'primary' },
41 42
   { label: '待处理', value: 1, color: 'warning' },
42 43
   { label: '超期未处理', value: 2, color: 'danger' },

+ 510 - 142
apps/web-ele/src/views/schedule/detail/components/check.vue

@@ -1,7 +1,15 @@
1 1
 <script lang="ts" setup>
2 2
 import { onMounted, ref, watch } from 'vue';
3 3
 
4
-import { ElImage, ElTabPane, ElTabs, ElTag } from 'element-plus';
4
+import { QuestionFilled } from '@element-plus/icons-vue';
5
+import {
6
+  ElButton,
7
+  ElDialog,
8
+  ElIcon,
9
+  ElImage,
10
+  ElTabPane,
11
+  ElTabs,
12
+} from 'element-plus';
5 13
 
6 14
 import {
7 15
   getCheckSubItemsByTaskId,
@@ -25,17 +33,44 @@ const activeArea = ref<any>('');
25 33
 // 获取当前区域的数据
26 34
 const currentCheckList: any = ref([]);
27 35
 
36
+// 当前选中的检查项
37
+const currentCheckItem = ref<any>({});
38
+
39
+// 统计数据
40
+const statics = ref({
41
+  score: 0,
42
+  totalScore: 0,
43
+  totalItems: 0,
44
+  photoCount: 0,
45
+});
46
+
47
+// 弹窗显示状态
48
+const popupShow = ref({
49
+  centerShow: false,
50
+});
51
+
52
+// 弹窗内容
53
+const toastHtml = ref('');
54
+
28 55
 // 切换区域时更新数据
29 56
 const handleAreaChange = (area: any) => {
30 57
   activeArea.value = area;
31
-  currentCheckList.value =
32
-    checkSubItems.value.find((item: any) => item.id === area)?.items || [];
58
+  const currentItem = checkSubItems.value.find((item: any) => item.id === area);
59
+  currentCheckList.value = currentItem?.items || [];
60
+  currentCheckItem.value = currentItem || {};
61
+};
62
+
63
+// 处理说明按钮点击
64
+const helpClick = (item: any) => {
65
+  toastHtml.value = item.checkDescription;
66
+  popupShow.value.centerShow = true;
33 67
 };
34 68
 
35
-// // 处理说明按钮点击
36
-// const handleExplain = (item: CheckItem) => {
37
-//   console.log('查看说明:', item);
38
-// };
69
+// 关闭说明弹窗
70
+const helpClose = () => {
71
+  toastHtml.value = '';
72
+  popupShow.value.centerShow = false;
73
+};
39 74
 
40 75
 const checkSubItems: any = ref([]);
41 76
 
@@ -44,40 +79,85 @@ const init = () => {
44 79
   Promise.all([
45 80
     getChecktItemsByTaskId({
46 81
       checkId: props.taskDetail.id,
82
+      pageSize: 1000,
47 83
     }),
48 84
     getCheckSubItemsByTaskId({
49 85
       checkId: props.taskDetail.id,
86
+      pageSize: 1000,
50 87
     }),
51 88
   ]).then(([checkItemsRes, checkSubItemsRes]) => {
52 89
     // 处理检查项数据
53 90
     checkSubItems.value = checkSubItemsRes.rows || [];
91
+
92
+    // 初始化统计数据
93
+    statics.value = {
94
+      score: 0,
95
+      totalScore: 0,
96
+      totalItems: 0,
97
+      photoCount: 0,
98
+    };
99
+
54 100
     checkSubItems.value.forEach((item: any) => {
101
+      // 初始化每个区域的统计数据
102
+      item.statics = {
103
+        score: 0,
104
+        totalScore: 0,
105
+        totalItems: 0,
106
+        photoCount: 0,
107
+      };
108
+
109
+      // 过滤检查项
55 110
       item.items =
56 111
         checkItemsRes.rows?.filter(
57 112
           (subItem: any) => subItem.subItemId === item.id,
58 113
         ) || [];
59
-    });
60
-    // 更新检查项数据
61
-    activeArea.value = checkSubItems.value[0].id;
62
-    currentCheckList.value = checkSubItems.value[0].items || [];
63
-  });
64
-};
65 114
 
66
-const getPhotos = (item: any): Array<{ isExample: boolean; url: string }> => {
67
-  const list: Array<{ isExample: boolean; url: string }> = (
68
-    item.exampleImageUrl || []
69
-  ).map((url: string) => ({
70
-    url,
71
-    isExample: true,
72
-  }));
73
-  (item.photoUrl || []).forEach((url: string) => {
74
-    list.push({
75
-      url,
76
-      isExample: false,
115
+      // 处理每个检查项
116
+      item.items.forEach((task: any) => {
117
+        // 计算得分
118
+        if (task.checkResult === 2) {
119
+          item.statics.score += task.score || 0;
120
+          item.statics.totalScore += (task.limitScore || 0).length;
121
+        }
122
+
123
+        // 计算异常数
124
+        if (task.result === 2) {
125
+          item.statics.totalItems += 1;
126
+        }
127
+
128
+        // 计算无拍照数
129
+        if (
130
+          task.hasPhoto > 0 &&
131
+          (!task.photoUrl || task.photoUrl.length === 0)
132
+        ) {
133
+          item.statics.photoCount += 1;
134
+        }
135
+
136
+        // 确保score和photoUrl字段存在
137
+        task.score = task.score || null;
138
+
139
+        // 处理photoUrl格式
140
+        if (task.photoUrl && Array.isArray(task.photoUrl)) {
141
+          task.photoUrl = task.photoUrl.map((url: any) =>
142
+            typeof url === 'string' ? { url } : url,
143
+          );
144
+        }
145
+      });
146
+
147
+      // 累加总统计数据
148
+      statics.value.score += item.statics.score;
149
+      statics.value.totalScore += item.statics.totalScore;
150
+      statics.value.totalItems += item.statics.totalItems;
151
+      statics.value.photoCount += item.statics.photoCount;
77 152
     });
78
-  });
79 153
 
80
-  return list;
154
+    // 更新检查项数据
155
+    if (checkSubItems.value.length > 0) {
156
+      activeArea.value = checkSubItems.value[0].id;
157
+      currentCheckList.value = checkSubItems.value[0].items || [];
158
+      currentCheckItem.value = checkSubItems.value[0] || {};
159
+    }
160
+  });
81 161
 };
82 162
 
83 163
 // 监听taskDetail.id变化
@@ -85,8 +165,6 @@ watch(
85 165
   () => props.taskDetail.id,
86 166
   (newId) => {
87 167
     if (newId) {
88
-      // 初始化检查项数据
89
-      // checkItems.value = props.taskDetail.checkItems || [];
90 168
       init();
91 169
     }
92 170
   },
@@ -99,150 +177,440 @@ onMounted(() => {
99 177
 
100 178
 <template>
101 179
   <div class="check-list-container">
102
-    <!-- <ElCard class="check-list-card"> -->
103
-    <!-- 顶部统计 -->
104
-    <div class="mb-6 flex items-center justify-between">
105
-      <div class="flex items-center space-x-4">
106
-        <span class="text-sm text-gray-500">得分:</span>
107
-        <span class="text-lg font-bold text-gray-800">
108
-          {{ taskDetail.score }}
109
-        </span>
110
-        <span class="text-sm text-gray-500">无拍照数:</span>
111
-        <span class="text-lg font-bold text-gray-800">
112
-          {{ taskDetail.noPhotoNumber }}
113
-        </span>
114
-        <span class="text-sm text-gray-500">异常总数:</span>
115
-        <span class="text-lg font-bold text-gray-800">
116
-          {{ taskDetail.abnormalNumber }}
117
-        </span>
180
+    <!-- 顶部固定区域 -->
181
+    <div class="fixed-area">
182
+      <!-- 头部信息 -->
183
+      <div class="head-info">
184
+        <div class="head-info-stats">
185
+          <div class="head-info-stat-item">
186
+            <div class="stat-item-num">
187
+              {{ statics.photoCount || 0 }}
188
+            </div>
189
+            <div class="stat-item-text">无拍照</div>
190
+          </div>
191
+          <div class="head-info-stat-item">
192
+            <div class="stat-item-Middle">
193
+              <div class="stat-item-num">
194
+                {{ statics.totalItems || 0 }}
195
+              </div>
196
+              <div class="stat-item-text">异常总数</div>
197
+            </div>
198
+          </div>
199
+          <div class="head-info-stat-item">
200
+            <div class="stat-item-num">
201
+              {{ statics.score || 0 }} / {{ statics.totalScore || 0 }}
202
+            </div>
203
+            <div class="stat-item-text">总得分</div>
204
+          </div>
205
+        </div>
118 206
       </div>
119
-      <!-- <ElButton type="primary" size="small"> 上传 </ElButton> -->
207
+      <!-- 区域切换Tabs -->
208
+      <ElTabs v-model="activeArea" @tab-change="handleAreaChange" class="mb-6">
209
+        <ElTabPane
210
+          v-for="(item, index) in checkSubItems"
211
+          :label="item.name"
212
+          :name="item.id"
213
+          :key="item.id"
214
+        />
215
+      </ElTabs>
120 216
     </div>
121 217
 
122
-    <!-- 区域切换Tabs -->
123
-    <ElTabs v-model="activeArea" @tab-change="handleAreaChange" class="mb-6">
124
-      <ElTabPane
125
-        v-for="item in checkSubItems"
126
-        :label="item.name"
127
-        :name="item.id"
128
-        :key="item.id"
129
-      />
130
-    </ElTabs>
131
-
132 218
     <!-- 检查项列表 -->
133
-    <div class="check-items">
134
-      <div
135
-        v-for="(item, index) in currentCheckList"
136
-        :key="item.id"
137
-        class="mb-6"
138
-      >
139
-        <!-- 子检查项 -->
140
-        <div class="space-y-4">
141
-          <div class="mb-4 rounded-lg border p-4">
142
-            <div class="mb-2 flex items-start">
143
-              <div class="mr-2 text-sm font-medium">{{ +index + 1 }}.</div>
144
-              <ElTag
145
-                :type="item.result === '1' ? 'success' : 'danger'"
219
+    <div class="task-container">
220
+      <div class="task-top-left">
221
+        <text>
222
+          异常数
223
+          <text style="color: #31373d; font-weight: 600">
224
+            {{ currentCheckItem?.statics?.totalItems || 0 }}
225
+          </text>
226
+        </text>
227
+        <text style="color: #31373d; font-weight: 600"> | </text>
228
+        <text>
229
+          得分
230
+          <text style="color: #31373d; font-weight: 600">
231
+            {{ currentCheckItem?.statics?.score || 0 }} /
232
+            {{ currentCheckItem?.statics?.totalScore || 0 }}
233
+          </text>
234
+        </text>
235
+      </div>
236
+      <div class="tasks">
237
+        <div
238
+          v-for="(item, index) in currentCheckList"
239
+          :key="item.id"
240
+          class="task-item"
241
+        >
242
+          <!-- 任务描述 -->
243
+          <div class="task-description">
244
+            <text class="task-number">{{ +index + 1 }}.</text>
245
+            <text class="task-text">
246
+              {{ item.tagName ? `【${item.tagName.replace(/,/g, '|')}】` : '' }}
247
+              {{ item.itemName }}
248
+              <ElButton
249
+                v-if="item.checkDescription"
250
+                type="text"
146 251
                 size="small"
147
-                class="mr-2"
252
+                @click="helpClick(item)"
253
+                style="margin-left: 8px; padding: 0"
148 254
               >
149
-                {{ item.result === '1' ? '正常' : '异常' }}
150
-              </ElTag>
151
-              <div class="flex-1">
152
-                <div class="text-sm font-medium">{{ item.itemName }}</div>
153
-                <div
154
-                  v-if="item.hasPhoto === 2"
155
-                  class="mt-1 text-xs text-gray-500"
156
-                >
157
-                  {{ '必拍' }}
158
-                </div>
159
-              </div>
160
-            </div>
255
+                <ElIcon class="is-loading"><QuestionFilled /></ElIcon>
256
+              </ElButton>
257
+            </text>
258
+          </div>
161 259
 
162
-            <!-- 图片展示 -->
163
-            <div v-if="item.hasPhoto > 0" class="mt-3 flex flex-wrap gap-2">
260
+          <!-- 操作说明-图片示例 -->
261
+          <div
262
+            v-if="item.exampleImageUrl && item.exampleImageUrl.length > 0"
263
+            class="task-instructions-example"
264
+          >
265
+            <div v-if="item.photoPrompt" class="task-instructions">
266
+              <text class="instructions-text">
267
+                {{ `拍照:${item.photoPrompt}` }}
268
+              </text>
269
+            </div>
270
+            <div class="example-images">
164 271
               <div
165
-                v-for="(img, imgIndex) in getPhotos(item)"
166
-                :key="imgIndex"
167
-                class="relative"
272
+                v-for="(example, idx) in item.exampleImageUrl"
273
+                :key="idx"
274
+                class="example-image"
168 275
               >
169 276
                 <ElImage
170
-                  :src="img.url"
171
-                  :preview-src-list="
172
-                    (getPhotos(item) || []).map((photo) => photo.url)
173
-                  "
174
-                  class="check-image"
277
+                  :src="example"
278
+                  :preview-src-list="item.exampleImageUrl"
175 279
                   fit="cover"
176 280
                 />
177
-                <ElTag
178
-                  :type="img.isExample ? 'info' : 'success'"
179
-                  size="small"
180
-                  class="absolute right-0 top-0 z-10"
181
-                  style="
182
-                    background-color: rgba(255, 255, 255, 0.3);
183
-                    border: none;
184
-                    color: white;
185
-                  "
186
-                >
187
-                  {{ img.isExample ? '示例' : '拍照' }}
188
-                </ElTag>
281
+                <text class="example-text">示例</text>
189 282
               </div>
190 283
             </div>
284
+          </div>
191 285
 
192
-            <div v-else>
193
-              <div class="text-xs text-gray-500">
194
-                {{ item.inputItem || '暂无' }}
195
-              </div>
286
+          <!-- 已上传图片 -->
287
+          <div
288
+            v-if="item.photoUrl && item.photoUrl.length > 0"
289
+            class="uploaded-images"
290
+          >
291
+            <div
292
+              v-for="(image, idx) in item.photoUrl"
293
+              :key="idx"
294
+              class="uploaded-image"
295
+            >
296
+              <ElImage
297
+                :src="typeof image === 'string' ? image : image.url"
298
+                :preview-src-list="
299
+                  item.photoUrl.map((img: any) =>
300
+                    typeof img === 'string' ? img : img.url,
301
+                  )
302
+                "
303
+                fit="cover"
304
+              />
305
+            </div>
306
+          </div>
307
+
308
+          <!-- 几号枪 -->
309
+          <div v-if="item.inputItem" class="whichGun">
310
+            <text class="whichGun-text">{{ item.inputItem }}</text>
311
+          </div>
312
+
313
+          <!-- 状态 -->
314
+          <div class="task-status">
315
+            <div>
316
+              <text class="status-text">
317
+                整体:{{
318
+                  item.result === 1
319
+                    ? '正常'
320
+                    : item.result === 2
321
+                      ? '异常'
322
+                      : item.result === 3
323
+                        ? '不适用'
324
+                        : '-'
325
+                }}
326
+              </text>
196 327
             </div>
328
+          </div>
197 329
 
198
-            <!-- 评分信息 -->
199
-            <!-- <div class="flex items-center mt-3 text-sm">
200
-                <div class="mr-4">
201
-                  <span class="text-gray-500">得分:</span>
202
-                  <span class="font-medium ml-1">{{ subItem.score }}</span>
203
-                </div>
204
-                <div>
205
-                  <span class="text-gray-500">总分:</span>
206
-                  <span class="font-medium ml-1">{{ subItem.totalScore }}</span>
207
-                </div>
208
-              </div> -->
330
+          <!-- 异常描述 -->
331
+          <div v-if="item.formOperationIssue?.id" class="anomalyDescription">
332
+            <div class="anomalyDescription-title">异常描述:</div>
333
+            <div class="anomalyDescription-content">
334
+              {{ item.formOperationIssue?.problemDescription || '' }}
335
+            </div>
209 336
           </div>
210 337
         </div>
211 338
       </div>
212 339
     </div>
213 340
 
214
-    <!-- 底部导航 -->
215
-    <!-- <div class="flex justify-center items-center mt-8 space-x-4">
216
-        <ElButton type="primary" size="small">上一个</ElButton>
217
-        <ElButton type="primary" size="small">下一个</ElButton>
218
-      </div> -->
219
-    <!-- </ElCard> -->
341
+    <!-- 说明弹窗 -->
342
+    <ElDialog v-model="popupShow.centerShow" title="说明" width="600px" center>
343
+      <div v-html="toastHtml" class="popup-content"></div>
344
+      <template #footer>
345
+        <span class="dialog-footer">
346
+          <ElButton @click="helpClose">我知道了</ElButton>
347
+        </span>
348
+      </template>
349
+    </ElDialog>
220 350
   </div>
221 351
 </template>
222 352
 
223 353
 <style scoped lang="scss">
224 354
 .check-list-container {
225
-  width: 100%;
226
-}
355
+  display: flex;
356
+  flex-direction: column;
357
+  min-height: 100vh;
358
+  overflow: hidden;
227 359
 
228
-.check-list-card {
229
-  border-radius: 8px;
230
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
231
-}
360
+  .fixed-area {
361
+    flex-shrink: 0;
362
+    background-color: #fff;
363
+    position: sticky;
364
+    top: 0;
365
+    z-index: 10;
366
+  }
232 367
 
233
-.check-items {
234
-  /* 移除滚动条限制,让内容根据数据高度自适应 */
235
-}
368
+  .head-info {
369
+    width: 100%;
370
+    padding: 20px 32px;
371
+    box-sizing: border-box;
372
+    display: flex;
373
+    flex-direction: column;
374
+    gap: 20px;
236 375
 
237
-.check-image {
238
-  width: 80px;
239
-  height: 60px;
240
-  border-radius: 4px;
241
-  cursor: pointer;
242
-}
376
+    .head-info-title {
377
+      font-size: 24px;
378
+      font-weight: 500;
379
+      color: #31373d;
380
+    }
381
+
382
+    .head-info-stats {
383
+      width: 100%;
384
+      display: flex;
385
+      justify-content: space-around;
386
+      padding: 10px 0;
387
+
388
+      .head-info-stat-item {
389
+        flex: 1;
390
+        display: flex;
391
+        flex-direction: column;
392
+        align-items: center;
393
+        justify-content: center;
394
+
395
+        .stat-item-Middle {
396
+          width: 100%;
397
+          display: flex;
398
+          flex-direction: column;
399
+          align-items: center;
400
+          justify-content: center;
401
+          border-left: 1px solid #edeef2;
402
+          border-right: 1px solid #edeef2;
403
+          padding: 10px 0;
404
+        }
405
+
406
+        .stat-item-num {
407
+          font-size: 28px;
408
+          color: #31373d;
409
+          font-weight: 400;
410
+        }
411
+
412
+        .stat-item-text {
413
+          font-size: 16px;
414
+          color: #4e5969;
415
+          font-weight: 400;
416
+          margin-top: 4px;
417
+        }
418
+      }
419
+    }
420
+  }
421
+
422
+  .task-container {
423
+    flex: 1;
424
+    overflow-y: auto;
425
+
426
+    .task-top-left {
427
+      margin-left: 30px;
428
+      width: 250px;
429
+      height: 48px;
430
+      background-color: #e8f3ff;
431
+      border-radius: 12px;
432
+      margin-top: 20px;
433
+      margin-bottom: 30px;
434
+      padding: 10px;
435
+      box-sizing: border-box;
436
+      color: #4e5969;
437
+      font-size: 16px;
438
+      font-weight: 400;
439
+      display: flex;
440
+      justify-content: space-between;
441
+      align-items: center;
442
+
443
+      text {
444
+        color: #4e5969;
445
+        font-size: 16px;
446
+        font-weight: 400;
447
+
448
+        text[style*='font-weight: 600'] {
449
+          color: #31373d;
450
+          font-weight: 400;
451
+        }
452
+      }
453
+    }
454
+  }
455
+
456
+  .tasks {
457
+    display: flex;
458
+    flex-direction: column;
459
+    align-items: center;
460
+
461
+    .task-item {
462
+      width: 90%;
463
+      max-width: 800px;
464
+      margin-bottom: 30px;
465
+
466
+      .task-description {
467
+        display: flex;
468
+        margin-bottom: 16px;
469
+
470
+        .task-number {
471
+          font-size: 20px;
472
+          color: #31373d;
473
+          margin-right: 8px;
474
+          font-weight: 500;
475
+        }
476
+
477
+        .task-text {
478
+          font-size: 18px;
479
+          font-weight: 400;
480
+          color: #31373d;
481
+          line-height: 28px;
482
+        }
483
+      }
484
+
485
+      .task-instructions-example {
486
+        width: 100%;
487
+        background-color: #f5f5f5;
488
+        padding: 10px;
489
+        box-sizing: border-box;
490
+        border-radius: 8px;
491
+
492
+        .task-instructions {
493
+          margin-bottom: 16px;
494
+
495
+          .instructions-text {
496
+            font-size: 16px;
497
+            color: #4e5969;
498
+            line-height: 24px;
499
+          }
500
+        }
501
+
502
+        .example-images {
503
+          display: flex;
504
+          gap: 16px;
505
+          margin-bottom: 16px;
506
+
507
+          .example-image {
508
+            width: 140px;
509
+            height: 100px;
510
+            position: relative;
511
+
512
+            :deep(.el-image) {
513
+              width: 100%;
514
+              height: 100%;
515
+              border-radius: 8px;
516
+            }
517
+
518
+            .example-text {
519
+              position: absolute;
520
+              bottom: 0;
521
+              left: 0;
522
+              right: 0;
523
+              background-color: rgba(0, 0, 0, 0.5);
524
+              color: white;
525
+              font-size: 14px;
526
+              text-align: center;
527
+              padding: 4px 0;
528
+              border-radius: 0 0 8px 8px;
529
+            }
530
+          }
531
+        }
532
+      }
533
+
534
+      .whichGun {
535
+        width: 100%;
536
+        height: 60px;
537
+        background-color: #f5f5f5;
538
+        display: flex;
539
+        align-items: center;
540
+        gap: 10px;
541
+        padding-left: 10px;
542
+        padding-right: 10px;
543
+        box-sizing: border-box;
544
+        margin-bottom: 10px;
545
+        border-radius: 8px;
546
+
547
+        .whichGun-text {
548
+          font-size: 16px;
549
+          color: #4e5969;
550
+          font-weight: 400;
551
+        }
552
+      }
553
+
554
+      .task-status {
555
+        width: 100%;
556
+        display: flex;
557
+        justify-content: flex-end;
558
+        margin-bottom: 10px;
559
+
560
+        .status-text {
561
+          font-size: 16px;
562
+          font-weight: 400;
563
+          color: #31373d;
564
+        }
565
+      }
566
+
567
+      .anomalyDescription {
568
+        width: 100%;
569
+        border-bottom: 1px solid #eeeeee;
570
+        font-size: 16px;
571
+        padding-bottom: 20px;
572
+
573
+        .anomalyDescription-title {
574
+          font-weight: 500;
575
+          color: #31373d;
576
+          margin-bottom: 8px;
577
+        }
578
+
579
+        .anomalyDescription-content {
580
+          font-weight: 400;
581
+          color: #4e5969;
582
+          line-height: 24px;
583
+        }
584
+      }
585
+
586
+      .uploaded-images {
587
+        width: 100%;
588
+        display: flex;
589
+        gap: 16px;
590
+        margin-bottom: 16px;
591
+        overflow-x: auto;
592
+        padding-bottom: 10px;
593
+
594
+        .uploaded-image {
595
+          flex-shrink: 0;
596
+          width: 120px;
597
+          height: 80px;
598
+
599
+          :deep(.el-image) {
600
+            width: 100%;
601
+            height: 100%;
602
+            border-radius: 8px;
603
+          }
604
+        }
605
+      }
606
+    }
607
+  }
243 608
 
244
-.check-image:hover {
245
-  opacity: 0.8;
246
-  transition: opacity 0.3s ease;
609
+  .popup-content {
610
+    font-size: 16px;
611
+    font-weight: 400;
612
+    color: #343a45;
613
+    line-height: 24px;
614
+  }
247 615
 }
248 616
 </style>

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

@@ -618,13 +618,13 @@ const handlePlannedTimeClick = () => {
618 618
               </ElTag>
619 619
               <ElTag
620 620
                 :type="
621
-                  statusConfig[`${taskInfo?.status > 0 || 0}`]?.color || 'info'
621
+                  statusConfig[`${taskInfo?.status || -1}`]?.color || 'info'
622 622
                 "
623 623
                 size="small"
624 624
                 effect="dark"
625 625
               >
626 626
                 {{
627
-                  statusConfig[`${taskInfo.status > 0 || 0}`]?.label ||
627
+                  statusConfig[`${taskInfo?.status || -1}`]?.label ||
628 628
                   taskInfo.status
629 629
                 }}
630 630
                 <!-- {{ taskInfo.status }} -->