seimin 6 일 전
부모
커밋
1351a3207c

+ 16 - 1
http/api.js

@@ -354,4 +354,19 @@ export function api_repairCancel(data){
354 354
  */
355 355
 export function api_departmentDetail(id){
356 356
   return get("/simple/data/fetchData/department/" + id);
357
-}
357
+}
358
+
359
+/**
360
+ * 获取巡检执行详情
361
+ */
362
+export function api_inspectionTaskDetail(data){
363
+  return get("/simple/data/fetchData/inspectionTask/" + data);
364
+}
365
+
366
+/**
367
+ * 获取巡检项
368
+ */
369
+export function api_inspectionFormValues(data){
370
+  return post("/simple/data/fetchDataList/inspectionFormValues", data);
371
+}
372
+

+ 8 - 0
pages.json

@@ -264,6 +264,14 @@
264 264
        }
265 265
      }
266 266
    },
267
+   {
268
+     "path": "pages/inspection/inspectionDetail/inspectionDetail",
269
+     "style": {
270
+       "h5": {
271
+         "titleNView": false
272
+       }
273
+     }
274
+   },
267 275
 	 {
268 276
 	   "path": "pages/searchUser/searchUser",
269 277
 	   "style": {

+ 26 - 10
pages/incidentDetail/incidentDetail.vue

@@ -38,12 +38,6 @@
38 38
               <image class="resourceItem" :src="img.thumbFilePath" mode="aspectFill" v-for="(img, i) in dataInfo.repairImgs" :key="i" @click="previewImg(i, 'repairImgs')"></image>
39 39
             </view>
40 40
           </view>
41
-<!-- 					<view class="deital_item">
42
-					  <text class="name">报修视频:</text>
43
-					  <view class="value img">
44
-							<image class="resourceItem" src="/static/img/300.jpg" v-for="(img, i) in dataInfo.repairVideo" :key="i" @click="videoView(img)"></image>
45
-					  </view>
46
-					</view> -->
47 41
 					<view class="deital_item">
48 42
 					  <text class="name">报修录音:</text>
49 43
 					  <view class="value img" v-if="dataInfo.repairAudio.length>0">
@@ -75,6 +69,14 @@
75 69
             <text class="value">{{dataInfo.incidentData.requester ? dataInfo.incidentData.requester.name : '无'}}</text>
76 70
           </view>
77 71
           <view class="deital_item">
72
+            <text class="name">报修来源:</text>
73
+            <text class="value">{{dataInfo.incidentData.source ? dataInfo.incidentData.source.name : '无'}}</text>
74
+          </view>
75
+          <view class="deital_item" v-if="dataInfo.incidentData.inspectionTaskNo">
76
+            <text class="name">巡检单号:</text>
77
+            <text class="value">{{dataInfo.incidentData.inspectionTaskNo}}</text>
78
+          </view>
79
+          <view class="deital_item">
78 80
             <text class="name">预约维修时间:</text>
79 81
             <text class="value">{{dataInfo.incidentData.yyTime || '无'}}</text>
80 82
           </view>
@@ -185,7 +187,7 @@
185 187
           </view>
186 188
         </view>
187 189
       </template>
188
-
190
+      
189 191
       <!-- 评价信息 -->
190 192
       <template v-if="dataInfo.tabActiveValue === '4'">
191 193
         <view class="detail_head">
@@ -216,9 +218,11 @@
216 218
           </view>
217 219
         </view>
218 220
       </template>
221
+
219 222
     </scroll-view>
220 223
     <view class="foot_common_btns">
221
-      <button @click="goBack" type="default" class="primaryButton btn">返回</button>
224
+      <button @click="viewIncidentList()" type="default" class="primaryButton btn">返回事件列表</button>
225
+      <button v-if="dataInfo.incidentData.inspectionTaskId" @click="viewInspectionDetail(dataInfo.incidentData.inspectionTaskId)" type="default" class="primaryButton btn">查看巡检单</button>
222 226
     </view>
223 227
 		<uni-popup ref="popup" background-color="#fff" type="center" :before-close="true">
224 228
 			<view class="popup-content">
@@ -240,7 +244,6 @@
240 244
   import { defaultColor } from '@/static/js/theme.js'
241 245
   import { useSetTitle } from '@/share/useSetTitle.js'
242 246
   import { useMakePhoneCall } from '@/share/useMakePhoneCall.js'
243
-  import { useGoBack } from '@/share/useGoBack.js'
244 247
   import { useLoginUserStore } from '@/stores/loginUser'
245 248
   import { computedPriorityStyle } from '@/filters/computedPriorityStyle.js'
246 249
   import { computedStateStyle } from '@/filters/computedStateStyle.js'
@@ -249,7 +252,6 @@
249 252
   useSetTitle();
250 253
   const loginUserStore = useLoginUserStore();
251 254
   const { makePhoneCall }  = useMakePhoneCall();
252
-  const { goBack }  = useGoBack();
253 255
   const { priorityStyle }  = computedPriorityStyle();
254 256
   const { stateStyle }  = computedStateStyle();
255 257
   const { formatDate }  = filterFormatDate();
@@ -476,6 +478,20 @@
476 478
       dataInfo.handlerImgs = res.data;
477 479
     })
