Commit 17db4fec by 赵雅纹

Merge branch 'dev_7.2.0' into feature-zyw-7.2.0

parents a9b7ad36 a40e3013
......@@ -112,6 +112,7 @@ App({
systemInfo: wx.getSystemInfoSync(),
ctx: envInfo.ctx,
openCard: false,
appId: 'wxc3b64b09b1d3dfc2',
userNo: null,
storeId: '',
storeName: '',
......
......@@ -73,7 +73,9 @@
"pages/selectUsers/selectUsers",
"pages/userInfo/userInfo",
"pages/qrcode/qrcode",
"pages/userList/userList"
"pages/userList/userList",
"pages/couponQrcode/couponQrcode",
"pages/welcomGuider/welcomGuider"
]
}
],
......@@ -118,5 +120,11 @@
"wxc3b64b09b1d3dfc2",
"wx857ea77f4f7f4f34"
],
"plugins": {
"contactPlugin": {
"version": "1.0.12",
"provider": "wx104a1a20c3f81ec2"
}
},
"sitemapLocation": "sitemap81.json"
}
\ No newline at end of file
......@@ -21,6 +21,27 @@
color: #cb3c3c;
}
.empty{
width: 100%;
height: 200rpx;
display: flex;
color: #999999;
justify-content: center;
align-items: center;
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 {
width: 100%;
......
......@@ -5,7 +5,7 @@
<view class="">
<image
class="img"
src="./../../assets/imgs/7_1_0/icon.png"
src="https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/icon.png"
mode="widthFix"
lazy-load="false"
binderror=""
......
......@@ -37,17 +37,16 @@ Component({
const { couponList } = this.data
if (couponList.length) {
couponList.map(coupon => {
console.log('22222', coupon)
coupon.couponDTOS.forEach(item => {
item.checked = false
couponList[0].couponDTOS[0] ? couponList[0].couponDTOS[0].checked = true : item[0].checked = true
item.couponDiscount = coupon.couponDiscount
item.title = coupon.couponSettingDTO.title
item.type = coupon.couponSettingDTO.type
item.faceAmount = coupon.couponSettingDTO.faceAmount
item.takeCouponBgimg = coupon.couponSettingDetailDTO.style.takeCouponBgimg
// notice 格式
item.newNotice = JSON.parse(item.notice)
console.log('11111', item)
item.newNotice = item && item.notice ? JSON.parse(item.notice) : ''
for (let i in item.newNotice) {
if (item.newNotice[i].type == 1) {
item.newNotice[i].value = item.startTime.substring(0, 10) + ' 至 ' + item.endTime.substring(0, 10)
......@@ -55,7 +54,7 @@ Component({
}
})
})
wxService.nextTick(() => {
this.setData({
newConponOrderList: couponList
......@@ -70,18 +69,28 @@ Component({
},
selectCoupon(e) {
// 1 抵用券 2 折扣券
const { id, index, type, amount, couponDiscount} = e.currentTarget.dataset
const { id, index, sid, checked, type, amount, couponDiscount} = e.currentTarget.dataset
const { newConponOrderList } = this.data
newConponOrderList.forEach(item => {
item.couponDTOS.forEach(coupon => coupon.checked = coupon.id == id ? true : false )
// item.couponDTOS.forEach(coupon => coupon.checked = coupon.id == id ? true : false )
item.couponDTOS.forEach(coupon => {
if(coupon.checked) {
coupon.checked = coupon.checked ? false : true
} else {
coupon.checked = coupon.id == id ? true : false
}
} )
})
let params = {
type,
id,
faceAmount: amount,
couponDiscount: couponDiscount
let params = null
if(!checked) {
params = {
type,
id,
faceAmount: amount,
couponDiscount: couponDiscount
}
}
wxService.nextTick(() => {
......@@ -91,7 +100,7 @@ Component({
this.setData({
newConponOrderList
}, () => {
this.hidePopup()
// this.hidePopup()
})
},
hidePopup: function () { // 隐藏弹出框
......
<view class="modal-container{{show ? ' active' : ''}}" bindtap="hidePopup" />
<view class="modal-content{{show ? ' active' : ''}}">
<view class="modal-header">
<image src="/assets/imgs/7_1_0/arrow-right.png" class="modal-to-back" mode="widthFix" />
<image src="/assets/imgs/7_1_0/arrow-right.png" class="modal-to-back" mode="widthFix" bindtap="hidePopup"/>
<text class="modal-title">选择优惠券</text>
<image
class="modal-close"
......@@ -17,11 +17,13 @@
<view
class="coupon-list"
data-id="{{coupon.id}}"
data-sid="{{coupon.couponSettingId}}"
data-index="{{index}}"
data-type="{{coupon.type}}"
data-checked="{{coupon.checked}}"
data-coupon-discount="{{coupon.couponDiscount}}"
data-amount="{{coupon.faceAmount}}"
bindtap="selectCoupon"
catchtap="selectCoupon"
>
<image
wx:if="{{false}}"
......@@ -42,7 +44,7 @@
</view>
</view>
<view class="select-radio">
<view class="select-radio" data-index="{{index}}" data-checked="{{coupon.checked}}" >
<icon size="16" type="{{coupon.checked ? 'success' : 'circle'}}" color="{{checkedColor}}" />
</view>
</view>
......
......@@ -254,7 +254,7 @@ Component({
id: clickData.id,
name: clickData.name
}
console.log(event)
// curSpec.push({
// id: clickData.id,
// name: clickData.name
......@@ -265,7 +265,7 @@ Component({
} else {
return false
}
console.log('........', clickData)
// 有库存
let btnText = '确定'
let isOutStock = false
......@@ -305,7 +305,6 @@ Component({
var curSpec = this.data.curSpec
for (var i = 0; i < this.data.skuInfos.length; i++){
var skuNameArray = this.data.skuInfos[i].specValue.split('###')
// console.log(skuNameArray)
var flag = true
for (var j = 0; j < skuNameArray.length; j++){
if (curSpec[j] && i !== j && curSpec[j] !== skuNameArray[j]) {
......@@ -321,8 +320,6 @@ Component({
})
}
}
console.log('00000',this.data.skuStock)
// 根据当前选中的规格,设置头部的规格信息
var skuText = []
if (curSpec.join('') === '') {
......@@ -356,8 +353,7 @@ Component({
salePrice = item.salePrice
picUrl = item.picUrl
}
console.log(flag)
return flag
})
......@@ -385,7 +381,6 @@ Component({
// updateData.price = price// 拼团规格没有价格信息
// }
this.setData(updateData)
console.log('666', updateData.skuStock)
},
_getUserInfo(res = {}) {
this.triggerEvent('getAuth', res);
......
......@@ -30,7 +30,7 @@
<view class="overdue-list clearflex">
<view class="overdue-status">失效</view>
<view class="pro-info">
<image class="pro-img" src="/assets/imgs/7_1_0/icon.png" mode="widthFix" />
<image class="pro-img" src="https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/icon.png" mode="widthFix" />
<view class="pro-right-info">
<view class="pro-name overdue-name">商品名称商品名称商品名称商品名称商品名称商品名称商品名称商品名称商品名称商品名称商品名称</view>
<view class="pro-sku">规格</view>
......
......@@ -10,6 +10,7 @@ wxService.page({
*/
data: {
couponId: null,
couponSettingId: null,
checkByPremium: false,
addressInfo: [],
showSelectCoupon: false,
......@@ -88,32 +89,46 @@ wxService.page({
// // this.getAddressList()
// // }
},
// select 传过来
updateCoupon(e) {
// faceAmount 抵用多少钱(分) 1 抵用券 2 折扣券
console.log('detail', e.detail)
const { faceAmount, type, id, couponDiscount } = e.detail
if(!e.detail) {
this.setData({
defalutCoupon: 0,
couponId: '',
couponSettingId: '',
defalutCouponId: ''
})
return
}
const { faceAmount, type, id, couponDiscount,sid } = e.detail
const { orderPrice } = this.data
console.log('detail2222222', e.detail)
console.log('orderPrice', this.data)
console.log('faceAmount', faceAmount)
// couponId couponSettingId
let finCouponId = id ? id : sid
let finCouponName = id ? 'couponId' : 'couponSettingId'
if (type == 1) {
this.setData({
couponId: id,
defalutCoupon: true,
[finCouponName] : finCouponId,
// couponId: id,
haveCoupon: true,
currentCoupon: `${faceAmount / 100} 元`
})
} else if (type == 2) {
// let discounPrice = (faceAmount / 100) * (orderPrice)
// let spread = Math.round(orderPrice - discounPrice)
this.setData({
couponId: id,
defalutCoupon: true,
[finCouponName] : finCouponId,
// couponId: id,
haveCoupon: true,
currentCoupon: `${couponDiscount} 元`
})
}
// 实付款
this.setPayPrice()
},
......@@ -359,10 +374,12 @@ wxService.page({
noSelectPrice: sum
})
}
// id / couponSettingId
this.setData({
currentOrderList: data,
defalutCoupon: data && data.couponDiscountPreviews.length && data.couponDiscountPreviews[0].couponSettingDTO.type == 1 ? data && data.couponDiscountPreviews.length && data.couponDiscountPreviews[0].couponSettingDTO.faceAmount / 100 : data && data.couponDiscountPreviews.length && data.couponDiscountPreviews[0] && data.couponDiscountPreviews[0].couponDiscount,
defalutCouponId: data && data.couponDiscountPreviews.length && data.couponDiscountPreviews[0] && data.couponDiscountPreviews[0].couponDTOS[0] && data.couponDiscountPreviews[0].couponDTOS[0].id || '',
couponSettingId: data && data.couponDiscountPreviews.length && data.couponDiscountPreviews[0] && data.couponDiscountPreviews[0].couponDTOS[0] && data.couponDiscountPreviews[0].couponDTOS[0].couponSettingId || '',
orderInitPrice: data.amount
}, () => {
// 实付款
......@@ -373,14 +390,22 @@ wxService.page({
})
},
handelGobuy() {
const { trolleySku2Buy, couponId, addressId, addressInfo, defalutCouponId } = this.data
// 第一项 defalutCouponId couponId/
const { isSelect, trolleySku2Buy, couponId, couponSettingId, addressId, addressInfo, defalutCouponId } = this.data
let NoPlusCouponId = couponId ? couponId : defalutCouponId // couponId / 第一项 id
let finCouponName = isSelect ? 'couponSettingId' : 'couponId' // key
let finCouponId = isSelect ? couponSettingId: NoPlusCouponId // val
// let finCouponId = NoPlusCouponId ? NoPlusCouponId : couponSettingId
let params = {
couponId: couponId? couponId : defalutCouponId,
[finCouponName]: finCouponId,
// couponId: couponId? couponId : defalutCouponId,
trolleySku2Buy,
addressId: addressId ? addressId : addressInfo.id // 微信地址 or 地址id
}
this.getBill(params) // 下单
console.log('params', params, this.data)
// this.getBill(params) // 下单
},
// 下单
getBill(params) {
......
......@@ -14,7 +14,7 @@ wxService.page({
imgHeight: 450,
dialog: {
show: false,
image: '../../assets/imgs/point/bgc.png',
image: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/bgc.png',
content: '优惠券和积分流水',
tip: '立即查看'
},
......
......@@ -164,7 +164,6 @@ wxService.page({
this.setData({
productInfo: data
})
console.log('111111111111', this.data.productInfo)
}
}).finally(() => {
wx.hideLoading()
......
......@@ -14,7 +14,7 @@
/>
</view>
<view class="pro-info">
<image class="pro-img" src="{{item.skuImgUrl ? item.skuImgUrl: '/assets/imgs/7_1_0/icon.png'}}" mode="widthFix" />
<image class="pro-img" src="{{item.skuImgUrl ? item.skuImgUrl: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/icon.png'}}" mode="widthFix" />
<view class="pro-right-info">
<view class="pro-name">{{item.name}}</view>
<view class="pro-sku">{{item.sku}}</view>
......
......@@ -68,7 +68,12 @@ wxService.page({
}
},
startmessage(e){
// console.log('startmessage', e)
},
completemessage(e){
// console.log('completemessage', e)
},
// 获取邀请奖励图片
getShareImg() {
wxService.get(`/member/share/inviteFriends/buyer/getValid`).then(res => {
......
......@@ -14,6 +14,7 @@
"bottom-tabs": "/component/bottomTabs/bottomTabs",
"authorization-modal": "/component/authorization-modal/authorization-modal",
"plus": "/component/plus/plus",
"share-benefit-modal": "/component/shareBenefitModal/shareBenefitModal"
"share-benefit-modal": "/component/shareBenefitModal/shareBenefitModal",
"cell": "plugin://contactPlugin/cell"
}
}
\ No newline at end of file
......@@ -30,9 +30,15 @@
<plus sku-list="{{skuVOList}}" plus-bgi="{{pItem.plus}}" currentHasUserInfo="{{currentHasUserInfo}}" bind:updatePage="updatePage"/>
</view>
</block>
<view class="cell-me">
<cell bind:startmessage='startmessage' isMask="0" styleType="2" blockStyle="bubble" buttonText="0" bind:completemessage="completemessage" plugid='c9918b9af349c100b285d1b9a4d19ec6' />
</view>
</view>
<guide-page-modal show="{{guidePageModalShow}}" />
<share-benefit-modal show="{{shareBenefitModalShow}}" benefit-data="{{benefitData}}"/>
<!--<authorization-modal isAuthorization='{{isAuthorization}}'/>-->
<!-- 底部补充高度 防止被遮盖 -->
<view class="bottom-fixed" style="padding-bottom:{{paddingBottom}}"></view>
<!--联系我 客服ID-->
......@@ -3,6 +3,11 @@
page{
/* padding-bottom: 320rpx; */
}
.cell-me {
position: absolute;
right: 0;
top: 80%;
}
.bottom-fixed{
padding-bottom: 40rpx;
}
......@@ -10,6 +15,7 @@ page{
.user-center{
box-sizing: border-box;
height: 100%;
position: relative;
}
.main-content{
......
......@@ -39,7 +39,7 @@
"list": []
},
"miniprogram": {
"current": 50,
"current": 16,
"list": [
{
"id": -1,
......@@ -144,7 +144,7 @@
"id": 16,
"name": "商品详情页",
"pathName": "pages/productDetail/productDetail",
"query": "id=628181797502586880",
"query": "id=613430263048966144",
"scene": null
},
{
......@@ -376,22 +376,17 @@
},
{
"id": 50,
"name": "kpi",
"pathName": "pages/shopping/kpi/kpi",
"query": "",
"scene": null
},
{
"id": -1,
"name": "销售任务详情",
"pathName": "shoppingGuid/page/pages/saleTaskInfo/saleTaskInfo",
"query": ""
"query": "id=636200872266829824&type=1",
"scene": null
},
{
"id": -1,
"id": 51,
"name": "招募任务详情",
"pathName": "shoppingGuid/page/pages/enlistInfo/enlistInfo",
"query": ""
"query": "id=636202518078164992&type=2",
"scene": null
},
{
"id": -1,
......@@ -406,10 +401,10 @@
"query": ""
},
{
"id": 55,
"id": 54,
"name": "会员详情",
"pathName": "shoppingGuid/page/pages/userInfo/userInfo",
"query": ""
"query": "id=700000000013480"
},
{
"id": -1,
......@@ -429,6 +424,18 @@
"name": "标签下的会员列表",
"pathName": "shoppingGuid/page/pages/userList/userList",
"query": ""
},
{
"id": -1,
"name": "导购展示优惠券二维码",
"pathName": "shoppingGuid/page/pages/couponQrcode/couponQrcode",
"query": ""
},
{
"id": -1,
"name": "导购授权页面",
"pathName": "shoppingGuid/page/pages/welcomGuider/welcomGuider",
"query": ""
}
]
}
......
// shoppingGuid/page/pages/achievement/achievement.js
Page({
const wxService = require('../../../../utils/wxService');
const app = getApp();
// import wxCharts from '../../../../charts/wxcharts-min.js'
const wxCharts = require('../../../../charts/wxcharts-min.js')
wxService.page({
/**
* 页面的初始数据
*/
data: {
filterBar: [
{ name: '本月', isActive: true, index: 0 },
{ name: '上月', isActive: false, index: 1 },
{ name: '3个月', isActive: false, index: 2 }
],
current : 0,
currentOrderData : {},
info : {},
achievement : {},
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
//切换
onTapChangeFilter(e){
let index = e.currentTarget.dataset.index;
this.data.filterBar.forEach(item => {
item.isActive = false;
});
this.data.filterBar[index].isActive = true;
this.data.current = this.data.filterBar[index].index;
this.data.currentOrderData = this.data.achievement.monthAchievement[this.data.current];
this.setData({
filterBar: this.data.filterBar,
current : this.data.current,
currentOrderData: this.data.currentOrderData
});
},
/**
* 生命周期函数--监听页面初次渲染完成
* 生命周期函数--监听页面加载
*/
onReady: function () {
onLoad: function (options) {
let currentUserInfo = wx.getStorageSync('guidBaseInfo');
if (!currentUserInfo) { //未登录成功
wx.redirectTo({
url: '/shoppingGuid/page/pages/welcomGuider/welcomGuider',
});
return ;
}
let userInfo = wx.getStorageSync('guidInfo');
if (currentUserInfo.member) {
if (!currentUserInfo.member.qiyeInfo.name) {
currentUserInfo.member.name = userInfo.nickName;
}
else{
currentUserInfo.member.name = currentUserInfo.member.qiyeInfo.name;
}
}
this.setData({
info: currentUserInfo
});
//获取导购业绩
// this.echartsComponnet = this.selectComponent('#barChart');
this.getGuidAchievement();
// let series = [
// {
// name: '本月',
// color: 'rgba(0,145,255,0.2)',
// data: [10, 15, 100],
// },
// {
// name: '累计',
// color: 'rgba(0, 145, 255, 1)',
// data: [20, 30, 300],
// }
// ];
// this.initBarChart(series);
},
......@@ -26,41 +90,63 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
//初始化barchart
initBarChart(series){
let width = app.globalData.systemInfo.screenWidth - 30;
let chart = new wxCharts({
canvasId: 'columnCanvas',
type: 'column',
animation: true,
categories: ['普通会员', '付费会员', '销售额'],
series: series,
legend : false,
yAxis: {
format: function (val) {
return val;
},
min: 0
},
xAxis: {
disableGrid: false,
type: 'calibration'
},
extra: {
column: {
width: 20
}
},
width: width,
height: 250,
});
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
//获取导购业绩
getGuidAchievement(){
wxService.post('/marketing/shoppingguide/achievement').then(res => {
if(!res) return ;
this.data.currentOrderData = res.data.data.monthAchievement[this.data.current];
this.setData({
achievement: res.data.data,
currentOrderData: this.data.currentOrderData,
});
let obj = res.data.data;
let series = [
{
name: '本月',
color: 'rgba(0,145,255,0.2)',
data: [obj.memberRecruitAmountMonth, obj.plusMemberRecruitAmountMonth, obj.achievementMonth],
},
{
name: '累计',
color: 'rgba(0, 145, 255, 1)',
data: [obj.memberRecruitAmountTotal, obj.plusMemberRecruitAmountTotal, obj.achievementTotal],
}
];
this.initBarChart(series);
});
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
......@@ -4,10 +4,10 @@
<!-- 个人信息 -->
<view class='info'>
<view class='center'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/default_logo_icon.png' mode='aspectFit'></image>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit'></image>
<view class='rg-name'>
<view>会员名称</view>
<view>235525352525204</view>
<view>{{info.member.name}}</view>
<view>{{info.memberCardNo}}</view>
</view>
</view>
</view>
......@@ -15,11 +15,11 @@
<!-- 今日排行 -->
<view class='today-top'>
<view class='items'>
<view class='number'>10</view>
<view class='number'>{{achievement.rank}}</view>
<view>我的今日招募排名</view>
</view>
<view class='items'>
<view class='number2'>6</view>
<view class='number2'>{{achievement.recruitAmountToday}}</view>
<view>今日招募</view>
</view>
</view>
......@@ -27,7 +27,7 @@
<!-- 招募总量 -->
<view class='total'>
<text>招募总量:</text>
<text class='total-colors'>135</text>
<text class='total-colors'>{{achievement.recruitTotal}}</text>
</view>
<!-- b本月 -->
<view class='month'>
......@@ -35,38 +35,49 @@
<view class='month-data'>
<view class='data-item'>
<text class='data-item-title'>本月业绩(元)</text>
<text class='data-item-number'>11356.59</text>
<text class='data-item-number'>{{achievement.recruitTotal}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>本月新增回应</text>
<text class='data-item-number'>32</text>
<text class='data-item-title'>本月新增会员</text>
<text class='data-item-number'>{{achievement.recruitAmountMonth}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>本月新增订单</text>
<text class='data-item-number'>228</text>
<text class='data-item-number'>{{achievement.orderAmount}}</text>
</view>
</view>
</view>
<!-- 数据筛选 -->
<view class='data-filter'>
<view class='data-filter-item active'>本月</view>
<view class='data-filter-item'>上月</view>
<view class='data-filter-item'>3个月</view>
<view class='data-filter-item {{item.isActive ? "active" : ""}}'
wx:for="{{filterBar}}"
wx:key="filter"
bindtap='onTapChangeFilter'
data-index="{{idx}}"
wx:for-index="idx"
wx:for-item="item">{{item.name}}</view>
</view>
<!-- 订单数据概览 -->
<view class='order-data'>
<view class='order-data-title'>订单数据概览</view>
<view class='statistic-data'>
<text>总销售额(¥)</text>
<text class='number'>342653.36</text>
<text class='number'>{{currentOrderData.salesVolume}}</text>
</view>
<view class='statistic-data'>
<text>退货额(¥) </text>
<text class='number'>234435</text>
<text class='number'>{{currentOrderData.refundVolume}}</text>
</view>
<view class='statistic-data'>
<text>退款率</text>
<text class='number'>6%</text>
<text class='number'>{{currentOrderData.refundRate}}</text>
</view>
</view>
<!-- 柱状图 -->
<view class='chart-con'>
<view class='title'>会员数据概览</view>
<view class='chart'>
<canvas canvas-id="columnCanvas" disable-scroll="true" class="columnCanvas"></canvas>
</view>
</view>
......
......@@ -210,4 +210,41 @@ view{
}
/* 图表 */
.chart-con{
width: 100%;
height: auto;
padding: 0 30rpx;
background: #ffffff;
font-size: 24rpx;
margin-bottom: 20rpx;
color: #333333;
padding-bottom: 20px;
}
.chart-con .title{
padding: 30rpx 20rpx;
font-size: 28rpx;
border-bottom: solid 1px #eeeeee;
margin-bottom: 20rpx;
}
.chart-con .chart{
width: 100%;
height: auto;
position: relative;
top: 0;
bottom: 0;
left: 0;
right: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
}
.chart canvas{
width: 100%;
height: 500rpx;
}
\ No newline at end of file
// shoppingGuid/page/pages/couponQrcode/couponQrcode.js
const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
const app = getApp();
wxService.page({
/**
* 页面的初始数据
*/
data: {
qrcodeImg : '',
couponInfo : {}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
let couponInfo = wx.getStorageSync('_guidCouponInfo');
this.setData({
couponInfo: couponInfo,
},() => {
this.getMiniQrcode(couponInfo.id);
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
wx.removeStorageSync('_guidCouponInfo');
},
//获取小程序码
getMiniQrcode(id){
// subPackage / page / pages / scanCoupon / scanCoupon
let currentUserInfo = wx.getStorageSync('guidBaseInfo');
let memberId = currentUserInfo.memberId;
console.log(this.data.couponInfo)
let content = {
title: this.data.couponInfo.couponName,
id: this.data.couponInfo.couponId,
url: this.data.couponInfo.imageBg
}
let tentacleInfo = {
content: JSON.stringify(content),
contentId: this.data.couponInfo.couponId,
contentType: app.globalData.contants.SHARE_TYPE.PRODUCT_DETAIL, //内容类型 STAFF_RECOMMAND
title: this.data.couponInfo.couponName, //标题
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(this.data.couponInfo.couponId, 10, 64);
let inner_tentacleId = Integer.digit(tentacleId, 10, 64);
//生成二维码
let data = {
"autoColor": true,
"page": 'subPackage/page/pages/scanCoupon/scanCoupon',
"scene": '?i=' + inner_id + '&t=' + inner_tentacleId,
"width": 260
}
wxService.post(`/marketing/quickMark/getAppQrCodePicture`, data).then(res => {
const { result, data } = res.data
if (result == 0) {
this.setData({
qrcodeImg: app.globalData.imageUrl + data
});
}
})
}
});
},
})
\ No newline at end of file
{
"navigationBarTitleText": "优惠券二维码",
"usingComponents": {}
}
\ No newline at end of file
<!-- 优惠券二维码 -->
<view class='main-container'>
<!-- 优惠券福利 -->
<view class='coupons'>
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png)'>
<view class='coupon-item-lf'>
<view class='coupon-price'>
{{couponInfo.couponType != 2 ? '¥' : ''}} <text>{{couponInfo.price}}</text>
</view>
<view>{{couponInfo.typeText}}</view>
</view>
<view class='coupon-item-rg'>
<view class='coupon-title'>{{couponInfo.title}}</view>
<view class='op'>
<view class='text-btn'>
<text class='theme-text-color'>数量:{{couponInfo.stock}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 二维码 -->
<view class='qrcode-con'>
<view class='qrcode'>
<image src='{{qrcodeImg}}' mode='aspectFit'></image>
<view class='coupon-num'>优惠券码:{{couponInfo.couponSetting.couponSettingId}}</view>
</view>
</view>
</view>
\ No newline at end of file
/* shoppingGuid/page/pages/couponQrcode/couponQrcode.wxss */
/* shoppingGuid/page/pages/welfare/welfare.wxss */
page{
background: #f2f2f2;
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.main-container{
width: 100%;
height: auto;
}
.coupon{
font-size: 24rpx;
display: flex;
align-items: center;
margin-top: 10rpx;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
line-clamp: 1;
-webkit-box-orient: vertical;
}
.coupon image{
width: 30rpx;
height: 30rpx;
margin-right: 10rpx;
}
.coupon text{
margin-right: 10rpx;
}
.price .plus{
display: flex;
align-items: center;
font-size: 32rpx;
font-weight: bold;
color: #333333;
}
.price .plus image{
width: 70rpx;
margin-left: 10rpx;
}
/* 优惠券 */
.coupons{
padding: 30rpx;
width: 100%;
}
.coupons .coupon-item{
width: 100%;
height: 180rpx;
/* background: #ffffff; */
display: flex;
background-position: center;
background-size: contain;
background-repeat: no-repeat;
margin-bottom: 10rpx;
}
.coupons .coupon-item .coupon-item-lf{
flex: 0;
min-width: 180rpx;
max-width: 180rpx;
height: 180rpx;
padding: 20rpx;
display: flex;
flex-direction: column;
align-items: center;
color: #0091FF ;
font-size: 24rpx;
justify-content: center;
}
.coupon-price{
margin-bottom: 6rpx;
}
.coupon-price text{
font-size: 38rpx;
font-weight: bold;
}
.coupons .coupon-item .coupon-item-rg{
flex: 1;
padding: 30rpx;
position: relative;
}
.coupons .coupon-item .coupon-item-rg .qrcode{
position: absolute;
right: 30rpx;
top: 30rpx;
width: 40rpx;
height: 40rpx;
}
.coupons .coupon-item .coupon-item-rg .qrcode image{
width: 100%;
height: 100%;
display: block;
}
.coupons .coupon-item .coupon-item-rg .coupon-title{
font-size: 28rpx;
color: #333333;
font-weight: bold;
margin-bottom: 15rpx;
margin-top: 15rpx;
}
.coupons .coupon-item .coupon-item-rg .op{
display: flex;
width: 100%;
align-items: center;
justify-content: space-between;
}
.coupons .coupon-item .coupon-item-rg .op .text-btn{
flex: 1;
font-size: 24rpx;
}
.coupons .coupon-item .coupon-item-rg .op .info-btn{
width: 160rpx;
height: 50rpx;
background: #0091FF ;
color: #ffffff;
display: flex;
align-items: center;
font-size: 24rpx;
}
/* 二维码展示区 */
.qrcode-con{
padding: 0 30rpx;
width: 100%;
}
.qrcode-con .qrcode{
width: 100%;
height: auto;
padding: 30rpx;
background: #ffffff;
box-shadow: 0 0 10rpx 4rpx rgba(0,0,0,0.1);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.qrcode-con .qrcode image{
width: 500rpx;
height: 500rpx;
}
.qrcode-con .qrcode .coupon-num{
font-size: 28rpx;
color: #666;
margin-top: 20rpx;
}
\ No newline at end of file
......@@ -6,7 +6,7 @@ wxService.page({
* 页面的初始数据
*/
data: {
enlistList: null
},
/**
......@@ -32,7 +32,7 @@ wxService.page({
let orderType = this.options && this.options.type || 2
this.getTaskDetail(orderType, taskId)
},
getTaskDetail(orderType,taskId) {
getTaskDetail(orderType, taskId) {
wx.showLoading({
title: '加载中'
})
......@@ -41,12 +41,14 @@ wxService.page({
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
// data && data.skuVOList.forEach(item=>{
// item.checked = false
// })
// this.setData({
// cartList: data && data.skuVOList || []
// })
let curStart = new Date(data.task.startTime)
let curEnd = new Date(data.task.endTime)
data.task.startTime = `${curStart.getMonth()}${curStart.getDay()}日`
data.task.endTime = `${curEnd.getMonth()}${curEnd.getDay()}日`
this.setData({
enlistList: data || {}
})
}
}
})
......
......@@ -4,20 +4,20 @@
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_time.png' mode='widthFix'></image>
<text>9月1日~10月1日</text>
<text>{{enlistList.task.startTime}}~{{enlistList.task.endTime}}</text>
</view>
<view class='rg'>活动说明?</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix'></image>
<text class='bolder'>当月招募任务</text>
<text class='bolder'>{{enlistList.task.name}}</text>
</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/award.png' mode='widthFix'></image>
<text class='bolder'>员工内部券*1,导购币100</text>
<text class='bolder'>{{enlistList.task.remark}}</text>
</view>
</view>
......@@ -29,22 +29,23 @@
<view class='month-data'>
<view class='data-item'>
<text class='data-item-title'>当前完成(人)</text>
<text class='data-item-number'>113</text>
<text class='data-item-number'>{{enlistList.achieve}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>当周目标(人)</text>
<text class='data-item-number'>100</text>
<text class='data-item-number'>{{enlistList.task.target}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>完成率</text>
<text class='data-item-number'>100%</text>
<text class='data-item-number'>{{enlistList.rate}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 列表 -->
<view class='list'>
<view class='list' wx:if="{{enlistList.recruitInfo.length}}">
<block wx:for="{{enlistList.recruitInfo}}">
<view class='item'>
<view class='u-info'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit'></image>
......@@ -68,9 +69,9 @@
</view>
<view class='item-btn'>立即回访</view>
</view>
</block>
</view>
<view wx:else class='u-info no-order'>暂无回访列表</view>
......@@ -7,7 +7,11 @@ page{
font-size: 28rpx;
color: #333333;
}
.no-order {
text-align: center;
padding-top: 50rpx;
color: #333333;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
......
// shoppingGuid/page/pages/guidCollegeInfo/guidCollegeInfo.js
Page({
const wxService = require('../../../../utils/wxService')
wxService.page({
/**
* 页面的初始数据
*/
data: {
info : {}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
let id = options.id;
this.getCollegeInfo(id);
},
//获取导购学院详情
getCollegeInfo(id){
wxService.post(`/merchant/guideCollege/byIdQuery?id=${id}`).then(res => {
let data = res.data.data;
this.setData({
info : data,
});
});
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
{
"navigationBarTitleText": "导购学院详情",
"usingComponents": {}
"navigationBarTitleText": "导购学院内容详情",
"usingComponents": {
"x-html": "/component/html2wxml/wxHtml"
}
}
\ No newline at end of file
<!--shoppingGuid/page/pages/guidCollegeInfo/guidCollegeInfo.wxml-->
<view class='top-image'>
<!-- top image -->
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/daogou.jpg' mode='widthFix'></image>
<image src='{{info.titleUrl}}' mode='widthFix'></image>
</view>
<!-- 内容标题 -->
<view class='content-title'>商品陈列,还能这么玩?!</view>
<view class='content-title'>{{info.title}}</view>
<!-- 富文本内容展示区 -->
<view class='full-text'>
正文正文
从小丘向西走一百二十多步,隔着竹林,可以听到流水的声音,好像人身上佩带的珮环相互碰击发出的声音,心里十分高兴。砍倒竹子,开辟出一条道路(走过去),沿路走下去看见一个小潭,潭水格外清凉。小潭以整块石头为底,靠近岸边的地方,石底有些部分翻卷出来,露出水面,成为水中的高地,成为水中的小岛,成为水中的不平岩石,成为水中的悬崖。青翠的树木,翠绿的藤蔓,遮掩缠绕,摇动下垂,参差不齐,随风飘拂。潭中的鱼大约有一百来条,都好像在空中游动,什么依靠都没有,阳光直照(到水底),(鱼的)影子映在石头上。呆呆地(停在那里)一动不动,忽然间(又)向远处游去了,来来往往,轻快敏捷,好像和游玩的人互相取乐。向小石潭的西南方望去,看到溪水像北斗星那样曲折,水流像蛇那样蜿蜒前行,一段明的看得见,一段暗的看不见。
两岸的地势像狗的牙齿那样相互交错,不能知道溪水的源头。我坐在潭边,四下里竹林和树木包围着,寂静寥落,空无一人。使人感到心情凄凉,寒气入骨,幽静深远,弥漫着忧伤的气息。因为这里的环境太凄清,不可长久停留,于是记下了这里的情景就离开了。
一同去游览的人有:吴武陵,龚古,我的弟弟宗玄。跟着同去的有姓崔的两个年轻人:一个名叫恕己,一个名叫奉壹。
<x-html html="{{info.article}}"/>
</view>
......@@ -9,7 +9,10 @@ wxService.page({
navBar: [{ name: '招募榜', type: 1, isActive: true }, { name: '门店榜单', type: 2, isActive: false }],
current : 1,
staff : [],
store : []
store : [],
rankList:[],
storeList:[],
defaultAvatar: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png'
},
/**
......@@ -41,12 +44,9 @@ wxService.page({
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
// data && data.skuVOList.forEach(item=>{
// item.checked = false
// })
// this.setData({
// cartList: data && data.skuVOList || []
// })
this.setData({
rankList: data || []
})
}
}
})
......@@ -61,12 +61,9 @@ wxService.page({
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
// data && data.skuVOList.forEach(item=>{
// item.checked = false
// })
// this.setData({
// cartList: data && data.skuVOList || []
// })
this.setData({
storeList: data || []
})
}
}
})
......@@ -90,6 +87,12 @@ wxService.page({
current == 1? this.getRecruitRanking() : this.getStoreRanking()
});
},
//跳转到我的招募码
onTapShowMyQrcode(){
wx.navigateTo({
url: '/shoppingGuid/page/pages/qrcode/qrcode',
})
},
// 回到商城
onTapToMall(){
......@@ -97,6 +100,12 @@ wxService.page({
url: '/pages/userCenter/userCenter',
})
},
//跳转到会员
onTapToMember(){
wx.redirectTo({
url: '/shoppingGuid/page/pages/selectUsers/selectUsers',
})
},
/**
* 页面相关事件处理函数--监听用户下拉动作
......
<!--shoppingGuid/page/pages/home/home.wxml-->
<wxs src="../../../../wxs/utils.wxs" module="utils" />
<!-- 导购首页 -->
<view class='main-container'>
<!-- top -->
<view class='top-icons'>
<view class='icon-item'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_qrcode.png' mode='aspectFit'></image>
<view class='icon-title'>招募码</view>
</view>
<view class='icon-item' bindtap='onTapToMall'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_go_mall.png' mode='aspectFit'></image>
<view class='icon-title'>前往商城</view>
</view>
<view class='icon-item'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_member.png' mode='aspectFit'></image>
<view class='icon-title'>会员</view>
</view>
</view>
<!--招募榜 -->
<view class='header-tab'>
<view class='header-tab-item'
wx:for="{{navBar}}"
wx:key="topbar"
wx:for-index="idx"
bindtap='onTopBarTap'
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item">
<view class='item-text {{item.isActive ? "active" : ""}}'>{{item.name}}</view>
</view>
</view>
<view class='list-container'>
<!-- 招募榜 -->
<view class='list' wx:if="{{current == 1}}">
<view class='title'>
<image src='/assets/imgs/shoppingGuide/home_top20.png' mode='widthFix'></image>
</view>
<view class='table-list'>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>1394585xxxx</text>
</view>
<view class='rg'>已招募<text>34</text>人</view>
</view>
</view>
</view>
<!-- 门店榜单 -->
<view class='list' wx:if="{{current == 2}}">
<view class='title'>
<image src='/assets/imgs/shoppingGuide/home_top20.png' mode='widthFix'></image>
</view>
<view class='table-list'>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>张江店</text>
</view>
<view class='rg'>已招募<text>560</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>浦东一店</text>
</view>
<view class='rg'>已招募<text>460</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>世纪大道店</text>
</view>
<view class='rg'>已招募<text>500</text>人</view>
</view>
<view class='table-list-item'>
<view class='lf'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_default_logo.png' mode='aspectFit'></image>
<text>龙阳店</text>
</view>
<view class='rg'>已招募<text>389</text>人</view>
</view>
</view>
</view>
</view>
<!-- top -->
<view class='top-icons'>
<view class='icon-item' bindtap='onTapShowMyQrcode'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_qrcode.png' mode='aspectFit' />
<view class='icon-title'>招募码</view>
</view>
<view class='icon-item' bindtap='onTapToMall'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_go_mall.png' mode='aspectFit' />
<view class='icon-title'>前往商城</view>
</view>
<view class='icon-item' bindtap='onTapToMember'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/home_member.png' mode='aspectFit' />
<view class='icon-title'>会员</view>
</view>
</view>
<!--招募榜 -->
<view class='header-tab'>
<view
class='header-tab-item'
wx:for="{{navBar}}"
wx:key="topbar"
wx:for-index="idx"
bindtap='onTopBarTap'
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item"
>
<view class='item-text {{item.isActive ? "active" : ""}}'>{{item.name}}</view>
</view>
</view>
<view class='list-container'>
<!-- 招募榜 -->
<view class='list' wx:if="{{current == 1}}">
<view class='title'>
<image src='/assets/imgs/shoppingGuide/home_top20.png' mode='widthFix' />
</view>
<view class='table-list' wx:if="{{rankList.length}}">
<block wx:for="{{rankList}}" wx:key="{{index}}" wx:for-item="item">
<view class='table-list-item'>
<view class='lf'>
<image src='{{item.member.avatar? item.member.avatar : defaultAvatar}}' mode='aspectFit' />
<text>{{utils.phoneFormat(item.member.mobile || 17521232119)}}</text>
</view>
<view class='rg'>已招募
<text>{{item.recruitCount}}</text>
</view>
</view>
</block>
</view>
<view class="no-list" wx:else>暂无榜单</view>
</view>
<!-- 门店榜单 -->
<view class='list' wx:if="{{current == 2}}">
<view class='title'>
<image src='/assets/imgs/shoppingGuide/home_top20.png' mode='widthFix' />
</view>
<view class='table-list' wx:if="{{storeList.length}}">
<block wx:for="{{storeList}}" wx:key="{{index}}" wx:for-item="item">
<view class='table-list-item'>
<view class='lf'>
<image src='{{item.member.avatar? item.member.avatar : defaultAvatar}}' mode='aspectFit' />
<text>{{item.store.name}}</text>
</view>
<view class='rg'>已招募
<text>{{item.recruitCount}}</text>
</view>
</view>
</block>
</view>
<view class="no-list" wx:else>暂无榜单</view>
</view>
</view>
</view>
<!-- 整体布局 -->
<!-- tabbar -->
<tab-bar index="{{0}}"></tab-bar>
<tab-bar index="{{0}}" />
......@@ -9,7 +9,12 @@ page{
/* *,*::after,*::before{
box-sizing: border-box;
} */
.no-list {
font-size: 24rpx;
text-align: center;
color: #333333;
padding: 50rpx 0;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
......
......@@ -14,16 +14,18 @@ wxService.page({
// { name: '维护任务', type: 4, isActive: false }
],
current: 1,
list : [{id:1,},{id:2},{id:3},{id:4},{id:5},{id:6},{id:7},{id:8}],
list : [],
pageSize: 10,
pageNo: 1
pageNo: 1,
totalPages: 0
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
const { pageSize, pageNo, current } = this.data
this.getTaskPage(pageSize, pageNo, current)
},
......@@ -31,8 +33,7 @@ wxService.page({
* 生命周期函数--监听页面显示
*/
onShow: function () {
const {pageSize, pageNo,current} = this.data
this.getTaskPage(pageSize, pageNo,current)
},
getTaskPage(pageSize, pageNo,current) { // 1 销售任务 2 招募任务
wx.showLoading({
......@@ -49,8 +50,15 @@ wxService.page({
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
data.content.forEach(item=>{
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({
list: pageNo == 1? [...data.content]: [...this.data.list,...data.content],
totalPages: data.totalPages
})
}
}
......@@ -70,8 +78,10 @@ wxService.page({
this.setData({
pageNo: 1,
totalPages: 0,
navBar: this.data.navBar,
current: this.data.current
current: this.data.current,
list : [],
},()=>{
if (wx.pageScrollTo) {
wx.pageScrollTo({
......@@ -84,7 +94,7 @@ wxService.page({
},
//销售任务item点击事件
onTapToSaleTaskInfo(e){
let item = e.currentTarget.dataset.item;
let item = e.currentTarget.dataset.item.task;
let id = item.id || 0;
let type = item.type || 1;
......@@ -95,7 +105,7 @@ wxService.page({
},
//招募任务item点击事件
onTapToInviteTaskInfo(e){
let item = e.currentTarget.dataset.item;
let item = e.currentTarget.dataset.item.task;
let id = item.id || 0;
let type = item.type || 2;
......@@ -116,11 +126,13 @@ wxService.page({
*/
onReachBottom: function () {
console.log('-------------')
this.setData({
pageNo: this.data.pageNo + 1,
},()=>{
const {pageSize, pageNo,current} = this.data
this.getTaskPage(pageSize, pageNo,current)
})
if(pageNo < totalPages) {
this.setData({
pageNo: this.data.pageNo + 1,
},()=>{
const {pageSize, pageNo,current} = this.data
this.getTaskPage(pageSize, pageNo,current)
})
}
}
})
\ No newline at end of file
<!--shoppingGuid/page/pages/kpi/kpi.wxml-->
<wxs src="../../../../wxs/utils.wxs" module="utils" />
<!-- KPI界面 -->
<view class='main-container'>
<view class='header-tab'>
......@@ -25,20 +26,20 @@
wx:for-item="item">
<view class='status-bar'>
<view class='status'>
已完成:<text>133</text>
已完成:<text>{{item.achieve}}</text>
</view>
<view class='percent'>133%</view>
<view class='percent'>{{item.rate}}</view>
</view>
<view class='task-time'>
<image src='/assets/imgs/shoppingGuide/kpi_task_time.png' mode='widthFix'></image>
<text>9月1日~10月1日</text>
<text>{{item.task.startTime}}~{{item.task.endTime}}</text>
</view>
<view class='task-info'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix'></image>
<text>新品上市任务</text>
<text>{{item.task.name}}</text>
</view>
<view class='rg'> 目标:100000 </view>
<view class='rg'> 目标:{{item.task.target}} </view>
</view>
</view>
</view>
......@@ -54,20 +55,20 @@
wx:for-item="item">
<view class='status-bar'>
<view class='status'>
已完成:<text>133</text>
已完成:<text>{{item.achieve}}</text>
</view>
<view class='percent'>133%</view>
<view class='percent'>{{item.rate}}</view>
</view>
<view class='task-time'>
<image src='/assets/imgs/shoppingGuide/kpi_task_time.png' mode='widthFix'></image>
<text>9月1日~10月1日</text>
<text>{{item.task.startTime}}~{{item.task.endTime}}</text>
</view>
<view class='task-info'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix'></image>
<text>普通会员招募</text>
<text>{{item.task.name}}</text>
</view>
<view class='rg'> 目标:100 </view>
<view class='rg'> 目标:{{item.task.target}} </view>
</view>
</view>
</view>
......
// shoppingGuid/page/pages/qrcode/qrcode.js
Page({
const wxService = require('../../../../utils/wxService')
const app = getApp();
wxService.page({
/**
* 页面的初始数据
*/
data: {
codeImg : '',
avator: 'https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png',
name :''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
const currentEnv = wx.getStorageSync('_qyWeChat');
if (currentEnv) {
this.getEnterpriseQrcode();
this.getAvator();
this.getName();
}
else {
//不是在企业微信内打开的 提示信息
wx.showToast({
title: '请在企业微信内打开!',
icon: 'none'
});
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
//获取员工名称
getName(){
let currentUserInfo = wx.getStorageSync('guidBaseInfo');
if (!currentUserInfo) { //未登录成功
wx.redirectTo({
url: '/shoppingGuid/page/pages/welcomGuider/welcomGuider',
});
return;
}
let userInfo = wx.getStorageSync('guidInfo');
let name = '';
if (currentUserInfo.member) {
if (!currentUserInfo.member.qiyeInfo.name) {
name = userInfo.nickName;
}
else {
name = currentUserInfo.member.qiyeInfo.name;
}
}
this.setData({
name: name
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
//获取企业二维码
getEnterpriseQrcode(){
wx.qy.getQrCode({
success: res => {
console.log('获取员工二维码---', res)
this.setData({
codeImg: res.qrCode
});
},
fail: res => {
console.log('获取员工二维码失败---', res)
}
});
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
//获取头像
getAvator(){
wx.qy.getAvatar({
success: res => {
console.log('获取员工二头像---', res)
this.setData({
avator: res.avatar
});
},
fail: res => {
console.log('获取员工头像失败---', res)
}
});
},
/**
* 页面相关事件处理函数--监听用户下拉动作
* 生命周期函数--监听页面显示
*/
onPullDownRefresh: function () {
onShow: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
......
{
"navigationBarTitleText": "对外名片",
"usingComponents": {}
}
\ No newline at end of file
<!--shoppingGuid/page/pages/qrcode/qrcode.wxml-->
<text>shoppingGuid/page/pages/qrcode/qrcode.wxml</text>
<view class='qrcode'>
<view class='card'>
<image class='g-qrcode' mode='aspectFit' src='{{codeImg}}'></image>
<image class='g-logo' mode='aspectFit' src='{{avator}}'></image>
<text class='name'>{{name}}</text>
</view>
</view>
/* shoppingGuid/page/pages/qrcode/qrcode.wxss */
\ No newline at end of file
/* shoppingGuid/page/pages/qrcode/qrcode.wxss */
page{
background: #f2f2f2;
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.qrcode{
padding: 50rpx;
}
.qrcode .card{
width: 100%;
height: auto;
padding: 30rpx;
background: #ffffff;
border-radius: 10rpx;
border: 12rpx solid rgba(0, 145, 255, 0.46);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding-bottom: 100rpx;
}
.qrcode .card .g-qrcode{
width: 320rpx;
height: 320rpx;
margin-bottom: 40rpx;
}
.qrcode .card .g-logo{
width: 140rpx;
height: 140rpx;
margin-bottom: 25rpx;
border-radius: 50%;
}
.qrcode .card .name{
font-size: 36rpx;
color: #333333;
font-weight: bold;
}
// shoppingGuid/page/pages/saleTaskInfo/saleTaskInfo.js
const wxService = require('../../../../utils/wxService')
wxService.page({
/**
* 页面的初始数据
*/
data: {
navBar: [{ name: '线上订单', type: 1, isActive: true }, { name: '线下订单', type: 2, isActive: false }],
current: 1
current: 1,
saleDetail: null
},
/**
......@@ -35,12 +35,13 @@ wxService.page({
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
// data && data.skuVOList.forEach(item=>{
// item.checked = false
// })
// this.setData({
// cartList: data && data.skuVOList || []
// })
let curStart = new Date(data.task.startTime)
let curEnd = new Date(data.task.endTime)
data.task.startTime = `${curStart.getMonth()}${curStart.getDay()}日`
data.task.endTime = `${curEnd.getMonth()}${curEnd.getDay()}日`
this.setData({
saleDetail: data || {}
})
}
}
})
......
<!--shoppingGuid/page/pages/saleTaskInfo/saleTaskInfo.wxml-->
<view class='task-info-top-container'>
<view class='info-container'>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_time.png' mode='widthFix'></image>
<text>9月1日~10月1日</text>
</view>
<view class='rg'>活动说明?</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix'></image>
<text class='bolder'>当月招募任务</text>
</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/award.png' mode='widthFix'></image>
<text class='bolder'>员工内部券*1,导购币100</text>
</view>
</view>
<view class='info-container'>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_time.png' mode='widthFix' />
<text>{{saleDetail.task.startTime}}~{{saleDetail.task.endTime}}</text>
</view>
<view class='rg'>活动说明?</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix' />
<text class='bolder'>{{saleDetail.task.name}}</text>
</view>
</view>
<view class='info-item'>
<view class='lf'>
<image src='/assets/imgs/shoppingGuide/award.png' mode='widthFix' />
<text class='bolder'>{{saleDetail.task.remark}}</text>
</view>
</view>
<!-- line -->
<view class='line'></view>
<!-- info-data -->
<view class='month'>
<view class='month-data'>
<view class='data-item'>
<text class='data-item-title'>当前完成(人)</text>
<text class='data-item-number'>113</text>
</view>
<view class='data-item'>
<text class='data-item-title'>当周目标(人)</text>
<text class='data-item-number'>100</text>
</view>
<view class='data-item'>
<text class='data-item-title'>完成率</text>
<text class='data-item-number'>100%</text>
</view>
</view>
</view>
</view>
<!-- line -->
<view class='line' />
<!-- info-data -->
<view class='month'>
<view class='month-data'>
<view class='data-item'>
<text class='data-item-title'>当前完成(人)</text>
<text class='data-item-number'>{{saleDetail.achieve}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>当周目标(人)</text>
<text class='data-item-number'>{{saleDetail.task.target}}</text>
</view>
<view class='data-item'>
<text class='data-item-title'>完成率</text>
<text class='data-item-number'>{{saleDetail.rate}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 订单筛选 -->
<view class='order-filter'>
<view
class='filter-item {{item.isActive ? "active" : ""}}'
wx:for="{{navBar}}"
wx:key="topbar"
wx:for-index="idx"
bindtap='onTopBarTap'
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item">{{item.name}}</view>
<view
class='filter-item {{item.isActive ? "active" : ""}}'
wx:for="{{navBar}}"
wx:key="topbar"
wx:for-index="idx"
bindtap='onTopBarTap'
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item"
>{{item.name}}
</view>
</view>
<!-- 线上订单 -->
<view class='list online-order' wx:if="{{current == 1}}">
<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 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='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>
<view class='order-pro-info'>
<label>共5件商品</label>
<view>
实付 <label class='theme-text-color bolder'>¥385</label>
</view>
</view>
</view>
<view wx:if="{{saleDetail.order.length}}">
<block wx:for="{{saleDetail.order}}">
<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' />
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg' />
</view>
<view class='pro-item'>
<image mode='aspectFit' src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/1571636466%281%29.jpg' />
</view>
</view>
<view class='order-pro-info'>
<label>共5件商品</label>
<view>
实付
<label class='theme-text-color bolder'>¥385</label>
</view>
</view>
</view>
</block>
</view>
<view wx:else class='order-item no-order'>暂无订单</view>
</view>
<!-- 线下订单 -->
<view class='list offline-order' wx:if="{{current == 2}}">
<!-- -->
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付 <text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付 <text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
<!-- -->
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付
<text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付 <text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付
<text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
<view class='offline-order-item'>
<view class='items'>
<label>上海-张江高科店</label>
<view>
实付
<text class='theme-text-color bolder'>¥380 </text>
</view>
</view>
<view class='items'>
<text>消费时间 2019/09/09</text>
</view>
</view>
</view>
......@@ -6,7 +6,9 @@ page{
font-size: 28rpx;
color: #333333;
}
.no-order {
text-align: center;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
......
// shoppingGuid/page/pages/selectUsers/selectUsers.js
const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
wxService.page({
/**
* 页面的初始数据
*/
data: {
navBar: [{ name: '自动标签', type: 1, isActive: true }, { name: '手动标签', type: 2, isActive: false }],
current: 1,
isOpen : false,
groups : [],
tags : [],
noTag : false,
noMoreData : true,
pagination : {
pageSize : 10,
pageNum : 1,
totalPage : 0
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 一进来先获取一下自动标签的数据
this.getMemberTagGroups();
},
/**
* 生命周期函数--监听页面显示
*/
......@@ -24,13 +36,6 @@ wxService.page({
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
//点击事件
onTapExpandOrInpand(e){
this.setData({
......@@ -39,10 +44,96 @@ wxService.page({
},
//跳转到标签下用户列表
onTapToTagUserList(e){
let id = 11;
let item = e.currentTarget.dataset.item;
let tagId = item.id , groupId = item.groupId , type = item.type;
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 切换
onTopBarTap(e){
let index = e.currentTarget.dataset.index,
item = e.currentTarget.dataset.item;
this.data.navBar.forEach(nav => {
nav.isActive = false;
});
this.data.navBar[index].isActive = true;
this.data.current = this.data.navBar[index].type;
this.setData({
navBar: this.data.navBar,
current: this.data.current
});
this.getMemberTagGroups();
},
//获取标签分组
getMemberTagGroups(){
this.data.groups = [];
wxService.post(`/marketing/memberTagGroup/findPage?pageSize=10000&pageNo=1&type=${this.data.current}`).then(res => {
let groups = res.data.data.content ? res.data.data.content : [];
groups.forEach(item => {
item.isActive = false;
});
this.data.groups = groups;
if (this.data.groups.length > 0){
//选中第一个
this.data.groups[0].isActive = true;
//获取分组的标签
this.getTagsList();
}
this.setData({
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();
},
/**
......@@ -56,13 +147,17 @@ wxService.page({
* 页面上拉触底事件的处理函数
*/
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
});
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
\ No newline at end of file
});
\ No newline at end of file
{
"navigationBarTitleText": "选择会员",
"navigationBarTitleText": "我的会员",
"usingComponents": {}
}
\ No newline at end of file
<!--shoppingGuid/page/pages/selectUsers/selectUsers.wxml-->
<view class='top-tags'>
<view class='search-box'>
<!-- <view class='search-box'>
<view class='search'>
<image src='/assets/imgs/shoppingGuide/search.png' mode='aspectFit'></image>
<input maxlength='20' placeholder='请输入标签名称搜索'></input>
</view>
</view>
</view> -->
<!-- tags -->
<view class='tags-types'>
<view class='tag-items active'>自动标签</view>
<view class='tag-items'>手动标签</view>
<view class='tag-items'>临时标签</view>
<view class='tag-items {{item.isActive ? "active" : ""}}'
wx:for="{{navBar}}"
wx:key="topbar"
wx:for-index="idx"
bindtap='onTopBarTap'
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item">{{item.name}}</view>
</view>
<!-- 标签s -->
<view class='tags'>
<view class='flex'>
<view class='lf'>
<view class='tag-item active'>消费行为</view>
<view class='tag-item'>访问行为</view>
<view class='tag-item'>核销行为</view>
<view class='tag-item {{item.isActive ? "active" : ""}}'
wx:for="{{groups}}"
wx:key="groups"
wx:for-index="idx"
bindtap='onTapSelectGroup'
data-index="{{idx}}"
data-item="{{item}}"
wx:if="{{idx < 3}}"
wx:for-item="item">{{item.name}}</view>
</view>
<view class='rg' bindtap='onTapExpandOrInpand'>展开></view>
</view>
</view>
</view>
<!-- -->
<!-- class='hover-items {{item.isActive ? "active" : ""}}' -->
<!-- 浮层 -->
<view class='tag-hover {{isOpen ? "show" : ""}}'>
<view class='hover-items avtive'>最近7天生日会员</view>
<view class='hover-items'>常联系</view>
<view class='hover-items'>新会员</view>
<view class='hover-items'>高价值</view>
<view class='hover-items'>会员更中意别家</view>
<view
class='hover-items {{item.isActive ? "active" : ""}}'
wx:for="{{groups}}"
wx:key="allGroups"
bindtap='onTapSelectGroup'
wx:for-index="idx"
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="item">{{item.name}}</view>
</view>
<!-- 具体的数据 -->
<view class='list'>
<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='list-item'
wx:for="{{tags}}"
wx:key="tags"
wx:for-index="idx"
data-index="{{idx}}"
data-item="{{item}}"
wx:for-item="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>
<label>{{item.name}}</label>
<view><text>{{item.memberCount}}</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>
<label>{{item.desc}}</label>
</view>
</view>
</view>
<!-- empty -->
<!-- 沒有更多數據啦 -->
<!-- <view class='no-more-data' wx:if="{{!noMoreData}}">--- 到底啦 ---</view> -->
</view>
<view class='empty' wx:if="{{tags.length == 0}}">
{{noTag ? "暂无数据~" : "数据加载中.."}}
</view>
/* shoppingGuid/page/pages/selectUsers/selectUsers.wxss */
page{
background: #f2f2f2;
padding-top: 300rpx;
padding-top: 196rpx;
box-sizing: border-box;
-webkit-box-sizing: border-box;
font-size: 28rpx;
......@@ -99,6 +99,7 @@ view{
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
}
.tags .flex .lf{
......@@ -133,7 +134,7 @@ view{
width: 100%;
max-height: 400rpx;
background: #ffffff;
top: 298rpx;
top: 190rpx;
border-top: solid 2rpx #ddd;
border-bottom: solid 2rpx #ddd;
transition: all 0.3s;
......@@ -162,7 +163,7 @@ view{
margin-bottom: 20rpx;
}
.tag-hover .hover-items.avtive{
.tag-hover .hover-items.active{
color: #0091FF ;
background-color: rgba(0, 145, 255, 0.1);
}
......
// shoppingGuid/page/pages/userList/userList.js
Page({
const app = getApp()
const wxService = require('../../../../utils/wxService')
import { Integer } from '../../../../utils/integerDigitalConvertion'
wxService.page({
/**
* 页面的初始数据
*/
data: {
list : [],
name : '',
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
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);
},
......@@ -26,20 +32,41 @@ Page({
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
// 获取标签下会员
getMemberList(tagId, groupId, type){
wx.showLoading({
title: '加载中'
});
let query = {
tagId,
groupId,
type
}
wxService.post(`/marketing/shoppingguide/tag/member`, query).then(res => {
if (res) {
const { result, data } = res.data
if (result == 0) {
wx.hideLoading()
this.data.list = data;
this.setData({
list: this.data.list,
});
}
}
})
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
//跳转到会员详情
onTapToMemberInfo(e){
let item = e.currentTarget.dataset.item;
wx.navigateTo({
url: '/shoppingGuid/page/pages/userInfo/userInfo?id=' + item.id,
});
},
//回访
onTapRecall(e){
let item = e.currentTarget.dataset.item;
console.log(item)
},
......@@ -54,7 +81,7 @@ Page({
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
......
{
"navigationBarTitleText": "会员列表",
"navigationBarTitleText": "标签会员列表",
"usingComponents": {}
}
\ No newline at end of file
<!--shoppingGuid/page/pages/saleTaskInfo/saleTaskInfo.wxml-->
<view class='tag-name'>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix'></image>
<label>标签名称</label>
<view class='tag'>7天内新消费2次</view>
<image src='/assets/imgs/shoppingGuide/kpi_task_name.png' mode='widthFix' />
<label>标签名称</label>
<view class='tag'>{{name}}</view>
</view>
<!-- 列表 -->
<view class='list'>
<view class='item' bindtap='onTapToMemberInfo'>
<view class='u-info'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit'></image>
<text>139xxxx2453</text>
</view>
<view class='item-btn'>立即回访</view>
</view>
<view class='list' wx:if="{{list.length}}">
<block wx:for="{{list}}" wx:key="{{index}}" wx:for-item="item">
<view class='item'>
<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' />
<text>{{item.name}}</text>
</view>
<view class='item-btn' data-item="{{item}}" bindtap='onTapRecall'>立即回访</view>
</view>
</block>
<view class='item' bindtap='onTapToMemberInfo'>
<view class='u-info'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit'></image>
<text>139xxxx2453</text>
</view>
<view class='item-btn'>立即回访</view>
</view>
<view class='item' bindtap='onTapToMemberInfo'>
<view class='u-info'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/biaka_default_u_logo.png' mode='aspectFit'></image>
<text>139xxxx2453</text>
</view>
<view class='item-btn'>立即回访</view>
</view>
</view>
<!-- empty -->
<view class='empty' wx:else>数据加载中..</view>
......@@ -7,7 +7,12 @@ page{
font-size: 28rpx;
color: #333333;
}
.no-list {
padding-top:100rpx;
font-size: 28rpx;
color: #666666;
text-align: center;
}
view{
box-sizing: border-box;
-webkit-box-sizing: border-box;
......
// shoppingGuid/page/pages/welcomGuider/welcomGuider.js
const wxService = require('../../../../utils/wxService')
const app = getApp();
wxService.page({
/**
* 页面的初始数据
*/
data: {
code : null,
jsCodeSession : {},
btnIsDisabled : true
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
wx.showLoading({
title: '检查登录状态..',
});
this.qyLogin();
return ;
//先判断是是不是已经登录了
let currentUserInfo = wx.getStorageSync('guidBaseInfo');
let userInfo = wx.getStorageSync('guidInfo');
if (currentUserInfo){
wx.qy.checkSession({
success : res => {
wx.redirectTo({
url: '/shoppingGuid/page/pages/home/home',
});
},
fail : res => { //失效了
this.qyLogin();
}
});
}
else{
this.qyLogin();
}
},
//企业微信登录
qyLogin(){
const currentEnv = wx.getStorageSync('_qyWeChat');
if (currentEnv) {
wx.qy.login({
success: res => {
this.setData({
code: res.code
});
this.jscode2session(res.code);
},
fail: res => {
console.log('fail -----', res)
}
})
}
else {
//不是在企业微信内打开的 提示信息
wx.showToast({
title: '请在企业微信内打开!',
icon: 'none'
});
}
},
//获取session_key
jscode2session(code){
wxService.post(`/member/qiyeweixin/jscode2session?brandId=${app.globalData.brandId}&code=${code}`).then(r => {
this.setData({
jsCodeSession : r.data.data,
btnIsDisabled : false,
});
})
},
//获取企业微信信息
onTapGetEnterpriseUserInfo(){
const currentEnv = wx.getStorageSync('_qyWeChat');
if(currentEnv){
wx.qy.getEnterpriseUserInfo({
success: res => {
this.getGuidUserInfo(res);
},
fail: err => {
console.log('获取企业微信信息失败,失败信息是----', err)
}
})
}
else{
//不是在企业微信内打开的 提示信息
wx.showToast({
title: '请在企业微信内打开!',
icon: 'none'
});
}
},
//授权获取用户信息之后
getGuidUserInfo(userInfo){
wx.showLoading({
title: '正在登录..',
});
//判断是在企业微信中登录
let param = {
brandId: app.globalData.brandId,
deviceid: this.data.jsCodeSession.deviceid,
userid: this.data.jsCodeSession.userid,
corpid: this.data.jsCodeSession.corpid,
};
wxService.post('/member/qiyeweixin/minaLogin', param).then(r => {
wx.setStorageSync('guidInfo', userInfo);
wx.setStorageSync('token', r.data.data.token);
console.log('login token -----', r.data.data.token)
let qiyeLoginUserInfo = r.data.data;
wx.setStorageSync('guidBaseInfo', qiyeLoginUserInfo);
wx.hideLoading();
wx.redirectTo({
url: '/shoppingGuid/page/pages/home/home',
});
})
},
//进入商城
onTapToMall(e){
wx.redirectTo({
url: '/pages/userCenter/userCenter',
})
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
})
\ No newline at end of file
{
"navigationBarTitleText": "欢迎你",
"usingComponents": {}
}
\ No newline at end of file
<!--shoppingGuid/page/pages/welcomGuider/welcomGuider.wxml-->
<view class='login'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/welcom.png' mode='widthFix'></image>
<button type='primary' bindtap='onTapGetEnterpriseUserInfo' disabled='{{btnIsDisabled}}'>立即进入</button>
<button class='enter-mall' bindtap='onTapToMall'>进入商城</button>
</view>
/* shoppingGuid/page/pages/welcomGuider/welcomGuider.wxss */
.login{
padding: 100rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.login image{
width: 160rpx;
margin-bottom: 200rpx;
}
.login button{
width: 300rpx;
font-size: 28rpx;
}
.enter-mall{
background: #ffffff;
color: #333333;
margin-top: 30rpx;
}
\ No newline at end of file
......@@ -14,150 +14,97 @@
<!-- 导购 -->
<view class='guid' wx:if="{{current == 1}}">
<view class='guid-item' bindtap='onTapToGuidCollegeInfo'>
<image src='https://xiedemo.oss-cn-shanghai.aliyuncs.com/walfare_defalut_cover.jpg' mode='widthFix'></image>
<view class='guid-item-title'>
客户进店第一句话要怎么展开快看这里!客户进店第一句话要怎么展开快看这里!客户进店第一句话要怎么展开快看这里!
</view>
<view class='guid-item'
bindtap='onTapToGuidCollegeInfo'
wx:for="{{guidCollege.list}}"
wx:key="guidCollege"
data-index="{{idx}}"
data-item="{{item}}"
wx:for-index="idx"
wx:for-item="item">
<image src="{{item.titleUrl}}" mode='widthFix'></image>
<view class='guid-item-title'>{{item.title}}</view>
</view>
<!-- 空时 -->
<view class='empty' wx:if="{{guidCollege.noData}}">暂无数据~</view>
</view>
<!-- 推荐商品 -->
<view class='recommand-product' wx:if="{{current == 2}}">
<view class='product-item'>
<view class='img'>
<image src='https://xiedemo.oss-cn-shanghai.aliyuncs.com/demo_product_img.jpg' mode='aspectFit'></image>
</view>
<view class='product-info'>
<view class='pro-main-title'>商品主标题</view>
<view class='pro-second-title'>商品副标题,这个是商品的副标题,只显示一行</view>
<view class='price-btn'>
<view class='price'>
<view class='normal theme-text-color'>
¥<text >998</text>
</view>
<view class='plus'>
¥<text>918</text>
<image src='/assets/imgs/shoppingGuide/plus.png' mode='widthFix'></image>
</view>
</view>
<view class='rg-btn'>
<button class='theme-color'>立即推荐</button>
</view>
</view>
</view>
</view>
<view class='product-item'>
<view class='product-item'
wx:for="{{recommandProducts}}"
wx:key="recommandProducts"
data-index="{{idx}}"
data-item="{{item}}"
wx:for-index="idx"
wx:for-item="item" >
<view class='img'>
<image src='https://xiedemo.oss-cn-shanghai.aliyuncs.com/demo_product_img.jpg' mode='aspectFit'></image>
<image src='{{item.productImgUrl}}' mode='aspectFit'></image>
</view>
<view class='product-info'>
<view class='pro-main-title'>商品主标题</view>
<view class='pro-second-title'>商品副标题,这个是商品的副标题,只显示一行</view>
<view class='pro-main-title'>{{item.productName}}</view>
<!-- <view class='pro-second-title'>商品副标题,这个是商品的副标题,只显示一行</view> -->
<view class='price-btn'>
<view class='price'>
<view class='normal theme-text-color'>
¥<text >998</text>
<image src='/assets/imgs/7_1_0/integral-icon.png' mode='aspectFit'></image>
<text >{{item.point}}</text>
</view>
<view class='plus'>
<!-- <view class='plus'>
¥<text>918</text>
<image src='/assets/imgs/shoppingGuide/plus.png' mode='widthFix'></image>
</view>
</view> -->
</view>
<view class='rg-btn'>
<button class='theme-color'>立即推荐</button>
<button class='theme-color' data-item="{{item}}" bindtap='onTapToRecommandProduct'>立即推荐</button>
</view>
</view>
</view>
</view>
<view class='product-item'>
<view class='img'>
<image src='https://xiedemo.oss-cn-shanghai.aliyuncs.com/demo_product_img.jpg' mode='aspectFit'></image>
</view>
<view class='product-info'>
<view class='pro-main-title'>商品主标题</view>
<view class='pro-second-title'>商品副标题,这个是商品的副标题,只显示一行</view>
<view class='price-btn'>
<view class='price'>
<view class='normal theme-text-color'>
¥<text >998</text>
</view>
<view class='plus'>
¥<text>918</text>
<image src='/assets/imgs/shoppingGuide/plus.png' mode='widthFix'></image>
</view>
</view>
<view class='rg-btn'>
<button class='theme-color'>立即推荐</button>
</view>
<!-- 优惠券 -->
<view class='coupon'>
<image src='/assets/imgs/7_1_0/rmb.png' mode='aspectFit'></image>
<text
wx:for="{{item.shareBonuses}}"
wx:key="shareBonuses"
wx:for-index="idx"
wx:for-item="coupon">{{coupon.couponSettingTitle}}</text>
</view>
</view>
</view>
<!-- 空时 -->
<view class='empty' wx:if="{{recommandProductsNoData}}">暂无数据~</view>
<!-- 没有你想要的,去商城看看 -->
<view class='go-mall theme-text-color'>没有你想要的?去商城看看>>></view>
<view class='go-mall theme-text-color' bindtap='onTapToMall'>没有你想要的?去商城看看>>></view>
</view>
<!-- 优惠券福利 -->
<view class='coupons' wx:if="{{current == 3}}">
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png)'>
<view class='coupon-item-lf'>
<view class='coupon-price'>
¥ <text>5</text>
</view>
<view>抵用券</view>
</view>
<view class='coupon-item-rg'>
<view class='qrcode'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/walare_qrcode.png' mode='aspectFit'></image>
</view>
<view class='coupon-title'>满10减5抵用券</view>
<view class='op'>
<view class='text-btn'>
<text class='theme-text-color'>查看详情</text>
</view>
<button class='info-btn' bindtap='onTapToSendConpon'>定向发送</button>
</view>
</view>
</view>
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png)'>
<view class='coupon-item-lf'>
<view class='coupon-price'>
¥ <text>5</text>
</view>
<view>抵用券</view>
</view>
<view class='coupon-item-rg'>
<view class='qrcode'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/walare_qrcode.png' mode='aspectFit'></image>
</view>
<view class='coupon-title'>满10减5抵用券</view>
<view class='op'>
<view class='text-btn'>
<text class='theme-text-color'>查看详情</text>
</view>
<button class='info-btn'>定向发送</button>
</view>
</view>
</view>
<view class='coupon-item' style='background-image:url(https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/coupon_bg.png)'>
<view class='coupon-item' style='background-image:url({{item.imageBg}})'
wx:for="{{coupons.list}}"
wx:key="coupons"
data-index="{{idx}}"
data-item="{{item}}"
wx:for-index="idx"
wx:for-item="item">
<view class='coupon-item-lf'>
<view class='coupon-price'>
¥ <text>5</text>
{{item.couponType != 2 ? '¥' : ''}} <text>{{item.price}}</text>
</view>
<view>抵用券</view>
<view>{{item.typeText}}</view>
</view>
<view class='coupon-item-rg'>
<view class='qrcode'>
<view class='qrcode' data-item="{{item}}" bindtap='onTapShowQrcode'>
<image src='https://bigaka-xie.oss-cn-shanghai.aliyuncs.com/walare_qrcode.png' mode='aspectFit'></image>
</view>
<view class='coupon-title'>满10减5抵用券</view>
<view class='coupon-title'>{{item.title}}</view>
<view class='op'>
<view class='text-btn'>
<text class='theme-text-color'>查看详情</text>
<text class='theme-text-color'>数量:{{item.stock}}</text>
</view>
<button class='info-btn'>定向发送</button>
<button class='info-btn' data-item="{{item}}" bindtap='onTapToSendConpon'>定向发送</button>
</view>
</view>
</view>
<!-- 空时 -->
<view class='empty' wx:if="{{coupons.noData}}">暂无数据~</view>
</view>
</view>
<!-- tabbar -->
......
......@@ -165,6 +165,38 @@ view{
.price .normal{
font-size: 32rpx;
font-weight: bold;
display: flex;
align-items: center;
}
.price .normal image{
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
}
.coupon{
font-size: 24rpx;
display: flex;
align-items: center;
margin-top: 10rpx;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
line-clamp: 1;
-webkit-box-orient: vertical;
}
.coupon image{
width: 30rpx;
height: 30rpx;
margin-right: 10rpx;
}
.coupon text{
margin-right: 10rpx;
}
.price .plus{
......@@ -216,7 +248,7 @@ view{
}
.coupon-price text{
font-size: 40rpx;
font-size: 38rpx;
font-weight: bold;
}
......
......@@ -114,8 +114,11 @@ class Http {
post (url, parmas, channel) {
let baseUserInfo = wx.getStorageSync('_baseUserInfo')
console.log('--------------header-----------------', this.getTentacle())
if(baseUserInfo){
let guideUserInfo = wx.getStorageSync('guidBaseInfo');
// console.log('--------------header-----------------', this.getTentacle())
// console.log('--------------token-----------------', this.getToken())
if (baseUserInfo || guideUserInfo){
return this.request({
url,
method: 'POST',
......
......@@ -20,6 +20,7 @@ const contants = {
TRANSMIT: 16,// "转发统计"
ENJOY: 17,// "点赞统计"
READ: 18, //"阅读统计"
STAFF_RECOMMAND : 19 , //员工推荐
}
}
......
......@@ -23,6 +23,14 @@ const formatDate = date => {
return [year, month, day].map(formatNumber).join('-')
}
function getAge(birth) {
var birthday = new Date(birth.toString().replace(/-/g, "\/"))
// var birthday=new Date(curBir.replace(/-/g, "\/"));
var d=new Date();
var age = d.getFullYear()-birthday.getFullYear()-((d.getMonth()<birthday.getMonth()|| d.getMonth()==birthday.getMonth() && d.getDate()<birthday.getDate())?1:0);
return age
}
/* 获取当前页url */
function getCurrentPageUrl() {
var pages = getCurrentPages() // 获取加载的页面
......@@ -273,6 +281,7 @@ function getUserInfoByBtn(userInfo) {
logger.log(' wx getUserInfoByBtn success res --->', res)
return Promise.all([Promise.resolve(userInfo), Promise.resolve(res)])
}).then((res) => {
logger.log(' wx _userInfo success res --->', res)
wx.setStorageSync('_userInfo', res[0].userInfo)
wx.setStorageSync('_wechatInfo', res[0])
......@@ -282,7 +291,12 @@ function getUserInfoByBtn(userInfo) {
icon: 'none',
mask: true
})
return wxService.post(`/member/minaLogin`, {
const currentEnv = wx.getStorageSync('_qyWeChat')
// let currentLoginUrl = currentEnv ? `/member/qiyeweixin/minaLogin` : `/member/minaLogin`
let currentLoginUrl = `/member/minaLogin`
console.log('登陆', currentLoginUrl)
return wxService.post(`${currentLoginUrl}`, {
code: res[1].code,
wechatInfo: res[0],
brandId: app.globalData.brandId,
......@@ -290,6 +304,7 @@ function getUserInfoByBtn(userInfo) {
}, (err) => {
return Promise.reject(err)
}).then(response => {
console.log('登陆response', response)
logger.log('getCrmUserInfo response', response)
if (response.data.data.rspCode === -1) {
return Promise.reject(response.data.data)
......@@ -365,6 +380,7 @@ function setUserInfo() {
wxService.setGetAuthUserInfo(_getUserInfo);
module.exports = {
getAge,
_getUserInfo,
formatTime,
getSum,
......
......@@ -163,8 +163,7 @@ class WXService extends Http {
const currentEnv = wx.getStorageSync('_qyWeChat')
console.log('全局', currentEnv)
return new Promise((resolve, reject) => {
// 企业 wx.qy.login
currentEnv ? wx.qy.login : wx.login({
wx.login({
success: (res) => {
resolve(res)
wx.setStorageSync('_loginCode', res.code)
......@@ -173,6 +172,28 @@ class WXService extends Http {
reject(res)
}
})
// 企业 wx.qy.login
// if (currentEnv) {
// wx.qy.login({
// success: (res) => {
// resolve(res)
// wx.setStorageSync('_loginCode', res.code)
// },
// fail: (res) => {
// reject(res)
// }
// })
// } else {
// wx.login({
// success: (res) => {
// resolve(res)
// wx.setStorageSync('_loginCode', res.code)
// },
// fail: (res) => {
// reject(res)
// }
// })
// }
})
}
......
......@@ -4,6 +4,15 @@ function date(time,format){
return date.getFullYear() + '-' + date.getMonth() + 1 + '-'+ date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' +date.getSeconds();
}
function toPercent(num, total) {
return (Math.round(num / total * 10000) / 100.00 + "%");// 小数点后两位百分比
}
function phoneFormat(phone) {
var curPhone = phone.toString()
var mphone = curPhone.substring(0, 7) + 'xxxx'
return mphone
};
function numberFormat(val,d){
if(val){
return val.toFixed(d || 2);
......@@ -46,6 +55,8 @@ function hanlerLinkNeedAuth(link){
module.exports = {
toPercent:toPercent,
phoneFormat: phoneFormat,
formateUrl:formateUrl,
numberFormat: numberFormat,
date: date,
......
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