初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
import {
getMemberCardList
} from '@/api/member'
import {mapGetters} from 'vuex';
export default {
data() {
return {
memberCardData: {
page: 0,
total: 1,
list: [],
index: 0,
currData: {},
selected: {}
},
itemNum: 1
}
},
computed: {
...mapGetters(['billingGoodsData'])
},
methods: {
open() {
this.$refs.memberCardPopup.open();
this.memberCardData.page = 0;
this.memberCardData.index = 0;
this.memberCardData.list = [];
this.memberCardData.currData = {};
this.memberCardData.selected = {};
this.getMemberCard()
},
// 获取会员项目
getMemberCard() {
if (this.memberCardData.page + 1 > this.memberCardData.total) return;
this.memberCardData.page += 1;
getMemberCardList({
status: 1,
page: this.memberCardData.page,
member_id: this.globalMemberInfo.member_id
}).then(res => {
if (res.code == 0) {
this.memberCardData.total = res.data.page_count || 1;
Object.values(this.billingGoodsData).forEach(data => {
if (data.card_id) {
res.data.list.forEach((card)=>{
if(card.card_id == data.card_id){
// 通用卡:选择商品,总数量发生变化
if (data.card_type == 'commoncard') {
card.total_use_num += data.num;
} else if (data.card_type == 'oncecard') {
// 限次卡:选择商品后,商品和总数量都要发生变化
card.total_use_num += data.num;
card.item_list.forEach((card_item)=>{
if(card_item.item_id == data.item_id){
card_item.use_num += data.num;
}
})
}
}
})
}
});
if (res.data.list.length) this.memberCardData.list = this.memberCardData.list.concat(res.data.list);
if (this.memberCardData.page == 1) {
// 默认展示第一个卡项信息
if (res.data.count) this.selectMemberCard(this.memberCardData.list[0], 0);
}
}
})
},
/**
* 选择会员套餐
* @param {Object} data
* @param {Object} index
*/
selectMemberCard(data, index) {
this.memberCardData.index = index;
this.memberCardData.currData = this.$util.deepClone(data);
this.memberCardData.selected = {};
},
/**
* 选择会员套餐商品项
* @param {Object} data
* @param {Object} index
*/
selectMemberCardItem(data, index) {
if (this.memberCardData.selected['item_' + data.item_id]) {
if (data.card_type == 'commoncard') {
this.memberCardData.currData.total_use_num -= this.memberCardData.selected['item_' + data.item_id].input_num;
}
delete this.memberCardData.selected['item_' + data.item_id];
} else {
if (!this.checkStatus(data)) return;
this.memberCardData.selected['item_' + data.item_id] = this.$util.deepClone(data);
this.memberCardData.selected['item_' + data.item_id].input_num = 1;
this.memberCardData.selected['item_' + data.item_id].index = index;
this.memberCardData.selected['item_' + data.item_id].card_name = this.memberCardData.currData.goods_name;
if (data.card_type == 'commoncard') {
this.memberCardData.currData.total_use_num += 1;
}
}
this.$forceUpdate();
},
/**
* 加入购物车
*/
selectGoods() {
if (!Object.keys(this.memberCardData.selected).length) {
this.$util.showToast({
title: '请选择服务/商品',
});
return;
}
let billingGoodsData = this.$util.deepClone(this.billingGoodsData);
let billingGoodsKeys = Object.keys(billingGoodsData);
Object.keys(this.memberCardData.selected).forEach((key) => {
let data = this.memberCardData.selected[key];
data.card_index = this.memberCardData.index;
this.memberCardData.list[this.memberCardData.index].total_use_num += data.input_num;
this.memberCardData.list[this.memberCardData.index].item_list[data.index].use_num += data.input_num;
this.memberCardData.currData.item_list[data.index].use_num += data.input_num;
//服务商品每个都是一个订单项,需要循环处理
if(data.goods_class == this.$util.goodsClassDict.service){
let addNum = 0;
Object.values(billingGoodsData).forEach((item)=>{
if(item.sku_id == data.sku_id){
addNum ++;
}
})
data.num = 1;
for(let num = 1;num <= data.input_num;num ++){
let skuKey = 'sku_' + data.sku_id + '_item_' + data.item_id + '_' + addNum;
billingGoodsData[skuKey] = this.$util.deepClone(data);
addNum ++;
}
}else{
data.num = data.input_num;
let skuKey = 'sku_' + data.sku_id + '_item_' + data.item_id;
if(billingGoodsData.hasOwnProperty(skuKey)){
data.num += billingGoodsData[skuKey].num;
}
billingGoodsData[skuKey] = this.$util.deepClone(data);
}
});
this.$store.commit('billing/setGoodsData', billingGoodsData);
this.memberCardData.selected = {};
},
/**
* 数量减
* @param {Object} data
*/
itemDec(data) {
let currData = this.memberCardData.currData;
if (this.memberCardData.selected['item_' + data.item_id].input_num > 1) {
this.memberCardData.selected['item_' + data.item_id].input_num -= 1;
if (data.card_type == 'commoncard') {
currData.total_use_num -= 1;
}
this.$forceUpdate();
}
},
/**
* 数量加
* @param {Object} data
*/
itemInc(data) {
let currData = this.memberCardData.currData;
if (data.card_type == 'commoncard') {
if ((currData.total_num - currData.total_use_num - 1) < 0) return;
} else if (data.card_type == 'oncecard') {
if ((data.num - data.use_num - this.memberCardData.selected['item_' + data.item_id].input_num - 1) < 0) return;
}
if (data.card_type == 'commoncard') {
currData.total_use_num += 1;
}
this.memberCardData.selected['item_' + data.item_id].input_num += 1;
this.$forceUpdate();
},
checkStatus(data) {
let currData = this.memberCardData.currData;
if (data.card_type == 'commoncard') {
return currData.total_num > currData.total_use_num;
} else if (data.card_type == 'oncecard') {
return data.num > data.use_num;
}
return true;
}
}
}