From 39fd76ebdc9a6b6edf934c725139819eecdb4dfd Mon Sep 17 00:00:00 2001 From: mabo Date: Thu, 24 Jun 2021 15:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E6=A0=BC=E9=A1=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/goodsDetail/ShowGoods.vue | 2 +- seller/src/api/goods.js | 16 +- .../goods/goods-seller/goodsOperation.vue | 194 ++++++++---------- 3 files changed, 95 insertions(+), 117 deletions(-) diff --git a/buyer/src/components/goodsDetail/ShowGoods.vue b/buyer/src/components/goodsDetail/ShowGoods.vue index 40bda016..6380f86f 100644 --- a/buyer/src/components/goodsDetail/ShowGoods.vue +++ b/buyer/src/components/goodsDetail/ShowGoods.vue @@ -151,7 +151,7 @@ export default { count: 1, // 商品数量 imgIndex: 0, // 展示图片下标 currentSelceted: [], // 当前商品sku - imgList: this.detail.data.specList[0].specImage, // 商品图片列表 + imgList: this.detail.data.specList[0].specImage || [], // 商品图片列表 skuDetail: this.detail.data, // sku详情 goodsSpecList: this.detail.specs, // 商品spec promotionMap: { // 活动状态 diff --git a/seller/src/api/goods.js b/seller/src/api/goods.js index 36359d22..dd8e4264 100644 --- a/seller/src/api/goods.js +++ b/seller/src/api/goods.js @@ -215,13 +215,13 @@ export const getSkuPage = params => { }; // 获取商品规格值列表 -export const getSpecValuesListSellerData = (id, params) => { - return getRequest(`/goods/spec-values/values/${id}`, params); -}; +// export const getSpecValuesListSellerData = (id, params) => { +// return getRequest(`/goods/spec-values/values/${id}`, params); +// }; // 添加商品规格值 -export const saveSpecValuesSeller = (id, params) => { - return postRequest(`/goods/spec-values/save/${id}`, params); -}; +// export const saveSpecValuesSeller = (id, params) => { +// return postRequest(`/goods/spec-values/save/${id}`, params); +// }; // 获取商品规格分页列表 export const getSpecListSellerData = params => { @@ -312,8 +312,8 @@ export const getCategoryParamsListDataSeller = (id, params) => { }; //保存获取关联规格 -export const getGoodsSpecInfoSeller = (category_id, params) => { - return getRequest(`/goods/spec/${category_id}`, params); +export const getGoodsSpecInfoSeller = (category_id) => { + return getRequest(`/goods/spec/${category_id}`); }; //批量设置运费模板 diff --git a/seller/src/views/goods/goods-seller/goodsOperation.vue b/seller/src/views/goods/goods-seller/goodsOperation.vue index b5dbab40..e1f6549b 100644 --- a/seller/src/views/goods/goods-seller/goodsOperation.vue +++ b/seller/src/views/goods/goods-seller/goodsOperation.vue @@ -185,29 +185,33 @@
- - + + +
- - + + + +
- +
- + @@ -523,7 +527,6 @@ export default { check: false, }, ], - show: "1", //提交状态 submitLoading: false, //上传图片路径 @@ -616,8 +619,9 @@ export default { brandId: 0, /** 计量单位 **/ goodsUnit: "", + /** 商品类型 **/ goodsType: "", - /** 路径 **/ + /** 分类路径 **/ categoryPath: "", /** 商品卖点 **/ sellingPoint: "", @@ -637,47 +641,20 @@ export default { /** 表格数据 */ skuTableData: [], - /** 请求数据*/ + /** 默认的规格参数 */ skuData: [], - - /** 当前可选择的 规格名称*/ - skuKey: [], - - /** 当前可选择的 规格值*/ - skuValue: [], - + + /** 默认的规格值 */ + skuVals: [], + // 某一规格名下的规格值 + skuVal: [], open_panel: [1, 2], /** 要提交的规格数据*/ skuInfo: [], - /** 当前选择的规格项*/ - specSelected: "", - - /** 当前选择的规格值*/ - specValSelected: "", - /** 当前规格项下的规格值列表*/ - specListSelected: [], - - /** 当前规格项下的规格值列表*/ - specList: [], - - /** 当前规格项索引 */ - activeSkuItemIndex: 0, - - /** 当前规格项 */ - activeSkuItem: {}, - /** 规格图片 */ images: [], - /** 当前规格值索引 */ - activeSkuValIndex: 0, - - /** 当前规格值 */ - activeSkuVal: {}, - - /** 当前百分比 */ - currentPercent: 0, /** 运费模板 **/ logisticsTemplate: [], @@ -738,6 +715,7 @@ export default { "specId", "specValueId", ], + skuValVisible: true, }; }, @@ -757,6 +735,7 @@ export default { this.goodsId = this.$route.query.id; this.GET_GoodData(); this.selectGoodsType = false; + } //编辑模版 else if (this.$route.query.draftId) { @@ -937,7 +916,7 @@ export default { } return !check; }, - + // 跳转商品列表 gotoGoodsList() { this.$router.push({ name: "goods" }); }, @@ -981,6 +960,7 @@ export default { } }); }, + // 编辑时获取商品信息 async GET_GoodData() { let response = {}; if (this.draftId) { @@ -1006,6 +986,8 @@ export default { this.activeCategoryName3 = response.result.categoryName[2]; this.baseInfoForm.categoryId = response.result.categoryPath.split(","); + + if ( response.result.goodsGalleryList && response.result.goodsGalleryList.length > 0 @@ -1019,6 +1001,8 @@ export default { this.categoryId = this.baseInfoForm.categoryId[2]; + this.Get_SkuInfoByCategory(this.categoryId) + this.renderGoodsDetailSku(response.result.skuList); /** 查询品牌列表 */ @@ -1029,7 +1013,7 @@ export default { this.GET_ShopGoodsLabel(); this.GET_GoodsUnit(); }, - + // 渲染sku数据 renderGoodsDetailSku(skuList) { let skus = []; let skusInfo = []; @@ -1151,16 +1135,31 @@ export default { */ this.renderTableData(); }, - async GET_SkuSpecVal(id) { - let specValResult = await API_GOODS.getSpecValuesListSellerData(id, { - pageNumber: 1, - pageSize: 10, - specVal: this.specValSelected, - }); - if (specValResult.success && specValResult.result.records.length > 0) { - this.skuValue = specValResult.result.records.map((i) => i.specValue); - } else { - this.skuValue = []; + // 编辑规格名 + editSkuItem () { + this.renderTableData(); + }, + // 编辑规格值 + async skuValueChange(val, index, item) { + /** 更新skuInfo数据 */ + let _arr = cloneObj(item); + this.$set(item, "name", _arr.name); + this.$set(this.skuInfo, index, _arr); + /** + * 渲染规格详细表格 + */ + this.renderTableData(); + }, + // 获取焦点时,取得规格名对应的规格值 + changeSkuVals (name) { + if (name) { + this.skuData.forEach((e, index) => { + if (e === name) { + if (this.skuVal.length != this.skuVals[index].length) { + this.skuVal = this.skuVals[index] + } + } + }) } }, /** 移除当前规格项 进行数据变化*/ @@ -1171,6 +1170,7 @@ export default { */ this.renderTableData(); }, + // 添加规格值的验证 validateEmpty(params) { let flag = true; params.forEach((item) => { @@ -1187,16 +1187,15 @@ export default { }, /** 添加当前规格项的规格值*/ addSpec($index, item) { - this.activeSkuItemIndex = $index; - if (this.validateEmpty(this.skuInfo[$index].spec_values)) { - if (this.skuInfo[$index].spec_values.length >= 10) { + if (this.validateEmpty(item.spec_values)) { + if (item.spec_values.length >= 10) { this.$Message.error("规格值不能大于10个!"); return; } this.$set( - this.skuInfo[$index].spec_values, - this.skuInfo[$index].spec_values.length, + item.spec_values, + item.spec_values.length, { name: item.name, } @@ -1208,21 +1207,10 @@ export default { this.renderTableData(); } }, - /** - * 根据规格项名称,搜索对应的规格对象(如果是服务器设置过的话) - */ - findSpec(name) { - let spec = { name: name }; - this.skuData.forEach((item) => { - if (item.name === name) { - spec = item; - } - }); - return spec; - }, + /** 移除当前规格值 */ - handleCloseSkuValue($index, index) { - this.skuInfo[$index].spec_values.splice(index, 1); + handleCloseSkuValue(item, index) { + item.spec_values.splice(index, 1); this.baseInfoForm.regeneratorSkuFlag = true; /** @@ -1230,19 +1218,7 @@ export default { */ this.renderTableData(); }, - /** 选择规格值时触发 */ - async skuValueChange(val, index, item) { - this.specValSelected = val; - await this.GET_SkuSpecVal(item.spec_id); - /** 更新skuInfo数据 */ - let _arr = cloneObj(this.skuInfo[this.activeSkuItemIndex]); - this.$set(this.skuInfo[this.activeSkuItemIndex], "name", _arr.name); - this.$set(this.skuInfo, this.activeSkuItemIndex, _arr); - /** - * 渲染规格详细表格 - */ - this.renderTableData(); - }, + /** * 渲染table所需要的column 和 data */ @@ -1310,35 +1286,34 @@ export default { }); cloneTemp.splice(0, 1); result = this.specIterator(result, cloneTemp); - result = this.defaultParams(result); + // result = this.defaultParams(result); this.skuTableData = result; } }, - /** 自动完成表单所需方法*/ - filterMethod(value, option) { - return option.toUpperCase().indexOf(value.toUpperCase()) !== -1; - }, /** 根据分类id获取系统设置规格信息*/ - Get_SkuInfoByCategory() { - if (this.baseInfoForm.categoryId) { - API_GOODS.getGoodsSpecInfoSeller(this.baseInfoForm.categoryId, {}).then( - (response) => { - this.skuData = response; - if (this.skuData.length > 0) { - this.skuData.forEach((spec) => { - this.skuKey.push(spec.name); - }); + Get_SkuInfoByCategory(categoryId) { + if (categoryId) { + API_GOODS.getGoodsSpecInfoSeller(categoryId).then(res => { + if(res.length) { + res.forEach(e => { + this.skuData.push(e.specName) + this.skuVals.push(e.specValue ? e.specValue.split(',') : []) + }) } } ); } }, + /** 自动完成表单所需方法*/ + filterMethod(value, option) { + return option.toUpperCase().indexOf(value.toUpperCase()) !== -1; + }, /** * 添加固有属性 */ - defaultParams(tableData) { - return tableData; - }, + // defaultParams(tableData) { + // return tableData; + // }, /** * 迭代属性,形成表格 * result 渲染的数据 @@ -1367,6 +1342,7 @@ export default { } return this.specIterator(result, cloneTemp); }, + // 规格表格操作 handleSpan({ row, column, rowIndex, columnIndex }) {}, /** 数据改变之后 抛出数据 */ updateSkuTable(row, item) { @@ -1454,7 +1430,7 @@ export default { /** 查询品牌列表 */ this.getGoodsBrandList(); /** 查询分类绑定的规格信息 */ - this.Get_SkuInfoByCategory(); + this.Get_SkuInfoByCategory(this.baseInfoForm.categoryId); // 获取商品单位 this.GET_GoodsUnit(); // 获取当前店铺分类 @@ -1485,6 +1461,7 @@ export default { this.loading = false; if (this.activestep++ > 2) return; }, + // 店内分类选择 selectTree(v) { if (v.length > 0) { // 转换null为"" @@ -1499,6 +1476,7 @@ export default { this.editTitle = menu.title; } }, + // 店内分类选中 changeSelect(v) { this.selectCount = v.length; let ids = ""; @@ -1581,7 +1559,7 @@ export default { } }); }, - /** 保存至草稿箱 */ + /** 保存为模板 */ saveToDraft(saveType) { let showType = saveType === "TEMPLATE" ? "模版" : "草稿"; this.baseInfoForm.skuList = this.skuTableData; @@ -1629,7 +1607,7 @@ export default { }, }); }, - SAVE_DRAFT_GOODS() { // 保存草稿商品 + SAVE_DRAFT_GOODS() { // 保存模板 API_GOODS.saveDraftGoods(this.baseInfoForm).then((res) => { if (res.success) { this.$Message.info("保存成功!");