Blame view

pages-sub/problem/work-order-manage/order-detail.vue 10.4 KB
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>-->
  <!--          &lt;!&ndash; 可根据实际需求补充流程节点展示逻辑 &ndash;&gt;-->
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>