From 4385883dbddc36c5391cccc64021a45530839a6f Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期六, 26 七月 2025 16:26:46 +0800 Subject: [PATCH] 产品安全隐患流程与基础 --- src/views/eam/repair/EamReportProductHazardsList.vue | 147 +++++++++---- src/views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue | 332 ++++++++++++++++++++++++++++++ src/views/eam/repair/modules/EamReportProductHazardsModal.vue | 102 ++++---- src/views/flowable/workflow/FlowTodo.vue | 21 + 4 files changed, 504 insertions(+), 98 deletions(-) diff --git a/src/views/eam/repair/EamReportProductHazardsList.vue b/src/views/eam/repair/EamReportProductHazardsList.vue index 2bbfd70..4d0d66d 100644 --- a/src/views/eam/repair/EamReportProductHazardsList.vue +++ b/src/views/eam/repair/EamReportProductHazardsList.vue @@ -5,42 +5,27 @@ <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鎶ヤ慨ID"> - <a-input placeholder="璇疯緭鍏ユ姤淇甀D" v-model="queryParam.reportId"></a-input> + <a-col :xl="6" :lg="7" :md="8" :sm="12"> + <a-form-item label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="12"> + <a-form-item label="纭鐘舵��"> + <j-dict-select-tag placeholder="璇烽�夋嫨纭鐘舵��" v-model="queryParam.confirmStatus" + dict-code="confirm_status"/> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="queryParam.equipmentId"></a-input> + <a-form-item label="浜у搧鎹熷け鎯呭喌"> + <j-dict-select-tag placeholder="璇烽�夋嫨浜у搧鎹熷け鎯呭喌" v-model="queryParam.productLoss" + dict-code="yn"/> </a-form-item> </a-col> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鎿嶄綔宸�"> - <a-input placeholder="璇疯緭鍏ユ搷浣滃伐" v-model="queryParam.confirmer"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鎿嶄綔宸ョ‘璁ゆ椂闂�"> - <a-input placeholder="璇疯緭鍏ユ搷浣滃伐纭鏃堕棿" v-model="queryParam.confirmTime"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="浜у搧鎹熷け鎯呭喌;鏄� 鍚�"> - <a-input placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辨儏鍐�;鏄� 鍚�" v-model="queryParam.productLoss"></a-input> - </a-form-item> - </a-col> - </template> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> - <a @click="handleToggleSearch" style="margin-left: 8px"> - {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} - <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> - </a> </span> </a-col> @@ -83,21 +68,22 @@ :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <span slot="action" slot-scope="text, record"> + <template v-if="record.confirmStatus==='PENDING_SUBMIT'"> + <a @click="handleEdit(record)">缂栬緫</a> + <a-divider type="vertical"/> + <a-popconfirm title="纭畾鎻愪氦鍚�?" @confirm="() => handleSubmit(record.id)"> + <a>鎻愪氦</a> + </a-popconfirm> + </template> - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> + <a v-else @click="handleDetail(record)">璇︽儏</a> </span> + + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="qualityAnalysis" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> </a-table> </div> @@ -105,6 +91,10 @@ <!-- 琛ㄥ崟鍖哄煙 --> <eamReportProductHazards-modal ref="modalForm" @ok="modalFormOk"></eamReportProductHazards-modal> + + <!--瀹℃壒绐楀彛--> + <report-product-hazards-approval-modal ref="reportProductHazardsApprovalModal" + :selectShenpiData="selectedRowData"/> </a-card> </template> @@ -112,11 +102,17 @@ import '@/assets/less/TableExpand.less' import EamReportProductHazardsModal from './modules/EamReportProductHazardsModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import {getAction} from "@api/manage"; + import ReportProductHazardsApprovalModal + from "@views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue"; + import LxSearchEquipmentSelect from "@views/eam/equipment/modules/LxSearchEquipmentSelect.vue"; export default { name: "EamReportProductHazardsList", mixins:[JeecgListMixin], components: { + LxSearchEquipmentSelect, + ReportProductHazardsApprovalModal, EamReportProductHazardsModal }, props: { @@ -164,10 +160,31 @@ dataIndex: 'equipmentModel', fixed: 'left' }, + { + title: '纭鐘舵��', + align: 'center', + dataIndex: 'confirmStatus_dictText', + fixed: 'left' + }, + { + title: '鎵规鍙�', + align: 'center', + dataIndex: 'batchNumber' + }, + { + title: '鍔犲伐闆朵欢鍙�', + align: 'center', + dataIndex: 'processingPart' + }, + { + title: '浠舵暟', + align: 'center', + dataIndex: 'quantity' + }, { title: '鎿嶄綔宸�', align:"center", - dataIndex: 'confirmer' + dataIndex: 'confirmer_dictText' }, { title: '鎿嶄綔宸ョ‘璁ゆ椂闂�', @@ -175,19 +192,20 @@ dataIndex: 'confirmTime' }, { - title: '浜у搧鎹熷け鎯呭喌;鏄� 鍚�', + title: '浜у搧鎹熷け鎯呭喌', align:"center", - dataIndex: 'productLoss' + dataIndex: 'productLoss_dictText' }, { title: '浜у搧鎹熷け璐ㄩ噺褰卞搷鍒嗘瀽', align:"center", - dataIndex: 'qualityAnalysis' + dataIndex: 'qualityAnalysis', + scopedSlots: { customRender: 'qualityAnalysis' } }, { title: '涓荤宸ヨ壓', align:"center", - dataIndex: 'technologist' + dataIndex: 'technologist_dictText' }, { title: '涓荤宸ヨ壓纭鏃堕棿', @@ -202,7 +220,7 @@ { title: '閮ㄧ骇棰嗗', align:"center", - dataIndex: 'deputyDepartment' + dataIndex: 'deputyDepartment_dictText' }, { title: '閮ㄧ骇棰嗗纭鏃堕棿', @@ -215,13 +233,14 @@ dataIndex: 'deputyDepartmentComment' }, ], - selectRepairOrderData: {}, + selectedRowData: {}, url: { list: "/eam/eamReportProductHazards/list", delete: "/eam/eamReportProductHazards/delete", deleteBatch: "/eam/eamReportProductHazards/deleteBatch", exportXlsUrl: "eam/eamReportProductHazards/exportXls", importExcelUrl: "eam/eamReportProductHazards/importExcel", + submit:"/eam/eamReportProductHazards/submit", }, } }, @@ -241,7 +260,41 @@ this.loadData(1) }, methods: { + /** + * 鐐瑰嚮鎻愪氦鏃惰Е鍙� + * @param id + */ + handleSubmit(id) { + this.loading = true + getAction(this.url.submit, { id }) + .then(res => { + if (res.success) { + this.$notification.success({ + message: '娑堟伅', + description: res.message + }) + this.loadData() + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + this.loading = false + } + }) + }, + /** + * 鐐瑰嚮璇︽儏鏃惰Е鍙戞椂瑙﹀彂 + * @param record + */ + handleDetail(record) { + this.selectedRowData = Object.assign({}, record) + this.$refs.reportProductHazardsApprovalModal.title = '璇︽儏' + this.$refs.reportProductHazardsApprovalModal.disableSubmit = true + this.$refs.reportProductHazardsApprovalModal.visible = true + this.$refs.reportProductHazardsApprovalModal.handleDetail(record) + } } } </script> diff --git a/src/views/eam/repair/modules/EamReportProductHazardsModal.vue b/src/views/eam/repair/modules/EamReportProductHazardsModal.vue index f7c2948..308d7c1 100644 --- a/src/views/eam/repair/modules/EamReportProductHazardsModal.vue +++ b/src/views/eam/repair/modules/EamReportProductHazardsModal.vue @@ -1,54 +1,40 @@ <template> - <j-modal - :title="title" - :width="800" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> - + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" :model="model" :rules="validatorRules"> - - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="reportId" label="鎶ヤ慨ID"> - <a-input placeholder="璇疯緭鍏ユ姤淇甀D" v-model="model.reportId" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="equipmentId" label="璁惧ID"> - <a-input placeholder="璇疯緭鍏ヨ澶嘔D" v-model="model.equipmentId" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmer" label="鎿嶄綔宸�"> - <a-input placeholder="璇疯緭鍏ユ搷浣滃伐" v-model="model.confirmer" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmTime" label="鎿嶄綔宸ョ‘璁ゆ椂闂�"> - <a-input placeholder="璇疯緭鍏ユ搷浣滃伐纭鏃堕棿" v-model="model.confirmTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="productLoss" label="浜у搧鎹熷け鎯呭喌;鏄� 鍚�"> - <a-input placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辨儏鍐�;鏄� 鍚�" v-model="model.productLoss" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="qualityAnalysis" label="浜у搧鎹熷け璐ㄩ噺褰卞搷鍒嗘瀽"> - <a-input placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辫川閲忓奖鍝嶅垎鏋�" v-model="model.qualityAnalysis" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technologist" label="涓荤宸ヨ壓"> - <a-input placeholder="璇疯緭鍏ヤ富绠″伐鑹�" v-model="model.technologist" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technologistTime" label="涓荤宸ヨ壓纭鏃堕棿"> - <a-input placeholder="璇疯緭鍏ヤ富绠″伐鑹虹‘璁ゆ椂闂�" v-model="model.technologistTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="technologistComment" label="涓荤宸ヨ壓纭鎰忚"> - <a-input placeholder="璇疯緭鍏ヤ富绠″伐鑹虹‘璁ゆ剰瑙�" v-model="model.technologistComment" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deputyDepartment" label="閮ㄧ骇棰嗗"> - <a-input placeholder="璇疯緭鍏ラ儴绾ч瀵�" v-model="model.deputyDepartment" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deputyDepartmentTime" label="閮ㄧ骇棰嗗纭鏃堕棿"> - <a-input placeholder="璇疯緭鍏ラ儴绾ч瀵肩‘璁ゆ椂闂�" v-model="model.deputyDepartmentTime" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="deputyDepartmentComment" label="閮ㄧ骇棰嗗纭鎰忚"> - <a-input placeholder="璇疯緭鍏ラ儴绾ч瀵肩‘璁ゆ剰瑙�" v-model="model.deputyDepartmentComment" /> - </a-form-model-item> - + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row> + <a-col :span="customSpan"> + <a-form-model-item label="鎵规鍙�" prop="batchNumber"> + <a-input placeholder="璇疯緭鍏ユ壒娆″彿" v-model="model.batchNumber"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="鍔犲伐闆朵欢鍙�" prop="processingPart"> + <a-input placeholder="璇疯緭鍏ュ姞宸ラ浂浠跺彿" + v-model="model.processingPart"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item label="浠舵暟" prop="quantity"> + <a-input-number placeholder="璇疯緭鍏ヤ欢鏁�" v-model="model.quantity" + :min="0" style="width: 100%"/> + </a-form-model-item> + </a-col> + <a-col :span="customSpan"> + <a-form-model-item prop="productLoss" label="浜у搧鎹熷け鎯呭喌"> + <j-dict-select-tag dict-code="yn" type="radio" + placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辨儏鍐�" + v-model="model.productLoss"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" + :wrapperCol="wrapperColLong" prop="qualityAnalysis" label="浜у搧鎹熷け璐ㄩ噺褰卞搷鍒嗘瀽"> + <a-textarea placeholder="璇疯緭鍏ヤ骇鍝佹崯澶辫川閲忓奖鍝嶅垎鏋�" v-model="model.qualityAnalysis"/> + </a-form-model-item> + </a-col> + </a-row> </a-form-model> </a-spin> </j-modal> @@ -64,18 +50,32 @@ return { title:"鎿嶄綔", visible: false, + customSpan: 6, model: {}, labelCol: { xs: { span: 24 }, - sm: { span: 5 }, + sm: { span: 9 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 }, + sm: { span: 12 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 3 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } }, confirmLoading: false, validatorRules:{ + batchNumber: [{ required: true, message: '璇疯緭鍏ユ壒娆″彿', trigger: 'change' }], + processingPart: [{ required: true, message: '璇疯緭鍏ュ姞宸ラ浂浠跺彿', trigger: 'change' }], + quantity: [{ required: true, message: '璇疯緭鍏ヤ欢鏁�', trigger: 'change' }], + productLoss: [{ required: true, message: '璇疯緭鍏ヤ骇鍝佹崯澶辨儏鍐�', trigger: 'change' }], + qualityAnalysis: [{ required: true, message: '璇疯緭鍏ヤ骇鍝佹崯澶辫川閲忓奖鍝嶅垎鏋�', trigger: 'change' }], }, url: { add: "/eam/eamReportProductHazards/add", diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 8b57b8f..5d7d907 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -135,6 +135,11 @@ <report-accidents-register-approval-modal ref="reportAccidentsRegisterApprovalModal" :selectShenpiData="selectedRowData" @modalFormOk="modalFormOk"/> + + <!--浜у搧瀹夊叏纭--> + <eam-report-product-hazards-modal ref="reportProductHazardsApprovalModal" + :selectShenpiData="selectedRowData" + @modalFormOk="modalFormOk"/> </a-card> </template> @@ -157,11 +162,13 @@ import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal' import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' import ReportAccidentsRegisterApprovalModal from './repairOrder/ReportAccidentsRegisterApprovalModal' + import EamReportProductHazardsModal from "./repairOrder/ReportProductHazardsApprovalModal.vue"; export default { name: 'FlowTodo', mixins: [JeecgListMixin], components: { + EamReportProductHazardsModal, ReportAccidentsRegisterApprovalModal, ThirdMaintenanceFurnaceApprovalModal, ThirdMaintenanceOrderChangeApprovalModal, @@ -295,6 +302,9 @@ break case 'eam_report_accidents_register': this.handleAccidentsRegister(record) + break + case 'eam_report_product_hazards': + this.handleProductHazard(record) break default: alert('娌℃壘鍒拌娴佺▼') @@ -444,6 +454,17 @@ this.$refs.reportAccidentsRegisterApprovalModal.handleApprove(record) }, + /** + * 鐐瑰嚮浜у搧瀹夊叏闅愭偅纭娴佺▼瀹℃壒鏃惰Е鍙� + * @param record + */ + handleProductHazard(record){ + this.selectedRowData = Object.assign({}, record) + this.$refs.reportProductHazardsApprovalModal.visible = true + this.$refs.reportProductHazardsApprovalModal.title = record.name + this.$refs.reportProductHazardsApprovalModal.handleApprove(record) + }, + batchHandle() { const categorySet = new Set(this.selectionRows.map(item => item.category)) const nameSet = new Set(this.selectionRows.map(item => item.name)) diff --git a/src/views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue b/src/views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue new file mode 100644 index 0000000..97b719b --- /dev/null +++ b/src/views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue @@ -0,0 +1,332 @@ +<template> + <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading" :width="1300" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" fullscreen @ok="handleOk" + @cancel="handleCancel" centered cancelText="鍏抽棴"> + <a-spin :spinning="spinning"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-row id="outer-row" :gutter="24"> + <!--宸︿晶鍩虹淇℃伅鍒�--> + <a-col :span="selectShenpiData.procInstId?8:12" class="scroll-col"> + <a-tabs> + <a-tab-pane tab="鍩虹淇℃伅"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="缁熶竴缂栫爜"> + <lx-search-equipment-select v-model="model.equipmentId" disabled/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鎵规鍙�"> + <a-input v-model="model.batchNumber" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="12"> + <a-form-model-item label="鍔犲伐闆朵欢鍙�"> + <a-input v-model="model.processingPart" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="浠舵暟"> + <a-input-number v-model="model.quantity" disabled/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="12"> + <a-form-model-item label="浜у搧鎹熷け鎯呭喌"> + <j-dict-select-tag dict-code="yn" type="radio" v-model="model.productLoss" disabled/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item label="浜у搧鎹熷け璐ㄩ噺褰卞搷鍒嗘瀽" :labelCol="labelColLong" :wrapperCol="wrapperColLong"> + <a-textarea v-model="model.qualityAnalysis" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + </a-col> + + <!-- 涓棿鏄庣粏椤瑰垪--> + <a-col v-if="selectShenpiData.procInstId" :span="10" class="scroll-col"> + <a-tabs default-active-key="1"> + <a-tab-pane key='1' tab='娴佺▼鍥�'> + <img :src="imageSrc" v-if="imageSrc" style="width: 100%"/> + </a-tab-pane> + </a-tabs> + </a-col> + + <!--鍙充晶瀹℃壒鍒�--> + <a-col :span="selectShenpiData.procInstId?6:12" class="scroll-col"> + <a-tabs v-if="displayRegionalManagerFlag"> + <a-tab-pane tab="涓荤宸ヨ壓纭"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="technologistResult" label="纭绫诲瀷" + :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type='radio' v-model='model.technologistResult' + dictCode='approve_reject' + :disabled="disableSubmit||(model.confirmStatus&&model.confirmStatus!=='PENDING_SUPERIOR_TECHNICAL_CONFIRMATION')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="纭鎰忚" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.technologistComment" + :disabled="disableSubmit||(model.confirmStatus&&model.confirmStatus!=='PENDING_SUPERIOR_TECHNICAL_CONFIRMATION')"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + + <a-tabs v-if="displayRepairRegionalManagerFlag"> + <a-tab-pane tab="鍓儴绾ч瀵肩‘璁�"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="deputyDepartmentResult" label="纭绫诲瀷" + :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type='radio' v-model='model.deputyDepartmentResult' + dictCode='approve_reject' + :disabled="disableSubmit||(model.confirmStatus&&model.confirmStatus!=='PENDING_DEPARTMENT_LEADER_CONFIRMATION')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item label="纭鎰忚" :labelCol="rightColLabelCol" :wrapperCol="rightColWrapperCol"> + <a-textarea placeholder="璇疯緭鍏ユ剰瑙�" v-model="model.deputyDepartmentComment" + :disabled="disableSubmit||(model.confirmStatus&&model.confirmStatus!=='PENDING_DEPARTMENT_LEADER_CONFIRMATION')"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + + + + </a-col> + </a-row> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + import { downFile, getAction, httpAction } from '@/api/manage' + import TechnicalStatusEquipmentSelect from '../../../eam/equipment/modules/TechnicalStatusEquipmentSelect' + import LxSearchEquipmentSelect from '../../../eam/equipment/modules/LxSearchEquipmentSelect' + + export default { + name: 'reportProductHazardsApprovalModal', + components: { + LxSearchEquipmentSelect, + TechnicalStatusEquipmentSelect + }, + props: { + selectShenpiData: { + type: Object + } + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 10 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 14 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 19 } + }, + rightColLabelCol: { + xs: { span: 24 }, + sm: { span: 8 } + }, + rightColWrapperCol: { + xs: { span: 24 }, + sm: { span: 15 } + }, + confirmLoading: false, + spinning: false, + imageSrc: null, + validatorRules: { + technicalDirectorLeaderResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }], + technicalDirectorPartResult: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }] + }, + url: { + queryById: '/eam/eamReportProductHazards/queryById', + approval: '/eam/eamReportProductHazards/perform', + diagramView: '/assign/flow/diagramView' + }, + disableSubmit: false + } + }, + computed: { + displayRegionalManagerFlag() { + return this.model.confirmStatus && ['PENDING_SUPERIOR_TECHNICAL_CONFIRMATION', 'PENDING_DEPARTMENT_LEADER_CONFIRMATION','REPAIR_COMPLETED', 'REJECTED'].includes(this.model.confirmStatus) + }, + displayRepairRegionalManagerFlag() { + return this.model.confirmStatus && ['PENDING_DEPARTMENT_LEADER_CONFIRMATION','REPAIR_COMPLETED', 'REJECTED'].includes(this.model.confirmStatus) + }, + }, + methods: { + /** + * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + async handleApprove(record) { + this.model = {} + this.getBasicInformationByApi(record) + this.getFlowChartImageByApi(record) + }, + + /** + * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + handleDetail(record) { + this.model = Object.assign({}, record) + }, + + /** + * 鑾峰彇鍩虹淇℃伅 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + getBasicInformationByApi(record) { + this.spinning = true + const that = this + getAction(this.url.queryById, { id: record.dataId }) + .then(res => { + if (res.success) { + that.model = Object.assign({}, res.result, { repairConfirmResult: '1' }) + that.model.dataId = record.dataId + that.model.taskId = record.id + that.model.userId = record.assignee + that.model.instanceId = record.procInstId + } + else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.spinning = false + }) + }, + + /** + * 鑾峰彇娴佺▼鍥� + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + getFlowChartImageByApi(record) { + const { processDefinitionId, processInstanceId, processDefinitionKey } = record + + downFile(this.url.diagramView, { + processDefinitionId, + processInstanceId, + TaskDefinitionKey: processDefinitionKey + }, 'get') + .then((res => { + this.imageSrc = window.URL.createObjectURL(new Blob([res])) + })) + .catch(err => { + this.$notification.error({ + message: '娑堟伅', + description: err.message + }) + }) + }, + + async handleOk() { + const that = this + + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = that.spinning = true + + httpAction(that.url.approval, that.model, 'post') + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('modalFormOk') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + + /** + * 鍘熷洜鍒嗘瀽鏍稿鍊煎彂鐢熸敼鍙樻椂瑙﹀彂 + * @param value + */ + handleCheckAgreeChange(value) { + if (value === '1') delete this.model.disagreeReason + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + if (this.$refs.form) this.$refs.form.clearValidate() + } + } + } +</script> + +<style scoped lang="less"> + /deep/ .ant-spin-nested-loading { + height: 100%; + + .ant-spin-container { + height: 100%; + + .ant-form { + height: 100%; + + #outer-row { + height: 100%; + + .scroll-col { + height: 100%; + overflow: auto; + } + } + } + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3