闪电 3 日 前
コミット
00117911fa

+ 1 - 1
apps/web-ele/src/api/oilstation/filter/filter.ts

@@ -12,7 +12,7 @@ enum Api {
12 12
   filterImport = '/gasOilFilter/filter/import',
13 13
   filterInfo = '/gasOilFilter/filter/',
14 14
   filterList = '/gasOilFilter/filter/list',
15
-  filterLogs = '/gasFilterMaintenanceLog/log/list',
15
+  filterLogs = '/gasOilFilter/filter/log/list',
16 16
 }
17 17
 
18 18
 // 返回日志

+ 13 - 6
apps/web-ele/src/components/selectUsers/src/index.vue

@@ -15,7 +15,7 @@ import { ElMessage } from 'element-plus';
15 15
 import { deptTree } from '#/api/system/dept/dept';
16 16
 // 场站相关API
17 17
 // @ts-ignore
18
-import { selectAllSysStationAreaList } from '#/api/system/infoEntry/stationInfo/stationInfo';
18
+import { selectAllSysStation } from '#/api/system/infoEntry/stationInfo/stationInfo';
19 19
 // 岗位相关API
20 20
 // @ts-ignore
21 21
 import { getPostList } from '#/api/system/post/post';
@@ -213,9 +213,16 @@ async function initData() {
213 213
     // 并行请求所有数据,提高加载效率
214 214
     const [deptRes, roleRes, postRes, stationRes] = await Promise.all([
215 215
       deptTree(),
216
-      getRoleList(),
217
-      getPostList(),
218
-      selectAllSysStationAreaList(),
216
+      getRoleList({
217
+        pageSize: 10_000,
218
+      }),
219
+      getPostList({
220
+        pageSize: 10_000,
221
+      }),
222
+      selectAllSysStation({
223
+        isAll: true,
224
+        pageSize: 10_000,
225
+      }),
219 226
     ]);
220 227
 
221 228
     deptTreeData.value = deptRes || [];
@@ -496,7 +503,7 @@ function handleStationChange() {
496 503
         selectedItems.value.push({
497 504
           id: stationId,
498 505
           key: `${stationId}-station`,
499
-          name: station.areaName,
506
+          name: station.stationName,
500 507
           type: 'station',
501 508
         });
502 509
       }
@@ -730,7 +737,7 @@ defineExpose({
730 737
               :label="station.id"
731 738
               class="checkbox-item"
732 739
             >
733
-              {{ station.areaName }}
740
+              {{ station.stationName }}
734 741
             </ElCheckbox>
735 742
           </ElCheckboxGroup>
736 743
         </div>

+ 2 - 2
apps/web-ele/src/views/knowledge/type/create.vue

@@ -259,8 +259,8 @@ const submitForm = () => {
259 259
     if (valid) {
260 260
       emit('save', {
261 261
         ...form.value,
262
-        visiblePositions: form.value.visiblePositions.join(','),
263
-        visibleRole: form.value.visibleRole.join(','),
262
+        visiblePositions: form.value?.visiblePositions?.join(','),
263
+        visibleRole: form.value?.visibleRole?.join(','),
264 264
       });
265 265
       ElMessage.success(props.mode === 'create' ? '创建成功' : '编辑成功');
266 266
     } else {

+ 4 - 4
apps/web-ele/src/views/oilstation/extinguisher/extinguisher-data.tsx

@@ -15,7 +15,7 @@ export const queryFormSchema: FormSchemaGetter = () => [
15 15
       placeholder: '请选择场站',
16 16
       clearable: true,
17 17
       api: async () => {
18
-        const resp = await selectAllSysStation();
18
+        const resp = await selectAllSysStation({});
19 19
         const data = resp || [];
20 20
         return Array.isArray(data)
21 21
           ? data.map((item: any) => ({
@@ -139,7 +139,7 @@ export const drawerFormSchema: FormSchemaGetter = () => [
139 139
     componentProps: {
140 140
       placeholder: '请选择场站',
141 141
       api: async () => {
142
-        const resp = await selectAllSysStation();
142
+        const resp = await selectAllSysStation({});
143 143
         const data = resp || [];
144 144
         return Array.isArray(data)
145 145
           ? data.map((item: any) => ({
@@ -198,7 +198,7 @@ export const drawerFormSchema: FormSchemaGetter = () => [
198 198
     componentProps: {
199 199
       type: 'date',
200 200
       format: 'YYYY-MM-DD',
201
-      valueFormat: 'YYYY-MM-DD HH:mm:ss',
201
+      valueFormat: 'YYYY-MM-DD',
202 202
       placeholder: '生产日期',
203 203
       style: {
204 204
         width: '100%',
@@ -213,7 +213,7 @@ export const drawerFormSchema: FormSchemaGetter = () => [
213 213
     componentProps: {
214 214
       type: 'date',
215 215
       format: 'YYYY-MM-DD',
216
-      valueFormat: 'YYYY-MM-DD HH:mm:ss',
216
+      valueFormat: 'YYYY-MM-DD',
217 217
       placeholder: '有效日期',
218 218
       style: {
219 219
         width: '100%',

+ 5 - 5
apps/web-ele/src/views/oilstation/extinguisher/extinguisher-drawer.vue

@@ -1,6 +1,7 @@
1 1
 <script setup lang="ts">
2 2
 import { onMounted, ref } from 'vue';
3 3
 
4
+// @ts-ignore
4 5
 import { useVbenDrawer, useVbenForm } from '@vben/common-ui';
5 6
 
6 7
 import {
@@ -28,7 +29,8 @@ onMounted(() => {
28 29
 const isUpdateRef = ref<boolean>(false);
29 30
 
30 31
 const [Drawer, drawerApi] = useVbenDrawer({
31
-  async onOpenChange(isOpen) {
32
+  // @ts-ignore
33
+  async onOpenChange(isOpen: boolean) {
32 34
     if (!isOpen) {
33 35
       return;
34 36
     }
@@ -37,8 +39,7 @@ const [Drawer, drawerApi] = useVbenDrawer({
37 39
       const { id, isUpdate } = drawerApi.getData();
38 40
       isUpdateRef.value = isUpdate;
39 41
       if (isUpdate && id) {
40
-        const res = await getExtinguisherDetail(id);
41
-        console.log('获取灭火器详情数据:', res);
42
+        const res: any = await getExtinguisherDetail(id);
42 43
         // 确保从正确的响应结构中获取数据
43 44
         const detailData = res?.data || res;
44 45
         await formApi.setValues(detailData);
@@ -61,10 +62,9 @@ const [Drawer, drawerApi] = useVbenDrawer({
61 62
 
62 63
       // 确保使用正确的字段名提交数据
63 64
       const submitData = {
64
-        ...data
65
+        ...data,
65 66
       };
66 67
 
67
-      console.log('提交数据:', submitData);
68 68
       await (isUpdateRef.value
69 69
         ? updateExtinguisher(submitData)
70 70
         : addExtinguisher(submitData));

+ 10 - 11
apps/web-ele/src/views/oilstation/filter/detail.vue

@@ -29,7 +29,7 @@ const filterId = ref(Number(route.params.id));
29 29
 // 表格列配置
30 30
 const tableColumns: any = [
31 31
   {
32
-    field: 'operatedAt',
32
+    field: 'createTime',
33 33
     title: '操作时间',
34 34
     width: 200,
35 35
   },
@@ -54,7 +54,7 @@ const tableColumns: any = [
54 54
     // width: 150,
55 55
   },
56 56
   {
57
-    field: 'operatorName',
57
+    field: 'createByName',
58 58
     title: '操作员',
59 59
   },
60 60
 ];
@@ -68,14 +68,17 @@ const gridOptions: any = {
68 68
     zoom: false,
69 69
   },
70 70
   pagerConfig: {
71
-    enabled: false,
71
+    enabled: true,
72 72
   },
73 73
   proxyConfig: {
74 74
     ajax: {
75
-      query: async () => {
76
-        return {
77
-          items: operationRecords.value || [],
78
-        };
75
+      query: async ({ page }: any) => {
76
+        const resp = await getFilterLogs({
77
+          oilId: filterId.value,
78
+          pageNum: page.currentPage,
79
+          pageSize: page.pageSize,
80
+        });
81
+        return { items: resp.rows, total: resp.total };
79 82
       },
80 83
     },
81 84
   },
@@ -94,10 +97,6 @@ const init = async () => {
94 97
   // console.log('获取过滤器详情:', filterId.value);
95 98
   const res: any = await getFilterDetail(filterId.value);
96 99
   filterInfo.value = res || {};
97
-
98
-  // 获取操作记录
99
-  const logRes: any = await getFilterLogs({ filterId: filterId.value });
100
-  operationRecords.value = logRes.rows || [];
101 100
 };
102 101
 
103 102
 onMounted(async () => {

+ 1 - 1
apps/web-ele/src/views/oilstation/filter/index.vue

@@ -166,7 +166,7 @@ async function exportHandle() {
166 166
             v-access:code="['oilstation:filter:add']"
167 167
             @click="handleAdd"
168 168
           >
169
-            新增过滤器
169
+            新增记录
170 170
           </ElButton>
171 171
           <ElButton
172 172
             type="primary"

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

@@ -1,5 +1,5 @@
1 1
 <script lang="ts" setup>
2
-import { computed, defineComponent, h, onMounted, ref } from 'vue';
2
+import { defineComponent, h, onMounted, ref } from 'vue';
3 3
 import { useRoute } from 'vue-router';
4 4
 
5 5
 // @ts-ignore
@@ -173,12 +173,13 @@ const handleCloseTask = () => {
173 173
     closeTask({
174 174
       taskId: taskId.value,
175 175
       cancelReason: reason.value,
176
-    }).then(() => {
176
+    }).then(async () => {
177 177
       ElMessage.success('任务关闭成功');
178 178
       // 刷新任务详情
179
-      getTaskDetail(taskId.value).then((res) => {
180
-        taskInfo.value = res;
181
-      });
179
+      // getTaskDetail(taskId.value).then((res) => {
180
+      //   taskInfo.value = res;
181
+      // });
182
+      await init();
182 183
     });
183 184
   });
184 185
 };
@@ -222,9 +223,10 @@ const [ExecutorModal, executorModalApi] = useVbenModal({
222 223
       }).then(() => {
223 224
         ElMessage.success('任务转交成功');
224 225
         // 刷新任务详情
225
-        getTaskDetail(taskId.value).then((res) => {
226
-          taskInfo.value = res;
227
-        });
226
+        // getTaskDetail(taskId.value).then((res) => {
227
+        //   taskInfo.value = res;
228
+        // });
229
+        init();
228 230
       });
229 231
 
230 232
       executorModalApi.close();
@@ -250,9 +252,9 @@ const taskResult: any = ref({
250 252
   fileNames: [],
251 253
 });
252 254
 
253
-const oneSelf = computed(() => {
254
-  return taskInfo.value.executorId === Number(userStore.userInfo?.userId);
255
-});
255
+// const oneSelf = computed(() => {
256
+//   return taskInfo.value.executorId === Number(userStore.userInfo?.userId);
257
+// });
256 258
 
257 259
 const buttons = ref({
258 260
   deal: false,
@@ -261,6 +263,11 @@ const buttons = ref({
261 263
 });
262 264
 
263 265
 const init = async () => {
266
+  buttons.value = {
267
+    deal: false,
268
+    transfer: false,
269
+    close: false,
270
+  };
264 271
   const res = await getTaskDetail(taskId.value);
265 272
   taskInfo.value = res;
266 273
   if (!taskInfo.value.status) {
@@ -437,8 +444,8 @@ const dealAnnualExaminationTask = async () => {
437 444
   try {
438 445
     await handleLicense(taskInfo.value.id || 0);
439 446
 
440
-    init();
441 447
     ElMessage.success('处理任务成功');
448
+    await init();
442 449
   } catch {
443 450
     ElMessage.error('处理任务失败');
444 451
   }
@@ -461,9 +468,8 @@ const dealTaskEvent = async () => {
461 468
 
462 469
   try {
463 470
     await confirmDoneTask(taskInfo.value.id || 0);
464
-
465
-    init();
466 471
     ElMessage.success('确认完成任务成功');
472
+    await init();
467 473
   } catch {
468 474
     ElMessage.error('确认完成任务失败');
469 475
   }
@@ -570,8 +576,9 @@ const [PlannedTimeModal, plannedTimeModalApi] = useVbenModal({
570 576
         taskId: taskId.value,
571 577
         planTime: PlannedTimeValue.value,
572 578
       });
573
-      await init();
574 579
       ElMessage.success('修改计划时间成功');
580
+      await init();
581
+
575 582
       plannedTimeModalApi.close();
576 583
     } catch {
577 584
       ElMessage.error('修改计划时间失败');

+ 11 - 7
apps/web-ele/src/views/schedule/view/components/create/config-data.tsx

@@ -3,10 +3,8 @@ import { h } from 'vue';
3 3
 // import { useUserStore } from '@vben/stores';
4 4
 import { getPopupContainer } from '@vben/utils';
5 5
 
6
-import {
7
-  queryExecutorList,
8
-  queryStationListByExecutor,
9
-} from '#/api/schedule/index';
6
+import { queryExecutorList } from '#/api/schedule/index';
7
+import { selectAllSysStation } from '#/api/system/infoEntry/stationInfo/stationInfo';
10 8
 import { getPostList } from '#/api/system/post/post';
11 9
 import { querybaseApilist } from '#/api/system/tasksettings/tasktemplate';
12 10
 import { getFileUploadConfig } from '#/components/upload/config';
@@ -118,6 +116,7 @@ export const drawerFormSchema: any = (type: any) => [
118 116
         placeholder: '请选择执行人',
119 117
         clearable: true,
120 118
         multiple: true,
119
+        multipleLimit: type === 3 ? 0 : 1,
121 120
         options,
122 121
         labelField: 'label',
123 122
         immediate: true,
@@ -144,20 +143,25 @@ export const drawerFormSchema: any = (type: any) => [
144 143
     componentProps: (data: any) => {
145 144
       const executorValues = data.executorIds || [];
146 145
       const userIds = executorValues.map((value: any) => value?.userId);
146
+      const executePosition = data.executePosition;
147
+      const postTypeInfo = getPostListOptions.find(
148
+        (item: any) => item.value === executePosition,
149
+      );
147 150
       return {
148 151
         getPopupContainer,
149 152
         api: async () => {
150 153
           if (userIds.length === 0) {
151 154
             return [];
152 155
           }
153
-          const data = await queryStationListByExecutor({
154
-            userIds: userIds.join(','),
156
+          const data = await selectAllSysStation({
157
+            userId: userIds[0],
158
+            postType: postTypeInfo?.type,
155 159
           });
156 160
           return data;
157 161
         },
158 162
         multiple: true,
159 163
         labelField: 'stationName',
160
-        valueField: 'stationId',
164
+        valueField: 'id',
161 165
         key: executorValues.map((v: any) => v?.userId).join(','), // 当执行人变化时,重新初始化组件
162 166
         immediate: true, // 立即执行api
163 167
       };

+ 129 - 118
apps/web-ele/src/views/schedule/work/classes/components/CreateClasses.vue

@@ -1,113 +1,10 @@
1
-<template>
2
-  <el-drawer
3
-    :model-value="isdrawer"
4
-    @update:model-value="emit('update:modelValue', $event)"
5
-    :title="isdrawertitle"
6
-    direction="rtl"
7
-    :close-on-click-modal="false"
8
-    @close="handleClose"
9
-  >
10
-    <div v-loading="isdrawerloading" style="width: 100%; height: 100%">
11
-      <el-form
12
-        ref="ruleFormRef"
13
-        style="max-width: 600px"
14
-        :model="ruleForm"
15
-        :rules="rules"
16
-        label-width="auto"
17
-      >
18
-        <el-form-item label="班次名称" prop="name">
19
-          <el-input v-model="ruleForm.name" placeholder="请输入班次名称" />
20
-        </el-form-item>
21
-        <div style="display: flex; justify-content: space-between; gap: 20px">
22
-          <el-form-item label="第一次上班时间" prop="firstWorkTime">
23
-            <el-date-picker
24
-              v-model="ruleForm.firstWorkTime"
25
-              type="datetime"
26
-              placeholder="请选择"
27
-              @change="calculateFirstWorkDuration"
28
-            />
29
-          </el-form-item>
30
-          <el-form-item label="第一次下班时间" prop="lastWorkTime">
31
-            <el-date-picker
32
-              v-model="ruleForm.lastWorkTime"
33
-              type="datetime"
34
-              placeholder="请选择"
35
-              @change="calculateFirstWorkDuration"
36
-            />
37
-          </el-form-item>
38
-        </div>
39
-        <el-form-item label="第一次上班时长" prop="firstWorkDuration">
40
-          <el-input v-model="ruleForm.firstWorkDuration" disabled />
41
-        </el-form-item>
42
-        <div style="display: flex; justify-content: space-between; gap: 20px">
43
-          <el-form-item label="第二次上班时间" prop="secondWorkTime">
44
-            <el-date-picker
45
-              v-model="ruleForm.secondWorkTime"
46
-              type="datetime"
47
-              placeholder="请选择"
48
-              @change="calculateSecondWorkDuration"
49
-            />
50
-          </el-form-item>
51
-          <el-form-item label="第二次下班时间" prop="secondLastWorkTime">
52
-            <el-date-picker
53
-              v-model="ruleForm.secondLastWorkTime"
54
-              type="datetime"
55
-              placeholder="请选择"
56
-              @change="calculateSecondWorkDuration"
57
-            />
58
-          </el-form-item>
59
-        </div>
60
-        <el-form-item label="第二次上班时长" prop="secondWorkDuration">
61
-          <el-input v-model="ruleForm.secondWorkDuration" disabled />
62
-        </el-form-item>
63
-        <el-form-item label="常用" prop="common">
64
-          <el-radio-group v-model="ruleForm.common">
65
-            <el-radio value="1" size="large">是</el-radio>
66
-            <el-radio value="0" size="large">否</el-radio>
67
-          </el-radio-group>
68
-        </el-form-item>
69
-        <el-form-item label="适用场站" prop="stationIds">
70
-          <div style="display: flex; gap: 20px">
71
-            <el-select
72
-              v-model="ruleForm.stationIds"
73
-              multiple
74
-              placeholder="请选择"
75
-              style="width: 240px"
76
-            >
77
-              <el-option
78
-                v-for="item in options"
79
-                :key="item.value"
80
-                :label="item.label"
81
-                :value="item.value"
82
-              />
83
-            </el-select>
84
-            <el-button type="primary" @click="SelectAll"> 全选 </el-button>
85
-          </div>
86
-        </el-form-item>
87
-        <el-form-item>
88
-          <div
89
-            style="
90
-              width: 100%;
91
-              display: flex;
92
-              justify-content: flex-end;
93
-              gap: 20px;
94
-            "
95
-          >
96
-            <el-button type="primary" @click="submitForm(ruleFormRef)">
97
-              提交
98
-            </el-button>
99
-            <el-button @click="handleClose">取消</el-button>
100
-          </div>
101
-        </el-form-item>
102
-      </el-form>
103
-    </div>
104
-  </el-drawer>
105
-</template>
106
-
107 1
 <script lang="ts" setup>
108
-import { reactive, ref, onMounted, watch } from 'vue';
109
-import type { FormInstance, FormRules } from 'element-plus';
110
-import { selectAllSysStationAreaList } from '#/api/system/infoEntry/stationInfo/stationInfo';
2
+import type { FormInstance } from 'element-plus';
3
+
4
+import { onMounted, reactive, ref, watch } from 'vue';
5
+
6
+import { selectAllSysStation } from '#/api/system/infoEntry/stationInfo/stationInfo';
7
+
111 8
 const props = defineProps({
112 9
   isdrawer: {
113 10
     type: Boolean,
@@ -164,8 +61,13 @@ const ruleFormRef = ref();
164 61
 const options = ref([]) as any;
165 62
 onMounted(async () => {
166 63
   try {
167
-    //@ts-ignore
168
-    options.value = (await selectAllSysStationAreaList()).map((item) => ({
64
+    // @ts-ignore
65
+    options.value = (
66
+      await selectAllSysStation({
67
+        isAll: 1,
68
+        pageSize: 10_000,
69
+      })
70
+    ).map((item) => ({
169 71
       value: item?.id,
170 72
       label: item?.stationName,
171 73
     }));
@@ -215,7 +117,7 @@ watch(
215 117
       if (newEditData.applicableStations) {
216 118
         ruleForm.value.stationIds = newEditData.applicableStations
217 119
           .split(',')
218
-          .map((id: any) => Number(id));
120
+          .map(Number);
219 121
       }
220 122
     }
221 123
   },
@@ -255,10 +157,13 @@ const rules = reactive({
255 157
 });
256 158
 const SelectAll = async () => {
257 159
   try {
258
-    //@ts-ignore
259
-    ruleForm.value.stationIds = (await selectAllSysStationAreaList()).map(
260
-      (item: any) => item?.id,
261
-    );
160
+    // @ts-ignore
161
+    ruleForm.value.stationIds = (
162
+      await selectAllSysStation({
163
+        isAll: 1,
164
+        pageSize: 10_000,
165
+      })
166
+    ).map((item: any) => item?.id);
262 167
   } catch (error) {
263 168
     console.log(error);
264 169
   }
@@ -276,8 +181,8 @@ const submitForm = async (formEl: FormInstance | undefined) => {
276 181
 
277 182
 // 计算工作时长
278 183
 const calculateWorkDuration = (
279
-  startTime: string | Date,
280
-  endTime: string | Date,
184
+  startTime: Date | string,
185
+  endTime: Date | string,
281 186
 ): string => {
282 187
   if (!startTime || !endTime) return '';
283 188
 
@@ -316,3 +221,109 @@ const calculateSecondWorkDuration = () => {
316 221
 //   formEl.resetFields();
317 222
 // };
318 223
 </script>
224
+
225
+<template>
226
+  <el-drawer
227
+    :model-value="isdrawer"
228
+    @update:model-value="emit('update:modelValue', $event)"
229
+    :title="isdrawertitle"
230
+    direction="rtl"
231
+    :close-on-click-modal="false"
232
+    @close="handleClose"
233
+  >
234
+    <div v-loading="isdrawerloading" style="width: 100%; height: 100%">
235
+      <el-form
236
+        ref="ruleFormRef"
237
+        style="max-width: 600px"
238
+        :model="ruleForm"
239
+        :rules="rules"
240
+        label-width="auto"
241
+      >
242
+        <el-form-item label="班次名称" prop="name">
243
+          <el-input v-model="ruleForm.name" placeholder="请输入班次名称" />
244
+        </el-form-item>
245
+        <div style="display: flex; justify-content: space-between; gap: 20px">
246
+          <el-form-item label="第一次上班时间" prop="firstWorkTime">
247
+            <el-date-picker
248
+              v-model="ruleForm.firstWorkTime"
249
+              type="datetime"
250
+              placeholder="请选择"
251
+              @change="calculateFirstWorkDuration"
252
+            />
253
+          </el-form-item>
254
+          <el-form-item label="第一次下班时间" prop="lastWorkTime">
255
+            <el-date-picker
256
+              v-model="ruleForm.lastWorkTime"
257
+              type="datetime"
258
+              placeholder="请选择"
259
+              @change="calculateFirstWorkDuration"
260
+            />
261
+          </el-form-item>
262
+        </div>
263
+        <el-form-item label="第一次上班时长" prop="firstWorkDuration">
264
+          <el-input v-model="ruleForm.firstWorkDuration" disabled />
265
+        </el-form-item>
266
+        <div style="display: flex; justify-content: space-between; gap: 20px">
267
+          <el-form-item label="第二次上班时间" prop="secondWorkTime">
268
+            <el-date-picker
269
+              v-model="ruleForm.secondWorkTime"
270
+              type="datetime"
271
+              placeholder="请选择"
272
+              @change="calculateSecondWorkDuration"
273
+            />
274
+          </el-form-item>
275
+          <el-form-item label="第二次下班时间" prop="secondLastWorkTime">
276
+            <el-date-picker
277
+              v-model="ruleForm.secondLastWorkTime"
278
+              type="datetime"
279
+              placeholder="请选择"
280
+              @change="calculateSecondWorkDuration"
281
+            />
282
+          </el-form-item>
283
+        </div>
284
+        <el-form-item label="第二次上班时长" prop="secondWorkDuration">
285
+          <el-input v-model="ruleForm.secondWorkDuration" disabled />
286
+        </el-form-item>
287
+        <el-form-item label="常用" prop="common">
288
+          <el-radio-group v-model="ruleForm.common">
289
+            <el-radio value="1" size="large">是</el-radio>
290
+            <el-radio value="0" size="large">否</el-radio>
291
+          </el-radio-group>
292
+        </el-form-item>
293
+        <el-form-item label="适用场站" prop="stationIds">
294
+          <div style="display: flex; gap: 20px">
295
+            <el-select
296
+              v-model="ruleForm.stationIds"
297
+              multiple
298
+              placeholder="请选择"
299
+              style="width: 240px"
300
+            >
301
+              <el-option
302
+                v-for="item in options"
303
+                :key="item.value"
304
+                :label="item.label"
305
+                :value="item.value"
306
+              />
307
+            </el-select>
308
+            <el-button type="primary" @click="SelectAll"> 全选 </el-button>
309
+          </div>
310
+        </el-form-item>
311
+        <el-form-item>
312
+          <div
313
+            style="
314
+              width: 100%;
315
+              display: flex;
316
+              justify-content: flex-end;
317
+              gap: 20px;
318
+            "
319
+          >
320
+            <el-button type="primary" @click="submitForm(ruleFormRef)">
321
+              提交
322
+            </el-button>
323
+            <el-button @click="handleClose">取消</el-button>
324
+          </div>
325
+        </el-form-item>
326
+      </el-form>
327
+    </div>
328
+  </el-drawer>
329
+</template>

+ 18 - 0
apps/web-ele/src/views/schedule/work/classes/config-data.tsx

@@ -1,5 +1,7 @@
1 1
 import type { VxeGridProps } from '#/adapter/vxe-table';
2 2
 
3
+import dayjs from 'dayjs';
4
+
3 5
 export const columns: VxeGridProps['columns'] = [
4 6
   {
5 7
     field: 'action',
@@ -18,11 +20,19 @@ export const columns: VxeGridProps['columns'] = [
18 20
     title: '第一次上班时间',
19 21
     field: 'firstStartTime',
20 22
     minWidth: 130,
23
+    formatter: ({ row }) => {
24
+      return row.firstStartTime
25
+        ? dayjs(row.firstStartTime).format('HH:mm')
26
+        : '';
27
+    },
21 28
   },
22 29
   {
23 30
     title: '第一次下班时间',
24 31
     field: 'firstEndTime',
25 32
     minWidth: 130,
33
+    formatter: ({ row }) => {
34
+      return row.firstEndTime ? dayjs(row.firstEndTime).format('HH:mm') : '';
35
+    },
26 36
   },
27 37
   {
28 38
     title: '第一次上班时长',
@@ -33,11 +43,19 @@ export const columns: VxeGridProps['columns'] = [
33 43
     title: '第二次上班时间',
34 44
     field: 'secondStartTime',
35 45
     minWidth: 130,
46
+    formatter: ({ row }) => {
47
+      return row.secondStartTime
48
+        ? dayjs(row.secondStartTime).format('HH:mm')
49
+        : '';
50
+    },
36 51
   },
37 52
   {
38 53
     title: '第二次下班时间',
39 54
     field: 'secondEndTime',
40 55
     minWidth: 130,
56
+    formatter: ({ row }) => {
57
+      return row.secondEndTime ? dayjs(row.secondEndTime).format('HH:mm') : '';
58
+    },
41 59
   },
42 60
   {
43 61
     title: '第二次上班时长',

+ 3 - 1
apps/web-ele/src/views/system/taskDesign/taskTemplate/taskTemplate-data.tsx

@@ -470,7 +470,9 @@ export const drawerFormSchema: FormSchemaGetter = (props?: any) => [
470 470
       placeholder: '请选择油站',
471 471
       clearable: true,
472 472
       api: async () => {
473
-        const resp = await queryCheckFormList();
473
+        const resp = await queryCheckFormList({
474
+          pageSize: 10_000,
475
+        });
474 476
         const data = resp?.rows || [];
475 477
         return Array.isArray(data)
476 478
           ? data.map((item: any) => ({