94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <script setup>
 | |
| import pdfView from './pdfView'
 | |
| import { contractView } from "~/api/goods/index.js"
 | |
| import { authStore } from "~/stores/auth/index.js"
 | |
| import {useI18n} from "vue-i18n";
 | |
| 
 | |
| definePageMeta({
 | |
|   layout: 'default',
 | |
|   i18n: 'signature.protocol.title'
 | |
| })
 | |
| 
 | |
| const { userInfo, payment } = authStore()
 | |
| const $t=useI18n().t
 | |
| const activeNames = ref([])
 | |
| const router = useRouter()
 | |
| const pmblUrl = ref('') // 存储拍卖笔录的URL
 | |
| 
 | |
| // 协议列表数据
 | |
| const protocolList = computed(() => [
 | |
|   { id: '1', title: $t('signature.agreement.notice'), pdfName: 'pmgg', type: 'local' },
 | |
|   { id: '2', title: $t('signature.agreement.rules'), pdfName: 'pmgz', type: 'local' },
 | |
|   { id: '3', title: $t('signature.agreement.buyerGuide'), pdfName: 'jmxz', type: 'local' },
 | |
|   { id: '4', title: $t('signature.agreement.buyerAgreement'), pdfName: 'jmxy', type: 'local' },
 | |
|   { id: '5', title: $t('signature.agreement.record'), pdfName: pmblUrl.value, type: 'remote' },
 | |
|   { id: '6', title: $t('signature.agreement.transfer'), pdfName: 'pmyjqrs', type: 'local' }
 | |
| ])
 | |
| 
 | |
| // 获取拍卖笔录PDF
 | |
| const fetchPmblPdf = async () => {
 | |
|   try {
 | |
|     const res = await contractView({
 | |
|       auctionArtworkUuid: payment.value.auctionArtworkUuid,
 | |
|     })
 | |
|     pmblUrl.value = res.data?.viewUrl // 假设接口返回的PDF URL在data字段中
 | |
|   } catch (error) {
 | |
|     }
 | |
| }
 | |
| 
 | |
| // 监听折叠面板变化
 | |
| const handleCollapseChange = (name) => {
 | |
|   activeNames.value = name
 | |
|   // 当打开拍卖笔录时获取PDF
 | |
|   if (name === '5' && !pmblUrl.value) {
 | |
|     fetchPmblPdf()
 | |
|   }
 | |
| }
 | |
| 
 | |
| const goSignature = () => {
 | |
|   router.push({
 | |
|     path: '/signature/panel'
 | |
|   })
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <template>
 | |
|   <div class="bg-#EBEBEB h-screen-nav flex flex-col">
 | |
|     <div class="h-50px text-14px text-#191919 bg-#fff flex items-center px-21px mb-6px shrink-0">
 | |
|       {{ $t('signature.tips.prePayment') }}
 | |
|     </div>
 | |
| 
 | |
|     <van-collapse 
 | |
|       accordion 
 | |
|       v-model="activeNames" 
 | |
|       class="grow-1"
 | |
|       @change="handleCollapseChange"
 | |
|     >
 | |
|       <van-collapse-item
 | |
|         v-for="item in protocolList"
 | |
|         :key="item.id"
 | |
|         :name="item.id"
 | |
|         class="mb-6px"
 | |
|       >
 | |
|         <template #title>
 | |
|           <div class="text-#2B53AC text-14px">{{ item.title }}</div>
 | |
|         </template>
 | |
|         <pdfView 
 | |
|           :pdf-name="item.pdfName" 
 | |
|           :type="item.type"
 | |
|           :is-active="activeNames === item.id" 
 | |
|         />
 | |
|       </van-collapse-item>
 | |
|     </van-collapse>
 | |
| 
 | |
|     <div class="h-81px bg-#fff flex justify-center pt-7px border-t">
 | |
|       <van-button
 | |
|         color="#2B53AC"
 | |
|         class="w-213px van-btn-h-38px"
 | |
|         @click="goSignature"
 | |
|       >
 | |
|         {{ $t('signature.button.agreeAndSign') }}
 | |
|       </van-button>
 | |
|     </div>
 | |
|   </div>
 | |
| </template> |