From c21f07409b872e99e43216f0e665d10bba2305ac Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 20 十一月 2024 11:49:26 +0800
Subject: [PATCH] 运行监控导出

---
 src/views/system/work-order/detail/index.vue |  125 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 117 insertions(+), 8 deletions(-)

diff --git a/src/views/system/work-order/detail/index.vue b/src/views/system/work-order/detail/index.vue
index 8ede435..71d323d 100644
--- a/src/views/system/work-order/detail/index.vue
+++ b/src/views/system/work-order/detail/index.vue
@@ -29,7 +29,8 @@
               </div>
               <div class="item-warp">
                 <div>澶勭悊鏃堕檺锛�</div>
-                <div>{{workOrderInfo.processingPeriod}}(灏忔椂)</div>
+                <div v-if="workOrderInfo.processingPeriod">{{workOrderInfo.processingPeriod}}(灏忔椂)</div>
+                <div v-else>鏃�</div>
               </div>
               <div class="item-warp">
                 <div>涓嬪彂鏃堕棿锛�</div>
@@ -64,10 +65,10 @@
               </div>
               <div style="margin-left: 2px">鏄惁鎶ュ</div>
             </div>
-            <div class="warp">
+            <div class="warp" style="display: flex;flex-direction: row;align-items: center">
               <div v-if="workOrderInfo.hasReport"><el-link @click type="primary">{{workOrderInfo.hasReport ? '宸叉姤澶�' : '鏈姤澶�'}}</el-link></div>
               <div v-else>{{workOrderInfo.hasReport ? '宸叉姤澶�' : '鏈姤澶�'}}</div>
-              <div v-if="!workOrderInfo.hasReport"><el-link type="primary">浜嬪悗鎶ュ</el-link></div>
+              <div v-if="!workOrderInfo.hasReport"><el-link type="primary">(浜嬪悗鎶ュ)</el-link></div>
             </div>
           </div>
           <div class="info-item weight4">
@@ -77,11 +78,16 @@
               </div>
               <div style="margin-left: 2px">澶勭悊缁撴灉</div>
             </div>
-            <div class="warp">{{covertStatus(workOrderInfo.status)}}</div>
+            <div class="warp" style="display: flex;flex-direction: row;align-items: center">
+              <div>{{covertStatus(workOrderInfo.status)}}</div>
+              <div v-if="workOrderInfo.status ==='YW_HANDLE'">
+                <el-link type="primary" @click="handleAuditing">(瀹℃牳)</el-link>
+              </div>
+            </div>
           </div>
         </div>
       </el-tab-pane>
-      <el-tab-pane v-loading="loading2" name="report" label="鎶ュ淇℃伅">
+      <el-tab-pane v-loading="loading2" name="report" label="鎶ュ璁板綍">
         <div v-if="reportList && reportList.length > 0">
           <el-timeline>
             <el-timeline-item
@@ -106,20 +112,77 @@
         </div>
         <el-empty v-else description="鏈煡鍒版姤澶囦俊鎭�"></el-empty>
       </el-tab-pane>
-      <el-tab-pane v-loading="loading3" name="handle" label="杩愮淮淇℃伅">瑙掕壊绠$悊</el-tab-pane>
-      <el-tab-pane v-loading="loading4" name="auditing" label="瀹℃牳淇℃伅">瀹氭椂浠诲姟琛ュ伩</el-tab-pane>
+      <el-tab-pane v-loading="loading3" name="handle" label="澶勭悊璁板綍">
+        <div v-if="ywList && ywList.length > 0">
+          <el-timeline>
+            <el-timeline-item
+              placement="top"
+              v-for="(yw, index) in ywList"
+              :key="index"
+              :timestamp="yw.createTime">
+              <div>
+                <div style="margin: 8px 0">
+                  <el-link
+                    v-for="item in yw.ywProofMaterials != null ? yw.ywProofMaterials.split(',') : yw.ywProofMaterials"
+                    :underline="false" type="primary" :key="item" @click="handleDownload(item)">{{ item.substring(item.lastIndexOf("/") + 1)
+                    }}</el-link>
+                </div>
+                <div v-html="yw.ywCondition"></div>
+              </div>
+            </el-timeline-item>
+          </el-timeline>
+        </div>
+        <el-empty v-else description="鏈煡鍒拌繍缁村鐞嗕俊鎭�"></el-empty>
+      </el-tab-pane>
+      <el-tab-pane v-loading="loading4" name="auditing" label="瀹℃牳璁板綍">
+        <div v-if="auditingList && auditingList.length > 0">
+          <el-timeline>
+            <el-timeline-item
+              placement="top"
+              v-for="(auditing, index) in auditingList"
+              :key="index"
+              :timestamp="auditing.createTime">
+              <div>
+                <div style="margin: 8px 0"><el-tag :type="auditing.result === '瀹℃牳閫氳繃' ? 'success' : 'warning'">{{auditing.result}}</el-tag></div>
+                <div v-html="auditing.remark"></div>
+              </div>
+            </el-timeline-item>
+          </el-timeline>
+        </div>
+        <el-empty v-else description="鏈煡鍒板鏍镐俊鎭�"></el-empty>
+      </el-tab-pane>
     </el-tabs>
