From 9e1c79907d54bad69ee70e06a5ee6379c838094e Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期六, 06 九月 2025 17:48:18 +0800 Subject: [PATCH] art: 热处理外协入库、小内圈外协入库、物料调拨 --- src/views/lsw/modules/LswMaterialInboundForm.vue | 286 ++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 194 insertions(+), 92 deletions(-) diff --git a/src/views/lsw/modules/LswMaterialInboundForm.vue b/src/views/lsw/modules/LswMaterialInboundForm.vue index 80c577d..a20e449 100644 --- a/src/views/lsw/modules/LswMaterialInboundForm.vue +++ b/src/views/lsw/modules/LswMaterialInboundForm.vue @@ -4,33 +4,38 @@ <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail"> <a-row> <a-col :span="12"> - <a-form-model-item label="鍒犻櫎鏍囪" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="delFlag"> - <a-input-number v-model="model.delFlag" placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" style="width: 100%" /> + <a-form-model-item label="鏉ユ簮缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode" + v-if="model.inboundCategory !== 'MATERIAL_INNER_TRANSFER'"> + <a-input v-model="model.originalCode" placeholder="璇疯緭鍏ユ潵婧愮紪鐮�"></a-input> + </a-form-model-item> + <a-form-model-item label="鏉ユ簮绾胯竟搴�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalCode" + v-else> + <j-search-select-tag v-model="model.originalCode" placeholder="璇烽�夋嫨绾胯竟搴�" + :dict-options="originalCodeDictOptions" + @change="originalCodeSelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="浜х嚎ID" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="factoryId"> - <a-input v-model="model.factoryId" placeholder="璇疯緭鍏ヤ骇绾縄D" ></a-input> + <a-form-model-item label="鏉ユ簮鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="originalName"> + <a-input v-model="model.originalName" placeholder="璇疯緭鍏ユ潵婧愬悕绉�"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="搴撳瓨鍦癐D" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId"> - <a-input v-model="model.warehouseId" placeholder="璇疯緭鍏ュ簱瀛樺湴ID" ></a-input> + <a-form-model-item label="绾胯竟搴�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="warehouseId"> + <j-search-select-tag v-model="model.warehouseId" placeholder="璇烽�夋嫨绾胯竟搴�" + :dict-options="warehouseDictOptions" + @change="warehouseSelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鐗╂枡缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-input v-model="model.materialNumber" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" ></a-input> - </a-form-model-item> - </a-col> - <a-col :span="12"> - <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> - <a-input v-model="model.materialName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" ></a-input> + <j-search-select-tag :dict-options="materialDictOptions" v-model="model.materialNumber" + placeholder="璇烽�夋嫨鐗╂枡缂栫爜" @change="materialSelectChange"></j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> <a-form-model-item label="鎵规鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="batchNumber"> - <a-input v-model="model.batchNumber" placeholder="璇疯緭鍏ユ壒娆″彿" ></a-input> + <a-input v-model="model.batchNumber" placeholder="璇疯緭鍏ユ壒娆″彿"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> @@ -38,14 +43,21 @@ <a-input-number v-model="model.quantity" placeholder="璇疯緭鍏ュ叆搴撴暟閲�" style="width: 100%" /> </a-form-model-item> </a-col> + </a-row> + </a-form-model> + </j-form-container> + <j-form-container disabled> + <a-form-model ref="form1" :model="model" slot="detail"> + <a-row> <a-col :span="12"> - <a-form-model-item label="鎺ユ敹浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiver"> - <a-input v-model="model.receiver" placeholder="璇疯緭鍏ユ帴鏀朵汉" ></a-input> + <a-form-model-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialName"> + <a-input v-model="model.materialName"></a-input> </a-form-model-item> </a-col> <a-col :span="12"> - <a-form-model-item label="鎺ユ敹鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="receiveTime"> - <j-date placeholder="璇烽�夋嫨鎺ユ敹鏃堕棿" v-model="model.receiveTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" /> + <a-form-model-item label="鍏ュ簱绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="inboundCategory"> + <j-search-select-tag v-model="model.inboundCategory" + dict="material_inbound_category"></j-search-select-tag> </a-form-model-item> </a-col> </a-row> @@ -56,89 +68,179 @@ <script> - import { httpAction, getAction } from '@/api/manage' - import { validateDuplicateValue } from '@/utils/util' +import { getAction, httpAction } from '@/api/manage' - export default { - name: 'LswMaterialInboundForm', - components: { - }, - props: { - //琛ㄥ崟绂佺敤 - disabled: { - type: Boolean, - default: false, - required: false +export default { + name: 'LswMaterialInboundForm', + components: {}, + props: { + //琛ㄥ崟绂佺敤 + disabled: { + type: Boolean, + default: false, + required: false + } + }, + data() { + return { + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + warehouseDictOptions: [], + materialDictOptions: [], + validatorRules: { + originalCode: [ + { required: true, message: '鏉ユ簮缂栫爜鏄繀閫夐」', trigger: 'change' } + ], + originalName: [ + { required: true, message: '鏉ユ簮鍚嶇О鏄繀閫夐」', trigger: 'change' } + ], + warehouseId: [ + { required: true, message: '绾胯竟搴撴槸蹇呴�夐」', trigger: 'change' } + ], + materialNumber: [ + { required: true, message: '鐗╂枡缂栫爜鏄繀閫夐」', trigger: 'change' } + ], + materialName: [ + { required: true, message: '鐗╂枡鍚嶇О鏄繀閫夐」', trigger: 'change' } + ], + batchNumber: [ + { required: true, message: '鎵规鍙锋槸蹇呴�夐」', trigger: 'change' } + ], + quantity: [ + { required: true, message: '鍏ュ簱鏁伴噺鏄繀閫夐」', trigger: 'change' } + ] + }, + url: { + add: '/lsw/materialInbound/add', + edit: '/lsw/materialInbound/edit', + queryById: '/lsw/materialInbound/queryById', + queryByProductionType: '/base/lineSideWarehouse/queryByProductionType', + queryByMaterialCategory: '/lsw/lswMaterial/queryByMaterialCategory' } + } + }, + computed: { + formDisabled() { + return this.disabled }, - data () { - return { - model:{ - }, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules: { - }, - url: { - add: "/lswmaterialinbound/lswMaterialInbound/add", - edit: "/lswmaterialinbound/lswMaterialInbound/edit", - queryById: "/lswmaterialinbound/lswMaterialInbound/queryById" - } + originalCodeDictOptions() { + return this.warehouseDictOptions.map(warehouse => ({ + ...warehouse, + value: warehouse.warehouseCode, + text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')' + })) + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add(inboundCategory) { + this.warehouseDictOptions = [] + this.materialDictOptions = [] + if (inboundCategory === 'HEAT_TREATMENT_INBOUND') { + this.loadWarehouseDictOptions('OUTERFLANGE,INNERFLANGE') + this.loadMaterialDictOptions('BLANK') + } else if (inboundCategory === 'SMALL_INNER_RING') { + this.loadWarehouseDictOptions('ASSEMBLE') + this.loadMaterialDictOptions('SMALL_INNER_RING') + } else if (inboundCategory === 'MATERIAL_INNER_TRANSFER') { + this.loadWarehouseDictOptions('ASSEMBLE,OUTERFLANGE,INNERFLANG,HEATTREATMENT') + this.loadMaterialDictOptions('OUTER_FLANGE,INNER_FLANGE,STEEL_BALL,BLANK,COMPONENTS') } + this.modelDefault.inboundCategory = inboundCategory + this.edit(this.modelDefault) }, - computed: { - formDisabled(){ - return this.disabled - }, + edit(record) { + this.model = Object.assign({}, record) + this.visible = true }, - created () { - //澶囦唤model鍘熷鍊� - this.modelDefault = JSON.parse(JSON.stringify(this.model)); - }, - methods: { - add () { - this.edit(this.modelDefault); - }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; - }, - submitForm () { - 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; - }) + submitForm() { + 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 + }) + } - }) - }, + }) + }, + loadWarehouseDictOptions(productionType) { + let params = { productionType: productionType } + getAction(this.url.queryByProductionType, params).then(res => { + if (res.success) { + this.warehouseDictOptions = res.result.map(warehouse => ({ + ...warehouse, + value: warehouse.id, + text: warehouse.warehouseName + '(' + warehouse.warehouseCode + ')' + })) + } + }) + }, + loadMaterialDictOptions(materialCategory) { + let params = { materialCategory: materialCategory } + getAction(this.url.queryByMaterialCategory, params).then(res => { + if (res.success) { + this.materialDictOptions = res.result.map(material => ({ + ...material, + value: material.materialNumber, + text: material.materialNumber + '(' + material.materialName + ')' + })) + } + }) + }, + warehouseSelectChange(value) { + let warehouse = this.warehouseDictOptions.find(option => option.value === value) + if (warehouse) { + this.model.factoryId = warehouse.factoryId + } else { + this.model.factoryId = undefined + } + }, + materialSelectChange(value) { + let material = this.materialDictOptions.find(option => option.value === value) + if (material) { + this.model.materialName = material.materialName + } else { + this.model.materialName = undefined + } + }, + originalCodeSelectChange(value) { + let warehouse = this.originalCodeDictOptions.find(option => option.value === value) + if (warehouse) { + this.model.originalName = warehouse.warehouseName + } else { + this.model.originalName = undefined + } } } +} </script> \ No newline at end of file -- Gitblit v1.9.3