You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
535 lines
14 KiB
535 lines
14 KiB
<template>
|
|
<view>
|
|
<!-- 顶部导航 -->
|
|
<view class="topTabBar" :style="{position:headerPosition,top:headerTop}">
|
|
<view class="grid" v-for="(grid,tbIndex) in orderType" :key="tbIndex" @tap="showType(tbIndex)">
|
|
<view class="text" :class="[tbIndex==tabbarIndex?'on':'']">{{grid}}</view>
|
|
</view>
|
|
</view>
|
|
<!-- 考虑非APP端长列表和复杂的DOM使用scroll-view会卡顿,所以漂浮顶部选项卡使用page本身的滑动 -->
|
|
<view class="order-list">
|
|
<view class="list">
|
|
<empty v-if="list.length === 0"></empty>
|
|
<view class="row" v-for="(row,index) in list" :key="index">
|
|
<view class="listitem" v-if="row.orderlx==1">
|
|
<view class="type">{{row.dh}}</view>
|
|
<view class="type" v-if="row.order_zt>0">{{orderzttext[row.order_zt]}}</view>
|
|
<view class="type" v-else>{{row.ztmiaos}}</view>
|
|
</view>
|
|
|
|
<view class="listitem" v-else>
|
|
<view class="type">{{row.dh}}</view>
|
|
<view class="type" v-if="row.order_zt>0">{{orderzttext2[row.order_zt]}}</view>
|
|
<view class="type" v-else>{{row.ztmiaos}}</view>
|
|
</view>
|
|
|
|
<view class="listitem">
|
|
<view class="itemtitle">下单日期</view>
|
|
<view class="itemvaule">{{row.rq}}</view>
|
|
</view>
|
|
<view class="listitem">
|
|
<view class="itemtitle">送货日期</view>
|
|
<view class="itemvaule">{{row.dhrq}}</view>
|
|
</view>
|
|
<view class="listitem">
|
|
<view class="itemtitle">商品金额</view>
|
|
<view class="itemvaule">¥{{row.allmoney}}</view>
|
|
</view>
|
|
|
|
<view class="detail">
|
|
<view class="number">共{{row.goodnum}}件商品</view><view class="sum">合计¥<view class="price">{{row.total}}</view></view>
|
|
<view class="nominal"><span v-if="row.yhjine>0" style="color: red;">(优惠券 ¥-{{row.yhjine}})</span></view>
|
|
</view>
|
|
<view class="btns">
|
|
<text style="margin: 0 auto;margin-left: 0px;color: #666; font-size: 28rpx;" v-if="row.orderlx==1">支付订单</text>
|
|
<text style="margin: 0 auto;margin-left: 0px;color: #666; font-size: 28rpx;" v-else>普通订单</text>
|
|
|
|
<!-- <block v-if="row.orderlx==0&&(row.zt==2||row.zt==1)&&row.sh==1">
|
|
<view class="default">审核该订单</view>
|
|
</block>
|
|
<block v-else-if="row.orderlx==0&&(row.zt==2||row.zt==1)">
|
|
<view class="default" @click="qutuanh(row.dhid,row.allmoney,0)">去退货</view>
|
|
</block> -->
|
|
<block v-if="row.orderlx==0&&row.zt==2">
|
|
<!-- 取消订单 -->
|
|
<view class="pay" @click="cancelorder(row.dhid)">取消订单</view>
|
|
</block>
|
|
<block v-if="row.jiad==1">
|
|
<!-- 取消订单 -->
|
|
<view class="pay" @click="jiad(row.dhid)">加减单</view>
|
|
</block>
|
|
<!-- <block v-if="row.orderlx==0&&(row.zt==2||row.zt==1)">
|
|
<view class="default" @click="qutuanh(row.dhid,row.allmoney,0)">去退货</view>
|
|
</block> -->
|
|
<block v-if="row.orderlx==1&&row.is_pay==1&&row.zt!=3">
|
|
<!-- 取消订单 -->
|
|
<view class="pay" @click="cancelorder(row.dhid)">取消订单</view>
|
|
<view class="pay" @tap="toPayment(row.dhid)">去付款</view>
|
|
</block>
|
|
<block v-if="row.orderlx==1&&row.is_pay==2&&row.order_zt!=2&&row.zt!=3">
|
|
<view class="default" @click="sqtuik(row.dhid,row.allmoney,0)">申请退款</view>
|
|
</block>
|
|
<view class="default" v-if="row.goodnum>0" @click="showdetail(row.dhid)">订单明细</view>
|
|
<view class="default" v-if="row.goodnum>0" @click="daochu(row.dhid)">导出</view>
|
|
</view>
|
|
|
|
<view class="btns" v-if="row.yszt==1">
|
|
<view class="default" @click="toyans(row.dhid)">验收</view>
|
|
<!-- <view class="default" >监督</view>
|
|
<view class="default" >投诉</view>
|
|
<view class="default" >评论</view> -->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<uni-popup ref="popup" type="bottom" :maskClick="maskclose">
|
|
<view class="dosure" @click="closeit">关闭</view>
|
|
<view class="choosegood" :class="[product.istk?'tkgood':'']" v-for="(product,index) in detailgoodlist" :key="index">
|
|
<view class="choosegoodimg" style="width: 15%;">
|
|
<image class="uni-product-image" :src="product.img"></image>
|
|
</view>
|
|
<view class="desc">
|
|
<view>{{product.mc}} ¥{{product.price}}{{product.dw}}</view>
|
|
<view class="price">规格:{{product.gg}}</view>
|
|
<view class="price">订货量:{{product.dinghl}}{{product.dw}}</view>
|
|
<view class="chukl">送货量:{{product.songhl}}{{product.dw}}</view>
|
|
</view>
|
|
<view class="shisje">¥{{product.je}}</view>
|
|
</view>
|
|
</uni-popup>
|
|
</view>
|
|
</template>
|
|
<script>
|
|
import uniPopup from "@/components/uni-popup/uni-popup.vue";
|
|
import * as XLSX from '@/static/excel.js';
|
|
import empty from "@/components/empty";
|
|
export default {
|
|
data() {
|
|
return {
|
|
maskclose:true,
|
|
headerPosition:"fixed",
|
|
headerTop:"0px",
|
|
typeText:['待付款','已付款','售后订单'],
|
|
orderzttext:['','退款中','已退款','拒绝退款','部分退款中','部分已退款'],
|
|
orderzttext2:['','退货中','已退货','拒绝退货','部分退货中','部分已退货'],
|
|
orderType: ['全部','已确认','待确认','已取消'],
|
|
fhtype:['待发货','已发货'],
|
|
//订单列表 演示数据
|
|
list:[],
|
|
tabbarIndex:0,
|
|
detailgoodlist:[],
|
|
ispay:0,
|
|
waitpayTime: 25,
|
|
timerIdforgood: null,
|
|
showcan:false
|
|
};
|
|
},
|
|
onLoad(option) {
|
|
//option为object类型,会序列化上个页面传递的参数
|
|
//console.log("option: " + JSON.stringify(option));
|
|
let tbIndex = parseInt(option.state);
|
|
this.tabbarIndex = tbIndex;
|
|
//兼容H5下排序栏位置
|
|
// #ifdef H5
|
|
let Timer = setInterval(()=>{
|
|
let uniHead = document.getElementsByTagName('uni-page-head');
|
|
if(uniHead.length>0){
|
|
this.headerTop = uniHead[0].offsetHeight+'px';
|
|
clearInterval(Timer);//清除定时器
|
|
}
|
|
},1);
|
|
// #endif
|
|
},
|
|
onPageScroll(e){
|
|
return;
|
|
//兼容iOS端下拉时顶部漂移
|
|
this.headerPosition = e.scrollTop>=0?"fixed":"absolute";
|
|
},
|
|
onShow(){
|
|
this.orderlist(this.tabbarIndex);
|
|
},
|
|
onUnload(){
|
|
uni.switchTab({
|
|
url: '/pages/user/user'
|
|
});
|
|
|
|
},
|
|
components: {uniPopup,empty},
|
|
methods: {
|
|
jiad(dhid){
|
|
uni.removeStorageSync('cartlistjiad');//移除加单购物里面的商品
|
|
uni.navigateTo({
|
|
url:'../orderlist/orderjiad?dhid='+dhid
|
|
})
|
|
},
|
|
toyans(dhid){
|
|
uni.navigateTo({
|
|
url:'../orderlist/orderyans?dhid='+dhid,
|
|
})
|
|
},
|
|
cancelorder(dhid){
|
|
var that=this;
|
|
uni.showModal({
|
|
title: '您确认要取消订单吗?',
|
|
content: '',
|
|
success: (res) => {
|
|
if (res.confirm) {
|
|
that.delorder(dhid);
|
|
}
|
|
}
|
|
});
|
|
},
|
|
async delorder(dhid){
|
|
let userinfo=uni.getStorageSync('userinfo');
|
|
let redata=await this.$api.cancelOrder({action:'cancelOrder',userid:userinfo.uid,name:userinfo.name,dhid:dhid});
|
|
if(redata.code==1){
|
|
this.orderlist(this.tabbarIndex);
|
|
}else{
|
|
uni.showToast({
|
|
title:redata.msg,icon:'none'
|
|
})
|
|
}
|
|
uni.hideLoading();
|
|
},
|
|
async orderlist(type){
|
|
uni.showLoading({
|
|
title:'加载中...'
|
|
})
|
|
this.list=[];
|
|
let userinfo=uni.getStorageSync('userinfo');
|
|
let redata=await this.$api.orderlist2({action:'orderlist',userid:userinfo.uid,type:type});
|
|
if(redata.code==1){
|
|
this.list = redata.data;
|
|
//console.log('订单列表',redata.data);
|
|
}else{
|
|
// uni.showToast({
|
|
// title:'暂无数据',icon:'none'
|
|
// })
|
|
}
|
|
uni.hideLoading();
|
|
//console.log(redata.data,'返回订单列表')
|
|
},
|
|
async excel_dh(dhid)
|
|
{
|
|
let redata=await this.$api.daochu({action:'daochu',dhid:dhid});
|
|
if(redata.code==1)
|
|
{
|
|
const fileName=redata.data.filename;
|
|
const header = redata.data.header;
|
|
const headerName = redata.data.headerName;
|
|
const ExcelData = redata.data.data;
|
|
XLSX.excel_exprot(ExcelData, header, headerName,fileName);
|
|
}else
|
|
{
|
|
uni.showToast({
|
|
title:'暂无数据',icon:'none'
|
|
})
|
|
}
|
|
},
|
|
async orderdetail(id,type){
|
|
// let redata=await this.$api.orderdetail({action:'orderdetail',dhid:id});
|
|
// if(redata.code==1){
|
|
// this.detailgoodlist = redata.data;
|
|
// console.log('订单详情',redata);
|
|
// if(redata.data.length>0){
|
|
// if(this.detailgoodlist.length>0){
|
|
// this.$refs.popup.open()
|
|
// }
|
|
// }
|
|
// }else{
|
|
// uni.showToast({
|
|
// title:'暂无数据',icon:'none'
|
|
// })
|
|
// }
|
|
let redata=await this.$api.orderdetail({action:'orderdetail',dhid:id});
|
|
if(redata.code==1){
|
|
this.detailgoodlist = redata.data;
|
|
if(redata.data.length>0){
|
|
if(this.detailgoodlist.length>0){
|
|
if(type==1){
|
|
//去再次支付
|
|
let tmpList=[];
|
|
let len = this.detailgoodlist.length;
|
|
for(let i=0;i<len;i++){
|
|
tmpList.push(this.detailgoodlist[i]);
|
|
}
|
|
if(tmpList.length<1){
|
|
uni.showToast({
|
|
title:'请选择商品结算',
|
|
icon:'none'
|
|
});
|
|
return ;
|
|
}
|
|
//把优惠券id和金额传过去二次支付页面进行显示,但不能进行选择优惠券,否则导致支付金额跟第一次不符合支付失败
|
|
let yid=tmpList[0].yid;
|
|
let yhjine=tmpList[0].yhjine
|
|
uni.setStorage({
|
|
key:'buylist',
|
|
data:tmpList,
|
|
success: () => {
|
|
uni.navigateTo({
|
|
url:'../orderconfirmation/orderconfirmation_twopay?dhid='+id+'&yid='+yid+"&yhjine="+yhjine
|
|
})
|
|
}
|
|
})
|
|
}else{
|
|
this.$refs.popup.open()
|
|
}
|
|
}
|
|
}
|
|
}else{
|
|
uni.showToast({
|
|
title:'暂无数据',icon:'none'
|
|
})
|
|
}
|
|
},
|
|
showType(tbIndex){
|
|
this.tabbarIndex = tbIndex;
|
|
this.orderlist(tbIndex);
|
|
},
|
|
showdetail(id){
|
|
this.orderdetail(id,0)
|
|
},
|
|
closeit(){
|
|
this.$refs.popup.close()
|
|
},
|
|
//取消订单
|
|
cancelOrder(dhid){
|
|
let t=this;
|
|
uni.showModal({
|
|
title: '温馨提示',
|
|
content: '是否删除该订单?',
|
|
success: function (res) {
|
|
if (res.confirm) {
|
|
uni.showLoading({
|
|
title:'正在删除...'
|
|
})
|
|
t.cancelorder(dhid)
|
|
} else if (res.cancel) {
|
|
//用户点击取消
|
|
}
|
|
}
|
|
});
|
|
|
|
},
|
|
toPayment(dhid){
|
|
//本地模拟订单提交UI效果
|
|
this.orderdetail(dhid,1);
|
|
},
|
|
sqtuik(dhid,allmoney,tktype){
|
|
//tktype 0-未发货前申请退款,1-已发货申请售后
|
|
uni.navigateTo({
|
|
url:'../refund/refund?dhid='+dhid+'&index='+this.tabbarIndex+'&allmoney='+allmoney+'&tktype='+tktype
|
|
})
|
|
},
|
|
qutuanh(dhid,allmoney,tktype){
|
|
//tktype 0-未发货前申请退款,1-已发货申请售后
|
|
uni.navigateTo({
|
|
url:'../refund/refund2?dhid='+dhid+'&index='+this.tabbarIndex+'&allmoney='+allmoney+'&tktype='+tktype
|
|
})
|
|
},
|
|
wuliu(dhid){
|
|
uni.showToast({
|
|
title:'暂无物流',icon:'none'
|
|
})
|
|
// uni.navigateTo({
|
|
// url:'./wuliu?dhid='+dhid
|
|
// })
|
|
},
|
|
daochu(dhid)
|
|
{
|
|
this.excel_dh(dhid);
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
page{
|
|
background-color: #f3f3f3;
|
|
}
|
|
.kfbt{
|
|
width: 100%;
|
|
background-color: #ffffff;
|
|
border-radius: 65rpx;
|
|
font-size: 22rpx;
|
|
button::after{ border: none; }
|
|
border: solid 1upx #ccc;
|
|
color: #666;
|
|
padding: 0rpx 20rpx;
|
|
}
|
|
.topTabBar{
|
|
width: 100%;
|
|
position: fixed;
|
|
top: 0;
|
|
z-index: 10;
|
|
background-color: #f8f8f8;
|
|
height: 80upx;
|
|
display: flex;
|
|
justify-content: space-around;
|
|
.grid{
|
|
width: 20%;
|
|
height: 80upx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
color: #444;
|
|
font-size: 28upx;
|
|
.text{
|
|
height: 76upx;
|
|
display: flex;
|
|
align-items: center;
|
|
&.on{
|
|
color: #f06c7a;
|
|
border-bottom: solid 4upx #f06c7a;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
.order-list{
|
|
margin-top: 80upx;
|
|
padding-top: 20upx;
|
|
width: 100%;
|
|
.list{
|
|
width: 94%;
|
|
margin: 0 auto;
|
|
.onorder{
|
|
width: 100%;
|
|
height: 50vw;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-content: center;
|
|
flex-wrap: wrap;
|
|
image{
|
|
width: 20vw;
|
|
height: 20vw;
|
|
border-radius: 100%;
|
|
}
|
|
.text{
|
|
width: 100%;
|
|
height: 60upx;
|
|
font-size: 28upx;
|
|
color: #444;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
}
|
|
.row{
|
|
padding: 10upx 40upx;
|
|
border-radius: 10upx;
|
|
background-color: #fff;
|
|
margin-bottom: 20upx;
|
|
.type{
|
|
font-size: 26upx;
|
|
color: #ec652f;
|
|
height: 50upx;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.listitem{
|
|
display: flex;
|
|
justify-content: space-between;
|
|
.itemtitle{
|
|
font-size: 25upx;
|
|
color: #A7A7A7;
|
|
}
|
|
.itemvaule{
|
|
font-size: 28upx;
|
|
color: #5A5A5A;
|
|
}
|
|
.itemvaule_mx{
|
|
font-size: 25upx;
|
|
color: #A7A7A7;
|
|
}
|
|
}
|
|
.detail{
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
align-items: flex-end;
|
|
height: 60upx;
|
|
font-size: 24upx;
|
|
.sum{
|
|
padding: 0 8upx;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
.price{
|
|
font-size: 30upx;
|
|
}
|
|
}
|
|
|
|
}
|
|
.btns{
|
|
height: 80upx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
view{
|
|
min-width: 120upx;
|
|
height: 50upx;
|
|
padding: 0 2upx;
|
|
border-radius: 50upx;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
font-size: 26upx;
|
|
margin-left: 20upx;
|
|
}
|
|
.default{
|
|
border: solid 1upx #ccc;
|
|
color: #666;
|
|
}
|
|
.pay{
|
|
border: solid 1upx #ec652f;
|
|
color: #ec652f;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.tip{
|
|
color: #008001;
|
|
margin-bottom: 15rpx;
|
|
}
|
|
.tkgood{
|
|
filter: grayscale(90%);
|
|
}
|
|
.choosegood{
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin: 20rpx 1px;
|
|
padding-bottom: 15upx;
|
|
border-bottom: 1upx solid #E8E8E8;
|
|
}
|
|
.desc{
|
|
font-size: 25upx;
|
|
width: 45%;
|
|
}
|
|
.price{
|
|
color: #7E7E7C;
|
|
padding-top: 20rpx;
|
|
}
|
|
.chukl{
|
|
color: #6C9850;
|
|
padding-top: 20rpx;
|
|
}
|
|
.istk{
|
|
color: #C1C1C1;
|
|
padding-top: 20rpx;
|
|
}
|
|
.shisje{
|
|
color: #DB2C21;
|
|
padding-top: 20rpx;
|
|
}
|
|
.choosegoodimg image{
|
|
width: 150rpx;
|
|
height: 150rpx;
|
|
}
|
|
.dosure{
|
|
position: absolute;
|
|
right: 25upx;
|
|
top: 20upx;
|
|
}
|
|
</style>
|