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