- 移除多个单独的 PDF 组件,整合为一个通用的 pdfView 组件 - 使用计算属性生成协议列表,提高代码可维护性 - 添加折叠面板组件,优化用户体验 - 实现拍卖笔录 PDF 的动态加载 - 优化页面布局和样式
83 lines
3.0 KiB
Vue
83 lines
3.0 KiB
Vue
<script setup>
|
||
import { showImagePreview } from 'vant';
|
||
|
||
import xImage from '@/components/x-image/index.vue'
|
||
const props = defineProps({
|
||
detailInfo: {
|
||
type: Object,
|
||
default: null
|
||
}
|
||
})
|
||
const filteredPriceRules = computed(() => {
|
||
if (!props.detailInfo?.priceRules) return []
|
||
|
||
// 找到第一个price为空的索引
|
||
const emptyIndex = props.detailInfo.priceRules.findIndex(item => !item.price)
|
||
|
||
if (emptyIndex === -1) {
|
||
// 如果没有空价格,返回全部
|
||
return props.detailInfo.priceRules
|
||
} else {
|
||
// 如果有空价格,只返回到空价格之前的数据
|
||
return props.detailInfo.priceRules.slice(0, emptyIndex)
|
||
}
|
||
})
|
||
</script>
|
||
|
||
<template>
|
||
<div>
|
||
<div class="flex justify-center">
|
||
<xImage class="h-188px" :src="detailInfo?.artwork?.hdPic"></xImage>
|
||
</div>
|
||
<div class="px-[16px] bg-[#fff] pt-[11px] mb-6px">
|
||
<div class="text-[#000] text-[16px] mb-[12px]">{{detailInfo?.artworkTitle}}</div>
|
||
<div class="text-#575757 text-[14px] pb-8px">
|
||
<div class="flex mb-[4px]">
|
||
<div class="w-[70px]">{{$t('detail.text1')}}:</div>
|
||
<div>{{detailInfo?.artwork?.artistName??'-'}}</div>
|
||
</div>
|
||
<div class="flex mb-[4px]">
|
||
<div class="w-[70px] flex-shrink-0">{{$t('detail.text2')}}:</div>
|
||
<div>{{detailInfo?.artwork?.ruler??'-'}}</div>
|
||
</div>
|
||
<div class="flex mb-[4px]">
|
||
<div class="w-[70px] flex-shrink-0">{{$t('detail.text3')}}*{{$t('detail.text4')}}:</div>
|
||
<div>{{detailInfo?.artwork?.length}}*{{detailInfo?.artwork?.width}}cm</div>
|
||
</div>
|
||
<div class="flex mb-[4px]">
|
||
<div class="w-[70px] flex-shrink-0">{{$t('detail.text5')}}:</div>
|
||
<div>{{detailInfo?.artwork?.abstract??'-'}}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="flex px-[16px] bg-#fff h-[36px] items-center mb-6px">
|
||
<div class="text-[#575757] text-[14px]">{{$t('detail.text6')}}:</div>
|
||
<div class="text-#575757 text-14px font-bold">{{detailInfo?.startPriceCurrency}} {{detailInfo?.startPrice}}</div>
|
||
</div>
|
||
<div class="flex px-[16px] bg-#fff h-[36px] items-center mb-6px" v-if="detailInfo?.soldPrice">
|
||
<div class="text-[#B58047] text-[14px]">成交价:</div>
|
||
<div class="text-#B58047 text-14px font-bold">{{detailInfo?.soldPriceCurrency}} {{detailInfo?.soldPrice}}</div>
|
||
</div>
|
||
<div class="px-[16px] bg-#fff pt-12px pb-18px">
|
||
<div class="text-[#575757] text-[14px] mb-4px">{{$t('detail.text7')}}:</div>
|
||
<div v-if="detailInfo?.priceRuleType!=='diy'">
|
||
<xImage :src="detailInfo?.priceRuleImage" alt=""/>
|
||
</div>
|
||
<div v-else class="mt-20px">
|
||
<div class="flex text-#575757 text-12px">
|
||
<div class="grow-1 text-center">序号</div>
|
||
<div class="grow-1 text-center">叫价金额</div>
|
||
</div>
|
||
<div v-for="(item,index) of filteredPriceRules" :key="item.index" class="flex text-#575757 text-12px mt-10px">
|
||
<div class="grow-1 text-center">{{item.index}}</div>
|
||
<div class="grow-1 text-center">{{item.price}}</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<style scoped>
|
||
|
||
</style> |