280 lines
6.2 KiB
Vue
280 lines
6.2 KiB
Vue
|
<template>
|
|||
|
<view class="container">
|
|||
|
<u-navbar title="点单详情" :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#fff'
|
|||
|
title-size='36' height='36' id="navbar">
|
|||
|
</u-navbar>
|
|||
|
<!-- 顶部酒吧信息 -->
|
|||
|
<view class="bar-info">
|
|||
|
<text class="bar-name">{{goodsList.storeName}}</text>
|
|||
|
<image @click="btntel" style="width: 42rpx;height: 42rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uuGnSpvQrpdkNgQKbRak" mode=""></image>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 商品列表 -->
|
|||
|
<view class="goods-list">
|
|||
|
<view class="goods-item" v-for="(item, index) in goodsList.goodsOrderSkuVOList" :key="index">
|
|||
|
<image class="image-placeholder" :src="item.picture" mode=""></image>
|
|||
|
<view class="goods-detail">
|
|||
|
<view class="">
|
|||
|
<text class="goods-name">{{ item.goodsName }}</text>
|
|||
|
<view class="special-request">{{ item.description }}</view>
|
|||
|
</view>
|
|||
|
<view class="">
|
|||
|
<view class="price-group">
|
|||
|
<text class="goods-price">¥{{ item.price }}</text>
|
|||
|
</view>
|
|||
|
<text class="quantity">×{{ item.number }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 价格总计 -->
|
|||
|
<view class="total-section">
|
|||
|
<text class="total-label">实付:</text>
|
|||
|
<text class="total-amount">¥{{ goodsList.payedAmount == null ? '0' : goodsList.payedAmount}}</text>
|
|||
|
</view>
|
|||
|
|
|||
|
<!-- 订单详情 -->
|
|||
|
<view class="order-details">
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">订单编号:</text>
|
|||
|
<text class="detail-value">{{ goodsList.orderNo }}</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">订单状态:</text>
|
|||
|
<text class="detail-value" v-if="goodsList.status == 'WAIT_DELIVERY'">待配送</text>
|
|||
|
<text class="detail-value" v-if="goodsList.status == 'WAIT_PAY'">待支付</text>
|
|||
|
<text class="detail-value" v-if="goodsList.status == 'FINISHED'">已结束</text>
|
|||
|
<text class="detail-value" v-if="goodsList.status == 'CANCELED'">已取消</text>
|
|||
|
<text class="detail-value" v-if="goodsList.status == 'REFUNDED'">已退款</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">下单时间:</text>
|
|||
|
<text class="detail-value">{{ goodsList.createTime }}</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">支付方式:</text>
|
|||
|
<text class="detail-value">微信支付</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">订单金额:</text>
|
|||
|
<text class="detail-value">¥{{ goodsList.payAmount == null ? '0' : goodsList.payAmount}}</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">退款金额:</text>
|
|||
|
<text class="detail-value">¥{{ goodsList.payRefunded == null ? '0' : goodsList.payRefunded}}</text>
|
|||
|
</view>
|
|||
|
<view class="detail-item">
|
|||
|
<text class="detail-label">实际金额:</text>
|
|||
|
<text class="detail-value">¥{{ Number(goodsList.payedAmount) - Number(goodsList.payRefunded) }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
goodsList: {},
|
|||
|
bgc: {
|
|||
|
backgroundColor: "#000000",
|
|||
|
},
|
|||
|
no: ''
|
|||
|
};
|
|||
|
},
|
|||
|
onLoad(option) {
|
|||
|
this.no = option.no
|
|||
|
this.getxq()
|
|||
|
},
|
|||
|
methods: {
|
|||
|
getxq() {
|
|||
|
this.$u.get(`/app/goodsOrder/goodsOrderDetail?eqNo=${this.no}`).then(res => {
|
|||
|
if (res.code == 200) {
|
|||
|
this.goodsList = res.data
|
|||
|
}
|
|||
|
})
|
|||
|
},
|
|||
|
// 点击拨打电话
|
|||
|
btntel(){
|
|||
|
if(this.goodsList.mchPhone){
|
|||
|
uni.makePhoneCall({
|
|||
|
phoneNumber: String(this.goodsList.mchPhone),
|
|||
|
success: () => {
|
|||
|
console.log("拨打电话成功")
|
|||
|
},
|
|||
|
fail: (err) => {
|
|||
|
console.log("拨打电话失败:", err)
|
|||
|
uni.showToast({
|
|||
|
title: '暂无电话',
|
|||
|
icon: 'none',
|
|||
|
duration:3000
|
|||
|
})
|
|||
|
}
|
|||
|
})
|
|||
|
}else{
|
|||
|
uni.showToast({
|
|||
|
title: '暂无电话',
|
|||
|
icon: 'none',
|
|||
|
duration:3000
|
|||
|
})
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style scoped>
|
|||
|
.container {
|
|||
|
background-color: #000000;
|
|||
|
min-height: 100vh;
|
|||
|
padding: 24rpx;
|
|||
|
}
|
|||
|
|
|||
|
.bar-info {
|
|||
|
padding: 32rpx;
|
|||
|
background-color: #1A1A1A;
|
|||
|
border-radius: 16rpx;
|
|||
|
margin-bottom: 32rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
}
|
|||
|
|
|||
|
.bar-name {
|
|||
|
display: block;
|
|||
|
font-size: 36rpx;
|
|||
|
font-weight: 600;
|
|||
|
color: #FFFFFF;
|
|||
|
}
|
|||
|
|
|||
|
.bar-address {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #999999;
|
|||
|
line-height: 1.4;
|
|||
|
}
|
|||
|
|
|||
|
.goods-list {
|
|||
|
margin-bottom: 32rpx;
|
|||
|
}
|
|||
|
|
|||
|
.goods-item {
|
|||
|
display: flex;
|
|||
|
align-items: flex-start;
|
|||
|
padding: 32rpx;
|
|||
|
background-color: #1A1A1A;
|
|||
|
border-radius: 16rpx;
|
|||
|
margin-bottom: 24rpx;
|
|||
|
}
|
|||
|
|
|||
|
.image-placeholder {
|
|||
|
width: 120rpx;
|
|||
|
height: 120rpx;
|
|||
|
background-color: #333333;
|
|||
|
border-radius: 8rpx;
|
|||
|
margin-right: 24rpx;
|
|||
|
flex-shrink: 0;
|
|||
|
}
|
|||
|
|
|||
|
.goods-detail {
|
|||
|
flex: 1;
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
}
|
|||
|
|
|||
|
.goods-name {
|
|||
|
display: block;
|
|||
|
font-size: 32rpx;
|
|||
|
color: #FFFFFF;
|
|||
|
margin-bottom: 12rpx;
|
|||
|
}
|
|||
|
|
|||
|
.price-group {
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
margin-bottom: 12rpx;
|
|||
|
}
|
|||
|
|
|||
|
.goods-price {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #FFFFFF;
|
|||
|
margin-right: 16rpx;
|
|||
|
}
|
|||
|
|
|||
|
.special-request {
|
|||
|
font-size: 24rpx;
|
|||
|
color: #999999;
|
|||
|
background-color: #333333;
|
|||
|
padding: 8rpx 16rpx;
|
|||
|
border-radius: 32rpx;
|
|||
|
}
|
|||
|
|
|||
|
.quantity {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #999999;
|
|||
|
display: block;
|
|||
|
margin-top: 50rpx;
|
|||
|
}
|
|||
|
|
|||
|
.total-section {
|
|||
|
padding: 24rpx 32rpx;
|
|||
|
background-color: #1A1A1A;
|
|||
|
border-radius: 16rpx;
|
|||
|
margin-bottom: 32rpx;
|
|||
|
display: flex;
|
|||
|
justify-content: flex-end;
|
|||
|
align-items: center;
|
|||
|
}
|
|||
|
|
|||
|
.total-label {
|
|||
|
font-size: 32rpx;
|
|||
|
color: #999999;
|
|||
|
margin-right: 16rpx;
|
|||
|
}
|
|||
|
|
|||
|
.total-amount {
|
|||
|
font-size: 36rpx;
|
|||
|
color: #FFFFFF;
|
|||
|
font-weight: 600;
|
|||
|
}
|
|||
|
|
|||
|
.order-details {
|
|||
|
background-color: #1A1A1A;
|
|||
|
border-radius: 16rpx;
|
|||
|
padding: 32rpx;
|
|||
|
}
|
|||
|
|
|||
|
.detail-item {
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
align-items: center;
|
|||
|
padding: 24rpx 0;
|
|||
|
border-bottom: 1rpx solid #333333;
|
|||
|
}
|
|||
|
|
|||
|
.detail-item:last-child {
|
|||
|
border-bottom: none;
|
|||
|
}
|
|||
|
|
|||
|
.detail-label {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #999999;
|
|||
|
}
|
|||
|
|
|||
|
.detail-value {
|
|||
|
font-size: 28rpx;
|
|||
|
color: #FFFFFF;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
.status-item {
|
|||
|
margin-top: 16rpx;
|
|||
|
padding-top: 24rpx;
|
|||
|
border-top: 1rpx solid #333333;
|
|||
|
}
|
|||
|
|
|||
|
.status-value {
|
|||
|
font-size: 32rpx;
|
|||
|
color: #4CD964;
|
|||
|
font-weight: 500;
|
|||
|
}
|
|||
|
</style>
|