Files
2024-09-27 01:32:49 +08:00

348 lines
9.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 我的订单 页面 -->
<view class="bg_F2F2F2 h-100">
<PublicTop page_title='我的订单'></PublicTop>
<!-- 占位 -->
<view class="place"></view>
<view class="menu d-flex j-around x-bg-white shadow">
<view class="" v-for="(item,index) of menu" :key='index' :class="{menu_active:menu_index == index}" @click="choose_menu(index)">{{item.name}}</view>
</view>
<view class="place1"></view>
<view v-if='orderList.length<=0' align="center" class="no_list">
<image src="../../static/no/u/carno.png" mode="" class="no_list"></image>
<view class="x_textCenter margin-shu20 x_text_hui">暂无订单</view>
</view>
<view class="padding-zy30 bg_F2F2F2">
<view class="order_list x_margin0auto" v-if='orderList.length>0'>
<view class="padding-30 order_items margin-shu20 x-bg-white" v-for="(item,index) of orderList" :key='index' @click="dump_details(item.order_id,index)">
<view class="d-flex j-sb a-center">
<view class="" style="width:78%;">订单编号</view>
<!-- // 1货到付款值2线下支付值3小程序支付值4微信支付值5支付宝支付 -->
<image src="../../static/shoppingCart/weixin.png" mode="" style="height:32upx; width:32upx;" v-if='item.pay_type==4'></image>
<image src="../../static/shoppingCart/zhifubao.png" mode="" style="height:32upx; width:32upx;" v-if='item.pay_type==5'></image>
<image src="../../static/shoppingCart/huo.png" mode="" style="height:32upx; width:32upx;" v-if='item.pay_type==1'></image>
<image src="../../static/shoppingCart/gong.png" mode="" style="height:32upx; width:32upx;" v-if='item.pay_type==2'></image>
<view>{{item.order_status_str}}</view>
</view>
<view class="d-flex j-sb">
<view>{{item.order_sn}}</view>
<view class="x_text_hui">{{item.create_time}}</view>
</view>
<view class="list x-bg-white padding-sx30">
<view class="list_items">
<view class="items_li d-flex a-center" v-for="(value,key) of item.goods_list" :key="key">
<view class="d-flex goods_items a-center w-100">
<view class="box_img">
<an-image :src="value.app_thumb?value.app_thumb:'https://ydyd-develop-file.oss-cn-hangzhou.aliyuncs.com/imageerror.jpg'" alt="https://ydyd-develop-file.oss-cn-hangzhou.aliyuncs.com/imageerror.jpg"></an-image>
<!-- <image :src="value.app_thumb?value.app_thumb:'../../static/noimg.png'" mode="" class="h-100 w-100"></image> -->
</view>
<view class="goods_txt flex-1 padding-zy30">
<view class="font-weight">{{value.name}}</view>
<view class="x_text_hui">{{value.manufacturer_name}}</view>
<view class="">{{value.spec_desc}} &nbsp;&nbsp;&nbsp;{{value.unit}}</view>
<view class="d-flex j-sb">
<view class="x-text-159"> {{value.unit_price}}</view>
<view class="">X {{value.goods_number}}</view>
</view>
</view>
</view>
</view>
<view class="d-flex padding-zy30 j-end">
<text class="x_text_hui">{{item.total_num}},</text>
<text class="x_text_hei2828 margin-zy20 font-weight">合计:</text>
<text class="x-text-159"> {{item.total_amount}}</text>
</view>
<view class="place2"></view>
<view class="func_btn d-flex j-end">
<view v-if="item.order_status == 1" style="background-color: #FF8800; border:none;" class="x-text-white look_logistics margin-zy20" @click.stop="dump_pay(item.order_id)">去支付</view>
<view v-if="item.order_status == 1" class="x_text_hui look_logistics margin-zy20" @click.stop="cancel_pay(item)">取消订单</view>
<view v-if="item.order_status == 4" class="x_text_hui look_logistics margin-zy20">订单已取消</view>
<view v-if="item.order_status >= 5" class="x_text_hui look_logistics margin-zy20" @click.stop="dump_express(item.order_id,item.express_sn,item.express_name)">查看物流</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="loading-text">{{loadingText}}</view> -->
</view>
</template>
<script>
//
import PublicTop from '../../components/HeaderTop/PublicTop.vue'
import order from '../../utils/models/order.js'
import X_goods from '../../utils/models/goods.js'
import anImage from '@/components/an-image/an-image'
export default {
data() {
return {
page:1,
isScroll:true,
orderList:[
],
loadingText:"",
status:'',
demoStatus:1,
menu_index: 0, // 菜单当前下标
// 1 待付款 2代发货 6待收货 3已完成
menu: [{
name: '全部'
}, {
name: '待付款'
}, {
name: '待发货'
}, {
name: '待收货'
}, {
name: '已完成'
}]
}
},
components: {
PublicTop,
anImage
},
onLoad(option) {
// 1 待付款 2代发货 6待收货 3已完成
if(option.is_index){
this.menu_index = option.is_index
if(this.menu_index==1){
this.status = 1;
}
if(this.menu_index==2){
this.status = 2;
}
if(this.menu_index==3){
this.status = 6;
}
if(this.menu_index==4){
this.status = 3;
}
}
},
//下拉刷新需要自己在page.json文件中配置开启页面下拉刷新 "enablePullDownRefresh": true
onPullDownRefresh() {
setTimeout(()=>{
this.reload();
uni.stopPullDownRefresh();
}, 1000);
},
//上拉加载需要自己在page.json文件中配置"onReachBottomDistance"
onReachBottom(){
if(!this.isScroll){
this.loadingText="到底了";
return false;
}else{
this.loadingText="正在加载...";
setTimeout(() => {
this.getList();
}, 500);
}
},
methods: {
async getList() {
let parames = {
page:this.page,
order_status:this.status
}
let data = await order.getList(parames)
if(data.data.current_page == data.data.last_page){
this.isScroll = false
this.loadingText="到底了";
}
for (let i = 0; i < data.data.data.length; i++) {
this.orderList.push(data.data.data[i])
}
this.page++
this.handleError(data, res => {
})
},
// 查看物流
dump_express(id,express_sn,express_name){
uni.navigateTo({
url:'../order/express?id='+id+'&express_sn='+express_sn+'&express_name='+express_name
})
},
cancel_pay(item){
let _this = this
uni.showModal({
title: '提示',
content: '确认是否取消此订单',
success: function (res) {
if (res.confirm) {
_this.do_cancel_pay(item)
} else if (res.cancel) {
}
}
});
},
// 取消订单
async do_cancel_pay(item){
let res = await X_goods.x_cancelOrder(item.order_id)
this.orderList.splice(item,1)
this.handleError(res, res => {
})
},
// 去支付
dump_pay(id){
// 跳转选择支付页面
uni.navigateTo({
url:'../my/pay_type?order_id='+id
})
},
// 查看订单详情页
dump_details(id,index){
uni.navigateTo({
url:'../order/details?id='+id+'&index='+index
})
},
// 选择菜单
choose_menu(index) {
this.menu_index = index;
this.page = 1
this.isScroll = true
this.orderList = []
this.loadingText="正在加载...";
uni.pageScrollTo({
scrollTop: 0,
duration: 300
});
switch(index){
case 0: {
this.status = '';
break;
}
case 1: {
this.status = 1;
break;
}
case 2: {
this.status = 2;
break;
}
case 3: {
this.status = 6;
break;
}
case 4: {
this.status = 3;
break;
}
}
this.getList();
}
},
onShow() {
this.page = 1
this.isScroll = true
this.orderList = []
this.getList()
},
created(){
// this.page = 1
// this.isScroll = true
// this.orderList = []
// this.getList()
},
}
</script>
<style lang="scss">
.place{
background-color: #ffffff;
height: 148upx;
}
.place1{
background-color: #ffffff;
height: 90upx;
}
.place2{
background-color: #ffffff;
height: 40upx;
}
.loading-text{
width: 100%;
display: flex;
justify-content: center;
align-items: center;
height: 60upx;
color: #979797;
font-size: 24upx;
}
.menu {
z-index: 1;
font-size: 30upx;
line-height: 90upx;
width: 100%;
position:fixed;
.menu_active {
border-bottom: 4upx solid #6E67FF;
color: #6E67FF;
font-weight: bold;
}
}
.no_list{
height:199upx;
width:395upx;
}
.no_list{
text-align:center;
margin:23upx auto;
}
.order_list {
height: calc(100% - 238upx);
overflow-y: auto;
.order_items {
border-radius: 20upx;
}
}
.list {
font-size: 26upx;
.list_items {
.box_img {
height: 153.3upx;
width: 198upx;
background-color: #F2F2F2;
padding: 10upx 20upx;
margin: 0 10upx;
}
.goods_items {
.goods_count {
bottom: -14upx;
right: 8upx;
}
}
.line {
height: 4upx;
background-color: #F2F2F2;
}
}
.look_logistics{
border-radius: 10upx;
// width:132upx;
height:52upx;
line-height: 52upx;
width:160upx;
// line-height: 45upx;
text-align: center;
border:1upx solid #C3C3C3;
}
}
</style>