1231
This commit is contained in:
parent
e57f758804
commit
f01d711d55
@ -26,6 +26,11 @@ const columns1 = ref([
|
|||||||
{text: t('realAuth.passport'), value: 2},
|
{text: t('realAuth.passport'), value: 2},
|
||||||
{text: t('realAuth.other'), value: 3},
|
{text: t('realAuth.other'), value: 3},
|
||||||
])
|
])
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据当前语言获取默认国家/地区信息
|
||||||
|
* @returns {{zone: string, name: string}} 返回国家区号和名称
|
||||||
|
*/
|
||||||
const getDefaultCountry = () => {
|
const getDefaultCountry = () => {
|
||||||
let defaultCode = 'CN' // 默认中国大陆
|
let defaultCode = 'CN' // 默认中国大陆
|
||||||
switch (locale.value) {
|
switch (locale.value) {
|
||||||
@ -53,11 +58,20 @@ const getDefaultCountry = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const goCountryRegion=()=>{
|
/**
|
||||||
|
* 跳转到国家/地区选择页面
|
||||||
|
*/
|
||||||
|
const goCountryRegion = () => {
|
||||||
router.push({
|
router.push({
|
||||||
path:'/countryRegion'
|
path: '/countryRegion'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查表单是否完整填写
|
||||||
|
* @param {Object} obj - 要检查的表单对象
|
||||||
|
* @returns {boolean} 是否完整
|
||||||
|
*/
|
||||||
function isFormComplete(obj) {
|
function isFormComplete(obj) {
|
||||||
for (const key in obj) {
|
for (const key in obj) {
|
||||||
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
if (typeof obj[key] === 'object' && obj[key] !== null) {
|
||||||
@ -71,15 +85,25 @@ function isFormComplete(obj) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getData=async ()=>{
|
/**
|
||||||
const res=await offlineQrcode({
|
* 获取线下二维码支付状态
|
||||||
qrUid:qrUid.value
|
*/
|
||||||
})
|
const getData = async () => {
|
||||||
if (res.status===0){
|
const res = await offlineQrcode({
|
||||||
qrData.value=res.data
|
qrUid: qrUid.value
|
||||||
|
})
|
||||||
|
if (res.status === 0) {
|
||||||
|
qrData.value = res.data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const initData= async ()=>{
|
|
||||||
|
/**
|
||||||
|
* 初始化页面数据
|
||||||
|
* 1. 处理URL参数
|
||||||
|
* 2. 检查支付状态(扫付款码场景)
|
||||||
|
* 3. 设置默认国家/地区信息
|
||||||
|
*/
|
||||||
|
const initData = async () => {
|
||||||
if (route.query.number){
|
if (route.query.number){
|
||||||
number.value=Number(route.query.number)
|
number.value=Number(route.query.number)
|
||||||
}
|
}
|
||||||
@ -101,7 +125,18 @@ const initData= async ()=>{
|
|||||||
formData.value.countryCode=route.query.zone
|
formData.value.countryCode=route.query.zone
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const nextClick=async ()=>{
|
|
||||||
|
/**
|
||||||
|
* 处理下一步按钮点击
|
||||||
|
* 场景1(number=1): 扫号牌进入
|
||||||
|
* - 验证表单完整性
|
||||||
|
* - 检查用户号牌是否存在
|
||||||
|
* - 根据国家区号判断签署方式(国内用法大大,国外直接签字)
|
||||||
|
*
|
||||||
|
* 场景2(number=2): 扫付款码进入
|
||||||
|
* - 验证必填信息(手机、区号、用户名)
|
||||||
|
*/
|
||||||
|
const nextClick = async () => {
|
||||||
//扫号牌
|
//扫号牌
|
||||||
if (number.value==1){
|
if (number.value==1){
|
||||||
if (!isFormComplete(formData.value)){
|
if (!isFormComplete(formData.value)){
|
||||||
|
@ -1,86 +1,132 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import pdfView from './pdfView/index.vue'
|
import pdfView from './pdfView/index.vue'
|
||||||
import { contractView } from "~/api/goods/index.js"
|
import { contractView, signOffline } from "~/api/goods/index.js"
|
||||||
import {codeAuthStore} from "~/stores-collect-code/auth/index.js";
|
import { codeAuthStore } from "~/stores-collect-code/auth/index.js"
|
||||||
import {signOffline} from "~/api/goods/index.js";
|
import { useI18n } from "vue-i18n"
|
||||||
import {useI18n} from "vue-i18n";
|
import { fddInfo } from "@/api-collect-code/goods/index.js"
|
||||||
|
|
||||||
definePageMeta({
|
definePageMeta({
|
||||||
i18n: 'signature.protocol.title'
|
i18n: 'signature.protocol.title'
|
||||||
})
|
})
|
||||||
|
|
||||||
const {t} =useI18n()
|
const { t } = useI18n()
|
||||||
const {formData,number,qrData}=codeAuthStore()
|
const { formData, number, qrData } = codeAuthStore()
|
||||||
const activeNames = ref([])
|
const activeNames = ref([])
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const pmblUrl = ref('') // 存储拍卖笔录的URL
|
const pmblUrl = ref('')
|
||||||
|
|
||||||
// 协议列表数据
|
/**
|
||||||
|
* 根据签署顺序(number)返回不同的协议列表
|
||||||
|
* number = 1: 买家签署阶段,展示竞买协议、竞买须知、拍卖公告、拍卖规则
|
||||||
|
* number = 2: 卖家签署阶段,展示拍卖成交确认书、拍卖笔录
|
||||||
|
*/
|
||||||
const protocolList = computed(() => {
|
const protocolList = computed(() => {
|
||||||
if(number.value==1){
|
if (number.value === 1) {
|
||||||
return [
|
return [
|
||||||
{ id: '4', title: t('signature.agreement.buyerAgreement'), pdfName: 'jmxy', type: 'local' },
|
{ id: '4', title: t('signature.agreement.buyerAgreement'), pdfName: 'jmxy', type: 'local' },
|
||||||
{ id: '3', title: t('signature.agreement.buyerGuide'), pdfName: 'jmxz', type: 'local' },
|
{ id: '3', title: t('signature.agreement.buyerGuide'), pdfName: 'jmxz', type: 'local' },
|
||||||
{ id: '1', title: t('signature.agreement.notice'), pdfName: 'pmgg', type: 'local' },
|
{ id: '1', title: t('signature.agreement.notice'), pdfName: 'pmgg', type: 'local' },
|
||||||
{ id: '2', title: t('signature.agreement.rules'), pdfName: 'pmgz', type: 'local' },
|
{ id: '2', title: t('signature.agreement.rules'), pdfName: 'pmgz', type: 'local' },
|
||||||
]
|
]
|
||||||
}else if(number.value==2) {
|
} else if (number.value === 2) {
|
||||||
return [
|
return [
|
||||||
{ id: '6', title: t('signature.agreement.transfer'), pdfName: 'pmyjqrs', type: 'local' },
|
{ id: '6', title: t('signature.agreement.transfer'), pdfName: 'pmyjqrs', type: 'local' },
|
||||||
{ id: '5', title: t('signature.agreement.record'), pdfName: pmblUrl.value, type: 'remote' }
|
{ id: '5', title: t('signature.agreement.record'), pdfName: pmblUrl.value, type: 'remote' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
return []
|
||||||
})
|
})
|
||||||
|
|
||||||
// 获取拍卖笔录PDF
|
/**
|
||||||
|
* 获取拍卖笔录PDF
|
||||||
|
* 通过拍品UUID获取拍卖笔录的查看地址
|
||||||
|
*/
|
||||||
const fetchPmblPdf = async () => {
|
const fetchPmblPdf = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await contractView({
|
const res = await contractView({
|
||||||
auctionArtworkUuid: qrData.value.auctionArtworkUuid,
|
auctionArtworkUuid: qrData.value.auctionArtworkUuid,
|
||||||
})
|
})
|
||||||
pmblUrl.value = res.data?.viewUrl // 假设接口返回的PDF URL在data字段中
|
pmblUrl.value = res.data?.viewUrl
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.error('获取拍卖笔录失败:', error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 监听折叠面板变化
|
/**
|
||||||
|
* 折叠面板变化处理
|
||||||
|
* 当打开拍卖笔录面板时,获取PDF地址
|
||||||
|
*/
|
||||||
const handleCollapseChange = (name) => {
|
const handleCollapseChange = (name) => {
|
||||||
activeNames.value = name
|
activeNames.value = name
|
||||||
// 当打开拍卖笔录时获取PDF
|
|
||||||
if (name === '5' && !pmblUrl.value) {
|
if (name === '5' && !pmblUrl.value) {
|
||||||
fetchPmblPdf()
|
fetchPmblPdf()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 确认签署处理
|
||||||
|
* 1. 获取用户法大大认证信息
|
||||||
|
* 2. 根据用户类型和地区判断签署流程:
|
||||||
|
* - 特殊用户且isMainland=1: 走大陆签署流程
|
||||||
|
* - 特殊用户且isMainland=0: 走非大陆签署流程
|
||||||
|
* - 普通用户:
|
||||||
|
* - 大陆用户(countryCode=86且身份证): 走大陆签署流程
|
||||||
|
* - 其他用户: 走非大陆签署流程
|
||||||
|
*/
|
||||||
|
const confirm = async () => {
|
||||||
|
try {
|
||||||
|
const fddResponse = await fddInfo({ phone: formData.value.phone })
|
||||||
|
|
||||||
|
if (fddResponse.status === 0) {
|
||||||
|
const { userId, isMainland } = fddResponse.data
|
||||||
|
|
||||||
|
// 特殊用户处理逻辑
|
||||||
const confirm=async ()=>{
|
if (userId) {
|
||||||
if (formData.value.countryCode==='86'&&formData.value.cardType===1){
|
if (isMainland === 1) {
|
||||||
const res=await signOffline({
|
await handleMainlandSign()
|
||||||
userInfo:formData.value,
|
} else {
|
||||||
auctionArtworkUuid:qrData.value.auctionArtworkUuid,
|
|
||||||
signOrder:Number(number.value),
|
|
||||||
})
|
|
||||||
if (res.status===0){
|
|
||||||
window.location.href=res.data.fddVerifyUrl
|
|
||||||
}
|
|
||||||
}else {
|
|
||||||
router.push('/collectCode/signature/panel')
|
router.push('/collectCode/signature/panel')
|
||||||
}
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 普通用户处理逻辑
|
||||||
|
const isMainlandUser = formData.value.countryCode === '86' && formData.value.cardType === 1
|
||||||
|
if (isMainlandUser) {
|
||||||
|
await handleMainlandSign()
|
||||||
|
} else {
|
||||||
|
router.push('/collectCode/signature/panel')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('签署确认失败:', error)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const goSignature = () => {
|
|
||||||
router.push({
|
/**
|
||||||
path: '/signature/panel'
|
* 处理大陆用户签署流程
|
||||||
|
*/
|
||||||
|
const handleMainlandSign = async () => {
|
||||||
|
const res = await signOffline({
|
||||||
|
userInfo: formData.value,
|
||||||
|
auctionArtworkUuid: qrData.value.auctionArtworkUuid,
|
||||||
|
signOrder: Number(number.value),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if (res.status === 0) {
|
||||||
|
window.location.href = res.data.fddVerifyUrl
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="bg-#EBEBEB h-screen-nav flex flex-col">
|
<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">
|
<div class="h-50px text-14px text-#191919 bg-#fff flex items-center px-21px mb-6px shrink-0">
|
||||||
{{ t('signature.tips.prePayment') }}
|
{{ t('signature.tips.prePayment') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 协议列表折叠面板 -->
|
||||||
<van-collapse
|
<van-collapse
|
||||||
accordion
|
accordion
|
||||||
v-model="activeNames"
|
v-model="activeNames"
|
||||||
@ -104,6 +150,7 @@ const goSignature = () => {
|
|||||||
</van-collapse-item>
|
</van-collapse-item>
|
||||||
</van-collapse>
|
</van-collapse>
|
||||||
|
|
||||||
|
<!-- 底部确认按钮 -->
|
||||||
<div class="h-81px bg-#fff flex justify-center pt-7px border-t">
|
<div class="h-81px bg-#fff flex justify-center pt-7px border-t">
|
||||||
<van-button
|
<van-button
|
||||||
color="#2B53AC"
|
color="#2B53AC"
|
||||||
|
Loading…
Reference in New Issue
Block a user