From b32150d1fd576fa3b89e85e2f99be2edc67b9293 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期二, 17 九月 2024 16:26:15 +0800
Subject: [PATCH] 工单详情页优化

---
 src/views/system/work-order/detail/index.vue   |   32 +++++++-
 src/components/WorkOrder/WorkOrderAuditing.vue |  116 +++++++++++++++++++++++++++++
 src/views/system/work-order/index.vue          |   91 ++++++++++++----------
 3 files changed, 192 insertions(+), 47 deletions(-)

diff --git a/src/components/WorkOrder/WorkOrderAuditing.vue b/src/components/WorkOrder/WorkOrderAuditing.vue
new file mode 100644
index 0000000..dfcddaf
--- /dev/null
+++ b/src/components/WorkOrder/WorkOrderAuditing.vue
@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <el-dialog title="宸ュ崟瀹℃牳" :visible.sync="auditingOpen" width="1000px" append-to-body>
+      <el-row :gutter="20">
+        <el-col :span="10">
+          <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px">
+            <el-form-item label="宸ュ崟鍙�" prop="workOrderNo">
+              <el-input v-model="auditingForm.workOrderNo" disabled/>
+            </el-form-item>
+            <el-form-item label="鏁呴殰鐐逛綅" prop="source">
+              <el-input v-model="auditingForm.source" disabled/>
+            </el-form-item>
+            <el-form-item label="杩愮淮鍗曚綅" prop="unitName">
+              <el-input v-model="auditingForm.unitName" disabled/>
+            </el-form-item>
+            <el-form-item label="瀹℃牳缁撴灉" prop="auditingResult">
+              <el-radio-group v-model="auditingForm.auditingResult">
+                <el-radio label="AUDITING_SUCCESS">閫氳繃</el-radio>
+                <el-radio label="AUDITING_FAIL">椹冲洖</el-radio>
+              </el-radio-group>
+
+            </el-form-item>
+            <el-form-item label="瀹℃牳澶囨敞" prop="auditingRemark">
+              <el-input v-model="auditingForm.auditingRemark" type="textarea" maxlength="30" show-word-limit/>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="14" style="max-height: 500px; overflow-y: auto">
+          <el-timeline v-if="ywConditions && ywConditions.length > 0">
+            <el-timeline-item v-for="(condition, index) in ywConditions" :key="index"
+                              :timestamp="condition.unitName + '___' + condition.createTime" placement="top"
+            >
+              <el-card>
+                <div v-html="condition.ywCondition"></div>
+                <el-link type="primary"
+                         v-for="item in condition.ywProofMaterials != null ? condition.ywProofMaterials.split(',') : condition.ywProofMaterials"
+                         :underline="false" :key="item.id" @click="handleDownload(item)"
+                >{{ item.substring(item.lastIndexOf('/') + 1) }}
+                </el-link>
+              </el-card>
+            </el-timeline-item>
+          </el-timeline>
+          <el-empty v-else description="娌℃湁澶勭悊璁板綍"></el-empty>
+        </el-col>
+      </el-row>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="cancelAuditing">鍙� 娑�</el-button>
+        <el-button type="primary" @click="submitAuditing">瀹� 鏍�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { auditing } from '@/api/platform/work-order'
+export default {
+  name: "WorkOrderAuditing",
+  props: {
+    auditingOpen: {
+      type: Boolean,
+      required: true,
+      default: false
+    },
+    dataForm: {
+      type: Object,
+      required: true,
+    },
+    ywConditions: {
+      type: Array,
+      required: true,
+    },
+  },
+  data() {
+    return {
+      auditingForm: {},
+      auditingRules: {
+        auditingResult: [
+          { required: true, message: '瀹℃牳缁撴灉涓嶈兘涓虹┖', trigger: 'blur' }
+        ]
+      },
+    }
+  },
+  methods: {
+    // 鎻愪氦瀹℃牳
+    submitAuditing() {
+      this.$refs['auditingForm'].validate(valid => {
+        if (valid) {
+          auditing(this.auditingForm).then(res => {
+            this.$emit('close', false);
+            this.$modal.msgSuccess('鎿嶄綔鎴愬姛')
+            this.getList()
+          })
+        }
+      })
+    },
+    // 鍙栨秷瀹℃牳
+    cancelAuditing() {
+      this.auditingForm = {}
+      this.$emit('close');
+    },
+  },
+  watch: {
+    dataForm: {
+      handler(n, o) {
+        this.auditingForm = n
+      },
+      deep: true
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/system/work-order/detail/index.vue b/src/views/system/work-order/detail/index.vue
index f2b66fd..88a65cb 100644
--- a/src/views/system/work-order/detail/index.vue
+++ b/src/views/system/work-order/detail/index.vue
@@ -65,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">
@@ -78,7 +78,12 @@
               </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>
@@ -159,16 +164,24 @@
         <div style="margin-top: 8px">{{img.createTime}}</div>
       </div>
     </div>
+
+    <WorkOrderAuditing :auditingOpen="auditingOpen" :dataForm="auditingForm" :ywConditions="ywConditions" @close="closeAuditing"/>
+
   </div>
 </template>
 
 <script>
-import {getWorkOrderInfo, getYwConditionList, getYwAuditingList} 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,
@@ -200,6 +213,17 @@
     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;
     },
diff --git a/src/views/system/work-order/index.vue b/src/views/system/work-order/index.vue
index 23a5fff..593c822 100644
--- a/src/views/system/work-order/index.vue
+++ b/src/views/system/work-order/index.vue
@@ -193,49 +193,50 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="宸ュ崟瀹℃牳" :visible.sync="auditingOpen" width="1000px" append-to-body>
-      <el-row :gutter="20">
-        <el-col :span="10">
-          <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px">
-            <el-form-item label="宸ュ崟鍙�" prop="workOrderNo">
-              <el-input v-model="auditingForm.workOrderNo" disabled/>
-            </el-form-item>
-            <el-form-item label="杩愮淮鍗曚綅" prop="unitName">
-              <el-input v-model="auditingForm.unitName" disabled/>
-            </el-form-item>
-            <el-form-item label="瀹℃牳缁撴灉" prop="auditingResult">
-              <el-radio v-model="auditingForm.auditingResult" label="AUDITING_SUCCESS">閫氳繃</el-radio>
-              <el-radio v-model="auditingForm.auditingResult" label="AUDITING_FAIL">椹冲洖</el-radio>
-            </el-form-item>
-            <el-form-item label="瀹℃牳澶囨敞" prop="auditingRemark">
-              <el-input v-model="auditingForm.auditingRemark" type="textarea" maxlength="30" show-word-limit/>
-            </el-form-item>
-          </el-form>
-        </el-col>
-        <el-col :span="14" style="max-height: 500px; overflow-y: auto">
-          <el-timeline v-if="ywConditions && ywConditions.length > 0">
-            <el-timeline-item v-for="(condition, index) in ywConditions" :key="index"
-                              :timestamp="condition.commitUserName + '___' + condition.createTime" placement="top"
-            >
-              <el-card>
-                <div v-html="condition.ywCondition"></div>
-                <el-link type="primary"
-                         v-for="item in condition.ywProofMaterials != null ? condition.ywProofMaterials.split(',') : condition.ywProofMaterials"
-                         :underline="false" :key="item.id" @click="handleDownload(item)"
-                >{{ item.substring(item.lastIndexOf('/') + 1) }}
-                </el-link>
-              </el-card>
-            </el-timeline-item>
-          </el-timeline>
-          <el-empty v-else description="娌℃湁澶勭悊璁板綍"></el-empty>
-        </el-col>
-      </el-row>
+    <WorkOrderAuditing :auditingOpen="auditingOpen" :dataForm="auditingForm" :ywConditions="ywConditions" @close="closeAuditing"/>
+<!--    <el-dialog title="宸ュ崟瀹℃牳" :visible.sync="auditingOpen" width="1000px" append-to-body>-->
+<!--      <el-row :gutter="20">-->
+<!--        <el-col :span="10">-->
+<!--          <el-form ref="auditingForm" :model="auditingForm" :rules="auditingRules" label-width="80px">-->
+<!--            <el-form-item label="宸ュ崟鍙�" prop="workOrderNo">-->
+<!--              <el-input v-model="auditingForm.workOrderNo" disabled/>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="杩愮淮鍗曚綅" prop="unitName">-->
+<!--              <el-input v-model="auditingForm.unitName" disabled/>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="瀹℃牳缁撴灉" prop="auditingResult">-->
+<!--              <el-radio v-model="auditingForm.auditingResult" label="AUDITING_SUCCESS">閫氳繃</el-radio>-->
+<!--              <el-radio v-model="auditingForm.auditingResult" label="AUDITING_FAIL">椹冲洖</el-radio>-->
+<!--            </el-form-item>-->
+<!--            <el-form-item label="瀹℃牳澶囨敞" prop="auditingRemark">-->
+<!--              <el-input v-model="auditingForm.auditingRemark" type="textarea" maxlength="30" show-word-limit/>-->
+<!--            </el-form-item>-->
+<!--          </el-form>-->
+<!--        </el-col>-->
+<!--        <el-col :span="14" style="max-height: 500px; overflow-y: auto">-->
+<!--          <el-timeline v-if="ywConditions && ywConditions.length > 0">-->
+<!--            <el-timeline-item v-for="(condition, index) in ywConditions" :key="index"-->
+<!--                              :timestamp="condition.commitUserName + '___' + condition.createTime" placement="top"-->
+<!--            >-->
+<!--              <el-card>-->
+<!--                <div v-html="condition.ywCondition"></div>-->
+<!--                <el-link type="primary"-->
+<!--                         v-for="item in condition.ywProofMaterials != null ? condition.ywProofMaterials.split(',') : condition.ywProofMaterials"-->
+<!--                         :underline="false" :key="item.id" @click="handleDownload(item)"-->
+<!--                >{{ item.substring(item.lastIndexOf('/') + 1) }}-->
+<!--                </el-link>-->
+<!--              </el-card>-->
+<!--            </el-timeline-item>-->
+<!--          </el-timeline>-->
+<!--          <el-empty v-else description="娌℃湁澶勭悊璁板綍"></el-empty>-->
+<!--        </el-col>-->
+<!--      </el-row>-->
 
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="cancelAuditing">鍙� 娑�</el-button>
-        <el-button type="primary" @click="submitAuditing">瀹� 鏍�</el-button>
-      </div>
-    </el-dialog>
+<!--      <div slot="footer" class="dialog-footer">-->
+<!--        <el-button @click="cancelAuditing">鍙� 娑�</el-button>-->
+<!--        <el-button type="primary" @click="submitAuditing">瀹� 鏍�</el-button>-->
+<!--      </div>-->
+<!--    </el-dialog>-->
 
     <el-dialog title="杩愮淮鎯呭喌璁板綍" :visible.sync="ywConditionOpen" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="ywConditionRules" label-width="80px">
@@ -452,11 +453,12 @@
   process
 } from '@/api/platform/work-order'
 import { addReport } from '@/api/platform/report'
+import WorkOrderAuditing from "@/components/WorkOrder/WorkOrderAuditing";
 
 export default {
   name: 'Work-order',
   dicts: ['error_type', 'report_error_type'],
-  components: {},
+  components: {WorkOrderAuditing},
   data() {
     return {
       drawer: false,
@@ -587,6 +589,9 @@
     this.getList()
   },
   methods: {
+    closeAuditing() {
+      this.auditingOpen = false
+    },
     getTitle1() {
       return '浜х敓宸ュ崟' + (this.beforeReportMsg ? '(' + this.beforeReportMsg + ')' : '')
     },

--
Gitblit v1.8.0