| | |
| | | <template> |
| | | <j-modal |
| | | :title="title" |
| | | :width="800" |
| | | :width="1000" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | | switchFullscreen |
| | | centered |
| | | :mask-closable="false" |
| | | @ok="handleOk" |
| | | @cancel="handleCancel" |
| | | cancelText="关闭"> |
| | | cancelText="关闭" |
| | | > |
| | | |
| | | <a-spin :spinning="confirmLoading"> |
| | | <a-form-model ref="form" :model="model" :rules="validatorRules"> |
| | | <a-spin :spinning="spinning"> |
| | | <a-form-model |
| | | ref="form" |
| | | :model="model" |
| | | :rules="validatorRules" |
| | | > |
| | | <!-- :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" --> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="12"> |
| | | <a-form-model-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="receiveCode" |
| | | label="请购单编码" |
| | | > |
| | | <a-input |
| | | placeholder="请购单编码自动生成" |
| | | v-model="model.receiveCode" |
| | | :disabled="true" |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-model-item |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | prop="giveBackFlag" |
| | | label="是否需要归还" |
| | | > |
| | | <j-dict-select-tag |
| | | allow-clear |
| | | :disabled="false" |
| | | placeholder="请选择是否需要归还" |
| | | :triggerChange="true" |
| | | dictCode="give_back_flag" |
| | | v-model="model.giveBackFlag" |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | |
| | | <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="receiveCode" label="领用单编码"> |
| | | <a-input placeholder="请输入领用单编码" v-model="model.receiveCode" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveUser" label="领用人"> |
| | | <a-input placeholder="请输入领用人" v-model="model.receiveUser" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveReason" label="领用事由"> |
| | | <a-input placeholder="请输入领用事由" v-model="model.receiveReason" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveStatus" label="领用状态"> |
| | | <a-input placeholder="请输入领用状态" v-model="model.receiveStatus" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="giveBackFlag" label="是否需要归还;是:存在归还动作,否:直接完成"> |
| | | <a-input placeholder="请输入是否需要归还;是:存在归还动作,否:直接完成" v-model="model.giveBackFlag" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalUser" label="审核人"> |
| | | <a-input placeholder="请输入审核人" v-model="model.approvalUser" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="approvalTime" label="审核时间"> |
| | | <a-input placeholder="请输入审核时间" v-model="model.approvalTime" /> |
| | | </a-form-model-item> |
| | | <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark" label="备注"> |
| | | <a-input placeholder="请输入备注" v-model="model.remark" /> |
| | | </a-form-model-item> |
| | | |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | :labelCol="{xs: { span: 24 }, sm: { span: 3 }}" |
| | | :wrapperCol="{xs: { span: 24 },sm: { span: 21 }}" |
| | | prop="receiveReason" |
| | | label="领用事由" |
| | | > |
| | | <a-textarea |
| | | placeholder="请输入领用事由" |
| | | v-model="model.receiveReason" |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <a-row :gutter="24"> |
| | | <a-col :span="24"> |
| | | <a-form-model-item |
| | | :labelCol="{xs: { span: 24 }, sm: { span: 3 }}" |
| | | :wrapperCol="{xs: { span: 24 },sm: { span: 21 }}" |
| | | prop="remark" |
| | | label="备注" |
| | | > |
| | | <a-textarea |
| | | placeholder="请输入备注" |
| | | v-model="model.remark" |
| | | /> |
| | | </a-form-model-item> |
| | | </a-col> |
| | | </a-row> |
| | | <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 } 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: "EamSparePartReceiveModal", |
| | | data () { |
| | | return { |
| | | title:"操作", |
| | | visible: false, |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 5 }, |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 }, |
| | | }, |
| | | export default { |
| | | name: 'EamSparePartReceiveModal', |
| | | mixins: [JVxeTableModelMixin], |
| | | components: {}, |
| | | data() { |
| | | return { |
| | | title: '操作', |
| | | visible: false, |
| | | model: {}, |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 } |
| | | }, |
| | | confirmLoading: false, |
| | | spinning: false, |
| | | disabled: false, |
| | | validatorRules: { |
| | | giveBackFlag: [ |
| | | { required: true, message: '请选择归还条件!' } |
| | | ] |
| | | }, |
| | | url: { |
| | | add: '/eam/eamSparePartReceive/add', |
| | | edit: '/eam/eamSparePartReceive/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: 'receiveNum', |
| | | type: JVXETypes.inputNumber, |
| | | width: '30%', |
| | | align: 'center', |
| | | validateRules: [ |
| | | { required: true, message: '数量不能为空!' }, |
| | | ] |
| | | }, |
| | | |
| | | confirmLoading: false, |
| | | validatorRules:{ |
| | | }, |
| | | url: { |
| | | add: "/eam/eamSparePartReceive/add", |
| | | edit: "/eam/eamSparePartReceive/edit", |
| | | }, |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | }, |
| | | methods: { |
| | | add() { |
| | | |
| | | const that = this |
| | | this.visible = true; |
| | | let params = { |
| | | businessCode: "SparePartReceive" |
| | | } |
| | | getAction(that.url.generateRequisitionCode, params).then((res) => { |
| | | if (res.success) { |
| | | this.model = { |
| | | receiveCode: res.result |
| | | } |
| | | } else { |
| | | that.$message.warning(res.message); |
| | | } |
| | | }) |
| | | //初始化默认值 |
| | | that.edit(this.model); |
| | | }, |
| | | edit(record) { |
| | | this.model = Object.assign({}, record); |
| | | this.detail.dataSource = record.sparePartReceiveDetails |
| | | this.visible = true; |
| | | }, |
| | | |
| | | async handleOk() { |
| | | const that = this |
| | | let errMap = await that.$refs.editableDetailTable.validateTable() |
| | | if (errMap) { |
| | | this.$message.warning('数据校验失败!') |
| | | return |
| | | } |
| | | let tableData = that.$refs.editableDetailTable.getTableData() |
| | | if (tableData.length == 0) { |
| | | this.$message.warning('请选择备件领用信息!') |
| | | return |
| | | } |
| | | |
| | | for (var i = 0; i < tableData.length; i++) { |
| | | let count = 0; |
| | | tableData.forEach(row => { |
| | | if (row.partId === tableData[i].partId) { |
| | | count++; |
| | | } |
| | | }); |
| | | // 如果重复次数大于1,说明有重复 |
| | | if (count > 1) { |
| | | 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.sparePartReceiveDetails = [...tableData] |
| | | that.model.removeDetailList = [...removeData] |
| | | |
| | | that.confirmLoading = that.spinning = 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 = that.spinning = false |
| | | }) |
| | | } else { |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | |
| | | |
| | | handleCancel() { |
| | | this.close() |
| | | }, |
| | | |
| | | close() { |
| | | this.$emit('close') |
| | | this.visible = false |
| | | this.$refs.form.clearValidate() |
| | | }, |
| | | checkUniqueName(rule, value, callback) { |
| | | |
| | | // if (!value) { |
| | | // return callback(); // 空值由required规则校验 |
| | | // } |
| | | |
| | | // 获取当前表格数据 |
| | | let tableData = this.$refs.editableDetailTable.getTableData() |
| | | // 计算重复次数(不包括当前行) |
| | | let count = 0; |
| | | tableData.forEach(row => { |
| | | if (row.partId === rule.cellValue) { |
| | | count++; |
| | | } |
| | | }); |
| | | // 如果重复次数大于1,说明有重复 |
| | | if (count > 1) { |
| | | this.$message.warning('选择的备件不能重复!') |
| | | return |
| | | } |
| | | }, |
| | | created () { |
| | | }, |
| | | methods: { |
| | | add () { |
| | | //初始化默认值 |
| | | this.edit({}); |
| | | }, |
| | | edit (record) { |
| | | this.model = Object.assign({}, record); |
| | | this.visible = true; |
| | | }, |
| | | close () { |
| | | this.$emit('close'); |
| | | this.visible = false; |
| | | this.$refs.form.clearValidate(); |
| | | }, |
| | | 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,this.model,method).then((res)=>{ |
| | | if(res.success){ |
| | | that.$message.success(res.message); |
| | | that.$emit('ok'); |
| | | }else{ |
| | | that.$message.warning(res.message); |
| | | } |
| | | }).finally(() => { |
| | | that.confirmLoading = false; |
| | | that.close(); |
| | | }) |
| | | }else{ |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | handleCancel () { |
| | | this.close() |
| | | }, |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | |
| | | </style> |