From 6e3153f560b32a31caf930ba0338daf238d6bd6a Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期四, 08 五月 2025 17:49:43 +0800 Subject: [PATCH] 工具管理-库位货架管理页面开发、仓库管理页面优化 --- src/views/tms/modules/GoodsShelvesModal.vue | 66 +++++ src/views/tms/WarehouseList.vue | 84 +++--- src/views/tms/GoodsShelvesList.vue | 305 +++++++++++++++++++++++++ src/views/tms/modules/WarehouseForm.vue | 30 ++ src/views/tms/GoodsShelves.vue | 36 +++ src/views/tms/modules/GoodsShelvesForm.vue | 164 +++++++++++++ src/views/tms/WarehouseTree.vue | 2 7 files changed, 640 insertions(+), 47 deletions(-) diff --git a/src/views/tms/GoodsShelves.vue b/src/views/tms/GoodsShelves.vue new file mode 100644 index 0000000..68c5002 --- /dev/null +++ b/src/views/tms/GoodsShelves.vue @@ -0,0 +1,36 @@ +<template> + <a-card :bordered="false"> + <a-row type="flex" :gutter="16"> + <a-col :md="5"> + <WarehouseTree/> + </a-col> + <a-col :md="19"> + <GoodsShelvesList/> + </a-col> + </a-row> + + </a-card> +</template> + +<script> + import GoodsShelvesList from './GoodsShelvesList.vue' + import WarehouseTree from './WarehouseTree.vue' + + export default { + name: 'GoodsShelves', + components: { + GoodsShelvesList, + WarehouseTree + }, + data() { + return {} + }, + methods: {} + } +</script> + +<style scoped lang="less"> + /deep/ .ant-card-body { + padding: 8px; + } +</style> \ No newline at end of file diff --git a/src/views/tms/GoodsShelvesList.vue b/src/views/tms/GoodsShelvesList.vue new file mode 100644 index 0000000..d7f6570 --- /dev/null +++ b/src/views/tms/GoodsShelvesList.vue @@ -0,0 +1,305 @@ +<template> + <a-card :bordered="false"> + <!-- 鏌ヨ鍖哄煙 --> + <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="浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input + placeholder="璇疯緭鍏ヤ粨搴撳悕绉�" + v-model="queryParam.warehouseName" + ></a-input> + </a-form-item> + </a-col> + <a-col + :md="6" + :sm="8" + > + <a-form-item label="搴撲綅鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input + placeholder="璇疯緭鍏ュ簱浣嶅彿" + v-model="queryParam.locationCode" + ></a-input> + </a-form-item> + </a-col> + <a-col + :md="6" + :sm="8" + > + <a-form-item label="璐ф灦缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input + placeholder="璇疯緭鍏ヨ揣鏋剁紪鍙�" + v-model="queryParam.shelfNumber" + ></a-input> + </a-form-item> + </a-col> + <a-col + :md="7" + :sm="8" + > + <a-form-item label="寮�濮嬫椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-date-picker + show-time + placeholder="璇烽�夋嫨寮�濮嬫椂闂�" + format="YYYY-MM-DD HH:mm" + valueFormat="YYYY-MM-DD HH:mm" + v-model="queryParam.beginTime" + ></a-date-picker> + <!-- :triggerChange="false" --> + </a-form-item> + </a-col> + <a-col + :md="7" + :sm="8" + > + <a-form-item label="缁撴潫鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-date-picker + show-time + placeholder="璇烽�夋嫨缁撴潫鏃堕棿" + format="YYYY-MM-DD HH:mm" + valueFormat="YYYY-MM-DD HH:mm" + v-model="queryParam.endTime" + ></a-date-picker> + <!-- :triggerChange="false" --> + </a-form-item> + </a-col> + + <a-col :md="4" :sm="4"> + <a-space> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="primary" @click="searchReset" icon="reload">閲嶇疆</a-button> + </a-space> + </a-col> + </a-row> + </a-form> + </div> + <!-- 鏌ヨ鍖哄煙-END --> + + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleAdd" :disabled="addFlag" type="primary" icon="plus">鏂板</a-button> +<!-- <a-button type="primary" icon="download" @click="handleExportXls('tms_goods_shelves')">瀵煎嚭</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-dropdown v-if="selectedRowKeys.length > 0">--> +<!-- <a-menu slot="overlay">--> +<!-- <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item>--> +<!-- </a-menu>--> +<!-- <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button>--> +<!-- </a-dropdown>--> + </div> + + <!-- table鍖哄煙-begin --> + <div> +<!-- <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">--> +<!-- <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤�--> +<!-- <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a>--> +<!-- </div>--> + + <a-table + ref="table" + size="middle" + :scroll="{x:true}" + bordered + rowKey="id" + :columns="columns" + :dataSource="dataSource" + :pagination="ipagination" + :loading="loading" + :rowSelection="null" + class="j-table-force-nowrap" + @change="handleTableChange"> + + <span slot="action" slot-scope="text, record"> + <a @click="handleDetail(record)">璇︽儏</a> + + <a-divider type="vertical" /> + <a-dropdown> + <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> + <a-menu slot="overlay"> + <a-menu-item> + <a @click="handleEdit(record)">缂栬緫</a> + </a-menu-item> + <a-menu-item> + <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> + <a>鍒犻櫎</a> + </a-popconfirm> + </a-menu-item> + </a-menu> + </a-dropdown> + </span> + + </a-table> + </div> + + <goods-shelves-modal ref="modalForm" :treeSelected="treeSelected" @ok="modalFormOk"></goods-shelves-modal> + </a-card> +</template> + +<script> + + import '@/assets/less/TableExpand.less' + import { mixinDevice } from '@/utils/mixin' + import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import GoodsShelvesModal from './modules/GoodsShelvesModal' + + export default { + name: 'GoodsShelvesList', + mixins:[JeecgListMixin, mixinDevice], + components: { + GoodsShelvesModal + }, + data () { + return { + description: 'tms_goods_shelves', + labelCol: { xs: { span: 24 }, sm: { span: 8 } }, + wrapperCol: { xs: { span: 24 }, sm: { span: 16 } }, + // 琛ㄥご + columns: [ + { + title: '#', + dataIndex: '', + key:'rowIndex', + width:60, + align:"center", + customRender:function (t,r,index) { + return parseInt(index)+1; + } + }, + { + title:'浠撳簱缂栧彿', + align:"center", + dataIndex: 'warehouseNum' + }, + { + title:'浠撳簱鍚嶇О', + align:"center", + dataIndex: 'warehouseName' + }, + { + title:'搴撲綅鍙�', + align:"center", + dataIndex: 'locationCode' + }, + { + title:'灞傛暟', + align:"center", + dataIndex: 'storey' + }, + { + title:'鎺掓暟', + align:"center", + dataIndex: 'arrange' + }, + { + title:'鍒楁暟', + align:"center", + dataIndex: 'columnNumber' + }, + { + title:'璐ф灦缂栧彿', + align:"center", + dataIndex: 'shelfNumber' + }, + { + title:'璐ф灦鍚嶇О', + align:"center", + dataIndex: 'shelfName' + }, + { + title:'澶囨敞', + align:"center", + dataIndex: 'remark' + }, + { + title:'鍒涘缓浜�', + align:"center", + dataIndex: 'createBy' + }, + { + title:'鍒涘缓鏃堕棿', + align:"center", + dataIndex: 'createTime' + }, + { + title: '鎿嶄綔', + dataIndex: 'action', + align:"center", + fixed:"right", + width:147, + scopedSlots: { customRender: 'action' } + } + ], + url: { + list: "/tms/goodsShelves/list", + delete: "/tms/goodsShelves/delete", + deleteBatch: "/tms/goodsShelves/deleteBatch", + exportXlsUrl: "/tms/goodsShelves/exportXls", + importExcelUrl: "tms/goodsShelves/importExcel", + + }, + dictOptions:{}, + superFieldList:[], + treeSelected: {} + } + }, + created() { + this.getSuperFieldList(); + }, + computed: { + importExcelUrl: function(){ + return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; + }, + addFlag: function(){ + return !(this.treeSelected.key && this.treeSelected.entity.leafFlag === '1') + } + }, + mounted() { + this.handleGetCurrSelected = (data) => { + this.treeSelected = data; + if (data.entity && data.entity.leafFlag === '1') { + this.queryParam.warehouseId = data.key; + this.loadData(); + } else { + this.dataSource = [] + } + } + this.$bus.$on('getCurrSelected', this.handleGetCurrSelected); + }, + beforeDestroy() { + this.$bus.$off('getCurrSelected', this.handleGetCurrSelected); + }, + methods: { + searchReset() { + this.queryParam = { + warehouseId: this.treeSelected.key + } + this.loadData(1) + }, + initDictConfig(){ + }, + getSuperFieldList(){ + let fieldList=[]; + fieldList.push({type:'string',value:'warehouseId',text:'浠撳簱缂栧彿',dictCode:''}) + fieldList.push({type:'string',value:'locationCode',text:'搴撲綅鍙�',dictCode:''}) + fieldList.push({type:'string',value:'storey',text:'灞傛暟',dictCode:''}) + fieldList.push({type:'string',value:'arrange',text:'鎺掓暟',dictCode:''}) + fieldList.push({type:'string',value:'columnNumber',text:'鍒楁暟',dictCode:''}) + fieldList.push({type:'string',value:'shelfNumber',text:'璐ф灦缂栧彿',dictCode:''}) + fieldList.push({type:'string',value:'shelfName',text:'璐ф灦鍚嶇О',dictCode:''}) + fieldList.push({type:'string',value:'remark',text:'澶囨敞',dictCode:''}) + fieldList.push({type:'string',value:'createBy',text:'鍒涘缓浜�',dictCode:''}) + fieldList.push({type:'date',value:'createTime',text:'鍒涘缓鏃堕棿'}) + this.superFieldList = fieldList + } + } + } +</script> +<style scoped> + @import '~@assets/less/common.less'; +</style> \ No newline at end of file diff --git a/src/views/tms/WarehouseList.vue b/src/views/tms/WarehouseList.vue index 5a467a1..8d08ca8 100644 --- a/src/views/tms/WarehouseList.vue +++ b/src/views/tms/WarehouseList.vue @@ -144,7 +144,6 @@ import { JeecgListMixin } from '@/mixins/JeecgListMixin' import WarehouseModal from './modules/WarehouseModal' import { getAction, putAction, deleteAction } from '../../api/manage' - import moment from 'moment' export default { name: 'WarehouseList', @@ -153,16 +152,8 @@ WarehouseModal }, data () { - const now = moment() - const lastWeek = now.clone().subtract(7,'days') return { description: '浠撳簱绠$悊', - queryParam: { - beginTime: lastWeek.format('YYYY-MM-DD HH:mm'), - endTime: now.format('YYYY-MM-DD HH:mm'), - warehouseName: '', - parentId: '' - }, // 琛ㄥご columns: [ { @@ -188,12 +179,26 @@ { title:'鐖惰妭鐐圭紪鍙�', align:"center", - dataIndex: 'parentWarehouseId' + dataIndex: 'parentWarehouseId', + customRender:function (text,r) { + if (r.parentId === '-1') { + return '-1'; + } else { + return text; + } + } }, { title:'鐖惰妭鐐瑰悕绉�', align:"center", - dataIndex: 'parentWarehouseName' + dataIndex: 'parentWarehouseName', + customRender:function (text,r) { + if (r.parentId === '-1') { + return '鑸畤鏁戠敓'; + } else { + return text; + } + } }, { title:'鐘舵��', @@ -214,10 +219,7 @@ { title:'鍒涘缓鏃堕棿', align:"center", - dataIndex: 'createTime', - customRender:function (text) { - return !text?"":(text.length>10?text.substr(0,10):text) - } + dataIndex: 'createTime' }, { title: '鎿嶄綔', @@ -254,30 +256,41 @@ } }, mounted() { - this.$bus.$on('getCurrSelected', (data) => { - console.log(data) + this.handleGetCurrSelected = (data) => { this.treeSelected = data; this.queryParam.parentId = data.key; this.loadData(); - }); + } + this.$bus.$on('getCurrSelected', this.handleGetCurrSelected); }, beforeDestroy() { - this.$bus.$off('getCurrSelected', {}); + this.$bus.$off('getCurrSelected', this.handleGetCurrSelected); }, methods: { handleStatus(record) { - const params = { - id: record.id, - status: record.status === '1' ? '2' : '1' - } - putAction(this.url.edit, params).then((res) => { + getAction(this.url.list, { parentId: record.id }).then((res) => { if (res.success) { - this.$message.success(res.message) - this.loadData() + if (res.result.total > 0) { + this.$message.warning('璇ヨ妭鐐逛笅瀛樺湪瀛愯妭鐐癸紝涓嶈兘鍙樻洿鐘舵�侊紒') + } else { + const params = { + id: record.id, + status: record.status === '1' ? '2' : '1' + } + putAction(this.url.edit, params).then((res) => { + if (res.success) { + this.$message.success(res.message) + this.loadData() + } else { + this.$message.warning(res.message) + } + }) + } } else { - this.$message.warning(res.message) + this.$message.warning(res.message); } - }) + }); + }, handleDelete(id) { getAction(this.url.list, { parentId: id }).then((res) => { @@ -301,24 +314,11 @@ } }) }, - // onBeginTimeChange(date, dateString) { - // this.queryParam.begin_time = dateString[0] - // }, - // onEndTimeChange(date, dateString) { - // this.queryParam.end_time = dateString[0] - // }, searchReset() { - const now = moment() - const lastWeek = now.clone().subtract(7,'days') this.queryParam = { - beginTime: lastWeek.format('YYYY-MM-DD HH:mm'), - endTime: now.format('YYYY-MM-DD HH:mm'), - warehouseName: '', - parentId: '' + parentId: this.treeSelected.key } - this.treeSelected = {} this.loadData(1) - this.$bus.$emit('clearTreeSelection') }, modalFormOk() { this.loadData() diff --git a/src/views/tms/WarehouseTree.vue b/src/views/tms/WarehouseTree.vue index e9a92d7..4ba1aea 100644 --- a/src/views/tms/WarehouseTree.vue +++ b/src/views/tms/WarehouseTree.vue @@ -295,11 +295,9 @@ }, mounted() { this.$bus.$on('queryTreeData', this.queryTreeData); - this.$bus.$on('clearTreeSelection', this.onClearSelected) }, beforeDestroy() { this.$bus.$off('queryTreeData', this.queryTreeData); - this.$bus.$off('clearTreeSelection', this.onClearSelected) }, //鐩戝惉 watch: { diff --git a/src/views/tms/modules/GoodsShelvesForm.vue b/src/views/tms/modules/GoodsShelvesForm.vue new file mode 100644 index 0000000..68bd152 --- /dev/null +++ b/src/views/tms/modules/GoodsShelvesForm.vue @@ -0,0 +1,164 @@ +<template> + <a-spin :spinning="confirmLoading"> + <j-form-container :disabled="formDisabled"> + <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"> + <a-input :disabled="true" v-model="model.warehouseNum" placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol"> + <a-input :disabled="true" v-model="model.warehouseName" placeholder="璇疯緭鍏ヤ粨搴撳悕绉�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="搴撲綅鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="locationCode"> + <a-input v-model="model.locationCode" placeholder="璇疯緭鍏ュ簱浣嶅彿" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="灞傛暟" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="storey"> + <a-input v-model="model.storey" placeholder="璇疯緭鍏ュ眰鏁�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鎺掓暟" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="arrange"> + <a-input v-model="model.arrange" placeholder="璇疯緭鍏ユ帓鏁�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="鍒楁暟" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="columnNumber"> + <a-input v-model="model.columnNumber" placeholder="璇疯緭鍏ュ垪鏁�" ></a-input> + </a-form-model-item> + </a-col> + </a-row> + <a-row> + <a-col :span="12"> + <a-form-model-item label="璐ф灦缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shelfNumber"> + <a-input v-model="model.shelfNumber" placeholder="璇疯緭鍏ヨ揣鏋剁紪鍙�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="璐ф灦鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shelfName"> + <a-input v-model="model.shelfName" placeholder="璇疯緭鍏ヨ揣鏋跺悕绉�" ></a-input> + </a-form-model-item> + </a-col> + <a-col :span="12"> + <a-form-model-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="remark"> + <a-textarea v-model="model.remark" rows="4" placeholder="璇疯緭鍏ュ娉�" /> + </a-form-model-item> + </a-col> + </a-row> + </a-form-model> + </j-form-container> + </a-spin> +</template> + +<script> + + import { httpAction, getAction } from '@/api/manage' + import { validateDuplicateValue } from '@/utils/util' + + export default { + name: 'GoodsShelvesForm', + 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, + validatorRules: { + warehouseId: [ + { required: true, message: '璇疯緭鍏ヤ粨搴撶紪鍙�!'}, + ], + locationCode: [ + { required: true, message: '璇疯緭鍏ュ簱浣嶅彿!'}, + ], + storey: [ + { required: true, message: '璇疯緭鍏ュ眰鏁�!'}, + ], + arrange: [ + { required: true, message: '璇疯緭鍏ユ帓鏁�!'}, + ], + columnNumber: [ + { required: true, message: '璇疯緭鍏ュ垪鏁�!'}, + ], + }, + url: { + add: "/tms/goodsShelves/add", + edit: "/tms/goodsShelves/edit", + queryById: "/tms/goodsShelves/queryById" + } + } + }, + computed: { + formDisabled(){ + return this.disabled + }, + }, + created () { + //澶囦唤model鍘熷鍊� + this.modelDefault = JSON.parse(JSON.stringify(this.model)); + }, + methods: { + add (treeSelected) { + this.modelDefault.warehouseId = treeSelected.key + this.modelDefault.warehouseNum = treeSelected.entity.warehouseId + this.modelDefault.warehouseName = treeSelected.entity.warehouseName + 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; + }) + } + + }) + }, + } + } +</script> \ No newline at end of file diff --git a/src/views/tms/modules/GoodsShelvesModal.vue b/src/views/tms/modules/GoodsShelvesModal.vue new file mode 100644 index 0000000..a3a0987 --- /dev/null +++ b/src/views/tms/modules/GoodsShelvesModal.vue @@ -0,0 +1,66 @@ +<template> + <j-modal + :title="title" + :width="width" + :visible="visible" + switchFullscreen + @ok="handleOk" + :okButtonProps="{ class:{'jee-hidden': disableSubmit} }" + @cancel="handleCancel" + cancelText="鍏抽棴"> + <goods-shelves-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></goods-shelves-form> + </j-modal> +</template> + +<script> + + import GoodsShelvesForm from './GoodsShelvesForm' + export default { + name: 'GoodsShelvesModal', + components: { + GoodsShelvesForm + }, + props: { + treeSelected: { + type: Object, + default: {} + } + }, + data () { + return { + title:'', + width:896, + visible: false, + disableSubmit: false + } + }, + methods: { + add () { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.add(this.treeSelected); + }) + }, + edit (record) { + this.visible=true + this.$nextTick(()=>{ + this.$refs.realForm.edit(record); + }) + }, + close () { + this.$emit('close'); + this.visible = false; + }, + handleOk () { + this.$refs.realForm.submitForm(); + }, + submitCallback(){ + this.$emit('ok'); + this.visible = false; + }, + handleCancel () { + this.close() + } + } + } +</script> \ No newline at end of file diff --git a/src/views/tms/modules/WarehouseForm.vue b/src/views/tms/modules/WarehouseForm.vue index 395abe5..be42c4d 100644 --- a/src/views/tms/modules/WarehouseForm.vue +++ b/src/views/tms/modules/WarehouseForm.vue @@ -25,7 +25,7 @@ </a-col> <a-col :span="12"> <a-form-model-item label="鍙跺瓙鑺傜偣鏍囪瘑" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="leafFlag"> - <a-radio-group v-model="model.leafFlag" placeholder="璇烽�夋嫨鏄惁鍙跺瓙鑺傜偣"> + <a-radio-group :disabled="leafDisableFlag" v-model="model.leafFlag" placeholder="璇烽�夋嫨鏄惁鍙跺瓙鑺傜偣"> <a-radio :value="'2'">鏈夊瓙鑺傜偣</a-radio> <a-radio :value="'1'">鏄彾瀛愯妭鐐�</a-radio> </a-radio-group> @@ -66,6 +66,7 @@ }, data () { return { + leafDisableFlag: false, model:{ }, labelCol: { @@ -80,6 +81,7 @@ validatorRules: { warehouseId: [ { required: true, message: '璇疯緭鍏ヤ粨搴撶紪鍙�!'}, + { validator: (rule, value, callback) => validateDuplicateValue('tms_warehouse', 'warehouse_id', value, this.model.id, callback)} ], warehouseName: [ { required: true, message: '璇疯緭鍏ヤ粨搴撳悕绉�!'}, @@ -95,6 +97,7 @@ ], }, url: { + list: "/tms/warehouse/list", add: "/tms/warehouse/add", edit: "/tms/warehouse/edit", queryById: "/tms/warehouse/queryById" @@ -104,13 +107,24 @@ computed: { formDisabled(){ return this.disabled - }, + } }, created () { //澶囦唤model鍘熷鍊� this.modelDefault = JSON.parse(JSON.stringify(this.model)); }, methods: { + async updateLeafDisableFlag() { + const parentId = this.model.id; + try { + const res = await getAction(this.url.list, { parentId: parentId }); + if (res.success) { + this.leafDisableFlag = res.result.total > 0; + } + } catch (e) { + console.error(e); + } + }, add (treeSelected) { this.modelDefault.parentId = treeSelected.key this.modelDefault.parentWarehouseId = treeSelected.entity.warehouseId @@ -118,6 +132,10 @@ this.edit(this.modelDefault); }, edit (record) { + if (record.parentId === '-1') { + record.parentWarehouseId = '-1' + record.parentWarehouseName = '鑸畤鏁戠敓' + } this.model = Object.assign({}, record); this.visible = true; }, @@ -137,7 +155,6 @@ httpurl+=this.url.edit; method = 'put'; } - console.log(this.model) httpAction(httpurl,this.model,method).then((res)=>{ if(res.success){ that.$message.success(res.message); @@ -152,6 +169,13 @@ }) }, + }, + watch: { + 'model.id': function(newVal) { + if (newVal) { + this.updateLeafDisableFlag() + } + } } } </script> \ No newline at end of file -- Gitblit v1.9.3