Browse Source

2022-11-4

cmy 3 years ago
parent
commit
02350f5321
3 changed files with 133 additions and 27 deletions
  1. BIN
      public/favicon.ico
  2. 11 0
      src/api/product.js
  3. 122 27
      src/pages/product/productEdit/index.vue

BIN
public/favicon.ico


+ 11 - 0
src/api/product.js

@@ -409,6 +409,17 @@ export function videoAttachment (data) {
     });
 }
 
+/**
+ * @description 获取新建商品时需要用到的等级
+ */
+export function getUserLevel (data) {
+    return request({
+        url: 'user/user_level/vip_simple_list',
+        method: 'get',
+        data
+    });
+}
+
 
 
 

+ 122 - 27
src/pages/product/productEdit/index.vue

@@ -24,29 +24,7 @@
 				:label-width="labelWidth" :label-position="labelPosition" @submit.native.prevent>
 				<Row :gutter="24" type="flex" v-show="currentTab === '1'">
 					<!-- 商品信息-->
-					<!--<Col span="24">-->
-					<!--<FormItem label="商品类型:" props="is_virtual">-->
-					<!--<div-->
-					<!--class="productType"-->
-					<!--:class="formValidate.product_type == item.id ? 'on' : ''-->
-					<!--"-->
-					<!--v-for="(item, index) in productType"-->
-					<!--:key="index"-->
-					<!--@click="productTypeTap(1,item)"-->
-					<!--&gt;-->
-					<!--<div class="name">{{ item.name }}</div>-->
-					<!--<div class="title">({{ item.title }})</div>-->
-					<!--<div-->
-					<!--v-if="formValidate.product_type == item.id"-->
-					<!--class="jiao"-->
-					<!--&gt;</div>-->
-					<!--<div-->
-					<!--v-if="formValidate.product_type == item.id"-->
-					<!--class="iconfont iconduihao"-->
-					<!--&gt;</div>-->
-					<!--</div>-->
-					<!--</FormItem>-->
-					<!--</Col>-->
+					
 					<Col span="24">
 					<FormItem label="商品名称:" prop="store_name">
 						<Input v-model="formValidate.store_name" placeholder="请输入商品名称" v-width="'50%'" />
@@ -218,13 +196,13 @@
 					<FormItem label="商品规格:" props="spec_type" v-if="$route.params.id">
 						<RadioGroup v-model="formValidate.spec_type" @on-change="changeSpec">
 							<Radio :label="0" class="radio" :disabled="formValidate.spec_type!=0">单规格</Radio>
-							<Radio :label="1" :disabled="formValidate.spec_type!=1">多规格</Radio>
+							<!-- <Radio :label="1" :disabled="formValidate.spec_type!=1">多规格</Radio> -->
 						</RadioGroup>
 					</FormItem>
 					<FormItem label="商品规格:" props="spec_type" v-else>
 						<RadioGroup v-model="formValidate.spec_type" @on-change="changeSpec">
 							<Radio :label="0" class="radio">单规格</Radio>
-							<Radio :label="1">多规格</Radio>
+							<!-- <Radio :label="1">多规格</Radio> -->
 						</RadioGroup>
 					</FormItem>
 					</Col>
@@ -457,6 +435,26 @@
 							</InputNumber>
 						</FormItem>
 						</Col>
+						<Col span="24">
+						<div style="display: flex; flex-wrap: wrap">
+							<FormItem :label="ls.name+'会员1件售价:'" v-for="ls in userLevelList">
+								<InputNumber v-model="ls.level_price_1" :min="0" :max="99999999" v-width="'50%'">
+								</InputNumber>
+							</FormItem>
+							<FormItem :label="ls.name+'会员3件售价:'" v-for="ls in userLevelList">
+								<InputNumber v-model="ls.level_price_3" :min="0" :max="99999999" v-width="'50%'">
+								</InputNumber>
+							</FormItem>
+							<FormItem :label="ls.name+'会员5件售价:'" v-for="ls in userLevelList">
+								<InputNumber v-model="ls.level_price_5" :min="0" :max="99999999" v-width="'50%'">
+								</InputNumber>
+							</FormItem>
+							<FormItem :label="ls.name+'会员10件售价:'" v-for="ls in userLevelList">
+								<InputNumber v-model="ls.level_price_10" :min="0" :max="99999999" v-width="'50%'">
+								</InputNumber>
+							</FormItem>
+						</div>
+						</Col>
 						<Col span="24" class="asterisk">
 						<div class="asteriskInfo on">*</div>
 						<FormItem label="成本价:">
@@ -820,7 +818,8 @@
 		uploadType,
 		productAllEnsure,
 		productLabelAdd,
-		productAllSpecs
+		productAllSpecs,
+		getUserLevel
 	} from "@/api/product";
 	import {
 		erpConfig
@@ -1352,7 +1351,9 @@
 						return date && date.valueOf() < Date.now() - 86400000;
 					}
 				},
