7b1f488f
刘淇
封装下图片上传
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<template>
<view class="page-container">
<!-- 顶部固定区域 -->
<up-sticky>
<view class="header-wrap">
<!-- 第一行:u-tabs 待办/已办切换 :scrollable="false"-->
<up-tabs
v-model="activeTab"
:list="tabList"
active-color="#1989fa"
inactive-color="#666"
font-size="30rpx"
|
ff65dc6c
刘淇
快速工单 样式优化
|
13
|
@click="handleTabChange"
|
7b1f488f
刘淇
封装下图片上传
|
14
15
16
17
18
|
/>
<!-- 第二行:下拉框 + 搜索框 -->
<view class="search-header">
<!-- 左侧下拉框 -->
|
ff65dc6c
刘淇
快速工单 样式优化
|
19
|
<view class="select-wrap common-text-color">
|
7b1f488f
刘淇
封装下图片上传
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<up-select
v-model:current="selectedSortValue"
:options="sortOptions"
:showOptionsLabel="true"
@select="handleSortChange"
border="surround"
:style="{ flex: 1 }"
/>
</view>
<!-- 右侧搜索框 -->
<view class="search-input-wrap">
<up-search
v-model="searchValue"
placeholder="请输入关键字"
@search="handleSearch"
bg-color="#f5f5f5"
:clearabled="false"
:show-action="true"
actionText="搜索"
:animation="true"
@custom="handleSearch"
/>
</view>
</view>
</view>
</up-sticky>
<!-- 列表容器 -->
<z-paging
ref="paging"
v-model="orderList"
@query="queryList"
:auto-show-system-loading="true"
|
e6a04285
刘淇
单图情况 宽高70*70
|
54
|
|
7b1f488f
刘淇
封装下图片上传
|
55
|
>
|
5059c4dd
刘淇
养护员提交养护工单
|
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
<template #empty>
<empty-view/>
</template>
<view class="common-card-list" style="padding-top: 200rpx;padding-bottom: 30rpx">
<!-- 待办工单卡片 -->
<up-card
v-if="activeTab == 0"
:border="false"
:foot-border-top="false"
v-for="(item, index) in orderList"
:key="`todo_${item.orderNo}_${index}`"
:show-head="false"
class="order-card"
>
<template #body>
<view class="card-body">
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单编号:</view>
<view class="u-line-1 u-body-value">{{ item.orderNo || '-' }}</view>
</view>
|
b055b398
刘淇
地图导航
|
77
|
<view class="u-body-item u-flex" @click="openMapNav(item)">
|
5059c4dd
刘淇
养护员提交养护工单
|
78
|
<view class="u-body-item-title">工单位置:</view>
|
e6a04285
刘淇
单图情况 宽高70*70
|
79
|
<view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view>
|
5059c4dd
刘淇
养护员提交养护工单
|
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单名称:</view>
<view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view>
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">情况描述:</view>
<view class="u-line-1 u-body-value">{{ item.remark || '无' }}</view>
</view>
<view class="u-body-item u-flex common-item-center common-justify-between">
<view class="u-body-item-title">紧急程度:</view>
<view class="u-line-1 u-body-value">
{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) }}
</view>
</view>
<view class="u-body-item u-flex">
|
4fa8cf12
刘淇
巡查员结束工单
|
96
97
98
99
|
<view class="u-body-item-title">工单状态:</view>
<view class="u-line-1 u-body-value">{{buzStatusMap[item.buzStatus] }}</view>
</view>
<view class="u-body-item u-flex">
|
5059c4dd
刘淇
养护员提交养护工单
|
100
101
102
103
|
<view class="u-body-item-title">提交时间:</view>
<view class="u-line-1 u-body-value">{{ timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss') }}</view>
</view>
<!-- 操作按钮行 -->
|
5b5a4862
刘淇
按钮放大
|
104
|
<view class="u-body-item u-body-item-btn-wrap u-flex common-justify-between common-item-center mt-20">
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
105
|
<up-button type="warning" size="large" @click="handleUnifiedReject(item)"
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
106
|
v-show="showRejectButton(item)">回退
|
5059c4dd
刘淇
养护员提交养护工单
|
107
|
</up-button>
|
7a96cf50
刘淇
重新提交
|
108
|
|
5b5a4862
刘淇
按钮放大
|
109
|
<up-button type="success" size="large" @click="handleRenew(item)"
|
7a96cf50
刘淇
重新提交
|
110
111
112
|
v-show="nextStepMap[item.taskKey].renewShow">重新提交
</up-button>
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
113
|
<up-button type="primary" size="large" @click="handleUnifiedProcess(item)">{{
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
114
|
getProcessButtonText(item)
|
1f1f236c
刘淇
工单详情
|
115
|
}}
|
5059c4dd
刘淇
养护员提交养护工单
|
116
|
</up-button>
|
5b5a4862
刘淇
按钮放大
|
117
|
<up-button type="info" size="large" @click="handleDetail(item)">详情</up-button>
|
7b1f488f
刘淇
封装下图片上传
|
118
119
|
</view>
</view>
|
5059c4dd
刘淇
养护员提交养护工单
|
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
</template>
</up-card>
<!-- 已办工单卡片和我发起的 -->
<up-card
v-if="activeTab == 2||activeTab == 1"
:border="false"
:foot-border-top="false"
v-for="(item, index) in orderList"
:key="`done_${item.orderNo}_${index}`"
:show-head="false"
class="order-card"
>
<template #body>
<view class="card-body">
|
5b5a4862
刘淇
按钮放大
|
135
136
137
138
139
140
141
142
|
<!-- <view class=" ">-->
<!-- <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
<!-- </view>-->
<view class="common-custom-btn " style="--btn-top: 130px;" @click="handleDetail(item)">
工单详情
</view>
|
5059c4dd
刘淇
养护员提交养护工单
|
143
144
145
146
|
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单编号:</view>
<view class="u-line-1 u-body-value">{{ item.orderNo || '-' }}</view>
</view>
|
b055b398
刘淇
地图导航
|
147
|
<view class="u-body-item u-flex" @click="openMapNav(item)">
|
5059c4dd
刘淇
养护员提交养护工单
|
148
|
<view class="u-body-item-title">工单位置:</view>
|
4f475013
刘淇
k线图
|
149
|
<view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</view>
|
5059c4dd
刘淇
养护员提交养护工单
|
150
151
152
153
154
155
156
157
158
|
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单名称:</view>
<view class="u-line-1 u-body-value">{{ item.orderName || '未填写' }}</view>
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">情况描述:</view>
<view class="u-line-1 u-body-value">{{ item.remark || '无' }}</view>
</view>
|
ff65dc6c
刘淇
快速工单 样式优化
|
159
|
|
5059c4dd
刘淇
养护员提交养护工单
|
160
|
<view class="u-body-item u-flex common-justify-between common-item-center">
|
eaaa8665
刘淇
全域巡查员
|
161
|
<view class="u-body-item-title">紧急程度:{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) }}
|
5059c4dd
刘淇
养护员提交养护工单
|
162
|
</view>
|
5b5a4862
刘淇
按钮放大
|
163
164
165
|
<!-- <view class=" ">-->
<!-- <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
<!-- </view>-->
|
5059c4dd
刘淇
养护员提交养护工单
|
166
167
|
</view>
<view class="u-body-item u-flex">
|
4fa8cf12
刘淇
巡查员结束工单
|
168
169
170
171
|
<view class="u-body-item-title">工单状态:</view>
<view class="u-line-1 u-body-value">{{buzStatusMap[item.buzStatus] }}</view>
</view>
<view class="u-body-item u-flex">
|
5059c4dd
刘淇
养护员提交养护工单
|
172
173
174
|
<view class="u-body-item-title">提交时间:</view>
<view class="u-line-1 u-body-value">{{ timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss') }}</view>
</view>
|
7b1f488f
刘淇
封装下图片上传
|
175
|
</view>
|
5059c4dd
刘淇
养护员提交养护工单
|
176
177
178
|
</template>
</up-card>
</view>
|
7b1f488f
刘淇
封装下图片上传
|
179
180
181
182
183
184
185
186
187
|
</z-paging>
<!-- 底部新增工单按钮(仅巡查员显示) -->
<view v-if="isInspector" class="fixed-bottom-btn-wrap">
<up-button type="primary" size="large" @click="handleAddOrder">
新增工单
</up-button>
</view>
|
7a96cf50
刘淇
重新提交
|
188
189
190
191
192
193
194
195
196
197
198
199
|
<!-- 回退原因弹窗:替换为up-modal(核心修改) -->
<up-modal
:show="rejectModalShow"
title="回退原因"
:closeOnClickOverlay="false"
:showConfirmButton="true"
:showCancelButton="true"
@cancel="handleRejectModalCancel"
@confirm="confirmReject"
>
<view class="reject-modal-content">
<!-- 回退原因 必填textarea -->
|
7b1f488f
刘淇
封装下图片上传
|
200
|
<up-textarea
|
7a96cf50
刘淇
重新提交
|
201
|
v-model.trim="rejectReason"
|
7b1f488f
刘淇
封装下图片上传
|
202
|
placeholder="请输入回退原因(必填)"
|
1f1f236c
刘淇
工单详情
|
203
|
rows="6"
|
7a96cf50
刘淇
重新提交
|
204
205
206
|
:count="200"
maxlength="200"
class="reject-textarea"
|
7b1f488f
刘淇
封装下图片上传
|
207
|
/>
|
2b13ab68
刘淇
回退加上 回退图片非必传
|
208
209
210
211
|
<!-- 上传图片(选填)- 按照参考页面改造 -->
<view class="upload-wrap mt-20">
<view class="upload-title">上传图片(选填)</view>
<up-upload
|
3d474e84
刘淇
快速工单 加上业务线
|
212
|
:file-list="rejectImgs.rawImgList.value|| []"
|
2b13ab68
刘淇
回退加上 回退图片非必传
|
213
214
215
216
217
218
219
220
221
222
|
@after-read="rejectImgs.uploadImgs"
@delete="rejectImgs.deleteImg"
multiple
width="70"
height="70"
:max-count="rejectImgs.uploadConfig.maxCount"
:upload-text="rejectImgs.uploadConfig.uploadText"
:size-type="rejectImgs.uploadConfig.sizeType"
/>
</view>
|
7b1f488f
刘淇
封装下图片上传
|
223
|
</view>
|
7a96cf50
刘淇
重新提交
|
224
|
</up-modal>
|
1f1f236c
刘淇
工单详情
|
225
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
226
|
<!-- 验收弹窗 up-modal(含图片上传) -->
|
1f1f236c
刘淇
工单详情
|
227
228
229
230
231
232
|
<up-modal
:show="acceptModalShow"
title="验收"
:closeOnClickOverlay="false"
:showConfirmButton="true"
:showCancelButton="true"
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
233
|
@cancel="handleAcceptModalCancel"
|
1f1f236c
刘淇
工单详情
|
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
|
@confirm="handleAcceptModalConfirm"
>
<view class="accept-modal-content">
<!-- 第一行:单选框(通过/不通过,默认通过) -->
<view class="radio-group-wrap">
<up-radio-group v-model="acceptRadioValue">
<up-radio name="0" label="通过"></up-radio>
<up-radio name="1" label="不通过"></up-radio>
</up-radio-group>
</view>
<!-- 第二行:必填textarea,最多200字 -->
<view class="textarea-wrap mt-30">
<up-textarea
v-model.trim="acceptReason"
placeholder="请输入验收原因(必填,最多200字)"
:required="true"
maxlength="200"
rows="5"
count
/>
</view>
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
256
257
258
259
260
|
<!-- 验收图片上传(选填,参考回退弹窗样式) -->
<view class="upload-wrap mt-20">
<view class="upload-title">上传验收图片(选填)</view>
<up-upload
|
3d474e84
刘淇
快速工单 加上业务线
|
261
|
:file-list="acceptImgs.rawImgList.value || []"
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
262
263
|
@after-read="acceptImgs.uploadImgs"
@delete="acceptImgs.deleteImg"
|
e6a04285
刘淇
单图情况 宽高70*70
|
264
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
265
266
267
268
269
270
271
272
|
multiple
width="70"
height="70"
:max-count="acceptImgs.uploadConfig.maxCount"
:upload-text="acceptImgs.uploadConfig.uploadText"
:size-type="acceptImgs.uploadConfig.sizeType"
/>
</view>
|
1f1f236c
刘淇
工单详情
|
273
274
|
</view>
</up-modal>
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
275
276
277
|
<!-- 统一节点动作弹窗(工作流配置化,未配置时回退原有逻辑) -->
<unified-task-actions ref="unifiedActionsRef" @success="handleUnifiedSuccess" />
|
7b1f488f
刘淇
封装下图片上传
|
278
279
280
281
|
</view>
</template>
<script setup>
|
dacff5e3
刘淇
养护员退回
|
282
|
import { ref, computed, watch } from 'vue';
|
6bce1057
刘淇
ai 大区经理
|
283
|
import { onShow, onLoad, onUnload } from '@dcloudio/uni-app';
|
7b1f488f
刘淇
封装下图片上传
|
284
|
import { timeFormat } from '@/uni_modules/uview-plus';
|
1f1f236c
刘淇
工单详情
|
285
286
287
288
|
import {
myBuzSimplePage,
todoBuzSimplePage,
doneBuzSimplePage,
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
289
290
|
universalApproval,
getTaskActions
|
1f1f236c
刘淇
工单详情
|
291
|
} from '@/api/work-order-manage/work-order-manage'
|
e6a04285
刘淇
单图情况 宽高70*70
|
292
|
// 从用户store获取角色信息
|
7b1f488f
刘淇
封装下图片上传
|
293
|
import { useUserStore } from '@/pinia/user';
|
4fa8cf12
刘淇
巡查员结束工单
|
294
|
import { nextStepMap, buzStatusMap } from '@/common/utils/common'
|
dacff5e3
刘淇
养护员退回
|
295
296
297
|
// 引入图片上传组合式函数(与参考页面一致)
import { useUploadImgs } from '@/common/utils/useUploadImgs'
|
7b1f488f
刘淇
封装下图片上传
|
298
299
300
|
// ========== 状态管理 ==========
const userStore = useUserStore();
// 标签页切换
|
5b5a4862
刘淇
按钮放大
|
301
|
const activeTab = ref(0); //0-待办 1-已办 2-我发起的任务
|
7b1f488f
刘淇
封装下图片上传
|
302
|
const tabList = ref([
|
5059c4dd
刘淇
养护员提交养护工单
|
303
|
{name: '待办'},
|
5b5a4862
刘淇
按钮放大
|
304
|
{name: '已办'},
|
d6406a70
刘淇
快速工单 详情 照片处理
|
305
|
{name: '我发起的'}
|
7b1f488f
刘淇
封装下图片上传
|
306
307
308
309
|
]);
// 排序下拉框
const selectedSortValue = ref(1);
const sortOptions = ref([
|
5059c4dd
刘淇
养护员提交养护工单
|
310
311
312
313
|
{name: '位置', id: 1},
{name: '名称', id: 2},
{name: '描述', id: 3},
{name: '编号', id: 4},
|
7b1f488f
刘淇
封装下图片上传
|
314
315
316
317
318
319
320
321
|
]);
// 搜索
const searchValue = ref('');
// 分页
const paging = ref(null);
const orderList = ref([]);
// 角色控制(巡查员显示新增按钮)
const isInspector = computed(() => {
|
7a96cf50
刘淇
重新提交
|
322
|
// 增加可选链,避免用户信息不存在报错
|
f0ec74d6
刘淇
大区经理派单
|
323
324
325
|
// patrol_global 全域巡查员
// regional_manager 大区经理
|
c64da17b
刘淇
新的业务线
|
326
|
return ['yl_inspector', 'zxgl_inspector', 'hjws_inspector'].some(role => userStore.userInfo?.roles?.includes(role)) || false;
|
7b1f488f
刘淇
封装下图片上传
|
327
|
});
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
328
|
// 回退弹窗相关
|
7a96cf50
刘淇
重新提交
|
329
330
|
const rejectModalShow = ref(false); // 回退modal显示开关
const rejectReason = ref(''); // 回退原因
|
7a96cf50
刘淇
重新提交
|
331
|
const currentRejectItem = ref(null); // 当前回退工单
|
dacff5e3
刘淇
养护员退回
|
332
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
333
|
// 回退图片上传配置(与参考页面风格一致)
|
dacff5e3
刘淇
养护员退回
|
334
|
const rejectImgs = useUploadImgs({
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
335
|
maxCount: 3, // 最多上传3张
|
dacff5e3
刘淇
养护员退回
|
336
|
uploadText: '选择回退图片', // 自定义上传提示文字
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
337
338
339
|
sizeType: ['compressed'], // 仅上传压缩图
formRef: null, // 该弹窗无表单校验
fieldName: 'rejectImgs' // 自定义字段名
|
dacff5e3
刘淇
养护员退回
|
340
341
|
})
|
dacff5e3
刘淇
养护员退回
|
342
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
343
|
// ========== 验收弹窗相关状态(含图片上传) ==========
|
1f1f236c
刘淇
工单详情
|
344
345
346
347
|
const acceptModalShow = ref(false); // 验收弹窗显示开关
const acceptRadioValue = ref('0'); // 单选框值,默认0(通过)
const acceptReason = ref(''); // 验收原因
const currentAcceptItem = ref(null); // 当前验收的工单项
|
dacff5e3
刘淇
养护员退回
|
348
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
349
350
351
352
353
354
355
356
357
|
// 验收图片上传配置(独立实例,参考回退弹窗)
const acceptImgs = useUploadImgs({
maxCount: 3, // 最多上传3张,与回退弹窗一致
uploadText: '选择验收图片', // 自定义上传提示文字
sizeType: ['compressed'], // 仅上传压缩图,优化性能
formRef: null, // 验收弹窗无表单校验
fieldName: 'acceptImgs' // 自定义字段名,区分回退图片
})
|
b055b398
刘淇
地图导航
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
|
// 打开地图导航
const openMapNav = (item) => {
// 校验经纬度
// if (!item.lat || !item.lon) {
// uni.showToast({ title: "该工单无经纬度,无法导航", icon: "none" });
// return;
// }
// const latitude = Number(item.lat);
// const longitude = Number(item.lon);
// const addressName = item.lonLatAddress || "工单位置";
// uni.openLocation({
// latitude,
// longitude,
// name: addressName, // 终点名称
// address: addressName, // 地址描述
// scale: 16, // 地图缩放级别
// success: () => {
// // 唤起地图选择弹窗成功,用户可以选择高德/百度地图进行导航
// },
// fail: (err) => {
// console.error("打开地图失败", err);
// uni.showToast({ title: "打开地图失败", icon: "none" });
// }
// });
};
|
7b1f488f
刘淇
封装下图片上传
|
386
387
388
389
390
391
392
|
// 分页查询列表
const queryList = async (pageNo, pageSize) => {
try {
const apiParams = {
searchContent: searchValue.value.trim() || '',
pageNo,
pageSize,
|
c64da17b
刘淇
新的业务线
|
393
|
type: selectedSortValue.value // 1-位置 2-问题类型 3-情况描述 4-工单编号
|
7b1f488f
刘淇
封装下图片上传
|
394
|
};
|
7b1f488f
刘淇
封装下图片上传
|
395
|
let res;
|
5b5a4862
刘淇
按钮放大
|
396
|
// 0-待办 1-已办 2-我发起的任务
|
ff65dc6c
刘淇
快速工单 样式优化
|
397
|
if (activeTab.value == 0) {
|
7b1f488f
刘淇
封装下图片上传
|
398
|
// 待办工单
|
ff65dc6c
刘淇
快速工单 样式优化
|
399
|
res = await todoBuzSimplePage(apiParams);
|
5b5a4862
刘淇
按钮放大
|
400
|
} else if (activeTab.value == 2) {
|
2764b83e
刘淇
分配养护员
|
401
402
|
// 我发起的任务
res = await myBuzSimplePage(apiParams);
|
5059c4dd
刘淇
养护员提交养护工单
|
403
|
} else {
|
7b1f488f
刘淇
封装下图片上传
|
404
|
// 已办工单
|
ff65dc6c
刘淇
快速工单 样式优化
|
405
|
res = await doneBuzSimplePage(apiParams);
|
7b1f488f
刘淇
封装下图片上传
|
406
|
}
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
407
408
409
410
|
// 待办列表:预取各任务的统一动作配置,供底部按钮显隐使用
if (activeTab.value == 0) {
await attachConfiguredActions(res.list);
}
|
7b1f488f
刘淇
封装下图片上传
|
411
412
413
414
415
|
// 适配z-paging分页
paging.value.complete(res.list, res.total);
} catch (error) {
console.error('加载工单失败:', error);
paging.value?.complete(false);
|
5059c4dd
刘淇
养护员提交养护工单
|
416
|
uni.showToast({title: '加载失败,请重试', icon: 'none'});
|
7b1f488f
刘淇
封装下图片上传
|
417
418
|
}
};
|
dacff5e3
刘淇
养护员退回
|
419
|
|
7b1f488f
刘淇
封装下图片上传
|
420
421
|
// ========== 事件处理 ==========
// 标签页切换
|
ff65dc6c
刘淇
快速工单 样式优化
|
422
|
const handleTabChange = (item) => {
|
3ddb854c
刘淇
全域巡查员
|
423
|
orderList.value = [];
|
ff65dc6c
刘淇
快速工单 样式优化
|
424
425
|
console.log(item)
activeTab.value = item.index;
|
7b1f488f
刘淇
封装下图片上传
|
426
427
|
paging.value?.reload(); // 切换标签页刷新列表
};
|
7b1f488f
刘淇
封装下图片上传
|
428
429
430
431
432
433
|
// 排序变更
const handleSortChange = (val) => {
selectedSortValue.value = val.id;
searchValue.value = '';
paging.value?.reload(); // 排序变更刷新列表
};
|
7b1f488f
刘淇
封装下图片上传
|
434
435
436
437
438
|
// 搜索
const handleSearch = (val) => {
searchValue.value = val;
paging.value?.reload(); // 搜索刷新列表
};
|
4570c70a
刘淇
消息中心
|
439
440
441
442
443
444
445
446
447
448
|
// const isRefreshing = ref(false);
// const refreshList = () => {
// if (isRefreshing.value) return;
// isRefreshing.value = true;
// paging.value?.reload().finally(() => {
// setTimeout(() => {
// isRefreshing.value = false;
// }, 500);
// });
// };
|
7b1f488f
刘淇
封装下图片上传
|
449
450
|
// 工单详情
const handleDetail = (item) => {
|
5b5a4862
刘淇
按钮放大
|
451
|
// 0-待办 1-已办 2-我发起的任务
|
7b1f488f
刘淇
封装下图片上传
|
452
|
uni.navigateTo({
|
e6a04285
刘淇
单图情况 宽高70*70
|
453
454
455
456
457
458
459
460
461
462
|
url: `/pages-sub/problem/work-order-manage/order-detail?taskId=${item.taskId}&activeTab=${activeTab.value}&processInstanceId=${item.processInstanceId}`,
events: {
// 自定义事件名:needRefresh(与详情页保持一致)
needRefresh: () => {
console.log('详情页返回,触发工单列表刷新');
if (paging.value) {
paging.value.reload(); // 刷新z-paging列表
}
}
}
|
7b1f488f
刘淇
封装下图片上传
|
463
464
|
});
};
|
7a96cf50
刘淇
重新提交
|
465
|
|
dacff5e3
刘淇
养护员退回
|
466
|
// 生成临时key
|
7a96cf50
刘淇
重新提交
|
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
|
const generateTempKey = () => {
return 'renew_order_' + Date.now() + '_' + Math.floor(Math.random() * 10000);
};
// 待办-重新提交工单(改造后:大数据存本地,仅传唯一标识)
const handleRenew = (item) => {
// 校验工单有效性
if (!item || !item.id) {
uni.showToast({title: '工单信息异常,无法重新提交', icon: 'none'});
return;
}
// 1. 生成唯一临时标识
const tempKey = generateTempKey();
// 2. 将完整工单数据存入本地临时存储(同步存储,确保数据立即生效)
try {
uni.setStorageSync(tempKey, item);
} catch (error) {
console.error('存储工单数据失败:', error);
uni.showToast({title: '数据存储异常,无法重新提交', icon: 'none'});
return;
}
// 3. URL 仅传递「唯一标识」和「重新提交标记」(数据量极小,无长度问题)
uni.navigateTo({
url: `/pages-sub/problem/work-order-manage/add-order?isRenew=1&tempKey=${tempKey}`
});
};
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
|
// ========== 统一节点动作(工作流配置化) ==========
const unifiedActionsRef = ref(null)
/** 查询当前任务是否已配置统一动作;未配置或接口异常时返回 null,回退原有逻辑 */
const queryUnifiedActions = async (item) => {
if (!item || !item.taskId) return null
try {
const data = await getTaskActions(item.taskId)
if (data && data.configured && Array.isArray(data.actions) && data.actions.length > 0) {
return data.actions
}
} catch (e) {
console.warn('查询统一节点动作失败,回退原有逻辑', e)
}
return null
}
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
|
/** 待办列表:批量预取统一动作配置,挂在行数据上供按钮显隐复用 */
const attachConfiguredActions = async (list) => {
if (!Array.isArray(list) || list.length === 0) return
await Promise.all(list.map(async (item) => {
item.configuredActions = await queryUnifiedActions(item)
}))
}
/** 驳回类动作编码:只有配置了这些动作,才展示「回退」按钮 */
const REJECT_ACTION_CODES = ['REJECT', 'RETURN', 'RETURN_PREV']
/** 回退按钮显隐:已配置统一动作时以配置为准,未配置时沿用原有节点规则 */
const showRejectButton = (item) => {
if (Array.isArray(item?.configuredActions)) {
return item.configuredActions.some((action) => REJECT_ACTION_CODES.includes(action.code))
}
return !!nextStepMap[item.taskKey]?.backShow
}
/** 主按钮文案:已配置统一动作时取配置的动作名称,未配置时沿用原有节点规则 */
const getProcessButtonText = (item) => {
const actions = item?.configuredActions
if (Array.isArray(actions) && actions.length > 0) {
return actions[0].name || actions[0].code
}
return nextStepMap[item.taskKey]?.btnText
}
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
542
543
|
/** 待办-处理工单:已配置统一动作时走新逻辑,否则回退原有处理 */
const handleUnifiedProcess = async (item) => {
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
544
545
546
|
const actions = Array.isArray(item?.configuredActions)
? item.configuredActions
: await queryUnifiedActions(item)
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
547
548
549
550
551
552
553
554
555
|
if (actions) {
unifiedActionsRef.value?.open(item, actions)
return
}
handleProcess(item)
}
/** 待办-回退:已配置统一动作时走新逻辑,否则回退原有弹窗 */
const handleUnifiedReject = async (item) => {
|
397b30ae
王彪总
业务线 小程序不用写死,从后端接口获取
|
556
557
558
|
const actions = Array.isArray(item?.configuredActions)
? item.configuredActions
: await queryUnifiedActions(item)
|
b6e4a018
王彪总
业务线 小程序不用写死,从后端接口获取
|
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
|
if (actions) {
const rejectActions = actions.filter((action) =>
['REJECT', 'RETURN', 'RETURN_PREV'].includes(action.code)
)
if (rejectActions.length > 0) {
unifiedActionsRef.value?.open(item, rejectActions)
} else {
uni.showToast({ title: '当前节点未配置回退动作', icon: 'none' })
}
return
}
handleReject(item)
}
/** 统一动作执行成功后刷新列表 */
const handleUnifiedSuccess = () => {
paging.value?.reload()
}
|
7b1f488f
刘淇
封装下图片上传
|
578
579
|
// 待办-处理工单
const handleProcess = async (item) => {
|
1f1f236c
刘淇
工单详情
|
580
|
console.log(nextStepMap[item.taskKey].name)
|
7b1f488f
刘淇
封装下图片上传
|
581
|
try {
|
7a96cf50
刘淇
重新提交
|
582
|
if (nextStepMap[item.taskKey]?.name == '养护组长分配') {
|
2764b83e
刘淇
分配养护员
|
583
|
uni.navigateTo({
|
3d474e84
刘淇
快速工单 加上业务线
|
584
|
url: `/pages-sub/problem/work-order-manage/distribution-order?taskId=${item.taskId}&orderNo=${item.orderNo}&id=${item.id}&busiLine=${item.busiLine}`
|
2764b83e
刘淇
分配养护员
|
585
586
|
})
}
|
7a96cf50
刘淇
重新提交
|
587
|
if (nextStepMap[item.taskKey]?.name == '养护员待实施') {
|
dacff5e3
刘淇
养护员退回
|
588
589
590
591
592
593
594
595
596
597
598
599
600
601
|
// ① 生成唯一临时key(和重新提交工单逻辑一致,避免冲突)
const tempKey = `maintain_order_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
// ② 存储完整item到本地缓存(同步存储,确保立即生效)
try {
uni.setStorageSync(tempKey, item);
} catch (error) {
console.error('存储养护工单数据失败:', error);
uni.showToast({title: '数据存储异常,无法跳转', icon: 'none'});
return;
}
// ③ URL仅传递临时key(可选:携带必要简单参数,方便目标页面快速使用)
|
2764b83e
刘淇
分配养护员
|
602
|
uni.navigateTo({
|
dacff5e3
刘淇
养护员退回
|
603
|
url: `/pages-sub/problem/work-order-manage/add-maintain-order?tempKey=${tempKey}`
|
2764b83e
刘淇
分配养护员
|
604
|
})
|
7b1f488f
刘淇
封装下图片上传
|
605
|
}
|
1f1f236c
刘淇
工单详情
|
606
|
// 养护组长验收 - 打开弹窗
|
7a96cf50
刘淇
重新提交
|
607
|
if (nextStepMap[item.taskKey]?.name == '养护组长验收') {
|
1f1f236c
刘淇
工单详情
|
608
609
610
611
612
|
currentAcceptItem.value = item; // 存储当前工单信息
acceptReason.value = ''; // 清空上次的验收原因
acceptRadioValue.value = '0'; // 重置默认选中“通过”
acceptModalShow.value = true; // 显示验收弹窗
}
|
1f1f236c
刘淇
工单详情
|
613
|
// 巡查员验收 - 打开弹窗
|
7a96cf50
刘淇
重新提交
|
614
|
if (nextStepMap[item.taskKey]?.name == '巡查员验收') {
|
1f1f236c
刘淇
工单详情
|
615
616
617
618
619
620
|
currentAcceptItem.value = item; // 存储当前工单信息
acceptReason.value = ''; // 清空上次的验收原因
acceptRadioValue.value = '0'; // 重置默认选中“通过”
acceptModalShow.value = true; // 显示验收弹窗
}
|
7a96cf50
刘淇
重新提交
|
621
622
623
|
// 发起人确认
if (nextStepMap[item.taskKey]?.name == '发起人确认') {
console.log(item)
|
7a96cf50
刘淇
重新提交
|
624
625
626
627
628
629
630
|
uni.showModal({
title: "结束工单",
content: "请确定是否结束工单?",
success: async function (res) {
if (res.confirm) {
// 构建请求参数
const requestData = {
|
dacff5e3
刘淇
养护员退回
|
631
|
"returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL
|
7a96cf50
刘淇
重新提交
|
632
|
"workerDataId": item.id,
|
4fa8cf12
刘淇
巡查员结束工单
|
633
|
"taskKey":'ylInspectorStart',
|
7a96cf50
刘淇
重新提交
|
634
|
"taskId": item.taskId,
|
4fa8cf12
刘淇
巡查员结束工单
|
635
|
"operateType": 200,
|
7a96cf50
刘淇
重新提交
|
636
637
638
639
640
641
642
643
644
645
646
647
648
649
|
"agree": 1,
"reason": '结束工单'
};
// 调用回退工单接口
const res = await universalApproval(requestData);
uni.showToast({title: '结束成功', icon: 'success', duration: 1000});
rejectModalShow.value = false;
paging.value?.reload(); // 刷新列表
} else if (res.cancel) {
console.log("用户点击取消");
}
},
});
}
|
7b1f488f
刘淇
封装下图片上传
|
650
651
|
} catch (error) {
console.error('处理工单失败:', error);
|
4570c70a
刘淇
消息中心
|
652
|
uni.showToast({title: error.msg||'处理失败,请重试', icon: 'none'});
|
7b1f488f
刘淇
封装下图片上传
|
653
654
|
}
};
|
dacff5e3
刘淇
养护员退回
|
655
|
|
7a96cf50
刘淇
重新提交
|
656
|
// 待办-回退工单(打开回退modal)
|
7b1f488f
刘淇
封装下图片上传
|
657
|
const handleReject = (item) => {
|
7a96cf50
刘淇
重新提交
|
658
659
660
661
662
663
|
console.log('123213')
// 校验工单有效性
if (!item || !item.id) {
uni.showToast({title: '工单信息异常,无法回退', icon: 'none'});
return;
}
|
7b1f488f
刘淇
封装下图片上传
|
664
|
currentRejectItem.value = item;
|
7a96cf50
刘淇
重新提交
|
665
|
rejectReason.value = ''; // 清空上次输入
|
dacff5e3
刘淇
养护员退回
|
666
|
rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法
|
7a96cf50
刘淇
重新提交
|
667
668
|
rejectModalShow.value = true; // 显示回退modal
};
|
dacff5e3
刘淇
养护员退回
|
669
|
|
7a96cf50
刘淇
重新提交
|
670
671
672
|
// 回退modal - 取消按钮
const handleRejectModalCancel = () => {
rejectModalShow.value = false;
|
7b1f488f
刘淇
封装下图片上传
|
673
|
rejectReason.value = '';
|
dacff5e3
刘淇
养护员退回
|
674
|
rejectImgs.clearImgs(); // 改造后:使用组合式函数的清空方法
|
7b1f488f
刘淇
封装下图片上传
|
675
|
};
|
dacff5e3
刘淇
养护员退回
|
676
|
|
7b1f488f
刘淇
封装下图片上传
|
677
678
|
// 确认回退工单
const confirmReject = async () => {
|
7a96cf50
刘淇
重新提交
|
679
680
681
|
// 严格校验回退原因(去除首尾空格)
const rejectReasonTrim = rejectReason.value.trim();
if (!rejectReasonTrim) {
|
2f1e3176
刘淇
图片参数处理
|
682
|
uni.showToast({title: '请填写回退原因', icon: 'none', duration: 1000});
|
7a96cf50
刘淇
重新提交
|
683
684
685
686
|
return;
}
// 校验当前工单有效性
if (!currentRejectItem.value || !currentRejectItem.value.id) {
|
2f1e3176
刘淇
图片参数处理
|
687
|
uni.showToast({title: '工单信息异常,无法提交', icon: 'none', duration:1000});
|
7a96cf50
刘淇
重新提交
|
688
|
rejectModalShow.value = false;
|
7b1f488f
刘淇
封装下图片上传
|
689
690
|
return;
}
|
7b1f488f
刘淇
封装下图片上传
|
691
|
try {
|
7a96cf50
刘淇
重新提交
|
692
693
|
// 显示加载中,防止重复提交
uni.showLoading({title: '提交中...', mask: true});
|
2e2b95d3
刘淇
修改接口路径 和命名
|
694
|
console.log( currentRejectItem.value.roadId)
|
7a96cf50
刘淇
重新提交
|
695
696
|
// 构建请求参数
const requestData = {
|
dacff5e3
刘淇
养护员退回
|
697
|
"returnImgs": rejectImgs.getSuccessImgUrls(), // 改造后:获取上传成功的图片URL数组
|
7a96cf50
刘淇
重新提交
|
698
699
700
701
702
|
"workerDataId": currentRejectItem.value.id,
"taskKey": currentRejectItem.value.taskKey,
"taskId": currentRejectItem.value.taskId,
"operateType": nextStepMap[currentRejectItem.value.taskKey].operateTypeNoPass,
"agree": 1,
|
2e2b95d3
刘淇
修改接口路径 和命名
|
703
704
|
"reason": rejectReasonTrim,
"roadId": currentRejectItem.value.roadId, // 给督察员回退的 要加上
|
7a96cf50
刘淇
重新提交
|
705
|
};
|
7b1f488f
刘淇
封装下图片上传
|
706
|
// 调用回退工单接口
|
7a96cf50
刘淇
重新提交
|
707
708
709
|
const res = await universalApproval(requestData);
uni.showToast({title: '回退成功', icon: 'success', duration: 1000});
rejectModalShow.value = false;
|
7b1f488f
刘淇
封装下图片上传
|
710
711
712
|
paging.value?.reload(); // 刷新列表
} catch (error) {
console.error('回退工单失败:', error);
|
4570c70a
刘淇
消息中心
|
713
|
uni.showToast({title: error.msg||'回退失败', icon: 'none', duration: 1000});
|
7a96cf50
刘淇
重新提交
|
714
715
716
|
} finally {
// 隐藏加载中
uni.hideLoading();
|
7b1f488f
刘淇
封装下图片上传
|
717
718
|
}
};
|
dacff5e3
刘淇
养护员退回
|
719
|
|
7b1f488f
刘淇
封装下图片上传
|
720
721
722
|
// 新增工单
const handleAddOrder = () => {
uni.navigateTo({
|
d433e7f6
刘淇
工单
|
723
|
url: '/pages-sub/problem/work-order-manage/add-order'
|
7b1f488f
刘淇
封装下图片上传
|
724
725
|
});
};
|
dacff5e3
刘淇
养护员退回
|
726
|
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
727
728
729
730
731
732
733
734
735
|
// 验收弹窗 - 取消按钮(清空状态)
const handleAcceptModalCancel = () => {
acceptModalShow.value = false;
acceptReason.value = ''; // 清空验收原因
acceptRadioValue.value = '0'; // 重置单选框为“通过”
acceptImgs.clearImgs(); // 清空验收图片
};
// 验收弹窗 - 确定按钮(含returnImgs传参)
|
1f1f236c
刘淇
工单详情
|
736
737
|
const handleAcceptModalConfirm = async () => {
// 1. 校验验收原因是否为空
|
5b5a4862
刘淇
按钮放大
|
738
|
if (acceptRadioValue.value == 1 && !acceptReason.value.trim()) {
|
2f1e3176
刘淇
图片参数处理
|
739
|
uni.showToast({title: '请填写验收原因', icon: 'none', duration: 1000});
|
1f1f236c
刘淇
工单详情
|
740
741
|
return;
}
|
7a96cf50
刘淇
重新提交
|
742
|
// 2. 校验验收原因长度
|
1f1f236c
刘淇
工单详情
|
743
|
if (acceptReason.value.length > 200) {
|
2f1e3176
刘淇
图片参数处理
|
744
|
uni.showToast({title: '验收原因最多200字', icon: 'none', duration: 1000});
|
1f1f236c
刘淇
工单详情
|
745
746
747
|
return;
}
try {
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
748
|
// 3. 构建请求参数(含returnImgs)
|
1f1f236c
刘淇
工单详情
|
749
750
|
console.log(currentAcceptItem.value)
let postData = {}
|
7a96cf50
刘淇
重新提交
|
751
|
if (currentAcceptItem.value?.taskKey == 'ylTeamLeaderConfirm') { // 养护组长验收
|
1f1f236c
刘淇
工单详情
|
752
|
postData = {
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
753
754
|
"returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组
"taskKey": currentAcceptItem.value.taskKey,
|
dacff5e3
刘淇
养护员退回
|
755
|
"workerDataId": currentAcceptItem.value.id,
|
1f1f236c
刘淇
工单详情
|
756
|
"taskId": currentAcceptItem.value.taskId,
|
4fa8cf12
刘淇
巡查员结束工单
|
757
|
"operateType": acceptRadioValue.value == 0 ? nextStepMap[currentAcceptItem.value.taskKey].operateTypePass : nextStepMap[currentAcceptItem.value.taskKey].operateTypeNoPass,
|
1f1f236c
刘淇
工单详情
|
758
759
760
|
"reason": acceptReason.value.trim()
}
}
|
7a96cf50
刘淇
重新提交
|
761
|
if (currentAcceptItem.value?.taskKey == 'ylInspector') { // 巡查员验收
|
1f1f236c
刘淇
工单详情
|
762
|
postData = {
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
763
764
|
"returnImgs": acceptImgs.getSuccessImgUrls(), // 验收图片URL数组
"taskKey": currentAcceptItem.value.taskKey,
|
1f1f236c
刘淇
工单详情
|
765
|
"taskId": currentAcceptItem.value.taskId,
|
dacff5e3
刘淇
养护员退回
|
766
|
"workerDataId": currentAcceptItem.value.id,
|
4fa8cf12
刘淇
巡查员结束工单
|
767
|
"operateType": acceptRadioValue.value == 0 ? nextStepMap[currentAcceptItem.value.taskKey].operateTypePass : nextStepMap[currentAcceptItem.value.taskKey].operateTypeNoPass,
|
1f1f236c
刘淇
工单详情
|
768
|
"reason": acceptReason.value.trim(),
|
7a96cf50
刘淇
重新提交
|
769
|
"agree": acceptRadioValue.value
|
1f1f236c
刘淇
工单详情
|
770
771
|
}
}
|
1f1f236c
刘淇
工单详情
|
772
773
|
const acceptRes = await universalApproval(postData);
// 4. 操作成功处理
|
2f1e3176
刘淇
图片参数处理
|
774
|
uni.showToast({title: '提交成功', icon: 'success', duration: 1000});
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
775
|
handleAcceptModalCancel(); // 清空状态
|
1f1f236c
刘淇
工单详情
|
776
777
778
|
paging.value?.reload(); // 刷新工单列表
} catch (error) {
// 5. 操作失败处理
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
779
|
console.error('验收失败:', error);
|
4570c70a
刘淇
消息中心
|
780
|
uni.showToast({title: error.msg||'验收提交失败,请重试', icon: 'none', duration: 1000});
|
1f1f236c
刘淇
工单详情
|
781
782
|
}
};
|
dacff5e3
刘淇
养护员退回
|
783
|
|
7b1f488f
刘淇
封装下图片上传
|
784
|
// 页面初始化
|
e6a04285
刘淇
单图情况 宽高70*70
|
785
|
onLoad(() => {
|
7b1f488f
刘淇
封装下图片上传
|
786
787
|
// 初始化加载列表
paging.value?.reload();
|
6bce1057
刘淇
ai 大区经理
|
788
789
790
791
792
793
794
795
796
|
uni.$on('refreshWorkOrderList', () => {
console.log('监听到工单刷新事件,执行列表刷新');
if (paging.value) {
paging.value.reload(); // 刷新z-paging列表
}
});
});
onUnload(() => {
uni.$off('refreshWorkOrderList');
|
7b1f488f
刘淇
封装下图片上传
|
797
798
799
800
801
802
|
});
</script>
<style scoped lang="scss">
.page-container {
min-height: 100vh;
|
7a96cf50
刘淇
重新提交
|
803
|
background-color: #fafafa;
|
7b1f488f
刘淇
封装下图片上传
|
804
805
806
807
808
|
}
// 顶部固定区域
.header-wrap {
background-color: #fff;
|
7b1f488f
刘淇
封装下图片上传
|
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
|
}
// 搜索栏样式
.search-header {
display: flex;
align-items: center;
padding: 20rpx;
box-sizing: border-box;
.select-wrap {
width: 120rpx;
margin-right: 20rpx;
:deep(.u-select) {
width: 100%;
font-size: 28rpx;
}
:deep(.u-input__placeholder) {
font-size: 28rpx;
}
}
.search-input-wrap {
flex: 1;
}
}
|
7a96cf50
刘淇
重新提交
|
837
838
839
840
841
842
843
|
// 工单卡片样式
.order-card {
margin: 0 20rpx 20rpx;
background: #fff;
border-radius: 12rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
|
5b5a4862
刘淇
按钮放大
|
844
|
.u-body-item-btn-wrap :deep(.u-button--large){
|
6bce1057
刘淇
ai 大区经理
|
845
|
|
5b5a4862
刘淇
按钮放大
|
846
847
|
height: 28px;
}
|
7a96cf50
刘淇
重新提交
|
848
|
|
7a96cf50
刘淇
重新提交
|
849
|
|
7a96cf50
刘淇
重新提交
|
850
|
|
7a96cf50
刘淇
重新提交
|
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
|
// 回退modal样式
.reject-modal-content {
width: 100%;
box-sizing: border-box;
padding: 10rpx 0;
}
.textarea-label {
font-size: 28rpx;
color: #333;
margin-bottom: 10rpx;
.required-mark {
color: #f56c6c;
margin-left: 4rpx;
}
}
|
7a96cf50
刘淇
重新提交
|
869
870
871
872
873
874
875
876
877
878
879
880
881
882
|
.upload-wrap {
margin-top: 20rpx;
.upload-title {
font-size: 28rpx;
color: #333;
margin-bottom: 10rpx;
}
}
.mt-20 {
margin-top: 20rpx;
}
|
dfa5aac5
刘淇
验收加上 验收图片非必传
|
883
884
885
886
|
.mt-30 {
margin-top: 30rpx;
}
|
7a96cf50
刘淇
重新提交
|
887
|
// 养护组长验收弹窗样式
|
1f1f236c
刘淇
工单详情
|
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
|
.accept-modal-content {
width: 100%;
box-sizing: border-box;
}
.radio-group-wrap {
display: flex;
align-items: center;
gap: 40rpx; // 单选框之间的间距
font-size: 28rpx;
margin-bottom: 20rpx;
}
.textarea-wrap {
width: 100%;
|
7a96cf50
刘淇
重新提交
|
903
|
margin-top: 30rpx;
|
1f1f236c
刘淇
工单详情
|
904
|
}
|
7b1f488f
刘淇
封装下图片上传
|
905
|
|
1f1f236c
刘淇
工单详情
|
906
907
908
909
910
911
|
.modal-btn-wrap {
display: flex;
align-items: center;
justify-content: flex-end;
padding-right: 10rpx;
}
|
7b1f488f
刘淇
封装下图片上传
|
912
|
</style>
|