|
|
- <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>
|