liveh5-nuxt/app/pages/home/components/ItemDetailSheet/index.vue
2025-01-22 14:02:22 +08:00

96 lines
2.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<van-popup
v-model:show="props.show"
position="bottom"
:style="{ height: props.height }"
round
closeable
@closed="handleClose"
>
<div class="p-[16px] overflow-y-auto h-full">
<!-- 商品基本信息 -->
<div class="flex flex-col gap-[12px]">
<img
:src="props.detail?.artwork?.hdPic"
class="w-full rounded-[4px] object-cover"
:alt="props.detail?.name"
/>
<div class="text-[16px] font-medium text-[#000]">
{{ props.detail?.name }}
</div>
<!-- 价格信息 -->
<div class="flex flex-col gap-[8px]">
<div class="text-[14px] text-[#575757]">
起拍价{{ formatPrice(props.detail?.startPrice) }}
</div>
<div v-if="props.detail?.soldPrice" class="text-[14px] text-[#b58047]">
成交价:{{ formatPrice(props.detail?.soldPrice) }}
</div>
</div>
<!-- 商品详情 -->
<div class="mt-[16px]">
<div class="text-[16px] font-medium mb-[12px]">商品详情</div>
<div class="flex flex-col gap-[8px]">
<div class="flex justify-between text-[14px]">
<span class="text-[#575757]">尺寸</span>
<span>{{ props.detail?.artwork?.size || '-' }}</span>
</div>
<div class="flex justify-between text-[14px]">
<span class="text-[#575757]">年代</span>
<span>{{ props.detail?.artwork?.year || '-' }}</span>
</div>
<div class="flex justify-between text-[14px]">
<span class="text-[#575757]">材质</span>
<span>{{ props.detail?.artwork?.material || '-' }}</span>
</div>
</div>
</div>
<!-- 作品描述 -->
<div v-if="props.detail?.artwork?.description" class="mt-[16px]">
<div class="text-[16px] font-medium mb-[12px]">作品描述</div>
<div class="text-[14px] text-[#575757] whitespace-pre-wrap">
{{ props.detail?.artwork?.description }}
</div>
</div>
</div>
</div>
</van-popup>
</template>
<script setup>
import { formatPrice } from '~/utils/format'
const props = defineProps({
show: {
type: Boolean,
default: false
},
height: {
type: String,
default: '90vh'
},
detail: {
type: Object,
default: () => ({})
}
})
const emit = defineEmits(['update:show'])
const handleClose = () => {
emit('update:show', false)
}
</script>
<style scoped>
:deep(.van-popup) {
max-height: 90vh;
}
:deep(.van-popup__close-icon) {
color: #000;
}
</style>