<template>
|
|
<view class="card" @click="jumpToProductDetail">
|
|
<view class="flex top">
|
|
<view class="title">{{ data.title }}</view>
|
|
<view :class="['flex', 'status', `status-${data.status}`]">{{ statusDesc }}</view>
|
|
</view>
|
|
<view class="flex main">
|
|
<image class="img" :src="data.url" mode="scaleToFill"></image>
|
|
<view class="info">
|
|
<view class="flex row">
|
|
<view class="row-label">客户姓名:</view>
|
|
<view class="row-content">{{ data.userName }}</view>
|
|
</view>
|
|
<template v-if="data.status == 0">
|
|
<view class="flex row">
|
|
<view class="row-label">下单时间:</view>
|
|
<view class="row-content">{{ data.createTime }}</view>
|
|
</view>
|
|
</template>
|
|
<template v-else>
|
|
<view class="flex row">
|
|
<view class="row-label">检测类型:</view>
|
|
<view class="row-content">{{ data.typeDesc }}</view>
|
|
</view>
|
|
<view class="flex row">
|
|
<view class="row-label">预约时间:</view>
|
|
<view class="row-content">{{ data.appointmentTime || '-' }}</view>
|
|
</view>
|
|
</template>
|
|
<view class="flex row">
|
|
<view class="row-label">联系电话:</view>
|
|
<view class="row-content">{{ data.phone }}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="flex bottom">
|
|
<view class="flex price">
|
|
<text class="price-label">总价格:</text>
|
|
<text class="price-unit">¥</text><text class="price-value">{{ data.amount.toFixed(2) }}</text>
|
|
</view>
|
|
<view class="flex btns">
|
|
<!-- 待预约 -->
|
|
<template v-if="data.status == 0">
|
|
<button class="btn" @click.stop="onBook">检测预约</button>
|
|
</template>
|
|
<!-- 自采 -->
|
|
<template v-else-if="data.status == 1">
|
|
<button class="btn" @click.stop="onSendBackOnline">线上回寄试剂盒</button>
|
|
</template>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
const STATUS_AND_DESC_MAPPING = {
|
|
0: '待预约',
|
|
1: '自采',
|
|
2: '上门',
|
|
3: '到店',
|
|
4: '已完成',
|
|
5: '已取消',
|
|
6: '预约失败',
|
|
}
|
|
|
|
export default {
|
|
props: {
|
|
data: {
|
|
type: Object,
|
|
default() {
|
|
return {}
|
|
}
|
|
}
|
|
},
|
|
computed: {
|
|
statusDesc() {
|
|
return STATUS_AND_DESC_MAPPING[this.data.status]
|
|
},
|
|
},
|
|
methods: {
|
|
onBook() {
|
|
this.$utils.navigateTo(`/pages_order/checkup/checkupBook/apply?id=${this.data.id}&type=${this.data.type}`)
|
|
},
|
|
onSendBackOnline() {
|
|
this.$emit('sendBack')
|
|
},
|
|
jumpToProductDetail() {
|
|
console.log(this.data.id, 'jumpToProductDetail')
|
|
if ([0, 5].includes(this.data.status) == 5) { // 0-待预约 5-已取消
|
|
this.$utils.navigateTo(`/pages_order/order/orderDetail/index?id=${this.data.id}`)
|
|
// todo: check product id
|
|
// this.$utils.navigateTo(`/pages_order/product/productDetail?id=${this.data.id}`)
|
|
} else {
|
|
this.$utils.navigateTo(`/pages_order/checkup/checkupBook/detail?id=${this.data.id}`)
|
|
}
|
|
},
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.card {
|
|
width: 100%;
|
|
padding: 32rpx;
|
|
box-sizing: border-box;
|
|
background: #FAFAFF;
|
|
border: 2rpx solid #FFFFFF;
|
|
border-radius: 32rpx;
|
|
}
|
|
|
|
.top {
|
|
justify-content: space-between;
|
|
|
|
.title {
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
font-size: 36rpx;
|
|
line-height: 1.4;
|
|
color: #252545;
|
|
}
|
|
|
|
.status {
|
|
display: inline-flex;
|
|
min-width: 120rpx;
|
|
padding: 6rpx 0;
|
|
box-sizing: border-box;
|
|
font-family: PingFang SC;
|
|
font-weight: 400;
|
|
font-size: 24rpx;
|
|
line-height: 1.4;
|
|
color: #252545;
|
|
background: #F3F3F3;
|
|
border-radius: 12rpx;
|
|
|
|
&-0 {
|
|
color: #7D27E0;
|
|
background: #F5EEFD;
|
|
}
|
|
|
|
&-1 {
|
|
color: #2799E0;
|
|
background: #EEF7FD;
|
|
}
|
|
|
|
&-2 {
|
|
color: #E53C29;
|
|
background: #FDE7E5;
|
|
}
|
|
|
|
&-3 {
|
|
color: #10A934;
|
|
background: #E2FDE9;
|
|
}
|
|
}
|
|
}
|
|
|
|
.main {
|
|
margin: 24rpx 0;
|
|
column-gap: 24rpx;
|
|
|
|
.img {
|
|
flex: none;
|
|
width: 120rpx;
|
|
height: 120rpx;
|
|
}
|
|
|
|
.info {
|
|
flex: 1;
|
|
padding: 24rpx;
|
|
background: #FFFFFF;
|
|
border-radius: 32rpx;
|
|
}
|
|
|
|
.row {
|
|
justify-content: flex-start;
|
|
column-gap: 4rpx;
|
|
|
|
font-family: PingFang SC;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
line-height: 1.4;
|
|
|
|
&-label {
|
|
flex: none;
|
|
color: #8B8B8B;
|
|
}
|
|
|
|
&-content {
|
|
color: #393939;
|
|
}
|
|
}
|
|
|
|
.row + .row {
|
|
margin-top: 16rpx;
|
|
}
|
|
}
|
|
|
|
.bottom {
|
|
justify-content: space-between;
|
|
|
|
.price {
|
|
column-gap: 8rpx;
|
|
font-family: PingFang SC;
|
|
font-weight: 500;
|
|
line-height: 1.4;
|
|
|
|
&-label {
|
|
font-weight: 400;
|
|
font-size: 26rpx;
|
|
color: #8B8B8B;
|
|
}
|
|
|
|
&-unit {
|
|
font-size: 24rpx;
|
|
color: #7451DE;
|
|
}
|
|
|
|
&-value {
|
|
font-size: 32rpx;
|
|
color: #7451DE;
|
|
}
|
|
}
|
|
|
|
.btns {
|
|
flex: 1;
|
|
justify-content: flex-end;
|
|
column-gap: 16rpx;
|
|
}
|
|
|
|
.btn {
|
|
padding: 10rpx 22rpx;
|
|
font-family: PingFang SC;
|
|
font-weight: 400;
|
|
font-size: 28rpx;
|
|
line-height: 1.4;
|
|
color: #393939;
|
|
border: 2rpx solid #252545;
|
|
border-radius: 32rpx;
|
|
}
|
|
}
|
|
</style>
|