From bf4cb4fdbd57f1785cdd1ddeadfb20a835d5fb6f Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期四, 05 六月 2025 15:18:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue | 20 src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue | 20 src/views/tms/modules/outBound/OutboundListLeft.vue | 2 src/views/tms/modules/outBound/OutboundModal.vue | 2 src/views/tms/modules/inbound/InboundListRight.vue | 38 + src/views/tms/modules/inbound/InboundModel.vue | 201 ++++-------- src/views/tms/modules/outBound/OutboundListRight.vue | 17 src/views/tms/InboundOrderList.vue | 14 src/views/tms/modules/inbound/InboundApplyDetailList.vue | 145 +++++++++ src/views/tms/modules/inboundOrder/InboundOrderModel.vue | 89 ++--- src/views/tms/modules/inbound/InboundApplyModelList.vue | 297 +++++++++++++++++++ src/views/tms/modules/inboundOrder/JSelectToolingModal.vue | 7 12 files changed, 623 insertions(+), 229 deletions(-) diff --git a/src/views/tms/InboundOrderList.vue b/src/views/tms/InboundOrderList.vue index 214521c..99bc473 100644 --- a/src/views/tms/InboundOrderList.vue +++ b/src/views/tms/InboundOrderList.vue @@ -18,7 +18,7 @@ /> </a-form-item> </a-col> - <a-col :md="6" :sm="8"> + <!-- <a-col :md="6" :sm="8"> <a-form-item label="缁忔墜浜�"> <j-search-select-tag placeholder="璇烽�夋嫨缁忔墜浜�" @@ -26,7 +26,7 @@ dict="sys_user,realname,id,del_flag!=1" /> </a-form-item> - </a-col> + </a-col> --> </a-row> </a-form> </div> @@ -49,6 +49,7 @@ :dataSource="dataSource" :pagination="ipagination" :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}" @change="handleTableChange" > <!--鐘舵�佹爮涓�у睍绀�--> @@ -169,6 +170,7 @@ scopedSlots: { customRender: 'action' }, }, ], + loading:false } }, computed: { @@ -190,6 +192,7 @@ click: (e) => { //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰 this.$bus.$emit('getToolingStorageData', record) + this.onSelectChange(record.id.split(","), [record]); //鐐瑰嚮褰撳墠琛屽彉鑹� let oldList = document.querySelectorAll('.checked-td-of-add-table') if (oldList) { @@ -205,6 +208,10 @@ }, } }, + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, handleEdit: function (record) { this.$refs.modalForm.edit(record) this.$refs.modalForm.title = '缂栬緫' @@ -217,6 +224,7 @@ }, handleSubmit(record) { let that = this; + that.loading = true getAction(that.url.submit, { id:record.id}).then((res) => { if (res.success) { that.$message.success(res.message); @@ -224,6 +232,8 @@ } else { that.$message.warning(res.message); } + }).finally(() => { + that.loading = false }) }, }, diff --git a/src/views/tms/modules/inbound/InboundApplyDetailList.vue b/src/views/tms/modules/inbound/InboundApplyDetailList.vue new file mode 100644 index 0000000..8c5d4fc --- /dev/null +++ b/src/views/tms/modules/inbound/InboundApplyDetailList.vue @@ -0,0 +1,145 @@ +<template> + <a-card + :bordered="false" + class="card-area" + > + <a-table + ref="table" + bordered + size="middle" + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="rowSelection" + @change="handleTableChange" + > + </a-table> + </a-card> +</template> + +<script> +import { requestPut,getAction } from '@/api/manage' +import { JeecgListMixin } from '@/mixins/JeecgListMixin' + +export default { + name: 'InboundApplyDetailList', + mixins: [JeecgListMixin], + components: {}, + data() { + return { + url: { + list: '/tms/inboundDetail/list', + }, + queryParam: {}, + nodeType: 0, + dataSource: [], + disableMixinCreated:true, + columns: [ + { + title: '宸ュ叿缂栫爜', + align: 'center', + dataIndex: 'toolCode', + width: '10%', + key: 'toolCode' + }, + { + title: '宸ュ叿鍚嶇О', + dataIndex: 'chineseName', + align: 'center', + key: 'toolName' + }, + { + title: '鍨嬪彿/鍥惧彿', + dataIndex: 'toolModel', + align: 'center', + key: 'toolModel' + }, + + { + title: '宸ュ叿鍒嗙被', + dataIndex: 'applicationType', + align: 'center', + }, + { + title: '鍏ュ簱鏁伴噺', + dataIndex: 'inStorageQuantity', + align: 'center', + }, + { + title: '瀹為檯鍏ュ簱鏁伴噺', + dataIndex: 'inActualCount', + align: 'center', + } + ] + } + }, + + computed: { + rowSelection() { + return { + type: 'checkbox', + onChange: (selectedRowKeys, selectedRows) => { + this.selectedRowKeys = selectedRowKeys + this.onSelectChange(selectedRowKeys,selectedRows) + }, + getCheckboxProps: (record) => ({ + props: { + disabled: record.distable, + }, + }), + selectedRowKeys: this.selectedRowKeys, + } + }, + }, + + methods: { + loadData(arg) { + if(!this.url.list){ + this.$message.error("璇疯缃畊rl.list灞炴��!") + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination.current = 1; + } + var params = this.getQueryParams();//鏌ヨ鏉′欢 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + for (let i = 0; i < res.result.records.length; i++) { + if (res.result.records[i].inStorageQuantity == res.result.records[i].inActualCount) { + res.result.records[i].distable = true + } else { + res.result.records[i].distable = false + } + } + this.dataSource = res.result.records; + this.ipagination.total = res.result.total; + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false; + }) + }, + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + this.$emit('selectRows', selectionRows) + }, + + }, + mounted() { + this.$bus.$on('getToolingStorageData', (data) => { + this.queryParam.inboundOrderId = data.id; + this.searchQuery(); + }) + } +} +</script> + +<style scoped> +@import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/tms/modules/inbound/InboundApplyModelList.vue b/src/views/tms/modules/inbound/InboundApplyModelList.vue new file mode 100644 index 0000000..4a20b63 --- /dev/null +++ b/src/views/tms/modules/inbound/InboundApplyModelList.vue @@ -0,0 +1,297 @@ +<template> + <j-modal + :width="1500" + :visible="visible" + switchFullscreen + :confirmLoading="confirmLoading" + @cancel="handleCancel" + cancelText="鍏抽棴" + :footer="null" + > + <!-- 鏌ヨ鍖哄煙 --> + <div class="table-page-search-wrapper"> + <a-form layout="inline" @keyup.enter.native="searchQuery"> + <a-row :gutter="24"> + <a-col :md="6" :sm="8"> + <a-form-item label="鍏ュ簱鐢宠鍗曠紪鍙�"> + <a-input placeholder="璇疯緭鍏ュ叆搴撶敵璇峰崟缂栧彿" v-model="queryParam.inboundNum" /> + </a-form-item> + </a-col> + <a-col :md="6" :sm="8"> + <a-form-item label="鍏ュ簱绫诲瀷"> + <j-search-select-tag + placeholder="璇烽�夋嫨鍏ュ簱绫诲瀷" + v-model="queryParam.inStorehouseType" + dict="in_storehouse_type" + /> + </a-form-item> + </a-col> + <!-- <a-col :md="6" :sm="8"> + <a-form-item label="缁忔墜浜�"> + <j-search-select-tag + placeholder="璇烽�夋嫨缁忔墜浜�" + v-model="queryParam.handler" + dict="sys_user,realname,id,del_flag!=1" + /> + </a-form-item> + </a-col> --> + </a-row> + </a-form> + </div> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> + <a-button @click="handleInbound" type="primary" icon="plus">鍏ュ簱</a-button> + </div> + + <!-- table鍖哄煙-begin --> + <a-table + ref="table" + size="middle" + bordered + rowKey="id" + :customRow="customRow" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange,type:'radio'}" + @change="handleTableChange" + > + </a-table> + <a-tabs defaultActiveKey="1"> + <a-tab-pane tab="宸ュ叿鍏ュ簱鏄庣粏" key="1"> + <inbound-apply-detail-list ref="inboundDetailList" @selectRows="selectRows"></inbound-apply-detail-list> + </a-tab-pane> + </a-tabs> + <!-- table鍖哄煙-end --> + </j-modal> +</template> + +<script> +import { JeecgListMixin } from '@/mixins/JeecgListMixin' +import InboundApplyDetailList from './InboundApplyDetailList' +import { requestPut } from '@/api/manage' +import JDictSelectTag from '@/components/dict/JDictSelectTag' +import JSearchSelectTag from '@/components/dict/JSearchSelectTag' +import { postAction,getAction } from '@/api/manage' + +export default { + name: 'InboundApplyModelList', + mixins: [JeecgListMixin], + components: { + InboundApplyDetailList, + JDictSelectTag, + JSearchSelectTag, + }, + data() { + return { + description: '鐢宠鍗曞叆搴撻�夋嫨鐣岄潰', + url: { + list: '/tms/inboundOrder/list', + importExcelUrl: '/tms/inboundOrder/importExcel', + exportXlsUrl: '/tms/inboundOrder/exportXls', + edit:'/tms/inboundOrder/edit', + addApplyInStorage:'/tms/inboundOrder/addApplyInStorage' + }, + columns: [ + { + title: '#', + dataIndex: '', + key: 'rowIndex', + align: 'center', + customRender: function (t, r, index) { + return parseInt(index) + 1 + }, + }, + { + title: '鍏ュ簱鐢宠鍗曠紪鍙�', + align: 'center', + dataIndex: 'inboundNum', + sorter: true, + }, + { + title: '鍏ュ簱鍗曠被鍨�', + align: 'center', + dataIndex: 'inStorehouseType_dictText', + }, + { + title: '缁忔墜浜�', + align: 'center', + dataIndex: 'handler_dictText', + }, + { + title: '鐢宠鍘熷洜', + align: 'center', + dataIndex: 'applicationReason', + }, + { + title: '鍏ュ簱鏃堕棿', + align: 'center', + dataIndex: 'inboundTime', + sorter: true, + }, + { + title: '瀹℃牳浜�', + align: 'center', + dataIndex: 'reviewer_dictText', + }, + { + title: '瀹℃牳鏃堕棿', + align: 'center', + dataIndex: 'approvalDate', + sorter: true, + }, + { + title: '瀹℃牳鐘舵��', + align: 'center', + dataIndex: 'orderStatus_dictText', + }, + { + title: '鍊熺敤鍗曞彿', + align: 'center', + dataIndex: 'borrowNum', + }, + { + title: '瀹℃壒鎰忚', + align: 'center', + dataIndex: 'approvalOpinion', + }, + // { + // width: 150, + // title: '鎿嶄綔', + // dataIndex: 'action', + // align: 'center', + // scopedSlots: { customRender: 'action' }, + // }, + ], + visible:false, + selectDetailRows:{}, + model:{}, + form: this.$form.createForm(this), + confirmLoading: false, + loading:false, + disableMixinCreated: true, + } + }, + computed: { + /* 瀵煎叆璺緞椤甸潰閲嶆柊璁$畻 */ + importExcelUrl: function () { + // return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;//寮�鍙戠幆澧冩寚鍚� + return `${window._CONFIG['hxFileURL']}/${this.url.importExcelUrl}` + }, + }, + methods: { + show(){ + this.visible = true + this.loadData() + }, + loadData(arg) { + if(!this.url.list){ + this.$message.error("璇疯缃畊rl.list灞炴��!") + return + } + //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭 + if (arg === 1) { + this.ipagination.current = 1; + } + this.onClearSelected() + this.queryParam.orderStatus = '3' + this.queryParam.inStatus = ['1','2'].join(',') + var params = this.getQueryParams();//鏌ヨ鏉′欢 + this.loading = true; + getAction(this.url.list, params).then((res) => { + if (res.success) { + this.dataSource = res.result.records; + this.ipagination.total = res.result.total; + } + if(res.code===510){ + this.$message.warning(res.message) + } + this.loading = false; + }) + }, + onClearSelected() { + this.selectedRowKeys = []; + this.selectionRows = []; + }, + searchReset() { + this.queryParam = {} + this.$refs.inboundDetailList.dataSource = [] + this.loadData(1); + }, + customRow(record) { + return { + on: { + click: (e) => { + //灏嗗綋鍓嶉�変腑鐨勮褰曚紶鍒板瓙椤甸潰 + this.$bus.$emit('getToolingStorageData', record) + this.onSelectChange(record.id.split(","), [record]); + //鐐瑰嚮褰撳墠琛屽彉鑹� + let oldList = document.querySelectorAll('.checked-td-of-add-table') + if (oldList) { + for (let j = 0; j < oldList.length; j++) { + oldList[j].classList.remove('checked-td-of-add-table') + } + } + let children = e.target.parentNode.children + for (let i = 0; i < children.length; i++) { + children[i].classList.add('checked-td-of-add-table') + } + }, + }, + } + }, + onSelectChange(selectedRowKeys, selectionRows) { + this.selectedRowKeys = selectedRowKeys; + this.selectionRows = selectionRows; + }, + selectRows(selectDetailRows) { + this.selectDetailRows = selectDetailRows; + }, + handleInbound() { + let that = this + this.form.validateFields((err, values) => { + if (!err) { + that.confirmLoading = true + that.loading = true + let formData = Object.assign(this.model, values) + formData.detailData = this.selectDetailRows + formData.inStorehouseType = this.selectionRows[0].inStorehouseType + formData.orderId = this.selectionRows[0].id + postAction(this.url.addApplyInStorage, formData) + .then((res) => { + if (res.success) { + that.$message.success(res.message) + that.$emit('ok', new Date()) + } else { + that.$message.warning(res.message) + } + }) + .finally(() => { + that.confirmLoading = false + that.loading = false + that.handleCancel() + }) + } + }) + }, + handleCancel(){ + this.visible = false + + } + }, +} +</script> + +<style lang="less" scoped> +@import '~@assets/less/common.less'; +/deep/ .notshow { + display: none; +} +/deep/ .checked-td-of-add-table { + background-color: rgba(220, 220, 220, 1); +} +</style> \ No newline at end of file diff --git a/src/views/tms/modules/inbound/InboundListRight.vue b/src/views/tms/modules/inbound/InboundListRight.vue index 66bb9f3..247a0ab 100644 --- a/src/views/tms/modules/inbound/InboundListRight.vue +++ b/src/views/tms/modules/inbound/InboundListRight.vue @@ -58,7 +58,7 @@ <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> <a-button type="primary" icon="import">瀵煎叆</a-button> </a-upload> --> - <a-button @click="handleInbound(nodeSelected)" type="primary" icon="plus">鐢宠鍗曞叆搴�</a-button> + <a-button @click="handleInbound" type="primary">鐢宠鍗曞叆搴�</a-button> </div> <!-- table鍖哄煙-begin --> @@ -145,6 +145,7 @@ </a-tabs> <inbound-model ref="modalForm" @ok="modalFormOk" :nodeSelected="nodeSelected"></inbound-model> + <inbound-apply-model-list ref="inboundApplyModelList"></inbound-apply-model-list> </a-card> </template> @@ -163,6 +164,7 @@ import ParaCommonToolList from '.././baseTools/ParaCommonToolList' import ParaBladeList from '.././baseTools/ParaBladeList' import InboundModel from './InboundModel' + import InboundApplyModelList from './InboundApplyModelList.vue' export default { name: 'InboundListRight', @@ -176,7 +178,8 @@ ParaTurningToolsList, ParaCommonToolList, ParaBladeList, - InboundModel + InboundModel, + InboundApplyModelList }, data () { return { @@ -211,9 +214,14 @@ dataIndex: 'toolCode' }, { + title:'宸ュ叿缂栧彿', + align:"center", + dataIndex: 'onlyCode' + }, + { title:'鍏ュ簱绫诲瀷', align:"center", - dataIndex: 'inStorehouseType' + dataIndex: 'inStorehouseTypeName' }, { title:'鍨嬪彿/鍥惧彿', @@ -229,7 +237,7 @@ { title:'鍏ュ簱鏁伴噺', align:"center", - dataIndex: 'inStorageQuantity' + dataIndex: 'inNumber' }, // { // title:'澶囨敞', @@ -249,17 +257,17 @@ return !text?"":(text.length>10?text.substr(0,10):text) } }, - { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } - } + // { + // title: '鎿嶄綔', + // dataIndex: 'action', + // align:"center", + // fixed:"right", + // width:147, + // scopedSlots: { customRender: 'action' } + // } ], url: { - list: "/tms/inboundDetail/list", + list: "/tms/inStoreDetail/list", paraHolesToolsList:"/tms/baseTools/paraHolesToolsList", paraCommonToolList:"/tms/baseTools/paraCommonToolList", paraThreadingToolList:"/tms/baseTools/paraThreadingToolList", @@ -308,6 +316,10 @@ this.$refs.modalForm.title = "鏂板宸ュ叿鍏ュ簱"; this.$refs.modalForm.disableSubmit = false; }, + + handleInbound() { + this.$refs.inboundApplyModelList.show(); + }, handleDelete(id) { deleteAction(this.url.delete, {id: id}).then((res) => { if (res.success) { diff --git a/src/views/tms/modules/inbound/InboundModel.vue b/src/views/tms/modules/inbound/InboundModel.vue index 5692855..7548919 100644 --- a/src/views/tms/modules/inbound/InboundModel.vue +++ b/src/views/tms/modules/inbound/InboundModel.vue @@ -8,33 +8,45 @@ @cancel="handleCancel" > <a-spin :spinning="confirmLoading"> - <a-form :form="form"> + <a-form-model ref="form" :model="model" :rules="validatorRules"> <a-row style="width: 100%"> <a-col :span="24 / 2"> - <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱绫诲瀷"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="宸ュ叿鍒嗙被缂栧彿"> + <a-input v-model="model.classifyNum" placeholder="璇疯緭鍏ュ伐鍏峰垎绫荤紪鐮�" :disabled="true"></a-input> + </a-form-model-item> + </a-col> + <a-col :span="24 / 2"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="宸ュ叿鍒嗙被鍚嶇О"> + <a-input v-model="model.typeName" placeholder="璇疯緭鍏ュ伐鍏峰垎绫诲悕绉�" :disabled="true"></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row style="width: 100%"> + <a-col :span="24 / 2"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱绫诲瀷" prop="inStorehouseType"> <j-dict-select-tag :disabled="disableSubmit" type="list" - v-decorator="['inStorehouseType', validatorRules.inStorehouseType]" + v-model="model.inStorehouseType" :triggerChange="true" dictCode="in_storehouse_type" placeholder="璇烽�夋嫨鍏ュ簱绫诲瀷" @change="handleTypeChange" /> - </a-form-item> + </a-form-model-item> </a-col> <a-col :span="24 / 2"> - <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱鏃堕棿"> + <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍏ュ簱鏃堕棿" prop="inboundTime"> <a-date-picker @change="onChange" :disabled="disableSubmit" style="width: 100%" - v-decorator="['inboundTime', validatorRules.inboundTime]" + v-model="model.inboundTime" /> - </a-form-item> + </a-form-model-item> </a-col> </a-row> - </a-form> + </a-form-model> </a-spin> <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectReturnList()" v-show="returnShow && !disableSubmit">閫夋嫨鍊熷嚭宸ュ叿</a-button> <a-button type="primary" :style="{ marginBottom: '8px' }" @click="selectTooling()" v-show="toolingShow && !disableSubmit">閫夋嫨宸ュ叿</a-button> @@ -54,9 +66,9 @@ <div :key="col.dataIndex"> <a-input-number v-if="col.dataIndex == 'inStorageQuantity'" - :disabled="quantityDisable" + :disabled="record.accuracyClass == '1'" :value="text" - @change="(e) => handleChange(e, record.key, col, index)" + @change="(e) => handleChange(e, record, col, index)" :min="1" /> </div> @@ -75,9 +87,9 @@ <template slot="footer" v-if="disableSubmit == true"> <a-button :style="{ marginRight: '8px' }" @click="handleCancel">鍏抽棴</a-button> </template> - <j-select-tooling-modal ref="toolingModalForm" @ok="modalFormOk"></j-select-tooling-modal> - <j-select-return-list-modal ref="returnModalForm" @ok="modalFormOk"></j-select-return-list-modal> - <j-select-sharpen-list-modal ref="sharpenModalForm" @ok="modalFormOk"></j-select-sharpen-list-modal> + <j-select-tooling-modal ref="toolingModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-tooling-modal> + <j-select-return-list-modal ref="returnModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-return-list-modal> + <j-select-sharpen-list-modal ref="sharpenModalForm" @ok="modalFormOk" :classifyId="classifyId"></j-select-sharpen-list-modal> </a-modal> </template> @@ -95,7 +107,7 @@ import JSelectSharpenListModal from '.././inboundOrder/JSelectSharpenListModal' export default { - name: 'InboundOrderModel', + name: 'InboundModel', components: { JSelectToolingModal, JMultiSelectTag, @@ -118,6 +130,7 @@ showSizeChanger: true, total: 0 }, + form: this.$form.createForm(this), isDisabled: false, selectedRowKeys: {}, state: { @@ -127,18 +140,11 @@ maintenanceState: false, checkState: false, }, - inboundDate: '', - applicationDate: '', - supplierShow: false, disableSubmit: false, - numDisable:false, quantityDisable:false, - onlyCodeDisable:true, returnShow:false, toolingShow:false, sharpenShow:false, - addDisable:false, - toolinngOptions:[], title: '鎿嶄綔', visible: false, model: {}, @@ -152,32 +158,22 @@ }, confirmLoading: false, loading: false, - form: this.$form.createForm(this), dataSource: [], - toolingTreeData:[], - warehouseOptions:[], - locationOptions:[], - allToolingList:[], param: {}, - barcodeCurrentType: false, inboundOrderId:'', validatorRules: { - inStorehouseType: { - rules: [ + inStorehouseType: [ { required: true, message: '璇烽�夋嫨鍏ュ簱绫诲瀷!', }, ], - }, - inboundTime: { - rules: [ + inboundTime:[ { required: true, message: '璇烽�夋嫨鐢宠鍏ュ簱鏃ユ湡!', }, ], - }, }, url: { addInStorage: '/tms/inboundOrder/addInStorage', @@ -186,7 +182,6 @@ queryReturnList:'/tms/toolLedgerDetail/list', detailList:'/tms/inboundDetail/list', }, - toolingOptions:[], columns: [ { title: '#', @@ -220,6 +215,12 @@ dataIndex: 'toolModel' }, { + title: '鍞竴缂栫爜', + align: 'center', + dataIndex: 'onlyCode', + width: 150, + }, + { title: '鍏ュ簱鏁伴噺', align: 'center', dataIndex: 'inStorageQuantity', @@ -232,9 +233,13 @@ scopedSlots: { customRender: 'action' }, }, ], + classifyId:'' } }, - created() {}, + created() { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, methods: { modalFormOk() { }, @@ -243,56 +248,42 @@ this.param.pageSize = this.ipagination.pageSize return filterObj(this.param) }, - add() { - this.edit({}) + add (nodeSelected) { + this.classifyId = nodeSelected.key + this.model.classifyNum = nodeSelected.entity.classifyId + this.model.typeName = nodeSelected.entity.typeName + this.dataSource = [] + this.visible = true; }, - edit(record) { - let that = this - this.form.resetFields() - this.model = Object.assign({}, record) - this.visible = true - this.isDisabled = false - this.disableSubmit = false - if (record.id) { - if(record.inStorehouseType == "1"){ - this.toolingShow = true - }else if(record.inStorehouseType == "2"){ - this.returnShow = true - }else if(record.inStorehouseType == "5"){ - this.sharpenShow = true - } - this.inboundOrderId = record.id - this.detailList(this.inboundOrderId) - } - this.initOptions() - this.$nextTick(() => { - this.form.setFieldsValue( - pick(this.model, 'inboundNum', 'inStorehouseType', 'inboundTime', 'applicationReason', 'handler','approvalDate','reviewer','approvalOpinion','remark') - ) - }) - }, - handleChange(value, key, column, index) { + handleChange(value, record, column, index) { //let t = (this.ipaginationm.current - 1) * this.ipaginationm.pageSize + index + let key = record.key const temp = [...this.dataSource] const target = temp.filter(item => key === item.key)[index]; if (target) { target[column.dataIndex] = value - this.dataSource = temp + + if(column.dataIndex === 'inStorageQuantity'){ + if(target['quantity']<value){ + this.$message.error('鍏ュ簱鏁伴噺涓嶈兘澶т簬鍑哄簱鏁伴噺!') + this.isDisabled = true + }else{ + this.isDisabled = false + } + } + this.dataSource = temp } }, close() { this.$emit('close') this.dataSource = [] + this.model = {}, this.visible = false - this.supplierShow = false, this.disableSubmit = false, - this.numDisable = false, this.quantityDisable = false, - this.onlyCodeDisable = true, this.returnShow = false, this.toolingShow = false, - this.sharpenShow = false, - this.addDisable = false + this.sharpenShow = false }, handleTableChange(pagination, filters, sorter) { this.ipagination = pagination @@ -306,6 +297,7 @@ that.confirmLoading = true let formData = Object.assign(this.model, values) formData.detailData = this.dataSource + formData.classifyId = this.classifyId postAction(this.url.addInStorage, formData) .then((res) => { if (res.success) { @@ -329,7 +321,7 @@ selectTooling: function () { let ids = [] for (let i = 0; i < this.dataSource.length; i++) { - ids.push(this.dataSource[i].toolCodeId) + ids.push(this.dataSource[i].id) } this.$refs.toolingModalForm.showModal(ids) this.$refs.toolingModalForm.title = '閫夋嫨宸ュ叿' @@ -359,44 +351,22 @@ this.dataSource.splice(index, 1) }, onChange() {}, - //鎺у埗鎵爜鎴栨墜閫� - selectCurrentUserType(e) { - if (e == '0') { - this.barcodeCurrentType = true - } else { - this.barcodeCurrentType = false - } - }, - //鎵嬮�変汉鍛樺�� - selectCurrentUserChange(e) { - console.log('褰撳墠鎵嬮��', e) - // this.form.setFieldsValue({ - // // userName: e, - // userNameId: e, - // }) - }, //鍏ュ簱绫诲瀷 handleTypeChange(value) { this.dataSource = [] if(value == 1){ this.toolingShow = true this.quantityDisable = false - this.addDisable = true - this.numDisable = false }else{ this.toolingShow = false } if(value == 2){ - this.numDisable = true - this.addDisable = false this.returnShow = true this.quantityDisable = true }else{ this.returnShow = false } if (value == 5) { - this.numDisable = true - this.addDisable = false this.sharpenShow = true this.quantityDisable = true } else { @@ -404,52 +374,12 @@ } }, - //娣诲姞宸ュ叿鎸夐挳 - addTooling() { - const temp = [...this.dataSource]; - temp.push({ indexId: temp.length + 1 }); - this.dataSource = temp; - }, detailList(inboundOrderId) { this.param.inboundOrderId = inboundOrderId getAction(this.url.detailList, this.getQueryParams()).then((res) => { if (res.success) { this.dataSource = res.result.records this.ipagination.total = res.result.total; - } - }) - }, - initOptions() { - - ajaxGetDictItems("mes_base_warehouse,name,id,del_flag!='1' order by num asc", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - } - } - this.warehouseOptions = res.result; - } - }) - ajaxGetDictItems("mes_base_storage_area,name,id,del_flag!='1'", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - } - } - this.locationOptions = res.result; - } - }) - ajaxGetDictItems("mes_base_tooling,num,id,del_flag!='1'", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - res.result[i].toolingName = res.result[i].name - } - } - this.toolingOptions = res.result; } }) }, @@ -465,13 +395,16 @@ //getCurrSelected 浜嬩欢 鎺ユ敹缁勪欢浼犻�掔殑鍙傛暟 for (let i = 0; i < data.length; i++) { this.dataSource.push({ - toolCodeId:data[i].id, + id: data[i].id, + toolCodeId: data[i].toolCodeId, toolCode: data[i].toolCode, chineseName: data[i].chineseName, toolModel: data[i].toolModel, applicationType: data[i].applicationTypeName, onlyCode:data[i].onlyCode, - inStorageQuantity:data[i].storageQuantity + inStorageQuantity:data[i].storageQuantity || data[i].quantity, + quantity:data[i].quantity, + accuracyClass:data[i].accuracyClass }) } //this.ipaginationm.total = this.dataSource.length diff --git a/src/views/tms/modules/inboundOrder/InboundOrderModel.vue b/src/views/tms/modules/inboundOrder/InboundOrderModel.vue index 6aae13c..06333dd 100644 --- a/src/views/tms/modules/inboundOrder/InboundOrderModel.vue +++ b/src/views/tms/modules/inboundOrder/InboundOrderModel.vue @@ -55,7 +55,7 @@ v-if="!barcodeCurrentType" placeholder="璇烽�夋嫨缁忔墜浜�" v-decorator="['handler', { rules: [{ required: false, message: '璇烽�夋嫨缁忔墜浜�' }] }]" - dict="sys_user,realname,id,del_flag=0" + dict="sys_user,realname,username,del_flag=0" @change="selectCurrentUserChange" /> </a-form-item> @@ -64,10 +64,10 @@ <a-col :span="24 / 2"> <a-form-item label="瀹℃牳浜�" :labelCol="labelCol" :wrapperCol="wrapperCol"> <j-search-select-tag - :disabled="true" + :disabled="disableSubmit" placeholder="璇烽�夋嫨瀹℃牳浜�" v-decorator="['reviewer', validatorRules.reviewer]" - dict="sys_user,realname,id,del_flag=0" + dict="sys_user,realname,username,del_flag=0" @change="selectCurrentUserChange" /> </a-form-item> @@ -127,7 +127,7 @@ <div :key="col.dataIndex"> <a-input-number v-if="col.dataIndex == 'inStorageQuantity'" - :disabled="quantityDisable" + :disabled="record.accuracyClass == '1'" :value="text" @change="(e) => handleChange(e, record.key, col, index)" :min="1" @@ -166,6 +166,7 @@ import { filterObj } from '@/utils/util' import JSelectReturnListModal from './JSelectReturnListModal' import JSelectSharpenListModal from './JSelectSharpenListModal' +import store from '@/store' export default { name: 'InboundOrderModel', @@ -176,6 +177,7 @@ JSelectReturnListModal, JSearchSelectTag, JSelectSharpenListModal, + store }, data() { return { @@ -259,6 +261,14 @@ }, ], }, + reviewer: { + rules: [ + { + required: true, + message: '璇烽�夋嫨瀹℃牳浜�!', + }, + ], + }, }, url: { add: '/tms/inboundOrder/add', @@ -326,6 +336,7 @@ return filterObj(this.param) }, add() { + this.handle = store.getters.userInfo.username this.edit({}) }, edit(record) { @@ -346,7 +357,6 @@ this.inboundOrderId = record.id this.detailList(this.inboundOrderId) } - this.initOptions() this.$nextTick(() => { this.form.setFieldsValue( pick(this.model, 'inboundNum', 'inStorehouseType', 'inboundTime', 'applicationReason', 'handler','approvalDate','reviewer','approvalOpinion','remark') @@ -359,6 +369,14 @@ const target = temp.filter(item => key === item.key)[index]; if (target) { target[column.dataIndex] = value + if(column.dataIndex === 'inStorageQuantity'){ + if(target['quantity']<value){ + this.$message.error('鍏ュ簱鏁伴噺涓嶈兘澶т簬鍑哄簱鏁伴噺!') + this.isDisabled = true + }else{ + this.isDisabled = false + } + } this.dataSource = temp } }, @@ -417,7 +435,7 @@ selectTooling: function () { let ids = [] for (let i = 0; i < this.dataSource.length; i++) { - ids.push(this.dataSource[i].toolCodeId) + ids.push(this.dataSource[i].id) } this.$refs.toolingModalForm.showModal(ids) this.$refs.toolingModalForm.title = '閫夋嫨宸ュ叿' @@ -447,14 +465,6 @@ this.dataSource.splice(index, 1) }, onChange() {}, - //鎺у埗鎵爜鎴栨墜閫� - selectCurrentUserType(e) { - if (e == '0') { - this.barcodeCurrentType = true - } else { - this.barcodeCurrentType = false - } - }, //鎵嬮�変汉鍛樺�� selectCurrentUserChange(e) { console.log('褰撳墠鎵嬮��', e) @@ -492,52 +502,12 @@ } }, - //娣诲姞宸ュ叿鎸夐挳 - addTooling() { - const temp = [...this.dataSource]; - temp.push({ indexId: temp.length + 1 }); - this.dataSource = temp; - }, detailList(inboundOrderId) { this.param.inboundOrderId = inboundOrderId getAction(this.url.detailList, this.getQueryParams()).then((res) => { if (res.success) { this.dataSource = res.result.records this.ipagination.total = res.result.total; - } - }) - }, - initOptions() { - - ajaxGetDictItems("mes_base_warehouse,name,id,del_flag!='1' order by num asc", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - } - } - this.warehouseOptions = res.result; - } - }) - ajaxGetDictItems("mes_base_storage_area,name,id,del_flag!='1'", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - } - } - this.locationOptions = res.result; - } - }) - ajaxGetDictItems("mes_base_tooling,num,id,del_flag!='1'", null).then((res) => { - if (res.success) { - if (res.result) { - for (let i = 0; i < res.result.length; i++) { - res.result[i].label = res.result[i].title; - res.result[i].toolingName = res.result[i].name - } - } - this.toolingOptions = res.result; } }) }, @@ -553,13 +523,16 @@ //getCurrSelected 浜嬩欢 鎺ユ敹缁勪欢浼犻�掔殑鍙傛暟 for (let i = 0; i < data.length; i++) { this.dataSource.push({ - toolCodeId:data[i].id, + id:data[i].id, + toolCodeId: data[i].toolCodeId, toolCode: data[i].toolCode, - chineseName: data[i].chineseName || data[i].toolName, + chineseName: data[i].chineseName, toolModel: data[i].toolModel, applicationType: data[i].applicationTypeName, - onlyCode:data[i].toolNum, - inStorageQuantity:data[i].storageQuantity || data[i].quantity + onlyCode:data[i].onlyCode, + quantity:data[i].quantity, + inStorageQuantity:data[i].storageQuantity || data[i].quantity, + accuracyClass:data[i].accuracyClass }) } //this.ipaginationm.total = this.dataSource.length diff --git a/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue b/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue index 56cbcf2..fc45e74 100644 --- a/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue +++ b/src/views/tms/modules/inboundOrder/JSelectReturnListModal.vue @@ -60,7 +60,11 @@ export default { name: 'JSelectToolingModal', components: {}, - props: {}, + props: { + classifyId:{ + type:String + } + }, data() { return { queryParam: {}, @@ -84,16 +88,16 @@ { title: '宸ュ叿缂栧彿', align: 'center', - dataIndex: 'toolNum', + dataIndex: 'onlyCode', sorter: true, }, { title: '宸ュ叿鍚嶇О', align: 'center', - dataIndex: 'toolName', + dataIndex: 'chineseName', sorter: true, }, - { + { title: '宸ュ叿绫诲瀷', align: 'center', dataIndex: 'applicationTypeName', @@ -134,9 +138,10 @@ loading: false, url: { // list: '/base/tooling/list', - list: '/tms/toolLedgerDetail/list', + list: '/tms/toolLedgerDetail/queryLendTool', queryKnifeBom:'/toolingStorage/mesToolingOutbounds/queryKnifeBom' }, + classifyId:'' } }, computed: { @@ -166,11 +171,12 @@ let that = this this.loading = true let params = this.getQueryParams() //鏌ヨ鏉′欢 - params["status"] = "2" + params.status = "2" + params.classifyId = this.classifyId await getAction(this.url.list, params).then((res) => { if (res.success) { for (let i = 0; i < res.result.records.length; i++) { - if (that.oldSlelectRows.indexOf(res.result.records[i].toolingId) > -1) { + if (that.oldSlelectRows.indexOf(res.result.records[i].id) > -1) { res.result.records[i].distable = true } else { res.result.records[i].distable = false diff --git a/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue b/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue index 317b880..0b22be9 100644 --- a/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue +++ b/src/views/tms/modules/inboundOrder/JSelectSharpenListModal.vue @@ -60,7 +60,11 @@ export default { name: 'JSelectToolingModal', components: {}, - props: {}, + props: { + classifyId:{ + type:String + } + }, data() { return { queryParam: {}, @@ -84,16 +88,16 @@ { title: '宸ュ叿缂栧彿', align: 'center', - dataIndex: 'toolNum', + dataIndex: 'onlyCode', sorter: true, }, { title: '宸ュ叿鍚嶇О', align: 'center', - dataIndex: 'toolName', + dataIndex: 'chineseName', sorter: true, }, - { + { title: '宸ュ叿绫诲瀷', align: 'center', dataIndex: 'applicationTypeName', @@ -134,8 +138,9 @@ loading: false, url: { // list: '/base/tooling/list', - list: '/tms/toolLedgerDetail/list', + list: '/tms/toolLedgerDetail/querySharpenTool', }, + classifyId:'' } }, computed: { @@ -165,11 +170,12 @@ let that = this this.loading = true let params = this.getQueryParams() //鏌ヨ鏉′欢 - params["status"] = "5" + params.status = "5" + params.classifyId = this.classifyId await getAction(this.url.list, params).then((res) => { if (res.success) { for (let i = 0; i < res.result.records.length; i++) { - if (that.oldSlelectRows.indexOf(res.result.records[i].toolingId) > -1) { + if (that.oldSlelectRows.indexOf(res.result.records[i].id) > -1) { res.result.records[i].distable = true } else { res.result.records[i].distable = false diff --git a/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue b/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue index 0ccb752..7c37496 100644 --- a/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue +++ b/src/views/tms/modules/inboundOrder/JSelectToolingModal.vue @@ -60,7 +60,11 @@ export default { name: 'JSelectToolingModal', components: {}, - props: {}, + props: { + classifyId:{ + type:String + } + }, data() { return { queryParam: {}, @@ -157,6 +161,7 @@ let that = this this.loading = true let params = this.getQueryParams() //鏌ヨ鏉′欢 + params.classifyId = this.classifyId await getAction(this.url.list, params).then((res) => { if (res.success) { for (let i = 0; i < res.result.records.length; i++) { diff --git a/src/views/tms/modules/outBound/OutboundListLeft.vue b/src/views/tms/modules/outBound/OutboundListLeft.vue index 61a2487..b286147 100644 --- a/src/views/tms/modules/outBound/OutboundListLeft.vue +++ b/src/views/tms/modules/outBound/OutboundListLeft.vue @@ -2,7 +2,7 @@ <a-card :loading="cardLoading" :bordered="false" - title="宸ュ叿淇℃伅" + title="宸ュ叿鍑哄簱" style="height: 100%;" > <a-spin :spinning="loading"> diff --git a/src/views/tms/modules/outBound/OutboundListRight.vue b/src/views/tms/modules/outBound/OutboundListRight.vue index 76e3f79..ecea874 100644 --- a/src/views/tms/modules/outBound/OutboundListRight.vue +++ b/src/views/tms/modules/outBound/OutboundListRight.vue @@ -55,10 +55,10 @@ <a-button @click="handleAdd(nodeSelected)" type="primary" icon="plus" :disabled="!nodeSelected.key || nodeSelected.entity.leafFlag === '2'">鏂板</a-button> </Tooltip> <a-button type="primary" @click="selectOutboundOrder">鐢宠鍗曞嚭搴�</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('tms_tools_classify')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> + <a-button type="primary" icon="download" @click="handleExportXls('宸ュ叿鍑哄簱娴佹按')">瀵煎嚭</a-button> +<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">--> +<!-- <a-button type="primary" icon="import">瀵煎叆</a-button>--> +<!-- </a-upload>--> </div> <!-- table鍖哄煙-begin --> @@ -210,7 +210,7 @@ { title:'宸ュ叿绫诲瀷', align:"center", - dataIndex: 'signCode' + dataIndex: 'applicationType' }, { title:'涓枃鍚嶇О', @@ -236,6 +236,11 @@ title:'鍑哄簱绫诲瀷', align:"center", dataIndex: 'outStorehouseType_dictText' + }, + { + title:'鍑哄簱鏂瑰紡', + align:"center", + dataIndex: 'operateType' }, { title:'搴撲綅鍙�', @@ -277,7 +282,7 @@ delete: "/tms/baseTools/delete", deleteBatch: "/tms/baseTools/deleteBatch", edit: '/tms/baseTools/edit', - exportXlsUrl: "/tms/baseTools/exportXls", + exportXlsUrl: "/tms/outStoreDetail/exportXls", importExcelUrl: "tms/baseTools/importExcel", queryParaByToolCode:"/tms/baseTools/queryByToolCode", queryByToolCode:"/tms/toolsConfigProperty/queryByToolCode" diff --git a/src/views/tms/modules/outBound/OutboundModal.vue b/src/views/tms/modules/outBound/OutboundModal.vue index 7123333..da68089 100644 --- a/src/views/tms/modules/outBound/OutboundModal.vue +++ b/src/views/tms/modules/outBound/OutboundModal.vue @@ -260,6 +260,8 @@ close () { this.$emit('close'); this.addShow = true + this.selectBorrowTool = false + this.model = {} this.visible = false; this.$refs.form.clearValidate(); }, -- Gitblit v1.9.3