478 480
   }
481
+  
482
+  // 返回事件列表
483
+  function viewIncidentList(){
484
+    uni.reLaunch({
485
+      url: `/pages/incidentList/incidentList`
486
+    })
487
+  }
488
+  
489
+  // 查看巡检单
490
+  function viewInspectionDetail(inspectionTaskId){
491
+    uni.navigateTo({
492
+      url: `/pages/inspection/inspectionDetail/inspectionDetail?inspectionTaskId=${inspectionTaskId}`
493
+    })
494
+  }
479 495
 
480 496
   onLoad((option) => {
481 497
     dataInfo.incidentId = option.incidentId;

+ 575 - 0
pages/inspection/inspectionDetail/inspectionDetail.vue

@@ -0,0 +1,575 @@
1
+<template>
2
+  <view class="incidentDetail">
3
+    <view class="head">
4
+      <view class="tab" :class="{active: tab.value === dataInfo.tabActiveValue}" v-for="tab in dataInfo.tabs" :key="tab.id" @click="clickTab(tab.value)">
5
+        {{tab.name}}<text v-if="tab.num !== ''">({{tab.num}})</text>
6
+      </view>
7
+    </view>
8
+    <scroll-view scroll-y class="body">
9
+      <!-- 基础信息 -->
10
+      <template v-if="dataInfo.tabActiveValue === '1'">
11
+        <view class="detail_head">
12
+          <text class="title">计划批次信息</text>
13
+          <view class="other">
14
+            <view class="status" :style="{ color: dataInfo.inspectionTaskData.status == 1 ? 'red' : '' }">{{dataInfo.inspectionTaskData.status ? dataInfo.inspectionTaskData.status.name : ''}}</view>
15
+          </view>
16
+        </view>
17
+        <view class="detail_item_wrap">
18
+          <view class="deital_item">
19
+            <text class="name">单号:</text>
20
+            <text class="value">{{dataInfo.inspectionTaskData.code}}</text>
21
+          </view>
22
+          <view class="deital_item">
23
+            <text class="name">计划主题:</text>
24
+            <text class="value">{{dataInfo.inspectionTaskData.inspectionDTO?.name}}</text>
25
+          </view>
26
+          <view class="deital_item">
27
+            <text class="name">巡检点:</text>
28
+            <text class="value">{{dataInfo.inspectionTaskData.inspectionNodeDTO?.name }}</text>
29
+          </view>
30
+          <view class="deital_item">
31
+            <text class="name">巡检单:</text>
32
+            <text class="value">{{dataInfo.inspectionTaskData.inspectionDTO?.inspectionFormDTO?.name}}</text>
33
+          </view>
34
+          <view class="deital_item">
35
+            <text class="name">签到方式:</text>
36
+            <text class="value">{{dataInfo.inspectionTaskData.signType?.name}}</text>
37
+          </view>
38
+        </view>
39
+
40
+        <view class="detail_head">
41
+          <text class="title">执行信息</text>
42
+        </view>
43
+        <view class="detail_item_wrap">
44
+          <view class="deital_item">
45
+            <text class="name">创建时间:</text>
46
+            <text class="value">{{formatDate(dataInfo.inspectionTaskData.addTime, 'yyyy-MM-dd HH:mm')}}</text>
47
+          </view>
48
+          <view class="deital_item">
49
+            <text class="name">截止时间:</text>
50
+            <text class="value">{{formatDate(dataInfo.inspectionTaskData.overtime, 'yyyy-MM-dd HH:mm')}}</text>
51
+          </view>
52
+          <view class="deital_item">
53
+            <text class="name">完成时间:</text>
54
+            <text class="value">{{formatDate(dataInfo.inspectionTaskData.completeTime, 'yyyy-MM-dd HH:mm')}}</text>
55
+            <text class="value text_right">执行人:{{ dataInfo.inspectionTaskData.userDTO?.name || dataInfo.inspectionTaskData.groupDTO?.groupName }}</text>
56
+          </view>
57
+          <view class="deital_item">
58
+            <text class="name">故障单号:</text>
59
+            <text class="value">{{dataInfo.inspectionTaskData.incidentDTO?.incidentsign}}</text>
60
+            <text class="value text_right">{{dataInfo.inspectionTaskData.incidentDTO?.state?.name}}</text>
61
+          </view>
62
+          <view class="deital_item">
63
+            <text class="name">处理人/组:</text>
64
+            <text class="value">{{dataInfo.inspectionTaskData.incidentDTO?.groupORHandlerUser}}</text>
65
+          </view>
66
+        </view>
67
+      </template>
68
+
69
+      <!-- 巡检信息 -->
70
+      <template v-if="dataInfo.tabActiveValue === '2'">
71
+        <view class="info">
72
+          <view v-for="item in dataInfo.valueList" :key="item.id">
73
+            <view v-for="(value, i) in item" :key="i" class="infoItem">
74
+              <text class="name">{{value.name}}</text>
75
+              <template v-if="value.inspectionFormItemDTO">
76
+                <text v-if="value.inspectionFormItemDTO.type.value != 7" class="value" :class="{ red: value.exception === 1 }">{{getValuex(value)}}</text>
77
+                <view class="deital_item" v-if="value.inspectionFormItemDTO.type.value == 7">
78
+                  <view class="value img">
79
+                    <image class="resourceItem" :src="img.thumbFilePath" mode="aspectFill" v-for="(img, i) in value.valuex" :key="i" @click="previewImg(i, 'inspectionTaskImgs', value.valuex)"></image>
80
+                  </view>
81
+                </view>
82
+              </template>
83
+            </view>
84
+          </view>
85
+        </view>
86
+      </template>
87
+
88
+      <!-- 流程图 -->
89
+      <template v-if="dataInfo.tabActiveValue === '3'">
90
+        <view class="process_item_wrap">
91
+          <view class="process_item" v-for="item in dataInfo.logList" :key="item.id">
92
+            <view class="process_item_top">
93
+              <view class="name">{{item.operationType?.name }}</view>
94
+              <view class="value" v-if="item.remarks">({{item.remarks}})</view>
95
+            </view>
96
+            <view class="process_item_bottom">
97
+              <text class="name">{{formatDate(item.operationTime, 'yyyy-MM-dd HH:mm:ss')}}</text>
98
+              <text class="value" v-if="item.username">{{item.username}}</text>
99
+            </view>
100
+          </view>
101
+        </view>
102
+      </template>
103
+
104
+    </scroll-view>
105
+    <view class="foot_common_btns">
106
+      <button @click="viewInspectionExecute()" type="default" class="primaryButton btn">返回巡检列表</button>
107
+      <button v-if="dataInfo.inspectionTaskData.incidentId" @click="viewIncidentDetail(dataInfo.inspectionTaskData.incidentId)" type="default" class="primaryButton btn">查看故障单</button>
108
+    </view>
109
+  </view>
110
+</template>
111
+
112
+<script setup>
113
+  import chunk from 'lodash-es/chunk'
114
+  import { ref, reactive } from 'vue'
115
+  import { onLoad } from '@dcloudio/uni-app'
116
+  import { api_listAttachment, api_inspectionTaskDetail, api_inspectionFormValues } from "@/http/api.js"
117
+  import { defaultColor } from '@/static/js/theme.js'
118
+  import { useSetTitle } from '@/share/useSetTitle.js'
119
+  import { filterFormatDate } from '@/filters/filterFormatDate.js'
120
+
121
+  useSetTitle();
122
+  const { formatDate }  = filterFormatDate();
123
+
124
+  // 主题颜色
125
+  const primaryColor = ref(defaultColor)
126
+	
127
+  // 数据
128
+  const dataInfo = reactive({
129
+    tabs: [
130
+      {id: 1, name: '基础信息', value: '1', num: ''},
131
+      // {id: 2, name: '巡检信息', value: '2', num: ''},
132
+      {id: 3, name: '流程图', value: '3', num: ''},
133
+    ],
134
+    tabActiveValue: 0,//当前选择的tab
135
+    inspectionTaskId: undefined,//巡检执行ID
136
+    inspectionTaskData: {},//巡检执行对象
137
+    inspectionTaskImgs: [],//巡检图片
138
+    valueList: [],//巡检信息
139
+    logList: [],//流程图
140
+  })
141
+  
142
+  function getValuex(value){
143
+    return value.formItemConfigList ? value.formItemConfigList.map(v => v.valuex).toString() : value.valuex;
144
+  }
145
+
146
+  // 获取巡检信息
147
+  function getValue(){
148
+    uni.showLoading({
149
+      title: "加载中",
150
+      mask: true,
151
+    });
152
+    let postData = {
153
+        "idx": 0,
154
+        "sum": 9999,
155
+        "inspectionFormValues": {
156
+          taskId: dataInfo.inspectionTaskId,
157
+        }
158
+    };
159
+    api_inspectionFormValues(postData).then(res => {
160
+      uni.hideLoading();
161
+      if(res.status == 200){
162
+        let valueList = res.list || [];
163
+        let imgFlag = valueList.some(v => v.inspectionFormItemDTO.type.value == 7);
164
+
165
+        if(imgFlag){
166
+          valueList.forEach(v => {
167
+            if(v.inspectionFormItemDTO.type.value == 7){
168
+              v.valuex = [];
169
+            }
170
+          })
171
+        }
172
+
173
+        dataInfo.valueList = chunk(valueList, 3);
174
+
175
+        if(imgFlag){
176
+          getInspectionImgs();
177
+        }
178
+      }else{
179
+        uni.showToast({
180
+          icon: 'none',
181
+          title: res.msg || '请求数据失败!'
182
+        });
183
+      }
184
+    })
185
+  }
186
+
187
+  // 预览图片
188
+  function previewImg(index, type, imgList){
189
+    uni.previewImage({
190
+      current: index,
191
+      urls: imgList.map(v => v.previewUrl),
192
+      longPressActions: {
193
+        itemList: ['发送给朋友', '保存图片', '收藏'],
194
+        success: function(data) {
195
+          console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
196
+        },
197
+        fail: function(err) {
198
+          console.log(err.errMsg);
199
+        }
200
+      }
201
+    });
202
+  }
203
+
204
+  // 初始化表单
205
+  function initForm(){
206
+    if(dataInfo.tabActiveValue === '1'){
207
+      
208
+    }else if(dataInfo.tabActiveValue === '2'){
209
+      getValue();
210
+    }else if(dataInfo.tabActiveValue === '3'){
211
+      
212
+    }
213
+  }
214
+
215
+  // 点击tab
216
+  function clickTab(tabValue){
217
+    if(dataInfo.tabActiveValue == tabValue){
218
+      return;
219
+    }
220
+    dataInfo.tabActiveValue = tabValue;
221
+    initForm()
222
+  }
223
+
224
+  // 获取巡检执行详情
225
+  function getInspectionTaskDetail(){
226
+    uni.showLoading({
227
+      title: "加载中",
228
+      mask: true,
229
+    });
230
+
231
+    api_inspectionTaskDetail(dataInfo.inspectionTaskId).then(res => {
232
+      uni.hideLoading();
233
+      if(res.status == 200){
234
+        dataInfo.inspectionTaskData = res.data || {};
235
+        dataInfo.logList = dataInfo.inspectionTaskData.logList || [];
236
+        
237
+        // 巡检信息
238
+        if(dataInfo.inspectionTaskData.status.value === '2'){
239
+          let flag = dataInfo.tabs.some(v => v.value === '2');
240
+          !flag && dataInfo.tabs.splice(1, 0, {id: 2, name: '巡检信息', value: '2', num: ''});
241
+        }
242
+        
243
+        dataInfo.tabActiveValue = dataInfo.tabs[0].value;
244
+        initForm()
245
+      }else{
246
+        uni.showToast({
247
+          icon: 'none',
248
+          title: res.msg || '请求数据失败!'
249
+        });
250
+      }
251
+    })
252
+  }
253
+	
254
+  // 获取巡检图片
255
+  function getInspectionImgs(){
256
+    uni.showLoading({
257
+      title: "加载中",
258
+      mask: true,
259
+    });
260
+    api_listAttachment('inspection', dataInfo.inspectionTaskId).then(res => {
261
+      uni.hideLoading();
262
+      res.data = res.data || [];
263
+      res.data.forEach(v => {
264
+        v.previewUrl = location.origin + "/file" + v.relativeFilePath;
265
+        v.thumbFilePath = location.origin + "/file" + v.thumbFilePath;
266
+      })
267
+      
268
+      let imgList = res.data || [];
269
+      dataInfo.valueList.forEach(v => {
270
+        v.forEach(vv => {
271
+          imgList.forEach(item => {
272
+            if(vv.itemId == item.recordId){
273
+              if(vv.valuex && vv.valuex.length){
274
+                vv.valuex.push(item)
275
+              }else{
276
+                vv.valuex = [item];
277
+              }
278
+            }
279
+          })
280
+        })
281
+      })
282
+    })
283
+  }
284
+
285
+  // 返回巡检列表
286
+  function viewInspectionExecute(){
287
+    uni.reLaunch({
288
+      url: `/pages/inspection/inspectionExecute/inspectionExecute`
289
+    })
290
+  }
291
+  
292
+  // 查看故障单
293
+  function viewIncidentDetail(incidentId){
294
+    uni.navigateTo({
295
+      url: `/pages/incidentDetail/incidentDetail?incidentId=${incidentId}`
296
+    })
297
+  }
298
+
299
+  onLoad((option) => {
300
+    dataInfo.inspectionTaskId = option.inspectionTaskId;
301
+		getInspectionTaskDetail();
302
+  })
303
+</script>
304
+
305
+<style lang="scss" scoped>
306
+.popup-content{
307
+	padding: 40rpx;
308
+}
309
+.incidentDetail{
310
+  height: 100%;
311
+  display: flex;
312
+  flex-direction: column;
313
+  justify-content: space-between;
314
+  .head{
315
+    height: 88rpx;
316
+    display: flex;
317
+    position: fixed;
318
+    z-index: 99;
319
+    width: 100%;
320
+    background-color: #fff;
321
+    font-size: 30rpx;
322
+    .tab{
323
+      flex: 1;
324
+      display: flex;
325
+      justify-content: center;
326
+      align-items: center;
327
+      border-bottom: 4rpx solid transparent;
328
+      position: relative;
329
+      &:last-of-type{
330
+        &:after{
331
+          display: none;
332
+        }
333
+      }
334
+      &:after{
335
+        content: '';
336
+        position: absolute;
337
+        right: 0;
338
+        top: 50%;
339
+        transform: translateY(-50%);
340
+        width: 1rpx;
341
+        height: 44rpx;
342
+        background-color: #515151;
343
+      }
344
+      &.active{
345
+        color: $uni-primary;
346
+        border-color: $uni-primary;
347
+      }
348
+    }
349
+  }
350
+  .body{
351
+    margin-top: 88rpx;
352
+    box-sizing: border-box;
353
+    flex: 1;
354
+    min-height: 0;
355
+    border-top: 7rpx solid #EBEBEB;
356
+    .phone-filled{
357
+      margin-left: 5rpx;
358
+    }
359
+    .mic-filled{
360
+      margin-right: 100rpx;
361
+    }
362
+    .detail_item_wrap{
363
+      padding-bottom: 24rpx;
364
+    }
365
+    .detail_head{
366
+      padding: 24rpx;
367
+      border-top: 1rpx solid #D2D2D2;
368
+      border-bottom: 1rpx solid #D2D2D2;
369
+      display: flex;
370
+      justify-content: space-between;
371
+      align-items: center;
372
+      &:first-of-type{
373
+        border-top: none;
374
+      }
375
+      .title{
376
+        font-size: 26rpx;
377
+        color: $uni-primary;
378
+        padding-left: 18rpx;
379
+        position: relative;
380
+        &:before{
381
+          content: '';
382
+          width: 8rpx;
383
+          height: 25rpx;
384
+          background-color: $uni-primary;
385
+          position: absolute;
386
+          left: 0;
387
+          top: 50%;
388
+          transform: translateY(-50%);
389
+        }
390
+      }
391
+      .other{
392
+        display: flex;
393
+        align-items: center;
394
+        .priority{
395
+          font-size: 26rpx;
396
+          margin-right: 15rpx;
397
+        }
398
+        .status{
399
+          font-size: 26rpx;
400
+        }
401
+      }
402
+    }
403
+
404
+    .deital_item{
405
+      font-size: 26rpx;
406
+      color: #555;
407
+      padding: 24rpx 24rpx 0;
408
+      display: flex;
409
+      align-items: center;
410
+      .name{
411
+        width: 8em;
412
+        margin-right: 24rpx;
413
+      }
414
+      .value{
415
+        flex: 1;
416
+        word-break: break-all;
417
+        &.img{
418
+          display: flex;
419
+          .imgItem{
420
+            width: 82rpx;
421
+            height: 82rpx;
422
+            margin-right: 24rpx;
423
+            &:last-of-type{
424
+              margin-right: 0;
425
+            }
426
+          }
427
+					.resourceItem{
428
+						width: 100rpx;
429
+						height: 100rpx;
430
+						margin-right: 24rpx;
431
+						&:last-of-type{
432
+						  margin-right: 0;
433
+						}
434
+					}
435
+					.resourceItem-audio{
436
+						width: 300rpx;
437
+						height: 60rpx;
438
+					}
439
+        }
440
+      }
441
+    }
442
+
443
+    .summaryItem_bodyItem{
444
+      padding: 24rpx 24rpx 0;
445
+      font-size: 26rpx;
446
+      .summaryItem_bodyItem_top{
447
+        display: flex;
448
+        justify-content: space-between;
449
+        align-items: center;
450
+        .value{
451
+          padding-left: 48rpx;
452
+          flex-shrink: 0;
453
+        }
454
+      }
455
+      .summaryItem_bodyItem_bottom{
456
+        margin-top: 24rpx;
457
+        display: flex;
458
+        justify-content: space-between;
459
+        align-items: center;
460
+        .name{
461
+          text-align: right;
462
+          flex: 1;
463
+        }
464
+        .value{
465
+          width: 220rpx;
466
+          text-align: right;
467
+          flex-shrink: 0;
468
+        }
469
+      }
470
+    }
471
+
472
+    .summaryItem_bodyItem_total{
473
+      text-align: right;
474
+      padding: 24rpx;
475
+      font-size: 26rpx;
476
+    }
477
+
478
+    .summaryItem_total{
479
+      text-align: center;
480
+      padding-top: 24rpx;
481
+      font-size: 32rpx;
482
+      font-weight: bold;
483
+      color: $uni-primary;
484
+      border-top: 1rpx solid #D2D2D2;
485
+    }
486
+    
487
+    .info{
488
+      padding: 0 24rpx 32rpx;
489
+      .infoItem{
490
+        display: flex;
491
+        align-items: center;
492
+        justify-content: space-between;
493
+        margin-top: 32rpx;
494
+        .name{
495
+          word-break: break-all;
496
+          width: 33.33%;
497
+          flex-shrink: 0;
498
+        }
499
+        .value{
500
+          word-break: break-all;
501
+          margin-left: 24rpx;
502
+        }
503
+      }
504
+    }
505
+
506
+    .process_item_wrap{
507
+      padding: 38rpx;
508
+      .process_item{
509
+        &:last-of-type{
510
+          .process_item_bottom{
511
+            border-left: none;
512
+          }
513
+        }
514
+        .process_item_top{
515
+          padding-left: 30rpx;
516
+          display: flex;
517
+          align-items: center;
518
+          position: relative;
519
+          &:before{
520
+            content: '';
521
+            position: absolute;
522
+            left: -13rpx;
523
+            top: 50%;
524
+            width: 26rpx;
525
+            height: 26rpx;
526
+            border-radius: 50%;
527
+            background-color: $uni-primary;
528
+            transform: translateY(-50%);
529
+          }
530
+          .name{
531
+            font-size: 30rpx;
532
+          }
533
+          .value{
534
+            margin-left: 20rpx;
535
+            font-size: 22rpx;
536
+            color: #A1A1A1;
537
+						flex: 1;
538
+          }
539
+        }
540
+        .process_item_bottom{
541
+          min-height: 82rpx;
542
+          border-left: 1rpx solid #B7BDC6;
543
+          margin-top: 5rpx;
544
+          padding-left: 30rpx;
545
+          display: flex;
546
+          font-size: 24rpx;
547
+          color: #A1A1A1;
548
+          .value{
549
+            margin-left: 20rpx;
550
+          }
551
+        }
552
+      }
553
+    }
554
+
555
+    .appraise_detail{
556
+      padding: 24rpx 24rpx 24rpx 40rpx;
557
+      .appraise_detail_top{
558
+        display: flex;
559
+        align-items: center;
560
+        justify-content: space-between;
561
+        font-size: 26rpx;
562
+        .name{
563
+          color: #A1A1A1;
564
+        }
565
+        .value{}
566
+      }
567
+      .appraise_detail_bottom{
568
+        font-size: 30rpx;
569
+        margin-top: 24rpx;
570
+        word-break: break-all;
571
+      }
572
+    }
573
+  }
574
+}
575
+</style>

+ 12 - 1
pages/inspection/inspectionExecute/inspectionExecute.vue

@@ -9,7 +9,7 @@
9 9
       </view>
10 10
     </view>
11 11
     <view class="body" v-if="dataInfo.list.length">
12
-      <view class="body_item" v-for="data in dataInfo.list" :key="data.id">
12
+      <view class="body_item" v-for="data in dataInfo.list" :key="data.id" @click="toInspectionTaskDetail(data)">
13 13
         <view class="body_item_head ellipsis-multiline">
14 14
           <text class="sign" v-if="data.status.value == 2" :class="{signRed: data.exception == 1}">{{data.exception == 1 ? '异常' : '正常'}}</text>{{ data.inspectionDTO?.inspectionFormDTO?.name }}-{{ data.inspectionNodeDTO?.name }}-{{ data.batchNo }}
15 15
         </view>
@@ -28,6 +28,10 @@
28 28
             <text class="name ellipsis">状态:{{ data.status?.name}}</text>
29 29
             <text class="date">{{formatDate(data.addTime, 'yyyy-MM-dd HH:mm')}}</text>
30 30
           </view>
31
+          <view class="body_item_content_p" v-if="data.incidentDTO">
32
+            <text class="name ellipsis">故障单号:{{ data.incidentDTO.incidentsign}}</text>
33
+            <text class="date">{{ data.incidentDTO.state?.name}}</text>
34
+          </view>
31 35
         </view>
32 36
 
33 37
         <view class="body_item_foot">
@@ -112,6 +116,13 @@
112 116
     },//筛选框数据
113 117
   })