+    <div class="work-order-img">
+      <div class="img-info" v-for="(img, index) in workOrderInfo.imgList" :key="index">
+        <div>
+          <el-image
+            style="width: 100%; height: auto"
+            :src="getImgUrl(img.imgUrl)"
+            :preview-src-list="workOrderInfo.imgList.map(i => getImgUrl(i.imgUrl))"
+            >
+          </el-image>
+        </div>
+        <div style="margin-top: 8px;text-align: center">{{img.createTime}}</div>
+      </div>
+    </div>
+
+    <WorkOrderAuditing :auditingOpen="auditingOpen" :dataForm="auditingForm" :ywConditions="ywConditions" @close="closeAuditing"/>
 
   </div>
 </template>
 
 <script>
-import {getWorkOrderInfo} from '@/api/platform/work-order'
+import {getWorkOrderInfo, getYwConditionList, getYwAuditingList, getYwCondition, listWorkOrder} from '@/api/platform/work-order'
 import {getReportByGb} from '@/api/platform/report'
+import WorkOrderAuditing from "@/components/WorkOrder/WorkOrderAuditing";
 export default {
   name: "index",
+  components: {WorkOrderAuditing},
   data() {
     return {
+      ywConditions: [],
+      auditingOpen: false,
+      auditingForm: {},
       selectedTab: 'workorder',
       loading1: false,
       loading2: false,
@@ -141,6 +204,8 @@
         hasReport: null
       },
       reportList: [],
+      ywList: [],
+      auditingList: [],
       workOrderNo: ''
     }
   },
@@ -149,6 +214,21 @@
     this.getWorkOrder()
   },
   methods: {
+
+    closeAuditing() {
+      this.auditingOpen = false
+    },
+    // 瀹℃牳鎸夐挳
+    handleAuditing() {
+      this.auditingForm = this.workOrderInfo
+      getYwCondition(this.workOrderInfo.workOrderNo).then(response => {
+        this.ywConditions = response.data
+        this.auditingOpen = true
+      })
+    },
+    getImgUrl(path) {
+      return this.$img + path;
+    },
     getWorkOrder() {
       this.loading1 = true
       getWorkOrderInfo(this.workOrderInfo.workOrderNo).then(res => {
@@ -161,6 +241,20 @@
       getReportByGb(this.workOrderInfo.serialNumber).then(res => {
         this.reportList = res.data
         this.loading2 = false
+      })
+    },
+    getYw() {
+      this.loading3 = true;
+      getYwConditionList(this.workOrderInfo.workOrderNo).then(res => {
+        this.ywList = res.data
+        this.loading3 = false
+      })
+    },
+    getAuditing() {
+      this.loading4 = true;
+      getYwAuditingList(this.workOrderInfo.workOrderNo).then(res => {
+        this.auditingList = res.data
+        this.loading4 = false
       })
     },
     covertStatus(status) {
@@ -179,6 +273,10 @@
         this.getWorkOrder()
       } else if (tab.name === 'report') {
         this.getReport()
+      } else if (tab.name === 'handle') {
+        this.getYw()
+      } else if (tab.name === 'auditing') {
+        this.getAuditing()
       }
 
     },
@@ -190,6 +288,17 @@
 </script>
 
 <style scoped>
+.img-info {
+  flex: 0 0 calc(20% - 8px); /* 姣忚浜斾釜锛屾墍浠ユ瘡涓崰20%锛屽噺鍘婚棿璺� */
+  box-sizing: border-box;
+}
+
+.work-order-img {
+  margin-top: 15px;
+  display: flex;
+  flex-wrap: wrap;
+  gap: 8px; /* 鍙�夛細璁剧疆鍥剧墖涔嬮棿鐨勯棿璺� */
+}
 .work-order-info {
   width: 100%;
   display: flex;

--
Gitblit v1.8.0