更新Note

1. 修复购物车,订单和退单后后置任务正确执行
	2. 修复佣金记录金额和详情
	3. 修复管理端 移动应用界面下订单管理数据统计不准确的问题
	4. 修复短信API升级-后台使用一号通
	5. 修复用户管理相关问题
	6. 修复核销点核销后核销地址不准确
	7. 修复资源同步云服务的问题
新增功能
	1. 秒杀
		a. 秒杀时段配置
		b. 秒杀商品维护
	2. 财务管理
		a. 申请提现
		b. 财务记录
			i. 充值记录
			ii. 资金监控
		c. 佣金记录
	3. 普通商品显示该商品正在参加的活动信息[秒杀]
This commit is contained in:
stivepeim
2020-11-05 16:21:06 +08:00
parent 912cf6403e
commit 6827148d7a
574 changed files with 45105 additions and 4899 deletions

View File

@@ -55,13 +55,13 @@
*/
onLoad: function(options) {
let that = this;
if (!options.product_id) return that.$util.Tips({
if (!options.productId) return that.$util.Tips({
title: '缺少参数'
}, {
tab: 3,
url: 1
});
that.product_id = options.product_id;
that.productId = options.productId;
},
onShow: function() {
this.getProductReplyCount();
@@ -74,7 +74,7 @@
*/
getProductReplyCount: function() {
let that = this;
getReplyConfig(that.product_id).then(res => {
getReplyConfig(that.productId).then(res => {
that.$set(that,'replyData',res.data);
});
},
@@ -87,7 +87,7 @@
if (that.loading) return;
that.loading = true;
that.loadTitle = '';
getReplyList(that.product_id, {
getReplyList(that.productId, {
page: that.page,
limit: that.limit,
type: that.type,

View File

@@ -151,7 +151,7 @@
this.page = this.page + 1;
})
.catch(err => {
this.$dialog.error(err.msg);
this.$dialog.error(err);
});
}
},

View File

@@ -24,7 +24,7 @@
<view class='name'>{{system_store.name}}
<text class='phone'>{{system_store.phone}}</text>
</view>
<view> {{system_store.address}}{{", " + system_store.detailedAddress}}</view>
<view class="line1"> {{system_store.address}}{{", " + system_store.detailedAddress}}</view>
</view>
<view class='iconfont icon-jiantou'></view>
</block>
@@ -271,7 +271,8 @@
from: '',
news: true,
again: false,
addAgain: false
addAgain: false,
secKill: false //是否是秒杀
};
},
computed: mapGetters(['isLogin']),
@@ -296,6 +297,7 @@
this.news = options.new || true;
this.again = options.again || false;
this.addAgain = options.addAgain || false;
this.secKill = options.secKill || false;
if (this.isLogin) {
this.getaddressInfo();
this.getConfirm();
@@ -375,7 +377,11 @@
let list = res.data.list || [];
this.$set(this, 'storeList', list);
this.$set(this, 'system_store', list[0]);
}).catch(err => {})
}).catch(err => {
return this.$util.Tips({
title: err
});
})
},
// 关闭地址弹窗;
changeClose: function() {
@@ -501,7 +507,7 @@
*/
getConfirm: function() {
let that = this;
orderConfirm(that.cartId,that.news,this.addAgain).then(res => {
orderConfirm(that.cartId,that.news,this.addAgain,this.secKill).then(res => {
that.$set(that, 'userInfo', res.data.userInfo);
that.$set(that, 'integral', res.data.userInfo.integral);
that.$set(that, 'cartInfo', res.data.cartInfo);
@@ -512,7 +518,7 @@
that.$set(that, 'priceGroup', res.data.priceGroup);
that.$set(that, 'totalPrice', that.$util.$h.Add(parseFloat(res.data.priceGroup.totalPrice), parseFloat(res.data
.priceGroup.storePostage)));
that.$set(that, 'seckillId', parseInt(res.data.seckill_id));
that.$set(that, 'seckillId', parseInt(res.data.secKillId));
that.$set(that, 'store_self_mention', res.data.storeSelfMention == 'true'?true:false);
that.cartArr[1].title = '可用余额:' + res.data.userInfo.nowMoney;
that.cartArr[0].payStatus = res.data.payWeixinOpen || 0
@@ -526,15 +532,14 @@
// that.$set(that, 'cartArr', that.cartArr);
that.$set(that, 'ChangePrice', that.totalPrice);
that.getBargainId();
that.getCouponList();
if(!that.secKill) that.getCouponList();
}).catch(err => {
console.log(err, 'err')
// return this.$util.Tips({
// title: err
// }, {
// tab: 3,
// url: 1
// });
return this.$util.Tips({
title: err
}, {
tab: 3,
url: 1
});
});
},
/*

View File

@@ -147,8 +147,6 @@
let that = this;
that.isAsc = isAsc;
that.sort = sortKey+isAsc;
console.log('ppppppp');
console.log(sortKey+isAsc);
that.sortKey = sortKey;
that.page = 1;
that.limit = 20;
@@ -202,10 +200,10 @@
recordListNew = recordList.concat(recordListData);
that.total = res.data.total;
that.totalLevel = res.data.totalLevel;
that.teamCount = that.$util.$h.Add(Number(res.data.total), Number(res.data.totalLevel));
that.teamCount = res.data.count;
that.status = limit > len;
that.page = page + 1;
that.$set(that, 'recordList', recordListNew);
that.$set(that, 'recordList', recordListNew || []);
});
}
},

View File

@@ -27,11 +27,12 @@
</view>
<view class='text line1'>{{child.nickname}}</view>
</view>
<view class='money' v-if="child.type == 'brokerage'">返佣<text class='font-color'>{{child.number}}</text></view>
<view class='money' v-else>暂未返佣<text class='font-color'>{{child.number}}</text></view>
<view class='money'>返佣<text class='font-color'>{{child.number}}</text></view>
<!-- <view class='money' v-if="child.type == 'brokerage'">返佣<text class='font-color'>{{child.number}}</text></view>
<view class='money' v-else>暂未返佣<text class='font-color'>{{child.number}}</text></view> -->
</view>
<view class='bottom'>
<view><text class='name'>订单编号</text>{{child.order_id}}</view>
<view><text class='name'>订单编号</text>{{child.orderId}}</view>
<view><text class='name'>下单时间</text>{{child.time}}</view>
</view>
</view>

View File

@@ -111,7 +111,7 @@
})
.then(res => {
that.$util.Tips({
title: res.msg
title: res.message
}, {
tab: 3
})
@@ -138,7 +138,7 @@
code: that.codeVal
})
.then(res => {
that.$dialog.success(res.msg);
that.$dialog.success(res.message);
that.sendCode();
})
.catch(res => {

View File

@@ -51,6 +51,19 @@
<view class='name'>提现</view>
<view class='input'><input :placeholder='"最低提现金额"+minPrice' placeholder-class='placeholder' name="money" type='digit'></input></view>
</view>
<view class='item acea-row row-top row-between'>
<view class='name'>收款码</view>
<view class="input acea-row">
<view class="picEwm" v-if="qrcodeUrlW">
<image :src="qrcodeUrlW"></image>
<text class='iconfont icon-guanbi1 font-color' @click='DelPicW'></text>
</view>
<view class='pictrue acea-row row-center-wrapper row-column' @click='uploadpic("W")' v-else>
<text class='iconfont icon-icon25201'></text>
<view>上传图片</view>
</view>
</view>
</view>
<view class='tip'>
当前可提现金额: <text class="price">{{commission.commissionCount}},</text>冻结佣金{{commission.brokenCommission}}
</view>
@@ -70,6 +83,19 @@
<view class='name'>提现</view>
<view class='input'><input :placeholder='"最低提现金额"+minPrice' placeholder-class='placeholder' name="money" type='digit'></input></view>
</view>
<view class='item acea-row row-top row-between'>
<view class='name'>收款码</view>
<view class="input acea-row">
<view class="picEwm" v-if="qrcodeUrlZ">
<image :src="qrcodeUrlZ"></image>
<text class='iconfont icon-guanbi1 font-color' @click='DelPicZ'></text>
</view>
<view class='pictrue acea-row row-center-wrapper row-column' @click='uploadpic("Z")' v-else>
<text class='iconfont icon-icon25201'></text>
<view>上传图片</view>
</view>
</view>
</view>
<view class='tip'>
当前可提现金额: <text class="price">{{commission.commissionCount}},</text>冻结佣金{{commission.brokenCommission}}
</view>
@@ -132,7 +158,10 @@
isClone: false,
isAuto: false, //没有授权的不会自动授权
isShowAuth: false, //是否隐藏授权
commission:{}
commission:{},
qrcodeUrlW:"",
qrcodeUrlZ:"",
isCommitted: false //防止多次提交
};
},
computed: mapGetters(['isLogin']),
@@ -140,7 +169,7 @@
if (this.isLogin) {
this.getUserInfo();
this.getUserExtractBank();
this.getBrokerageCommission();
//this.getBrokerageCommission();
} else {
// #ifdef H5 || APP-PLUS
toLogin();
@@ -152,12 +181,37 @@
}
},
methods: {
uploadpic: function (type) {
let that = this;
that.$util.uploadImageOne({
url: 'user/upload/image',
name: 'multipart',
model: "user",
pid: 1
}, function(res) {
if(type==='W'){
that.qrcodeUrlW = res.data.url;
}else{
that.qrcodeUrlZ = res.data.url;
}
});
},
/**
* 删除图片
*
*/
DelPicW: function () {
this.qrcodeUrlW = "";
},
DelPicZ: function () {
this.qrcodeUrlZ = "";
},
onLoadFun: function() {
this.getUserInfo();
this.getUserExtractBank();
this.getBrokerageCommission();
// this.getBrokerageCommission();
},
getBrokerageCommission(){
getBrokerageCommission: function(){
brokerageCommission().then(res=>{
this.commission = res.data;
})
@@ -194,48 +248,55 @@
subCash: function(e) {
let that = this,
value = e.detail.value;
if (that.currentTab == 0) { //银行卡
if (value.name.length == 0) return this.$util.Tips({
title: '请填写持卡人姓名'
if (that.currentTab == 0) { //银行卡
if (value.name.length == 0) return this.$util.Tips({
title: '请填写持卡人姓名'
});
if (value.cardum.length == 0) return this.$util.Tips({
title: '请填写卡号'
});
if (that.index == 0) return this.$util.Tips({
title: "请选择银行"
});
value.extractType = 'bank';
value.bankName = that.array[that.index];
} else if (that.currentTab == 1) { //微信
value.extractType = 'weixin';
if (value.name.length == 0) return this.$util.Tips({
title: '请填写微信号'
});
value.wechat = value.name;
value.qrcodeUrl = that.qrcodeUrlW;
} else if (that.currentTab == 2) { //支付宝
value.extractType = 'alipay';
if (value.name.length == 0) return this.$util.Tips({
title: '请填写账号'
});
value.alipayCode = value.name;
value.qrcodeUrl = that.qrcodeUrlZ;
}
if (value.money.length == 0) return this.$util.Tips({
title: '请填写提现金额'
});
if (value.cardum.length == 0) return this.$util.Tips({
title: '请填写卡号'
if (value.money < that.minPrice) return this.$util.Tips({
title: '提现金额不能低于' + that.minPrice
});
if (that.index == 0) return this.$util.Tips({
title: "请选择银行"
if(this.isCommitted==false){
this.isCommitted=true;
extractCash(value).then(res => {
that.getUserInfo();
return this.$util.Tips({
title: "提现成功",
icon: 'success'
},{ tab: 2, url: '/pages/users/user_spread_user/index' });
this.isCommitted=false;
}).catch(err => {
this.isCommitted=false;
return this.$util.Tips({
title: err
});
});
value.extractType = 'bank';
value.bankname = that.array[that.index];
} else if (that.currentTab == 1) { //微信
value.extractType = 'weixin';
if (value.name.length == 0) return this.$util.Tips({
title: '请填写微信号'
});
value.wechat = value.name;
} else if (that.currentTab == 2) { //支付宝
value.extractType = 'alipay';
if (value.name.length == 0) return this.$util.Tips({
title: '请填写账号'
});
value.alipayCode = value.name;
}
if (value.money.length == 0) return this.$util.Tips({
title: '请填写提现金额'
});
if (value.money < that.minPrice) return this.$util.Tips({
title: '提现金额不能低于' + that.minPrice
});
extractCash(value).then(res => {
that.getUserInfo();
return this.$util.Tips({
title: "提现成功",
icon: 'success'
},{ tab: 2, url: '/pages/users/user_spread_user/index' });
}).catch(err => {
return this.$util.Tips({
title: err
});
});
}
}
}
@@ -245,22 +306,22 @@
page {
background-color: #fff !important;
}
.cash-withdrawal .nav {
height: 130rpx;
box-shadow: 0 10rpx 10rpx #f8f8f8;
}
.cash-withdrawal .nav .item {
font-size: 26rpx;
flex: 1;
text-align: center;
}
.cash-withdrawal .nav .item~.item {
border-left: 1px solid #f0f0f0;
}
.cash-withdrawal .nav .item .iconfont {
width: 40rpx;
height: 40rpx;
@@ -272,53 +333,87 @@
font-size: 22rpx;
box-sizing: border-box;
}
.cash-withdrawal .nav .item .iconfont.on {
background-color: #e93323;
color: #fff;
border-color: #e93323;
}
.cash-withdrawal .nav .item .line {
width: 2rpx;
height: 20rpx;
margin: 0 auto;
transition: height 0.3s;
}
.cash-withdrawal .nav .item .line.on {
height: 39rpx;
}
.cash-withdrawal .wrapper .list {
padding: 0 30rpx;
}
.cash-withdrawal .wrapper .list .item {
border-bottom: 1rpx solid #eee;
height: 107rpx;
min-height: 28rpx;
font-size: 30rpx;
color: #333;
padding: 39rpx 0;
}
.cash-withdrawal .wrapper .list .item .name {
width: 130rpx;
}
.cash-withdrawal .wrapper .list .item .input {
width: 505rpx;
}
.cash-withdrawal .wrapper .list .item .input .placeholder {
color: #bbb;
}
.cash-withdrawal .wrapper .list .item .picEwm,.cash-withdrawal .wrapper .list .item .pictrue{
width:140rpx;
height:140rpx;
border-radius:3rpx;
position: relative;
margin-right: 23rpx;
}
.cash-withdrawal .wrapper .list .item .picEwm image{
width:100%;
height:100%;
border-radius:3rpx;
}
.cash-withdrawal .wrapper .list .item .picEwm .icon-guanbi1{
position:absolute;
right: -14rpx;
top: -16rpx;
font-size:40rpx;
}
.cash-withdrawal .wrapper .list .item .pictrue{
border:1px solid rgba(221,221,221,1);
font-size:22rpx;
color: #BBBBBB;
}
.cash-withdrawal .wrapper .list .item .pictrue .icon-icon25201{
font-size: 47rpx;
color: #DDDDDD;
margin-bottom: 3px;
}
.cash-withdrawal .wrapper .list .tip {
font-size: 26rpx;
color: #999;
margin-top: 25rpx;
}
.cash-withdrawal .wrapper .list .bnt {
font-size: 32rpx;
color: #fff;
@@ -329,14 +424,14 @@
line-height: 90rpx;
margin: 64rpx auto;
}
.cash-withdrawal .wrapper .list .tip2 {
font-size: 26rpx;
color: #999;
text-align: center;
margin: 44rpx 0 20rpx 0;
}
.cash-withdrawal .wrapper .list .value {
height: 135rpx;
line-height: 135rpx;
@@ -344,18 +439,18 @@
width: 690rpx;
margin: 0 auto;
}
.cash-withdrawal .wrapper .list .value input {
font-size: 80rpx;
color: #282828;
height: 135rpx;
text-align: center;
}
.cash-withdrawal .wrapper .list .value .placeholder2 {
color: #bbb;
}
.price {
color: $theme-color;
}

View File

@@ -198,7 +198,7 @@
});
}).catch(msg => {
return that.$util.Tips({
title: msg.message || '保存失败,您并没有修改'
title: msg || '保存失败,您并没有修改'
}, {
tab: 3,
url: 1

View File

@@ -243,7 +243,7 @@
},
fail: function(res) {
return that.$util.Tips({
title: res.errMsg
title: res
});
},
complete: function(res) {},
@@ -279,7 +279,7 @@
},
fail: function(res) {
return that.$util.Tips({
title: res.errMsg
title: res
});
},
complete: function(res) {},
@@ -292,13 +292,13 @@
})
} else {
return that.$util.Tips({
title: resFile.errMsg
title: resFile
});
}
},
fail(res) {
return that.$util.Tips({
title: res.errMsg
title: res
});
}
})

View File

@@ -11,7 +11,31 @@
<view class='iconfont icon-jinbi1'></view>
</view>
</view>
<view class='sign-record'>
<view class='sign-record' v-if="recordType == 4">
<block v-for="(item,index) in recordList" :key="index" v-if="recordList.length>0">
<view class='list'>
<view class='item'>
<view class='data'>{{item.date}}</view>
<view class='listn'>
<block v-for="(child,indexn) in item.list" :key="indexn">
<view class='itemn acea-row row-between-wrapper'>
<view>
<view class='name line1'>{{child.status === -1 ? '提现失败' : '提现成功'}}<span v-show="child.status === -1" style="font-size: 12px;color: red;">{{'('+child.failMsg+')'}}</span></view>
<view>{{child.createTime}}</view>
</view>
<view class='num font-color' v-if="child.status == -1">+{{child.extractPrice}}</view>
<view class='num' v-else>-{{child.extractPrice}}</view>
</view>
</block>
</view>
</view>
</view>
</block>
<view v-if="recordList.length == 0">
<emptyPage title='暂无提现记录~'></emptyPage>
</view>
</view>
<view class='sign-record' v-else>
<block v-for="(item,index) in recordList" :key="index" v-if="recordList.length>0">
<view class='list'>
<view class='item'>
@@ -46,7 +70,9 @@
<script>
import {
getCommissionInfo,
getSpreadInfo
getSpreadInfo,
getRecordApi,
getCountApi
} from '@/api/user.js';
import {
toLogin
@@ -104,8 +130,8 @@
});
this.name = '提现总额';
this.recordType = 4;
this.getRecordList();
this.getRecordListCount();
this.getList();
this.getCount();
} else if (type == 2) {
uni.setNavigationBarTitle({
title: "佣金记录"
@@ -146,6 +172,35 @@
authColse: function(e) {
this.isShowAuth = e
},
getList: function() {
let that = this;
let recordList = that.recordList;
let recordListNew = [];
if (that.status == true) return;
getRecordApi({
page: that.page,
limit: that.limit
}).then(res => {
console.log(res)
let len = res.data.list.length;
let recordListData = res.data.list;
recordListNew = recordList.concat(recordListData);
that.status = that.limit > len;
that.page = that.page + 1;
that.$set(that, 'recordList', recordListNew);
console.log(that.recordList)
});
},
getCount: function() {
let that = this;
if (status == true) return;
getCountApi({
page: that.page,
limit: that.limit
}).then(res => {
that.extractCount = res.data.count;
});
},
getRecordList: function() {
let that = this;
let page = that.page;

View File

@@ -10,11 +10,11 @@
<view class='profit acea-row row-between-wrapper'>
<view class='item'>
<view>昨日收益</view>
<view class='money'>{{spreadInfo.lastDayCount}}</view>
<view class='money'>{{spreadInfo.lastDayCount ? Number(spreadInfo.lastDayCount).toFixed(2) : 0}}</view>
</view>
<view class='item'>
<view>累积已提</view>
<view class='money'>{{spreadInfo.extractCount}}</view>
<view class='money'>{{spreadInfo.extractCount ? Number(spreadInfo.extractCount).toFixed(2) : 0}}</view>
</view>
</view>
</view>

View File

@@ -167,7 +167,7 @@
that.levelInfo = res.data.experience;
}).catch(function(res) {
return that.$util.Tips({
title: res.msg
title: res
});
})
},
@@ -195,7 +195,7 @@
}).catch(function(res) {
return that.$util.Tips({
title: res.msg
title: res
});
})
},

View File

@@ -248,7 +248,7 @@
time: time
});
self.$util.Tips({
title:res.msg,
title:res,
icon:'success'
},{
tab:3
@@ -259,7 +259,7 @@
.catch(res => {
uni.hideLoading();
uni.showToast({
title: res.msg,
title: res,
icon: 'none',
duration: 2000
});