From 5bd1494d82c575e623f106016a558a431e9ba997 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 25 七月 2025 11:17:14 +0800 Subject: [PATCH] 真空热处理炉三保功能及流程 --- /dev/null | 345 --------------- src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue | 121 +++++ src/views/flowable/workflow/FlowCompleted.vue | 21 src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue | 4 src/views/flowable/workflow/FlowTodo.vue | 21 src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue | 396 ++++++++++++++++++ src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue | 354 ++++++++++++++++ 7 files changed, 915 insertions(+), 347 deletions(-) diff --git a/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue b/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue new file mode 100644 index 0000000..90e6b31 --- /dev/null +++ b/src/views/eam/maintenance/EamThirdMaintenanceFurnaceList.vue @@ -0,0 +1,396 @@ +<template> + <a-card :bordered="false"> + + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <a-col :xl="5" :lg="6" :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="4" :lg="6" :md="8" :sm="12"> + <a-form-item label="宸ュ崟鍙�"> + <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-model="queryParam.orderNum"/> + </a-form-item> + </a-col> + <a-col :xl="5" :lg="6" :md="8" :sm="12"> + <a-form-item label="璁″垝淇濆吇鏃ユ湡"> + <a-range-picker v-model="queryParam.maintenanceDate" value-format="YYYY-MM-DD" + @change="handleDateRangeChange"/> + </a-form-item> + </a-col> + <a-col :xl="5" :lg="6" :md="8" :sm="12"> + <a-form-item label="淇濆吇鐘舵��"> + <j-dict-select-tag placeholder="璇烽�夋嫨淇濆吇鐘舵��" v-model="queryParam.maintenanceStatus" + dict-code="third_maintenance_furnace_status"/> + </a-form-item> + </a-col> + <a-col :xl="4" :lg="6" :md="8" :sm="12"> + <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> + </span> + </a-col> + </a-row> + </a-form> + </div> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> + <a-dropdown v-if="selectedRowKeys.length > 0"> + <a-menu slot="overlay"> + <a-menu-item key="1" @click="handleBatchCollect"> + <a-icon type="form"/> + 棰嗗彇 + </a-menu-item> + <a-menu-item key="1" @click="handleBatchAbolish"> + <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" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource" + :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> + + <!--鑳藉惁婊¤冻鍔犲伐闇�姹�--> + <template slot="processingRequirementsFlag" slot-scope="text"> + <a-switch v-if="text" checked-children="鏄�" un-checked-children="鍚�" :checked="Boolean(+text)" disabled/> + </template> + + <span slot="action" slot-scope="text, record"> + <template v-if="record.maintenanceStatus==='WAIT_MAINTENANCE'"> + <a @click="handleEdit(record)">缂栬緫</a> + + <a-divider type="vertical"/> + + <a-popconfirm title="纭畾棰嗗彇鍚�?" @confirm="() => handleCollect(record.id)"> + <a>棰嗗彇</a> + </a-popconfirm> + + <a-divider type="vertical"/> + + <a-popconfirm title="纭畾浣滃簾鍚�?" @confirm="() => handleAbolish(record.id)"> + <a>浣滃簾</a> + </a-popconfirm> + </template> + + <a v-else @click="handleDetail(record)">璇︽儏</a> + </span> + + </a-table> + </div> + <!-- table鍖哄煙-end --> + + <!-- 琛ㄥ崟鍖哄煙 --> + <eamThirdMaintenanceFurnace-modal ref="modalForm" @ok="modalFormOk"/> + + <!--瀹℃壒绐楀彛--> + <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal" + :selectShenpiData="selectedRowData"/> + </a-card> +</template> + +<script> + import EamThirdMaintenanceFurnaceModal from './modules/EamThirdMaintenanceFurnaceModal' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import LxSearchEquipmentSelect from '../equipment/modules/LxSearchEquipmentSelect' + import { getAction, deleteAction } from '@/api/manage' + import ThirdMaintenanceFurnaceApprovalModal + from '../../flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' + + export default { + name: 'EamThirdMaintenanceFurnaceList', + mixins: [JeecgListMixin], + components: { + ThirdMaintenanceFurnaceApprovalModal, + LxSearchEquipmentSelect, + EamThirdMaintenanceFurnaceModal + }, + data() { + return { + description: '鐪熺┖鐑鐞嗙倝涓変繚绠$悊椤甸潰', + selectedRowData: {}, + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left' + }, + { + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode', + fixed: 'left' + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName', + fixed: 'left' + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel', + fixed: 'left' + }, + { + title: '淇濆吇鐘舵��', + align: 'center', + dataIndex: 'maintenanceStatus_dictText', + fixed: 'left' + }, + { + title: '宸ュ崟鍙�', + align: 'center', + dataIndex: 'orderNum' + }, + { + title: '璁″垝淇濆吇鏃ユ湡', + align: 'center', + dataIndex: 'maintenanceDate' + }, + { + title: '淇濆吇浜�', + align: 'center', + dataIndex: 'operator_dictText' + }, + { + title: '淇濆吇鏃堕棿', + align: 'center', + dataIndex: 'operateTime' + }, + { + title: '鍘嬬缉绌烘皵鍘嬪姏(MPa)', + align: 'center', + dataIndex: 'compressedAirPressureValue' + }, + { + title: '鏋侀檺鐪熺┖(Pa)', + align: 'center', + dataIndex: 'ultimateVacuumValue' + }, + { + title: '娉勬紡鐜�(Pa/h)', + align: 'center', + dataIndex: 'leakRate' + }, + { + title: '鍑�鍖栧鐞�', + align: 'center', + dataIndex: 'purificationTreatment' + }, + { + title: '鐐夋俯鍧囧寑鎬ф娴�', + align: 'center', + dataIndex: 'furnaceTemperatureUniformityTesting' + }, + { + title: '鍔犵儹鍔熺巼娴嬭瘯', + align: 'center', + dataIndex: 'heatingPowerTest' + }, + { + title: '鑳藉惁婊¤冻鍔犲伐闇�姹�', + align: 'center', + dataIndex: 'processingRequirementsFlag', + scopedSlots: { customRender: 'processingRequirementsFlag' } + }, + { + title: '纭浜�', + align: 'center', + dataIndex: 'confirmUser_dictText' + }, + { + title: '纭鏃ユ湡', + align: 'center', + dataIndex: 'confirmTime' + }, + { + title: 'HF缂栫爜', + align: 'center', + dataIndex: 'hfCode' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' }, + fixed: 'right', + width: 200 + } + ], + url: { + list: '/eam/eamThirdMaintenanceFurnace/list', + collect: '/eam/eamThirdMaintenanceFurnace/collect', + collectBatch: '/eam/eamThirdMaintenanceFurnace/collectBatch', + abolish: '/eam/eamThirdMaintenanceFurnace/abolish', + abolishBatch: '/eam/eamThirdMaintenanceFurnace/abolishBatch' + } + } + }, + methods: { + /** + * 淇濆吇鏃ユ湡鍙戠敓鏀瑰彉鏃惰Е鍙� + * @param dateStringArray + */ + handleDateRangeChange(dateStringArray) { + this.queryParam.maintenanceDateBegin = dateStringArray[0] + this.queryParam.maintenanceDateEnd = dateStringArray[1] + }, + + /** + * 鐐瑰嚮棰嗗彇鏃惰Е鍙� + * @param id 琛岃褰昳d + */ + handleCollect(id) { + let that = this + this.loading = true + getAction(that.url.collect, { id }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + this.loading = false + } + }) + }, + + // 鎵归噺棰嗗彇 + handleBatchCollect() { + var ids = '' + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ',' + } + var that = this + this.$confirm({ + title: '纭棰嗗彇', + content: '鏄惁棰嗗彇閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲棰嗗彇鎴愬姛?', + onOk: function() { + that.loading = true + deleteAction(that.url.collectBatch, { ids }) + .then((res) => { + if (res.success) { + //閲嶆柊璁$畻鍒嗛〉闂 + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + that.onClearSelected() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + that.loading = false + } + }) + } + }) + }, + + /** + * 鐐瑰嚮浣滃簾鏃惰Е鍙� + * @param id 琛岃褰昳d + */ + handleAbolish(id) { + var that = this + this.loading = true + getAction(that.url.abolish, { id }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + this.loading = false + } + }) + }, + + // 鎵归噺浣滃簾 + handleBatchAbolish() { + var ids = '' + for (var a = 0; a < this.selectedRowKeys.length; a++) { + ids += this.selectedRowKeys[a] + ',' + } + var that = this + this.$confirm({ + title: '纭浣滃簾', + content: '鏄惁浣滃簾閫変腑鏁版嵁锛屽彧鏈夊緟淇濆吇鐘舵�佺殑鏁版嵁鎵嶅彲浣滃簾鎴愬姛?', + onOk: function() { + that.loading = true + deleteAction(that.url.abolishBatch, { ids }) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.loadData() + that.onClearSelected() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + that.loading = false + } + }) + } + }) + }, + + /** + * 鐐瑰嚮璇︽儏鏃惰Е鍙戞椂瑙﹀彂 + * @param record + */ + handleDetail(record) { + this.selectedRowData = Object.assign({}, record) + this.$refs.thirdMaintenanceFurnaceApprovalModal.title = '璇︽儏' + this.$refs.thirdMaintenanceFurnaceApprovalModal.disableSubmit = true + this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true + this.$refs.thirdMaintenanceFurnaceApprovalModal.handleDetail(record) + } + } + } +</script> \ No newline at end of file diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue new file mode 100644 index 0000000..12cd683 --- /dev/null +++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceFurnaceModal.vue @@ -0,0 +1,121 @@ +<template> + <j-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴"> + <a-spin :spinning="confirmLoading"> + <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-form-model-item label="宸ュ崟鍙�"> + <a-input placeholder="宸ュ崟鍙疯嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/> + </a-form-model-item> + <a-form-model-item prop="equipmentId" label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" :allowClear="false" + :disabled="!editable"/> + </a-form-model-item> + <a-form-model-item prop="maintenanceDate" label="璁″垝淇濆吇鏃ユ湡"> + <a-date-picker v-model="model.maintenanceDate" value-format="YYYY-MM-DD" :allowClear="false" + style="width: 100%"/> + </a-form-model-item> + <a-form-model-item label="澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> + </a-form-model-item> + </a-form-model> + </a-spin> + </j-modal> +</template> + +<script> + import { httpAction } from '@/api/manage' + import LxSearchEquipmentSelect from '../../equipment/modules/LxSearchEquipmentSelect' + + export default { + name: 'EamThirdMaintenanceFurnaceModal', + components: { LxSearchEquipmentSelect }, + data() { + return { + title: '鎿嶄綔', + visible: false, + editable: true, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + validatorRules: { + equipmentId: [{ required: true, message: '璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�', trigger: 'change' }], + maintenanceDate: [{ required: true, message: '璇烽�夋嫨淇濆吇鏃ユ湡', trigger: 'change' }] + }, + url: { + add: '/eam/eamThirdMaintenanceFurnace/add', + edit: '/eam/eamThirdMaintenanceFurnace/edit' + } + } + }, + methods: { + add() { + this.model = {} + this.visible = true + this.editable = true + }, + + edit(record) { + this.model = Object.assign({}, record) + this.visible = true + this.editable = false + }, + + handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true + let httpurl = '' + let method = '' + if (!this.model.id) { + httpurl += this.url.add + method = 'post' + } else { + httpurl += this.url.edit + method = 'put' + } + httpAction(httpurl, that.model, method) + .then((res) => { + if (res.success) { + that.$notification.success({ + message: '娑堟伅', + description: res.message + }) + that.$emit('ok') + that.close() + } else { + that.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) + .finally(() => { + that.confirmLoading = that.spinning = false + }) + } else { + return false + } + }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + if (this.$refs.form) this.$refs.form.clearValidate() + } + } + } +</script> \ No newline at end of file diff --git a/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue deleted file mode 100644 index 4a77dba..0000000 --- a/src/views/eam/maintenance/modules/EamWeekMaintenanceOrderModal.vue +++ /dev/null @@ -1,345 +0,0 @@ -<template> - <j-modal - :title="title" - :width="1200" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - :mask-closable="false" - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> - <a-spin :spinning="spinning"> - <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-row :gutter="24"> - <a-col :span="8"> - <a-form-model-item prop="orderNum" label="宸ュ崟鍙�"> - <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item prop="equipmentId" label="璁惧缂栫爜"> - <maintenance-equipment-select placeholder="璇疯緭鍏ヨ澶囩紪鍙锋垨鍚嶇О鎼滅储" v-model="model.equipmentId" - :maintenanceCategory="maintenanceCategory" - @autocompleteForm="autocompleteForm" - :disabled="editable"></maintenance-equipment-select> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item prop="standardName" label="鏍囧噯鍚嶇О"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/> - </a-form-model-item> - </a-col> - </a-row> - <a-row :gutter="24"> - <a-col :span="8"> - <a-form-model-item prop="maintenanceDate" label="淇濆吇鏃ユ湡"> - <a-date-picker placeholder="璇烽�夋嫨璁″垝淇濆吇鏃ユ湡" v-model="model.maintenanceDate" format="YYYY-MM-DD" - style="width: 100%"/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item prop="operator" label="淇濆吇浜�"> - <j-search-select-tag v-model="model.operator" placeholder="璇烽�夋嫨淇濆吇浜�" :disabled="!model.equipmentId" - :dictOptions="maintenanceOperatorOptions"/> - </a-form-model-item> - </a-col> - <a-col :span="8"> - <a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡"> - <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.maintenancePeriod" disabled/> - </a-form-model-item> - </a-col> - </a-row> - <a-row :gutter="24"> - <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" prop="remark" label="澶囨敞"> - <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> - </a-form-model-item> - </a-row> - <a-row :gutter="24"> - <a-spin :spinning="detail.loading"> - <j-vxe-table - ref="editableDetailTable" - :rowNumber="true" - :rowSelection="true" - :bordered="true" - :alwaysEdit="true" - :toolbar="true" - :toolbarConfig="detail.toolbarConfig" - keep-source - :height="300" - :dataSource="detail.dataSource" - :columns="detail.columns" - style="margin-top: 8px;"/> - </a-spin> - </a-row> - </a-form-model> - </a-spin> - </j-modal> -</template> - -<script> - import { getAction, httpAction } from '@/api/manage' - import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' - import { JVXETypes } from '@comp/jeecg/JVxeTable' - import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect' - - export default { - name: 'EamWeekMaintenanceOrderModal', - mixins: [JVxeTableModelMixin], - components: { - MaintenanceEquipmentSelect - }, - data() { - return { - title: '鎿嶄綔', - visible: false, - editable: false, - model: {}, - maintenanceCategory: 'WEEK_MAINTENANCE', - maintenanceOperatorOptions: [], - labelCol: { - xs: { span: 24 }, - sm: { span: 6 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 } - }, - labelColLong: { - xs: { span: 24 }, - sm: { span: 2 } - }, - wrapperColLong: { - xs: { span: 24 }, - sm: { span: 21 } - }, - confirmLoading: false, - spinning: false, - validatorRules: { - equipmentId: [ - { required: true, message: '璇烽�夋嫨璁惧!' } - ], - maintenanceDate: [ - { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' } - ] - }, - url: { - add: '/eam/weekMaintenanceOrder/add', - edit: '/eam/weekMaintenanceOrder/edit', - standardDetail: '/eam/eamMaintenanceStandardDetail/queryList', - detail: '/eam/weekMaintenanceOrderDetail/queryList', - userSelect: '/eam/user_select/list' - }, - detail: { - loading: false, - dataSource: [], - columns: [ - { - title: 'ID', - key: 'id', - type: JVXETypes.hidden - }, - { - title: 'orderId', - key: 'orderId', - type: JVXETypes.hidden - }, - { - title: '搴忓彿', - key: 'itemCode', - type: JVXETypes.inputNumber, - width: '10%', - align: 'center', - validateRules: [ - { required: true, unique: true, message: '搴忓彿涓嶈兘閲嶅' } - ] - }, - { - title: '淇濆吇椤�', - key: 'itemName', - type: JVXETypes.textarea, - width: '20%', - align: 'center', - validateRules: [ - { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' } - ] - }, - { - title: '瀛愪繚鍏婚」', - key: 'subItemName', - type: JVXETypes.textarea, - width: '25%', - align: 'center' - }, - { - title: '淇濆吇瑕佹眰', - key: 'itemDemand', - type: JVXETypes.textarea, - width: '30%', - align: 'center', - validateRules: [ - { required: true, message: '淇濆吇瑕佹眰涓嶈兘涓虹┖锛�' } - ] - } - ], - toolbarConfig: { - // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - slot: ['prefix', 'suffix'], - // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - btn: ['add', 'remove', 'clearSelection'] - } - } - } - }, - created() { - }, - methods: { - add() { - //鍒濆鍖栭粯璁ゅ�� - this.model = {} - this.visible = true - this.editable = false - this.detail.dataSource = [] - }, - edit(record) { - this.model = Object.assign({}, record) - this.visible = true - this.editable = true - this.detail.dataSource = [] - this.loadDetail(record.id) - }, - close() { - this.$emit('close') - this.visible = false - this.$refs.form.clearValidate() - }, - async handleOk() { - const that = this - let errMap = await that.$refs.editableDetailTable.validateTable() - if (errMap) { - this.$message.warning('鏁版嵁鏍¢獙澶辫触锛�') - return - } - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - let tableData = that.$refs.editableDetailTable.getTableData() - let removeData = that.$refs.editableDetailTable.getDeleteData() - that.model.tableDetailList = [...tableData] - that.model.removeDetailList = [...removeData] - - that.confirmLoading = true - let httpurl = '' - let method = '' - if (!this.model.id) { - httpurl += this.url.add - method = 'post' - } else { - httpurl += this.url.edit - method = 'put' - } - httpAction(httpurl, this.model, method).then((res) => { - if (res.success) { - that.$message.success(res.message) - that.$emit('ok') - that.close() - } else { - that.$message.warning(res.message) - } - }).finally(() => { - that.confirmLoading = false - }) - } else { - return false - } - }) - }, - handleCancel() { - this.close() - }, - autocompleteForm(selectObj) { - //鏍囧噯鍚嶇О锛屼繚鍏诲懆鏈熶笉鍒锋柊瑙e喅鍔炴硶 - //鍔炴硶涓� validatorRules equipmentId 杩樻槸鏈夐棶棰� - // const newObj = { - // standardName: selectObj.standardName, - // maintenancePeriod: selectObj.maintenancePeriod, - // standardId : selectObj.id, - // equipmentId: selectObj.equipmentId, - // }; - // this.model = Object.assign({}, newObj, this.model) - //鍔炴硶浜� - this.$set(this.model, 'standardName', selectObj.standardName) - this.$set(this.model, 'maintenancePeriod', selectObj.maintenancePeriod) - this.$set(this.model, 'standardId', selectObj.id) - this.$set(this.model, 'equipmentId', selectObj.equipmentId) - // console.log('model', this.model) - if (!this.model.equipmentId) delete this.model.operator - if (!this.model.id) { - this.loadStandardDetail(selectObj.id) - } - this.loadMaintenanceOperatorList(this.model.equipmentId) - }, - //鍔犺浇璇︽儏鏁版嵁 - loadStandardDetail(standardId) { - this.detail.dataSource = [] - if (standardId) { - this.spinning = true - getAction(this.url.standardDetail, { standardId: standardId }) - .then(res => { - if (res.success) { - this.detail.dataSource = res.result.map(item => ({ - itemCode: item.itemCode, - itemName: item.itemName, - subItemName: item.subItemName, - itemDemand: item.itemDemand - })) - } - }) - .finally(() => { - this.spinning = false - }) - } - }, - //鏍囧噯閫夋嫨鍙樺寲 - loadDetail(orderId) { - if (orderId) { - getAction(this.url.detail, { orderId: orderId }).then(res => { - if (res.success) { - this.detail.dataSource = [...res.result] - } - }) - } - }, - loadMaintenanceOperatorList(equipmentId) { - this.maintenanceOperatorOptions = [] - let params = { positionCode: 'PCR0001' } - if (equipmentId) { - params.equipmentId = equipmentId - } - else return - const that = this - getAction(this.url.userSelect, params) - .then(res => { - if (res.success) { - that.maintenanceOperatorOptions = res.result.map(item => ({ - key: item.id, - value: item.username, - text: item.realname - })) - if (!that.maintenanceOperatorOptions.find(item => item.value === that.model.operator)) delete that.model.operator - } else { - if (that.model.operator) delete that.model.operator - } - }) - .catch(err => { - if (that.model.operator) delete that.model.operator - }) - } - - } - } -</script> - -<style lang="less" scoped> - -</style> \ No newline at end of file diff --git a/src/views/flowable/workflow/FlowCompleted.vue b/src/views/flowable/workflow/FlowCompleted.vue index 3206395..19fafab 100644 --- a/src/views/flowable/workflow/FlowCompleted.vue +++ b/src/views/flowable/workflow/FlowCompleted.vue @@ -76,6 +76,10 @@ <!--涓変繚鍙樻洿--> <third-maintenance-order-change-approval-modal ref="thirdMaintenanceOrderChangeApprovalModal" :selectShenpiData="selectedRowData"/> + + <!--鐪熺┖鐑鐞嗙倝涓変繚--> + <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal" + :selectShenpiData="selectedRowData"/> </a-card> </template> @@ -95,11 +99,13 @@ import RepairOrderApprovalModal from './repairOrder/RepairOrderApprovalModal' import MaintenanceStandardApprovalModal from './MaintenanceStandard/MaintenanceStandardApprovalModal' import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal' + import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' export default { name: 'FlowCompleted', mixins: [JeecgListMixin], components: { + ThirdMaintenanceFurnaceApprovalModal, ThirdMaintenanceOrderChangeApprovalModal, MaintenanceStandardApprovalModal, RepairOrderApprovalModal, @@ -210,6 +216,9 @@ break case 'third_maintenance_change': this.handleThirdMaintenanceOrderChange(record) + break + case 'third_maintenance_furnace_process': + this.handleThirdMaintenanceFurnace(record) break default: alert('娌℃壘鍒拌娴佺▼') @@ -348,6 +357,18 @@ this.$refs.thirdMaintenanceOrderChangeApprovalModal.handleApprove(record) }, + /** + * 鐐瑰嚮鐪熺┖鐑鐞嗙倝涓変繚宸ュ崟娴佺▼鎵ц瀹℃壒鏃惰Е鍙� + * @param record + */ + handleThirdMaintenanceFurnace(record) { + this.selectedRowData = Object.assign({}, record) + this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true + this.$refs.thirdMaintenanceFurnaceApprovalModal.title = record.name + this.$refs.thirdMaintenanceFurnaceApprovalModal.disableSubmit = true + this.$refs.thirdMaintenanceFurnaceApprovalModal.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 9ecfc00..89f1065 100644 --- a/src/views/flowable/workflow/FlowTodo.vue +++ b/src/views/flowable/workflow/FlowTodo.vue @@ -125,6 +125,11 @@ <third-maintenance-order-change-approval-modal ref="thirdMaintenanceOrderChangeApprovalModal" :selectShenpiData="selectedRowData" @modalFormOk="modalFormOk"/> + + <!--鐪熺┖鐑鐞嗙倝涓変繚--> + <third-maintenance-furnace-approval-modal ref="thirdMaintenanceFurnaceApprovalModal" + :selectShenpiData="selectedRowData" + @modalFormOk="modalFormOk"/> </a-card> </template> @@ -145,11 +150,13 @@ from './TechnicalStatusEvaluation/TechnicalStatusEvaluationApplicationApprovalModal' import TechnicalStatusDeactivateApprovalModal from './TechnicalStatus/TechnicalStatusDeactivateApprovalModal' import ThirdMaintenanceOrderChangeApprovalModal from './thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal' + import ThirdMaintenanceFurnaceApprovalModal from './thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal' export default { name: 'FlowTodo', mixins: [JeecgListMixin], components: { + ThirdMaintenanceFurnaceApprovalModal, ThirdMaintenanceOrderChangeApprovalModal, TechnicalStatusDeactivateApprovalModal, TechnicalStatusEvaluationApplicationApprovalModal, @@ -276,6 +283,9 @@ case 'third_maintenance_change': this.handleThirdMaintenanceOrderChange(record) break + case 'third_maintenance_furnace_process': + this.handleThirdMaintenanceFurnace(record) + break default: alert('娌℃壘鍒拌娴佺▼') } @@ -402,6 +412,17 @@ this.$refs.thirdMaintenanceOrderChangeApprovalModal.handleApprove(record) }, + /** + * 鐐瑰嚮鐪熺┖鐑鐞嗙倝涓変繚宸ュ崟娴佺▼鎵ц瀹℃壒鏃惰Е鍙� + * @param record + */ + handleThirdMaintenanceFurnace(record) { + this.selectedRowData = Object.assign({}, record) + this.$refs.thirdMaintenanceFurnaceApprovalModal.visible = true + this.$refs.thirdMaintenanceFurnaceApprovalModal.title = record.name + this.$refs.thirdMaintenanceFurnaceApprovalModal.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/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue b/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue index 0808fe0..5e568f9 100644 --- a/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue +++ b/src/views/flowable/workflow/TechnicalStatusEvaluation/TechnicalStatusEvaluationOrderChangeApprovalModal.vue @@ -6,7 +6,7 @@ <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-row id="outer-row" :gutter="24"> <!--宸︿晶鍩虹淇℃伅鍒�--> - <a-col :span="!disableSubmit?8:14" class="scroll-col"> + <a-col :span="selectShenpiData.procInstId?8:14" class="scroll-col"> <a-tabs> <a-tab-pane tab="鍩虹淇℃伅"> <a-row> @@ -78,7 +78,7 @@ </a-col> <!--鍙充晶瀹℃壒鍒�--> - <a-col :span="!disableSubmit?6:10" class="scroll-col"> + <a-col :span="selectShenpiData.procInstId?6:10" class="scroll-col"> <a-tabs v-if="displayEquipmentManagerFlag"> <a-tab-pane tab="浣跨敤鍗曚綅瀹ょ骇棰嗗纭"> <a-row> diff --git a/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue new file mode 100644 index 0000000..4a345d1 --- /dev/null +++ b/src/views/flowable/workflow/thirdMaintenance/ThirdMaintenanceFurnaceApprovalModal.vue @@ -0,0 +1,354 @@ +<template> + <j-modal :title="title" :width="1300" :fullscreen="fullScreen" :visible="visible" :confirmLoading="confirmLoading" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" @ok="handleOk" centered + @cancel="handleCancel" 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:14" class="scroll-col"> + <a-tabs> + <a-tab-pane tab="鍩虹淇℃伅"> + <a-row> + <a-col :span="12"> + <a-form-model-item label="宸ュ崟鍙�"> + <a-input v-model="model.orderNum" readOnly/> + </a-form-model-item> + </a-col> + <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-row> + <a-row> + <a-col :span="12"> + <a-form-model-item label="璁″垝淇濆吇鏃ユ湡"> + <a-input v-model="model.maintenanceDate" readOnly/> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="淇濆吇浜�"> + <a-input v-model="model.operator_dictText" 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.remark" 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> + <a-tab-pane key='1' tab='娴佺▼鍥�'> + <img :src="imageSrc" alt="Fetched Image" style="width: 100%" v-if="imageSrc"/> + </a-tab-pane> + </a-tabs> + </a-col> + + <!--鍙充晶瀹℃壒鍒�--> + <a-col :span="selectShenpiData.procInstId?6:10" class="scroll-col"> + <a-tabs v-if="displayRepairConfirmFlag"> + <a-tab-pane tab="缁翠慨宸ョ‘璁�"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="compressedAirPressureValue" label="鍘嬬缉绌烘皵鍘嬪姏(MPa)" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.compressedAirPressureValue' placeholder="璇疯緭鍏ュ帇缂╃┖姘斿帇鍔�(MPa)" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="ultimateVacuumValue" label="鏋侀檺鐪熺┖(Pa)" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.ultimateVacuumValue' placeholder="璇疯緭鍏ユ瀬闄愮湡绌�(Pa)" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="leakRate" label="娉勬紡鐜�(Pa/h)" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.leakRate' placeholder="璇疯緭鍏ユ硠婕忕巼(Pa/h)" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="purificationTreatment" label="鍑�鍖栧鐞�" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.purificationTreatment' placeholder="璇疯緭鍏ュ噣鍖栧鐞�" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="furnaceTemperatureUniformityTesting" label="鐐夋俯鍧囧寑鎬ф娴�" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.furnaceTemperatureUniformityTesting' placeholder="璇疯緭鍏ョ倝娓╁潎鍖�鎬ф娴�" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="heatingPowerTest" label="鍔犵儹鍔熺巼娴嬭瘯" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <a-input v-model='model.heatingPowerTest' placeholder="璇疯緭鍏ュ姞鐑姛鐜囨祴璇�" + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + <a-col :span="24"> + <a-form-model-item prop="processingRequirementsFlag" label="鑳藉惁婊¤冻鍔犲伐闇�姹�" + :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type="radio" dict-code="yn" v-model='model.processingRequirementsFlag' + :disabled="disableSubmit||(model.maintenanceStatus&&model.maintenanceStatus!='UNDER_MAINTENANCE')"/> + </a-form-model-item> + </a-col> + </a-row> + </a-tab-pane> + </a-tabs> + + <a-tabs v-if="displayRepairLeaderConfirmFlag"> + <a-tab-pane tab="缁翠慨瀹や富浠荤‘璁�"> + <a-row> + <a-col :span="24"> + <a-form-model-item prop="confirmDealType" label="纭绫诲瀷" :labelCol="rightColLabelCol" + :wrapperCol="rightColWrapperCol"> + <j-dict-select-tag type='radio' v-model='model.confirmDealType' dictCode='approved_rejected' + disabled/> + </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, putAction } from '@/api/manage' + import LxSearchEquipmentSelect from '../../../eam/equipment/modules/LxSearchEquipmentSelect' + + export default { + name: 'ThirdMaintenanceFurnaceApprovalModal', + components: { + LxSearchEquipmentSelect + }, + props: { + selectShenpiData: { + type: Object + } + }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 8 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + labelColLong: { + xs: { span: 24 }, + sm: { span: 4 } + }, + wrapperColLong: { + xs: { span: 24 }, + sm: { span: 20 } + }, + rightColLabelCol: { + xs: { span: 24 }, + sm: { span: 10 } + }, + rightColWrapperCol: { + xs: { span: 24 }, + sm: { span: 12 } + }, + confirmLoading: false, + spinning: false, + imageSrc: null, + fullScreen: true, + validatorRules: { + compressedAirPressureValue: [{ required: true, message: '璇疯緭鍏ュ帇缂╃┖姘斿帇鍔�(MPa)', trigger: 'change' }], + ultimateVacuumValue: [{ required: true, message: '璇疯緭鍏ユ瀬闄愮湡绌�(Pa)', trigger: 'change' }], + leakRate: [{ required: true, message: '璇疯緭鍏ユ硠婕忕巼(Pa/h)', trigger: 'change' }], + purificationTreatment: [{ required: true, message: '璇疯緭鍏ュ噣鍖栧鐞�', trigger: 'change' }], + furnaceTemperatureUniformityTesting: [{ required: true, message: '璇疯緭鍏ョ倝娓╁潎鍖�鎬ф娴�', trigger: 'change' }], + heatingPowerTest: [{ required: true, message: '璇疯緭鍏ュ姞鐑姛鐜囨祴璇�', trigger: 'change' }], + processingRequirementsFlag: [{ required: true, message: '璇烽�夋嫨鑳藉惁婊¤冻鍔犲伐闇�姹�' }], + confirmDealType: [{ required: true, message: '璇烽�夋嫨纭绫诲瀷' }] + }, + url: { + queryById: '/eam/eamThirdMaintenanceFurnace/queryById', + approval: '/eam/eamThirdMaintenanceFurnace/approval', + diagramView: '/assign/flow/diagramView' + }, + disableSubmit: false, + selectedRowKeys: [] + } + }, + computed: { + displayRepairConfirmFlag() { + return this.model.maintenanceStatus && ['UNDER_MAINTENANCE', 'WAIT_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) + }, + displayRepairLeaderConfirmFlag() { + return this.model.maintenanceStatus && ['WAIT_CONFIRM', 'COMPLETE'].includes(this.model.maintenanceStatus) + } + }, + methods: { + /** + * 涓婚〉闈㈢偣鍑绘墽琛屽鎵规椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + handleApprove(record) { + this.fullScreen = true + this.model = {} + this.getBasicInformationByApi(record) + this.getFlowChartImageByApi(record) + }, + + /** + * 涓婚〉闈㈢偣鍑昏鎯呮椂瑙﹀彂 + * @param record 涓婚〉闈㈠垪琛ㄨ璁板綍 + */ + handleDetail(record) { + this.fullScreen = false + 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({ confirmDealType: '1' }, res.result) + 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 + this.imageSrc = null + 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 + + putAction(this.url.approval, this.model) + .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 + } + }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + 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