From a4674a75bfffc500a049beafb74daaec50c8f87f Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 17 七月 2025 17:46:06 +0800 Subject: [PATCH] 三保工单审批流程 --- src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue | 560 +++++++++++++++++-------------------------------------- 1 files changed, 171 insertions(+), 389 deletions(-) diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue index 47c06d1..2ff8c43 100644 --- a/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue +++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceOrderModal.vue @@ -1,437 +1,219 @@ <template> - <j-modal - :title="title" - :width="1200" - :visible="visible" - :confirmLoading="confirmLoading" - switchFullscreen - :mask-closable="false" - @ok="handleOk" - @cancel="handleCancel" - cancelText="鍏抽棴"> + <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered + :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-row> <a-col :span="8"> <a-form-model-item prop="orderNum" label="宸ュ崟鍙�"> - <a-input placeholder="宸ュ崟鍙风郴缁熻嚜鍔ㄧ敓鎴�" v-model="model.orderNum" disabled /> + <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 prop="equipmentId" label="缁熶竴缂栫爜"> + <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="model.equipmentId" + maintenanceCategory="THIRD_MAINTENANCE" @autocompleteForm="autocompleteForm"/> </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 prop="standardName" label="瑙勮寖鍚嶇О"> + <a-input placeholder="閫夋嫨璁惧鍚庤嚜鍔ㄥ甫鍑�" v-model="model.standardName" disabled/> </a-form-model-item> </a-col> </a-row> - <a-row :gutter="24"> + + <a-row> <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%" /> + 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-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-row> + <a-form-model-item :labelCol="labelColLong" :wrapperCol="wrapperColLong" label="澶囨敞"> + <a-textarea placeholder="璇疯緭鍏ュ娉�" v-model="model.remark"/> </a-form-model-item> </a-row> - <a-row :gutter="24"> - <a-tabs v-model="activeTabKey"> - <a-tab-pane key="1" tab="淇濆吇椤�" :forceRender="true"> - <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-tab-pane> - </a-tabs> - </a-row> + + <a-tabs default-active-key="1"> + <a-tab-pane key="1" tab="淇濆吇椤规槑缁�"> + <j-vxe-table ref="editableDetailTable" bordered keep-source + :height="300" :dataSource="detail.dataSource" :columns="detail.columns"/> + </a-tab-pane> + </a-tabs> </a-form-model> </a-spin> </j-modal> </template> <script> -import { getAction, httpAction } from '@/api/manage' -import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' -import { JVXETypes } from '@comp/jeecg/JVxeTable' + import { getAction, httpAction } from '@/api/manage' + import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue' + import { JVXETypes } from '@comp/jeecg/JVxeTable' -export default { - name: 'EamThirdMaintenanceOrderModal', - components: { MaintenanceEquipmentSelect }, - data() { - return { - title: '鎿嶄綔', - visible: false, - editable: false, - maintenanceCategory: 'THIRD_MAINTENANCE', - model: {}, - 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, - activeTabKey: '1', - maintenanceOperatorOptions: [], - validatorRules: { - equipmentId: [ - { required: true, message: '璇烽�夋嫨璁惧!' } - ], - maintenanceDate: [ - { required: true, message: '璇烽�夋嫨璁″垝淇濆吇鏃ユ湡!' } - ] - }, - url: { - add: '/eam/thirdMaintenanceOrder/add', - edit: '/eam/thirdMaintenanceOrder/edit', - standardDetail: '/eam/eamMaintenanceStandardDetail/queryList', - detail: '/eam/thirdMaintenanceOrderDetail/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: 'itemPart', - type: JVXETypes.textarea, - width: '25%', - align: 'center' - }, - { - title: '淇濆吇椤�', - key: 'itemName', - type: JVXETypes.textarea, - width: '20%', - align: 'center', - validateRules: [ - { required: true, message: '淇濆吇椤逛笉鑳戒负绌猴紒' } - ] - }, - { - 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'] - } - }, - // precisionDetail: { - // loading: false, - // dataSource: [], - // columns: [ - // { - // title: 'ID', - // key: 'id', - // type: JVXETypes.hidden - // }, - // { - // title: 'orderId', - // key: 'orderId', - // type: JVXETypes.hidden - // }, - // { - // title: 'equipmentId', - // key: 'equipmentId', - // type: JVXETypes.hidden - // }, - // { - // title: 'parameterId', - // key: 'parameterId', - // type: JVXETypes.hidden - // }, - // { - // title: '妫�娴嬮」鐩�', - // key: 'parameterId_dictText', - // type: JVXETypes.normal, - // width: '25%', - // align: 'center' - // }, - // { - // title: '鍙傛暟缂栫爜', - // key: 'parameterCode_dictText', - // type: JVXETypes.normal, - // width: '20%', - // align: 'center', - // }, - // { - // title: '鍏佸樊鍊�', - // key: 'parameterValue', - // type: JVXETypes.normal, - // width: '30%', - // align: 'center', - // } - // ], - // toolbarConfig: { - // // prefix 鍓嶇紑锛泂uffix 鍚庣紑 - // slot: ['prefix', 'suffix'], - // // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳 - // btn: ['add', 'remove', 'clearSelection'] - // } - // } - } - }, - created() { - }, - methods: { - add() { - this.initParams(); - //鍒濆鍖栭粯璁ゅ�� - this.model = {} - this.visible = true - this.editable = false - this.detail.dataSource = [] - }, - edit(record) { - this.initParams(); - this.model = Object.assign({}, record) - this.visible = true - this.editable = true - this.detail.dataSource = [] - this.loadDetail(record.id) - // this.loadPrecisionDetail(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) + export default { + name: 'EamThirdMaintenanceOrderModal', + components: { MaintenanceEquipmentSelect }, + data() { + return { + title: '鎿嶄綔', + visible: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 6 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 15 } + }, + 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/thirdMaintenanceOrder/add', + standardDetail: '/eam/eamMaintenanceStandardDetail/queryList' + }, + detail: { + dataSource: [], + columns: [ + { + title: 'ID', + key: 'id', + type: JVXETypes.hidden + }, + { + title: 'orderId', + key: 'orderId', + type: JVXETypes.hidden + }, + { + title: '搴忓彿', + key: 'itemCode', + type: JVXETypes.normal, + width: 60, + align: 'center' + }, + { + title: '淇濆吇閮ㄤ綅', + key: 'itemPart', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '淇濆吇鍐呭', + key: 'itemName', + type: JVXETypes.normal, + align: 'center' + }, + { + title: '楠屾敹鏍囧噯', + key: 'itemDemand', + type: JVXETypes.normal, + align: 'center' } - }).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.loadPrecisionParameterList(selectObj.equipmentId) } - this.loadMaintenanceOperatorList(this.model.equipmentId) }, - //鍔犺浇璇︽儏鏁版嵁 - loadStandardDetail(standardId) { - this.detail.dataSource = [] - if (standardId) { + methods: { + add() { + //鍒濆鍖栭粯璁ゅ�� + this.model = {} + this.detail.dataSource = [] + this.visible = true + }, + + async handleOk() { + const that = this + let errMap = await that.$refs.editableDetailTable.validateTable() + if (errMap) return + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.model.tableDetailList = that.$refs.editableDetailTable.getTableData() + that.confirmLoading = that.spinning = true + httpAction(that.url.add, that.model, 'post') + .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 + } + }) + }, + + autocompleteForm(selectObj) { + 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) + this.loadStandardDetail(selectObj.id) + }, + + //鍔犺浇璇︽儏鏁版嵁 + loadStandardDetail(standardId) { + this.detail.dataSource = [] this.spinning = true - getAction(this.url.standardDetail, { standardId: standardId }) + getAction(this.url.standardDetail, { standardId }) .then(res => { if (res.success) { - this.detail.dataSource = res.result.map(item => ({ - itemCode: item.itemCode, - itemName: item.itemName, - itemPart: item.itemPart, - itemDemand: item.itemDemand - })) + this.detail.dataSource = res.result } }) .finally(() => { this.spinning = false }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() } - }, - //鏍囧噯閫夋嫨鍙樺寲 - 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 - }) - }, - // loadPrecisionParameterList(equipmentId) { - // this.precisionDetail.dataSource = [] - // if (equipmentId) { - // this.spinning = true - // getAction(this.url.precisionDetail, { equipmentId: equipmentId }) - // .then(res => { - // if (res.success) { - // this.precisionDetail.dataSource = res.result.map(item => ({ - // equipmentId: item.equipmentId, - // parameterId: item.parameterId, - // parameterId_dictText: item.parameterId_dictText, - // parameterCode_dictText: item.parameterCode_dictText, - // parameterValue: item.parameterValue, - // })) - // } - // }) - // .finally(() => { - // this.spinning = false - // }) - // } - // }, - // loadPrecisionDetail(orderId) { - // if (orderId) { - // getAction(this.url.precisionCheckDetail, { orderId: orderId }).then(res => { - // if (res.success) { - // this.precisionDetail.dataSource = [...res.result] - // } - // }) - // } - // }, - initParams() { - this.detail.dataSource = [] - // this.precisionDetail.dataSource = [] - this.activeTabKey = '1' - }, + } } -} -</script> - -<style lang="less" scoped> - -</style> \ No newline at end of file +</script> \ No newline at end of file -- Gitblit v1.9.3