Explorar o código

feat(billing): 支持开单限购价格校验

- ghsApp 开单确认前拉取限购信息,超出不可购买限购时阻止进入确认页

- 确认页按限购特价和原价拆分计算展示金额与提交单价,并兼容快捷开单客户

- 同步清理 hdApp 供应商开单废弃运费方法并调整限购提示文案
shizhongqi hai 1 mes
pai
achega
09ca0b2f31

+ 14 - 13
ghsApp/src/admin/billing/affirm.vue

@@ -23,15 +23,12 @@
                         </text>
                         <text class="item-price">
                           <text class="unit">¥</text>
-                          
-                          <text class="price" v-if="item.bigCount > 0">{{ parseFloat((Number(item.bigCount) * Number(item.userPrice)).toFixed(2)) }}</text>
-                          <text class="price" v-else>{{ parseFloat((Number(item.smallCount) * Number(item.userPrice)).toFixed(2)) }}</text>
-
+                          <text class="price">{{ parseFloat(getSelectItemTotalPrice(item, isQuickBill).toFixed(2)) }}</text>
                         </text>
                       </view>
 
                       <view style="text-align: right; position: relative">
-                        <text style="position: absolute; right: 300upx; top: 2upx; font-size: 28upx; color: #3385ff; font-weight: bold">¥{{ parseFloat(item.userPrice) || 0 }}</text>
+                        <text style="position: absolute; right: 300upx; top: 2upx; font-size: 28upx; color: #3385ff; font-weight: bold">¥{{ parseFloat(getSubmitItemPrice(item, isQuickBill)) || 0 }}</text>
                         <text
                           v-if="showFinance == 1"
                           :class="[Number(item.avCost) > Number(item.userPrice) && item.bigCount > 0 ? 'warning-price' : 'normal-price']"
@@ -55,6 +52,7 @@
                           <i class="iconfont iconzeng" @click="addItemFn(item)"></i>
                         </view>
                       </view>
+                      <view v-if="getLimitBuyPriceTip(item, isQuickBill)" class="limit-buy-price-tip">{{ getLimitBuyPriceTip(item) }}</view>
                     </view>
                   </view>
                 </template>
