From 79746ba66051d34eeddbe0f16c6a0497478927e8 Mon Sep 17 00:00:00 2001 From: Jo <479214531@qq.com> Date: Tue, 23 Nov 2021 07:28:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/api.js | 1 + src/views/data/Product.vue | 172 +++++++++++++++++++++---------------- 2 files changed, 98 insertions(+), 75 deletions(-) diff --git a/src/utils/api.js b/src/utils/api.js index ffc1e86..761f3aa 100644 --- a/src/utils/api.js +++ b/src/utils/api.js @@ -172,6 +172,7 @@ export default { saveProduct: `${host}/data/data/product/save`, updateProduct: `${host}/data/data/product/update`, saveRecord: `${host}/data/data/dataRecord/saveRecord`, + getAllTableIdBycategoryId: `${host}/data/data/product/getAllTableIdBycategoryId`, // 关键词 addKeyword: `${host}/data/keyword/addKeyword`, diff --git a/src/views/data/Product.vue b/src/views/data/Product.vue index 01b1523..744a48f 100644 --- a/src/views/data/Product.vue +++ b/src/views/data/Product.vue @@ -81,10 +81,14 @@ - 配置数据权限 - - - + 配置数据权限 + + + + {{ node.label }} + + + @@ -96,7 +100,7 @@ - + {{ node.label }} @@ -181,7 +185,7 @@ export default { typeList: [], defaultProps: { children: 'children', - label: 'categoryName' + label: 'label' }, checkedIds: [], isDetail: false, @@ -199,6 +203,7 @@ export default { configIds: [], updateTime: '', keywordConfig: '', + typeConfigList: [], pageConfig: 1, pageSizeConfig: 10, totalConfig: 0, @@ -255,7 +260,7 @@ export default { this.getData() }, getTable(n,isConcat){ - this.$post(`${this.api.getIdQueryTable}?categoryId=${n.id}&showName=&pageNum=${n.typePage}&pageSize=${this.typeUnit}&updateTime=`).then(res => { + this.$post(`${this.api.getIdQueryTable}?categoryId=${n.originId}&showName=&pageNum=${n.typePage}&pageSize=${this.typeUnit}&updateTime=`).then(res => { let list = res.pageList.records list.map(n => { n.label = n.showName @@ -273,25 +278,40 @@ export default { }).catch(res => {}) }, // 获取分类 - getType(node, resolve){ - this.$post(`${this.api.getLevel}?parentId=${node.level ? node.data.id : 0}`).then(res => { + getType(){ + this.productVisible = true + this.$post(this.api.getTableByClassification).then(res => { const that = this - const list = res.list - this.node = node - this.resolve = resolve - resolve(list) + function handleId(data){ + data.map(n => { + n.originId = n.id + n.id = String(++that.typeIndex) + n.label = n.categoryName + n.disabled = true + if(n.children.length){ + handleId(n.children) + } + }) + } + handleId(res) + // 获取分类下的表 function getTable(data){ data.map(n => { - if(n.children && n.children.length){ + if(n.children.length){ getTable(n.children) }else{ n.typePage = 1 + n.disabled = true that.getTable(n) } }) } - getTable(list) + getTable(res) + + setTimeout(() => { + this.typeList = res + },500) this.importVisible = true }).catch(res => {}) }, @@ -362,20 +382,17 @@ export default { this.productName = data.productName this.market = data.market this.configChecked = data.tableId - // this.checkedIds = this.handleType(data.tableId.split(','),this.typeList) - this.configIds = data.tableId.split(',') - console.log('getDetail', this.configIds) - // this.$refs.type.setCheckedNodes(this.checkedIds) + this.checkedIds = this.handleType(data.tableId.split(','),this.typeList) + this.$refs.type.setCheckedNodes(this.checkedIds) }).catch(res => {}) }, add(){ - this.productVisible = true + this.getType() this.id = '' this.checkedIds = [] }, edit(row){ - this.productVisible = true - // this.getType() + this.getType() this.id = row.id this.userId = row.userId this.getDetail() @@ -399,8 +416,7 @@ export default { }, preview(row){ this.isDetail = true - this.productVisible = true - // this.getType() + this.getType() this.id = row.id this.getDetail() }, @@ -450,58 +466,47 @@ export default { // 获取tableId,提交的时候需要 getIds(){ // 获取已经勾选的分类 - let list = this.$refs.type.getCheckedNodes() - return new Promise((resolve,reject) => { - let getLen = 0 - list.map(n => { - // 如果tableLen大于子级的数量,则表示这个分类下的子级是没有全部加载出来的,要在下面去查询出来,这里先记载要查询的分类数量 - if(n.tableLen && n.tableLen > n.children.length) getLen++ - }) - list.map((n,i) => { - if(n.tableLen && n.tableLen > n.children.length){ - // pageSize传10000是要查询全部表,后续如果数据多了,则按需调整 - this.$post(`${this.api.getIdQueryTable}?categoryId=${n.id}&showName=&pageNum=1&pageSize=10000&updateTime=`).then(res => { - let tableList = res.pageList.records - tableList.map(n => { - this.tableId.push(String(n.id)) - }) - // 查询完1个,则数量-1 - getLen-- - // 清0后,才执行resolve - if(!getLen) resolve() - }).catch(res => {}) - }else if(n.name && !this.tableId.includes(n.id)){ // 如果是表,并且没重复,则添加进去 - this.tableId.push(n.id) - if(!getLen) resolve() - } - }) + let list = this.checkedIds + this.tableId = [] + const proList = [] + list.map(e => { + proList.push(new Promise((resolve,reject) => { + this.$get(`${this.api.getAllTableIdBycategoryId}?categoryId=${e}`).then(res => { + res.tableId && this.tableId.push(...res.tableId.split(',')) + resolve() + }).catch(res => { + this.submited = false + }) + })) }) + return Promise.all(proList).then(res => { + resolve() + }).catch(err => {}) }, confirm(){ if(this.submited) return false if(!this.productName) return this.$message.warning('请输入数据产品名称') if(!this.market) return this.$message.warning('请输入市场价格') if(isNaN(this.market)) return this.$message.warning('市场价格请输入数字') - if(!this.checkedIds.length) return this.$message.warning('请选择数据') + if(!this.$refs.type.getCheckedNodes().length) return this.$message.warning('请选择数据') this.submited = true - // this.getIds().then(() => { - // let tableId = Array.from(new Set(this.tableId)) - // if(!tableId.length) return this.$message.warning('请选择数据') - // return console.log(333, this.checkedIds) + this.getIds().then(() => { + let tableId = Array.from(new Set(this.tableId)) + if(!tableId.length) return this.$message.warning('请选择数据') let data = { id: this.id, productName: this.productName, market: this.market, - tableId: this.checkedIds.join(), + tableId: tableId.join(), userId: this.userId, userName: this.userName, createTime: '', orderNum: '', status: '', - tableNum: this.checkedIds.length, - updateTime: '' + tableNum: tableId.length, + updateTime: '', } if(this.id){ this.$post(this.api.updateProduct,data).then(res => { @@ -522,18 +527,19 @@ export default { this.submited = false }) } - // }) + }) }, configData(){ this.configVisible = true + this.getConfigType() if (this.id) { - // let list = this.$refs.type.getCheckedNodes() - // let configIds = [] - // list.map(n => { - // if(!n.name) configIds.push(n.id) - // }) - // this.configIds = configIds + let list = this.$refs.type.getCheckedNodes() + let configIds = [] + list.map(n => { + if(!n.name) configIds.push(n.originId) + }) + this.configIds = configIds } }, typeConfigClick(data,node){ @@ -545,12 +551,23 @@ export default { this.$refs.typeConfig.setCheckedNodes([]) }, // 获取配置数据里面的分类 - getConfigType(node, resolve){ - this.$post(`${this.api.getLevel}?parentId=${node.level ? node.data.id : 0}`).then(res => { - const list = res.list - resolve(list) - if(list.length){ - this.categoryId = list[0].id + getConfigType(){ + this.$post(this.api.getTableByClassification).then(res => { + function handleId(data){ + data.map(n => { + n.id = String(n.id) + n.label = n.categoryName + if(n.children.length){ + handleId(n.children) + } + }) + } + handleId(res) + this.typeConfigList = res + if(res[0].children.length){ + this.categoryId = res[0].children[0].id + }else{ + this.categoryId = res[0].id } this.getConfigTable() }).catch(res => {}) @@ -600,7 +617,7 @@ export default { list.map(n => { if(n.children && n.children.length){ this.getTableId(n.children) - if(checked.includes(n.id) && n.children[0].name){ + if(checked.includes(n.originId) && n.children[0].name){ this.configCheckedTableId = [...this.configCheckedTableId,...n.children.map(n => n.id)] }else{ this.getTableId(n.children) @@ -609,10 +626,15 @@ export default { }) }, confirmConfig(){ - this.checkedIds = this.$refs.typeConfig.getCheckedKeys().map(n => Number(n)) - this.configVisible = false - console.log(22, this.$refs.typeConfig.getCheckedNodes()) - this.typeList = this.$refs.typeConfig.getCheckedNodes() + this.configChecked = this.$refs.typeConfig.getCheckedKeys().map(n => n) + // this.getTableId(this.typeList) + this.checkedIds = this.configChecked + console.log(44, this.checkedIds, this.configChecked, this.typeList) + this.getIds().then(() => { + this.configVisible = false + console.log(33, this.tableId) + this.$refs.type.setCheckedNodes([...this.tableId, ...this.checkedIds]) + }) } } };