2024-12-18 15:46:27 +08:00
|
|
|
<script setup>
|
|
|
|
// 我的订单
|
|
|
|
import {
|
|
|
|
ref,
|
|
|
|
reactive
|
|
|
|
} from 'vue'
|
|
|
|
import {
|
|
|
|
onLoad,
|
2025-01-19 22:56:45 +08:00
|
|
|
onUnload,
|
|
|
|
onReachBottom,
|
|
|
|
onPullDownRefresh,
|
2024-12-18 15:46:27 +08:00
|
|
|
onPageScroll
|
|
|
|
} from '@dcloudio/uni-app';
|
|
|
|
// 顶部
|
|
|
|
import apex from '@/components/header/apex.vue'
|
2025-01-21 09:39:21 +08:00
|
|
|
// 顶部条件栏
|
2024-12-18 15:46:27 +08:00
|
|
|
import JyShopNavigation from '@/components/public/jy-shop-navigation'
|
2025-01-21 09:39:21 +08:00
|
|
|
// 订单
|
2024-12-18 15:46:27 +08:00
|
|
|
import orderItem from '@/components/shop/order/item.vue';
|
|
|
|
// 工具库
|
|
|
|
import util from '@/common/js/util';
|
2025-01-19 22:56:45 +08:00
|
|
|
// api
|
|
|
|
import api from '@/api/index.js';
|
2025-01-21 09:39:21 +08:00
|
|
|
// 订单方法
|
|
|
|
import order from '@/common/js/order.js'
|
|
|
|
|
2024-12-18 15:46:27 +08:00
|
|
|
// tabs
|
|
|
|
const tabs = reactive([{
|
|
|
|
id: '',
|
|
|
|
name: '全部'
|
|
|
|
},
|
|
|
|
{
|
2025-01-19 22:56:45 +08:00
|
|
|
id: 0,
|
2024-12-18 15:46:27 +08:00
|
|
|
name: '待付款'
|
|
|
|
},
|
|
|
|
{
|
2025-01-19 22:56:45 +08:00
|
|
|
id: 1,
|
2024-12-18 15:46:27 +08:00
|
|
|
name: '待发货'
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 4,
|
2025-01-21 22:33:44 +08:00
|
|
|
name: '待收货'
|
2024-12-18 15:46:27 +08:00
|
|
|
},
|
|
|
|
{
|
|
|
|
id: 5,
|
2025-01-21 22:33:44 +08:00
|
|
|
name: '已收货'
|
2025-01-19 22:56:45 +08:00
|
|
|
},
|
|
|
|
{
|
2024-12-18 15:46:27 +08:00
|
|
|
id: 6,
|
2025-01-19 22:56:45 +08:00
|
|
|
name: '已完成'
|
2025-01-21 22:33:44 +08:00
|
|
|
},
|
|
|
|
{
|
2025-01-19 22:56:45 +08:00
|
|
|
id: 9,
|
|
|
|
name: '已取消'
|
2024-12-18 15:46:27 +08:00
|
|
|
}
|
|
|
|
])
|
2025-01-19 22:56:45 +08:00
|
|
|
// 列表
|
|
|
|
const list = reactive({
|
2025-01-21 09:39:21 +08:00
|
|
|
status: '',
|
|
|
|
search: '',
|
2025-01-19 22:56:45 +08:00
|
|
|
data: [],
|
|
|
|
pageSize: 10,
|
|
|
|
pageNum: 1,
|
|
|
|
total: 0,
|
|
|
|
})
|
2024-12-18 15:46:27 +08:00
|
|
|
// 顶部导航背景颜色
|
|
|
|
const apexBgColor = ref('#ffffff00')
|
|
|
|
|
|
|
|
onLoad((options) => {
|
|
|
|
// this.params.currentTab = options.currentTab / 1
|
2025-01-19 22:56:45 +08:00
|
|
|
// 获取订单列表
|
|
|
|
getList()
|
|
|
|
// 开启监听
|
|
|
|
addListener()
|
|
|
|
})
|
|
|
|
|
|
|
|
onUnload(() => {
|
|
|
|
// 移除监听
|
|
|
|
removeListener()
|
2024-12-18 15:46:27 +08:00
|
|
|
})
|
|
|
|
|
|
|
|
onPageScroll((ev) => {
|
|
|
|
apexBgColor.value = ev.scrollTop > 44 ? '#fff' : '#ffffff00'
|
|
|
|
})
|
|
|
|
|
2025-01-19 22:56:45 +08:00
|
|
|
onReachBottom(() => {
|
|
|
|
// 获取更多列表
|
|
|
|
getMoreList()
|
|
|
|
})
|
|
|
|
|
|
|
|
onPullDownRefresh(() => {
|
|
|
|
// 重载列表
|
|
|
|
refreshList()
|
|
|
|
})
|
|
|
|
|
|
|
|
// 开启监听
|
|
|
|
function addListener() {
|
|
|
|
uni.$on('updateOrderList', (data) => {
|
|
|
|
// 重载列表
|
|
|
|
refreshList()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
// 移除监听
|
|
|
|
function removeListener() {
|
|
|
|
uni.$off('updateOrderList')
|
|
|
|
}
|
|
|
|
|
|
|
|
// 重载列表
|
|
|
|
function refreshList() {
|
|
|
|
list.pageNum = 1
|
|
|
|
getList()
|
|
|
|
}
|
|
|
|
|
|
|
|
// 获取更多列表
|
|
|
|
function getMoreList() {
|
2025-01-21 09:39:21 +08:00
|
|
|
if (list.data.length >= list.total) return
|
2025-01-19 22:56:45 +08:00
|
|
|
list.pageNum++
|
|
|
|
getList()
|
|
|
|
}
|
|
|
|
|
|
|
|
// 获取订单列表
|
|
|
|
function getList() {
|
|
|
|
api.shop.getOrderList({
|
|
|
|
query: {
|
2025-01-21 09:39:21 +08:00
|
|
|
searchStr: list.search,
|
|
|
|
status: list.status,
|
2025-01-19 22:56:45 +08:00
|
|
|
pageNum: list.pageNum,
|
|
|
|
pageSize: list.pageSize,
|
|
|
|
},
|
|
|
|
}).then(res => {
|
|
|
|
if (res.code == 200) {
|
|
|
|
if (list.pageNum == 1) list.data.length = 0
|
|
|
|
list.data.push(...res.rows.map(item => {
|
|
|
|
item.status = Number(item.status)
|
2025-01-21 22:33:44 +08:00
|
|
|
if(item.refundStatus != 0) item.status_text = '售后'
|
|
|
|
// item.status_text =
|
2025-01-19 22:56:45 +08:00
|
|
|
return item
|
|
|
|
}))
|
|
|
|
list.total = res.total
|
|
|
|
return
|
|
|
|
}
|
|
|
|
util.alert({
|
|
|
|
content: rs.msg,
|
|
|
|
showCancel: false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2024-12-18 15:46:27 +08:00
|
|
|
/**
|
|
|
|
* 点击订单列表项
|
|
|
|
* @param {Object} ev 订单列表项
|
|
|
|
*/
|
|
|
|
function handleItem(ev) {
|
|
|
|
uni.navigateTo({
|
2025-01-21 09:39:21 +08:00
|
|
|
url: util.setUrl('/pages/shop/order/detail', {
|
|
|
|
orderId: ev.id,
|
|
|
|
})
|
2024-12-18 15:46:27 +08:00
|
|
|
})
|
|
|
|
}
|
2025-01-19 22:56:45 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 点击tab
|
|
|
|
* @param {Object} ev
|
|
|
|
*/
|
|
|
|
function itemClick(ev) {
|
|
|
|
// 重载列表
|
|
|
|
refreshList()
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2025-01-21 09:39:21 +08:00
|
|
|
* 取消订单
|
2025-01-19 22:56:45 +08:00
|
|
|
* @param {Object} item 订单
|
|
|
|
*/
|
2025-01-21 09:39:21 +08:00
|
|
|
function handleCancel(item) {
|
|
|
|
order.orderCancel({
|
|
|
|
orderId: item.id,
|
|
|
|
}).then(res => {
|
|
|
|
// 重载列表
|
|
|
|
refreshList()
|
2025-01-19 22:56:45 +08:00
|
|
|
})
|
|
|
|
}
|
2024-12-18 15:46:27 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<apex :bgColor="apexBgColor" mode="flex">
|
|
|
|
<template #content>
|
|
|
|
<view class="search rows f1 mr30 plr20 bf8f8f8 br10">
|
|
|
|
<uni-icons type="search" color="#999" />
|
2025-01-21 09:39:21 +08:00
|
|
|
<input class="input ml20" v-model="list.search" type="text" placeholder="搜索内容" @confirm="refreshList" />
|
2024-12-18 15:46:27 +08:00
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</apex>
|
|
|
|
|
|
|
|
<view class="app">
|
|
|
|
<view class="shopHeaderBg bgColor"></view>
|
|
|
|
|
|
|
|
<view class="f1 pr">
|
2025-01-21 09:39:21 +08:00
|
|
|
<JyShopNavigation :current="list.status" :list="tabs" @tabItemClick="itemClick" marright="25px"
|
2024-12-18 15:46:27 +08:00
|
|
|
activeWeight='600' activeColor="#333333" activeBarColor="initial" />
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="product mlr20 pr">
|
|
|
|
<!-- 订单列表 -->
|
|
|
|
<view class="order">
|
|
|
|
<template v-for="(item,index) in list.data" :key="index">
|
|
|
|
<view class="mtb30">
|
|
|
|
<orderItem :item="item" mode="mine" @item="handleItem">
|
|
|
|
<template #menu="scope">
|
2025-01-19 22:56:45 +08:00
|
|
|
<view class="menu ptb20 df jcr" v-if="[0,1,4,5,6].includes(scope.item.status)">
|
|
|
|
<template v-if="scope.item.status == 0">
|
2025-01-21 09:39:21 +08:00
|
|
|
<view class="btn bar closeHollow plr30" @click.stop="handleCancel(scope.item)">
|
|
|
|
取消订单</view>
|
|
|
|
<view class="btn bar warmHollow plr30" @click.stop="order.orderPay(item)">继续付款
|
2025-01-19 22:56:45 +08:00
|
|
|
</view>
|
2024-12-18 15:46:27 +08:00
|
|
|
</template>
|
2025-01-19 22:56:45 +08:00
|
|
|
<template v-if="scope.item.status == 1">
|
2025-01-21 22:33:44 +08:00
|
|
|
<!-- <view class="btn bar closeHollow plr30" @click.stop="order.orderAfterSales(item)">申请退款</view> -->
|
2025-01-21 09:39:21 +08:00
|
|
|
<!-- <view class="btn bar warmHollow plr30">催发货</view> -->
|
2024-12-18 15:46:27 +08:00
|
|
|
</template>
|
2025-01-21 22:33:44 +08:00
|
|
|
<template v-if="scope.item.status == 4">
|
|
|
|
<!-- <view class="btn bar closeHollow plr30">申请退款</view> -->
|
2024-12-18 15:46:27 +08:00
|
|
|
<view class="btn bar closeHollow plr30">查看物流</view>
|
|
|
|
<view class="btn bar warmHollow plr30">确认收货</view>
|
|
|
|
</template>
|
2025-01-21 22:33:44 +08:00
|
|
|
<template v-if="scope.item.status == 5">
|
|
|
|
<view class="btn bar closeHollow plr30" @click.stop="order.orderAfterSales(item)">申请退款</view>
|
2024-12-18 15:46:27 +08:00
|
|
|
<view class="btn bar warmHollow plr30">评价</view>
|
|
|
|
</template>
|
|
|
|
<template v-if="scope.item.status == 6">
|
|
|
|
<view class="btn bar closeHollow plr30">取消售后</view>
|
|
|
|
<view class="btn bar closeHollow plr30">钱款去向</view>
|
|
|
|
<view class="btn bar warmHollow plr30">平台介入</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</orderItem>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
<!-- <JyOrderCard v-for="(item, index) in 10" type="user_order"></JyOrderCard> -->
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
// 搜索
|
|
|
|
.search {
|
|
|
|
height: 30px;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 背景颜色
|
|
|
|
.bgColor {
|
|
|
|
height: 300rpx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.menu {
|
|
|
|
border-top: 2rpx solid #eee;
|
|
|
|
}
|
|
|
|
</style>
|