ff65dc6c
刘淇
快速工单 样式优化
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
<template>
<view class="page-container">
<!-- 页面级加载组件 -->
<up-loading-page
v-if="loading"
:loading="true"
title="加载中..."
color="#3c9cff"
></up-loading-page>
<!-- 主内容容器 -->
<view v-else class="main-content">
<!-- 顶部固定Tabs -->
<up-tabs
v-model="activeTopTab"
:list="topTabList"
:scrollable="false"
sticky
active-color="#3c9cff"
inactive-color="#666"
class="top-tabs"
@click="activeTopTabClick"
></up-tabs>
<!-- 顶部Tab内容区 -->
<view class="tab-content">
<!-- 1. 工单详情Tab -->
<view v-show="activeTopTab == 0" class="detail-content">
|
1f1f236c
刘淇
工单详情
|
29
|
<up-cell-group :border="false" class="detail-cell-group">
|
ff65dc6c
刘淇
快速工单 样式优化
|
30
31
|
<!-- 工单编号 -->
<up-cell title="工单编号" :value="orderDetail.orderNo || '--'" align="middle"></up-cell>
|
ff65dc6c
刘淇
快速工单 样式优化
|
32
|
|
1f1f236c
刘淇
工单详情
|
33
34
|
<!-- 工单位置 -->
<up-cell align="middle">
|
ff65dc6c
刘淇
快速工单 样式优化
|
35
|
<template #title>
|
1f1f236c
刘淇
工单详情
|
36
|
<view style="min-width: 200rpx">工单位置</view>
|
ff65dc6c
刘淇
快速工单 样式优化
|
37
38
39
40
41
|
</template>
<template #value>
<view class="common-text-color up-line-1">{{ orderDetail.roadName || '--' }}</view>
</template>
</up-cell>
|
1f1f236c
刘淇
工单详情
|
42
|
|
ff65dc6c
刘淇
快速工单 样式优化
|
43
44
|
<!-- 工单名称 -->
<up-cell title="工单名称" :value="orderDetail.orderName || '--'" align="middle"></up-cell>
|
1f1f236c
刘淇
工单详情
|
45
|
|
ff65dc6c
刘淇
快速工单 样式优化
|
46
|
<!-- 情况描述 -->
|
1f1f236c
刘淇
工单详情
|
47
|
<up-cell>
|
ff65dc6c
刘淇
快速工单 样式优化
|
48
|
<template #title>
|
1f1f236c
刘淇
工单详情
|
49
|
<view style="min-width: 200rpx">情况描述</view>
|
ff65dc6c
刘淇
快速工单 样式优化
|
50
51
52
53
54
|
</template>
<template #value>
<view class="common-text-color up-line-1">{{ orderDetail.remark || '--' }}</view>
</template>
</up-cell>
|
1f1f236c
刘淇
工单详情
|
55
|
|
ff65dc6c
刘淇
快速工单 样式优化
|
56
57
58
59
60
61
62
|
<!-- 紧急程度 -->
<up-cell
title="紧急程度"
:value="uni.$dict.getDictLabel('workorder_pressing_type', orderDetail.pressingType) || '--'"
align="middle"
></up-cell>
|
1f1f236c
刘淇
工单详情
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
<!-- 提交人 -->
<up-cell title="提交人" :value="orderDetail.userName || '--'" align="middle"></up-cell>
<!-- 提交时间 -->
<up-cell
title="提交时间"
:value="timeFormat(orderDetail.createTime, 'yyyy-mm-dd hh:MM:ss') || '--'"
align="middle"
></up-cell>
<!-- 处理结果 -->
<up-cell>
<template #title>
<view style="min-width: 200rpx">处理结果</view>
</template>
<template #value>
<view class="common-text-color up-line-1">{{ orderDetail.handleResult || '--' }}</view>
</template>
</up-cell>
<!-- 街道名称 -->
<up-cell title="街道名称" :value="orderDetail.streetName || '--'" align="middle"></up-cell>
|
ff65dc6c
刘淇
快速工单 样式优化
|
86
87
88
89
90
|
<!-- 问题照片 -->
<up-cell title="问题照片">
<template #value>
<view class="cell-content-wrap">
<up-album
|
5059c4dd
刘淇
养护员提交养护工单
|
91
92
|
v-if="!!orderDetail.problemsImgs?.length"
:urls="orderDetail.problemsImgs.slice(0, 3)"
|
ff65dc6c
刘淇
快速工单 样式优化
|
93
94
95
96
97
98
99
|
singleSize="70"
:preview-full-image="true"
></up-album>
<text v-else class="empty-text">暂无问题照片</text>
</view>
</template>
</up-cell>
|
1f1f236c
刘淇
工单详情
|
100
|
|
ff65dc6c
刘淇
快速工单 样式优化
|
101
102
103
|
<!-- 希望完成时间 -->
<up-cell
title="希望完成时间"
|
1f1f236c
刘淇
工单详情
|
104
|
:value="orderDetail.finishDate === 0 ? '未设置' : timeFormat(orderDetail.finishDate, 'yyyy-mm-dd hh:MM:ss')"
|
ff65dc6c
刘淇
快速工单 样式优化
|
105
106
107
108
109
|
align="middle"
:border="false"
></up-cell>
</up-cell-group>
|
ff65dc6c
刘淇
快速工单 样式优化
|
110
|
<!-- 图片分类Tabs区块 -->
|
1f1f236c
刘淇
工单详情
|
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
<view class="img-tabs-block">
<up-tabs
@change = 'imgTabChange'
v-model="activeImgTab"
:list="imgTabList"
:scrollable="false"
active-color="#3c9cff"
inactive-color="#666"
class="img-tabs"
></up-tabs>
<!-- 图片Tab内容区 -->
<view class="img-tab-content">
<up-album
v-if="currentImgList.length"
:urls="currentImgList.slice(0, 3)"
singleSize="80"
multipleSize="80"
:preview-full-image="true"
class="img-album"
></up-album>
<text v-else class="empty-img-text">暂无图片</text>
</view>
</view>
|
ff65dc6c
刘淇
快速工单 样式优化
|
135
136
137
138
|
</view>
<!-- 2. 流程节点Tab -->
<view v-show="activeTopTab == 1" class="process-content">
|
1f1f236c
刘淇
工单详情
|
139
140
141
142
|
<!-- <up-empty-->
<!-- mode="data"-->
<!-- ></up-empty>-->
<!-- <!– 可根据实际需求补充流程节点展示逻辑 –>-->
|
ff65dc6c
刘淇
快速工单 样式优化
|
143
144
145
146
147
148
149
|
</view>
</view>
</view>
</view>
</template>
<script setup lang="ts">
|
fa775c6b
刘淇
养护计划调整
|
150
151
|
import { ref, computed } from 'vue';
import { onLoad, onShow } from '@dcloudio/uni-app';
|
ff65dc6c
刘淇
快速工单 样式优化
|
152
|
import { timeFormat } from '@/uni_modules/uview-plus';
|
1f1f236c
刘淇
工单详情
|
153
|
import { getMyTaskDetail, getDoneTaskDetail, getTodoTaskDetail, getApprovalDetail } from '@/api/work-order-manage/work-order-manage';
|
ff65dc6c
刘淇
快速工单 样式优化
|
154
155
156
157
158
159
160
161
162
163
164
165
|
// 状态管理
const loading = ref(true);
const activeTopTab = ref(0); // 顶部Tab激活索引
const activeImgTab = ref(0); // 图片分类Tab激活索引
// 顶部Tab列表
const topTabList = ref([
{ name: '工单详情' },
{ name: '流程节点' }
]);
|
1f1f236c
刘淇
工单详情
|
166
|
const activeTopTabClick = async (item: any) => {
|
ff65dc6c
刘淇
快速工单 样式优化
|
167
168
|
console.log(item)
activeTopTab.value = item.index
|
1f1f236c
刘淇
工单详情
|
169
170
171
172
173
174
175
|
if(activeTopTab.value ==1){
let getData = {
processInstanceId:processInstanceId.value,
}
const res = await getApprovalDetail(getData)
console.log(res)
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
176
177
178
179
180
181
182
183
184
185
186
|
}
// 图片分类Tab列表(带角标配置)
const imgTabList = ref([
{ name: '开始', badge: { isDot: true } },
{ name: '进行中' },
{ name: '结束', badge: { isDot: true } },
{ name: '人员' },
{ name: '材料' }
]);
|
1f1f236c
刘淇
工单详情
|
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
|
// 工单详情数据(初始化赋值,可被接口数据覆盖)
const orderDetail = ref<any>({
id: 0,
busiLine: '',
orderNo: '',
orderName: '',
sourceId: 0,
sourceName: '',
roadId: 0,
roadName: '',
streetId: '',
streetName: '',
curingLevelId: 0,
curingLevelName: '',
commitDate: 0,
finishDate: 0,
pressingType: 0,
userId: 0,
userName: '',
companyId: 0,
latLonType: 0,
lat: 0,
lon: 0,
lonLatAddress: '',
thirdWorkNo: '',
thirdPushState: 0,
buzStatus: null,
status: 0,
processInstanceId: '',
remark: '',
handleResult: '',
createTime: 0,
fileNames: null,
coHandlers: null,
coHandlersName: null,
companyName: null,
userMobile: null,
taskId: '',
taskName: '',
taskKey: '',
processDefinitionName: '',
startTime: 0,
endTime: 0,
key_: '',
problemsImgs: [],
startImgs: [],
processingImgs: [],
endImgs: [],
personImgs: [],
materialImgs: []
});
|
ff65dc6c
刘淇
快速工单 样式优化
|
238
239
|
/**
|
1f1f236c
刘淇
工单详情
|
240
|
* 当前激活的图片列表(无需函数调用,直接访问)
|
ff65dc6c
刘淇
快速工单 样式优化
|
241
|
*/
|
1f1f236c
刘淇
工单详情
|
242
243
244
245
246
247
248
249
250
251
252
|
const currentImgList = ref([])
const tabKeyMap = ['startImgs', 'processingImgs', 'endImgs', 'personImgs', 'materialImgs'];
const imgTabChange = (({index})=>{
console.log(index)
const currentKey = tabKeyMap[index]
console.log(currentKey)
console.log(orderDetail.value[currentKey])
currentImgList.value = orderDetail.value[currentKey]
})
|
ff65dc6c
刘淇
快速工单 样式优化
|
253
254
255
256
|
/**
* 获取工单详情
*/
|
1f1f236c
刘淇
工单详情
|
257
258
|
const DetailQuery = async (taskIdStr: string) => {
console.log('当前工单ID:', taskIdStr)
|
ff65dc6c
刘淇
快速工单 样式优化
|
259
260
|
try {
loading.value = true;
|
1f1f236c
刘淇
工单详情
|
261
262
263
264
265
266
267
268
269
270
271
272
273
|
// 转换activeTab为数字类型,避免类型不一致导致接口调用失败
const tabType = Number(activeTab.value);
let res: any;
if (tabType === 0) {
res = await getTodoTaskDetail({ taskId: taskIdStr });
} else if (tabType === 1) {
res = await getMyTaskDetail({ taskId: taskIdStr });
} else if (tabType === 2) {
res = await getDoneTaskDetail({ taskId: taskIdStr });
} else {
uni.showToast({ title: '无效的工单类型', icon: 'none' });
return;
|
fa775c6b
刘淇
养护计划调整
|
274
|
}
|
fa775c6b
刘淇
养护计划调整
|
275
|
|
1f1f236c
刘淇
工单详情
|
276
277
278
279
|
// 覆盖工单详情数据
if (res) {
orderDetail.value = res;
currentImgList.value = orderDetail.value.startImgs
|
fa775c6b
刘淇
养护计划调整
|
280
|
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
281
282
283
284
285
286
287
288
|
} catch (error) {
console.error('获取工单详情失败:', error);
uni.showToast({ title: '加载失败,请重试', icon: 'none' });
} finally {
loading.value = false;
}
};
|
1f1f236c
刘淇
工单详情
|
289
|
// 页面加载参数
|
fa775c6b
刘淇
养护计划调整
|
290
291
|
const taskId = ref('')
const activeTab = ref('')
|
1f1f236c
刘淇
工单详情
|
292
293
294
295
296
297
298
299
300
|
const processInstanceId = ref('')
onLoad((options: any) => {
console.log('页面入参:', options)
const { taskId: taskIdOpt, activeTab: activeTabOpt, processInstanceId:processInstanceIdOpt } = options;
// 0-待办 1-我发起的 2-已办
taskId.value = taskIdOpt || '';
activeTab.value = activeTabOpt || '0';
processInstanceId.value = processInstanceIdOpt ;
});
|
ff65dc6c
刘淇
快速工单 样式优化
|
301
|
|
1f1f236c
刘淇
工单详情
|
302
303
304
305
306
307
308
|
onShow(() => {
if (taskId.value) {
DetailQuery(taskId.value);
} else {
loading.value = false;
uni.showToast({ title: '缺少工单ID参数', icon: 'none' });
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
309
|
});
|
ff65dc6c
刘淇
快速工单 样式优化
|
310
311
312
313
314
315
|
</script>
<style scoped lang="scss">
// 全局样式
.page-container {
min-height: 100vh;
|
ff65dc6c
刘淇
快速工单 样式优化
|
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
|
}
// 主内容容器
.main-content {
padding-bottom: 20rpx;
}
// 顶部Tabs
.top-tabs {
//background-color: #fff;
}
// Tab内容区
.tab-content {
padding: 16rpx;
}
// 工单详情内容
.detail-content {
.detail-cell-group {
background-color: #fff;
|
ff65dc6c
刘淇
快速工单 样式优化
|
337
338
339
|
margin-bottom: 20rpx;
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
340
|
.cell-content-wrap {
|
1f1f236c
刘淇
工单详情
|
341
|
// 保持原有样式,兼容up-album布局
|
ff65dc6c
刘淇
快速工单 样式优化
|
342
343
|
}
|
1f1f236c
刘淇
工单详情
|
344
345
346
347
|
.empty-text {
color: #999;
font-size: 26rpx;
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
348
349
350
351
352
353
354
355
|
}
// 图片分类Tabs区块
.img-tabs-block {
background-color: #fff;
border-radius: 12rpx;
padding: 16rpx;
|
1f1f236c
刘淇
工单详情
|
356
357
358
359
360
361
362
|
//// 图片Tabs样式(平均分配空间)
//.img-tabs {
// --u-tabs-item-flex: 1; // 平均分配空间
// --u-tabs-item-font-size: 26rpx;
// --u-tabs-item-height: 72rpx;
// margin-bottom: 16rpx;
//}
|
ff65dc6c
刘淇
快速工单 样式优化
|
363
364
365
366
367
368
369
370
371
372
373
374
375
|
// 图片内容区
.img-tab-content {
padding: 10rpx 0;
min-height: 120rpx;
display: flex;
align-items: center;
justify-content: center;
.img-album {
width: 100%;
}
|
1f1f236c
刘淇
工单详情
|
376
377
378
379
380
381
|
.empty-img-text {
height: 100px;
line-height: 100px;
color: #999;
font-size: 28rpx;
}
|
ff65dc6c
刘淇
快速工单 样式优化
|
382
383
384
385
386
|
}
}
// 流程节点空状态
.process-content {
|
1f1f236c
刘淇
工单详情
|
387
388
389
390
391
|
display: flex;
justify-content: center;
align-items: center;
min-height: 400rpx;
|
ff65dc6c
刘淇
快速工单 样式优化
|
392
393
394
395
396
|
.empty-process {
margin-top: 100rpx;
}
}
</style>
|