114 118
   
119
+  // 详情
120
+  function toInspectionTaskDetail(data){
121
+    uni.navigateTo({
122
+      url: `/pages/inspection/inspectionDetail/inspectionDetail?inspectionTaskId=${data.id}`
123
+    })
124
+  }
125
+  
115 126
   // 扫一扫
116 127
   function scanning(){
117 128
     uni.showLoading({

+ 4 - 0
pages/inspection/inspectionScanning/inspectionScanning.vue

@@ -26,6 +26,10 @@
26 26
             <text class="name ellipsis">状态:{{ data.status?.name}}</text>
27 27
             <text class="date">{{formatDate(data.addTime, 'yyyy-MM-dd HH:mm')}}</text>
28 28
           </view>
29
+          <view class="body_item_content_p" v-if="data.incidentDTO">
30
+            <text class="name ellipsis">故障单号:{{ data.incidentDTO.incidentsign}}</text>
31
+            <text class="date">{{ data.incidentDTO.state?.name}}</text>
32
+          </view>
29 33
         </view>
30 34
 
31 35
         <view class="body_item_foot">

+ 5 - 0
static/scss/common.scss

@@ -49,6 +49,11 @@ uni-toast,
49 49
   text-align: left;
50 50
 }
51 51
 
52
+// 居右
53
+.text_right{
54
+  text-align: right;
55
+}
56
+
52 57
 // 两端对齐
53 58
 .text_justify{
54 59
   text-align: justify;