-				openErp: false
+				openErp: false,
+				userLevelList: [], //单规格用户等级列表
+				priceNumList: [1, 3, 5, 10] //保存商品数量数组
 			};
 		},
 		computed: {
@@ -1397,6 +1398,7 @@
 			}
 		},
 		created() {
+			this.getSupplierList();
 			this.columns = this.columns2.slice(1, 10);
 			let data = JSON.parse(JSON.stringify(this.columns2));
 			data.splice(8, 2, this.headerCarMy);
@@ -1497,6 +1499,8 @@
 			this.uploadType();
 			this.getProductAllEnsure();
 			this.getProductAllSpecs();
+			// 在获取规格后获取用户等级数据
+			this.getUserLevel();
 		},
 		destroyed() {
 			this.setCopyrightShow({
@@ -1507,6 +1511,28 @@
 			...mapMutations('admin/layout', [
 				'setCopyrightShow'
 			]),
+			// 获取用户等级列表
+			getUserLevel() {
+				const that = this;
+				return new Promise((resolve, reject) => {
+					getUserLevel().then(res => {
+						that.userLevelList = res.data.map((item) => {
+							return {
+								name: item.name,
+								id: item.id,
+								level_price_1: 0,
+								level_price_3: 0,
+								level_price_5: 0,
+								level_price_10: 0
+							}
+						});
+						resolve();
+					}).catch(err => {
+						that.$Message.error(err.msg);
+						reject();
+					})
+				})
+			},
 			limitTap(e) {
 				if (e) {
 					this.formValidate.limit_type = (this.formValidate.is_limit && !this.formValidate.limit_type) ? 1 : 0
@@ -1988,6 +2014,29 @@
 					ids.push(item.id);
 				});
 				this.goodsData = data.recommend_list;
+				// 获取数量列表
+				const priceNum = this.priceNumList;
+				
+				this.getUserLevel().then(()=>{
+					// 保存项目对象
+					for (let i = 0; i < priceNum.length; i++) {
+						const levelName = 'level_price_' + priceNum[i];
+						let levelItem;
+						if (i == 0) {
+							levelItem = data.attr["level_price"];
+						} else {
+							levelItem = data.attr[levelName];
+						}
+						for (let a = 0; a < this.userLevelList.length; a++) {
+							let ls = this.userLevelList[a];
+							// 根据数量获取规格值
+							ls[levelName] = levelItem["level_" + ls.id];
+							console.log(levelName, levelItem["level_" + ls.id], ls, '66666');
+						}
+					}
+				}).catch((err)=>{
+					console.log(err)
+				})
 				if (data.auto_off_time) {
 					this.off_show = 1;
 				} else {
@@ -2387,6 +2436,14 @@
 						if (!this.$route.params.id && this.formValidate.spec_type === 1) {
 							this.manyFormValidate.map((item) => {
 								item.pic = this.formValidate.slider_image[0];
+								if (!item.level_price) {
+									item.level_price = {
+										"level_price_1": 0,
+										"level_price_3": 0,
+										"level_price_5": 0,
+										"level_price_10": 0,
+									}
+								}
 							});
 							this.oneFormBatch[0].pic = this.formValidate.slider_image[0];
 						} else if (this.$route.params.id) {
@@ -2394,6 +2451,14 @@
 								if (!item.pic) {
 									item.pic = this.formValidate.slider_image[0];
 								}
+								if (!item.level_price) {
+									item.level_price = {
+										"level_price_1": 0,
+										"level_price_3": 0,
+										"level_price_5": 0,
+										"level_price_10": 0,
+									}
+								}
 							});
 							this.oneFormBatch[0].pic = this.formValidate.slider_image[0];
 						}
@@ -2600,7 +2665,37 @@
 							}
 						}
 						this.formValidate.type = this.type;
+						//保存商品数量规格设置
+						const priceNum = this.priceNumList;
+						// 判断是否单规格
 						if (this.formValidate.spec_type === 0) {
+							try {
+								// 保存项目对象
+								let item = this.oneFormValidate[0];
+								for (let i = 0; i < priceNum.length; i++) {
+									const levelName = 'level_price_' + priceNum[i];
+									let levelItem;
+									if (i == 0) {
+										item["level_price"] = {};
+										levelItem = item["level_price"];
+									} else {
+										item[levelName] = {};
+										levelItem = item[levelName];
+									}
+									console.log(levelItem, 'lv')
+									for (let a = 0; a < this.userLevelList.length; a++) {
+										const ls = this.userLevelList[a];
+										if (ls[levelName] <= 0) {
+											return this.$Message.warning("规格库存-会员价格必须设置大于0");
+										}
+										// 根据数量获取规格值
+										levelItem["level_" + ls.id] = ls[levelName];
+									}
+								}
+							} catch (e) {
+								console.log(e)
+							}
+							
 							this.formValidate.attrs = this.oneFormValidate;
 							this.formValidate.header = [];
 							this.formValidate.items = [];