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
|
qyUniversalApproval,
daquUniversalApproval,
|
6bce1057
刘淇
ai 大区经理
|
221
222
|
dcyUniversalApproval,
aiUniversalApproval
|
2e2b95d3
刘淇
修改接口路径 和命名
|
223
|
} from '@/api/regional-order-manage/regional-order-manage'
|
3d474e84
刘淇
快速工单 加上业务线
|
224
225
|
import { useUserStore } from '@/pinia/user';
import { nextStepMap, buzStatusMap } from '@/common/utils/common'
|
3d474e84
刘淇
快速工单 加上业务线
|
226
|
import { useUploadImgs } from '@/common/utils/useUploadImgs'
|
8ddc6f6e
刘淇
登录 修改样式
|
227
228
|
// ========== 全局实例 & 常量 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
229
|
const userStore = useUserStore();
|
8ddc6f6e
刘淇
登录 修改样式
|
230
231
232
233
|
const USER_ROLES = userStore.userInfo?.roles || [];
// ========== 基础状态 (按模块分组,语义化更强) ==========
// tab切换
|
5b5a4862
刘淇
按钮放大
|
234
|
const activeTab = ref(0); // 0-待办 1-已办 2-我发起的任务
|
d6406a70
刘淇
快速工单 详情 照片处理
|
235
|
const tabList = [{name: '待办'}, {name: '已办'}, {name: '我发起的'}];
|
8ddc6f6e
刘淇
登录 修改样式
|
236
|
// 排序与搜索
|
3d474e84
刘淇
快速工单 加上业务线
|
237
238
|
const selectedSortValue = ref(1);
const sortOptions = ref([
|
8ddc6f6e
刘淇
登录 修改样式
|
239
|
{name: '位置', id: 1}, {name: '名称', id: 2}, {name: '描述', id: 3}, {name: '编号', id: 4},
|
3d474e84
刘淇
快速工单 加上业务线
|
240
|
]);
|
3d474e84
刘淇
快速工单 加上业务线
|
241
|
const searchValue = ref('');
|
8ddc6f6e
刘淇
登录 修改样式
|
242
243
|
// 分页相关
const pagingRef = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
244
|
const orderList = ref([]);
|
8ddc6f6e
刘淇
登录 修改样式
|
245
|
|
12e66ec8
刘淇
新增树
|
246
|
// ========== 角色权限计算属性 ==========
|
6e9f0396
刘淇
全域督察员
|
247
|
const isAi = computed(() => {
|
12e66ec8
刘淇
新增树
|
248
|
const roles = USER_ROLES || [];
|
8ddc6f6e
刘淇
登录 修改样式
|
249
|
// AI工单派发人员 不显示新增按钮,其他角色显示
|
12e66ec8
刘淇
新增树
|
250
|
return !roles.includes('AI_dispatcher');
|
3d474e84
刘淇
快速工单 加上业务线
|
251
|
});
|
8ddc6f6e
刘淇
登录 修改样式
|
252
253
254
255
256
|
// ========== 回退弹窗相关 ==========
const rejectModalShow = ref(false);
const rejectReason = ref('');
const currentRejectItem = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
257
|
const rejectImgs = useUploadImgs({
|
8ddc6f6e
刘淇
登录 修改样式
|
258
|
maxCount: 3, uploadText: '选择回退图片', sizeType: ['compressed'], formRef: null, fieldName: 'rejectImgs'
|
3d474e84
刘淇
快速工单 加上业务线
|
259
|
})
|
8ddc6f6e
刘淇
登录 修改样式
|
260
261
262
263
264
265
|
// ========== 验收弹窗相关 ==========
const acceptModalShow = ref(false);
const acceptRadioValue = ref('0'); // 默认通过
const acceptReason = ref('');
const currentAcceptItem = ref(null);
|
3d474e84
刘淇
快速工单 加上业务线
|
266
|
const acceptImgs = useUploadImgs({
|
8ddc6f6e
刘淇
登录 修改样式
|
267
|
maxCount: 3, uploadText: '选择验收图片', sizeType: ['compressed'], formRef: null, fieldName: 'acceptImgs'
|
3d474e84
刘淇
快速工单 加上业务线
|
268
|
})
|
8ddc6f6e
刘淇
登录 修改样式
|
269
270
271
|
// ========== 公共封装方法 (核心优化:消灭重复代码) ==========
/**
|
12e66ec8
刘淇
新增树
|
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
|
* 统一提示方法
*/
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
刘淇
登录 修改样式
|
289
|
* 生成统一的临时存储key
|
8ddc6f6e
刘淇
登录 修改样式
|
290
291
292
293
294
295
296
|
*/
const generateTempKey = (prefix = 'order') => {
return `${prefix}_${Date.now()}_${Math.floor(Math.random() * 10000)}`;
};
/**
* 存储工单数据到本地缓存
|
8ddc6f6e
刘淇
登录 修改样式
|
297
298
299
300
301
302
303
304
305
|
*/
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
刘淇
新增树
|
306
|
showToast('数据存储异常,请重试');
|
8ddc6f6e
刘淇
登录 修改样式
|
307
308
309
310
311
312
|
return null;
}
};
/**
* 获取分页请求公共参数
|
8ddc6f6e
刘淇
登录 修改样式
|
313
314
315
316
317
318
319
320
321
322
323
324
|
*/
const getQueryParams = (pageNo, pageSize) => {
return {
searchContent: searchValue.value.trim() || '',
pageNo,
pageSize,
type: selectedSortValue.value
};
};
/**
* 统一调用审批接口
|
8ddc6f6e
刘淇
登录 修改样式
|
325
326
|
*/
const callApprovalApi = async (params, taskKey) => {
|
6bce1057
刘淇
ai 大区经理
|
327
|
if (taskKey === 'aiRegionManager') return await aiUniversalApproval(params);
|
8ddc6f6e
刘淇
登录 修改样式
|
328
329
|
if (taskKey === 'shRegionManager') return await dcyUniversalApproval(params);
if (taskKey === 'regionManager') return await qyUniversalApproval(params);
|
8ddc6f6e
刘淇
登录 修改样式
|
330
331
332
|
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);
|
6bce1057
刘淇
ai 大区经理
|
333
|
// if (USER_ROLES.includes('AI_dispatcher')) return await aiUniversalApproval(params);
|
12e66ec8
刘淇
新增树
|
334
|
throw new Error('未匹配到对应的审批接口,请检查角色或工单taskKey');
|
8ddc6f6e
刘淇
登录 修改样式
|
335
336
337
|
};
/**
|
12e66ec8
刘淇
新增树
|
338
|
* 统一跳转工单页面 (支持携带回调事件)
|
8ddc6f6e
刘淇
登录 修改样式
|
339
|
*/
|
12e66ec8
刘淇
新增树
|
340
341
342
343
344
345
346
347
|
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
刘淇
登录 修改样式
|
348
349
350
|
};
/**
|
12e66ec8
刘淇
新增树
|
351
|
* 刷新列表
|
8ddc6f6e
刘淇
登录 修改样式
|
352
|
*/
|
12e66ec8
刘淇
新增树
|
353
|
const refreshOrderList = () => pagingHandle('reload');
|
8ddc6f6e
刘淇
登录 修改样式
|
354
355
|
// ========== 业务核心方法 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
356
357
358
|
// 分页查询列表
const queryList = async (pageNo, pageSize) => {
try {
|
8ddc6f6e
刘淇
登录 修改样式
|
359
|
const params = getQueryParams(pageNo, pageSize);
|
3d474e84
刘淇
快速工单 加上业务线
|
360
|
let res;
|
5b5a4862
刘淇
按钮放大
|
361
|
// 0-待办 1-已办 2-我发起的任务
|
8ddc6f6e
刘淇
登录 修改样式
|
362
|
if (activeTab.value === 0) res = await todoBuzSimplePage(params);
|
5b5a4862
刘淇
按钮放大
|
363
|
else if (activeTab.value === 2) res = await myBuzSimplePage(params);
|
8ddc6f6e
刘淇
登录 修改样式
|
364
|
else res = await doneBuzSimplePage(params);
|
12e66ec8
刘淇
新增树
|
365
|
pagingHandle('complete', res?.list || [], res?.total || 0);
|
3d474e84
刘淇
快速工单 加上业务线
|
366
367
|
} catch (error) {
console.error('加载工单失败:', error);
|
12e66ec8
刘淇
新增树
|
368
369
|
pagingHandle('complete', false);
showToast('加载失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
370
371
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
372
|
|
3d474e84
刘淇
快速工单 加上业务线
|
373
374
|
// 标签页切换
const handleTabChange = (item) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
375
|
activeTab.value = item.index;
|
8ddc6f6e
刘淇
登录 修改样式
|
376
377
|
orderList.value = [];
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
378
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
379
|
|
3d474e84
刘淇
快速工单 加上业务线
|
380
381
382
383
|
// 排序变更
const handleSortChange = (val) => {
selectedSortValue.value = val.id;
searchValue.value = '';
|
8ddc6f6e
刘淇
登录 修改样式
|
384
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
385
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
386
|
|
3d474e84
刘淇
快速工单 加上业务线
|
387
388
389
|
// 搜索
const handleSearch = (val) => {
searchValue.value = val;
|
8ddc6f6e
刘淇
登录 修改样式
|
390
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
391
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
392
|
|
3d474e84
刘淇
快速工单 加上业务线
|
393
394
|
// 工单详情
const handleDetail = (item) => {
|
12e66ec8
刘淇
新增树
|
395
396
397
398
399
400
401
402
403
|
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
刘淇
快速工单 加上业务线
|
404
405
|
}
});
|
3d474e84
刘淇
快速工单 加上业务线
|
406
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
407
408
|
// 重新提交工单
|
3d474e84
刘淇
快速工单 加上业务线
|
409
|
const handleRenew = (item) => {
|
12e66ec8
刘淇
新增树
|
410
|
if (!item?.id) return showToast('工单信息异常,无法重新提交');
|
8ddc6f6e
刘淇
登录 修改样式
|
411
412
|
const tempKey = setOrderStorage(item, 'renew_order');
if (!tempKey) return;
|
3d474e84
刘淇
快速工单 加上业务线
|
413
|
|
8ddc6f6e
刘淇
登录 修改样式
|
414
415
416
|
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
刘淇
快速工单 加上业务线
|
417
|
|
8ddc6f6e
刘淇
登录 修改样式
|
418
|
navToOrderPage(pageUrl, { isRenew: 1, tempKey });
|
3d474e84
刘淇
快速工单 加上业务线
|
419
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
420
421
|
// 处理工单核心逻辑
|
3d474e84
刘淇
快速工单 加上业务线
|
422
|
const handleProcess = async (item) => {
|
12e66ec8
刘淇
新增树
|
423
|
if (!item) return showToast('工单信息异常');
|
8ddc6f6e
刘淇
登录 修改样式
|
424
|
const stepName = nextStepMap[item.taskKey]?.name;
|
12e66ec8
刘淇
新增树
|
425
|
if (!stepName) return showToast('暂无处理权限或工单状态异常');
|
3d474e84
刘淇
快速工单 加上业务线
|
426
|
try {
|
8ddc6f6e
刘淇
登录 修改样式
|
427
428
429
430
|
// 大区经理分配
if (stepName === '大区经理分配') {
const tempKey = setOrderStorage(item, 'distribute_order');
tempKey && navToOrderPage('/pages-sub/problem/regional-order-manage/distribution-order', { tempKey });
|
3d474e84
刘淇
快速工单 加上业务线
|
431
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
432
433
|
// 督察员单子大区经理分配
else if (stepName === '督察员单子大区经理分配') {
|
6bce1057
刘淇
ai 大区经理
|
434
435
436
437
438
439
440
441
442
443
444
445
446
|
uni.showModal({
title: "分配工单",
content: "请确定是否分配工单?",
success: async (res) => {
if (res.confirm) {
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 };
await dcyUniversalApproval(postData);
showToast('分配成功', 'success');
refreshOrderList();
}
}
});
|
2e2b95d3
刘淇
修改接口路径 和命名
|
447
|
}
|
6bce1057
刘淇
ai 大区经理
|
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
|
// ai单子大区经理分配
else if (stepName === 'ai单子大区经理分配') {
uni.showModal({
title: "分配工单",
content: "请确定是否分配工单?",
success: async (res) => {
if (res.confirm) {
const postData = { taskKey: 'shRegionManager', taskId: item.taskId, operateType:40, 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 };
await aiUniversalApproval(postData);
showToast('分配成功', 'success');
refreshOrderList();
}
}
});
}
|
8ddc6f6e
刘淇
登录 修改样式
|
465
466
467
468
469
470
|
// 验收弹窗
else if (['巡查员验收', '养护组长验收'].includes(stepName)) {
currentAcceptItem.value = item;
acceptReason.value = '';
acceptRadioValue.value = '0';
acceptModalShow.value = true;
|
3d474e84
刘淇
快速工单 加上业务线
|
471
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
472
473
|
// 发起人确认-结束工单
else if (stepName === '发起人确认') {
|
3d474e84
刘淇
快速工单 加上业务线
|
474
475
476
|
uni.showModal({
title: "结束工单",
content: "请确定是否结束工单?",
|
8ddc6f6e
刘淇
登录 修改样式
|
477
|
success: async (res) => {
|
3d474e84
刘淇
快速工单 加上业务线
|
478
|
if (res.confirm) {
|
3d474e84
刘淇
快速工单 加上业务线
|
479
|
const requestData = {
|
8ddc6f6e
刘淇
登录 修改样式
|
480
481
|
workerDataId: item.id, taskKey: 'ylInspectorStart', taskId: item.taskId,
operateType: 200, agree: 1, reason: '结束工单'
|
3d474e84
刘淇
快速工单 加上业务线
|
482
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
483
|
await callApprovalApi(requestData, item.taskKey);
|
12e66ec8
刘淇
新增树
|
484
|
showToast('结束成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
485
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
486
|
}
|
8ddc6f6e
刘淇
登录 修改样式
|
487
|
}
|
3d474e84
刘淇
快速工单 加上业务线
|
488
489
490
491
|
});
}
} catch (error) {
console.error('处理工单失败:', error);
|
12e66ec8
刘淇
新增树
|
492
|
showToast(error.msg || error.message || '处理失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
493
494
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
495
496
|
// 回退工单-打开弹窗
|
3d474e84
刘淇
快速工单 加上业务线
|
497
|
const handleReject = (item) => {
|
12e66ec8
刘淇
新增树
|
498
|
if (!item?.id) return showToast('工单信息异常,无法回退');
|
3d474e84
刘淇
快速工单 加上业务线
|
499
|
currentRejectItem.value = item;
|
8ddc6f6e
刘淇
登录 修改样式
|
500
501
502
|
rejectReason.value = '';
rejectImgs.clearImgs();
rejectModalShow.value = true;
|
3d474e84
刘淇
快速工单 加上业务线
|
503
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
504
505
|
// 关闭回退弹窗-重置状态
|
3d474e84
刘淇
快速工单 加上业务线
|
506
507
508
|
const handleRejectModalCancel = () => {
rejectModalShow.value = false;
rejectReason.value = '';
|
8ddc6f6e
刘淇
登录 修改样式
|
509
|
rejectImgs.clearImgs();
|
3d474e84
刘淇
快速工单 加上业务线
|
510
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
511
|
|
3d474e84
刘淇
快速工单 加上业务线
|
512
513
|
// 确认回退工单
const confirmReject = async () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
514
|
const reason = rejectReason.value.trim();
|
12e66ec8
刘淇
新增树
|
515
|
if (!reason) return showToast('请填写回退原因');
|
8ddc6f6e
刘淇
登录 修改样式
|
516
|
const item = currentRejectItem.value;
|
12e66ec8
刘淇
新增树
|
517
|
if (!item?.id) return showToast('工单信息异常');
|
8ddc6f6e
刘淇
登录 修改样式
|
518
519
|
uni.showLoading({title: '提交中...', mask: true});
|
3d474e84
刘淇
快速工单 加上业务线
|
520
|
try {
|
3d474e84
刘淇
快速工单 加上业务线
|
521
|
const requestData = {
|
8ddc6f6e
刘淇
登录 修改样式
|
522
523
|
returnImgs: rejectImgs.getSuccessImgUrls(), workerDataId: item.id, taskKey: item.taskKey,
taskId: item.taskId, operateType: nextStepMap[item.taskKey].operateTypeNoPass, agree:1, reason
|
3d474e84
刘淇
快速工单 加上业务线
|
524
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
525
|
await callApprovalApi(requestData, item.taskKey);
|
12e66ec8
刘淇
新增树
|
526
|
showToast('回退成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
527
528
|
handleRejectModalCancel();
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
529
530
|
} catch (error) {
console.error('回退工单失败:', error);
|
12e66ec8
刘淇
新增树
|
531
|
showToast(error.msg || error.message || '回退失败,请重试');
|
3d474e84
刘淇
快速工单 加上业务线
|
532
|
} finally {
|
3d474e84
刘淇
快速工单 加上业务线
|
533
534
535
|
uni.hideLoading();
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
536
|
|
3d474e84
刘淇
快速工单 加上业务线
|
537
538
|
// 新增工单
const handleAddOrder = () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
539
540
541
542
|
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
刘淇
快速工单 加上业务线
|
543
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
544
545
|
// 关闭验收弹窗-重置状态
|
3d474e84
刘淇
快速工单 加上业务线
|
546
547
|
const handleAcceptModalCancel = () => {
acceptModalShow.value = false;
|
8ddc6f6e
刘淇
登录 修改样式
|
548
549
550
|
acceptReason.value = '';
acceptRadioValue.value = '0';
acceptImgs.clearImgs();
|
3d474e84
刘淇
快速工单 加上业务线
|
551
|
};
|
8ddc6f6e
刘淇
登录 修改样式
|
552
553
|
// 验收提交
|
3d474e84
刘淇
快速工单 加上业务线
|
554
|
const handleAcceptModalConfirm = async () => {
|
8ddc6f6e
刘淇
登录 修改样式
|
555
|
const reason = acceptReason.value.trim();
|
12e66ec8
刘淇
新增树
|
556
557
|
if (!reason) return showToast('请填写验收原因');
if (reason.length > 200) return showToast('验收原因最多200字');
|
8ddc6f6e
刘淇
登录 修改样式
|
558
559
|
const item = currentAcceptItem.value;
|
12e66ec8
刘淇
新增树
|
560
|
if (!item?.id) return showToast('工单信息异常');
|
2e2b95d3
刘淇
修改接口路径 和命名
|
561
|
|
12e66ec8
刘淇
新增树
|
562
|
uni.showLoading({title: '提交中...', mask: true});
|
8ddc6f6e
刘淇
登录 修改样式
|
563
564
565
566
567
568
569
|
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
刘淇
新增树
|
570
|
showToast('提交成功', 'success');
|
8ddc6f6e
刘淇
登录 修改样式
|
571
572
|
handleAcceptModalCancel();
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
573
|
} catch (error) {
|
3d474e84
刘淇
快速工单 加上业务线
|
574
|
console.error('验收失败:', error);
|
12e66ec8
刘淇
新增树
|
575
576
577
|
showToast(error.msg || error.message || '验收提交失败,请重试');
} finally {
uni.hideLoading();
|
3d474e84
刘淇
快速工单 加上业务线
|
578
579
|
}
};
|
8ddc6f6e
刘淇
登录 修改样式
|
580
581
|
// ========== 页面生命周期 ==========
|
3d474e84
刘淇
快速工单 加上业务线
|
582
|
onLoad(() => {
|
8ddc6f6e
刘淇
登录 修改样式
|
583
|
refreshOrderList();
|
3d474e84
刘淇
快速工单 加上业务线
|
584
585
586
|
});
</script>
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
587
|
<style scoped lang="scss">
|
3d474e84
刘淇
快速工单 加上业务线
|
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
|
.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
刘淇
登录 修改样式
|
608
|
:deep(.u-select), :deep(.u-input__placeholder) {
|
3d474e84
刘淇
快速工单 加上业务线
|
609
610
611
|
width: 100%;
font-size: 28rpx;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
612
613
614
615
616
617
618
|
}
.search-input-wrap {
flex: 1;
}
}
|
12e66ec8
刘淇
新增树
|
619
620
621
622
623
624
|
// 工单列表样式
.common-card-list {
padding: calc(var(--status-bar-height) + 140rpx) 0 30rpx;
box-sizing: border-box;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
625
626
627
628
629
630
631
632
|
// 工单卡片样式
.order-card {
margin: 0 20rpx 20rpx;
background: #fff;
border-radius: 12rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
|
5b5a4862
刘淇
按钮放大
|
633
634
635
636
637
|
.u-body-item-btn-wrap :deep(.u-button--large){
height: 28px;
}
|
12e66ec8
刘淇
新增树
|
638
639
640
641
642
|
// 新增样式:解决按钮和文字间距、排版问题
.flex-1 { flex: 1; }
.text-right { text-align: right; }
.ml-10 { margin-left: 10rpx; }
|
8ddc6f6e
刘淇
登录 修改样式
|
643
644
|
// 弹窗公共样式
.reject-modal-content, .accept-modal-content {
|
3d474e84
刘淇
快速工单 加上业务线
|
645
646
647
648
649
|
width: 100%;
box-sizing: border-box;
padding: 10rpx 0;
}
|
3d474e84
刘淇
快速工单 加上业务线
|
650
|
.upload-wrap {
|
3d474e84
刘淇
快速工单 加上业务线
|
651
652
653
654
655
656
657
|
.upload-title {
font-size: 28rpx;
color: #333;
margin-bottom: 10rpx;
}
}
|
8ddc6f6e
刘淇
登录 修改样式
|
658
|
// 验收弹窗单选框样式
|
3d474e84
刘淇
快速工单 加上业务线
|
659
660
661
|
.radio-group-wrap {
display: flex;
align-items: center;
|
8ddc6f6e
刘淇
登录 修改样式
|
662
|
gap: 40rpx;
|
3d474e84
刘淇
快速工单 加上业务线
|
663
664
665
666
667
668
|
font-size: 28rpx;
margin-bottom: 20rpx;
}
.textarea-wrap {
width: 100%;
|
3d474e84
刘淇
快速工单 加上业务线
|
669
|
}
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
670
|
|
8ddc6f6e
刘淇
登录 修改样式
|
671
672
673
|
// 间距公共样式
.mt-20 { margin-top: 20rpx; }
.mt-30 { margin-top: 30rpx; }
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
674
|
</style>
|