<template> <j-modal :title="title" :width="width" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen @ok="handleOk" @cancel="handleCancel" cancelText="关闭" > <a-spin :spinning="confirmLoading"> <a-form-model ref="form" :model="model" :rules="validatorRules"> </a-form-model> </a-spin> <a-table ref="table" rowKey="id" size="middle" :columns="columns" :dataSource="dataSource" :pagination="false"> <span slot="action" slot-scope="text, record"> <a-input-number placeholder="" v-model="record.taskQty" :value="text" /> </span> <span slot="inventoryStatus" slot-scope="inventoryStatus"> <a-tag :key="inventoryStatus" color="blue" :color="getStatusColor(inventoryStatus)"> {{ solutionInvStatus(inventoryStatus) }} </a-tag> </span> </a-table> <select-inv-container-header ref="selectContainerForm" v-on:getContainer="getContainerCode"></select-inv-container-header> </j-modal> </template> <script> import { httpAction } from '@/api/manage' import { mixinDevice } from '@/utils/mixin' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { filterMultiDictText } from '@/components/dict/JDictSelectUtil' import { validateDuplicateValue } from '@/utils/util' import { searchMaterialByCode } from '@/api/api' import { listReceiveByReceiveId,ajaxGetDictItems } from '@/api/api' import SelectInvContainerHeader from "./SelectInvContainerHeader"; export default { name: 'ReceiveModal', components: {SelectInvContainerHeader}, props: { mainId: { type: String, required: false, default: '' } }, data() { return { title: '操作', width: 800, visible: false, materialList: {}, querySource: {}, dataSource: [], invStatus:[], model: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, columns: [ { title: '物料编码', dataIndex: 'materialCode', align: 'center', width: 124 }, { title: '物料名称', dataIndex: 'materialName', align: 'center', width: 96 }, { title: '库存状态', dataIndex: 'inventoryStatus', align: 'center', width: 96, scopedSlots: {customRender: 'inventoryStatus'} }, { title: '批次', dataIndex: 'batch', align: 'center' }, { title: '可收数量', dataIndex: 'qty', align: 'center', width: 80 }, { title: '收货数量', dataIndex: 'action', align: 'center', key: 'action', scopedSlots: { customRender: 'action' } }, ], confirmLoading: false, validatorRules: { containerCode: [{ required: true, message: '请输入容器编码!' }] }, dictOptions: {}, superFieldList:[], url: { add: '/receipt/receiveHeader/receive', edit: '/receipt/receiptHeader/editReceiptDetail' } } }, created() { //备份model原始值 this.getSuperFieldList() // this.modelDefault = JSON.parse(JSON.stringify(this.model)) this.loadFrom(); }, methods: { loadFrom(){ ajaxGetDictItems('inventory_status').then((res) => { if (res.success) { this.invStatus = res.result } }) }, getStatusColor(status) { const colors = { 'good ': 'green', 'defective': 'red', 'discussed ': 'grey', 'scrap': 'purple', default: 'blue' }; return colors[status] || colors.default; }, getContainerCode(e){ this.$nextTick(function (){ let record={containerCode: e} this.model = Object.assign({}, record) }) }, solutionInvStatus(value) { var actions = [] Object.keys(this.invStatus).some(key => { if (this.invStatus[key].value == '' + value) { actions.push(this.invStatus[key].text) return true } }) return actions.join('') }, // add() { // this.edit(this.modelDefault) // this.model.inventoryStatus = 'good' // }, edit(record) { this.model = Object.assign({}, record) this.visible = true this.searchReceive(); }, // show(record) { // this.model = Object.assign({}, record) // this.visible = true // }, selectContainer(record){ this.$refs.selectContainerForm.edit(record); }, close() { this.$emit('close') this.visible = false this.$refs.form.clearValidate() }, searchReceive() { const that = this that.querySource.receiveId = that.model.id; listReceiveByReceiveId(that.querySource).then(res => { that.dataSource = res.result }) }, initDictConfig() {}, getSuperFieldList() { let fieldList = [] fieldList.push({type:'string',value:'inventoryStatus',text:'库存状态',dictCode:'inventory_status'}) this.superFieldList = fieldList }, handleOk() { console.log('handleOk') const that = this // 触发表单验证 this.$refs.form.validate(valid => { if (valid) { that.confirmLoading = true let httpurl = '' let method = '' httpurl += this.url.add method = 'post' if (this.dataSource[0] == null) { that.confirmLoading = false that.$message.warning('入库单没有详情!') return } this.dataSource[0].containerCode = this.model.containerCode httpAction(httpurl, this.dataSource, 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() } } } </script>