3d474e84
刘淇
快速工单 加上业务线
|
1
2
3
4
5
|
<template>
<view class="page-container">
<!-- 顶部固定区域 -->
<up-sticky>
<view class="header-wrap">
|
3d474e84
刘淇
快速工单 加上业务线
|
6
7
8
9
10
11
12
13
|
<up-tabs
v-model="activeTab"
:list="tabList"
active-color="#1989fa"
inactive-color="#666"
font-size="30rpx"
@click="handleTabChange"
/>
|
3d474e84
刘淇
快速工单 加上业务线
|
14
15
|
<!-- 第二行:下拉框 + 搜索框 -->
<view class="search-header">
|
3d474e84
刘淇
快速工单 加上业务线
|
16
17
18
19
20
21
22
23
24
25
|
<view class="select-wrap common-text-color">
<up-select
v-model:current="selectedSortValue"
:options="sortOptions"
:showOptionsLabel="true"
@select="handleSortChange"
border="surround"
:style="{ flex: 1 }"
/>
</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<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
|
8ddc6f6e
刘淇
登录 修改样式
|
45
|
ref="pagingRef"
|
3d474e84
刘淇
快速工单 加上业务线
|
46
47
48
|
v-model="orderList"
@query="queryList"
:auto-show-system-loading="true"
|
3d474e84
刘淇
快速工单 加上业务线
|
49
50
|
>
<template #empty>
|
8ddc6f6e
刘淇
登录 修改样式
|
51
|
<empty-view />
|
3d474e84
刘淇
快速工单 加上业务线
|
52
53
|
</template>
|
12e66ec8
刘淇
新增树
|
54
|
<view class="common-card-list">
|
3d474e84
刘淇
快速工单 加上业务线
|
55
|
<up-card
|
3d474e84
刘淇
快速工单 加上业务线
|
56
57
58
|
:border="false"
:foot-border-top="false"
v-for="(item, index) in orderList"
|
12e66ec8
刘淇
新增树
|
59
|
:key="item.id || index"
|
3d474e84
刘淇
快速工单 加上业务线
|
60
61
62
63
64
|
:show-head="false"
class="order-card"
>
<template #body>
<view class="card-body">
|
5b5a4862
刘淇
按钮放大
|
65
66
67
68
69
70
71
72
|
<!-- <view v-if="activeTab !== 0" class="ml-10">-->
<!-- <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
<!-- </view>-->
<view class="common-custom-btn " v-if="activeTab !== 0" style="--btn-top: 130px;" @click="handleDetail(item)">
工单详情
</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<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>
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单位置:</view>
<view class="u-line-1 u-body-value">{{ item.lonLatAddress || '-' }}</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.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>
|
5b5a4862
刘淇
按钮放大
|
89
|
|
12e66ec8
刘淇
新增树
|
90
91
92
93
94
95
|
<view class="u-body-item u-flex common-justify-between common-item-center">
<view class="u-body-item-title">紧急程度:{{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) || '-' }}</view>
<!-- <view class="u-line-1 u-body-value flex-1 text-right">-->
<!-- {{ uni.$dict.getDictLabel('workorder_pressing_type', item.pressingType) || '-' }}-->
<!-- </view>-->
<!-- 只有 我发起的(1)、已办(2) 显示该行的详情按钮 -->
|
5b5a4862
刘淇
按钮放大
|
96
97
98
|
<!-- <view v-if="activeTab !== 0" class="ml-10">-->
<!-- <up-button type="primary" size="mini" @click="handleDetail(item)">工单详情</up-button>-->
<!-- </view>-->
|
3d474e84
刘淇
快速工单 加上业务线
|
99
100
101
|
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">工单状态:</view>
|
12e66ec8
刘淇
新增树
|
102
|
<view class="u-line-1 u-body-value">{{ buzStatusMap[item.buzStatus] || '-' }}</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
103
104
105
|
</view>
<view class="u-body-item u-flex">
<view class="u-body-item-title">提交时间:</view>
|
12e66ec8
刘淇
新增树
|
106
|
<view class="u-line-1 u-body-value">{{ item.createTime ? timeFormat(item.createTime, 'yyyy-mm-dd hh:MM:ss') : '-' }}</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
107
|
</view>
|
12e66ec8
刘淇
新增树
|
108
109
|
<!-- 待办工单(0) 保留原来的操作按钮区 不变 -->
|
5b5a4862
刘淇
按钮放大
|
110
111
112
113
114
|
<view v-if="activeTab === 0" class="u-body-item u-body-item-btn-wrap u-flex common-justify-between common-item-center mt-20">
<up-button type="warning" size="large" @click="handleReject(item)" v-show="nextStepMap[item.taskKey].backShow">回退</up-button>
<up-button type="success" size="large" @click="handleRenew(item)" v-show="nextStepMap[item.taskKey].renewShow">重新提交</up-button>
<up-button type="primary" size="large" @click="handleProcess(item)">{{ nextStepMap[item.taskKey].btnText }}</up-button>
<up-button type="info" size="large" @click="handleDetail(item)">详情</up-button>
|
3d474e84
刘淇
快速工单 加上业务线
|
115
|
</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
116
|
|
12e66ec8
刘淇
新增树
|
117
|
<!-- 已删除:原来单独的【我发起的/已办】按钮区,不需要了 -->
|
3d474e84
刘淇
快速工单 加上业务线
|
118
119
120
121
122
123
|
</view>
</template>
</up-card>
</view>
</z-paging>
|
8ddc6f6e
刘淇
登录 修改样式
|
124
|
<!-- 底部新增工单按钮 -->
|
6e9f0396
刘淇
全域督察员
|
125
|
<view class="fixed-bottom-btn-wrap" v-if="isAi">
|
8ddc6f6e
刘淇
登录 修改样式
|
126
|
<up-button type="primary" size="large" @click="handleAddOrder">新增工单</up-button>
|
3d474e84
刘淇
快速工单 加上业务线
|
127
128
|
</view>
|
8ddc6f6e
刘淇
登录 修改样式
|
129
|
<!-- 回退原因弹窗 -->
|
3d474e84
刘淇
快速工单 加上业务线
|
130
131
132
133
134
135
136
137
138
139
|
<up-modal
:show="rejectModalShow"
title="回退原因"
:closeOnClickOverlay="false"
:showConfirmButton="true"
:showCancelButton="true"
@cancel="handleRejectModalCancel"
@confirm="confirmReject"
>
<view class="reject-modal-content">
|
3d474e84
刘淇
快速工单 加上业务线
|
140
141
142
143
144
145
146
147
|
<up-textarea
v-model.trim="rejectReason"
placeholder="请输入回退原因(必填)"
rows="6"
:count="200"
maxlength="200"
class="reject-textarea"
/>
|
3d474e84
刘淇
快速工单 加上业务线
|
148
149
150
|
<view class="upload-wrap mt-20">
<view class="upload-title">上传图片(选填)</view>
<up-upload
|
8ddc6f6e
刘淇
登录 修改样式
|
151
|
:file-list="rejectImgs.rawImgList.value || []"
|
3d474e84
刘淇
快速工单 加上业务线
|
152
153
154
155
156
157
158
159
160
161
162
163
164
|
@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>
</view>
</up-modal>
|
8ddc6f6e
刘淇
登录 修改样式
|
165
|
<!-- 验收弹窗 -->
|
3d474e84
刘淇
快速工单 加上业务线
|
166
167
168
169
170
171
172
173
174
175
|
<up-modal
:show="acceptModalShow"
title="验收"
:closeOnClickOverlay="false"
:showConfirmButton="true"
:showCancelButton="true"
@cancel="handleAcceptModalCancel"
@confirm="handleAcceptModalConfirm"
>
<view class="accept-modal-content">
|
3d474e84
刘淇
快速工单 加上业务线
|
176
177
178
179
180
181
|
<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>
|
3d474e84
刘淇
快速工单 加上业务线
|
182
183
184
185
186
187
188
189
190
191
|
<view class="textarea-wrap mt-30">
<up-textarea
v-model.trim="acceptReason"
placeholder="请输入验收原因(必填,最多200字)"
:required="true"
maxlength="200"
rows="5"
count
/>
</view>
|
3d474e84
刘淇
快速工单 加上业务线
|
192
193
194
195
196
197
|
<view class="upload-wrap mt-20">
<view class="upload-title">上传验收图片(选填)</view>
<up-upload
:file-list="acceptImgs.rawImgList.value || []"
@after-read="acceptImgs.uploadImgs"
@delete="acceptImgs.deleteImg"
|
3d474e84
刘淇
快速工单 加上业务线
|
198
199
200
201
202
203
204
205
206
207
208
|
multiple
width="70"
height="70"
:max-count="acceptImgs.uploadConfig.maxCount"
:upload-text="acceptImgs.uploadConfig.uploadText"
:size-type="acceptImgs.uploadConfig.sizeType"
/>
</view>
</view>
</up-modal>
</view>
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
209
210
|
</template>
|
3d474e84
刘淇
快速工单 加上业务线
|
211
|
<script setup>
|
6e9f0396
刘淇
全域督察员
|
212
|
import { ref, computed } from 'vue';
|
3d474e84
刘淇
快速工单 加上业务线
|
213
214
215
216
217
218
|
import { onShow, onLoad } from '@dcloudio/uni-app';
import { timeFormat } from '@/uni_modules/uview-plus';
import {
myBuzSimplePage,
todoBuzSimplePage,
doneBuzSimplePage,
|
2e2b95d3
刘淇
修改接口路径 和命名
|
219
220
221
222
|
qyUniversalApproval,
daquUniversalApproval,
dcyUniversalApproval
} from '@/api/regional-order-manage/regional-order-manage'
|
3d474e84
刘淇
快速工单 加上业务线
|
223
224
|
import { useUserStore } from '@/pinia/user';
import { nextStepMap, buzStatusMap } from '@/common/utils/common'
|
3d474e84
刘淇
快速工单 加上业务线
|
225
|
import { useUploadImgs } from '@/common/utils/useUploadImgs'
|
8ddc6f6e
刘淇
登录 修改样式
|
226
227
|
// ========== 全局实例 & 常量 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
228
|
const userStore = useUserStore();
|
8ddc6f6e
刘淇
登录 修改样式
|
229
230
231
232
|
const USER_ROLES = userStore.userInfo?.roles || [];
// ========== 基础状态 (按模块分组,语义化更强) ==========
// tab切换
|
5b5a4862
刘淇
按钮放大
|
233
234
|
const activeTab = ref(0); // 0-待办 1-已办 2-我发起的任务
const tabList = [{name: '待办'}, {name: '已办'}, {name: '我发起的任务'}];
|
8ddc6f6e
刘淇
登录 修改样式
|
235
|
// 排序与搜索
|
3d474e84
刘淇
快速工单 加上业务线
|
236
237
|
const selectedSortValue = ref(1);
const sortOptions = ref([
|
8ddc6f6e
刘淇
登录 修改样式
|
238
|
{name: '位置', id: 1}, {name: '名称', id: 2}, {name: '描述', id: 3}, {name: '编号', id: 4},
|
3d474e84
刘淇
快速工单 加上业务线
|
239
|
]);
|
3d474e84
刘淇
快速工单 加上业务线
|
240
|
const searchValue = ref('');
|
8ddc6f6e
刘淇
登录 修改样式
|
241
242
|
// 分页相关
const pagingRef = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
243
|
const orderList = ref([]);
|
8ddc6f6e
刘淇
登录 修改样式
|
244
|
|
12e66ec8
刘淇
新增树
|
245
|
// ========== 角色权限计算属性 ==========
|
6e9f0396
刘淇
全域督察员
|
246
|
const isAi = computed(() => {
|
12e66ec8
刘淇
新增树
|
247
|
const roles = USER_ROLES || [];
|
8ddc6f6e
刘淇
登录 修改样式
|
248
|
// AI工单派发人员 不显示新增按钮,其他角色显示
|
12e66ec8
刘淇
新增树
|
249
|
return !roles.includes('AI_dispatcher');
|
3d474e84
刘淇
快速工单 加上业务线
|
250
|
});
|
8ddc6f6e
刘淇
登录 修改样式
|
251
252
253
254
255
|
// ========== 回退弹窗相关 ==========
const rejectModalShow = ref(false);
const rejectReason = ref('');
const currentRejectItem = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
256
|
const rejectImgs = useUploadImgs({
|
8ddc6f6e
刘淇
登录 修改样式
|
257
|
maxCount: 3, uploadText: '选择回退图片', sizeType: ['compressed'], formRef: null, fieldName: 'rejectImgs'
|
3d474e84
刘淇
快速工单 加上业务线
|
258
|
})
|
8ddc6f6e
刘淇
登录 修改样式
|
259
260
261
262
263
264
|
// ========== 验收弹窗相关 ==========
const acceptModalShow = ref(false);
const acceptRadioValue = ref('0'); // 默认通过
const acceptReason = ref('');
const currentAcceptItem = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
265
|
const acceptImgs = useUploadImgs({
|
8ddc6f6e
刘淇
登录 修改样式
|
266
|
maxCount: 3, uploadText: '选择验收图片', sizeType: ['compressed'], formRef: null, fieldName: 'acceptImgs'
|
3d474e84
刘淇
快速工单 加上业务线
|
267
|
})
|
8ddc6f6e
刘淇
登录 修改样式
|
268
269
270
|
// ========== 公共封装方法 (核心优化:消灭重复代码) ==========
/**
|
12e66ec8
刘淇
新增树
|
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
* 统一提示方法
*/
const showToast = (title, icon = 'none', duration = 2000) => {
uni.showToast({ title, icon, duration });
};
/**
* z-paging 统一操作,处理空指针
*/
const pagingHandle = (method, ...args) => {
const paging = pagingRef.value;
if (paging && typeof paging[method] === 'function') {
paging[method](...args);
}
};
/**
|
8ddc6f6e
刘淇
登录 修改样式
|
288
|
* 生成统一的临时存储key
|
8ddc6f6e
刘淇
登录 修改样式
|
289
290
291
292
293
294
295
|
*/
const generateTempKey = (prefix = 'order') => {
return `${prefix}_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
};
/**
* 存储工单数据到本地缓存
|
8ddc6f6e
刘淇
登录 修改样式
|
296
297
298
299
300
301
302
303
304
|
*/
const setOrderStorage = (item, prefix) => {
if (!item?.id) return null;
const tempKey = generateTempKey(prefix);
try {
uni.setStorageSync(tempKey, item);
return tempKey;
} catch (error) {
console.error('存储工单数据失败:', error);
|
12e66ec8
刘淇
新增树
|
305
|
showToast('数据存储异常,请重试');
|
8ddc6f6e
刘淇
登录 修改样式
|
306
307
308
309
310
311
|
return null;
}
};
/**
* 获取分页请求公共参数
|
8ddc6f6e
刘淇
登录 修改样式
|
312
313
314
315
316
317
318
319
320
321
322
323
|
*/
const getQueryParams = (pageNo, pageSize) => {
return {
searchContent: searchValue.value.trim() || '',
pageNo,
pageSize,
type: selectedSortValue.value
};
};
/**
* 统一调用审批接口
|
8ddc6f6e
刘淇
登录 修改样式
|
324
325
326
327
|
*/
const callApprovalApi = async (params, taskKey) => {
if (taskKey === 'shRegionManager') return await dcyUniversalApproval(params);
if (taskKey === 'regionManager') return await qyUniversalApproval(params);
|
8ddc6f6e
刘淇
登录 修改样式
|
328
329
330
|
if (USER_ROLES.includes('regional_manager')) return await daquUniversalApproval(params);
if (USER_ROLES.includes('Inspector_global')) return await dcyUniversalApproval(params);
if (USER_ROLES.includes('patrol_global')) return await qyUniversalApproval(params);
|
12e66ec8
刘淇
新增树
|
331
|
throw new Error('未匹配到对应的审批接口,请检查角色或工单taskKey');
|
8ddc6f6e
刘淇
登录 修改样式
|
332
333
334
|
};
/**
|
12e66ec8
刘淇
新增树
|
335
|
* 统一跳转工单页面 (支持携带回调事件)
|
8ddc6f6e
刘淇
登录 修改样式
|
336
|
*/
|
12e66ec8
刘淇
新增树
|
337
338
339
340
341
342
343
344
|
const navToOrderPage = (path, query = {}, events = {}) => {
const queryStr = Object.keys(query).map(k => `${k}=${encodeURIComponent(query[k])}`).join('&');
const url = `${path}${queryStr ? '?' + queryStr : ''}`;
if(Object.keys(events).length) {
uni.navigateTo({ url, events });
} else {
uni.redirectTo({ url });
}
|
8ddc6f6e
刘淇
登录 修改样式
|
345
346
347
|
};
/**
|
12e66ec8
刘淇
新增树
|
348
|
* 刷新列表
|
8ddc6f6e
刘淇
登录 修改样式
|
349
|
*/
|
12e66ec8
刘淇
新增树
|
350
|
const refreshOrderList = () => pagingHandle('reload');
|
8ddc6f6e
刘淇
登录 修改样式
|
351
352
|
// ========== 业务核心方法 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
353
354
355
|
// 分页查询列表
const queryList = async (pageNo, pageSize) => {
try {
|
8ddc6f6e
刘淇
登录 修改样式
|
356
|
const params = getQueryParams(pageNo, pageSize);
|
3d474e84
刘淇
快速工单 加上业务线
|
357
|
let res;
|
5b5a4862
刘淇
按钮放大
|
358
|
// 0-待办 1-已办 2-我发起的任务
|
8ddc6f6e
刘淇
登录 修改样式
|
359
|
if (activeTab.value === 0) res = await todoBuzSimplePage(params);
|
5b5a4862
刘淇
按钮放大
|
360
|
else if (activeTab.value === 2) res = await myBuzSimplePage(params);
|
8ddc6f6e
刘淇
登录 修改样式
|
361
|
else res = await doneBuzSimplePage(params);
|
12e66ec8
刘淇
新增树
|
362
|
pagingHandle('complete', res?.list || [], res?.total || 0);
|
3d474e84
刘淇
快速工单 加上业务线
|
363
364
|
} catch (error) {
console.error('加载工单失败:', error);
|
12e66ec8
刘淇
新增树
|
365
366
|
pagingHandle('complete', false);
showToast('加载失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
367
368
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
369
|
|
3d474e84
刘淇
快速工单 加上业务线
|
370
371
|
// 标签页切换
const handleTabChange = (item) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
372
|
activeTab.value = item.index;
|
8ddc6f6e
刘淇
登录 修改样式
|
373
374
|
orderList.value = [];
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
375
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
376
|
|
3d474e84
刘淇
快速工单 加上业务线
|
377
378
379
380
|
// 排序变更
const handleSortChange = (val) => {
selectedSortValue.value = val.id;
searchValue.value = '';
|
8ddc6f6e
刘淇
登录 修改样式
|
381
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
382
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
383
|
|
3d474e84
刘淇
快速工单 加上业务线
|
384
385
386
|
// 搜索
const handleSearch = (val) => {
searchValue.value = val;
|
8ddc6f6e
刘淇
登录 修改样式
|
387
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
388
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
389
|
|
3d474e84
刘淇
快速工单 加上业务线
|
390
391
|
// 工单详情
const handleDetail = (item) => {
|
12e66ec8
刘淇
新增树
|
392
393
394
395
396
397
398
399
400
|
if (!item?.taskId) return showToast('工单信息异常');
navToOrderPage('/pages-sub/problem/regional-order-manage/order-detail', {
taskId: item.taskId,
activeTab: activeTab.value,
processInstanceId: item.processInstanceId
}, {
needRefresh: () => {
console.log('详情页返回,触发工单列表刷新');
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
401
402
|
}
});
|
3d474e84
刘淇
快速工单 加上业务线
|
403
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
404
405
|
// 重新提交工单
|
3d474e84
刘淇
快速工单 加上业务线
|
406
|
const handleRenew = (item) => {
|
12e66ec8
刘淇
新增树
|
407
|
if (!item?.id) return showToast('工单信息异常,无法重新提交');
|
8ddc6f6e
刘淇
登录 修改样式
|
408
409
|
const tempKey = setOrderStorage(item, 'renew_order');
if (!tempKey) return;
|
3d474e84
刘淇
快速工单 加上业务线
|
410
|
|
8ddc6f6e
刘淇
登录 修改样式
|
411
412
413
|
const pageUrl = USER_ROLES.includes('patrol_global')
? '/pages-sub/problem/regional-order-manage/add-patrol-order'
: '/pages-sub/problem/regional-order-manage/add-order';
|
3d474e84
刘淇
快速工单 加上业务线
|
414
|
|
8ddc6f6e
刘淇
登录 修改样式
|
415
|
navToOrderPage(pageUrl, { isRenew: 1, tempKey });
|
3d474e84
刘淇
快速工单 加上业务线
|
416
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
417
418
|
// 处理工单核心逻辑
|
3d474e84
刘淇
快速工单 加上业务线
|
419
|
const handleProcess = async (item) => {
|
12e66ec8
刘淇
新增树
|
420
|
if (!item) return showToast('工单信息异常');
|
8ddc6f6e
刘淇
登录 修改样式
|
421
|
const stepName = nextStepMap[item.taskKey]?.name;
|
12e66ec8
刘淇
新增树
|
422
|
if (!stepName) return showToast('暂无处理权限或工单状态异常');
|
3d474e84
刘淇
快速工单 加上业务线
|
423
|
try {
|
8ddc6f6e
刘淇
登录 修改样式
|
424
425
426
427
|
// 大区经理分配
if (stepName === '大区经理分配') {
const tempKey = setOrderStorage(item, 'distribute_order');
tempKey && navToOrderPage('/pages-sub/problem/regional-order-manage/distribution-order', { tempKey });
|
3d474e84
刘淇
快速工单 加上业务线
|
428
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
429
430
431
|
// 督察员单子大区经理分配
else if (stepName === '督察员单子大区经理分配') {
const postData = { taskKey: item.taskKey, taskId: item.taskId, operateType:60, workerDataId:item.id, agree:0, reason:item.remark, roadId:item.roadId, roadName:item.roadName, pressingType:item.pressingType, orderName:item.orderName, expectedFinishDate: item.expectedFinishDate, busiLine:item.busiLine };
|
12e66ec8
刘淇
新增树
|
432
433
|
await dcyUniversalApproval(postData);
showToast('分配成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
434
|
refreshOrderList();
|
2e2b95d3
刘淇
修改接口路径 和命名
|
435
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
436
437
438
439
440
441
|
// 验收弹窗
else if (['巡查员验收', '养护组长验收'].includes(stepName)) {
currentAcceptItem.value = item;
acceptReason.value = '';
acceptRadioValue.value = '0';
acceptModalShow.value = true;
|
3d474e84
刘淇
快速工单 加上业务线
|
442
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
443
444
|
// 发起人确认-结束工单
else if (stepName === '发起人确认') {
|
3d474e84
刘淇
快速工单 加上业务线
|
445
446
447
|
uni.showModal({
title: "结束工单",
content: "请确定是否结束工单?",
|
8ddc6f6e
刘淇
登录 修改样式
|
448
|
success: async (res) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
449
|
if (res.confirm) {
|
3d474e84
刘淇
快速工单 加上业务线
|
450
|
const requestData = {
|
8ddc6f6e
刘淇
登录 修改样式
|
451
452
|
workerDataId: item.id, taskKey: 'ylInspectorStart', taskId: item.taskId,
operateType: 200, agree: 1, reason: '结束工单'
|
3d474e84
刘淇
快速工单 加上业务线
|
453
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
454
|
await callApprovalApi(requestData, item.taskKey);
|
12e66ec8
刘淇
新增树
|
455
|
showToast('结束成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
456
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
457
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
458
|
}
|
3d474e84
刘淇
快速工单 加上业务线
|
459
460
461
462
|
});
}
} catch (error) {
console.error('处理工单失败:', error);
|
12e66ec8
刘淇
新增树
|
463
|
showToast(error.msg || error.message || '处理失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
464
465
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
466
467
|
// 回退工单-打开弹窗
|
3d474e84
刘淇
快速工单 加上业务线
|
468
|
const handleReject = (item) => {
|
12e66ec8
刘淇
新增树
|
469
|
if (!item?.id) return showToast('工单信息异常,无法回退');
|
3d474e84
刘淇
快速工单 加上业务线
|
470
|
currentRejectItem.value = item;
|
8ddc6f6e
刘淇
登录 修改样式
|
471
472
473
|
rejectReason.value = '';
rejectImgs.clearImgs();
rejectModalShow.value = true;
|
3d474e84
刘淇
快速工单 加上业务线
|
474
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
475
476
|
// 关闭回退弹窗-重置状态
|
3d474e84
刘淇
快速工单 加上业务线
|
477
478
479
|
const handleRejectModalCancel = () => {
rejectModalShow.value = false;
rejectReason.value = '';
|
8ddc6f6e
刘淇
登录 修改样式
|
480
|
rejectImgs.clearImgs();
|
3d474e84
刘淇
快速工单 加上业务线
|
481
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
482
|
|
3d474e84
刘淇
快速工单 加上业务线
|
483
484
|
// 确认回退工单
const confirmReject = async () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
485
|
const reason = rejectReason.value.trim();
|
12e66ec8
刘淇
新增树
|
486
|
if (!reason) return showToast('请填写回退原因');
|
8ddc6f6e
刘淇
登录 修改样式
|
487
|
const item = currentRejectItem.value;
|
12e66ec8
刘淇
新增树
|
488
|
if (!item?.id) return showToast('工单信息异常');
|
8ddc6f6e
刘淇
登录 修改样式
|
489
490
|
uni.showLoading({title: '提交中...', mask: true});
|
3d474e84
刘淇
快速工单 加上业务线
|
491
|
try {
|
3d474e84
刘淇
快速工单 加上业务线
|
492
|
const requestData = {
|
8ddc6f6e
刘淇
登录 修改样式
|
493
494
|
returnImgs: rejectImgs.getSuccessImgUrls(), workerDataId: item.id, taskKey: item.taskKey,
taskId: item.taskId, operateType: nextStepMap[item.taskKey].operateTypeNoPass, agree:1, reason
|
3d474e84
刘淇
快速工单 加上业务线
|
495
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
496
|
await callApprovalApi(requestData, item.taskKey);
|
12e66ec8
刘淇
新增树
|
497
|
showToast('回退成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
498
499
|
handleRejectModalCancel();
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
500
501
|
} catch (error) {
console.error('回退工单失败:', error);
|
12e66ec8
刘淇
新增树
|
502
|
showToast(error.msg || error.message || '回退失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
503
|
} finally {
|
3d474e84
刘淇
快速工单 加上业务线
|
504
505
506
|
uni.hideLoading();
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
507
|
|
3d474e84
刘淇
快速工单 加上业务线
|
508
509
|
// 新增工单
const handleAddOrder = () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
510
511
512
513
|
const pageUrl = USER_ROLES.includes('patrol_global')
? '/pages-sub/problem/regional-order-manage/add-patrol-order'
: '/pages-sub/problem/regional-order-manage/add-order';
navToOrderPage(pageUrl);
|
3d474e84
刘淇
快速工单 加上业务线
|
514
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
515
516
|
// 关闭验收弹窗-重置状态
|
3d474e84
刘淇
快速工单 加上业务线
|
517
518
|
const handleAcceptModalCancel = () => {
acceptModalShow.value = false;
|
8ddc6f6e
刘淇
登录 修改样式
|
519
520
521
|
acceptReason.value = '';
acceptRadioValue.value = '0';
acceptImgs.clearImgs();
|
3d474e84
刘淇
快速工单 加上业务线
|
522
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
523
524
|
// 验收提交
|
3d474e84
刘淇
快速工单 加上业务线
|
525
|
const handleAcceptModalConfirm = async () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
526
|
const reason = acceptReason.value.trim();
|
12e66ec8
刘淇
新增树
|
527
528
|
if (!reason) return showToast('请填写验收原因');
if (reason.length > 200) return showToast('验收原因最多200字');
|
8ddc6f6e
刘淇
登录 修改样式
|
529
530
|
const item = currentAcceptItem.value;
|
12e66ec8
刘淇
新增树
|
531
|
if (!item?.id) return showToast('工单信息异常');
|
2e2b95d3
刘淇
修改接口路径 和命名
|
532
|
|
12e66ec8
刘淇
新增树
|
533
|
uni.showLoading({title: '提交中...', mask: true});
|
8ddc6f6e
刘淇
登录 修改样式
|
534
535
536
537
538
539
540
|
try {
const postData = {
returnImgs: acceptImgs.getSuccessImgUrls(), taskKey: item.taskKey, workerDataId: item.id,
taskId: item.taskId, agree: acceptRadioValue.value, reason,
operateType: acceptRadioValue.value === '0' ? nextStepMap[item.taskKey].operateTypePass : nextStepMap[item.taskKey].operateTypeNoPass
};
await callApprovalApi(postData, item.taskKey);
|
12e66ec8
刘淇
新增树
|
541
|
showToast('提交成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
542
543
|
handleAcceptModalCancel();
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
544
|
} catch (error) {
|
3d474e84
刘淇
快速工单 加上业务线
|
545
|
console.error('验收失败:', error);
|
12e66ec8
刘淇
新增树
|
546
547
548
|
showToast(error.msg || error.message || '验收提交失败,请重试');
} finally {
uni.hideLoading();
|
3d474e84
刘淇
快速工单 加上业务线
|
549
550
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
551
552
|
// ========== 页面生命周期 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
553
|
onLoad(() => {
|
8ddc6f6e
刘淇
登录 修改样式
|
554
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
555
556
557
|
});
</script>
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
558
|
<style scoped lang="scss">
|
3d474e84
刘淇
快速工单 加上业务线
|
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
|
.page-container {
min-height: 100vh;
background-color: #fafafa;
}
// 顶部固定区域
.header-wrap {
background-color: #fff;
}
// 搜索栏样式
.search-header {
display: flex;
align-items: center;
padding: 20rpx;
box-sizing: border-box;
.select-wrap {
width: 120rpx;
margin-right: 20rpx;
|
8ddc6f6e
刘淇
登录 修改样式
|
579
|
:deep(.u-select), :deep(.u-input__placeholder) {
|
3d474e84
刘淇
快速工单 加上业务线
|
580
581
582
|
width: 100%;
font-size: 28rpx;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
583
584
585
586
587
588
589
|
}
.search-input-wrap {
flex: 1;
}
}
|
12e66ec8
刘淇
新增树
|
590
591
592
593
594
595
|
// 工单列表样式
.common-card-list {
padding: calc(var(--status-bar-height) + 140rpx) 0 30rpx;
box-sizing: border-box;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
596
597
598
599
600
601
602
603
|
// 工单卡片样式
.order-card {
margin: 0 20rpx 20rpx;
background: #fff;
border-radius: 12rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
|
5b5a4862
刘淇
按钮放大
|
604
605
606
607
608
|
.u-body-item-btn-wrap :deep(.u-button--large){
height: 28px;
}
|
12e66ec8
刘淇
新增树
|
609
610
611
612
613
|
// 新增样式:解决按钮和文字间距、排版问题
.flex-1 { flex: 1; }
.text-right { text-align: right; }
.ml-10 { margin-left: 10rpx; }
|
8ddc6f6e
刘淇
登录 修改样式
|
614
615
|
// 弹窗公共样式
.reject-modal-content, .accept-modal-content {
|
3d474e84
刘淇
快速工单 加上业务线
|
616
617
618
619
620
|
width: 100%;
box-sizing: border-box;
padding: 10rpx 0;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
621
|
.upload-wrap {
|
3d474e84
刘淇
快速工单 加上业务线
|
622
623
624
625
626
627
628
|
.upload-title {
font-size: 28rpx;
color: #333;
margin-bottom: 10rpx;
}
}
|
8ddc6f6e
刘淇
登录 修改样式
|
629
|
// 验收弹窗单选框样式
|
3d474e84
刘淇
快速工单 加上业务线
|
630
631
632
|
.radio-group-wrap {
display: flex;
align-items: center;
|
8ddc6f6e
刘淇
登录 修改样式
|
633
|
gap: 40rpx;
|
3d474e84
刘淇
快速工单 加上业务线
|
634
635
636
637
638
639
|
font-size: 28rpx;
margin-bottom: 20rpx;
}
.textarea-wrap {
width: 100%;
|
3d474e84
刘淇
快速工单 加上业务线
|
640
|
}
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
641
|
|
8ddc6f6e
刘淇
登录 修改样式
|
642
643
644
|
// 间距公共样式
.mt-20 { margin-top: 20rpx; }
.mt-30 { margin-top: 30rpx; }
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
645
|
</style>
|