From 3c5205d857446563b3f89ae7432d76ba6d945a69 Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期五, 12 九月 2025 18:17:58 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/mes/modules/WorkOrderSelectModal.vue | 2 src/views/mes/modules/MesMaterialTransferRequestForm.vue | 50 +++-- src/views/base/ShiftGroupManager.vue | 18 + src/views/cms/CuttingReceiveList.vue | 71 +++++++- src/views/base/modules/group/GroupModal.vue | 293 ++++++++++++++++++------------------ 5 files changed, 250 insertions(+), 184 deletions(-) diff --git a/src/views/base/ShiftGroupManager.vue b/src/views/base/ShiftGroupManager.vue index 1e4f5c1..81d39ba 100644 --- a/src/views/base/ShiftGroupManager.vue +++ b/src/views/base/ShiftGroupManager.vue @@ -7,7 +7,13 @@ <!-- 鎼滅储鍖哄煙 --> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - <a-col :md="6" :sm="8"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="浜х嚎"> + <j-dict-select-tag placeholder="璇烽�夋嫨浜х嚎" v-model="queryParam.factoryId" + dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-form-item label="鐝粍鍚嶇О" :labelCol="{span: 5}" :wrapperCol="{span: 18, offset: 1}"> <a-input placeholder="" v-model="queryParam.groupName"></a-input> </a-form-item> @@ -89,7 +95,7 @@ <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> <a-col :md="9" :sm="24"> <a-button type="primary" @click="searchQuery2" icon="search" style="margin-left: 21px">鏌ヨ</a-button> - <a-button type="primary" @click="searchReset2" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a-button type="info" @click="searchReset2" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> </a-col> </span> @@ -170,7 +176,7 @@ queryParam2: {}, dataSource1: [], dataSource2: [], - ipagination1: { + ipagination: { current: 1, pageSize: 10, pageSizeOptions: ['10', '20', '30'], @@ -192,9 +198,9 @@ showSizeChanger: true, total: 0 }, - isorter1: { - column: 'createTime', - order: 'desc' + isorter: { + column: 'groupCode', + order: 'asc' }, isorter2: { column: 'createTime', diff --git a/src/views/base/modules/group/GroupModal.vue b/src/views/base/modules/group/GroupModal.vue index 70dca51..4185b29 100644 --- a/src/views/base/modules/group/GroupModal.vue +++ b/src/views/base/modules/group/GroupModal.vue @@ -12,42 +12,37 @@ style="top:5%;height: 85%;overflow-y: hidden"> <a-spin :spinning="confirmLoading"> - <a-form-model ref="form" v-bind="layout" :model="model" :rules="validatorRules"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> <a-form-model-item label="鐝粍缂栫爜" required prop="groupCode" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-input v-model="model.groupCode" :disabled="roleDisabled" placeholder="璇疯緭鍏ョ彮缁勭紪鐮�"/> + <a-input v-model="model.groupCode" :disabled="roleDisabled" placeholder="璇疯緭鍏ョ彮缁勭紪鐮�" /> </a-form-model-item> <a-form-model-item label="鐝粍鍚嶇О" required prop="groupName" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-input v-model="model.groupName" placeholder="璇疯緭鍏ョ彮缁勫悕绉�"/> + <a-input v-model="model.groupName" placeholder="璇疯緭鍏ョ彮缁勫悕绉�" /> </a-form-model-item> - <a-form-model-item label="鐝粍闀�" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-form-model-item label="鐝粍闀�" prop="groupManager" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <j-search-select-tag + type="list" + v-model="model.groupManager" + :trigger-change="true" + dict="sys_user,realname,id, del_flag='0' and status='1'" + placeholder="璇烽�夋嫨鐝粍闀�" + /> + </a-form-model-item> + <a-form-model-item label="浜х嚎" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <j-dict-select-tag placeholder="璇烽�夋嫨浜х嚎" v-model="model.factoryId" + dictCode="base_factory,factory_name,id,del_flag=0 and factory_category='3'"></j-dict-select-tag> + </a-form-model-item> + <a-form-model-item label="鐝" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-dict-select-tag - type="list" - v-model="model.groupManager" - :trigger-change="true" - dictCode="sys_user,realname,id" - placeholder="璇烽�夋嫨鐝粍闀�" - /> - </a-form-model-item> - <a-form-model-item label="浜х嚎" prop="factoryId" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <j-select-factory - v-model="model.factoryId" - :multi="true" - @back="backFactoryInfo" - :backProduction="true" - :treeProductOpera="true" - ></j-select-factory> - </a-form-model-item> - <a-form-model-item label="鐝" prop="shiftId" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <j-dict-select-tag - type="list" - v-model="model.shiftId" - :trigger-change="true" - dictCode="base_shift,shift_name,id" - placeholder="璇烽�夋嫨鐝" - /> + type="list" + v-model="model.shiftId" + :trigger-change="true" + dictCode="base_shift,shift_name,id" + placeholder="璇烽�夋嫨鐝" + /> </a-form-model-item> <a-form-model-item label="澶囨敞" prop="remark" :labelCol="labelCol" :wrapperCol="wrapperCol"> - <a-textarea :rows="5" v-model="model.remark" placeholder="璇疯緭鍏ュ娉�"/> + <a-textarea :rows="5" v-model="model.remark" placeholder="璇疯緭鍏ュ娉�" /> </a-form-model-item> </a-form-model> </a-spin> @@ -55,130 +50,138 @@ </template> <script> - import {duplicateCheck } from '@/api/api' - import {postAction,requestPut} from '@/api/manage' - import JDictSelectTag from '@/components/dict/JDictSelectTag' - import JSelectFactory from '../../../../components/jeecgbiz/JSelectFactory' - export default { - name: "GroupModal", - components: { - JDictSelectTag, - JSelectFactory +import { duplicateCheck } from '@/api/api' +import { postAction, requestPut } from '@/api/manage' +import JDictSelectTag from '@/components/dict/JDictSelectTag' + +export default { + name: 'GroupModal', + components: { + JDictSelectTag }, - data () { - return { - title:"鎿嶄綔", - visible: false, - roleDisabled: false, - model: {}, - labelCol: { - xs: { span: 24 }, - sm: { span: 5 }, - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - confirmLoading: false, - validatorRules:{ - groupName: [ - { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' }, - { min: 2, max: 30, message: '闀垮害鍦� 2 鍒� 30 涓瓧绗�', trigger: 'blur' } - ], - groupCode: [ - { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!'}, - { min: 0, max: 64, message: '闀垮害涓嶈秴杩� 64 涓瓧绗�', trigger: 'blur' }, - { validator: this.validategroupCode} - ], - remark: [ - { min: 0, max: 126, message: '闀垮害涓嶈秴杩� 126 涓瓧绗�', trigger: 'blur' } - ] - }, - url: { - add: "/base/shiftGroup/add", - edit: "/base/shiftGroup/edit", - }, - nextFactoryOptions: [], - } + data() { + return { + title: '鎿嶄綔', + visible: false, + roleDisabled: false, + model: {}, + labelCol: { + xs: { span: 24 }, + sm: { span: 5 } + }, + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 } + }, + confirmLoading: false, + validatorRules: { + groupName: [ + { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' }, + { min: 2, max: 30, message: '闀垮害鍦� 2 鍒� 30 涓瓧绗�', trigger: 'blur' } + ], + groupCode: [ + { required: true, message: '璇疯緭鍏ョ彮缁勫悕绉�!' }, + { min: 0, max: 64, message: '闀垮害涓嶈秴杩� 64 涓瓧绗�', trigger: 'blur' }, + { validator: this.validategroupCode } + ], + factoryId: [ + { required: true, message: '璇烽�夋嫨浜х嚎!' }, + ], + groupManager: [ + { required: true, message: '璇烽�夋嫨鐝粍闀�!' }, + ], + shiftId: [ + { required: true, message: '璇烽�夋嫨鐝彮娆�!' }, + ], + remark: [ + { min: 0, max: 126, message: '闀垮害涓嶈秴杩� 126 涓瓧绗�', trigger: 'blur' } + ] + }, + url: { + add: '/base/shiftGroup/add', + edit: '/base/shiftGroup/edit' + }, + nextFactoryOptions: [] + } + }, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)) + }, + methods: { + add() { + this.edit(this.modelDefault) }, - created () { - //澶囦唤model鍘熷鍊� - this.modelDefault = JSON.parse(JSON.stringify(this.model)); + edit(record) { + this.model = Object.assign({}, record) + this.visible = true }, - methods: { - add () { - this.edit(this.modelDefault); - }, - edit (record) { - this.model = Object.assign({}, record); - this.visible = true; - }, - close () { - this.$refs.form.clearValidate(); - this.$emit('close'); - this.visible = false; - }, - handleOk () { - const that = this; - // 瑙﹀彂琛ㄥ崟楠岃瘉 - this.$refs.form.validate(valid => { - if (valid) { - that.confirmLoading = true; - let obj; - if(!this.model.id){ - obj=postAction(this.url.add, this.model) - }else{ - obj=requestPut(this.url.edit, this.model, { - id: this.model.id - }) - } - obj.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(); + close() { + this.$refs.form.clearValidate() + this.$emit('close') + this.visible = false + }, + handleOk() { + const that = this + // 瑙﹀彂琛ㄥ崟楠岃瘉 + this.$refs.form.validate(valid => { + if (valid) { + that.confirmLoading = true + let obj + if (!this.model.id) { + obj = postAction(this.url.add, this.model) + } else { + obj = requestPut(this.url.edit, this.model, { + id: this.model.id }) - }else{ - return false; + } + obj.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() + }, + validategroupCode(rule, value, callback) { + if (/[\u4E00-\u9FA5]/g.test(value)) { + callback('鐝粍缂栫爜涓嶅彲杈撳叆姹夊瓧!') + } else { + let params = { + tableName: 'base_shift_group', + fieldName: 'group_code', + fieldVal: value, + dataId: this.model.id + } + duplicateCheck(params).then((res) => { + if (res.success) { + callback() + } else { + callback(res.message) } }) - }, - handleCancel () { - this.close() - }, - validategroupCode(rule, value, callback){ - if(/[\u4E00-\u9FA5]/g.test(value)){ - callback("鐝粍缂栫爜涓嶅彲杈撳叆姹夊瓧!"); - }else{ - let params = { - tableName: "base_shift_group", - fieldName: "group_code", - fieldVal: value, - dataId: this.model.id, - }; - duplicateCheck(params).then((res)=>{ - if(res.success){ - callback(); - }else{ - callback(res.message); - } - }); - } - }, - backFactoryInfo(info) { - this.model.factoryIds = this.model.factoryId - this.nextFactoryOptions = info.map((item, index, arr) => { - let c = { label: item.text, value: item.value + '' } - return c - }) - }, + } + }, + backFactoryInfo(info) { + this.model.factoryIds = this.model.factoryId + this.nextFactoryOptions = info.map((item, index, arr) => { + let c = { label: item.text, value: item.value + '' } + return c + }) } } +} </script> <style scoped> diff --git a/src/views/cms/CuttingReceiveList.vue b/src/views/cms/CuttingReceiveList.vue index b99b965..1f46ebf 100644 --- a/src/views/cms/CuttingReceiveList.vue +++ b/src/views/cms/CuttingReceiveList.vue @@ -120,7 +120,7 @@ <!-- </span>--> <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)" :disabled="record.orderStatus === '2'">缂栬緫</a> + <a @click="handleEdit(record)" :disabled="record.orderStatus === '2' || record.orderStatus === '3'">缂栬緫</a> <a-divider type="vertical" /> <a-dropdown> <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> @@ -128,15 +128,10 @@ <a-menu-item> <a @click="handleDetail(record)">璇︽儏</a> </a-menu-item> - <!-- <a-menu-item v-if="record.orderStatus != '2'">--> - <!-- <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)">--> - <!-- <a>鍒犻櫎</a>--> - <!-- </a-popconfirm>--> - <!-- </a-menu-item>--> - <a-menu-item v-if="record.orderStatus !== '2'"> + <a-menu-item v-if="record.orderStatus === '1'"> <a @click="handleSubmit(record.id)" :disabled="record.orderStatus === '3'">鎻愪氦</a> </a-menu-item> - <a-menu-item v-if="record.orderStatus !== '2'"> + <a-menu-item v-if="record.orderStatus === '1'"> <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> <a>鍒犻櫎</a> </a-popconfirm> @@ -282,7 +277,8 @@ deleteBatch: '/cms/cuttingReceive/deleteBatch', exportXlsUrl: '/cms/cuttingReceive/exportXls', importExcelUrl: 'cms/cuttingReceive/importExcel', - submit: '/cms/cuttingReceive/submit' + submit: '/cms/cuttingReceive/submit', + returnBack: '/cms/cuttingReceive/handleBack' }, dictOptions: {}, superFieldList: [] @@ -393,7 +389,62 @@ } }) }, - //TODO锛氬垁鍏峰綊杩� handleBack + + /** + * 鍗曟嵁棰嗙敤 + */ + + handleBack: function(id) { + if (!this.url.returnBack) { + this.$message.error('璇疯缃畊rl.return灞炴��!') + return + } + + let targetId = id // 浠庡弬鏁拌幏鍙朓D + // 濡傛灉娌℃湁閫氳繃鍙傛暟浼犻�扞D锛屽垯妫�鏌ラ�変腑鐨勮褰� + if (!targetId) { + if (this.selectedRowKeys.length != 1) { + this.$message.warning('璇烽�夋嫨涓�鏉¤褰曪紒') + return + } else { + targetId = this.selectedRowKeys[0] + } + } + + // 灏嗗弬鏁颁綔涓烘煡璇㈠弬鏁伴檮鍔犲埌URL涓� + let httpurl = this.url.returnBack + '?orderId=' + encodeURIComponent(targetId) + let method = 'get' + var params = {} // 娓呯┖params锛屽洜涓哄弬鏁板凡缁忓湪URL涓紶閫� + + const that = this + + this.$confirm({ + title: '纭鎻愪氦锛�', + // content: '姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', + okText: '纭', + cancelText: '鍙栨秷', + onOk() { + // 鏄剧ず鍔犺浇鎻愮ず + const hide = that.$message.loading('姝e湪鎻愪氦鏁版嵁锛岃鑰愬績绛夊緟...', 0) + + // 鍙戦�佽姹� + return httpAction(httpurl, params, method).then((res) => { + hide() // 闅愯棌鍔犺浇鎻愮ず + if (res.success) { + that.$message.success(res.message) + that.loadData() + } else { + that.$message.warning(res.message) + } + }).catch(error => { + hide() // 闅愯棌鍔犺浇鎻愮ず + that.$message.error('鎻愪氦澶辫触: ' + error.message) + }).finally(() => { + that.loading = false + }) + } + }) + } } } </script> diff --git a/src/views/mes/modules/MesMaterialTransferRequestForm.vue b/src/views/mes/modules/MesMaterialTransferRequestForm.vue index 5881aca..d7cd62c 100644 --- a/src/views/mes/modules/MesMaterialTransferRequestForm.vue +++ b/src/views/mes/modules/MesMaterialTransferRequestForm.vue @@ -42,11 +42,9 @@ </a-col> <a-col :span="12"> <a-form-model-item label="鎷夊姩鐗╂枡" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="materialNumber"> - <a-select v-model="model.materialNumber" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡" @change="handleMaterialNumberChange"> - <a-select-option v-for="item in materialList" :value="item.materialNumber" :title="item.materialName" :key="item.materialNumber"> - {{ item.materialName }} - </a-select-option> - </a-select> + <j-search-select-tag v-model="model.materialNumber" placeholder="璇烽�夋嫨鎷夊姩鐗╂枡" + :dict-options="materialList" @change="handleMaterialNumberChange"> + </j-search-select-tag> </a-form-model-item> </a-col> <a-col :span="12"> @@ -118,7 +116,7 @@ workOrderQuery: '/mes/mesProductionWorkOrder/queryById' }, materialList: [], //鐗╂枡鍒楄〃 - workOrderObj: {}, //宸ュ崟瀵硅薄 + workOrderObj: {} //宸ュ崟瀵硅薄 } }, computed: { @@ -140,17 +138,21 @@ this.model.workOrderCode = this.model.workOrderId_dictText this.visible = true if (this.model.workOrderId) { - this.editable = true; + this.editable = true let workOrderRes = await this.loadProductionWorkOrder(this.model.workOrderId) - if(!workOrderRes.success || !workOrderRes.result) { - return; + if (!workOrderRes.success || !workOrderRes.result) { + return } //鎺掍骇宸ュ崟璧嬪�� - this.workOrderObj = Object.assign({}, workOrderRes.result); + this.workOrderObj = Object.assign({}, workOrderRes.result) //鐗╂枡鍒楄〃 let materialListRes = await this.loadMaterialList(workOrderRes.result.materialNumber) if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) { - this.materialList = [...materialListRes.result] + this.materialList = materialListRes.result.map(item => ({ + ...item, + value: item.materialNumber, + text: item.materialName + })) } else { this.materialList = [] } @@ -163,24 +165,28 @@ this.model.targetWarehouseId = undefined this.model.warehouseName = '' } - }else { - this.editable = false; + } else { + this.editable = false } }, async selectConfirm(rows) { if (rows && rows.length > 0) { //娓呯┖鍏宠仈鏁版嵁 - this.model.materialNumber = undefined; - this.model.materialName = ''; - this.model.specifiedQuantity = 0; + this.model.materialNumber = undefined + this.model.materialName = '' + this.model.specifiedQuantity = 0 //璧嬪�兼柊鐨勬暟鎹� this.model.workOrderId = rows[0].id this.model.workOrderCode = rows[0].workOrderCode //鎺掍骇宸ュ崟璧嬪�� - this.workOrderObj = Object.assign({}, rows[0]); + this.workOrderObj = Object.assign({}, rows[0]) let materialListRes = await this.loadMaterialList(rows[0].materialNumber) if (materialListRes.success && materialListRes.result && materialListRes.result.length > 0) { - this.materialList = [...materialListRes.result] + this.materialList = materialListRes.result.map(item => ({ + ...item, + value: item.materialNumber, + text: item.materialName + })) } else { this.materialList = [] } @@ -194,13 +200,13 @@ } } else { //娓呯┖鍏宠仈鏁版嵁 - this.model.materialNumber = undefined; - this.model.materialName = ''; - this.model.specifiedQuantity = 0; + this.model.materialNumber = undefined + this.model.materialName = '' + this.model.specifiedQuantity = 0 this.materialList = [] this.model.targetWarehouseId = undefined this.model.warehouseName = '' - this.workOrderObj = {}; + this.workOrderObj = {} } }, submitForm() { diff --git a/src/views/mes/modules/WorkOrderSelectModal.vue b/src/views/mes/modules/WorkOrderSelectModal.vue index 1c9abf0..cf4c755 100644 --- a/src/views/mes/modules/WorkOrderSelectModal.vue +++ b/src/views/mes/modules/WorkOrderSelectModal.vue @@ -70,7 +70,7 @@ workOrderStatus: this.orderStatus, }, url: { - list: "/mes/mesProductionWorkOrder/list" + list: "/mes/mesProductionWorkOrder/queryWorkOrderByTransfer" }, columns: [ { -- Gitblit v1.9.3