<template> <view class="shop-item"> <view class="item-title" @click="navTo"> <view>{{datas.number}}</view> <view v-if="datas.paid==0"> <text>待付款</text> </view> <view v-else> <text v-if="datas.status==0">待收货</text> <text v-if="datas.status==1">待收货</text> <text v-if="datas.status==2||datas.status==3">已完成</text> </view> </view> <view class="item-body" @click="navTo"> <view class="body-content"> <view style="display: flex;flex: 1;flex-shrink: 0;"> <view v-for="(item,index) in datas.goods_list" :key="index"> <image class="image" :src="item.imgs"></image> </view> </view> <view style="display: flex;flex-direction: column;align-items: center;justify-content: center;width: 100rpx;"> <up-icon name="arrow-right-double" color="#20B128"></up-icon> </view> </view> <view class="all">共 {{datas.goods_count}} 件商品, 总金额 <text>¥{{datas.total}}</text> </view> </view> <view v-if="datas.paid==0" class="item-btn"> <view style="width: 80px;"><up-button size="small" plain color="#989898" shape="circle" @click="cancleOrder">取消订单</up-button></view> <view style="width: 80px;"><up-button size="small" color="#20B128" shape="circle" @click="rePay">立即支付</up-button></view> </view> <view v-else class="item-btn"> <!-- <view style="width: 80px;"><up-button size="small" plain color="#989898" shape="circle">申请售后</up-button></view> --> <view @click="takeOrder" v-if="datas.status==1" style="width: 80px;"><up-button size="small" color="#20B128" shape="circle">确认收货</up-button></view> <view @click="purchaseAgain" v-if="datas.status==2||datas.status==3" style="width: 80px;"><up-button size="small" plain color="#20B128" shape="circle">再次购买</up-button></view> <view @click="navTo" style="width: 80px;"><up-button size="small" plain color="#20B128" shape="circle">查看详情</up-button></view> </view> <!-- <view v-if="type==3" class="item-close"> <view class="title"> <view class="type">退款申请中</view> <view>等待商家处理</view> </view> <up-icon name="arrow-right"></up-icon> </view> --> </view> </template> <script setup> // 订单状态(0:待发货;1:待收货;2:已完成;3:已完成) const props = defineProps({ type: { type: Number, default: 0 }, datas: { type: Object, default: () => {} } }) const navTo = () => { uni.navigateTo({ url: `/pagesOrder/detail/detail?type=${props.datas.paid}&id=${props.datas.id}` }) } const emit = defineEmits(['cancleOrder', 'rePay', 'takeOrder', 'purchaseAgain']); const cancleOrder = ()=>{ emit('cancleOrder', props.datas) } const takeOrder = ()=>{ emit('takeOrder', props.datas) } const purchaseAgain = ()=>{ emit('purchaseAgain', props.datas) } const rePay = ()=>{ emit('rePay', props.datas) } </script> <style lang="scss"> .shop-item { width: 710rpx; margin-bottom: 20rpx; background-color: #fff; border-radius: 14rpx; padding: 20rpx; box-sizing: border-box; .item-title { display: flex; justify-content: space-between; } .item-body { margin: 20rpx 0; .body-content { display: flex; justify-content: space-between; color: #989898; .image { width: 160rpx; height: 160rpx; margin-right: 20rpx; border-radius: 14rpx; } .title { display: flex; justify-content: space-between; font-size: 28rpx; color: #444; } .tips { display: flex; justify-content: space-between; font-size: 24rpx; margin-top: 10rpx; } } .all { text-align: right; font-size: 26rpx; text { color: #F55726; } } } .item-btn { display: flex; justify-content: flex-end; view { width: 80rpx; margin-left: 20rpx; } } .item-close { display: flex; justify-content: space-between; align-items: center; background-color: #F6F6F6; padding: 15rpx; border-radius: 14rpx; .title { display: flex; .type { font-weight: 600; margin-right: 20rpx; } } } } </style>