From 1392d8f3def2c21e7a6fc15cf3f68fc1056ec0b6 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期二, 29 七月 2025 19:01:20 +0800 Subject: [PATCH] 三不原则 --- src/views/eam/repair/EamReportThreeNoSpareList.vue | 307 ++++++++++++++++------ src/views/flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal.vue | 320 ++++++++++++++++++++++++ src/views/eam/repair/modules/EamReportProductHazardsModal.vue | 4 src/views/flowable/workflow/FlowCompleted.vue | 40 +++ src/views/eam/repair/modules/EamReportThreeNoSpareModal.vue | 38 +- src/views/flowable/workflow/FlowTodo.vue | 20 + 6 files changed, 615 insertions(+), 114 deletions(-) diff --git a/src/views/eam/repair/EamReportThreeNoSpareList.vue b/src/views/eam/repair/EamReportThreeNoSpareList.vue index f6427f1..73c6d16 100644 --- a/src/views/eam/repair/EamReportThreeNoSpareList.vue +++ b/src/views/eam/repair/EamReportThreeNoSpareList.vue @@ -5,21 +5,20 @@ <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="鍒犻櫎鏍囪"> - <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></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="24"> - <a-form-item label="鍘熷洜鍒嗘瀽"> - <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="queryParam.causeAnalysis"></a-input> + <a-form-item label="鐘舵��"> + <j-dict-select-tag dict-code="report_three_no_spare_submit_status" placeholder="璇烽�夋嫨鐘舵��" v-model="queryParam.submitStatus"/> </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.isTrainingEducation"></a-input> + <a-form-item label="鍘熷洜鍒嗘瀽"> + <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="queryParam.causeAnalysis"></a-input> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> @@ -50,25 +49,10 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> </div> <!-- table鍖哄煙-begin --> <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> - </div> <a-table ref="table" @@ -79,24 +63,48 @@ :dataSource="dataSource" :pagination="ipagination" :loading="loading" - class="j-table-force-nowrap" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" + :scroll="{x:'max-content'}" @change="handleTableChange"> - <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <template> + <a v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" @click="handleFillIn(record)">濉姤</a> + <a-divider v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" type="vertical"/> + <a-popconfirm v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" title="纭畾鎻愪氦鍚�?" @confirm="() => handleSubmit(record.id)"> + <a>鎻愪氦</a> + </a-popconfirm> + </template> + <a-divider v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" type="vertical"/> + <a @click="handleDetail(record)">璇︽儏</a> + </span> - <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> + + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="accidentPhenomenon" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="measure" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="causingResults" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="causeAnalysis" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="preventionMeasures" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="trainingFormat" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="trainingContent" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> </span> </a-table> @@ -105,6 +113,11 @@ <!-- 琛ㄥ崟鍖哄煙 --> <eamReportThreeNoSpare-modal ref="modalForm" @ok="modalFormOk"></eamReportThreeNoSpare-modal> + + <!--瀹℃壒绐楀彛--> + <report-threeNo-spare-approval-modal ref="reportThreeNoSpareApprovalModal" + :selectShenpiData="selectedRowData"/> + </a-card> </template> @@ -112,96 +125,212 @@ import '@/assets/less/TableExpand.less' import EamReportThreeNoSpareModal from './modules/EamReportThreeNoSpareModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import {getAction} from "@api/manage"; + import LxSearchEquipmentSelect from "@views/eam/equipment/modules/LxSearchEquipmentSelect.vue"; + import ReportThreeNoSpareApprovalModal + from '../../flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal' export default { name: "EamReportThreeNoSpareList", mixins:[JeecgListMixin], components: { + ReportThreeNoSpareApprovalModal, + LxSearchEquipmentSelect, EamReportThreeNoSpareModal + }, + props: { + isDisplayOperation: { + type: Boolean, + default: true + }, + propsQueryParam: { + type: Object + } }, data () { return { description: '鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃绠$悊椤甸潰', + disableMixinCreated: true, // 琛ㄥご columns: [ { title: '#', dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left' + }, + { + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode', + fixed: 'left', + scopedSlots: { customRender: 'equipmentCode' } + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName', + fixed: 'left' + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel', + fixed: 'left' + }, + { + title: '鐘舵��', + align: 'center', + dataIndex: 'submitStatus_dictText', + }, + { + title: '浜嬫晠鐜拌薄', + align: 'center', + dataIndex: 'accidentPhenomenon', + scopedSlots: {customRender: 'accidentPhenomenon'}, + }, + { + title: '閲囧彇鎺柦', + align: 'center', + dataIndex: 'measure', + scopedSlots: {customRender: 'measure'}, + }, + { + title: '閫犳垚缁撴灉', + align: 'center', + dataIndex: 'causingResults', + scopedSlots: {customRender: 'causingResults'}, + }, + { title: '鍘熷洜鍒嗘瀽', align:"center", - dataIndex: 'causeAnalysis' - }, - { - title: '鍩硅鏁欒偛;鏄� 鍚�', + dataIndex: 'causeAnalysis', + scopedSlots: {customRender: 'causeAnalysis'}, + }, + { + title: '棰勯槻鎺柦', + align: 'center', + dataIndex: 'preventionMeasures', + scopedSlots: {customRender: 'preventionMeasures'}, + }, + { + title: '鍩硅鏁欒偛', align:"center", - dataIndex: 'isTrainingEducation' - }, - { + dataIndex: 'isTrainingEducation_dictText', + }, + { title: '鍩硅褰㈠紡', align:"center", - dataIndex: 'trainingFormat' - }, - { + dataIndex: 'trainingFormat', + scopedSlots: {customRender: 'trainingFormat'}, + }, + { title: '鍩硅鍐呭', align:"center", - dataIndex: 'trainingContent' - }, - { + dataIndex: 'trainingContent', + scopedSlots: {customRender: 'trainingContent'}, + }, + { title: '鍩硅浜�', align:"center", - dataIndex: 'trainingUser' - }, - { + dataIndex: 'trainingUser_dictText' + }, + { title: '鍩硅鏃堕棿', align:"center", dataIndex: 'trainingUserTime' - }, - { - title: '鎶ヤ慨ID', + }, + { + title: '鍗曚綅棰嗗', align:"center", - dataIndex: 'reportId' - }, - { - title: '璁惧ID', + dataIndex: 'unitLeader_dictText' + }, + { + title: '棰嗗鎰忚', align:"center", - dataIndex: 'equipmentId' - }, - { - title: '鎿嶄綔', - dataIndex: 'action', + dataIndex: 'leaderOpinion' + }, + { + title: '棰嗗纭鏃堕棿', align:"center", - scopedSlots: { customRender: 'action' }, - } + dataIndex: 'leaderConfirmTime' + }, ], - url: { + selectedRowData: {}, + url: { list: "/eam/eamReportThreeNoSpare/list", delete: "/eam/eamReportThreeNoSpare/delete", deleteBatch: "/eam/eamReportThreeNoSpare/deleteBatch", exportXlsUrl: "eam/eamReportThreeNoSpare/exportXls", importExcelUrl: "eam/eamReportThreeNoSpare/importExcel", - }, + submit:"eam/eamReportThreeNoSpare/submit" + }, } }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - } - }, + created() { + if (!this.isDisplayOperation) this.queryParam = Object.assign({}, this.propsQueryParam) + else { + const operationColumn = { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' }, + width: 200, + fixed: 'right' + } + this.columns = [...this.columns, operationColumn] + } + this.loadData(1) + }, methods: { - + /** + * 鐐瑰嚮濉姤鏃惰Е鍙� + * @param record + */ + handleFillIn(record) { + this.$refs.modalForm.title = '濉姤' + this.$refs.modalForm.handleFillIn(record) + }, + + /** + * 鐐瑰嚮鎻愪氦鏃惰Е鍙� + * @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.selectRepairOrderData = Object.assign({}, record) + this.$refs.reportThreeNoSpareApprovalModal.visible = true + this.$refs.reportThreeNoSpareApprovalModal.title = '璇︽儏' + this.$refs.reportThreeNoSpareApprovalModal.disableSubmit = true + this.$refs.reportThreeNoSpareApprovalModal.handleDetail(record) + } } } </script> diff --git a/src/views/eam/repair/modules/EamReportProductHazardsModal.vue b/src/views/eam/repair/modules/EamReportProductHazardsModal.vue index 308d7c1..30a967d 100644 --- a/src/views/eam/repair/modules/EamReportProductHazardsModal.vue +++ b/src/views/eam/repair/modules/EamReportProductHazardsModal.vue @@ -62,11 +62,11 @@ }, labelColLong: { xs: { span: 24 }, - sm: { span: 3 } + sm: { span: 6 } }, wrapperColLong: { xs: { span: 24 }, - sm: { span: 20 } + sm: { span: 17 } }, confirmLoading: false, diff --git a/src/views/eam/repair/modules/EamReportThreeNoSpareModal.vue b/src/views/eam/repair/modules/EamReportThreeNoSpareModal.vue index 6058391..4e9d98d 100644 --- a/src/views/eam/repair/modules/EamReportThreeNoSpareModal.vue +++ b/src/views/eam/repair/modules/EamReportThreeNoSpareModal.vue @@ -8,38 +8,25 @@ @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="delFlag" label="鍒犻櫎鏍囪"> - <a-input-number v-model="model.delFlag"/> - </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="causeAnalysis" label="鍘熷洜鍒嗘瀽"> - <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="model.causeAnalysis" /> + <a-textarea :rows="3" placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="model.causeAnalysis"/> </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isTrainingEducation" label="鍩硅鏁欒偛;鏄� 鍚�"> - <a-input placeholder="璇疯緭鍏ュ煿璁暀鑲�;鏄� 鍚�" v-model="model.isTrainingEducation" /> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="causeAnalysis" label="棰勯槻鎺柦"> + <a-textarea :rows="3" placeholder="璇疯緭鍏ラ闃叉帾鏂�" v-model="model.preventionMeasures"/> + </a-form-model-item> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isTrainingEducation" label="鍩硅鏁欒偛"> + <j-dict-select-tag dict-code="yn" placeholder="璇烽�夋嫨鍩硅鏁欒偛" v-model="model.isTrainingEducation"/> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="trainingFormat" label="鍩硅褰㈠紡"> - <a-input placeholder="璇疯緭鍏ュ煿璁舰寮�" v-model="model.trainingFormat" /> + <a-textarea :rows="3" placeholder="璇疯緭鍏ュ煿璁舰寮�" v-model="model.trainingFormat"/> </a-form-model-item> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="trainingContent" label="鍩硅鍐呭"> - <a-input placeholder="璇疯緭鍏ュ煿璁唴瀹�" v-model="model.trainingContent" /> + <a-textarea :rows="3" placeholder="璇疯緭鍏ュ煿璁唴瀹�" v-model="model.trainingContent"/> </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="trainingUser" label="鍩硅浜�"> - <a-input placeholder="璇疯緭鍏ュ煿璁汉" v-model="model.trainingUser" /> - </a-form-model-item> - <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="trainingUserTime" label="鍩硅鏃堕棿"> - <a-input placeholder="璇疯緭鍏ュ煿璁椂闂�" v-model="model.trainingUserTime" /> - </a-form-model-item> - <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> </a-spin> </j-modal> @@ -77,6 +64,11 @@ created () { }, methods: { + handleFillIn(record) { + this.visible = true + this.model = Object.assign({}, record) + this.getRepairDetailByApi(record.id) + }, add () { //鍒濆鍖栭粯璁ゅ�� this.edit({}); diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue index a35123e..c16e208 100644 --- a/src/views/flowable/workflow/FlowCompleted.vue +++ b/src/views/flowable/workflow/FlowCompleted.vue @@ -84,6 +84,13 @@ <!--璁惧浜嬫晠鐧昏--> <report-accidents-register-approval-modal ref="reportAccidentsRegisterApprovalModal" :selectShenpiData="selectedRowData"/> + + <!--浜у搧瀹夊叏纭--> + <eam-report-product-hazards-modal ref="reportProductHazardsApprovalModal" + :selectShenpiData="selectedRowData"/> + <!--涓変笉鍘熷垯--> + <eam-report-three-no-spare-modal ref="reportThreeNoSpareApprovalModal" + :selectShenpiData="selectedRowData"/> </a-card> </template> @@ -105,11 +112,14 @@ import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal' import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' import ReportAccidentsRegisterApprovalModal from './repairOrder/ReportAccidentsRegisterApprovalModal' + import EamReportProductHazardsModal from "@views/flowable/workflow/repairOrder/ReportProductHazardsApprovalModal.vue"; + import EamReportThreeNoSpareModal from "@views/flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal.vue"; export default { name: 'FlowCompleted', mixins: [JeecgListMixin], components: { + EamReportThreeNoSpareModal, EamReportProductHazardsModal, ReportAccidentsRegisterApprovalModal, ThirdMaintenanceFurnaceApprovalModal, ThirdMaintenanceOrderChangeApprovalModal, @@ -228,6 +238,12 @@ break case 'eam_report_accidents_register': this.handleAccidentsRegister(record) + break + case 'eam_report_product_hazards': + this.handleProductHazard(record) + break + case 'eam_report_three_no_spare_process': + this.handleThreeNoSpare(record) break default: alert('娌℃壘鍒拌娴佺▼') @@ -390,6 +406,30 @@ 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.disableSubmit = true + this.$refs.reportProductHazardsApprovalModal.handleApprove(record) + }, + + /** + * 涓変笉鍘熷垯鍒嗘瀽娴佺▼瀹℃壒瑙﹀彂 + * @param record + */ + handleThreeNoSpare(record){ + this.selectedRowData = Object.assign({}, record) + this.$refs.reportThreeNoSpareApprovalModal.visible = true + this.$refs.reportThreeNoSpareApprovalModal.title = record.name + this.$refs.reportThreeNoSpareApprovalModal.disableSubmit = true + this.$refs.reportThreeNoSpareApprovalModal.handleApprove(record) + }, + splitProcessType(title) { let parts = title.split('锛�') // 娉ㄦ剰鍐掑彿鏄叏瑙掑瓧绗︼紝浣跨敤瀵瑰簲鐨勫瓧杩涜鍒嗗壊 let result = parts[0] diff --git a/src/views/flowable/workflow/FlowTodo.vue b/src/views/flowable/workflow/FlowTodo.vue index 5d7d907..30d63b1 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -140,6 +140,10 @@ <eam-report-product-hazards-modal ref="reportProductHazardsApprovalModal" :selectShenpiData="selectedRowData" @modalFormOk="modalFormOk"/> + <!--涓変笉鍘熷垯--> + <eam-report-three-no-spare-modal ref="reportThreeNoSpareApprovalModal" + :selectShenpiData="selectedRowData" + @modalFormOk="modalFormOk"/> </a-card> </template> @@ -163,11 +167,13 @@ import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' import ReportAccidentsRegisterApprovalModal from './repairOrder/ReportAccidentsRegisterApprovalModal' import EamReportProductHazardsModal from "./repairOrder/ReportProductHazardsApprovalModal.vue"; + import EamReportThreeNoSpareModal from "./repairOrder/ReportThreeNoSpareApprovalModal.vue"; export default { name: 'FlowTodo', mixins: [JeecgListMixin], components: { + EamReportThreeNoSpareModal, EamReportProductHazardsModal, ReportAccidentsRegisterApprovalModal, ThirdMaintenanceFurnaceApprovalModal, @@ -305,6 +311,9 @@ break case 'eam_report_product_hazards': this.handleProductHazard(record) + break + case 'eam_report_three_no_spare_process': + this.handleThreeNoSpare(record) break default: alert('娌℃壘鍒拌娴佺▼') @@ -465,6 +474,17 @@ this.$refs.reportProductHazardsApprovalModal.handleApprove(record) }, + /** + * 涓変笉鍘熷垯鍒嗘瀽娴佺▼瀹℃壒瑙﹀彂 + * @param record + */ + handleThreeNoSpare(record){ + this.selectedRowData = Object.assign({}, record) + this.$refs.reportThreeNoSpareApprovalModal.visible = true + this.$refs.reportThreeNoSpareApprovalModal.title = record.name + this.$refs.reportThreeNoSpareApprovalModal.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/ReportThreeNoSpareApprovalModal.vue b/src/views/flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal.vue new file mode 100644 index 0000000..62387e1 --- /dev/null +++ b/src/views/flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal.vue @@ -0,0 +1,320 @@ +<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="鍩硅鏁欒偛"> + <j-dict-select-tag dict-code="yn" v-model="model.isTrainingEducation" disabled/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="12"> + <a-form-model-item label="鍩硅浜�"> + <a-input v-model="model.trainingUser_dictText" disabled/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鍩硅鏃堕棿"> + <a-date-picker v-model="model.trainingUserTime" value-format="YYYY-MM-DD" + style="width: 100%" disabled/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="鍘熷洜鍒嗘瀽"> + <a-textarea v-model="model.causeAnalysis" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> +銆� <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="棰勯槻鎺柦"> + <a-textarea v-model="model.preventionMeasures" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="鍩硅褰㈠紡"> + <a-textarea v-model="model.trainingFormat" readOnly/> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="24"> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="鍩硅鍐呭"> + <a-textarea v-model="model.trainingContent" 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> + <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.leaderConfirmResult' + 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.leaderOpinion" + :disabled="disableSubmit||(model.confirmStatus&&model.confirmStatus!=='PENDING_SUPERIOR_TECHNICAL_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/eamReportThreeNoSpare/queryById', + approval: '/eam/eamReportThreeNoSpare/perform', + diagramView: '/assign/flow/diagramView' + }, + disableSubmit: false + } + }, + computed: { + }, + 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