[更新]
This commit is contained in:
187
pages/order/order.js
Normal file
187
pages/order/order.js
Normal file
@@ -0,0 +1,187 @@
|
||||
// pages/activityOrder/activityOrder.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
stateType : 'all', //状态
|
||||
counts : '', //数量
|
||||
orderArr : [], //列表
|
||||
page : {}, //下一页
|
||||
lodingStats : false, //加载状态
|
||||
pay : {
|
||||
payTips : 1, //支付方式
|
||||
payState : false, //支付状态
|
||||
orderId : '', //支付订单
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad (options) {
|
||||
this.setData({
|
||||
stateType: options.stateType
|
||||
})
|
||||
},
|
||||
|
||||
onShow() {
|
||||
// 获取商品活动订单
|
||||
this.orderInfo();
|
||||
},
|
||||
|
||||
/**
|
||||
* 商品活动订单
|
||||
*/
|
||||
orderInfo(page) {
|
||||
wx.$api.exchange.index(this.data.stateType, page).then(res=>{
|
||||
let listArr = this.data.orderArr,
|
||||
newData = []
|
||||
if(page == 1 || page == undefined) listArr = []
|
||||
|
||||
newData = listArr.concat(res.data.data)
|
||||
this.setData({
|
||||
counts : res.data.count,
|
||||
orderArr : newData,
|
||||
page : res.data.page,
|
||||
lodingStats : false
|
||||
})
|
||||
wx.stopPullDownRefresh()
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* tabs
|
||||
*/
|
||||
orderTab(e){
|
||||
if(this.data.stateType != e.currentTarget.dataset.state){
|
||||
this.setData({
|
||||
stateType: e.currentTarget.dataset.state
|
||||
})
|
||||
|
||||
// 获取商品活动订单
|
||||
this.orderInfo()
|
||||
|
||||
wx.pageScrollTo({
|
||||
scrollTop: 0
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
*/
|
||||
orderDelete(e) {
|
||||
let orderId = e.currentTarget.dataset.id
|
||||
wx.showModal({
|
||||
title : '订单取消',
|
||||
content : '确认取消吗?',
|
||||
success : res=> {
|
||||
if (res.confirm) {
|
||||
wx.$api.exchange.cancel(orderId).then(res=>{
|
||||
// 获取商品活动订单
|
||||
this.orderInfo()
|
||||
|
||||
wx.showToast({
|
||||
title: res.data,
|
||||
icon : 'none'
|
||||
})
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
wx.showToast({
|
||||
title : '取消',
|
||||
icon : 'loading',
|
||||
duration: 1000
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 支付提交
|
||||
*/
|
||||
orderPay() {
|
||||
wx.$api.exchange.payments(this.data.pay.orderId).then(res=>{
|
||||
// payTips为1的时候为微信支付
|
||||
if(this.data.pay.payTips == 1) {
|
||||
wx.$api.index.wechat(res.data.trade_no).then(res=>{
|
||||
let payInfo = JSON.parse(res.data)
|
||||
wx.requestPayment({
|
||||
timeStamp: payInfo.timeStamp,
|
||||
nonceStr : payInfo.nonceStr,
|
||||
package : payInfo.package,
|
||||
paySign : payInfo.paySign,
|
||||
signType : payInfo.signType,
|
||||
success : res=>{
|
||||
if(res.errMsg == "requestPayment:ok"){
|
||||
wx.showToast({
|
||||
title: '支付成功',
|
||||
icon : 'success'
|
||||
})
|
||||
setTimeout(()=>{
|
||||
wx.reLaunch({
|
||||
url: '/pages/coupon/coupon?type=couponPublic'
|
||||
})
|
||||
},2000)
|
||||
}
|
||||
},
|
||||
fail : res=>{
|
||||
wx.redirectTo({
|
||||
url: '/pages/order/order?stateType=unpay'
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
// payTips为2的时候为沃钱包支付
|
||||
if(this.data.pay.payTips == 2) {
|
||||
const newUrl = "https://lifetest.ysd-bs.com/unicom/payment?trade_no=" + res.data.trade_no
|
||||
let url= encodeURIComponent(newUrl)
|
||||
wx.navigateTo({
|
||||
// 跳转到webview页面
|
||||
url: `/pages/webView/webView?url=${url}`
|
||||
});
|
||||
}
|
||||
|
||||
this.setData({
|
||||
['pay.payState']: false
|
||||
})
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 支付选择弹出
|
||||
*/
|
||||
submitPay(e) {
|
||||
this.setData({
|
||||
['pay.payState']: !this.data.pay.payState,
|
||||
['pay.orderId'] : e.currentTarget.dataset.id
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 上拉加载
|
||||
*/
|
||||
onReachBottom(){
|
||||
this.setData({
|
||||
lodingStats: true
|
||||
})
|
||||
let pageNumber = this.data.page.current
|
||||
if(this.data.page.has_more){
|
||||
pageNumber++
|
||||
this.orderInfo(pageNumber)
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 选择支付方式
|
||||
*/
|
||||
radioChange(e) {
|
||||
this.setData({
|
||||
['pay.payTips']: e.detail.value
|
||||
})
|
||||
}
|
||||
})
|
||||
4
pages/order/order.json
Normal file
4
pages/order/order.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"navigationBarTitleText": "兑换订单"
|
||||
}
|
||||
94
pages/order/order.wxml
Normal file
94
pages/order/order.wxml
Normal file
@@ -0,0 +1,94 @@
|
||||
<!-- 活动订单 -->
|
||||
<view class="order-tab">
|
||||
<view class="order-tab-item {{stateType == 'all' ? 'active':''}}" data-state="all" bindtap="orderTab">
|
||||
全部
|
||||
</view>
|
||||
<view class="order-tab-item {{stateType == 'unpay' ? 'active':''}}" data-state="unpay" bindtap="orderTab">
|
||||
待支付
|
||||
<!-- <view class="state-tips" wx:if="{{counts.init != 0}}">{{counts.init}}</view> -->
|
||||
</view>
|
||||
<view class="order-tab-item {{stateType == 'paid' ? 'active':''}}" data-state="paid" bindtap="orderTab">
|
||||
待发货
|
||||
<!-- <view class="state-tips" wx:if="{{counts.paid != 0}}">{{counts.paid}}</view> -->
|
||||
</view>
|
||||
<!-- <view class="order-tab-item {{stateType == 'delivered' ? 'active':''}}" data-state="delivered" bindtap="orderTab">
|
||||
待签收
|
||||
<view class="state-tips" wx:if="{{counts.paid != 0}}">{{counts.paid}}</view>
|
||||
</view> -->
|
||||
<view class="order-tab-item {{stateType == 'delivered' ? 'active':''}}" data-state="delivered" bindtap="orderTab">
|
||||
已发货
|
||||
<!-- <view class="state-tips" wx:if="{{counts.send != 0}}">{{counts.send}}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 列表 -->
|
||||
<view class="order-content" wx:if="{{orderArr != ''}}">
|
||||
<view class="order-content-li" wx:for="{{orderArr}}" wx:key="orderArr">
|
||||
<!-- <view class="order-name">
|
||||
<image src="/static/icon/activity_icon.png"></image>
|
||||
</view> -->
|
||||
<view class="uni-border-down order-store">
|
||||
<view class="order-store-title nowrap">{{item.orderid}}</view>
|
||||
<view class="order-store-stateText red" wx:if="{{item.state_text == '未支付'}}">{{item.state_text}}</view>
|
||||
<view class="order-store-stateText green" wx:elif="{{item.state_text == '已支付'}}">{{item.state_text}}</view>
|
||||
<view class="order-store-stateText" wx:else>{{item.state_text}}</view>
|
||||
</view>
|
||||
<view class="order-goods">
|
||||
<image class="order-goods-cover" src="{{item.items.cover}}" mode="aspectFill"></image>
|
||||
<view class="order-goods-content">
|
||||
<view class="order-goods-content-name nowrap">{{item.items.title}}</view>
|
||||
<view class="orderVirtual {{item.items.type != 'virtual' ? '' : 'active'}}">
|
||||
<block wx:if="{{item.items.type == 'virtual'}}">红包电子券</block>
|
||||
<block wx:else>实物券</block>
|
||||
</view>
|
||||
<view class="order-goods-content-price nowrap">
|
||||
<text>¥{{item.items.price}}</text> × {{item.items.qty}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="uni-border-top order-btns">
|
||||
<navigator class="order-btn" url="/pages/orderData/orderData?id={{item.orderid}}">订单详情</navigator>
|
||||
<view class="order-btn" bindtap="orderDelete" data-id="{{item.orderid}}" wx:if="{{item.canCancel == true}}">
|
||||
取消订单</view>
|
||||
<view class="order-btn order-btn-back" bindtap="submitPay" data-id="{{item.orderid}}"
|
||||
wx:if="{{item.canPay == true}}">立即支付</view>
|
||||
<!-- <view class="order-btn order-btn-back" bindtap="" data-id="{{item.orderid}}" wx:if="{{item.canSign == true}}">待签收</view> -->
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pagesLoding" wx:if="{{lodingStats}}">
|
||||
<block wx:if="{{page.has_more}}">
|
||||
<image class="pagesLoding-icon" src="/static/icon/refresh_loding.gif" mode="widthFix"></image>加载中...
|
||||
</block>
|
||||
<block wx:else>
|
||||
没有更多了~
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="pack-center pages-hint" wx:else>
|
||||
<image src="https://storage.funnyzhibo.com/images/2020/05/06/null_icon.png"></image>
|
||||
<view>暂无订单</view>
|
||||
</view>
|
||||
|
||||
<view class="payWayBack {{pay.payState ? 'active' : ''}}" bindtap="submitPay"></view>
|
||||
<view class="payWay {{pay.payState ? 'active' : ''}}">
|
||||
<view class="payWay-name">请选择支付方式</view>
|
||||
<radio-group bindchange="radioChange">
|
||||
<view class="payContList-label">
|
||||
<view class="payContList-label-name">
|
||||
<image class="payContList-label-img" src="/static/img/wx.jpg"></image>
|
||||
微信支付
|
||||
</view>
|
||||
<radio class="radio" value="1" checked></radio>
|
||||
</view>
|
||||
<view class="payContList-label">
|
||||
<view class="payContList-label-name">
|
||||
<image class="payContList-label-img" src="/static/img/wqb.jpg"></image>
|
||||
沃钱包支付
|
||||
</view>
|
||||
<radio class="radio" value="2"></radio>
|
||||
</view>
|
||||
</radio-group>
|
||||
<button class="payWayBtn" bindtap="orderPay">确认</button>
|
||||
</view>
|
||||
319
pages/order/order.wxss
Normal file
319
pages/order/order.wxss
Normal file
@@ -0,0 +1,319 @@
|
||||
/*
|
||||
* 亿时代
|
||||
*/
|
||||
|
||||
.order-tab {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
z-index: 9;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.order-tab-item {
|
||||
font-size: 28rpx;
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
border-bottom: solid 2rpx #f7f7f7;
|
||||
color: #464854;
|
||||
background: white;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.order-tab-item.active {
|
||||
color: #f57e32;
|
||||
}
|
||||
|
||||
.order-tab-item::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 30rpx;
|
||||
height: 4rpx;
|
||||
background: transparent;
|
||||
left: calc(50% - 15rpx);
|
||||
bottom: -2rpx;
|
||||
}
|
||||
|
||||
.order-tab-item.active::after {
|
||||
background: #f57e32;
|
||||
}
|
||||
|
||||
.state-tips {
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
right: 14rpx;
|
||||
background: #e92706;
|
||||
color: #fff;
|
||||
font-size: 24rpx;
|
||||
transform: scale(.7, .7);
|
||||
border-radius: 60rpx 60rpx 60rpx 0;
|
||||
width: 48rpx;
|
||||
height: 34rpx;
|
||||
line-height: 34rpx;
|
||||
}
|
||||
|
||||
/* 订单列表 */
|
||||
|
||||
.order-content {
|
||||
padding: 80rpx 0 20rpx 0;
|
||||
}
|
||||
|
||||
.order-content-li {
|
||||
background: white;
|
||||
margin-top: 20rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.order-name {
|
||||
background: #fff;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
border-bottom: solid 1rpx #f3f3f3;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order-name image {
|
||||
background: linear-gradient(#000, #000);
|
||||
background-blend-mode: lighten;
|
||||
background-size: cover;
|
||||
width: 26rpx;
|
||||
height: 26rpx;
|
||||
border-radius: 50%;
|
||||
margin: 8rpx 14rpx 0 0;
|
||||
}
|
||||
|
||||
.order-store {
|
||||
padding: 20rpx;
|
||||
border-bottom: solid 1rpx #f3f3f3;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order-goods-tips {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order-goods-tips text {
|
||||
display: inline-block;
|
||||
background: #e92706;
|
||||
color: #fff;
|
||||
border-radius: 20rpx;
|
||||
padding: 0 20rpx;
|
||||
height: 42rpx;
|
||||
line-height: 42rpx;
|
||||
font-size: 24rpx;
|
||||
transform: scale(.8, .8);
|
||||
}
|
||||
|
||||
text.order-goods-tips-color {
|
||||
background: #e6b329;
|
||||
}
|
||||
|
||||
.order-store-stateText {
|
||||
color: #e6b329;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.order-store-stateText.red {
|
||||
color: #e92344;
|
||||
}
|
||||
|
||||
.order-store-stateText.green {
|
||||
color: #79b300;
|
||||
}
|
||||
|
||||
.order-store-title {
|
||||
flex: 1;
|
||||
color: #999;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.order-store-orderid {
|
||||
color: #747788;
|
||||
font-size: 25rpx;
|
||||
}
|
||||
|
||||
.order-store-title text {
|
||||
color: white;
|
||||
font-size: 24rpx;
|
||||
background: #e92344;
|
||||
margin-right: 10rpx;
|
||||
padding: 0 10rpx;
|
||||
}
|
||||
|
||||
.order-goods {
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.order-goods-cover {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
vertical-align: top;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.order-goods-content {
|
||||
position: absolute;
|
||||
left: 190rpx;
|
||||
top: 20rpx;
|
||||
right: 20rpx;
|
||||
width: calc(100% - 210rpx);
|
||||
}
|
||||
|
||||
.order-goods-content-name {
|
||||
margin-bottom: 10rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.order-goods-content-price {
|
||||
color: #747788;
|
||||
display: flex;
|
||||
margin-top: 10rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.order-goods-content-price text {
|
||||
color: #f57e32;
|
||||
display: inline-block;
|
||||
margin-right: 10rpx;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.order-total {
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
font-size: 26rpx;
|
||||
line-height: 50rpx;
|
||||
color: #747788;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.order-total view {
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.order-total text {
|
||||
color: #e92344;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.order-btns {
|
||||
font-size: 25rpx;
|
||||
display: flex;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
.order-btn {
|
||||
margin-left: 20rpx;
|
||||
height: 52rpx;
|
||||
line-height: 50rpx;
|
||||
box-sizing: border-box;
|
||||
border: solid 1rpx #747788;
|
||||
padding: 0 20rpx;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.order-btn-back {
|
||||
border-color: #f57e32;
|
||||
color: #f57e32;
|
||||
}
|
||||
|
||||
.orderVirtual {
|
||||
background: #f57e32;
|
||||
color: #fff;
|
||||
border-radius: 4rpx;
|
||||
display: inline-block;
|
||||
font-size: 24rpx;
|
||||
padding: 2rpx 8rpx
|
||||
}
|
||||
|
||||
.orderVirtual.active {
|
||||
background: #88be2d;
|
||||
}
|
||||
|
||||
/* 选择支付方式 */
|
||||
.payWayBack {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, .4);
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 98;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.payWayBack.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.payWay {
|
||||
position: fixed;
|
||||
z-index: 99;
|
||||
left: 0;
|
||||
bottom: -100%;
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
padding: 60rpx 50rpx 120rpx;
|
||||
box-sizing: border-box;
|
||||
border-top: 2rpx solid #f0f0f0;
|
||||
transition: .2s;
|
||||
}
|
||||
|
||||
.payWay.active {
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.payWay-name {
|
||||
font-weight: 600;
|
||||
font-size: 30rpx;
|
||||
margin-bottom: 80rpx;
|
||||
}
|
||||
|
||||
.payContList-label {
|
||||
display: flex;
|
||||
margin-bottom: 40rpx;
|
||||
border-bottom: 2rpx solid #f6f6f6;
|
||||
padding-bottom: 40rpx;
|
||||
}
|
||||
|
||||
.payContList-label:last-child {
|
||||
border:none
|
||||
}
|
||||
|
||||
.payContList-label-name {
|
||||
flex: 1;
|
||||
font-size: 32rpx;
|
||||
display: flex;
|
||||
line-height: 46rpx;
|
||||
}
|
||||
|
||||
.payContList-label-img {
|
||||
width: 46rpx;
|
||||
height: 46rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
radio {
|
||||
transform:scale(0.8);
|
||||
}
|
||||
|
||||
.payWayBtn {
|
||||
background: #eacf88;
|
||||
text-align: center;
|
||||
line-height: 80rpx !important;
|
||||
border-radius: 10rpx;
|
||||
margin-top: 80rpx;
|
||||
width: 100% !important;
|
||||
padding: 0;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
Reference in New Issue
Block a user