@@ -613,6 +611,7 @@ export default {
   mixins: [productMins],
   data() {
     return {
+      isQuickBill: false,
       deliveryQuotes: [], // 跑腿平台报价列表
       selectedDeliveryIndex: -1,
       selectedDeliveryData: null,
@@ -701,6 +700,7 @@ export default {
     this.option = option;
     this.book = option.book ? option.book : 0;
     this.kdType = option.kdType;
+    this.isQuickBill = option.isQuickBill || false;
     let that = this;
     this.initMerchantInfo().then((data) => {
       uni.setNavigationBarTitle({ title: data.name });
@@ -720,13 +720,6 @@ export default {
 
     if (Number(option.customId) > 0) {
       this.form.customId = option.customId;
-      // let that = this;
-      // getUserDet({ id: option.customId }).then((res) => {
-      //   that.form.customName = res.data.name;
-      //   that.customInfo = res.data;
-      //   that.form.wlName = res.data.wlName ? res.data.wlName : '';
-      //   that.$forceUpdate();
-      // });
       this.getCustomDetail();
 
       //用于混入product的已选中花材!!!!!
@@ -1092,7 +1085,7 @@ export default {
             smallNum: ele.smallCount,
             classId: ele.classId,
             itemId: ele.itemId,
-            price: ele.userPrice,
+            price: this.getSubmitItemPrice(ele, this.isQuickBill),
             remark: ele.remark
           };
         });
@@ -1507,6 +1500,14 @@ export default {
                 }
               }
             }
+            .limit-buy-price-tip {
+              color: #ff2842;
+              font-size: 24upx;
+              font-weight: bold;
+              line-height: 34upx;
+              margin-top: -8upx;
+              margin-bottom: 10upx;
+            }
 
             & .open-bx {
               align-items: center;

+ 51 - 2
ghsApp/src/admin/billing/index2.vue

@@ -181,6 +181,7 @@ import productMins from "@/mixins/product2";
 import { getClassRemind,hasClassRemind,getMenu } from "@/api/item-class";
 import { delStatusUpdate } from '@/api/product';
 import { cancelLimitBuy } from "@/api/item";
+import { getLimitBuyInfo } from "@/api/purchase";
 import { mapGetters } from "vuex";
 export default {
 	name: "index",
@@ -290,6 +291,22 @@ export default {
 		}
 	},
 	methods: {
+		isQuickBillingCustom() {
+			const customId = Number(this.option && this.option.customId ? this.option.customId : 0)
+			const loginInfo = this.getLoginInfo || {}
+			const shopInfo = loginInfo.shopInfo || {}
+			const shop = loginInfo.shop || {}
+			const skCustomIdList = [
+				loginInfo.skCustomId,
+				shopInfo.skCustomId,
+				shop.skCustomId,
+				this.skCustomId
+			]
+			return skCustomIdList.some(id => {
+				const skCustomId = Number(id || 0)
+				return customId > 0 && skCustomId > 0 && customId == skCustomId
+			})
+		},
 		onItemRemarkCleared(id) {
 			if (this.$util.isEmpty(this.globalItemData)) {
 				return
@@ -456,7 +473,39 @@ export default {
 			let customName = this.option.customName ? this.option.customName : '';
 			let orderId = this.option.orderId  ? this.option.orderId : 0
 			let book = this.option.book ? this.option.book : 0
-			this.$util.pageTo({ url: '/admin/billing/affirm', type:2, query: {customId:this.option.customId,customName:customName,orderId:orderId,book:book}})
+			const isQuickBill = this.isQuickBillingCustom();
+			if (isQuickBill) {
+				this.reSetLimitBuyInfo({selectJobType:this.selectJobType,selectJobId:this.selectJobId})
+				this.$util.pageTo({ url: '/admin/billing/affirm', type:2, query: {customId:this.option.customId,customName:customName,orderId:orderId,book:book,isQuickBill:isQuickBill}})
+				return
+			}
+			let limitBuyList = this.selectList
+				.filter(item => Number(item.limitBuy) > 0)
+				.map(item => {
+					return {
+						id: item.id,
+						bigCount: item.bigCount,
+						smallCount: item.smallCount
+					}
+				})
+			const goAffirm = (limitBuyInfo = []) => {
+				this.setLimitBuyInfo({ selectJobType: this.selectJobType, info: limitBuyInfo, selectJobId: this.selectJobId })
+				this.$util.pageTo({ url: '/admin/billing/affirm', type:2, query: {customId:this.option.customId,customName:customName,orderId:orderId,book:book,limitBuy:1,isQuickBill:isQuickBill}})
+			}
+			if (limitBuyList.length <= 0) {
+				goAffirm([])
+				return
+			}
+			getLimitBuyInfo({ customId: this.option.customId, list: limitBuyList }).then(res => {
+				const limitBuyInfo = Array.isArray(res.data) ? res.data : []
+				const warnList = limitBuyInfo.filter(item => item.specialPrice === false && item.reachLimitBuyNum === true)
+				if (warnList.length > 0) {
+					this.cartItemShow = true
+					this.$msg('有花材超出限购')
+					return
+				}
+				goAffirm(limitBuyInfo)
+			})
 		}
 	}
 };
@@ -712,4 +761,4 @@ export default {
 		border-top: 1upx solid #eeeeee;
 	}
 }
-</style>
+</style>

+ 4 - 0
ghsApp/src/api/purchase/index.js

@@ -12,6 +12,10 @@ export const batchConfirm = data => {
 	return https.post("/purchase/batch-confirm", data);
 };
 
+export const getLimitBuyInfo = data => {
+	return https.post("/purchase/limit-buy-info", data);
+};
+
 export const getLsRunningOrderNum = data => {
 	return https.post("/purchase-order/get-ls-running-order-num", data);
 };

+ 163 - 32
ghsApp/src/mixins/product.js

@@ -2,6 +2,7 @@ import { getProductDataApi,getStockInItem } from "@/api/product";
 import { mapGetters, mapActions } from "vuex";
 import { copyObject } from "@/utils/util"
 import { allProduct } from '@/api/product'
+import { getLimitBuyInfo } from "@/api/purchase"
 export default {
 	data() {
 		return {
@@ -37,14 +38,20 @@ export default {
 			this.selectJobType = selectJobType;
 		}
 	},
-	onUnload() {},
 	computed: {
-		...mapGetters(["getSelectInfo"]),
+		...mapGetters(["getSelectInfo", "getLimitBuyInfo"]),
 		//当前页面选中的商品列表
 		selectList() {
 			let selectInfo = this.getSelectInfo;
 			return selectInfo[this.selectJobType+'_'+this.selectJobId] || []
 		},
+		limitBuyList() {
+			if (!this.option || this.option.limitBuy != 1) {
+				return []
+			}
+			let limitBuyInfo = this.getLimitBuyInfo || {};
+			return limitBuyInfo[this.selectJobType+'_'+this.selectJobId] || []
+		},
 		scrollClassId() {
 			const curClass = this.productInfoList[this.classIndex];
 			if (curClass) {
@@ -54,26 +61,10 @@ export default {
 		},
 		allPrice() {
 			let price = 0;
+			const isQuickBill = this.isTrueValue(this.isQuickBill)
 			if (this.selectList) {
 				for (const item of this.selectList) {
-					const itemInfo = this.getSelectItemById(item.id, item.classId);
-					if (itemInfo && !this.$util.isEmpty(itemInfo.bigPrice) && !this.$util.isEmpty(itemInfo.smallPrice)) {
-						if(item.userPrice>0){
-							if(Number(item.bigCount) > 0){
-								price += Number(item.bigCount) * Number(itemInfo.userPrice);
-							}
-							if(Number(item.smallCount) > 0){
-								price += Number(item.smallCount) * Number(itemInfo.userPrice);	
-							}
-						}else{
-							if(Number(item.bigCount) > 0){
-								price += Number(item.bigCount) * Number(itemInfo.bigPrice);
-							}
-							if(Number(item.smallCount) > 0){
-								price += Number(item.smallCount) * Number(itemInfo.smallPrice);	
-							}
-						}
-					}
+					price += this.getSelectItemTotalPrice(item, isQuickBill)
 				}
 			}
 			return Math.round(price * 100) / 100;
@@ -128,12 +119,9 @@ export default {
 			}
 			return has;
 		}
-	},
-	onShow(){
-
 	},
 	methods: {
-		...mapActions(["setSelectInfo", "reSetSelectInfo"]),
+		...mapActions(["setSelectInfo", "reSetSelectInfo", "setLimitBuyInfo", "reSetLimitBuyInfo"]),
 		init(){
 			if (this.autoLoad) {
 				this.initData();
@@ -141,7 +129,7 @@ export default {
 		},
 		//放到仓库
 		pushToSave(selectData){
-			this.setSelectInfo({ selectJobType: this.selectJobType, info: selectData,selectJobId:this.selectJobId })
+			this.setSelectInfo({ selectJobType: this.selectJobType, info: selectData, selectJobId:this.selectJobId })
 			uni.setStorageSync('selectList_'+this.selectJobType+'_target_'+this.selectJobId, selectData)
 		},
 		//询问是否删除缓存
@@ -158,6 +146,7 @@ export default {
 
 			uni.removeStorageSync('selectList_'+that.selectJobType+'_target_'+that.selectJobId)
 			that.reSetSelectInfo({selectJobType:that.selectJobType,selectJobId:that.selectJobId})
+			that.reSetLimitBuyInfo({selectJobType:that.selectJobType,selectJobId:that.selectJobId})
 
 			//删除多颜色
 			//console.log(that.selectJobType+that.selectJobId)
@@ -192,7 +181,6 @@ export default {
 			let currentItemList = data.itemList ? data.itemList : []
 
 			this.globalItemList = currentItemList
-
 			this.productInfoList = currentClassItem
 
 			let currentInfo = uni.getStorageSync('selectList_'+this.selectJobType+'_target_'+this.selectJobId)
@@ -205,7 +193,6 @@ export default {
 		},
 		//滚动或切换分类 获取更多数据
 		scrollPushList(){
-
 			//涉及记住花材的代码和流程,请全项目搜索关键词remember_item
 			//将已选的花材按classId_productId键名组合
 			let selectListData = []
@@ -379,12 +366,158 @@ export default {
 			price = Math.round(sum * 100) / 100;
 			return price;
 		},
+		toSafeNumber(value) {
+			const num = Number(value)
+			return isNaN(num) ? 0 : num
+		},
+		isTrueValue(value) {
+			return value === true || value === 1 || value === "1" || value === "true"
+		},
+		getLimitBuyItemById(id) {
+			if (!Array.isArray(this.limitBuyList)) {
+				return null
+			}
+			return this.limitBuyList.find(item => String(item.id) === String(id)) || null
+		},
+		isLimitSpecialItem(item) {
+			const limitItem = this.getLimitBuyItemById(item.id)
+			return !!(limitItem && this.isTrueValue(limitItem.isLimit) && this.isTrueValue(limitItem.specialPrice))
+		},
+		getLimitBuyPriceInfo(item, isQuickBill) {
+			const isQuickBillValue = this.isTrueValue(isQuickBill)
+			const itemInfo = this.getSelectItemById(item.id, item.classId)
+			const limitItem = this.getLimitBuyItemById(item.id)
+
+			if (isQuickBillValue) { //快捷开单
+				const result = {
+					total: 0,
+					unitPrice: 0,
+					specialPrice: 0,
+					originalPrice: 0
+				}
+				const price = Number(itemInfo.price) //后端处理好了是零售价还是批发价
+
+				result.unitPrice = price
+				result.total = itemInfo.bigCount * price + (itemInfo.smallCount/itemInfo.ratio * price)
+				return result
+			} else { //非快捷开单
+				const specialPrice = Number(itemInfo.price)//对应优惠价格
+				const originalPrice = Number(itemInfo.originPrice) //原始价
+				const result = {
+					total: 0,
+					unitPrice: 0,
+					specialPrice: specialPrice,
+					originalPrice: originalPrice,
+					exceedNum: 0,
+					limitBuy: 0,
+					hasBuyNum: 0,
+					currentBuyNum: 0,
+					specialNum: 0,
+					originalNum: 0,
+					isLimitSpecial: false,
+					reachLimitBuyNum: false
+				}
+				if (!limitItem || !this.isLimitSpecialItem(item)) {
+					result.total = itemInfo.bigCount * specialPrice + (itemInfo.smallCount/itemInfo.ratio * specialPrice)
+					return result
+				}
+
+				const exceedNum = this.toSafeNumber(limitItem.exceedNum) + this.toSafeNumber(limitItem.currentBuyNum) //超出限价的数量
+				result.exceedNum = exceedNum
+				result.limitBuy = this.toSafeNumber(limitItem.limitBuy)
+				result.hasBuyNum = this.toSafeNumber(limitItem.hasBuyNum)
+				result.currentBuyNum = this.toSafeNumber(limitItem.currentBuyNum)
+				result.isLimitSpecial = true
+				result.reachLimitBuyNum = this.isTrueValue(limitItem.reachLimitBuyNum)
+
+				if (exceedNum <= 0) {
+					result.specialNum = result.currentBuyNum
+					result.originalNum = 0
+					result.total = result.currentBuyNum * specialPrice
+				} else if (exceedNum > 0 && result.hasBuyNum > result.limitBuy) {
+					result.specialNum = 0
+					result.originalNum = result.currentBuyNum
+					result.total = result.currentBuyNum * originalPrice
+				} else {
+					result.specialNum = result.currentBuyNum - exceedNum
+					result.originalNum = exceedNum
+					result.total = result.specialNum * specialPrice + result.originalNum * originalPrice
+				}
+
+				result.total = Math.round(result.total * 100) / 100
+				const priceCount = Number(itemInfo.smallCount) > 0 ? Number(itemInfo.smallCount) : Number(itemInfo.bigCount)
+				result.unitPrice = priceCount > 0 ? Math.round((result.total / priceCount) * 100) / 100 : specialPrice
+
+				return result
+			}
+		},
+		getSelectItemTotalPrice(item, isQuickBill) {
+			return this.getLimitBuyPriceInfo(item, isQuickBill).total
+		},
+		getSubmitItemPrice(item, isQuickBill) {
+			const isQuickBillValue = this.isTrueValue(isQuickBill)
+			const priceInfo = this.getLimitBuyPriceInfo(item, isQuickBill)
+			if (!isQuickBillValue) {
+				return priceInfo.unitPrice
+			}
+			return item.userPrice
+		},
+		getLimitBuyPriceTip(item, isQuickBill) {
+			if (this.isTrueValue(isQuickBill)) {
+				return ''
+			} else {
+				const priceInfo = this.getLimitBuyPriceInfo(item, isQuickBill)
+				if (!priceInfo.isLimitSpecial || !priceInfo.reachLimitBuyNum) {
+					return ''
+				}
+				const unitName = item.bigUnit || '份'
+				const limitBuy = parseFloat(priceInfo.limitBuy)
+				const originalNum = parseFloat(priceInfo.originalNum)
+				const specialNum = parseFloat(priceInfo.specialNum)
+				if (priceInfo.specialNum <= 0) {
+					return `限购 ${limitBuy}${unitName},已超出,按原价计算`
+				}
+				return `限购${limitBuy}${unitName},${specialNum}${unitName}按特价,超出${originalNum}${unitName}按原价`
+			}
+		},
+		refreshLimitBuyInfoIfNeeded() {
+			if (!Array.isArray(this.limitBuyList) || this.limitBuyList.length <= 0) {
+				return
+			}
+			let curPage = getCurrentPages()
+			let route = curPage && curPage.length > 0 ? curPage[curPage.length - 1].route : ''
+			if (route != 'admin/billing/affirm' || this.$util.isEmpty(this.option.customId)) {
+				return
+			}
+			const limitBuyList = this.selectList
+				.filter(item => Number(item.limitBuy) > 0)
+				.map(item => {
+					return {
+						id: item.id,
+						bigCount: item.bigCount,
+						smallCount: item.smallCount
+					}
+				})
+			if (limitBuyList.length <= 0) {
+				this.reSetLimitBuyInfo({selectJobType:this.selectJobType,selectJobId:this.selectJobId})
+				return
+			}
+			getLimitBuyInfo({ customId: this.option.customId, list: limitBuyList }).then(res => {
+				const limitBuyInfo = Array.isArray(res.data) ? res.data : []
+				this.setLimitBuyInfo({ selectJobType: this.selectJobType, info: limitBuyInfo, selectJobId: this.selectJobId })
+			})
+		},
 		//通过id获取当前选中的商品信息
 		getSelectItemById(id, classId) {
 			let info = { bigCount: null, smallCount: null, autoPrice: null, itemPrice: null }
 			const item = this.selectList && this.selectList.find(ele => { return ele.id == id && ele.classId == classId })
 			if (item) {
-				info = { ...item, bigCount: Number(item.bigCount), smallCount: Number(item.smallCount), autoPrice: Number(item.autoPrice), itemPrice: Number(item.itemPrice)}
+				info = { ...item,
+					bigCount: Number(item.bigCount),
+					smallCount: Number(item.smallCount),
+					autoPrice: Number(item.autoPrice),
+					itemPrice: Number(item.itemPrice)
+				}
 			}
 			return info;
 		},
@@ -412,7 +545,6 @@ export default {
 			}
 
 			const list = this.selectList
-
 			let index = list.findIndex(element => element.id == item.id)
 
 			//扫码数量累加
@@ -466,10 +598,9 @@ export default {
 			
 			//数据放到仓库永久存放
 			this.pushToSave(list)
+			this.refreshLimitBuyInfoIfNeeded()
 
 			this.itemNumPriceRefresh()
-
-
 		},
 		delSelectedItem(product){
 			let item = copyObject(product)
@@ -751,4 +882,4 @@ export default {
 			}
 		}
 	}
-}
+}

+ 3 - 2
ghsApp/src/mixins/product2.js

@@ -136,7 +136,7 @@ export default {
 
 	},
 	methods: {
-		...mapActions(["setSelectInfo", "reSetSelectInfo"]),
+		...mapActions(["setSelectInfo", "reSetSelectInfo", "setLimitBuyInfo", "reSetLimitBuyInfo"]),
 		init(){
 			if (this.autoLoad) {
 				this.initData();
@@ -286,6 +286,7 @@ export default {
 			//删除仓库
 			uni.removeStorageSync('selectList_'+that.selectJobType+'_target_'+that.selectJobId)
 			that.reSetSelectInfo({selectJobType:that.selectJobType,selectJobId:that.selectJobId})
+			that.reSetLimitBuyInfo({selectJobType:that.selectJobType,selectJobId:that.selectJobId})
 			//删除多颜色
 			//console.log(that.selectJobType+that.selectJobId)
 			if(that.selectJobType == 'bill'){
@@ -582,4 +583,4 @@ export default {
 			this.customData = {};
 		}
 	}
-}
+}

+ 18 - 2
ghsApp/src/store/modules/product.js

@@ -1,11 +1,16 @@
 export default {
 	state: {
 		//选中的花材信息
-		selectInfo: {}
+		selectInfo: {},
+		//限购信息,按业务类型和客户隔离
+		limitBuyInfo: {}
 	},
 	getters: {
 		getSelectInfo(state) {
 			return state.selectInfo
+		},
+		getLimitBuyInfo(state) {
+			return state.limitBuyInfo || {}
 		}
 	},
 	actions: {
@@ -16,11 +21,22 @@ export default {
 		//清空已选花材信息
 		reSetSelectInfo({ commit }, {selectJobType,selectJobId}) {
 			commit("SET_SELECTED_ITEM", { selectJobType, info: [],selectJobId });
+		},
+		//保存限购信息
+		setLimitBuyInfo({ commit }, { selectJobType, info,selectJobId }) {
+			commit("SET_LIMIT_BUY_INFO", { selectJobType, info,selectJobId });
+		},
+		//清空限购信息
+		reSetLimitBuyInfo({ commit }, {selectJobType,selectJobId}) {
+			commit("SET_LIMIT_BUY_INFO", { selectJobType, info: [],selectJobId });
 		}
 	},
 	mutations: {
 		SET_SELECTED_ITEM(state, { selectJobType, info,selectJobId }) {
 			state.selectInfo = { ...state.selectInfo, [selectJobType+'_'+selectJobId]: info }
+		},
+		SET_LIMIT_BUY_INFO(state, { selectJobType, info,selectJobId }) {
+			state.limitBuyInfo = { ...state.limitBuyInfo, [selectJobType+'_'+selectJobId]: info }
 		}
 	}
-};
+};

+ 0 - 33
hdApp/src/admin/billing/affirmGhs.vue

@@ -500,9 +500,6 @@ export default {
 			this.hasCoupon()
 		}
 		if(this.form.sendType == 2){
-			//计算运费
-			//this.calcFreight()
-
 			if(this.displaySendCost == true){
 				//各跑腿平台报价
 				this.getDeliveryQuotes()
@@ -778,9 +775,6 @@ export default {
 		changeSendType(num){
 			this.form.sendType = num
 			if(num == 2){
-				//计算运费
-				//this.calcFreight() //废弃
-
 				if(this.displaySendCost && this.ghsInfo.openIntraCity == 1){
 					if(!this.$util.isEmpty(this.shopInfo.lat) && !this.$util.isEmpty(this.shopInfo.long) && !this.$util.isEmpty(this.shopInfo.address)){
 						this.getDeliveryQuotes()//各跑腿平台报价
@@ -965,33 +959,6 @@ export default {
 				}
 			})
 		},
-		calcFreight() {
-			let weight = 0
-			if(!this.$util.isEmpty(this.selectList)){
-				this.selectList.forEach((item,idx,arr) => {
-					if(Number(item.bigCount)>0){
-						let add = Number(item.weight)*Number(item.bigCount)
-						weight = Number(weight) + Number(add)
-					}else{
-						let unitWeight = item.weight/item.ratio
-						let add = Number(unitWeight)*Number(item.smallCount)
-						weight = Number(weight) + Number(add)
-					}
-				})
-			}
-			weight = Number(weight).toFixed(2)
-
-			let params = {
-				ghsId: this.options.id,
-				weight:weight
-			};
-			freight(params).then(res => {
-				if(res.code == 1){
-					this.form.sendCost = res.data.fee?parseFloat(res.data.fee):0
-					this.showDistance = res.data.showDistance?parseFloat(res.data.showDistance):0
-				}
-			});
-		},
 		addEvents(item) {
 			if(item.variety == 0){
 				const ratio = Number(item.ratio);

+ 1 - 1
hdApp/src/mixins/cgProduct.js

@@ -523,7 +523,7 @@ export default {
 			if (priceInfo.exceedNum > 0 && priceInfo.hasBuyNum > priceInfo.limitBuy) {
 				return `限购 ${priceInfo.limitBuy},已超出,按原价计算`;
 			}
-			return `限购 ${priceInfo.limitBuy},${priceInfo.currentBuyNum - priceInfo.exceedNum} 扎按特价,超出 ${priceInfo.exceedNum} 扎按原价`;
+			return `限购${priceInfo.limitBuy},${priceInfo.currentBuyNum - priceInfo.exceedNum}扎按特价,超出${priceInfo.exceedNum} 扎按原价`;
 		},
 		//记忆已选的花材
 		rememberProduct(){