2026-07-21 15:53:43 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="platform-select">
|
|
|
|
|
|
<div class="platform-select__header">
|
|
|
|
|
|
<h2 class="platform-select__title">选择签署平台</h2>
|
|
|
|
|
|
<p class="platform-select__desc">
|
|
|
|
|
|
企业信息已审核通过,请选择企业认证与合同签署使用的平台。选定后不可更改。
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="platform-select__grid">
|
|
|
|
|
|
<button
|
|
|
|
|
|
v-for="item in platforms"
|
|
|
|
|
|
:key="item.platform"
|
|
|
|
|
|
type="button"
|
|
|
|
|
|
class="platform-card"
|
|
|
|
|
|
:class="{ 'is-active': selected === item.platform, 'is-disabled': !item.available }"
|
|
|
|
|
|
:disabled="!item.available || submitting"
|
|
|
|
|
|
@click="selected = item.platform"
|
|
|
|
|
|
>
|
|
|
|
|
|
<span class="platform-card__name">{{ item.name }}</span>
|
|
|
|
|
|
<span class="platform-card__desc">{{ item.description }}</span>
|
|
|
|
|
|
</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="platform-select__actions">
|
|
|
|
|
|
<el-button type="primary" size="large" :loading="submitting" :disabled="!selected" @click="confirm">
|
|
|
|
|
|
确认并开始企业认证
|
|
|
|
|
|
</el-button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
import { certificationApi } from '@/api/index.js'
|
|
|
|
|
|
import { ElMessage } from 'element-plus'
|
|
|
|
|
|
import { onMounted, ref } from 'vue'
|
|
|
|
|
|
|
|
|
|
|
|
const emit = defineEmits(['selected'])
|
|
|
|
|
|
|
|
|
|
|
|
const platforms = ref([])
|
|
|
|
|
|
const selected = ref('')
|
|
|
|
|
|
const submitting = ref(false)
|
|
|
|
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await certificationApi.getSignPlatforms()
|
2026-07-24 10:39:01 +08:00
|
|
|
|
// 前端暂时只开放法大大,隐藏 e签宝
|
|
|
|
|
|
platforms.value = (res?.data?.platforms || []).filter((p) => p.platform === 'fadada')
|
2026-07-21 15:53:43 +08:00
|
|
|
|
if (platforms.value.length === 1) {
|
|
|
|
|
|
selected.value = platforms.value[0].platform
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
ElMessage.error(e?.message || '获取签署平台失败')
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
async function confirm() {
|
|
|
|
|
|
if (!selected.value) return
|
|
|
|
|
|
submitting.value = true
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await certificationApi.selectSignPlatform({ sign_platform: selected.value })
|
|
|
|
|
|
ElMessage.success('已选择签署平台')
|
|
|
|
|
|
emit('selected', res?.data)
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
ElMessage.error(e?.message || '选择签署平台失败')
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
submitting.value = false
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
.platform-select {
|
|
|
|
|
|
max-width: 720px;
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
padding: 32px 20px 48px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-select__header {
|
|
|
|
|
|
margin-bottom: 28px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-select__title {
|
|
|
|
|
|
margin: 0 0 8px;
|
|
|
|
|
|
font-size: 22px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #1f2937;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-select__desc {
|
|
|
|
|
|
margin: 0;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
line-height: 1.6;
|
|
|
|
|
|
color: #6b7280;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-select__grid {
|
|
|
|
|
|
display: grid;
|
2026-07-24 10:39:01 +08:00
|
|
|
|
grid-template-columns: minmax(0, 1fr);
|
2026-07-21 15:53:43 +08:00
|
|
|
|
gap: 16px;
|
2026-07-24 10:39:01 +08:00
|
|
|
|
max-width: 360px;
|
|
|
|
|
|
margin: 0 auto;
|
2026-07-21 15:53:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
gap: 8px;
|
|
|
|
|
|
padding: 24px 20px;
|
|
|
|
|
|
text-align: left;
|
|
|
|
|
|
border: 1px solid #e5e7eb;
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
transition: border-color 0.2s, box-shadow 0.2s;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card:hover:not(.is-disabled) {
|
|
|
|
|
|
border-color: #2563eb;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card.is-active {
|
|
|
|
|
|
border-color: #2563eb;
|
|
|
|
|
|
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card.is-disabled {
|
|
|
|
|
|
opacity: 0.5;
|
|
|
|
|
|
cursor: not-allowed;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card__name {
|
|
|
|
|
|
font-size: 18px;
|
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
|
color: #111827;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-card__desc {
|
|
|
|
|
|
font-size: 13px;
|
|
|
|
|
|
line-height: 1.5;
|
|
|
|
|
|
color: #6b7280;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.platform-select__actions {
|
|
|
|
|
|
margin-top: 28px;
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@media (max-width: 640px) {
|
|
|
|
|
|
.platform-select__grid {
|
|
|
|
|
|
grid-template-columns: 1fr;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|