初步接口测完
This commit is contained in:
parent
3f3c0095c8
commit
e6ec7ecd96
@ -18,10 +18,11 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
buildingList:(community_id,status)=>request.get('/api/order/community_building/count',{community_id,status}),
|
buildingList:(community_id,status)=>request.get('/api/order/community_building/count',{community_id,status}),
|
||||||
list:(data)=>request.get('/api/order/deliveryman/list',data,true),
|
list:(data)=>request.get('/api/order/deliveryman/list',data,{delayLoading:true}),
|
||||||
|
detail:(orderid)=>request.get(`/api/order/${orderid}`),
|
||||||
|
|
||||||
statusDetail:(community_id)=>request.get('/api/order/status/count',{community_id}),
|
statusDetail:(community_id)=>request.get('/api/order/status/count',{community_id}),
|
||||||
receive:(orderid)=>request.post(`/api/order/${orderid}/deliveryman/receive`),
|
receive:(orderid)=>request.post(`/api/order/${orderid}/deliveryman/receive`),
|
||||||
pickup:(orderid)=>request.post(`/api/order/${orderid}/deliveryman/pickup`),
|
pickup:(orderid)=>request.post(`/api/order/${orderid}/deliveryman/pickup`),
|
||||||
complete:(orderid,images)=>request.post(`/api/order/${orderid}/deliveryman/complete`,{images:JSON.stringify(images)})
|
complete:(orderid,images)=>request.post(`/api/order/${orderid}/deliveryman/complete`,{images:images})
|
||||||
}
|
}
|
||||||
@ -4,7 +4,7 @@ let app = getApp();
|
|||||||
const sendRequest = (options)=>{
|
const sendRequest = (options)=>{
|
||||||
if(!app)app = getApp();
|
if(!app)app = getApp();
|
||||||
let timer;
|
let timer;
|
||||||
if(options.delayLoading){
|
if(options.options.delayLoading){
|
||||||
timer = setTimeout(()=>{
|
timer = setTimeout(()=>{
|
||||||
wx.showLoading({
|
wx.showLoading({
|
||||||
title: '加载中...',
|
title: '加载中...',
|
||||||
@ -23,16 +23,21 @@ const sendRequest = (options)=>{
|
|||||||
if(result.data.code==200){
|
if(result.data.code==200){
|
||||||
rs(result.data.data);
|
rs(result.data.data);
|
||||||
}else{
|
}else{
|
||||||
wx.showToast({
|
|
||||||
icon:'error',
|
if(!options.options.noTips){
|
||||||
title: result.data.message,
|
wx.showToast({
|
||||||
});
|
icon:'error',
|
||||||
|
title: result.data.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
rj(result.data);
|
rj(result.data);
|
||||||
}
|
}
|
||||||
}else if(result.statusCode==401){
|
}else if(result.statusCode==401){
|
||||||
wx.navigateTo({
|
wx.navigateTo({
|
||||||
url: '/pages/login/login',
|
url: '/pages/login/login',
|
||||||
})
|
})
|
||||||
|
}else{
|
||||||
|
rj(result.data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -54,16 +59,16 @@ const sendRequest = (options)=>{
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
baseUrl:baseUrl,
|
baseUrl:baseUrl,
|
||||||
get(url,data,delayLoading){
|
get(url,data,options){
|
||||||
return sendRequest({url,method:'get',data,delayLoading});
|
return sendRequest({url,method:'get',data,options:options||{}});
|
||||||
},
|
},
|
||||||
post(url,data){
|
post(url,data,options){
|
||||||
return sendRequest({url,method:'post',data});
|
return sendRequest({url,method:'post',data,options:options||{}});
|
||||||
},
|
},
|
||||||
put(url,data){
|
put(url,data,options){
|
||||||
return sendRequest({url,method:'put',data});
|
return sendRequest({url,method:'put',data,options:options||{}});
|
||||||
},
|
},
|
||||||
delete(url,data){
|
delete(url,data,options){
|
||||||
return sendRequest({url,method:'delete',data});
|
return sendRequest({url,method:'delete',data,options:options||{}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
17
api/user.js
17
api/user.js
@ -9,11 +9,26 @@ export default {
|
|||||||
login:(phone,password)=>request.post('/api/user/password-login',{phone,password,role:'deliveryman'}),
|
login:(phone,password)=>request.post('/api/user/password-login',{phone,password,role:'deliveryman'}),
|
||||||
userInfo:()=>request.get('/api/user/info'),
|
userInfo:()=>request.get('/api/user/info'),
|
||||||
summary:()=>request.get('/api/account/summary'),
|
summary:()=>request.get('/api/account/summary'),
|
||||||
|
orderSummary:()=>request.get('/api/order/deliveryman/summary'),
|
||||||
incomeList:(data)=>request.get('/api/account/details',data),
|
incomeList:(data)=>request.get('/api/account/details',data),
|
||||||
getRNAuth:()=>request.get('/api/user/auth'),
|
getRNAuth:()=>request.get('/api/user/auth',{noTips:true}),
|
||||||
setRNAuth:(data)=>request.post('/api/user/auth',data),
|
setRNAuth:(data)=>request.post('/api/user/auth',data),
|
||||||
|
|
||||||
|
bankCard:{
|
||||||
|
list:()=>request.get('/api/bank-cards'),
|
||||||
|
add:(data)=>request.post('/api/bank-cards',data),
|
||||||
|
delete:(card_id)=>request.delete(`/api/bank-cards/${card_id}`)
|
||||||
|
},
|
||||||
|
verifyCode:(phone)=>request.post('/api/user/send-code',{phone}),
|
||||||
|
modifyPassword:(new_password,verify_code)=>request.post('/api/user/change-password',{new_password,verify_code}),
|
||||||
|
|
||||||
|
withdraw:{
|
||||||
|
add:(bank_card_id,amount)=>request.post('/api/withdraw',{bank_card_id,amount}),
|
||||||
|
list:(status)=>request.get('/api/withdraw/user',status?{status}:{}),
|
||||||
|
},
|
||||||
|
|
||||||
uploadImg(file,progress){
|
uploadImg(file,progress){
|
||||||
|
if(!app)app = getApp();
|
||||||
return new Promise((rs,rj)=>{
|
return new Promise((rs,rj)=>{
|
||||||
const task = wx.uploadFile({
|
const task = wx.uploadFile({
|
||||||
filePath: file.tempFilePath,
|
filePath: file.tempFilePath,
|
||||||
|
|||||||
46
app.js
46
app.js
@ -1,8 +1,9 @@
|
|||||||
import userApi from './api/user';
|
import userApi from './api/user';
|
||||||
const token = wx.getStorageSync('accessToken');
|
const token = wx.getStorageSync('accessToken');
|
||||||
|
// console.log()
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
App({
|
App({
|
||||||
|
verifyCodeWaitingTime:60,
|
||||||
onLaunch() {
|
onLaunch() {
|
||||||
if(!token){
|
if(!token){
|
||||||
wx.navigateTo({
|
wx.navigateTo({
|
||||||
@ -47,6 +48,49 @@ App({
|
|||||||
this.globalData.summaryGetTime = new Date();
|
this.globalData.summaryGetTime = new Date();
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
validateForm(rules,page){
|
||||||
|
const result = [];
|
||||||
|
for(var key in rules){
|
||||||
|
((rules[key] instanceof Array)?rules[key]:[rules[key]]).map((item)=>{
|
||||||
|
let valid = true;
|
||||||
|
//非空
|
||||||
|
if(item.required){
|
||||||
|
if(page.data[key].trim()==''){
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}else if(item.length){
|
||||||
|
//绝对长度
|
||||||
|
if(page.data[key].trim().length!=item.length){
|
||||||
|
valid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(valid){
|
||||||
|
page.setData({
|
||||||
|
[`${key}Message`]:''
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
page.setData({
|
||||||
|
[`${key}Message`]:item.message
|
||||||
|
});
|
||||||
|
result.push({
|
||||||
|
[key]:item.message
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
validateInput(rule,page){
|
||||||
|
if(rule.required){
|
||||||
|
if(page.data[key].trim()==''){
|
||||||
|
page.setData({
|
||||||
|
[`${key}Message`]:rule.message
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
},
|
||||||
globalData: {
|
globalData: {
|
||||||
userInfo: null,
|
userInfo: null,
|
||||||
accessToken:token,
|
accessToken:token,
|
||||||
|
|||||||
4
app.json
4
app.json
@ -9,7 +9,9 @@
|
|||||||
"pages/user/income/index",
|
"pages/user/income/index",
|
||||||
"pages/user/rnAuth/index",
|
"pages/user/rnAuth/index",
|
||||||
"pages/user/bank/index/index",
|
"pages/user/bank/index/index",
|
||||||
"pages/user/bank/editor/index"
|
"pages/user/bank/editor/index",
|
||||||
|
"pages/user/password/index",
|
||||||
|
"pages/withdraw/list/index"
|
||||||
],
|
],
|
||||||
"window": {
|
"window": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
|
|||||||
26
app.wxss
26
app.wxss
@ -39,7 +39,7 @@ button[plain]{
|
|||||||
border: 1rpx solid rgba(255, 195, 0, 0.5);
|
border: 1rpx solid rgba(255, 195, 0, 0.5);
|
||||||
color: #FFC300;
|
color: #FFC300;
|
||||||
}
|
}
|
||||||
button:not([plain])[type=primary]:hover{
|
button:not([plain]):not([disabled])[type=primary]:hover{
|
||||||
background-color:var(--main-hover-color);
|
background-color:var(--main-hover-color);
|
||||||
}
|
}
|
||||||
button[type=default]{
|
button[type=default]{
|
||||||
@ -224,7 +224,6 @@ page-container .content{
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding:0 40rpx;
|
padding:0 40rpx;
|
||||||
min-height: 116rpx;
|
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
@ -251,13 +250,28 @@ page-container .content{
|
|||||||
}
|
}
|
||||||
.cells .cell-bd{
|
.cells .cell-bd{
|
||||||
flex:1;
|
flex:1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
position:relative;
|
||||||
|
min-height: 116rpx;
|
||||||
|
}
|
||||||
|
.cells .cell-bd .error{
|
||||||
|
color:red;
|
||||||
|
position: absolute;
|
||||||
|
left:0;bottom:10rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
}
|
||||||
|
.cells .cell-bd input{
|
||||||
|
height:100rpx;
|
||||||
}
|
}
|
||||||
.cells .cell-ft{
|
.cells .cell-ft{
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-right:40rpx;
|
|
||||||
color:#999;
|
color:#999;
|
||||||
}
|
}
|
||||||
.cells .cell-ft::after{
|
.cells.cells-access .cell-ft{
|
||||||
|
padding-right: 40rpx;
|
||||||
|
}
|
||||||
|
.cells.cells-access .cell-ft::after{
|
||||||
content:" ";
|
content:" ";
|
||||||
width:24rpx;height:48rpx;
|
width:24rpx;height:48rpx;
|
||||||
-webkit-mask-position:0 0;
|
-webkit-mask-position:0 0;
|
||||||
@ -309,6 +323,10 @@ page-container .content{
|
|||||||
navigator button{
|
navigator button{
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
.navigator-hover{
|
||||||
|
background-color: transparent;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.list-empty{
|
.list-empty{
|
||||||
|
|||||||
@ -22,6 +22,7 @@ Page({
|
|||||||
userInfo:{},
|
userInfo:{},
|
||||||
userInfoTrigger:false,
|
userInfoTrigger:false,
|
||||||
summary:{},
|
summary:{},
|
||||||
|
orderSummary:{},
|
||||||
statusDetail:{
|
statusDetail:{
|
||||||
created:{
|
created:{
|
||||||
key:'CREATED',value:0,text:"待接单"
|
key:'CREATED',value:0,text:"待接单"
|
||||||
@ -55,10 +56,7 @@ Page({
|
|||||||
scrollViewHeight:windowInfo.windowHeight-windowInfo.statusBarHeight-44 - 125
|
scrollViewHeight:windowInfo.windowHeight-windowInfo.statusBarHeight-44 - 125
|
||||||
});
|
});
|
||||||
|
|
||||||
app.getUserInfo().then((data)=>{
|
this.getUserInfo().then(()=>{
|
||||||
this.setData({
|
|
||||||
userInfo:data
|
|
||||||
});
|
|
||||||
return this.loadStatusDetail();
|
return this.loadStatusDetail();
|
||||||
}).then((data)=>{
|
}).then((data)=>{
|
||||||
return this.loadBuilding();
|
return this.loadBuilding();
|
||||||
@ -71,20 +69,30 @@ Page({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getUserInfo(){
|
async getUserInfo(){
|
||||||
app.forceGetUserInfo().then((data)=>{
|
await app.forceGetUserInfo().then((data)=>{
|
||||||
this.setData({
|
this.setData({
|
||||||
userInfo:data,
|
userInfo:data,
|
||||||
userInfoTrigger:false
|
userInfoTrigger:false
|
||||||
})
|
})
|
||||||
|
});
|
||||||
|
userApi.orderSummary().then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
orderSummary:data
|
||||||
|
})
|
||||||
|
});
|
||||||
|
userApi.summary().then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
summary:data
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
setStatus(event){
|
setStatus(event){
|
||||||
const status = event.currentTarget.dataset.item;
|
const status = event.currentTarget.dataset.item;
|
||||||
console.log(status);
|
console.log(status);
|
||||||
//先不setData 让加载出来之后再设置
|
//先不setData 让加载出来之后再设置
|
||||||
|
this.data.statusDetailKey = status.key.toLowerCase();
|
||||||
this.loadBuilding().then((data)=>{
|
this.loadBuilding().then((data)=>{
|
||||||
this.data.statusDetailKey = status.key.toLowerCase();
|
|
||||||
this.data.pager.pageIndex = 0;
|
this.data.pager.pageIndex = 0;
|
||||||
this.data.pager.loadAll = false;
|
this.data.pager.loadAll = false;
|
||||||
this.loadList();
|
this.loadList();
|
||||||
@ -109,8 +117,8 @@ Page({
|
|||||||
},
|
},
|
||||||
async loadStatusDetail(){
|
async loadStatusDetail(){
|
||||||
const data = await orderApi.statusDetail(this.data.userInfo.community_id);
|
const data = await orderApi.statusDetail(this.data.userInfo.community_id);
|
||||||
|
this.data.statusDetail.completed.value = 0;
|
||||||
data.map((item)=>{
|
data.map((item)=>{
|
||||||
this.data.statusDetail.completed.value = 0;
|
|
||||||
if(item.status==this.data.orderStatus.unpaid||item.status==this.data.orderStatus.completed){
|
if(item.status==this.data.orderStatus.unpaid||item.status==this.data.orderStatus.completed){
|
||||||
this.data.statusDetail.completed.value += item.count;
|
this.data.statusDetail.completed.value += item.count;
|
||||||
}else{
|
}else{
|
||||||
@ -119,14 +127,19 @@ Page({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
console.log(this.data.statusDetail);
|
||||||
this.setData({
|
this.setData({
|
||||||
statusDetail:this.data.statusDetail
|
statusDetail:this.data.statusDetail
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
async loadBuilding(){
|
async loadBuilding(){
|
||||||
const cid = this.data.userInfo.community_id;
|
const cid = this.data.userInfo.community_id;
|
||||||
const status = this.data.statusDetailKey;
|
const status = this.data.statusDetail[this.data.statusDetailKey];
|
||||||
const data = await orderApi.buildingList(cid,status);
|
let _status = status.key;
|
||||||
|
if(status.key==this.data.orderStatus.completed){
|
||||||
|
_status = `${this.data.orderStatus.unpaid},${this.data.orderStatus.completed}`;
|
||||||
|
}
|
||||||
|
const data = await orderApi.buildingList(cid,_status);
|
||||||
this.setData({
|
this.setData({
|
||||||
buildingList:data
|
buildingList:data
|
||||||
});
|
});
|
||||||
@ -146,7 +159,7 @@ Page({
|
|||||||
if(this.data.statusDetailKey=='completed'){
|
if(this.data.statusDetailKey=='completed'){
|
||||||
params.status = `${this.data.orderStatus.unpaid},${this.data.orderStatus.completed}`
|
params.status = `${this.data.orderStatus.unpaid},${this.data.orderStatus.completed}`
|
||||||
}else{
|
}else{
|
||||||
params.status = this.data.statusDetailKey;
|
params.status = this.data.statusDetail[this.data.statusDetailKey].key;
|
||||||
}
|
}
|
||||||
orderApi.list(params).then((data)=>{
|
orderApi.list(params).then((data)=>{
|
||||||
if(this.data.pager.pageIndex==0){
|
if(this.data.pager.pageIndex==0){
|
||||||
@ -206,10 +219,6 @@ Page({
|
|||||||
placeholderText:'请输入退款原因',
|
placeholderText:'请输入退款原因',
|
||||||
editable:true,
|
editable:true,
|
||||||
complete: (res) => {
|
complete: (res) => {
|
||||||
if (res.cancel) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -219,6 +228,8 @@ Page({
|
|||||||
chooseImage(){
|
chooseImage(){
|
||||||
wx.chooseMedia({
|
wx.chooseMedia({
|
||||||
count:this.data.maxChooseImgCount - this.data.tempImgs.length,
|
count:this.data.maxChooseImgCount - this.data.tempImgs.length,
|
||||||
|
mediaType:['image'],
|
||||||
|
sourceType:['camera'],
|
||||||
success:(res)=>{
|
success:(res)=>{
|
||||||
console.log(res);
|
console.log(res);
|
||||||
this.setData({
|
this.setData({
|
||||||
@ -227,9 +238,10 @@ Page({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
navToOrderDetail(){
|
navToOrderDetail(event){
|
||||||
|
const id = event.currentTarget.dataset.id;
|
||||||
wx.navigateTo({
|
wx.navigateTo({
|
||||||
url: '/pages/order-detail/index',
|
url: `/pages/order-detail/index?id=${id}`,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -278,9 +290,11 @@ Page({
|
|||||||
this.data.tempImgs.map((item)=>{
|
this.data.tempImgs.map((item)=>{
|
||||||
urls.push(item.serverUrl);
|
urls.push(item.serverUrl);
|
||||||
})
|
})
|
||||||
console.log('uploadAndConfirmSend',urls);
|
|
||||||
// return;
|
|
||||||
orderApi.complete(this.currentOrder.orderid,urls).then((data)=>{
|
orderApi.complete(this.currentOrder.orderid,urls).then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
isShowConfirm:false
|
||||||
|
})
|
||||||
|
this.refreshList();
|
||||||
wx.showToast({
|
wx.showToast({
|
||||||
icon:'success',
|
icon:'success',
|
||||||
title: '订单已完成',
|
title: '订单已完成',
|
||||||
@ -330,9 +344,14 @@ Page({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
navToUserInfo(){
|
logout(){
|
||||||
wx.navigateTo({
|
wx.removeStorage({
|
||||||
url: '/pages/user/info/index',
|
key: 'accessToken',
|
||||||
|
success(){
|
||||||
|
wx.redirectTo({
|
||||||
|
url: '/pages/login/index',
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
refresher-triggered="{{pager.refreshTrigger}}"
|
refresher-triggered="{{pager.refreshTrigger}}"
|
||||||
show-load-more="{{!(list.length==0&&pager.loadAll)}}"
|
show-load-more="{{!(list.length==0&&pager.loadAll)}}"
|
||||||
loading="{{pager.loading}}" load-all="{{pager.loadAll}}">
|
loading="{{pager.loading}}" load-all="{{pager.loadAll}}">
|
||||||
<view wx:for="{{list}}" wx:key="index" bind:tap="navToOrderDetail"
|
<view wx:for="{{list}}" wx:key="index" bind:tap="navToOrderDetail" data-id="{{item.orderid}}"
|
||||||
class="item {{item.status==orderStatus.unpaid||item.status==orderStatus.completed?'no-btns':''}}" >
|
class="item {{item.status==orderStatus.unpaid||item.status==orderStatus.completed?'no-btns':''}}" >
|
||||||
<view class="station-list">
|
<view class="station-list">
|
||||||
<view class="sl-item" wx:for="{{item.packages}}" wx:key="index" wx:for-item="pItem" wx:for-index="pIndex">
|
<view class="sl-item" wx:for="{{item.packages}}" wx:key="index" wx:for-item="pItem" wx:for-index="pIndex">
|
||||||
@ -34,7 +34,10 @@
|
|||||||
<view class="package">
|
<view class="package">
|
||||||
<view class="key">{{pItem.pickup_codes.length}}件包裹:</view>
|
<view class="key">{{pItem.pickup_codes.length}}件包裹:</view>
|
||||||
<view class="value">
|
<view class="value">
|
||||||
<label wx:for="{{pItem.pickup_codes}}" wx:key="index" class="code-item">******</label>
|
<label wx:for="{{pItem.pickup_codes}}" wx:key="index" class="code-item"
|
||||||
|
wx:for-item="code">
|
||||||
|
{{item.status==orderStatus.created?'******':code}}
|
||||||
|
</label>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -117,35 +120,35 @@
|
|||||||
<view class="order-info">
|
<view class="order-info">
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<view class="key">总量订单</view>
|
<view class="key">总量订单</view>
|
||||||
<view class="value">{{summary.total}}</view>
|
<view class="value">{{orderSummary.total_count}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<view class="key">昨日订单</view>
|
<view class="key">昨日订单</view>
|
||||||
<view class="value">{{summary.yesterday_total}}</view>
|
<view class="value">{{orderSummary.yesterday_count}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<view class="key">今日订单</view>
|
<view class="key">今日订单</view>
|
||||||
<view class="value">{{summary.today_total}}</view>
|
<view class="value">{{orderSummary.today_count}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="page-container income">
|
<view class="page-container income">
|
||||||
<view class="item" bind:tap="navToUserInfo">
|
<navigator url="/pages/user/info/index" class="item">
|
||||||
<view class="key">
|
<view class="key">
|
||||||
<label>账户余额</label>
|
<label>账户余额</label>
|
||||||
<image class="icon" src="/assets/icon/right-arrow-small.png"/>
|
<image class="icon" src="/assets/icon/right-arrow-small.png"/>
|
||||||
</view>
|
</view>
|
||||||
<view class="value">{{summary.balance}}</view>
|
<view class="value">{{summary.balance}}</view>
|
||||||
</view>
|
</navigator>
|
||||||
<view class="spliter"></view>
|
<view class="spliter"></view>
|
||||||
<view class="item">
|
<navigator url="/pages/user/income/index" class="item">
|
||||||
<view class="key">
|
<view class="key">
|
||||||
<label>今日收益</label>
|
<label>今日收益</label>
|
||||||
<image class="icon" src="/assets/icon/right-arrow-small.png"/>
|
<image class="icon" src="/assets/icon/right-arrow-small.png"/>
|
||||||
</view>
|
</view>
|
||||||
<view class="value">{{summary.today_income}}</view>
|
<view class="value">{{summary.today_income}}</view>
|
||||||
</view>
|
</navigator>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="page-container actions">
|
<view class="page-container actions">
|
||||||
@ -153,17 +156,17 @@
|
|||||||
<image class="icon" src="/assets/icon/service.png"/>
|
<image class="icon" src="/assets/icon/service.png"/>
|
||||||
<view>在线客服</view>
|
<view>在线客服</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item">
|
<navigator url="/pages/user/password/index" class="item">
|
||||||
<image class="icon" src="/assets/icon/password.png"/>
|
<image class="icon" src="/assets/icon/password.png"/>
|
||||||
<view>修改密码</view>
|
<view>修改密码</view>
|
||||||
</view>
|
</navigator>
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<image class="icon" src="/assets/icon/agreement.png"/>
|
<image class="icon" src="/assets/icon/agreement.png"/>
|
||||||
<view>用户协议</view>
|
<view>用户协议</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<button type="primary" class="logout-btn">退出登录</button>
|
<button type="primary" class="logout-btn" bind:tap="logout">退出登录</button>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</movable-view>
|
</movable-view>
|
||||||
</movable-area>
|
</movable-area>
|
||||||
|
|||||||
@ -1,21 +1,79 @@
|
|||||||
// pages/order-detail/index.js
|
import orderApi from '../../api/order';
|
||||||
|
import userApi from '../../api/user';
|
||||||
Page({
|
Page({
|
||||||
|
|
||||||
|
|
||||||
|
orderId:'',
|
||||||
/**
|
/**
|
||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
orderDetail:{},
|
||||||
|
refreshTrigger:false,
|
||||||
|
|
||||||
|
|
||||||
|
orderStatus:orderApi.status,
|
||||||
|
orderStatusKV:orderApi.statusKV,
|
||||||
|
|
||||||
|
deliverStatusKV:orderApi.deliverStatusKV,
|
||||||
|
|
||||||
|
genderKV:userApi.genderKV,
|
||||||
|
|
||||||
|
orderStep:0,
|
||||||
|
scrollViewHeight:0
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
|
const windowInfo = wx.getWindowInfo();
|
||||||
|
this.setData({
|
||||||
|
scrollViewHeight:windowInfo.windowHeight
|
||||||
|
});
|
||||||
|
this.orderId = options.id;
|
||||||
|
this.getOrderDetail();
|
||||||
|
},
|
||||||
|
getOrderDetail(){
|
||||||
|
orderApi.detail(this.orderId).then((data)=>{
|
||||||
|
let orderStep = 0;
|
||||||
|
if(data.order.status==this.data.orderStatus.received){
|
||||||
|
orderStep = 1;
|
||||||
|
}else if(data.order.status==this.data.orderStatus.delivering){
|
||||||
|
orderStep = 2;
|
||||||
|
}else if(data.order.status==this.data.orderStatus.unpaid||data.order.status==this.data.orderStatus.completed){
|
||||||
|
orderStep = 3;
|
||||||
|
}
|
||||||
|
data.order.complete_time = this.formatTime(data.order.complete_time);
|
||||||
|
data.order.pickup_time = this.formatTime(data.order.pickup_time);
|
||||||
|
data.order.received_time = this.formatTime(data.order.received_time);
|
||||||
|
data.packages.map((item)=>{
|
||||||
|
item.pickup_codes = item.pickup_codes.split(',')
|
||||||
|
})
|
||||||
|
this.setData({
|
||||||
|
orderDetail:data,
|
||||||
|
refreshTrigger:false,
|
||||||
|
orderStep
|
||||||
|
})
|
||||||
|
}).catch(()=>{
|
||||||
|
this.setData({
|
||||||
|
refreshTrigger:false
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
copyOrderId(){
|
copyOrderId(){
|
||||||
wx.setClipboardData({
|
wx.setClipboardData({
|
||||||
data: 'data',
|
data: this.data.orderDetail.order.orderid,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
formatTime(time){
|
||||||
|
return (time||'').substr(5,11);
|
||||||
|
},
|
||||||
|
preview(event){
|
||||||
|
const current = event.currentTarget.dataset.url;
|
||||||
|
wx.previewImage({
|
||||||
|
current:current,
|
||||||
|
urls: this.data.orderDetail.order.complete_images,
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,60 +1,73 @@
|
|||||||
<view class="page-container package-info">
|
<scroll-view refresher-triggered="{{refreshTrigger}}" bindrefresherrefresh="getOrderDetail"
|
||||||
<view class="station-list" bind:tap="navToOrderDetail">
|
refresher-enabled scroll-y style="height:{{scrollViewHeight*2}}rpx;">
|
||||||
<view class="sl-item" wx:for="{{3}}" wx:key="index">
|
<view class="page-container package-info">
|
||||||
<view class="name">菜鸟驿站(丽晶公馆)</view>
|
<view class="station-list" bind:tap="navToOrderDetail">
|
||||||
<view class="package">
|
<view class="sl-item" wx:for="{{orderDetail.packages}}" wx:key="index">
|
||||||
<view class="key">4件包裹:</view>
|
<view class="name">{{item.station_name}}</view>
|
||||||
<view class="value">
|
<view class="package">
|
||||||
<label wx:for="{{6}}" wx:key="index">****** </label>
|
<view class="key">{{item.pickup_codes.length}} 件包裹:</view>
|
||||||
|
<view class="value">
|
||||||
|
<label wx:for="{{item.pickup_codes}}" wx:key="index" wx:for-item="code">
|
||||||
|
{{orderDetail.order.status==orderStatus.created?'******':code}}
|
||||||
|
</label>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="address">
|
||||||
<view class="address">
|
<view class="title">
|
||||||
<view class="title">佳兆业丽晶公馆3栋2单元2702</view>
|
{{orderDetail.order.community_name}}
|
||||||
<view class="sub-title">冯先生:158****3822丨放在门口</view>
|
{{orderDetail.order.building_name}}
|
||||||
</view>
|
{{orderDetail.order.address_detail}}
|
||||||
</view>
|
</view>
|
||||||
<view class="page-container steps">
|
<view class="sub-title">
|
||||||
<view class="item night">
|
{{orderDetail.order.address_name}}
|
||||||
<view class="content">
|
{{genderKV[orderDetail.order.address_gender]}}:{{orderDetail.order.address_phone}}丨{{deliverStatusKV[orderDetail.order.delivery_method]}}
|
||||||
<view class="name">接单</view>
|
</view>
|
||||||
<view class="time">07-01 14:23</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item night">
|
<view class="page-container steps">
|
||||||
<view class="content">
|
<view class="item {{orderStep>0?'night':''}}">
|
||||||
<view class="name">取货</view>
|
<view class="content">
|
||||||
<view class="time">07-01 14:23</view>
|
<view class="name">接单</view>
|
||||||
|
<view class="time">{{orderDetail.order.received_time}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="item {{orderStep>1?'night':(orderStep==1?'half-night':'')}}">
|
||||||
|
<view class="content">
|
||||||
|
<view class="name">取货</view>
|
||||||
|
<view class="time">{{orderDetail.order.pickup_time}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="item {{orderStep>2?'night':(orderStep==2?'half-night':'')}}">
|
||||||
|
<view class="content">
|
||||||
|
<view class="name">送达</view>
|
||||||
|
<view class="time">{{orderDetail.order.complete_time}}</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item half-night">
|
<view class="page-container photos" wx:if="{{orderDetail.order.complete_images}}">
|
||||||
<view class="content">
|
<view class="title">拍照留证</view>
|
||||||
<view class="name">送达</view>
|
<view class="imgs">
|
||||||
<view class="time">07-01 14:23</view>
|
<image class="image" src="{{item}}" wx:for="{{orderDetail.order.complete_images}}" wx:key="index" bind:tap="preview" data-url="{{item}}"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="page-container income">
|
||||||
<view class="page-container photos">
|
<label>订单收益:</label>
|
||||||
<view class="title">拍照留证</view>
|
<label class="money">{{orderDetail.order.deliveryman_share}}</label>
|
||||||
<view class="imgs">
|
|
||||||
<image class="image" src="/assets/icon/phone.png" wx:for="{{4}}" wx:key="index"/>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
<view class="page-container order-info">
|
||||||
<view class="page-container income">
|
<view class="row">
|
||||||
<label>订单收益:</label>
|
<view class="key">订单编号</view>
|
||||||
<label class="money">3.0</label>
|
<view class="value">{{orderDetail.order.orderid}}</view>
|
||||||
</view>
|
<view class="copy-area" bind:tap="copyOrderId">
|
||||||
<view class="page-container order-info">
|
<view class="copy-btn">复制</view>
|
||||||
<view class="row">
|
</view>
|
||||||
<view class="key">订单编号</view>
|
</view>
|
||||||
<view class="value">2024071166325555</view>
|
<view class="row">
|
||||||
<view class="copy-area" bind:tap="copyOrderId">
|
<view class="key">下单时间</view>
|
||||||
<view class="copy-btn">复制</view>
|
<view class="value">{{orderDetail.order.create_time}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="row">
|
</scroll-view>
|
||||||
<view class="key">下单时间</view>
|
|
||||||
<view class="value">2024071166325555</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|||||||
@ -55,6 +55,9 @@
|
|||||||
}
|
}
|
||||||
.package-info .package .value{
|
.package-info .package .value{
|
||||||
flex:1;
|
flex:1;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 16rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.package-info .address{
|
.package-info .address{
|
||||||
|
|||||||
@ -1,11 +1,14 @@
|
|||||||
// pages/user/bank/editor/index.js
|
import userApi from '../../../../api/user';
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
name:'',
|
||||||
|
bankName:'',
|
||||||
|
cardNumber:'',//16-19
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,6 +18,22 @@ Page({
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
addCard(){
|
||||||
|
userApi.bankCard.add({
|
||||||
|
name:this.data.name,
|
||||||
|
card_number:this.data.cardNumber,
|
||||||
|
bank_name:this.data.bankName
|
||||||
|
}).then(()=>{
|
||||||
|
wx.navigateBack({
|
||||||
|
success(){
|
||||||
|
wx.showToast({
|
||||||
|
icon:'success',
|
||||||
|
title: '添加成功',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"usingComponents": {}
|
"usingComponents": {},
|
||||||
|
"navigationBarTitleText": "添加银行卡"
|
||||||
}
|
}
|
||||||
@ -3,23 +3,23 @@
|
|||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">持卡姓名</view>
|
<view class="cell-hd">持卡姓名</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入持卡姓名"/>
|
<input placeholder="请输入持卡姓名" model:value="{{name}}"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">开户银行</view>
|
<view class="cell-hd">开户银行</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入开户银行"/>
|
<input placeholder="请输入开户银行" model:value="{{bankName}}"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">银行卡号</view>
|
<view class="cell-hd">银行卡号</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入银行卡号"/>
|
<input placeholder="请输入银行卡号" model:value="{{cardNumber}}"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="bottom-bar">
|
<view class="bottom-bar">
|
||||||
<button type="primary" class="save-btn">提交并认证</button>
|
<button type="primary" class="save-btn" bind:tap="addCard">提交并认证</button>
|
||||||
</view>
|
</view>
|
||||||
@ -1,24 +1,44 @@
|
|||||||
// pages/user/bank/index/index.js
|
import userApi from '../../../../api/user';
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
cardList:[],
|
||||||
|
listLoading:false
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
|
|
||||||
},
|
},
|
||||||
navToAdd(){
|
navToAdd(){
|
||||||
wx.navigateTo({
|
wx.navigateTo({
|
||||||
url: '/pages/user/bank/editor/index',
|
url: '/pages/user/bank/editor/index',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
deleteCard(event){
|
||||||
|
const card = event.currentTarget.dataset.item;
|
||||||
|
const endNumber = card.card_number.substr(card.card_number.length-4,card.card_number.length);
|
||||||
|
wx.showModal({
|
||||||
|
title: '是否确认删除此银行卡',
|
||||||
|
content: `尾号(${endNumber})`,
|
||||||
|
complete: (res) => {
|
||||||
|
if (res.confirm) {
|
||||||
|
userApi.cardList.delete(card.id).then((data)=>{
|
||||||
|
wx.showToast({
|
||||||
|
icon:'success',
|
||||||
|
title: '删除成功',
|
||||||
|
})
|
||||||
|
this.getCardList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
@ -30,7 +50,21 @@ Page({
|
|||||||
* 生命周期函数--监听页面显示
|
* 生命周期函数--监听页面显示
|
||||||
*/
|
*/
|
||||||
onShow() {
|
onShow() {
|
||||||
|
this.getCardList();
|
||||||
|
},
|
||||||
|
getCardList(){
|
||||||
|
if(this.data.listLoading)return;
|
||||||
|
this.setData({
|
||||||
|
listLoading:true
|
||||||
|
});
|
||||||
|
wx.showNavigationBarLoading();
|
||||||
|
userApi.bankCard.list().then((data)=>{
|
||||||
|
wx.hideNavigationBarLoading();
|
||||||
|
this.setData({
|
||||||
|
cardList:data,
|
||||||
|
listLoading:false
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,23 +1,27 @@
|
|||||||
<view class="bank-card">
|
<view class="bank-card">
|
||||||
<view class="title">
|
<view class="page-title">
|
||||||
<label>提现用卡</label>
|
<label>提现用卡</label>
|
||||||
<view class="tag">个人账户</view>
|
<view class="tag">个人账户</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="card">
|
<view class="card" wx:for="{{cardList}}" wx:key="index">
|
||||||
<view class="head">
|
<view class="head">
|
||||||
<image class="icon-card" src="/assets/icon/card.png"/>
|
<image class="icon-card" src="/assets/icon/card.png"/>
|
||||||
<view class="name">中国工商银行</view>
|
<view class="name">{{item.bank_name}}</view>
|
||||||
<image class="icon-delete" src="/assets/icon/delete.png"/>
|
<image class="icon-delete" src="/assets/icon/delete.png" bind:tap="deleteCard" data-item="{{item}}"/>
|
||||||
</view>
|
</view>
|
||||||
<view class="spliter"></view>
|
<view class="spliter"></view>
|
||||||
<view class="info-item">
|
<view class="info-item">
|
||||||
<view class="key">持卡人</view>
|
<view class="key">持卡人</view>
|
||||||
<view class="value">仙人模斗</view>
|
<view class="value">{{item.name}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="info-item">
|
<view class="info-item">
|
||||||
<view class="key">银行卡号</view>
|
<view class="key">银行卡号</view>
|
||||||
<view class="value card-no">**** **** **** ***9 009</view>
|
<view class="value card-no">{{item.card_number}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<view class="list-empty" wx:if="{{cardList.length==0&&!listLoading}}">
|
||||||
|
<image class="icon" src="/assets/icon/list-empty.png"/>
|
||||||
|
<view class="title">暂无银行卡</view>
|
||||||
|
</view>
|
||||||
<button bind:tap="navToAdd" class="add-card-btn">添加银行卡</button>
|
<button bind:tap="navToAdd" class="add-card-btn">添加银行卡</button>
|
||||||
</view>
|
</view>
|
||||||
@ -5,12 +5,12 @@
|
|||||||
padding:60rpx 30rpx;
|
padding:60rpx 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title{
|
.page-title{
|
||||||
font-size: 40rpx;
|
font-size: 40rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-end;
|
align-items: flex-end;
|
||||||
}
|
}
|
||||||
.title .tag{
|
.page-title .tag{
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
background-color: rgba(255, 195, 0, 0.1);
|
background-color: rgba(255, 195, 0, 0.1);
|
||||||
padding:5rpx 8rpx;
|
padding:5rpx 8rpx;
|
||||||
@ -62,4 +62,11 @@
|
|||||||
.add-card-btn{
|
.add-card-btn{
|
||||||
margin-top:40rpx;
|
margin-top:40rpx;
|
||||||
background-color: rgba(153, 153, 153, 0.15);
|
background-color: rgba(153, 153, 153, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-empty{
|
||||||
|
padding:200rpx 0;
|
||||||
|
}
|
||||||
|
.list-empty .icon{
|
||||||
|
margin-top:0;
|
||||||
}
|
}
|
||||||
@ -7,16 +7,56 @@ Page({
|
|||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
scrollViewHeight:0,
|
||||||
|
pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTrigger:false},
|
||||||
|
list:[]
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
userApi.incomeList();
|
const windowInfo = wx.getWindowInfo();
|
||||||
|
this.setData({
|
||||||
|
scrollViewHeight:windowInfo.windowHeight
|
||||||
|
})
|
||||||
|
this.loadList();
|
||||||
},
|
},
|
||||||
|
refreshList(){
|
||||||
|
this.data.pager.pageIndex = 0;
|
||||||
|
this.data.pager.loadAll = false;
|
||||||
|
this.setData({
|
||||||
|
pager:this.data.pager
|
||||||
|
});
|
||||||
|
this.loadList();
|
||||||
|
},
|
||||||
|
loadList(){
|
||||||
|
if(this.data.pager.loading||this.data.pager.loadAll){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
"pager.loading":true
|
||||||
|
})
|
||||||
|
|
||||||
|
userApi.incomeList().then((data)=>{
|
||||||
|
if(this.data.pager.pageIndex==0){
|
||||||
|
this.data.list = data.items;
|
||||||
|
}else{
|
||||||
|
this.data.list = this.data.list.concat(data.items);
|
||||||
|
}
|
||||||
|
this.data.pager.loading = false;
|
||||||
|
this.data.pager.pageIndex++;
|
||||||
|
this.data.pager.refreshTrigger = false;
|
||||||
|
if(data.items.length<this.data.pager.limit){
|
||||||
|
this.data.pager.loadAll = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setData({
|
||||||
|
list:this.data.list,
|
||||||
|
pager:this.data.pager
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
{
|
{
|
||||||
"usingComponents": {},
|
"usingComponents": {
|
||||||
|
"list-view":"/components/listView"
|
||||||
|
},
|
||||||
"navigationBarTitleText": "交易明细"
|
"navigationBarTitleText": "交易明细"
|
||||||
}
|
}
|
||||||
@ -1,9 +1,15 @@
|
|||||||
<view class="income-list">
|
<list-view bind:refresh="refreshList"
|
||||||
<view class="item" wx:for="{{3}}">
|
bind:loadMore="loadList" height="{{scrollViewHeight}}"
|
||||||
<view class="content">
|
refresher-triggered="{{pager.refreshTrigger}}"
|
||||||
<view class="title">订单编号6777跑腿收益</view>
|
show-load-more="{{!(list.length==0&&pager.loadAll)}}"
|
||||||
<view class="sub-title">2024.10.10 12:15:51</view>
|
loading="{{pager.loading}}" load-all="{{pager.loadAll}}">
|
||||||
|
<view class="income-list">
|
||||||
|
<view class="item" wx:for="{{list}}">
|
||||||
|
<view class="content">
|
||||||
|
<view class="title">{{item.description}}</view>
|
||||||
|
<view class="sub-title">{{item.create_time}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="money">{{item.amount}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="money">3.0</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</list-view>
|
||||||
@ -17,4 +17,8 @@
|
|||||||
.income-list .item .sub-title{
|
.income-list .item .sub-title{
|
||||||
margin-top:32rpx;
|
margin-top:32rpx;
|
||||||
color: #888888;
|
color: #888888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.income-list .item .money{
|
||||||
|
color:var(--main-color);
|
||||||
}
|
}
|
||||||
@ -15,7 +15,6 @@ Page({
|
|||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
this.refreshSummary();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
refreshSummary(){
|
refreshSummary(){
|
||||||
@ -37,7 +36,7 @@ Page({
|
|||||||
* 生命周期函数--监听页面显示
|
* 生命周期函数--监听页面显示
|
||||||
*/
|
*/
|
||||||
onShow() {
|
onShow() {
|
||||||
|
this.refreshSummary();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -6,9 +6,9 @@
|
|||||||
<view class="page-container user-info">
|
<view class="page-container user-info">
|
||||||
<view class="title">账户余额 (元)</view>
|
<view class="title">账户余额 (元)</view>
|
||||||
<view class="_money">{{summary.balance}}</view>
|
<view class="_money">{{summary.balance}}</view>
|
||||||
<view class="today">今日收益(元) {{summary.today_total}}</view>
|
<view class="today">今日收益(元) {{summary.today_income}}</view>
|
||||||
<navigator url="/pages/withdraw/index/index">
|
<navigator url="/pages/withdraw/index/index">
|
||||||
<button class="button" type="primary" disabled="{{summary.balance==0||true}}">提现</button>
|
<button class="button" type="primary" disabled="{{summary.balance==0}}">提现</button>
|
||||||
</navigator>
|
</navigator>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -19,7 +19,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="cell-ft"></view>
|
<view class="cell-ft"></view>
|
||||||
</navigator>
|
</navigator>
|
||||||
<navigator url="" class="cell" hover-class="cell-active">
|
<navigator url="/pages/withdraw/list/index" class="cell" hover-class="cell-active">
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<view>提现记录</view>
|
<view>提现记录</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
163
pages/user/password/index.js
Normal file
163
pages/user/password/index.js
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
const app = getApp();
|
||||||
|
import userApi from '../../../api/user';
|
||||||
|
Page({
|
||||||
|
|
||||||
|
verifyCodeTimer:null,
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
phone:'',
|
||||||
|
verifyCode:'',
|
||||||
|
password:'',
|
||||||
|
rePassword:'',
|
||||||
|
codeLoading:false,
|
||||||
|
getCodeBtnText:'获取验证码',
|
||||||
|
waitingTime:app.verifyCodeWaitingTime,
|
||||||
|
modifyLoading:false
|
||||||
|
},
|
||||||
|
validator:{
|
||||||
|
verifyCode:[
|
||||||
|
{required:true,message:'请输入验证码'},
|
||||||
|
{length:6,message:'请输入 6 位数验证码'}
|
||||||
|
],
|
||||||
|
password:{required:true,message:'请输入新密码'},
|
||||||
|
rePassword:{required:true,message:'请输入确认新密码'},
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
app.getUserInfo().then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
phone:data.phone
|
||||||
|
})
|
||||||
|
});
|
||||||
|
let time = wx.getStorageSync('password-verify-code-time');
|
||||||
|
if(time){
|
||||||
|
let remainTime = app.verifyCodeWaitingTime*1000 - ((new Date()).getTime() - time);
|
||||||
|
if(remainTime>0){
|
||||||
|
this.setData({
|
||||||
|
waitingTime:parseInt(remainTime/1000),
|
||||||
|
codeLoading:true
|
||||||
|
})
|
||||||
|
this.startTimer();
|
||||||
|
}else{
|
||||||
|
wx.removeStorageSync('password-verify-code-time')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getVerifyCode(){
|
||||||
|
if(this.data.codeLoading)return;
|
||||||
|
this.setData({
|
||||||
|
codeLoading:true
|
||||||
|
});
|
||||||
|
userApi.verifyCode(this.data.phone).then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
getCodeBtnText:`${this.data.waitingTime}S`
|
||||||
|
});
|
||||||
|
|
||||||
|
const time = new Date();
|
||||||
|
wx.setStorageSync('password-verify-code-time', time.getTime());
|
||||||
|
this.startTimer();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
startTimer(){
|
||||||
|
console.log(this.data.waitingTime);
|
||||||
|
if(this.data.waitingTime<=0){
|
||||||
|
this.setData({
|
||||||
|
codeLoading:false,
|
||||||
|
getCodeBtnText:'获取验证码',
|
||||||
|
waitingTime:app.verifyCodeWaitingTime
|
||||||
|
});
|
||||||
|
wx.removeStorageSync('password-verify-code-time')
|
||||||
|
}else{
|
||||||
|
this.setData({
|
||||||
|
getCodeBtnText:`${this.data.waitingTime--}S`
|
||||||
|
});
|
||||||
|
this.verifyCodeTimer = setTimeout(this.startTimer,1000);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
save(){
|
||||||
|
if(this.data.modifyLoading)return;
|
||||||
|
const valid = app.validateForm(this.validator,this);
|
||||||
|
if(valid.length==0){
|
||||||
|
if(this.data.password==this.data.rePassword){
|
||||||
|
this.setData({
|
||||||
|
rePasswordMessage:''
|
||||||
|
});
|
||||||
|
this.setData({
|
||||||
|
modifyLoading:true
|
||||||
|
});
|
||||||
|
userApi.modifyPassword(this.data.rePassword,this.data.verifyCode).then((data)=>{
|
||||||
|
wx.navigateBack({
|
||||||
|
success(){
|
||||||
|
wx.showToast({
|
||||||
|
icon:'success',
|
||||||
|
title: '修改成功',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(()=>{
|
||||||
|
console.log(11111,'errro');
|
||||||
|
this.setData({
|
||||||
|
modifyLoading:false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
this.setData({
|
||||||
|
rePasswordMessage:'两次密码不一致'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
clearTimeout(this.verifyCodeTimer);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
4
pages/user/password/index.json
Normal file
4
pages/user/password/index.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {},
|
||||||
|
"navigationBarTitleText": "修改密码"
|
||||||
|
}
|
||||||
34
pages/user/password/index.wxml
Normal file
34
pages/user/password/index.wxml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<view class="cells">
|
||||||
|
<view class="cell">
|
||||||
|
<view class="cell-hd">手机号码</view>
|
||||||
|
<view class="cell-bd">{{phone}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="cell">
|
||||||
|
<view class="cell-hd">验证码</view>
|
||||||
|
<view class="cell-bd">
|
||||||
|
<input placeholder="请输入验证码" model:value="{{verifyCode}}"/>
|
||||||
|
<view class="error">{{verifyCodeMessage}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="cell-ft">
|
||||||
|
<button size="mini" type="primary" disabled="{{codeLoading}}"
|
||||||
|
bind:tap="getVerifyCode" class="verify-btn">
|
||||||
|
{{getCodeBtnText}}
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cell">
|
||||||
|
<view class="cell-hd">新密码</view>
|
||||||
|
<view class="cell-bd">
|
||||||
|
<input placeholder="请输入新密码" model:value="{{password}}"/>
|
||||||
|
<view class="error">{{passwordMessage}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="cell">
|
||||||
|
<view class="cell-hd">确认新密码</view>
|
||||||
|
<view class="cell-bd">
|
||||||
|
<input placeholder="请确认新密码" model:value="{{rePassword}}"/>
|
||||||
|
<view class="error">{{rePasswordMessage}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<button type="primary" class="save-btn" bind:tap="save" loading="{{modifyLoading}}">修改并保存</button>
|
||||||
|
</view>
|
||||||
15
pages/user/password/index.wxss
Normal file
15
pages/user/password/index.wxss
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.verify-btn{
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.verify-btn[disabled]{
|
||||||
|
background-color: #fff;
|
||||||
|
border: 2rpx solid var(--main-color);
|
||||||
|
color:var(--main-color)!important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cells .cell-hd{
|
||||||
|
width:155rpx;
|
||||||
|
}
|
||||||
|
.save-btn{
|
||||||
|
margin:60rpx 30rpx 30rpx!important;
|
||||||
|
}
|
||||||
@ -1,20 +1,38 @@
|
|||||||
// pages/user/rnAuth/index.js
|
import user from '../../../api/user';
|
||||||
|
import userApi from '../../../api/user';
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
name:'',
|
||||||
|
idCard:'',
|
||||||
|
already:false
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
|
userApi.getRNAuth().then((data)=>{
|
||||||
|
if(data&&data.id_number){
|
||||||
|
this.setData({
|
||||||
|
name:data.name,
|
||||||
|
idCard:data.id_number,
|
||||||
|
already:true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
save(){
|
||||||
|
userApi.setRNAuth({
|
||||||
|
name:this.data.name,
|
||||||
|
id_number:this.data.idCard
|
||||||
|
})
|
||||||
|
},
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -3,16 +3,18 @@
|
|||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">真实姓名</view>
|
<view class="cell-hd">真实姓名</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入真实姓名"/>
|
<label wx:if="{{already}}">{{name}}</label>
|
||||||
|
<input placeholder="请输入真实姓名" model:value="{{name}}" wx:else/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">身份证号</view>
|
<view class="cell-hd">身份证号</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入身份证号"/>
|
<label wx:if="{{already}}">{{idCard}}</label>
|
||||||
|
<input placeholder="请输入身份证号" model:value="{{idCard}}" wx:else/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<!-- <view class="cell">
|
||||||
<view class="cell-hd">手机号码</view>
|
<view class="cell-hd">手机号码</view>
|
||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入手机号码"/>
|
<input placeholder="请输入手机号码"/>
|
||||||
@ -26,9 +28,9 @@
|
|||||||
<view class="cell-bd">
|
<view class="cell-bd">
|
||||||
<input placeholder="请输入验证码"/>
|
<input placeholder="请输入验证码"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="bottom-bar">
|
<view class="bottom-bar" wx:if="{{!already}}">
|
||||||
<button type="primary" class="save-btn">保存并使用</button>
|
<button type="primary" class="save-btn" bind:tap="save">保存并使用</button>
|
||||||
</view>
|
</view>
|
||||||
@ -1,29 +1,88 @@
|
|||||||
// pages/withdraw/index.js
|
import userApi from '../../../api/user';
|
||||||
|
const app = getApp();
|
||||||
|
|
||||||
Page({
|
Page({
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
bankList:[],
|
||||||
|
amount:'',
|
||||||
|
amountMessage:'',
|
||||||
|
summary:{},
|
||||||
|
inputFocus:false,
|
||||||
|
bank:''
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
|
userApi.bankCard.list().then((data)=>{
|
||||||
|
data.map((item)=>{
|
||||||
|
item.endNumber = item.card_number.substr(item.card_number.length-4,item.card_number.length);
|
||||||
|
});
|
||||||
|
this.setData({
|
||||||
|
bankList:data
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
this.getSummary();
|
||||||
|
},
|
||||||
|
getSummary(){
|
||||||
|
app.forceGetSummary().then((data)=>{
|
||||||
|
this.setData({
|
||||||
|
summary:data
|
||||||
|
})
|
||||||
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面初次渲染完成
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
*/
|
*/
|
||||||
onReady() {
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
setAmountAll(){
|
||||||
|
this.setData({
|
||||||
|
amount:this.data.summary.balance
|
||||||
|
})
|
||||||
},
|
},
|
||||||
widthdraw(){
|
widthdraw(){
|
||||||
|
if(this.data.amount==''){
|
||||||
|
this.setData({
|
||||||
|
amountMessage:'请输入提现金额',
|
||||||
|
inputFocus:true
|
||||||
|
})
|
||||||
|
return;
|
||||||
|
}else{
|
||||||
|
this.setData({
|
||||||
|
amountMessage:''
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if(this.data.bank){
|
||||||
|
userApi.withdraw.add(this.data.bank,this.data.amount).then((data)=>{
|
||||||
|
this.getSummary();
|
||||||
|
this.setData({
|
||||||
|
amount:''
|
||||||
|
})
|
||||||
|
const bank = this.data.bankList.find((item)=>item.id==data.bank_card_id);
|
||||||
|
console.log(bank,data.id);
|
||||||
|
const showText = `${bank.bank_name}(${bank.endNumber})`;
|
||||||
|
wx.navigateTo({
|
||||||
|
url: `/pages/withdraw/success/index?amount=${data.amount}&bank=${showText}`,
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
wx.showToast({
|
||||||
|
icon:'error',
|
||||||
|
title: this.data.bankList.length==0?'请添加银行卡':'请选择银行卡',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
navToAddCard(){
|
||||||
wx.navigateTo({
|
wx.navigateTo({
|
||||||
url: '/pages/withdraw/success/index',
|
url: '/pages/user/bank/editor/index',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"usingComponents": {}
|
"usingComponents": {},
|
||||||
|
"navigationBarTitleText": "账户提现"
|
||||||
}
|
}
|
||||||
@ -4,30 +4,26 @@
|
|||||||
<view class="value">24小时到账</view>
|
<view class="value">24小时到账</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="input-area">
|
<view class="input-area">
|
||||||
<input class="input" placeholder="请输入提现金额"/>
|
<input class="input" placeholder="请输入提现金额" type="digit" focus="{{inputFocus}}" model:value="{{amount}}"/>
|
||||||
|
<view class="error">{{amountMessage}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="bottom">
|
<view class="bottom">
|
||||||
<view class="key">账户余额:4500.0</view>
|
<view class="key">账户余额:{{summary.balance}}</view>
|
||||||
<view class="value">全部提现</view>
|
<view class="value" bind:tap="setAmountAll">全部提现</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="page-container banks">
|
<view class="page-container banks">
|
||||||
<view class="head">提现方式</view>
|
<view class="head">提现方式</view>
|
||||||
<view class="spliter"></view>
|
<view class="spliter"></view>
|
||||||
<radio-group class="bank-list">
|
<radio-group class="bank-list" model:value="{{bank}}">
|
||||||
<label class="item">
|
<label class="item" wx:for="{{bankList}}" wx:key="index">
|
||||||
<image class="icon" src="/assets/icon/card.png"/>
|
<image class="icon" src="/assets/icon/card.png"/>
|
||||||
<view class="name">中国工商银行(7726)</view>
|
<view class="name">{{item.bank_name}}({{item.endNumber}})</view>
|
||||||
<checkbox class="checkbox"/>
|
<radio class="checkbox" value="{{item.id}}" checked="{{index==0}}"/>
|
||||||
</label>
|
|
||||||
<label class="item">
|
|
||||||
<image class="icon" src="/assets/icon/card.png"/>
|
|
||||||
<view class="name">中国工商银行(7726)</view>
|
|
||||||
<checkbox class="checkbox"/>
|
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<view class="item">
|
<view class="item" bind:tap="navToAddCard">
|
||||||
<view class="icon plus">
|
<view class="icon plus">
|
||||||
<image src="/assets/icon/plus.png" class="plus"/>
|
<image src="/assets/icon/plus.png" class="plus"/>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -19,6 +19,13 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-top:60rpx;
|
margin-top:60rpx;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.amount .input-area .error{
|
||||||
|
position: absolute;
|
||||||
|
bottom:-15rpx;left:55rpx;
|
||||||
|
color:red;
|
||||||
|
font-size: 24rpx;
|
||||||
}
|
}
|
||||||
.amount .input-area::before{
|
.amount .input-area::before{
|
||||||
content: '¥';
|
content: '¥';
|
||||||
|
|||||||
115
pages/withdraw/list/index.js
Normal file
115
pages/withdraw/list/index.js
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
import userApi from '../../../api/user';
|
||||||
|
|
||||||
|
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
scrollViewHeight:0,
|
||||||
|
pager:{limit:10,loading:false,loadAll:false,pageIndex:0,refreshTrigger:false},
|
||||||
|
list:[]
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
const windowInfo = wx.getWindowInfo();
|
||||||
|
this.setData({
|
||||||
|
scrollViewHeight:windowInfo.windowHeight
|
||||||
|
})
|
||||||
|
this.loadList();
|
||||||
|
},
|
||||||
|
refreshList(){
|
||||||
|
this.data.pager.pageIndex = 0;
|
||||||
|
this.data.pager.loadAll = false;
|
||||||
|
this.setData({
|
||||||
|
pager:this.data.pager
|
||||||
|
});
|
||||||
|
this.loadList();
|
||||||
|
},
|
||||||
|
loadList(){
|
||||||
|
if(this.data.pager.loading||this.data.pager.loadAll){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.setData({
|
||||||
|
"pager.loading":true
|
||||||
|
})
|
||||||
|
|
||||||
|
userApi.withdraw.list().then((data)=>{
|
||||||
|
this.data.pager.loadAll = true;
|
||||||
|
this.data.pager.loading = false;
|
||||||
|
this.setData({
|
||||||
|
list:data,
|
||||||
|
pager:this.data.pager
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
if(this.data.pager.pageIndex==0){
|
||||||
|
this.data.list = data.items;
|
||||||
|
}else{
|
||||||
|
this.data.list = this.data.list.concat(data.items);
|
||||||
|
}
|
||||||
|
this.data.pager.loading = false;
|
||||||
|
this.data.pager.pageIndex++;
|
||||||
|
this.data.pager.refreshTrigger = false;
|
||||||
|
if(data.items.length<this.data.pager.limit){
|
||||||
|
this.data.pager.loadAll = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setData({
|
||||||
|
list:this.data.list,
|
||||||
|
pager:this.data.pager
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
6
pages/withdraw/list/index.json
Normal file
6
pages/withdraw/list/index.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"list-view":"/components/listView"
|
||||||
|
},
|
||||||
|
"navigationBarTitleText": "提现记录"
|
||||||
|
}
|
||||||
15
pages/withdraw/list/index.wxml
Normal file
15
pages/withdraw/list/index.wxml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<list-view bind:refresh="refreshList"
|
||||||
|
bind:loadMore="loadList" height="{{scrollViewHeight}}"
|
||||||
|
refresher-triggered="{{pager.refreshTrigger}}"
|
||||||
|
show-load-more="{{!(list.length==0&&pager.loadAll)}}"
|
||||||
|
loading="{{pager.loading}}" load-all="{{pager.loadAll}}">
|
||||||
|
<view class="income-list">
|
||||||
|
<view class="item" wx:for="{{list}}">
|
||||||
|
<view class="content">
|
||||||
|
<view class="title">{{item.description}}</view>
|
||||||
|
<view class="sub-title">{{item.create_time}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="money">{{item.amount}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</list-view>
|
||||||
24
pages/withdraw/list/index.wxss
Normal file
24
pages/withdraw/list/index.wxss
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
.income-list{
|
||||||
|
background-color: #ffffff;
|
||||||
|
margin-top:20rpx;
|
||||||
|
}
|
||||||
|
.income-list .item{
|
||||||
|
display: flex;
|
||||||
|
padding:40rpx 30rpx;
|
||||||
|
border-bottom: 1rpx solid rgba(153, 153, 153, 0.2);
|
||||||
|
}
|
||||||
|
.income-list .item .content{
|
||||||
|
flex:1;
|
||||||
|
|
||||||
|
}
|
||||||
|
.income-list .item .title{
|
||||||
|
font-size: 32rpx;
|
||||||
|
}
|
||||||
|
.income-list .item .sub-title{
|
||||||
|
margin-top:32rpx;
|
||||||
|
color: #888888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.income-list .item .money{
|
||||||
|
color:var(--main-color);
|
||||||
|
}
|
||||||
@ -5,14 +5,18 @@ Page({
|
|||||||
* 页面的初始数据
|
* 页面的初始数据
|
||||||
*/
|
*/
|
||||||
data: {
|
data: {
|
||||||
|
amount:'',
|
||||||
|
bank:''
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生命周期函数--监听页面加载
|
* 生命周期函数--监听页面加载
|
||||||
*/
|
*/
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
|
this.setData({
|
||||||
|
amount:options.amount,
|
||||||
|
bank:options.bank
|
||||||
|
})
|
||||||
},
|
},
|
||||||
done(){
|
done(){
|
||||||
wx.navigateBack({
|
wx.navigateBack({
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"usingComponents": {}
|
"usingComponents": {},
|
||||||
|
"navigationBarTitleText": "账户提现"
|
||||||
}
|
}
|
||||||
@ -11,11 +11,11 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">提现金额</view>
|
<view class="cell-hd">提现金额</view>
|
||||||
<view class="cell-bd money money-normal">8888.0</view>
|
<view class="cell-bd money money-normal">{{amount}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="cell">
|
<view class="cell">
|
||||||
<view class="cell-hd">到账方式</view>
|
<view class="cell-hd">到账方式</view>
|
||||||
<view class="cell-bd">中国工商银行(7726)</view>
|
<view class="cell-bd">{{bank}}</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user