264 lines
6.0 KiB
Vue
264 lines
6.0 KiB
Vue
|
<template>
|
||
|
<view class="multiple">
|
||
|
<view class="multiple-search">
|
||
|
<up-search v-model="queryParams.order_id" :animation="false" :showAction="true" bgColor="#f6f6f6"
|
||
|
placeholder="搜索商品" :actionStyle="{color:'#20B128','font-size':'28rpx'}" @custom="handleSearch"
|
||
|
@search="handleSearch" @clear="handleSearch"></up-search>
|
||
|
</view>
|
||
|
|
||
|
<view class="multiple-card">
|
||
|
<view class="multiple-card-wrap" style="padding-top: 12rpx;">
|
||
|
<block v-for="(item,indx) in shopList" :key="indx">
|
||
|
<view class="multiple-card-item" @click="onChooseShop(item)">
|
||
|
<view class="card-item-title">
|
||
|
<view class="card-item-title-order_id">{{item.order_id}}</view>
|
||
|
<view class="card-item-title-time">{{item.create_time}}</view>
|
||
|
</view>
|
||
|
|
||
|
<view class="afterSales-goods-wrap" v-for="(goods,indx) in item.goods_list" :key="indx">
|
||
|
<view class="afterSales-goods-left">
|
||
|
<up-image :src="goods.image" width="140rpx" height="140rpx" radius="8rpx"></up-image>
|
||
|
</view>
|
||
|
<view class="afterSales-goods-right">
|
||
|
<view class="afterSales-goods-right-title">
|
||
|
<text class="goods_name">{{goods.store_name}}</text>
|
||
|
<text class="goods_price">
|
||
|
<text style='font-size: 24rpx;'>¥</text>
|
||
|
<text style="font-size: 32rpx;">{{goods.price}}</text>
|
||
|
</text>
|
||
|
</view>
|
||
|
<view class="afterSales-goods-right-info">
|
||
|
<text class="goods_desc">牛腩块</text>
|
||
|
<text class="goods_num">x{{item.cart_num || 0}}</text>
|
||
|
</view>
|
||
|
|
||
|
<view class="refund">
|
||
|
<view class="refund-txt">退款¥</view>
|
||
|
<view class="refund-money">{{item.refund_price || 0}}</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<view class="refund-status">
|
||
|
<view class="refund-status-txt">
|
||
|
<text v-if="item.status == -1">退款申请中</text>
|
||
|
<text v-if="item.status == -2">退款完成</text>
|
||
|
<text v-if="item.status == 5">取消售后</text>
|
||
|
|
||
|
<view v-if="item.status == -1">等待商家处理</view>
|
||
|
<view v-if="item.status == -2">退款成功¥{{item.refund_status}}</view>
|
||
|
<view v-if="item.status == 5">退款已关闭</view>
|
||
|
</view>
|
||
|
<up-icon name="arrow-right"></up-icon>
|
||
|
</view>
|
||
|
</view>
|
||
|
</block>
|
||
|
</view>
|
||
|
<up-loadmore :status="status" iconColor="#b3b3b3" color="#b3b3b3" />
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script setup>
|
||
|
import {
|
||
|
reactive,
|
||
|
ref,
|
||
|
} from "vue";
|
||
|
import {
|
||
|
onLoad,
|
||
|
onShow,
|
||
|
onReachBottom
|
||
|
} from "@dcloudio/uni-app";
|
||
|
import {
|
||
|
orderListApi,
|
||
|
refundReasonListApi
|
||
|
} from "@/api/order.js"
|
||
|
|
||
|
const shopList = ref([]); // 门店列表
|
||
|
const status = ref(''); // 滚动状态
|
||
|
|
||
|
// 查询参数
|
||
|
const queryParams = reactive({
|
||
|
page_no: 1,
|
||
|
page_size: 10,
|
||
|
order_id: '',
|
||
|
paid: '1',
|
||
|
status: '-1'
|
||
|
})
|
||
|
|
||
|
onReachBottom(() => {
|
||
|
getShopList();
|
||
|
})
|
||
|
|
||
|
// 初始化
|
||
|
onLoad(() => {
|
||
|
getShopList();
|
||
|
});
|
||
|
|
||
|
// 详情
|
||
|
const onChooseShop = (item) => {
|
||
|
uni.navigateTo({
|
||
|
url: '/pages/afterSales/afterSalesOrderDetail',
|
||
|
fail(err) {
|
||
|
console.log(err);
|
||
|
},
|
||
|
success(res) {
|
||
|
res.eventChannel.emit('afterSalesOrderDetail', item)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 搜索
|
||
|
const handleSearch = () => {
|
||
|
shopList.value = [];
|
||
|
queryParams.page_no = 1;
|
||
|
status.value = '';
|
||
|
getShopList();
|
||
|
}
|
||
|
|
||
|
// 获取门店
|
||
|
const getShopList = () => {
|
||
|
if (status.value == 'nomore') return;
|
||
|
if (status.value == 'loading') return;
|
||
|
|
||
|
status.value == 'loading';
|
||
|
orderListApi(queryParams).then(res => {
|
||
|
let len = res.data.lists;
|
||
|
status.value = queryParams.page_size > len.length ? 'nomore' : 'loadmore';
|
||
|
shopList.value = shopList.value.concat(res.data.lists);
|
||
|
if (status.value == 'loadmore') queryParams.page_no += 1;
|
||
|
})
|
||
|
}
|
||
|
</script>
|
||
|
<style lang="scss">
|
||
|
page {
|
||
|
background: #FAFAFA;
|
||
|
}
|
||
|
|
||
|
.multiple {
|
||
|
padding-bottom: 30rpx;
|
||
|
|
||
|
.multiple-search {
|
||
|
position: sticky;
|
||
|
top: 0;
|
||
|
z-index: 10;
|
||
|
height: 90rpx;
|
||
|
background-color: #fff;
|
||
|
padding: 0 24rpx;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
|
||
|
.multiple-card {
|
||
|
padding-bottom: 12rpx;
|
||
|
|
||
|
.u-loadmore {
|
||
|
padding-bottom: 40rpx;
|
||
|
}
|
||
|
|
||
|
.multiple-card-item {
|
||
|
background: #FFFFFF;
|
||
|
border-radius: 16rpx;
|
||
|
margin: 0 24rpx 20rpx;
|
||
|
padding: 0 24rpx 24rpx;
|
||
|
overflow: hidden;
|
||
|
|
||
|
.card-item-title {
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
align-items: center;
|
||
|
height: 84rpx;
|
||
|
font-size: 28rpx;
|
||
|
color: #333333;
|
||
|
border-bottom: 2rpx solid #F8F9FA;
|
||
|
margin-bottom: 24rpx;
|
||
|
}
|
||
|
|
||
|
.afterSales-goods-wrap {
|
||
|
display: flex;
|
||
|
margin-bottom: 20rpx;
|
||
|
|
||
|
.afterSales-goods-left {
|
||
|
margin-right: 20rpx;
|
||
|
}
|
||
|
|
||
|
.afterSales-goods-right {
|
||
|
flex: 1;
|
||
|
|
||
|
.afterSales-goods-right-title {
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
align-items: center;
|
||
|
width: 100%;
|
||
|
|
||
|
.goods_name {
|
||
|
max-width: 400rpx;
|
||
|
font-size: 28rpx;
|
||
|
color: #333333;
|
||
|
overflow: hidden;
|
||
|
text-overflow: ellipsis;
|
||
|
white-space: nowrap;
|
||
|
}
|
||
|
|
||
|
.goods_price {
|
||
|
font-weight: 600;
|
||
|
font-size: 24rpx;
|
||
|
color: #060606;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.afterSales-goods-right-info {
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
align-items: center;
|
||
|
width: 100%;
|
||
|
font-size: 24rpx;
|
||
|
color: #777777;
|
||
|
margin-bottom: 20rpx;
|
||
|
}
|
||
|
|
||
|
.refund {
|
||
|
display: flex;
|
||
|
color: #333333;
|
||
|
|
||
|
.refund-txt {
|
||
|
font-size: 24rpx;
|
||
|
align-self: flex-end;
|
||
|
}
|
||
|
|
||
|
.refund-money {
|
||
|
font-size: 32rpx;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.refund-status {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: space-between;
|
||
|
height: 70rpx;
|
||
|
background: #F6F6F6;
|
||
|
border-radius: 16rpx;
|
||
|
padding: 0 30rpx 0 20rpx;
|
||
|
|
||
|
.refund-status-txt {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
|
||
|
text {
|
||
|
font-weight: 600;
|
||
|
font-size: 28rpx;
|
||
|
color: #333333;
|
||
|
margin-right: 30rpx;
|
||
|
}
|
||
|
|
||
|
view {
|
||
|
font-size: 28rpx;
|
||
|
color: #333333;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</style>
|