From e56be6e04cc6bfd106a354a5419f8a86f31f4003 Mon Sep 17 00:00:00 2001 From: qushaowei <qushaowei@163.com> Date: 星期五, 30 五月 2025 17:28:04 +0800 Subject: [PATCH] 备件请购完成 --- src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue | 151 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 122 insertions(+), 29 deletions(-) diff --git a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue index c0781ad..13ab68f 100644 --- a/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue +++ b/src/views/eam/spare/modules/EamSparePartRequisition/EamSparePartRequisitionModal.vue @@ -1,20 +1,24 @@ <template> <j-modal :title="title" - :width="800" + :width="900" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen + centered + :mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴" > - <a-spin :spinning="confirmLoading"> + <a-spin :spinning="spinning"> <a-form-model ref="form" :model="model" :rules="validatorRules" + :labelCol="labelCol" + :wrapperCol="wrapperCol" > <a-form-model-item :labelCol="labelCol" @@ -39,45 +43,118 @@ v-model="model.remark" /> </a-form-model-item> + <a-row :gutter="24"> + <j-vxe-table + ref="editableDetailTable" + :rowNumber="true" + :rowSelection="true" + :bordered="true" + :alwaysEdit="true" + :toolbar="true" + keep-source + :height="300" + :loading="detail.loading" + :dataSource="detail.dataSource" + :columns="detail.columns" + style="margin-top: 8px;" + /> + </a-row> </a-form-model> </a-spin> </j-modal> </template> <script> -import { httpAction, getAction } from '@api/manage' -import moment from "moment" +import { getAction, httpAction } from '@/api/manage' +import { JVxeTableModelMixin } from '@/mixins/JVxeTableModelMixin.js' +import { JVXETypes } from '@/components/jeecg/JVxeTable' export default { - name: "EamSparePartRequisitionModal", + name: 'EamSparePartIntoModal', + mixins: [JVxeTableModelMixin], + components: {}, data() { return { - title: "鎿嶄綔", + title: '鎿嶄綔', visible: false, model: {}, labelCol: { xs: { span: 24 }, - sm: { span: 5 }, + sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 }, + sm: { span: 15 } }, - confirmLoading: false, + spinning: false, + disabled: false, validatorRules: {}, url: { + //add: '/eam/eamSparePartInventory/add', + //edit: '/eam/eamSparePartInventory/edit', add: "/eam/eamSparePartRequisition/add", edit: "/eam/eamSparePartRequisition/edit", + getDetails: "/eam/eamSparePartRequisitionDetail/list", generateRequisitionCode: "sys/sysBusinessCodeRule/generateBusinessCodeSeq" }, + detail: { + loading: false, + dataSource: [], + columns: [ + { + title: '澶囦欢', + key: 'partId', + type: JVXETypes.select, + width: '30%', + align: 'center', + dictCode: 'eam_spare_parts,part_name,id, del_flag!=\'1\'', + validateRules: [ + { required: true, message: '澶囦欢涓嶈兘涓虹┖锛�' } + ] + }, + // { + // title: '鎵规鍙�', + // key: 'batchNum', + // type: JVXETypes.input, + // width: '10%', + // align: 'center', + // validateRules: [ + // { required: true, message: '鎵规鍙蜂笉鑳戒负绌猴紒' } + // ] + // }, + { + title: '鏁伴噺', + key: 'requisitionNum', + type: JVXETypes.inputNumber, + width: '30%', + align: 'center', + validateRules: [ + { required: true, message: '鏁伴噺涓嶈兘涓虹┖锛�' } + ] + }, + // { + // title: '鍑哄巶鏃ユ湡(鐢熶骇鏃ユ湡)', + // key: 'manufactureDate', + // type: JVXETypes.datetime, + // width: '16%', + // align: 'center', + // validateRules: [ + // { required: false, message: '鍑哄巶鏃ユ湡(鐢熶骇鏃ユ湡)涓嶈兘涓虹┖锛�' } + // ] + // }, + + ] + } } }, created() { }, methods: { add() { + const that = this + this.visible = true; let params = { businessCode: "SpareRequisitionCodeRule" } @@ -95,48 +172,64 @@ }, edit(record) { this.model = Object.assign({}, record); + this.detail.dataSource = record.sparePartRequisitionDetails this.visible = true; }, - close() { - this.$emit('close'); - this.visible = false; - this.$refs.form.clearValidate(); - }, - handleOk() { - const that = this; + + 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) { - that.confirmLoading = true; - let httpurl = ''; - let method = ''; + let tableData = that.$refs.editableDetailTable.getTableData() + let removeData = that.$refs.editableDetailTable.getDeleteData() + that.model.sparePartRequisitionDetails = [...tableData] + that.model.removeDetailList = [...removeData] + + that.confirmLoading = that.spinning = true + let httpurl = '' + let method = '' if (!this.model.id) { - httpurl += this.url.add; - method = 'post'; + httpurl += this.url.add + method = 'post' } else { - httpurl += this.url.edit; - method = 'put'; + 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.$message.success(res.message) + that.$emit('ok') + that.close() } else { - that.$message.warning(res.message); + that.$message.warning(res.message) } }).finally(() => { - that.confirmLoading = false; - that.close(); + that.confirmLoading = that.spinning = false }) } else { - return false; + return false } }) }, + + + handleCancel() { this.close() }, + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + } } } </script> -- Gitblit v1.9.3