Commit d5895e04 by 谢中龙

标签列表,会员列表,会员详情

parent 45317ec1
...@@ -112,6 +112,7 @@ App({ ...@@ -112,6 +112,7 @@ App({
systemInfo: wx.getSystemInfoSync(), systemInfo: wx.getSystemInfoSync(),
ctx: envInfo.ctx, ctx: envInfo.ctx,
openCard: false, openCard: false,
appId: 'wxc3b64b09b1d3dfc2',
userNo: null, userNo: null,
storeId: '', storeId: '',
storeName: '', storeName: '',
......
...@@ -31,6 +31,17 @@ ...@@ -31,6 +31,17 @@
font-size: 24rpx; font-size: 24rpx;
} }
.no-more-data{
width: 100%;
height: auto;
padding: 20rpx 0;
display: flex;
color: #999999;
justify-content: center;
align-items: center;
font-size: 24rpx;
}
/* 按钮样式 */ /* 按钮样式 */
.btn { .btn {
width: 100%; width: 100%;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
"list": [] "list": []
}, },
"miniprogram": { "miniprogram": {
"current": 51, "current": 54,
"list": [ "list": [
{ {
"id": -1, "id": -1,
...@@ -401,10 +401,10 @@ ...@@ -401,10 +401,10 @@
"query": "" "query": ""
}, },
{ {
"id": 55, "id": 54,
"name": "会员详情", "name": "会员详情",
"pathName": "shoppingGuid/page/pages/userInfo/userInfo", "pathName": "shoppingGuid/page/pages/userInfo/userInfo",
"query": "" "query": "id=700000000013480"
}, },
{ {
"id": -1, "id": -1,
......
// shoppingGuid/page/pages/selectUsers/selectUsers.js // shoppingGuid/page/pages/selectUsers/selectUsers.js
const wxService = require('../../../../utils/wxService') const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
wxService.page({ wxService.page({
/** /**
...@@ -10,7 +11,14 @@ wxService.page({ ...@@ -10,7 +11,14 @@ wxService.page({
current: 1, current: 1,
isOpen : false, isOpen : false,
groups : [], groups : [],
tags : [] tags : [],
noTag : false,
noMoreData : true,
pagination : {
pageSize : 10,
pageNum : 1,
totalPage : 0
}
}, },
/** /**
...@@ -36,9 +44,11 @@ wxService.page({ ...@@ -36,9 +44,11 @@ wxService.page({
}, },
//跳转到标签下用户列表 //跳转到标签下用户列表
onTapToTagUserList(e){ onTapToTagUserList(e){
let id = 11; let item = e.currentTarget.dataset.item;
let tagId = item.id , groupId = item.groupId , type = item.type;
wx.navigateTo({ wx.navigateTo({
url: '/shoppingGuid/page/pages/userList/userList?id=' + id, url: '/shoppingGuid/page/pages/userList/userList?id=' + Integer.digit(tagId, 10, 64) + '&type=' + type +
'&groupId=' + Integer.digit(groupId, 10, 64) + '&name=' + item.name,
}); });
}, },
//tab 切换 //tab 切换
...@@ -55,22 +65,76 @@ wxService.page({ ...@@ -55,22 +65,76 @@ wxService.page({
navBar: this.data.navBar, navBar: this.data.navBar,
current: this.data.current current: this.data.current
}); });
this.getMemberTagGroups();
}, },
//获取标签分组 //获取标签分组
getMemberTagGroups(){ getMemberTagGroups(){
this.data.groups = [];
wxService.post(`/marketing/memberTagGroup/findPage?pageSize=10000&pageNo=1&type=${this.data.current}`).then(res => { wxService.post(`/marketing/memberTagGroup/findPage?pageSize=10000&pageNo=1&type=${this.data.current}`).then(res => {
console.log(res)
let groups = res.data.data.content ? res.data.data.content : []; let groups = res.data.data.content ? res.data.data.content : [];
groups.forEach(item => { groups.forEach(item => {
item.isActive = false; item.isActive = false;
}); });
this.data.groups = groups; this.data.groups = groups;
if (this.data.groups.length > 0){
//选中第一个
this.data.groups[0].isActive = true;
//获取分组的标签
this.getTagsList();
}
this.setData({ this.setData({
groups: this.data.groups groups: this.data.groups
}); });
}); });
}, },
//获取分组下的标签列表
getTagsList(){
wx.showLoading({
title: '加载中',
mask: true
});
let groupId = this.data.groups.filter(item => item.isActive)[0].id;
this.data.tags = [];
let pageSize = this.data.pagination.pageSize,
pageNum = this.data.pagination.pageNum;
wxService.post(`/marketing/shoppingguide/findPage?pageSize=${pageSize}&pageNo=${pageNum}`,{
groupId: groupId,
type : this.data.current
}).then(res => {
let list = res.data.data.content ? res.data.data.content : [];
this.data.tags = this.data.tags.concat(list);
this.data.pagination.totalPage = res.data.data.totalPages;
if (this.data.tags.length == 0){
this.data.noTag = true;
}
this.setData({
tags: this.data.tags,
noTag: this.data.noTag,
pagination: this.data.pagination,
noMoreData: true
},() => {
wx.hideLoading();
});
});
},
//选择group
onTapSelectGroup(e){
let index = e.currentTarget.dataset.index ,
item = e.currentTarget.dataset.item;
this.data.groups.forEach(item => {
item.isActive = false;
});
this.data.groups[index].isActive = true;
this.setData({
groups: this.data.groups,
isOpen : false,
});
this.getTagsList();
},
/** /**
* 页面相关事件处理函数--监听用户下拉动作 * 页面相关事件处理函数--监听用户下拉动作
...@@ -83,6 +147,17 @@ wxService.page({ ...@@ -83,6 +147,17 @@ wxService.page({
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */
onReachBottom: function () { onReachBottom: function () {
if(this.data.pagination.pageNum < this.data.pagination.totalPage){
this.data.pageNum ++;
this.getTagsList();
this.setData({
noMoreData: true
});
}
else{
this.setData({
noMoreData : false
});
}
}, },
}); });
\ No newline at end of file
<!--shoppingGuid/page/pages/selectUsers/selectUsers.wxml--> <!--shoppingGuid/page/pages/selectUsers/selectUsers.wxml-->
<view class='top-tags'> <view class='top-tags'>
<view class='search-box'> <!-- <view class='search-box'>
<view class='search'> <view class='search'>
<image src='/assets/imgs/shoppingGuide/search.png' mode='aspectFit'></image> <image src='/assets/imgs/shoppingGuide/search.png' mode='aspectFit'></image>
<input maxlength='20' placeholder='请输入标签名称搜索'></input> <input maxlength='20' placeholder='请输入标签名称搜索'></input>
</view> </view>
</view> </view> -->
<!-- tags --> <!-- tags -->
<view class='tags-types'> <view class='tags-types'>
<view class='tag-items {{item.isActive ? "active" : ""}}' <view class='tag-items {{item.isActive ? "active" : ""}}'
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
wx:for="{{groups}}" wx:for="{{groups}}"
wx:key="groups" wx:key="groups"
wx:for-index="idx" wx:for-index="idx"
bindtap='onTapSelectGroup'
data-index="{{idx}}" data-index="{{idx}}"
data-item="{{item}}" data-item="{{item}}"
wx:if="{{idx < 3}}" wx:if="{{idx < 3}}"
...@@ -35,11 +36,14 @@ ...@@ -35,11 +36,14 @@
</view> </view>
</view> </view>
<!-- --> <!-- -->
<!-- class='hover-items {{item.isActive ? "active" : ""}}' -->
<!-- 浮层 --> <!-- 浮层 -->
<view class='tag-hover {{isOpen ? "show" : ""}}'> <view class='tag-hover {{isOpen ? "show" : ""}}'>
<view class='hover-items {{item.isActive ? "active" : ""}}' <view
class='hover-items {{item.isActive ? "active" : ""}}'
wx:for="{{groups}}" wx:for="{{groups}}"
wx:key="allGroups" wx:key="allGroups"
bindtap='onTapSelectGroup'
wx:for-index="idx" wx:for-index="idx"
data-index="{{idx}}" data-index="{{idx}}"
data-item="{{item}}" data-item="{{item}}"
...@@ -47,56 +51,31 @@ ...@@ -47,56 +51,31 @@
</view> </view>
<!-- 具体的数据 --> <!-- 具体的数据 -->
<view class='list'> <view class='list'>
<view class='list-item' bindtap='onTapToTagUserList'> <view class='list-item'
<view class='lf-icon'> wx:for="{{tags}}"
<image src='/assets/imgs/shoppingGuide/icon_tag.png' mode='aspectFit'></image> wx:key="tags"
</view> wx:for-index="idx"
<view class='rg-info'> data-index="{{idx}}"
<view class='info-top'> data-item="{{item}}"
<label>新会员</label> wx:for-item="item"
<view> bindtap='onTapToTagUserList'>
<text>7</text>人
</view>
</view>
<view class='info-desc'>
<label>注册未消费会员</label>
</view>
</view>
</view>
<view class='list-item' bindtap='onTapToTagUserList'>
<view class='lf-icon'>
<image src='/assets/imgs/shoppingGuide/icon_tag.png' mode='aspectFit'></image>
</view>
<view class='rg-info'>
<view class='info-top'>
<label>新会员</label>
<view>
<text>7</text>人
</view>
</view>
<view class='info-desc'>
<label>注册未消费会员</label>
</view>
</view>
</view>
<view class='list-item' bindtap='onTapToTagUserList'>
<view class='lf-icon'> <view class='lf-icon'>
<image src='/assets/imgs/shoppingGuide/icon_tag.png' mode='aspectFit'></image> <image src='/assets/imgs/shoppingGuide/icon_tag.png' mode='aspectFit'></image>
</view> </view>
<view class='rg-info'> <view class='rg-info'>
<view class='info-top'> <view class='info-top'>
<label>新会员</label> <label>{{item.name}}</label>
<view> <view><text>{{item.memberCount}}</text>人</view>
<text>7</text>人
</view>
</view> </view>
<view class='info-desc'> <view class='info-desc'>
<label>注册未消费会员</label> <label>{{item.desc}}</label>
</view> </view>
</view> </view>
</view> </view>
<!-- empty -->
<!-- <view class='empty' wx:if="{{noTag}}">暂无数据~</view> -->
<!-- 沒有更多數據啦 -->
<view class='no-more-data' wx:if="{{!noMoreData}}">--- 到底啦 ---</view>
</view> </view>
/* shoppingGuid/page/pages/selectUsers/selectUsers.wxss */ /* shoppingGuid/page/pages/selectUsers/selectUsers.wxss */
page{ page{
background: #f2f2f2; background: #f2f2f2;
padding-top: 300rpx; padding-top: 196rpx;
box-sizing: border-box; box-sizing: border-box;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
font-size: 28rpx; font-size: 28rpx;
...@@ -99,6 +99,7 @@ view{ ...@@ -99,6 +99,7 @@ view{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 28rpx;
} }
.tags .flex .lf{ .tags .flex .lf{
...@@ -133,7 +134,7 @@ view{ ...@@ -133,7 +134,7 @@ view{
width: 100%; width: 100%;
max-height: 400rpx; max-height: 400rpx;
background: #ffffff; background: #ffffff;
top: 298rpx; top: 190rpx;
border-top: solid 2rpx #ddd; border-top: solid 2rpx #ddd;
border-bottom: solid 2rpx #ddd; border-bottom: solid 2rpx #ddd;
transition: all 0.3s; transition: all 0.3s;
...@@ -162,7 +163,7 @@ view{ ...@@ -162,7 +163,7 @@ view{
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.tag-hover .hover-items.avtive{ .tag-hover .hover-items.active{
color: #0091FF ; color: #0091FF ;
background-color: rgba(0, 145, 255, 0.1); background-color: rgba(0, 145, 255, 0.1);
} }
......
...@@ -8,65 +8,352 @@ wxService.page({ ...@@ -8,65 +8,352 @@ wxService.page({
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
memberId : null,
navBar: [ navBar: [
{ name: '自动标签', type: 1, isActive: true }, { name: '会员标签', type: 1, isActive: true },
{ name: '手动标签', type: 2, isActive: false }, // { name: '手动标签', type: 2, isActive: false },
{ name: '订单信息', type: 3, isActive: false }, { name: '订单信息', type: 3, isActive: false },
{ name: '退单信息', type: 4, isActive: false }, { name: '退单信息', type: 4, isActive: false },
{ name: '优惠券', type: 5, isActive: false }, { name: '优惠券', type: 5, isActive: false },
{ name: '积分', type: 6, isActive: false }, { name: '积分', type: 6, isActive: false },
{ name: '经验值', type: 7, isActive: false },
], ],
current: 1, current: 1,
onlineOrderStatus: [{ name: '线上订单', type: 1, isActive: true }, { name: '线下订单', type: 2, isActive: false }], onlineOrderStatus: [{ name: '线上订单', type: 1, isActive: true }, { name: '线下订单', type: 2, isActive: false }],
returnOrderStatus: [{ name: '线上订单', type: 1, isActive: true },{ name: '线下订单', type: 2, isActive: false }], returnOrderStatus: [{ name: '线上订单', type: 1, isActive: true },{ name: '线下订单', type: 2, isActive: false }],
memberInfo: null memberInfo: {},
guider : {},
memberTags : [],
orderList : [],
returnOrderList : [],
coupons : [],
pointHistory : [],
expHistory : [],
total : {
totalConsume : 0, //累计消费
totalPoint : 0,//当前积分
totalExp : 0,//当前经验值
}
}, },
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function (options) {
let memberId = options.id ;
this.data.memberId = memberId;
this.getMemberFind(memberId);
let currentUserInfo = wx.getStorageSync('_baseUserInfo');
let userInfo = wx.getStorageSync('_userInfo');
if (currentUserInfo.member){
if (!currentUserInfo.member.name){
currentUserInfo.member.name = userInfo.nickName;
}
}
if (currentUserInfo){
this.setData({
guider: currentUserInfo,
})
}
//获取会员下标签
this.getMemberTags(memberId);
//获取订单列表
this.getUserOrderList(memberId);
//获取线上退单
this.getOnlineReturnOrderList(memberId);
//获取优惠券列表
this.getMemberCoupon(memberId);
//获取会员积分
this.getMemberPointHistory(memberId);
//获取经验值流水
this.getMemberExpHistory(memberId);
//获取会员经验值
this.getMemberExp(memberId);
//获取会员积分
this.getMemberPoint(memberId);
//获取用户总消费额
this.getMemberTotalConsumeAmount(memberId);
}, },
/** /**
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function () {},
this.getMemberFind() // 会员详情 //获取用户总消费额
getMemberTotalConsumeAmount(memberId){
},
//获取优惠券信息
getMemberCoupon(memberId){
wxService.post(`/coupon/coupon/listWithMember?number=10000&size=1`, {
memberId: memberId,
}).then(res => {
if (!res) return false;
let list = res.data.data.content ? res.data.data.content : [];
const canUse = 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png',
cantUse = 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg_cantUse.png';
list.forEach(item => {
item.bg = item.status == 1 ? canUse : cantUse;
});
this.setData({
coupons : list,
})
})
},
//获取积分
getMemberPointHistory(memberId){
wxService.post(`/member/memberPointLog/findPage?pageSize=10000&pageNo=1`,{
memberId: memberId
}).then(res => {
if(!res) return ;
let list = res.data.data.content ? res.data.data.content : [];
this.setData({
pointHistory: list
})
})
},
//获取会员当前积分
getMemberPoint(memberId){
wxService.get(`/member/memberPoint/getMemberPointInfo?memberId=${memberId}`).then(res => {
if(!res) return ;
let point = res.data.data ? res.data.data.point : 0;
this.data.total.totalPoint = point;
this.setData({
total: this.data.total
});
});
}, },
getMemberFind() { //获取经验值流水
const baseUserInfo = wx.getStorageSync('_baseUserInfo') getMemberExpHistory(memberId){
const { memberId,member } = baseUserInfo wxService.post(`/member/exp/queryExpDetail?pageNum=1&pageSize=10000`,{
memberId: memberId,
}).then(res => {
if(!res) return ;
let list = res.data.data.content ? res.data.data.content : [];
this.setData({
expHistory : list
});
});
},
//获取会员经验值
getMemberExp(memberId){
wxService.post(`/member/exp/byMemberIdQueryExp?memberId=${memberId}`).then(res => {
if(!res) return ;
let obj = res.data.data;
this.data.total.totalExp = obj.exp ? obj.exp : 0;
this.setData({
total: this.data.total
})
})
},
//获取会员详情
getMemberFind(memberId) {
wx.showLoading({ wx.showLoading({
title: '加载中' title: '加载中'
}) });
const memberInfoFindDto = {
memberId,
mobile: member.mobile,
cardNoOnline: '',
alipayUserId: '',
cardNoOffline: '',
unionid: member.unionid,
openid: member.openid,
} wxService.post(`/member/find`, {
wxService.post(`/member/find`, memberInfoFindDto).then(res => { memberId: memberId
}).then(res => {
if (!res) return false if (!res) return false
const { result, data } = res && res.data || res && res.result const { result, data } = res && res.data || res && res.result
if (result == 0) { if (result == 0) {
wx.hideLoading() wx.hideLoading()
data.member.age = utils.getAge(data.member.birthday) data.member.age = utils.getAge(data.member.birthday)
data.member.sex = data.member.sex ? data.member.sex : '保密';
this.setData({ this.setData({
memberInfo: data.member memberInfo: data.member
}) })
}
})
},
//获取会员下标签
getMemberTags(memberId){
wx.showLoading({
title: '加载中'
});
wxService.get(`/marketing/memberTagBind/getByMemberId/${memberId}`).then(res => {
if (!res) return false
const { result, data } = res.data
if (result == 0) {
wx.hideLoading();
this.data.memberTags = data ? data : [];
this.setData({
memberTags : this.data.memberTags
});
}
}).finally(() => {})
},
//获取订单信息
getUserOrderList(memberId){
//获取线上订单
wxService.post(`/sale/trade/buyer/history?pageSize=10000&pageNum=1`,{
memberId : memberId,
}).then(res => {
if(!res) return ;
let list = res.data.data ? res.data.data : [];
let arr = list.map(item => {
let statusText = item.status == 'N' ? '待支付' : (
item.status == 'P' ? '待发货' : (
item.status == 'D' ? '待收货' : (
item.status == 'R' ? '已收货' : '已取消'
)
)
);
let products = item.skuVOList.map(p => {
return {
productName: p.productName,
productId: p.productId,
productCode: p.productCode,
image: p.skuImgUrl ? p.skuImgUrl : 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg',
skuId: p.skuId,
skuCode: p.skuCode,
} }
}) })
return {
orderNo: item.id,
statusText: statusText,
products: products,
count: item.skuCount,
payMoney: item.payAmount
}
});
this.setData({
orderList: arr,
});
})
},
//获取线下订单
getOfflineOrder(memberId){
wxService.post(`/sale/order/list?pageSize=10000&pageNo=1`, {
memberId: memberId,
storeId: [],
consumeStartTime: '',
consumeEndTime: ''
}).then(res => {
if (!res) return;
let list = res.data.data.content ? res.data.data.content : [];
let arr = list.map(item => {
let statusText = '已完成';
let products = item.productInfo.map(p => {
return {
productName: p.productName,
productId: p.productId,
productCode: p.productCode,
image: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg',
skuId: p.skuId,
skuCode: p.skuCode,
}
})
return {
orderNo: item.orderNo,
statusText: statusText,
products: products,
count: item.productInfo.length,
payMoney: parseFloat(item.realPayMoney/100).toFixed(2)
}
});
this.setData({
orderList: arr,
});
})
}, },
// 获取线上退单
getOnlineReturnOrderList(memberId){
wxService.post(`/sale/refund/buyer/history?pageSize=10000&pageNum=1`, {
memberId: memberId,
}).then(res => {
if (!res) return;
let list = res.data.data ? res.data.data : [];
let arr = list.map(item => {
let statusText = item.status == 'N' ? '待审核' : (
item.status == 'A' ? '已审核' : (
item.status == 'RJ' ? '已拒绝' : (
item.status == 'R' ? '退货已发' : (
item.status == 'D' ? '已完成' : '已取消'
)
)
)
);
let count = 0;
let products = item.skuList.map(p => {
count = count + p.count;
return {
image: p.skuImgUrl ? p.skuImgUrl : 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg',
skuId: p.skuId,
}
})
return {
orderNo: item.id,
statusText: statusText,
products: products,
count: count,
payMoney: item.amount
}
});
this.setData({
returnOrderList: arr,
});
})
},
//获取线下退单
getOfflineReturnOrderList(memberId){
wxService.post(`/sale/orderReturn/findPage?pageSize=10000&pageNo=1`, {
memberId: memberId,
}).then(res => {
if (!res) return;
let list = res.data.data.content ? res.data.data.content : [];
let arr = list.map(item => {
let statusText = '已完成';
let count = 0;
let products = item.productInfo.map(p => {
count = count + p.refundCount;
return {
productId: p.productId,
productCode: p.productCode,
image: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg',
skuId: p.skuId,
skuCode: p.skuCode,
}
})
return {
orderNo: item.refundNo,
statusText: statusText,
products: products,
count: count,
payMoney: parseFloat(item.refundMoney / 100).toFixed(2)
}
});
this.setData({
returnOrderList: arr,
});
})
},
//打电话
handelPhoneCall(e) { handelPhoneCall(e) {
const {phone} = e.currentTarget.dataset const {phone} = e.currentTarget.dataset;
if(!phone){
wx.showToast({
title: '暂无手机号',
icon : 'none'
});
return ;
}
wx.makePhoneCall({ wx.makePhoneCall({
phoneNumber: phone phoneNumber: phone
}) })
...@@ -101,6 +388,15 @@ wxService.page({ ...@@ -101,6 +388,15 @@ wxService.page({
this.setData({ this.setData({
onlineOrderStatus: this.data.onlineOrderStatus, onlineOrderStatus: this.data.onlineOrderStatus,
}); });
let type = this.data.onlineOrderStatus[index].type ;
this.data.orderList = [];
if(type == 1 ){ //线上订单
this.getUserOrderList(this.data.memberId);
}
else{
this.getOfflineOrder(this.data.memberId);
}
}, },
//退单 //退单
onTapChangeReturnOrderStatus(e){ onTapChangeReturnOrderStatus(e){
...@@ -115,6 +411,16 @@ wxService.page({ ...@@ -115,6 +411,16 @@ wxService.page({
this.setData({ this.setData({
returnOrderStatus: this.data.returnOrderStatus, returnOrderStatus: this.data.returnOrderStatus,
}); });
let type = this.data.returnOrderStatus[index].type;
this.data.returnOrderList = [];
if (type == 1) { //线上订单
this.getOnlineReturnOrderList(this.data.memberId);
}
else {
this.getOfflineReturnOrderList(this.data.memberId);
}
}, },
/** /**
......
...@@ -7,15 +7,17 @@ ...@@ -7,15 +7,17 @@
<view class='u-rg'> <view class='u-rg'>
<view class='u-items'> <view class='u-items'>
<view class='u-item-lf'> <view class='u-item-lf'>
<label>{{memberInfo.mobile}}</label> <label>{{memberInfo.name}}</label>
<image src='/assets/imgs/shoppingGuide/phone.png' data-phone="{{memberInfo.mobile}}" bindtap="handelPhoneCall" mode='widthFix'></image> <image src='/assets/imgs/shoppingGuide/phone.png'
data-phone="{{memberInfo.mobile}}"
bindtap="handelPhoneCall" mode='widthFix'></image>
</view> </view>
<view class='u-item-rg' data-phone="{{memberInfo.mobile}}" bindtap="handelPhoneCall">立即联系</view> <view class='u-item-rg' data-phone="{{memberInfo.mobile}}" bindtap="handelPhoneCall">立即联系</view>
</view> </view>
<view class='u-items'> <view class='u-items'>
<view class='u-item-lf'> <view class='u-item-lf'>
<label class='color-pink mg-r-20'>{{memberInfo.sex}}</label> <label class='color-pink mg-r-20'>{{memberInfo.sex}}</label>
<text>{{memberInfo.age}}</text> <text>{{memberInfo.age}}</text>
</view> </view>
</view> </view>
<view class='u-items'> <view class='u-items'>
...@@ -36,22 +38,22 @@ ...@@ -36,22 +38,22 @@
<view class='guider'> <view class='guider'>
<view class='header'> <view class='header'>
<label>所属导购:</label> <label>所属导购:</label>
<text>张三三</text> <text>{{guider.member.name ? guider.member.name : "暂无名称"}}</text>
</view> </view>
<view class='month'> <view class='month'>
<view class='month-data'> <view class='month-data'>
<view class='data-item'> <view class='data-item'>
<text class='data-item-title'>累计消费(元)</text> <text class='data-item-title'>累计消费(元)</text>
<text class='data-item-number'>11356.59</text> <text class='data-item-number'>{{total.totalConsume}}</text>
</view> </view>
<view class='data-item'> <view class='data-item'>
<text class='data-item-title'>当前积分</text> <text class='data-item-title'>当前积分</text>
<text class='data-item-number'>21132</text> <text class='data-item-number'>{{total.totalPoint}}</text>
</view> </view>
<view class='data-item'> <view class='data-item'>
<text class='data-item-title'>当前经验值</text> <text class='data-item-title'>当前经验值</text>
<text class='data-item-number'>228</text> <text class='data-item-number'>{{total.totalExp}}</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -69,41 +71,20 @@ ...@@ -69,41 +71,20 @@
>{{item.name}}</view> >{{item.name}}</view>
</view> </view>
<!-- 自动标签 --> <!-- 会员标签 -->
<view class='auto-tips' wx:if="{{current == 1}}"> <view class='auto-tips' wx:if="{{current == 1}}">
<view class='tips-groups'> <view class='tips-groups'>
<view class='tip-group-name'>标签分组名称</view> <!-- <view class='tip-group-name'>标签分组名称</view> -->
<view class='tips'>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
</view>
</view>
<view class='tips-groups'>
<view class='tip-group-name'>标签分组名称</view>
<view class='tips'>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
<view class='tips-item'>标签名称</view>
</view>
</view>
<view class='tips-groups'>
<view class='tip-group-name'>标签分组名称</view>
<view class='tips'> <view class='tips'>
<view class='tips-item'>标签名称</view> <view class='tips-item'
<view class='tips-item'>标签名称</view> wx:for="{{memberTags}}"
<view class='tips-item'>标签名称</view> wx:key="memberTag"
<view class='tips-item'>标签名称</view> wx:for-item="item">{{item.tag.name}}</view>
<view class='tips-item'>标签名称</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 手动标签 --> <!-- 手动标签 -->
<view class='auto-tips' wx:if="{{current == 2}}"> <!-- <view class='auto-tips' wx:if="{{current == 2}}">
<view class='tips-groups'> <view class='tips-groups'>
<view class='tip-group-name'>标签分组名称</view> <view class='tip-group-name'>标签分组名称</view>
<view class='tips'> <view class='tips'>
...@@ -134,7 +115,7 @@ ...@@ -134,7 +115,7 @@
<view class='tips-item'>标签名称</view> <view class='tips-item'>标签名称</view>
</view> </view>
</view> </view>
</view> </view> -->
<!-- 订单信息 --> <!-- 订单信息 -->
<view wx:if="{{current == 3}}"> <view wx:if="{{current == 3}}">
<view class='order-filter'> <view class='order-filter'>
...@@ -151,48 +132,29 @@ ...@@ -151,48 +132,29 @@
<!-- 订单列表信息 --> <!-- 订单列表信息 -->
<view class='list online-order'> <view class='list online-order'>
<!-- order item --> <!-- order item -->
<view class='order-item'> <view class='order-item'
wx:for="{{orderList}}"
wx:key="onLineOrderList"
wx:for-item="item">
<view class='order-status'> <view class='order-status'>
<text>订单号 7878327513490</text> <text>订单号 {{item.orderNo}}</text>
<text>待付款</text> <text>{{item.statusText}}</text>
</view> </view>
<view class='products-list'> <view class='products-list'>
<view class='pro-item'> <view class='pro-item' wx:for="{{item.products}}" wx:key="product" wx:for-item="pro">
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image> <image mode='aspectFit' src='{{pro.image}}'></image>
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view> </view>
</view> </view>
<view class='order-pro-info'> <view class='order-pro-info'>
<label>共5件商品</label> <label>共{{item.count}}件商品</label>
<view> <view>
实付 <label class='theme-text-color bolder'>¥385</label> 实付 <label class='theme-text-color bolder'>¥{{item.payMoney}}</label>
</view>
</view> </view>
</view> </view>
<view class='order-item'>
<view class='order-status'>
<text>订单号 7878327513490</text>
<text>待付款</text>
</view>
<view class='products-list'>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view>
</view>
<view class='order-pro-info'>
<label>共5件商品</label>
<view>
实付 <label class='theme-text-color bolder'>¥385</label>
</view>
</view> </view>
<!-- 空 -->
<view class='empty' wx:if="{{orderList.length == 0}}">暂无数据~</view>
</view> </view>
</view>
</view> </view>
<!-- 退单信息 --> <!-- 退单信息 -->
<view wx:if="{{current == 4}}"> <view wx:if="{{current == 4}}">
...@@ -210,90 +172,59 @@ ...@@ -210,90 +172,59 @@
<!-- 退单列表信息 --> <!-- 退单列表信息 -->
<view class='list online-order'> <view class='list online-order'>
<!-- order item --> <!-- order item -->
<view class='order-item'> <view class='order-item'
wx:for="{{returnOrderList}}"
wx:key="returnOrder"
wx:for-item="item">
<view class='order-status'> <view class='order-status'>
<text>订单号 7878327513490</text> <text>退单号 {{item.orderNo}}</text>
<text>待付款</text> <text>{{item.statusText}}</text>
</view> </view>
<view class='products-list'> <view class='products-list'>
<view class='pro-item'> <view class='pro-item' wx:for="{{item.products}}" wx:key="returnProduct" wx:for-item="returnPro">
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image> <image mode='aspectFit' src='{{returnPro.image}}'></image>
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view> </view>
</view> </view>
<view class='order-pro-info'> <view class='order-pro-info'>
<label>共5件商品</label> <label>共{{item.count}}件商品</label>
<view> <view>
实付 <label class='theme-text-color bolder'>¥385</label> 实付 <label class='theme-text-color bolder'>¥{{item.payMoney}}</label>
</view>
</view>
</view>
<view class='order-item'>
<view class='order-status'>
<text>订单号 7878327513490</text>
<text>待付款</text>
</view>
<view class='products-list'>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg'></image>
</view>
</view>
<view class='order-pro-info'>
<label>共5件商品</label>
<view>
实付 <label class='theme-text-color bolder'>¥385</label>
</view> </view>
</view> </view>
</view> </view>
<!-- 空 -->
<view class='empty' wx:if="{{returnOrderList.length == 0}}">暂无数据~</view>
</view> </view>
</view> </view>
<!-- 优惠券 --> <!-- 优惠券 -->
<view class='coupons' wx:if="{{current == 5}}"> <view class='coupons' wx:if="{{current == 5}}">
<!-- items --> <!-- items -->
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png)'> <view class='coupon-item'
<view class='coupon-item-lf'> wx:for="{{coupons}}"
<view class='coupon-price'> wx:key="coupon"
¥ <text>5</text> wx:for-item="item"
</view> style='background-image:url({{item.bg}})'>
<view>抵用券</view>
</view>
<view class='coupon-item-rg'>
<!-- cant-use -->
<view class='qrcode can-use'>可使用</view>
<view class='coupon-title'>满10减5抵用券</view>
<view class='op'>
<view class='text-btn'>有效期: 2019-03-24 至 2019-06-23</view>
</view>
<view class='op'>
<view class='text-btn'>拼团及特殊商品不可用</view>
</view>
</view>
</view>
<!-- items -->
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg_cantUse.png)'>
<view class='coupon-item-lf'> <view class='coupon-item-lf'>
<view class='coupon-price cant-use'> <!-- <view class='coupon-price'>
¥ <text>5</text> ¥ <text>5</text>
</view> </view>
<view class='cant-use'>抵用券</view> <view>抵用券</view> -->
</view> </view>
<view class='coupon-item-rg'> <view class='coupon-item-rg'>
<!-- cant-use --> <!-- cant-use -->
<view class='qrcode cant-use'>已过期</view> <view class='qrcode {{item.status == 1 ? "can-use" : "cant-use"}}'>{{item.statusDesc}}</view>
<view class='coupon-title cant-use'>满10减5抵用券</view> <view class='coupon-title {{item.status == 1 ? "can-use" : "cant-use"}}'>{{item.title}}</view>
<view class='op'> <view class='op'>
<view class='text-btn'>有效期: 2019-03-24 至 2019-06-23</view> <view class='text-btn'>有效期: {{item.startTime}} 至 {{item.endTime}}</view>
</view> </view>
<view class='op'> <view class='op'>
<view class='text-btn '>拼团及特殊商品不可用</view> <view class='text-btn'>{{item.useChannelDesc}}</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 空 -->
<view class='empty' wx:if="{{coupons.length == 0}}">暂无数据~</view>
</view> </view>
<!-- 积分 --> <!-- 积分 -->
<view class='integrate-list' wx:if="{{current == 6}}"> <view class='integrate-list' wx:if="{{current == 6}}">
...@@ -302,26 +233,32 @@ ...@@ -302,26 +233,32 @@
<view class='line'></view> <view class='line'></view>
</view> --> </view> -->
<view class='rg-list'> <view class='rg-list'>
<view class='rg-list-item'> <view class='rg-list-item' wx:for="{{pointHistory}}" wx:key="point" wx:for-item="item">
<view class='integrate-type'> <view class='integrate-type'>
<view class='title'>购物送积分</view> <view class='title'>{{item.changeTypeDesc}}</view>
<view>2019-12-11 14:23:32</view> <view>{{item.changeTime}}</view>
</view>
<view class='time'>+30</view>
</view> </view>
<view class='rg-list-item'> <view class='time'>{{item.operation == 1 ? "+" : "-"}}{{item.changeValue}}</view>
<view class='integrate-type'>
<view class='title'>购物送积分</view>
<view>2019-12-11 14:23:32</view>
</view> </view>
<view class='time'>+30</view> <!-- 空 -->
<view class='empty' wx:if="{{pointHistory.length == 0}}">暂无数据~</view>
</view> </view>
<view class='rg-list-item'> </view>
<!-- 经验值 -->
<view class='integrate-list' wx:if="{{current == 7}}">
<!-- <view class='lf-history'>
<label></label>
<view class='line'></view>
</view> -->
<view class='rg-list'>
<view class='rg-list-item' wx:for="{{expHistory}}" wx:key="exp" wx:for-item="item">
<view class='integrate-type'> <view class='integrate-type'>
<view class='title'>购物送积分</view> <view class='title'>{{item.sourceName}}</view>
<view>2019-12-11 14:23:32</view> <view>{{item.createTime}}</view>
</view> </view>
<view class='time'>+30</view> <view class='time'>{{item.type == 0 ? "-" : "+"}}{{item.exp}}</view>
</view> </view>
<!-- 空 -->
<view class='empty' wx:if="{{expHistory.length == 0}}">暂无数据~</view>
</view> </view>
</view> </view>
\ No newline at end of file
// shoppingGuid/page/pages/userList/userList.js // shoppingGuid/page/pages/userList/userList.js
const app = getApp() const app = getApp()
const wxService = require('../../../../utils/wxService') const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
wxService.page({ wxService.page({
/** /**
* 页面的初始数据 * 页面的初始数据
*/ */
data: { data: {
list : [], list : [],
pageSize: 10, name : '',
pageNo: 1,
totalPages: 0
}, },
/** /**
* 生命周期函数--监听页面加载 * 生命周期函数--监听页面加载
*/ */
onLoad: function (options) { onLoad: function (options) {
console.log(options)
let tagId = Integer.digit(options.id,64,10),
groupId = Integer.digit(options.groupId, 64, 10),
type = options.type,
name = options.name;
}, this.setData({
name : name
/** });
* 生命周期函数--监听页面初次渲染完成 this.getMemberList(tagId, groupId, type);
*/
onReady: function () {
}, },
...@@ -31,48 +32,40 @@ wxService.page({ ...@@ -31,48 +32,40 @@ wxService.page({
* 生命周期函数--监听页面显示 * 生命周期函数--监听页面显示
*/ */
onShow: function () { onShow: function () {
const {pageSize, pageNo,current} = this.data
this.getTaskPage(pageSize, pageNo,current)
}, },
getTaskPage(pageSize, pageNo,current) { // 1 销售任务 2 招募任务 // 获取标签下会员
getMemberList(tagId, groupId, type){
wx.showLoading({ wx.showLoading({
title: '加载中' title: '加载中'
}) });
const query = { let query = {
// pageSize, tagId,
// pageNo, groupId,
type
} }
wxService.post(`/marketing/shoppingguide/tag/member?pageSize=${pageSize}&pageNo=${pageNo}`,query).then(res => { wxService.post(`/marketing/shoppingguide/tag/member`, query).then(res => {
if (res) { if (res) {
const { result, data } = res.data const { result, data } = res.data
if (result == 0) { if (result == 0) {
wx.hideLoading() wx.hideLoading()
data.content.forEach(item=>{ this.data.list = data;
let curStart = new Date(item.task.startTime)
let curEnd = new Date(item.task.endTime)
item.task.startTime = `${curStart.getMonth()}${curStart.getDay()}日`
item.task.endTime = `${curEnd.getMonth()}${curEnd.getDay()}日`
})
this.setData({ this.setData({
list: pageNo == 1? [...data.content]: [...this.data.list,...data.content], list: this.data.list,
totalPages: data.totalPages });
})
} }
} }
}) })
}, },
/** //跳转到会员详情
* 生命周期函数--监听页面隐藏 onTapToMemberInfo(e){
*/ let item = e.currentTarget.dataset.item;
onHide: function () { wx.navigateTo({
url: '/shoppingGuid/page/pages/userInfo/userInfo?id=' + item.id,
});
}, },
//回访
/** onTapRecall(e){
* 生命周期函数--监听页面卸载 let item = e.currentTarget.dataset.item;
*/
onUnload: function () {
}, },
/** /**
...@@ -86,14 +79,7 @@ wxService.page({ ...@@ -86,14 +79,7 @@ wxService.page({
* 页面上拉触底事件的处理函数 * 页面上拉触底事件的处理函数
*/ */
onReachBottom: function () { onReachBottom: function () {
if(pageNo < totalPages) {
this.setData({
pageNo: this.data.pageNo + 1,
},()=>{
const {pageSize, pageNo,current} = this.data
this.getTaskPage(pageSize, pageNo,current)
})
}
}, },
/** /**
......
...@@ -2,20 +2,22 @@ ...@@ -2,20 +2,22 @@
<view class='tag-name'> <view class='tag-name'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix' /> <image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix' />
<label>标签名称</label> <label>标签名称</label>
<view class='tag'>7天内新消费2次</view> <view class='tag'>{{name}}</view>
</view> </view>
<!-- 列表 --> <!-- 列表 -->
<view class='list' wx:if="{{list.length}}"> <view class='list' wx:if="{{list.length}}">
<block wx:for="{{list}}" wx:key="{{index}}" wx:for-item="item"> <block wx:for="{{list}}" wx:key="{{index}}" wx:for-item="item">
<view class='item' bindtap='onTapToMemberInfo'> <view class='item'>
<view class='u-info'> <view class='u-info' data-item="{{item}}" bindtap='onTapToMemberInfo'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit' /> <image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit' />
<text>139xxxx2453</text> <text>{{item.name}}</text>
</view> </view>
<view class='item-btn'>立即回访</view> <view class='item-btn' data-item="{{item}}" bindtap='onTapRecall'>立即回访</view>
</view> </view>
</block> </block>
</view> </view>
<view class="no-list" wx:else>暂无榜单</view> <!-- empty -->
<view class='empty' wx:else>数据加载中..</view>
// shoppingGuid/page/pages/welfare/welfare.js // shoppingGuid/page/pages/welfare/welfare.js
const wxService = require('../../../../utils/wxService') const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
var app = getApp()
wxService.page({ wxService.page({
/** /**
...@@ -101,10 +103,54 @@ wxService.page({ ...@@ -101,10 +103,54 @@ wxService.page({
//立即推荐商品给用户 //立即推荐商品给用户
onTapToRecommandProduct(e){ onTapToRecommandProduct(e){
let item = e.currentTarget.dataset.item; let item = e.currentTarget.dataset.item;
let id = item.id; // 生成触点对象
// wx.navigateTo({ let content = {
// url: '/shoppingGuid/page/pages/selectUsers/selectUsers?id=' + id + '&type=product', title: item.productName,
id: item.productId,
url: item.productImgUrl
}
let tentacleInfo = {
content: JSON.stringify(content),
contentId: item.productId,
contentType: app.globalData.contants.SHARE_TYPE.PRODUCT_DETAIL, //内容类型
title: item.productName, //标题
type: 3// 1:门店,2:员工(暂时不做),3:会员,4:第三方外部渠道,5:智能营销
}
// wxService.getTentacleContent(tentacleInfo).then(res => {
// if (res && res.id) {
// let tentacleId = res.id;
// let inner_id = Integer.digit(item.productId, 10, 64);
// let inner_tentacleId = Integer.digit(tentacleId, 10, 64);
// var path = 'pages/productDetail/productDetail' + '?i=' + inner_id + '&t=' + inner_tentacleId;
// //打开企业微信通讯录选择会员
// this.openQyContact(item,path);
// }
// }); // });
// 先不管触点 测试调用企业微信接口
let inner_id = Integer.digit(item.productId, 10, 64);
var path = 'pages/productDetail/productDetail' + '?i=' + inner_id;
this.openQyContact(item, path);
},
//打開企業微信通訊錄
openQyContact(item,path){
//选择企业通讯录中的数据
wx.qy.shareToExternalContact({
appid: app.globalData.appId,//小程序的appid
title: item.productName, //小程序消息的title
imgUrl: item.productImgUrl,//小程序消息的封面图
page: path, //小程序消息打开后的路径
success: function (res) {
//todo:
},
fail: function (err) {
console.log('error---------------', err);
}
});
}, },
//去商城 //去商城
onTapToMall(){ onTapToMall(){
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment