admin/addon/cashier/source/os/components/nc-member/nc-member.js

376 lines
8.9 KiB
JavaScript

export default {
data() {
return {
activeStyle: {
width: '.5rem',
transform: 'translateX(0rem)'
},
memberId: 0,
searchText: '',
type: 'card',
memberCoupon: [],
startDate: '1900-1-1',
sex: [{
text: '未知',
value: 0
},
{
text: '男',
value: 1
}, {
text: '女',
value: 2
},
],
memberData: {
sex: 0,
mobile: '',
nickname: '',
birthday: '',
headimg: '',
member_level: 0,
member_level_name: '',
},
flag: false,
memberCardData: {
page: 0,
total: 1,
list: [],
index: 0,
currData: {},
selected: {}
},
itemNum: 1,
memberLevelList: [],
}
},
mounted() {
this.mediaQueryOb = uni.createMediaQueryObserver(this)
this.mediaQueryOb.observe({
maxWidth: 1500
}, matches => {
if (matches) this.itemNum = 1;
})
this.mediaQueryOb.observe({
minWidth: 1501,
maxWidth: 1900,
}, matches => {
if (matches) this.itemNum = 2;
})
this.mediaQueryOb.observe({
minWidth: 1901,
}, matches => {
if (matches) this.itemNum = 3;
})
},
created() {
this.getMemberLevel();
},
methods: {
selectMemberLevel(index, item) {
if (index >= 0) {
this.memberData.member_level = item.value;
this.memberData.member_level_name = item.label;
} else {
this.memberData.member_level = '';
this.memberData.member_level_name = '';
}
this.$forceUpdate();
},
// 添加图片
addImg(i) {
this.$util.upload(1, {
path: 'headimg'
}, res => {
if (res.length > 0) {
this.memberData.headimg = res[0];
this.$forceUpdate();
}
});
},
getMemberLevel() {
this.memberLevelList = [];
this.$api.sendRequest({
url: '/cashier/storeapi/memberlevel/lists',
success: res => {
if (res.code == 0 && res.data) {
for (let i in res.data) {
this.memberLevelList.push({
'label': res.data[i]['level_name'],
'value': res.data[i]['level_id'].toString(),
'disabled': false
});
}
}
}
});
},
addSwitch() {
this.type = 'addmember';
this.memberData = {
sex: 0,
mobile: this.searchText,
nickname: '',
birthday: '',
headimg: '',
member_level: '',
member_level_name: '',
}
},
addMember() {
if (this.verify()) {
if (this.flag) return;
this.flag = true;
let data = this.memberData;
this.$api.sendRequest({
url: '/cashier/storeapi/member/addMember',
data: this.memberData,
success: res => {
if (res.code == 0 && res.data) {
this.memberId = res.data;
this.type = 'member';
this.getMemberInfo();
} else {
this.$util.showToast({
title: res.message
})
}
this.flag = false;
}
});
}
},
verify() {
if (!this.memberData.mobile) {
this.$util.showToast({
title: '请输入会员手机号'
})
return false;
}
if (!/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/
.test(this.memberData.mobile)) {
this.$util.showToast({
title: '请输入正确的手机号码'
})
return false;
}
return true;
},
changeTime(e) {
this.memberData.birthday = e;
},
recharge() {
this.$util.redirectTo('/pages/recharge/index');
},
coupon() {
this.type = 'coupon';
this.memberCoupon = [];
this.$api.sendRequest({
url: '/cashier/storeapi/member/coupon',
data: {
member_id: this.info.member_id,
page: 1,
page_size: 0,
state: 1
},
success: res => {
if (res.code == 0 && res.data) {
this.memberCoupon = res.data.list;
}
}
});
},
searchMember() {
if (!/[\S]+/.test(this.searchText)) {
this.$util.showToast({
title: '请输入搜索内容'
})
return;
}
this.$api.sendRequest({
url: '/cashier/storeapi/member/searchmember',
data: {
search_text: this.searchText
},
success: res => {
if (res.code == 0 && res.data) {
this.memberId = res.data.member_id;
this.searchText = '';
this.getMemberInfo();
} else {
this.$util.showToast({
title: '没有查询到对应会员'
})
}
}
});
},
searchMemberByType(searchText, searchType) {
this.$api.sendRequest({
url: '/cashier/storeapi/member/searchmember',
data: {
search_text: searchText,
search_type: searchType
},
success: res => {
if (res.code == 0 && res.data) {
this.memberId = res.data.member_id;
this.searchText = '';
this.getMemberInfo();
} else {
this.$util.showToast({
title: '没有查询到对应会员'
})
}
}
});
},
getMemberInfo() {
this.$api.sendRequest({
url: '/cashier/storeapi/member/info',
data: {
member_id: this.memberId
},
success: res => {
if (res.code == 0 && res.data) {
this.$store.commit('setMemberInfo', res.data);
} else {
this.$util.showToast({
title: '未获取到会员信息'
})
}
}
})
},
/**
* 获取会员项目
*/
getMemberCard() {
if (this.memberCardData.page + 1 > this.memberCardData.total) return;
this.memberCardData.page += 1;
this.$api.sendRequest({
url: '/cardservice/storeapi/membercard/lists',
data: {
status: 1,
page: this.memberCardData.page,
member_id: this.info.member_id
},
success: res => {
if (res.code == 0) {
this.memberCardData.total = res.data.page_count || 1;
if (this.memberCardData.page == 1) {
this.memberCardData.list = [];
if (res.data.count) this.selectMemberCard(res.data.list[0], 0);
}
if (res.data.list.length) this.memberCardData.list = this.memberCardData.list
.concat(res.data.list);
}
}
})
},
/**
* 选择会员套餐
* @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) return;
let arr = [];
console.log(this.memberCardData.selected);
Object.keys(this.memberCardData.selected).forEach((key) => {
let data = this.memberCardData.selected[key];
data.card_index = this.memberCardData.index;
data.num = data.input_num;
arr.push(this.$util.deepClone(data));
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;
})
this.$emit('selectGoods', arr);
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 != 'timecard') {
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.$util.deepClone(this.memberCardData.currData);
if (data.card_type == 'commoncard') {
return currData.total_num > currData.total_use_num;
} else if (data.card_type != 'timecard') {
return data.num > data.use_num;
}
return true;
}
}
}