2604 lines
123 KiB
Vue
2604 lines
123 KiB
Vue
<script>
|
||
/**
|
||
* 实名认证流程:个人/企业资料 → 选择渠道及动态字段 → 必要时支付认证费 → 二维码核验与状态轮询。序号将异步结果绑定到当前资料、渠道和核验会话。
|
||
*/
|
||
import "~/assets/styles/UploadField.BbTCTv6C.css";
|
||
import "~/assets/styles/PageSteps.B5K7G9zF.css";
|
||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||
import "~/assets/styles/realname.BpRCvfXO.css";
|
||
import { toDisplayString } from "vue";
|
||
import { renderList } from "vue";
|
||
import { onMounted } from "vue";
|
||
import { onUnmounted } from "vue";
|
||
import { normalizeClass } from "vue";
|
||
import { watch } from "vue";
|
||
import { createBlock } from "vue";
|
||
import { ref } from "vue";
|
||
import { withCtx } from "vue";
|
||
import { createCommentVNode } from "vue";
|
||
import { computed } from "vue";
|
||
import { reactive } from "vue";
|
||
import { isRef } from "vue";
|
||
import { createElementBlock } from "vue";
|
||
import { Fragment } from "vue";
|
||
import { withDirectives } from "vue";
|
||
import { createElementVNode } from "vue";
|
||
import { createTextVNode } from "vue";
|
||
import { unref } from "vue";
|
||
import { defineComponent } from "vue";
|
||
import { createVNode } from "vue";
|
||
import { openBlock } from "vue";
|
||
import { vModelRadio } from "vue";
|
||
import { NuxtLink } from "#components";
|
||
import { useApi } from "~/lib/auth.js";
|
||
import dialog from "primevue/dialog";
|
||
import button from "primevue/button";
|
||
import { t as _plugin_vue_export_helper_t } from "~/lib/_plugin-vue_export-helper.js";
|
||
import message from "primevue/message";
|
||
import inputtext from "primevue/inputtext";
|
||
import select from "primevue/select";
|
||
import PaymentDialog from "~/components/PaymentDialog.vue";
|
||
import tag from "primevue/tag";
|
||
import skeleton from "primevue/skeleton";
|
||
import PageSteps from "~/components/PageSteps.vue";
|
||
import UploadField from "~/components/UploadField.vue";
|
||
import tabs from "primevue/tabs";
|
||
import tabpanels from "primevue/tabpanels";
|
||
import tabpanel from "primevue/tabpanel";
|
||
import tablist from "primevue/tablist";
|
||
import tab from "primevue/tab";
|
||
var b = `#contentBox img[src^="data:image/"], #qrcode img, #qrCode img, img#qrcode, img#qrCode, .qrcode img, .qr-code img`,
|
||
x = `img[src^="data:image/png;base64,"], img[src^="data:image/jpeg;base64,"]`;
|
||
// 从认证服务返回的 HTML 中定位二维码,保留其动态更新逻辑并隐藏其余内容;无法唯一定位时拒绝展示。
|
||
function S(e) {
|
||
let t = new DOMParser().parseFromString(e, `text/html`),
|
||
n =
|
||
t.querySelector(b) ??
|
||
(() => {
|
||
let e = t.querySelectorAll(x);
|
||
return e.length === 1 ? e[0] : null;
|
||
})();
|
||
if (!n) throw Error(`未能加载认证二维码,请重新获取`);
|
||
(n.setAttribute(`data-certification-qr`, ``),
|
||
n.setAttribute(`alt`, `实名认证二维码`));
|
||
let r = t.createElement(`style`);
|
||
((r.textContent = `
|
||
html, body { margin: 0 !important; padding: 0 !important; width: 100% !important; height: 100% !important; overflow: hidden !important; background: #fff !important; }
|
||
body, body * { visibility: hidden !important; }
|
||
html body [data-certification-qr] { visibility: visible !important; display: block !important; position: fixed !important; inset: 0 !important; margin: auto !important; padding: 0 !important; border: 0 !important; width: 100% !important; height: 100% !important; max-width: 100% !important; max-height: 100% !important; object-fit: contain !important; transform: none !important; }
|
||
`),
|
||
t.head.appendChild(r));
|
||
let i = t.createElement(`script`);
|
||
return (
|
||
(i.textContent = `
|
||
(() => {
|
||
const doc = document;
|
||
const updateQr = () => {
|
||
const images = doc.querySelectorAll(${JSON.stringify(x)});
|
||
const qr = doc.querySelector(${JSON.stringify(b)})
|
||
|| (images.length === 1 ? images[0] : null);
|
||
doc.querySelectorAll('[data-certification-qr]').forEach(image => {
|
||
if (image !== qr) image.removeAttribute('data-certification-qr');
|
||
});
|
||
if (qr) {
|
||
if (!qr.hasAttribute('data-certification-qr')) qr.setAttribute('data-certification-qr', '');
|
||
if (qr.getAttribute('alt') !== '实名认证二维码') qr.setAttribute('alt', '实名认证二维码');
|
||
}
|
||
};
|
||
updateQr();
|
||
const observer = new MutationObserver(updateQr);
|
||
observer.observe(doc.documentElement, {
|
||
childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'id', 'class']
|
||
});
|
||
window.addEventListener('pagehide', () => observer.disconnect(), { once: true });
|
||
})();
|
||
`),
|
||
t.body.appendChild(i),
|
||
`<!doctype html>` + t.documentElement.outerHTML
|
||
);
|
||
}
|
||
var xe = {
|
||
class: `page`,
|
||
},
|
||
Se = {
|
||
key: 0,
|
||
class: `page-head`,
|
||
},
|
||
Ce = {
|
||
key: 1,
|
||
class: `panel`,
|
||
},
|
||
we = {
|
||
key: 0,
|
||
class: `panel steps-panel`,
|
||
},
|
||
Te = {
|
||
key: 1,
|
||
class: `cert-heading`,
|
||
},
|
||
Ee = {
|
||
key: 4,
|
||
class: `panel`,
|
||
},
|
||
De = {
|
||
key: 0,
|
||
class: `error-copy`,
|
||
},
|
||
Oe = {
|
||
key: 1,
|
||
class: `hint`,
|
||
},
|
||
ke = {
|
||
key: 5,
|
||
class: `panel`,
|
||
},
|
||
Ae = {
|
||
class: `certified`,
|
||
},
|
||
je = {
|
||
class: `certified-sub`,
|
||
},
|
||
Me = {
|
||
key: 0,
|
||
class: `certify-id`,
|
||
},
|
||
Ne = {
|
||
key: 0,
|
||
class: `hint`,
|
||
},
|
||
Pe = {
|
||
key: 6,
|
||
class: `panel company-status`,
|
||
},
|
||
Fe = {
|
||
class: `status-row`,
|
||
},
|
||
Ie = {
|
||
key: 0,
|
||
class: `error-copy`,
|
||
},
|
||
Le = {
|
||
key: 1,
|
||
class: `hint`,
|
||
},
|
||
Re = {
|
||
key: 9,
|
||
class: `panel`,
|
||
},
|
||
ze = {
|
||
class: `form`,
|
||
},
|
||
Be = {
|
||
class: `field`,
|
||
},
|
||
Ve = {
|
||
class: `field`,
|
||
},
|
||
He = {
|
||
class: `field`,
|
||
},
|
||
Ue = {
|
||
class: `field`,
|
||
},
|
||
We = {
|
||
class: `form`,
|
||
},
|
||
Ge = {
|
||
class: `field`,
|
||
},
|
||
Ke = {
|
||
class: `field`,
|
||
},
|
||
qe = {
|
||
class: `field`,
|
||
},
|
||
Je = {
|
||
class: `field-row`,
|
||
},
|
||
Ye = {
|
||
class: `field`,
|
||
},
|
||
Xe = {
|
||
class: `field`,
|
||
},
|
||
Ze = {
|
||
class: `field`,
|
||
},
|
||
Qe = [`href`],
|
||
$e = {
|
||
key: 3,
|
||
class: `panel load-error`,
|
||
},
|
||
et = {
|
||
class: `channel-picker`,
|
||
},
|
||
tt = {
|
||
class: `channel-hint`,
|
||
},
|
||
nt = {
|
||
key: 0,
|
||
class: `channel-list`,
|
||
"aria-label": `正在加载认证方式`,
|
||
"aria-busy": `true`,
|
||
},
|
||
rt = {
|
||
key: 1,
|
||
class: `channel-fields`,
|
||
"aria-busy": `true`,
|
||
},
|
||
it = {
|
||
key: 2,
|
||
class: `channel-fields`,
|
||
},
|
||
at = {
|
||
key: 0,
|
||
class: `req`,
|
||
},
|
||
ot = {
|
||
key: 0,
|
||
class: `field-tip`,
|
||
},
|
||
st = [`disabled`],
|
||
ct = [`value`, `disabled`, `aria-label`],
|
||
lt = [`src`],
|
||
ut = {
|
||
key: 1,
|
||
class: `pi pi-shield channel-fallback`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
dt = {
|
||
class: `channel-title`,
|
||
},
|
||
ft = {
|
||
key: 2,
|
||
class: `channel-status`,
|
||
},
|
||
pt = {
|
||
key: 6,
|
||
class: `channel-hint`,
|
||
},
|
||
mt = {
|
||
class: `auth-box`,
|
||
},
|
||
ht = [`srcdoc`],
|
||
C = _plugin_vue_export_helper_t(
|
||
defineComponent({
|
||
__name: `index`,
|
||
props: {
|
||
embedded: {
|
||
type: Boolean,
|
||
},
|
||
initialType: {},
|
||
},
|
||
setup(g) {
|
||
let se = g,
|
||
b = useApi(),
|
||
x = ref([]),
|
||
C = ref(!1),
|
||
w = ref(!1),
|
||
T = ref(``),
|
||
E = ref(``),
|
||
D = ref(null),
|
||
gt = ref([]),
|
||
O = reactive({}),
|
||
k = ref(!1),
|
||
A = ref(``),
|
||
_t = ref(``),
|
||
j = 0,
|
||
M = 0,
|
||
N = !1,
|
||
P = ref(!1),
|
||
vt = ref(null),
|
||
yt = ref(`0`),
|
||
F = ref(null),
|
||
I = 0,
|
||
L = computed(() =>
|
||
x.value.filter(
|
||
(e) =>
|
||
e.name &&
|
||
e.certification_type?.includes(D.value?.type || `person`),
|
||
),
|
||
),
|
||
bt = computed(() => {
|
||
let e = [
|
||
{
|
||
key: `alipay`,
|
||
title: `支付宝`,
|
||
match: /^(ali|alipay|idcsmartali)$/i,
|
||
titleMatch: /支付宝|芝麻信用/,
|
||
icon: `/images/certification/alipay.svg`,
|
||
},
|
||
{
|
||
key: `wechat`,
|
||
title: `微信实名`,
|
||
match: /^(wechat|weixin|wx|idcsmartwechat|idcsmartwx)$/i,
|
||
titleMatch: /微信/,
|
||
icon: `/images/certification/wechat.svg`,
|
||
},
|
||
{
|
||
key: `national`,
|
||
title: `国家网络身份认证`,
|
||
match: /^(ctid|idcsmartctid)$/i,
|
||
titleMatch: /国家.*身份|网证|网号/,
|
||
icon: `/images/certification/national-network-identity.png`,
|
||
},
|
||
],
|
||
t = new Set(),
|
||
n = e.map((e) => {
|
||
let n = L.value.find(
|
||
(t) => e.match.test(t.name) || e.titleMatch.test(t.title),
|
||
);
|
||
return (
|
||
n && t.add(n.name),
|
||
{
|
||
key: e.key,
|
||
title: e.title,
|
||
name: n?.name || ``,
|
||
icon: e.icon,
|
||
}
|
||
);
|
||
});
|
||
for (let e of L.value)
|
||
t.has(e.name) ||
|
||
n.push({
|
||
key: e.name,
|
||
title: e.title || e.name,
|
||
name: e.name,
|
||
icon: ``,
|
||
});
|
||
return n;
|
||
}),
|
||
R = ref(null),
|
||
xt = ref(!0),
|
||
z = ref(``),
|
||
B = ref(``),
|
||
V = ref(+(se.initialType === `company`)),
|
||
St = [`提交认证申请`, `实名核验`, `等待审核`, `完成`],
|
||
Ct = computed(() => {
|
||
let e = R.value;
|
||
if (!e) return 1;
|
||
if (e.is_certification) return 4;
|
||
let t = [e.person, e.company].filter(
|
||
(e) => e && (e.status !== void 0 || e.create_time),
|
||
);
|
||
return t.length ? (t.some((e) => e?.auth_fail) ? 1 : 3) : 1;
|
||
}),
|
||
H = reactive({
|
||
card_name: ``,
|
||
card_type: 1,
|
||
card_number: ``,
|
||
phone: ``,
|
||
}),
|
||
U = reactive({
|
||
company: ``,
|
||
company_organ_code: ``,
|
||
card_name: ``,
|
||
card_type: 1,
|
||
card_number: ``,
|
||
phone: ``,
|
||
legal_person_type: 1,
|
||
}),
|
||
W = ref(!1),
|
||
wt = computed(
|
||
() =>
|
||
Number(R.value?.certification_auth_template_open) === 1 &&
|
||
U.legal_person_type === 2,
|
||
),
|
||
Tt = computed(() => {
|
||
let e = R.value?.certification_auth_template_url || ``;
|
||
return /^(?:https?:\/\/|\/(?!\/))/i.test(e) &&
|
||
!/[\\\u0000-\u0020]/.test(e)
|
||
? e
|
||
: ``;
|
||
}),
|
||
G = reactive({
|
||
img_one: ``,
|
||
img_two: ``,
|
||
img_three: ``,
|
||
auth_letter: ``,
|
||
}),
|
||
Et = computed(() => R.value?.certification_upload === 1),
|
||
K = computed(() => R.value?.certification_open === 0),
|
||
q = computed(() => Number(R.value?.company?.status || 0)),
|
||
J = computed(() => Number(R.value?.person?.status || 0)),
|
||
Dt = computed(
|
||
() => !R.value?.is_certification && [0, 2].includes(J.value),
|
||
),
|
||
Ot = computed(
|
||
() =>
|
||
R.value?.certification_company_open !== 0 &&
|
||
(!R.value?.certification_company_need_person ||
|
||
R.value?.is_certification),
|
||
),
|
||
kt = [
|
||
{
|
||
label: `大陆身份证`,
|
||
value: 1,
|
||
},
|
||
{
|
||
label: `港澳通行证`,
|
||
value: 2,
|
||
},
|
||
{
|
||
label: `台湾通行证`,
|
||
value: 3,
|
||
},
|
||
{
|
||
label: `港澳居住证`,
|
||
value: 4,
|
||
},
|
||
{
|
||
label: `台湾居住证`,
|
||
value: 5,
|
||
},
|
||
{
|
||
label: `海外护照`,
|
||
value: 6,
|
||
},
|
||
{
|
||
label: `中国以外驾照`,
|
||
value: 7,
|
||
},
|
||
{
|
||
label: `其他证件`,
|
||
value: 8,
|
||
},
|
||
];
|
||
watch(
|
||
E,
|
||
async (e) => {
|
||
if (!e) {
|
||
Ft();
|
||
return;
|
||
}
|
||
let t = L.value.find((t) => t.name === e);
|
||
t && (await Rt(t));
|
||
},
|
||
{
|
||
flush: `sync`,
|
||
},
|
||
);
|
||
// 只收集已上传的图片标识,空字段不随申请发送。
|
||
function At() {
|
||
let e = {};
|
||
for (let [t, n] of Object.entries(G)) n && (e[t] = n);
|
||
return e;
|
||
}
|
||
let Y = ref(!1),
|
||
X = ref(``),
|
||
Z = ref(!1),
|
||
jt = ref(!1),
|
||
Q = null,
|
||
$ = 0,
|
||
Mt = 0;
|
||
// 结束当前核验轮询并提升会话序号,使已在途回调失效。
|
||
function Nt() {
|
||
($++, Q !== null && (clearTimeout(Q), (Q = null)), (jt.value = !1));
|
||
}
|
||
// 读取实名开关及个人/企业状态;仅最新请求可以写入当前页面。
|
||
async function Pt() {
|
||
let e = ++M;
|
||
((xt.value = !0), (z.value = ``));
|
||
try {
|
||
let t = await b.get(`/certification/info`);
|
||
if (N || e !== M) return;
|
||
((R.value = t), t.is_certification && (V.value = 1));
|
||
} catch (t) {
|
||
if (N || e !== M) return;
|
||
z.value = t instanceof Error ? t.message : `加载失败`;
|
||
} finally {
|
||
!N && e === M && (xt.value = !1);
|
||
}
|
||
}
|
||
// 切换渠道或关闭弹窗时清理动态字段与加载标识,同时使旧字段请求失效。
|
||
function Ft() {
|
||
(j++, (_t.value = ``), (A.value = ``), (k.value = !1));
|
||
for (let e of Object.keys(O)) delete O[e];
|
||
gt.value = [];
|
||
}
|
||
// 兼容服务端布尔、数字和字符串形式的必填标识。
|
||
function It(e) {
|
||
return (
|
||
e.required === !0 ||
|
||
e.required === 1 ||
|
||
e.required === `1` ||
|
||
e.required === `true`
|
||
);
|
||
}
|
||
// 将数组、对象、JSON 字符串或逗号列表整理为选择项,供认证渠道动态表单使用。
|
||
function Lt(e) {
|
||
if (Array.isArray(e))
|
||
return e.map((e) => ({
|
||
label: String(e),
|
||
value: String(e),
|
||
}));
|
||
if (e && typeof e == `object`)
|
||
return Object.entries(e).map(([e, t]) => ({
|
||
label: String(t),
|
||
value: e,
|
||
}));
|
||
if (typeof e == `string`)
|
||
try {
|
||
return Lt(JSON.parse(e));
|
||
} catch {
|
||
return e
|
||
.split(`,`)
|
||
.map((e) => ({
|
||
label: e.trim(),
|
||
value: e.trim(),
|
||
}))
|
||
.filter((e) => e.value);
|
||
}
|
||
return [];
|
||
}
|
||
// 加载当前认证类型与渠道的动态字段;请求结束时同时核对渠道、类型、弹窗状态和代次。
|
||
async function Rt(e) {
|
||
Ft();
|
||
let t = j,
|
||
n = D.value?.type || `person`,
|
||
r = `${n}:${e.name}`,
|
||
i = () =>
|
||
!N &&
|
||
C.value &&
|
||
t === j &&
|
||
E.value === e.name &&
|
||
D.value?.type === n;
|
||
k.value = !0;
|
||
try {
|
||
let t = await b.get(`/certification/custom_fields`, {
|
||
name: e.name,
|
||
type: n,
|
||
});
|
||
if (!i()) return;
|
||
if (!Array.isArray(t?.custom_fields))
|
||
throw Error(`认证资料格式无效,请重新加载`);
|
||
((gt.value = Array.isArray(t.custom_fields)
|
||
? t.custom_fields.filter((e) => e.field)
|
||
: []),
|
||
(_t.value = r));
|
||
} catch (e) {
|
||
i() &&
|
||
(A.value =
|
||
e instanceof Error ? e.message : `认证资料加载失败,请重试`);
|
||
} finally {
|
||
i() && (k.value = !1);
|
||
}
|
||
}
|
||
// 验证个人资料及要求上传的证件后,暂存申请并进入渠道选择。
|
||
async function zt() {
|
||
if (!(W.value || C.value || Y.value || P.value || !Dt.value)) {
|
||
if (((z.value = ``), K.value))
|
||
return (z.value = `实名认证功能暂未开放`);
|
||
if (!H.card_name.trim()) return (z.value = `请输入姓名`);
|
||
if (!H.card_number.trim()) return (z.value = `请输入证件号码`);
|
||
if (Et.value && (!G.img_one || !G.img_two))
|
||
return (z.value = `请上传身份证正面与反面照片`);
|
||
await Vt(`person`, {
|
||
...H,
|
||
card_type: String(H.card_type),
|
||
custom_fields: {},
|
||
...At(),
|
||
});
|
||
}
|
||
}
|
||
// 企业申请额外校验企业实名开关、个人认证前置条件、营业执照和必要的委托书。
|
||
async function Bt() {
|
||
if (!(
|
||
W.value ||
|
||
C.value ||
|
||
Y.value ||
|
||
P.value ||
|
||
![0, 2].includes(q.value)
|
||
)) {
|
||
if (((z.value = ``), K.value))
|
||
return (z.value = `实名认证功能暂未开放`);
|
||
if (!Ot.value) return (z.value = `请先完成个人实名认证`);
|
||
if (!U.company.trim()) return (z.value = `请输入企业名称`);
|
||
if (!U.company_organ_code.trim())
|
||
return (z.value = `请输入统一社会信用代码`);
|
||
if (!U.card_name.trim()) return (z.value = `请输入法人姓名`);
|
||
if (!U.card_number.trim()) return (z.value = `请输入法人证件号码`);
|
||
if (Et.value && (!G.img_one || !G.img_two || !G.img_three))
|
||
return (z.value = `请上传身份证正反面与营业执照`);
|
||
if (wt.value && !G.auth_letter)
|
||
return (z.value = `法人代表认证需上传授权委托书`);
|
||
await Vt(`company`, {
|
||
...U,
|
||
card_type: String(U.card_type),
|
||
custom_fields: {},
|
||
...At(),
|
||
});
|
||
}
|
||
}
|
||
// 保存待提交的资料快照;渠道选择不直接修改原始表单。
|
||
async function Vt(e, t) {
|
||
((F.value = null),
|
||
(D.value = {
|
||
type: e,
|
||
payload: t,
|
||
}),
|
||
(E.value = ``),
|
||
(C.value = !0),
|
||
await Ht());
|
||
}
|
||
// 加载可用认证插件,使用独立代次隔离弹窗重开或重试。
|
||
async function Ht() {
|
||
if (!C.value || W.value) return;
|
||
let e = ++I;
|
||
((x.value = []), (E.value = ``), (T.value = ``), (w.value = !0));
|
||
try {
|
||
let t = await b.get(`/certification/plugin`, void 0, !1, {
|
||
timeoutMs: 15e3,
|
||
});
|
||
if (e !== I || !C.value) return;
|
||
x.value = Array.isArray(t.list) ? t.list : [];
|
||
} catch (t) {
|
||
e === I &&
|
||
(T.value =
|
||
t instanceof Error ? t.message : `认证渠道加载失败,请重试`);
|
||
} finally {
|
||
e === I && (w.value = !1);
|
||
}
|
||
}
|
||
// 非提交期间允许关闭渠道弹窗,并使其异步加载结果失效。
|
||
function Ut() {
|
||
W.value ||
|
||
(I++,
|
||
(C.value = !1),
|
||
(w.value = !1),
|
||
(T.value = ``),
|
||
(E.value = ``),
|
||
Ft(),
|
||
(D.value = null));
|
||
}
|
||
// 确认动态字段与当前渠道一致后检查渠道费用;需要付费时先保存申请快照并打开支付,不提前提交认证。
|
||
async function Wt() {
|
||
if (!C.value || w.value || W.value || !D.value) return;
|
||
let e = L.value.find((e) => e.name === E.value);
|
||
if (!e) {
|
||
T.value = `请选择可用的认证渠道`;
|
||
return;
|
||
}
|
||
let { type: t, payload: n } = D.value;
|
||
if (k.value) {
|
||
T.value = `认证资料正在加载,请稍候`;
|
||
return;
|
||
}
|
||
if (A.value || _t.value !== `${t}:${e.name}`) {
|
||
T.value = A.value || `请先加载当前渠道的认证资料`;
|
||
return;
|
||
}
|
||
let r = I;
|
||
((T.value = ``), (W.value = !0));
|
||
try {
|
||
if (e.name !== E.value) return;
|
||
let i = gt.value.find(
|
||
(e) => It(e) && !String(O[e.field || ``] || ``).trim(),
|
||
);
|
||
if (i) {
|
||
((T.value = `请填写${i.title || `必填资料`}`), (W.value = !1));
|
||
return;
|
||
}
|
||
let ee = {
|
||
...O,
|
||
},
|
||
a = {
|
||
...(n.custom_fields || {}),
|
||
...ee,
|
||
...(t === `company` && /^ali$/i.test(e.name)
|
||
? {
|
||
name: n.card_name,
|
||
card: n.card_number,
|
||
}
|
||
: {}),
|
||
},
|
||
o = await b.get(
|
||
`/certification/plugin/config`,
|
||
{
|
||
name: e.name,
|
||
type: t,
|
||
},
|
||
!1,
|
||
);
|
||
if (N || r !== I || !C.value) return;
|
||
if (
|
||
Number(o?.pay) === 1 &&
|
||
String(o.order?.status || ``) !== `Paid`
|
||
) {
|
||
let i = o.order?.id;
|
||
if (!i || o.order?.status === `Cancelled`) {
|
||
let n = await b.post(`/certification/plugin/order`, {
|
||
name: e.name,
|
||
type: t,
|
||
});
|
||
if (N || r !== I || !C.value) return;
|
||
i = n.order_id;
|
||
}
|
||
if (!Number.isSafeInteger(Number(i)) || Number(i) <= 0)
|
||
throw Error(`认证订单创建失败,请重试`);
|
||
((F.value = {
|
||
type: t,
|
||
payload: n,
|
||
pluginName: e.name,
|
||
customFields: a,
|
||
}),
|
||
(vt.value = i),
|
||
(yt.value = String(o.order?.amount ?? o.amount ?? `0`)),
|
||
(C.value = !1),
|
||
(P.value = !0));
|
||
return;
|
||
}
|
||
if ((await Gt(t, n, e.name, a), r !== I)) return;
|
||
((C.value = !1), (D.value = null), await Jt(t));
|
||
} catch (e) {
|
||
r === I &&
|
||
(T.value = e instanceof Error ? e.message : `提交失败,请重试`);
|
||
} finally {
|
||
r === I && (W.value = !1);
|
||
}
|
||
}
|
||
// 已通过个人认证的企业升级走 convert,其余申请走 person/company;渠道字段随同原资料提交。
|
||
async function Gt(e, t, n, r) {
|
||
let i =
|
||
e === `company` && Number(R.value?.person?.status) === 1
|
||
? `convert`
|
||
: e;
|
||
await b.post(`/certification/${i}`, {
|
||
...t,
|
||
custom_fields: r,
|
||
plugin_name: n,
|
||
});
|
||
}
|
||
// 支付回调后再次查询渠道订单,确认同一订单已 Paid 才续交认证,不能仅凭前端支付事件认定到账。
|
||
async function Kt() {
|
||
let e = F.value;
|
||
if (!e || W.value || N) return;
|
||
let t = I;
|
||
W.value = !0;
|
||
try {
|
||
let n = await b.get(`/certification/plugin/config`, {
|
||
name: e.pluginName,
|
||
type: e.type,
|
||
});
|
||
if (N || t !== I) return;
|
||
if (
|
||
Number(n.pay) === 1 &&
|
||
(n.order?.status !== `Paid` ||
|
||
String(n.order.id) !== String(vt.value))
|
||
)
|
||
throw Error(`认证费用尚未确认到账,请稍后继续验证`);
|
||
if (
|
||
((P.value = !1),
|
||
await Gt(e.type, e.payload, e.pluginName, e.customFields),
|
||
N || t !== I)
|
||
)
|
||
return;
|
||
((F.value = null), (D.value = null), await Jt(e.type));
|
||
} catch (e) {
|
||
if (N || t !== I) return;
|
||
((T.value =
|
||
e instanceof Error ? e.message : `认证提交失败,请重试`),
|
||
(C.value = !0));
|
||
} finally {
|
||
!N && t === I && (W.value = !1);
|
||
}
|
||
}
|
||
// 重新打开待支付认证订单,不重复生成申请快照。
|
||
function qt() {
|
||
!W.value && F.value && (P.value = !0);
|
||
}
|
||
// 开启新的二维码核验会话,先获取二维码,再为当前认证类型启动轮询。
|
||
async function Jt(e = V.value === 1 ? `company` : `person`) {
|
||
Nt();
|
||
let t = $;
|
||
((z.value = ``),
|
||
(B.value = ``),
|
||
(Y.value = !0),
|
||
(X.value = ``),
|
||
await Xt(t),
|
||
t === $ && Y.value && Zt(t, e));
|
||
}
|
||
// 认证资料失效或变更时终止旧核验并刷新资料,要求用户重新提交。
|
||
async function Yt(e) {
|
||
if (![`10000`, `10001`].includes(String(e))) return !1;
|
||
Qt();
|
||
let t = $;
|
||
return (
|
||
await Pt(),
|
||
!N &&
|
||
t === $ &&
|
||
(z.value =
|
||
String(e) === `10000`
|
||
? `认证资料已失效,请返回修改后重新提交`
|
||
: `认证资料已更新,请重新提交认证`),
|
||
!0
|
||
);
|
||
}
|
||
// 按当前核验会话加载二维码,并设置刷新时间门槛;过期会话的响应不再显示。
|
||
async function Xt(e) {
|
||
if (e === $ && Y.value) {
|
||
((Z.value = !0), (Mt = Date.now() + (X.value ? 3e4 : 1e4)));
|
||
try {
|
||
let t = await b.get(`/certification/auth`, void 0, !1, {
|
||
timeoutMs: 15e3,
|
||
});
|
||
if (e !== $ || !Y.value || (await Yt(t?.code))) return;
|
||
if (!t?.html) throw Error(`认证二维码暂不可用,请稍后重试`);
|
||
((X.value = S(t.html)), (Mt = Date.now() + 3e4), (z.value = ``));
|
||
} catch (t) {
|
||
if (e !== $ || !Y.value) return;
|
||
let n = t && typeof t == `object` && `data` in t ? t.data : null;
|
||
if (
|
||
n &&
|
||
typeof n == `object` &&
|
||
`code` in n &&
|
||
(await Yt(n.code))
|
||
)
|
||
return;
|
||
z.value =
|
||
t instanceof Error ? t.message : `核验页面加载失败,请重试`;
|
||
} finally {
|
||
e === $ && (Z.value = !1);
|
||
}
|
||
}
|
||
}
|
||
// 每两秒查询核验状态;第三方完成后仍复查本平台认证资料,区别认证成功与进入审核,关闭后停止调度。
|
||
function Zt(e, t) {
|
||
jt.value = !0;
|
||
let n = () => e === $ && Y.value;
|
||
async function r() {
|
||
if (((Q = null), n())) {
|
||
try {
|
||
let r = await b.getRaw(`/certification/status`, void 0, {
|
||
timeoutMs: 15e3,
|
||
});
|
||
if (!n()) return;
|
||
let i = Number(r.data?.code),
|
||
ee = Number(r.data?.refresh);
|
||
if (r.status === 200 && i === 1) {
|
||
let e = await b.get(`/certification/info`, void 0, !1, {
|
||
timeoutMs: 15e3,
|
||
});
|
||
if (!n()) return;
|
||
if (Number(e[t]?.status) === 1) {
|
||
(Qt(),
|
||
(R.value = e),
|
||
e.is_certification && (V.value = 1),
|
||
(z.value = ``),
|
||
(B.value = ``));
|
||
return;
|
||
}
|
||
} else if (r.status === 200 && i === 3) {
|
||
let e = await b.get(`/certification/info`, void 0, !1, {
|
||
timeoutMs: 15e3,
|
||
});
|
||
if (!n()) return;
|
||
let r = Number(e[t]?.status);
|
||
if (r === 1 || r === 3) {
|
||
(Qt(),
|
||
(R.value = e),
|
||
e.is_certification && (V.value = 1),
|
||
(z.value = ``),
|
||
(B.value =
|
||
r === 1
|
||
? `实名认证成功,认证状态已同步。`
|
||
: `第三方核验已完成,资料已进入审核流程,请等待审核结果。`));
|
||
return;
|
||
}
|
||
} else
|
||
r.status === 200 &&
|
||
(i === 2 || i === 4) &&
|
||
ee === 1 &&
|
||
Date.now() >= Mt &&
|
||
(await Xt(e));
|
||
} catch {}
|
||
(n() && !X.value && Date.now() >= Mt && (await Xt(e)),
|
||
n() && (Q = setTimeout(r, 2e3)));
|
||
}
|
||
}
|
||
Q = setTimeout(r, 2e3);
|
||
}
|
||
// 关闭二维码核验并清空 HTML,同时取消下一次状态查询。
|
||
function Qt() {
|
||
((Y.value = !1), Nt(), (Z.value = !1), (X.value = ``));
|
||
}
|
||
return (
|
||
onUnmounted(() => {
|
||
((N = !0),
|
||
Nt(),
|
||
I++,
|
||
j++,
|
||
M++,
|
||
(F.value = null),
|
||
(D.value = null),
|
||
Ft());
|
||
}),
|
||
onMounted(Pt),
|
||
// 视图区分申请资料、渠道动态字段、费用支付和二维码核验弹窗;状态来自上方独立流程,未支付不等于已提交认证。
|
||
(n, r) => {
|
||
let ee = NuxtLink,
|
||
o = skeleton,
|
||
l = PageSteps,
|
||
u = button,
|
||
g = message,
|
||
y = tag,
|
||
b = tab,
|
||
x = tablist,
|
||
S = inputtext,
|
||
j = select,
|
||
M = UploadField,
|
||
N = tabpanel,
|
||
I = tabpanels,
|
||
At = tabs,
|
||
Z = dialog,
|
||
jt = PaymentDialog;
|
||
return (
|
||
openBlock(),
|
||
createElementBlock(`div`, xe, [
|
||
se.embedded
|
||
? createCommentVNode(``, !0)
|
||
: (openBlock(),
|
||
createElementBlock(`div`, Se, [
|
||
createVNode(
|
||
ee,
|
||
{
|
||
to: `/account`,
|
||
class: `back`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[25] ||= [
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-arrow-left`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
createTextVNode(` 返回账户设置 `, -1),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
(r[26] ||= createElementVNode(
|
||
`h2`,
|
||
null,
|
||
`实名认证`,
|
||
-1,
|
||
)),
|
||
])),
|
||
unref(xt)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Ce, [
|
||
createVNode(o, {
|
||
height: `200px`,
|
||
}),
|
||
]))
|
||
: unref(R)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
{
|
||
key: 2,
|
||
},
|
||
[
|
||
se.embedded
|
||
? createCommentVNode(``, !0)
|
||
: (openBlock(),
|
||
createElementBlock(`div`, we, [
|
||
createVNode(
|
||
l,
|
||
{
|
||
steps: St,
|
||
current: unref(Ct),
|
||
},
|
||
null,
|
||
8,
|
||
[`current`],
|
||
),
|
||
])),
|
||
se.embedded
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Te, [
|
||
(r[27] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`实名认证`,
|
||
-1,
|
||
)),
|
||
createVNode(u, {
|
||
label: `刷新`,
|
||
icon: `pi pi-refresh`,
|
||
outlined: ``,
|
||
size: `small`,
|
||
onClick: Pt,
|
||
}),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
unref(K)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 2,
|
||
severity: `info`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[28] ||= [
|
||
createTextVNode(
|
||
`实名认证功能暂未开放`,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(F) && !unref(P)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 3,
|
||
severity: `info`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
(r[29] ||= createTextVNode(
|
||
`认证申请待完成费用确认。`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
u,
|
||
{
|
||
label: `继续支付 / 验证`,
|
||
text: ``,
|
||
disabled: unref(W),
|
||
onClick: qt,
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(J) && unref(J) !== 1
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Ee, [
|
||
(r[30] ||= createElementVNode(
|
||
`strong`,
|
||
null,
|
||
`个人认证`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
y,
|
||
{
|
||
severity:
|
||
unref(J) === 2 ? `danger` : `warn`,
|
||
value:
|
||
unref(J) === 2
|
||
? `认证未通过`
|
||
: unref(J) === 3
|
||
? `待审核`
|
||
: `待核验`,
|
||
},
|
||
null,
|
||
8,
|
||
[`severity`, `value`],
|
||
),
|
||
unref(R).person?.auth_fail
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
De,
|
||
toDisplayString(
|
||
unref(R).person.auth_fail,
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(J) === 3
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
Oe,
|
||
`资料正在审核,请等待审核结果。`,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(J) === 4
|
||
? (openBlock(),
|
||
createBlock(
|
||
u,
|
||
{
|
||
key: 2,
|
||
label: `继续扫码核验`,
|
||
disabled: unref(Y) || unref(K),
|
||
onClick: (r[0] ||= (e) => Jt(`person`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
unref(R).is_certification
|
||
? (openBlock(),
|
||
createElementBlock(`div`, ke, [
|
||
createElementVNode(`div`, Ae, [
|
||
(r[32] ||= createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-verified`,
|
||
},
|
||
null,
|
||
-1,
|
||
)),
|
||
createElementVNode(`div`, null, [
|
||
(r[31] ||= createElementVNode(
|
||
`div`,
|
||
{
|
||
class: `certified-title`,
|
||
},
|
||
`已完成实名认证`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`div`, je, [
|
||
createElementVNode(
|
||
`span`,
|
||
null,
|
||
toDisplayString(
|
||
unref(R).person?.card_name || `--`,
|
||
),
|
||
1,
|
||
),
|
||
unref(R).certification_show_certify_id ===
|
||
1 && unref(R).person?.certify_id
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`span`,
|
||
Me,
|
||
` 认证 ID:` +
|
||
toDisplayString(
|
||
unref(R).person.certify_id,
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
]),
|
||
]),
|
||
unref(R).certification_company_open === 1 &&
|
||
!unref(q)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
Ne,
|
||
` 如需开具企业发票或进行企业相关操作,可继续完成企业认证。 `,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
unref(R).certification_company_open === 1 && unref(q)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Pe, [
|
||
createElementVNode(`div`, Fe, [
|
||
(r[33] ||= createElementVNode(
|
||
`strong`,
|
||
null,
|
||
`企业认证`,
|
||
-1,
|
||
)),
|
||
unref(q) === 1
|
||
? (openBlock(),
|
||
createBlock(y, {
|
||
key: 0,
|
||
severity: `success`,
|
||
value: `已认证`,
|
||
}))
|
||
: unref(q) === 2
|
||
? (openBlock(),
|
||
createBlock(y, {
|
||
key: 1,
|
||
severity: `danger`,
|
||
value: `认证失败`,
|
||
}))
|
||
: unref(q) === 3
|
||
? (openBlock(),
|
||
createBlock(y, {
|
||
key: 2,
|
||
severity: `warn`,
|
||
value: `待审核`,
|
||
}))
|
||
: (openBlock(),
|
||
createBlock(y, {
|
||
key: 3,
|
||
severity: `info`,
|
||
value: `已提交,待核验`,
|
||
})),
|
||
]),
|
||
unref(R).company?.auth_fail
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
Ie,
|
||
toDisplayString(
|
||
unref(R).company.auth_fail,
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(q) === 3 || unref(q) === 4
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
Le,
|
||
`审核完成前不能重复提交,状态更新后可刷新查看结果。`,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(q) === 4
|
||
? (openBlock(),
|
||
createBlock(
|
||
u,
|
||
{
|
||
key: 2,
|
||
label: `继续企业核验`,
|
||
disabled: unref(Y) || unref(K),
|
||
onClick: (r[1] ||= (e) =>
|
||
Jt(`company`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
unref(z)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 7,
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(unref(z)),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(B)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 8,
|
||
severity: `info`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(unref(B)),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
!unref(K) &&
|
||
(unref(Dt) ||
|
||
(unref(R).certification_company_open === 1 &&
|
||
[0, 2].includes(unref(q))))
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Re, [
|
||
createVNode(
|
||
At,
|
||
{
|
||
value: unref(V),
|
||
"onUpdate:value": (r[18] ||= (e) =>
|
||
isRef(V) ? (V.value = e) : null),
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createVNode(x, null, {
|
||
default: withCtx(() => [
|
||
unref(Dt)
|
||
? (openBlock(),
|
||
createBlock(
|
||
b,
|
||
{
|
||
key: 0,
|
||
value: 0,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[34] ||= [
|
||
createTextVNode(
|
||
`个人认证`,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(R)
|
||
.certification_company_open === 1 &&
|
||
[0, 2].includes(unref(q))
|
||
? (openBlock(),
|
||
createBlock(
|
||
b,
|
||
{
|
||
key: 1,
|
||
value: 1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(J) === 1
|
||
? `个人转企业认证`
|
||
: `企业认证`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
}),
|
||
createVNode(I, null, {
|
||
default: withCtx(() => [
|
||
unref(Dt)
|
||
? (openBlock(),
|
||
createBlock(
|
||
N,
|
||
{
|
||
key: 0,
|
||
value: 0,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createElementVNode(
|
||
`div`,
|
||
ze,
|
||
[
|
||
createElementVNode(
|
||
`div`,
|
||
Be,
|
||
[
|
||
(r[35] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`姓名 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(H)
|
||
.card_name,
|
||
"onUpdate:modelValue":
|
||
(r[2] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
H,
|
||
).card_name =
|
||
e)),
|
||
placeholder: `请输入真实姓名`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Ve,
|
||
[
|
||
(r[36] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
`证件类型`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
j,
|
||
{
|
||
modelValue:
|
||
unref(H)
|
||
.card_type,
|
||
"onUpdate:modelValue":
|
||
(r[3] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
H,
|
||
).card_type =
|
||
e)),
|
||
options: kt,
|
||
optionLabel: `label`,
|
||
optionValue: `value`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
He,
|
||
[
|
||
(r[37] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`证件号码 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(H)
|
||
.card_number,
|
||
"onUpdate:modelValue":
|
||
(r[4] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
H,
|
||
).card_number =
|
||
e)),
|
||
placeholder: `请输入证件号码`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Ue,
|
||
[
|
||
(r[38] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
`手机号`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(H)
|
||
.phone,
|
||
"onUpdate:modelValue":
|
||
(r[5] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
H,
|
||
).phone =
|
||
e)),
|
||
placeholder: `用于接收认证结果通知(选填)`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
unref(Et)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
{
|
||
key: 0,
|
||
},
|
||
[
|
||
createVNode(
|
||
M,
|
||
{
|
||
modelValue:
|
||
unref(G)
|
||
.img_one,
|
||
"onUpdate:modelValue":
|
||
(r[6] ||=
|
||
(e) =>
|
||
(unref(
|
||
G,
|
||
).img_one =
|
||
e)),
|
||
label: `身份证正面照 *`,
|
||
hint: `点击选择图片`,
|
||
accept: `image/*`,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`modelValue`,
|
||
],
|
||
),
|
||
createVNode(
|
||
M,
|
||
{
|
||
modelValue:
|
||
unref(G)
|
||
.img_two,
|
||
"onUpdate:modelValue":
|
||
(r[7] ||=
|
||
(e) =>
|
||
(unref(
|
||
G,
|
||
).img_two =
|
||
e)),
|
||
label: `身份证反面照 *`,
|
||
hint: `点击选择图片`,
|
||
accept: `image/*`,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`modelValue`,
|
||
],
|
||
),
|
||
],
|
||
64,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
createVNode(
|
||
u,
|
||
{
|
||
label: `提交认证`,
|
||
loading: unref(W),
|
||
onClick: zt,
|
||
},
|
||
null,
|
||
8,
|
||
[`loading`],
|
||
),
|
||
],
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createVNode(
|
||
N,
|
||
{
|
||
value: 1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(R)
|
||
.certification_company_need_person ===
|
||
1 &&
|
||
!unref(R).is_certification
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 0,
|
||
severity: `info`,
|
||
closable: !1,
|
||
class: `tip`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[39] ||= [
|
||
createTextVNode(
|
||
` 企业认证前需先完成个人认证 `,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createElementVNode(`div`, We, [
|
||
createElementVNode(
|
||
`div`,
|
||
Ge,
|
||
[
|
||
(r[40] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`企业名称 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(U).company,
|
||
"onUpdate:modelValue":
|
||
(r[8] ||= (e) =>
|
||
(unref(
|
||
U,
|
||
).company = e)),
|
||
placeholder: `营业执照上的企业全称`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Ke,
|
||
[
|
||
(r[41] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`统一社会信用代码 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(U)
|
||
.company_organ_code,
|
||
"onUpdate:modelValue":
|
||
(r[9] ||= (e) =>
|
||
(unref(
|
||
U,
|
||
).company_organ_code =
|
||
e)),
|
||
placeholder: `请输入统一社会信用代码`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
qe,
|
||
[
|
||
(r[42] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
`法人类型`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
j,
|
||
{
|
||
modelValue:
|
||
unref(U)
|
||
.legal_person_type,
|
||
"onUpdate:modelValue":
|
||
(r[10] ||= (e) =>
|
||
(unref(
|
||
U,
|
||
).legal_person_type =
|
||
e)),
|
||
options: [
|
||
{
|
||
label: `法人本人`,
|
||
value: 1,
|
||
},
|
||
{
|
||
label: `法人代表`,
|
||
value: 2,
|
||
},
|
||
],
|
||
optionLabel: `label`,
|
||
optionValue: `value`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Je,
|
||
[
|
||
createElementVNode(
|
||
`div`,
|
||
Ye,
|
||
[
|
||
(r[43] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`法人姓名 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(U)
|
||
.card_name,
|
||
"onUpdate:modelValue":
|
||
(r[11] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
U,
|
||
).card_name =
|
||
e)),
|
||
placeholder: `法人真实姓名`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Xe,
|
||
[
|
||
(r[44] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
`法人证件号码 `,
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
{
|
||
class: `req`,
|
||
},
|
||
`*`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(U)
|
||
.card_number,
|
||
"onUpdate:modelValue":
|
||
(r[12] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
U,
|
||
).card_number =
|
||
e)),
|
||
placeholder: `法人证件号码`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Ze,
|
||
[
|
||
(r[45] ||=
|
||
createElementVNode(
|
||
`label`,
|
||
null,
|
||
`手机号`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
S,
|
||
{
|
||
modelValue:
|
||
unref(U).phone,
|
||
"onUpdate:modelValue":
|
||
(r[13] ||= (e) =>
|
||
(unref(U).phone =
|
||
e)),
|
||
placeholder: `用于接收认证结果通知(选填)`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
),
|
||
unref(Et)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
{
|
||
key: 0,
|
||
},
|
||
[
|
||
createVNode(
|
||
M,
|
||
{
|
||
modelValue:
|
||
unref(G)
|
||
.img_one,
|
||
"onUpdate:modelValue":
|
||
(r[14] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
G,
|
||
).img_one =
|
||
e)),
|
||
label: `法人身份证正面照 *`,
|
||
hint: `点击选择图片`,
|
||
accept: `image/*`,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
createVNode(
|
||
M,
|
||
{
|
||
modelValue:
|
||
unref(G)
|
||
.img_two,
|
||
"onUpdate:modelValue":
|
||
(r[15] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
G,
|
||
).img_two =
|
||
e)),
|
||
label: `法人身份证反面照 *`,
|
||
hint: `点击选择图片`,
|
||
accept: `image/*`,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
createVNode(
|
||
M,
|
||
{
|
||
modelValue:
|
||
unref(G)
|
||
.img_three,
|
||
"onUpdate:modelValue":
|
||
(r[16] ||= (
|
||
e,
|
||
) =>
|
||
(unref(
|
||
G,
|
||
).img_three =
|
||
e)),
|
||
label: `营业执照 *`,
|
||
hint: `点击选择图片`,
|
||
accept: `image/*`,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
),
|
||
],
|
||
64,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
unref(wt) && unref(Tt)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`a`,
|
||
{
|
||
key: 1,
|
||
class: `auth-template-link`,
|
||
href: unref(Tt),
|
||
target: `_blank`,
|
||
rel: `noopener noreferrer`,
|
||
},
|
||
[
|
||
...(r[46] ||= [
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-download`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
createTextVNode(
|
||
`下载授权委托书模板`,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
8,
|
||
Qe,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
unref(wt)
|
||
? (openBlock(),
|
||
createBlock(
|
||
M,
|
||
{
|
||
key: 2,
|
||
modelValue:
|
||
unref(G)
|
||
.auth_letter,
|
||
"onUpdate:modelValue":
|
||
(r[17] ||= (e) =>
|
||
(unref(
|
||
G,
|
||
).auth_letter =
|
||
e)),
|
||
label: `授权委托书 *`,
|
||
hint: `法人代表认证时必传`,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
createVNode(
|
||
u,
|
||
{
|
||
label: `提交认证`,
|
||
loading: unref(W),
|
||
disabled: !unref(Ot),
|
||
onClick: Bt,
|
||
},
|
||
null,
|
||
8,
|
||
[`loading`, `disabled`],
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
]),
|
||
_: 1,
|
||
}),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`value`],
|
||
),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
],
|
||
64,
|
||
))
|
||
: (openBlock(),
|
||
createElementBlock(`div`, $e, [
|
||
createVNode(
|
||
g,
|
||
{
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(z) || `实名认证信息加载失败,请重试`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(u, {
|
||
label: `重新加载`,
|
||
icon: `pi pi-refresh`,
|
||
outlined: ``,
|
||
size: `small`,
|
||
onClick: Pt,
|
||
}),
|
||
])),
|
||
createVNode(
|
||
Z,
|
||
{
|
||
visible: unref(C),
|
||
header: `选择认证方式`,
|
||
modal: ``,
|
||
draggable: !1,
|
||
style: {
|
||
width: `min(440px, calc(100vw - 28px))`,
|
||
},
|
||
closable: !unref(W),
|
||
"close-on-escape": !unref(W),
|
||
"onUpdate:visible": (r[21] ||= (e) => {
|
||
e || Ut();
|
||
}),
|
||
},
|
||
{
|
||
footer: withCtx(() => [
|
||
unref(T) || (!unref(w) && !unref(L).length)
|
||
? (openBlock(),
|
||
createBlock(
|
||
u,
|
||
{
|
||
key: 0,
|
||
label: `重新加载`,
|
||
text: ``,
|
||
disabled: unref(W) || unref(w),
|
||
onClick: Ht,
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createVNode(
|
||
u,
|
||
{
|
||
label: `返回修改`,
|
||
text: ``,
|
||
disabled: unref(W),
|
||
onClick: Ut,
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
unref(A)
|
||
? (openBlock(),
|
||
createBlock(
|
||
u,
|
||
{
|
||
key: 1,
|
||
label: `重新加载认证资料`,
|
||
text: ``,
|
||
disabled: unref(W) || unref(k),
|
||
onClick: (r[20] ||= () => {
|
||
let e = unref(L).find(
|
||
(e) => e.name === unref(E),
|
||
);
|
||
e && Rt(e);
|
||
}),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createVNode(
|
||
u,
|
||
{
|
||
label: `开始验证`,
|
||
loading: unref(W),
|
||
disabled:
|
||
unref(w) ||
|
||
unref(k) ||
|
||
!!unref(A) ||
|
||
!unref(_t) ||
|
||
!unref(E),
|
||
onClick: Wt,
|
||
},
|
||
null,
|
||
8,
|
||
[`loading`, `disabled`],
|
||
),
|
||
]),
|
||
default: withCtx(() => [
|
||
createElementVNode(`div`, et, [
|
||
createElementVNode(
|
||
`p`,
|
||
tt,
|
||
`请选择` +
|
||
toDisplayString(
|
||
unref(D)?.type === `company` ? `企业` : `个人`,
|
||
) +
|
||
`实名认证方式`,
|
||
1,
|
||
),
|
||
unref(w)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, nt, [
|
||
(openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
null,
|
||
renderList(3, (e) =>
|
||
createVNode(o, {
|
||
key: e,
|
||
height: `70px`,
|
||
}),
|
||
),
|
||
64,
|
||
)),
|
||
]))
|
||
: unref(k)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, rt, [
|
||
createVNode(o, {
|
||
height: `44px`,
|
||
}),
|
||
createVNode(o, {
|
||
height: `44px`,
|
||
}),
|
||
]))
|
||
: unref(gt).length
|
||
? (openBlock(),
|
||
createElementBlock(`div`, it, [
|
||
(openBlock(!0),
|
||
createElementBlock(
|
||
Fragment,
|
||
null,
|
||
renderList(
|
||
unref(gt),
|
||
(t) => (
|
||
openBlock(),
|
||
createElementBlock(
|
||
`div`,
|
||
{
|
||
key: t.field,
|
||
class: `field`,
|
||
},
|
||
[
|
||
createElementVNode(`label`, null, [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
t.title || t.field,
|
||
) + ` `,
|
||
1,
|
||
),
|
||
It(t)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`span`,
|
||
at,
|
||
`*`,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
t.tip
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`small`,
|
||
ot,
|
||
toDisplayString(t.tip),
|
||
1,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
t.type === `select`
|
||
? (openBlock(),
|
||
createBlock(
|
||
j,
|
||
{
|
||
key: 1,
|
||
modelValue:
|
||
unref(O)[t.field],
|
||
"onUpdate:modelValue": (
|
||
e,
|
||
) =>
|
||
(unref(O)[t.field] = e),
|
||
options: Lt(t.options),
|
||
"option-label": `label`,
|
||
"option-value": `value`,
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`modelValue`,
|
||
`onUpdate:modelValue`,
|
||
`options`,
|
||
],
|
||
))
|
||
: t.type === `file`
|
||
? (openBlock(),
|
||
createBlock(
|
||
M,
|
||
{
|
||
key: 2,
|
||
modelValue:
|
||
unref(O)[t.field],
|
||
"onUpdate:modelValue": (
|
||
e,
|
||
) =>
|
||
(unref(O)[t.field] = e),
|
||
label:
|
||
t.title ||
|
||
t.field ||
|
||
`上传文件`,
|
||
hint: `点击选择文件`,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`modelValue`,
|
||
`onUpdate:modelValue`,
|
||
`label`,
|
||
],
|
||
))
|
||
: (openBlock(),
|
||
createBlock(
|
||
S,
|
||
{
|
||
key: 3,
|
||
modelValue:
|
||
unref(O)[t.field],
|
||
"onUpdate:modelValue": (
|
||
e,
|
||
) =>
|
||
(unref(O)[t.field] = e),
|
||
fluid: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`modelValue`,
|
||
`onUpdate:modelValue`,
|
||
],
|
||
)),
|
||
],
|
||
)
|
||
),
|
||
),
|
||
128,
|
||
)),
|
||
]))
|
||
: (openBlock(),
|
||
createElementBlock(
|
||
`fieldset`,
|
||
{
|
||
key: 3,
|
||
class: `channel-list`,
|
||
disabled: unref(W),
|
||
"aria-label": `认证方式`,
|
||
},
|
||
[
|
||
(openBlock(!0),
|
||
createElementBlock(
|
||
Fragment,
|
||
null,
|
||
renderList(
|
||
unref(bt),
|
||
(t) => (
|
||
openBlock(),
|
||
createElementBlock(
|
||
`label`,
|
||
{
|
||
key: t.key,
|
||
class: normalizeClass([
|
||
`channel-option`,
|
||
{
|
||
"is-selected":
|
||
unref(E) === t.name &&
|
||
!!t.name,
|
||
"is-unavailable": !t.name,
|
||
},
|
||
]),
|
||
},
|
||
[
|
||
withDirectives(
|
||
createElementVNode(
|
||
`input`,
|
||
{
|
||
"onUpdate:modelValue":
|
||
(r[19] ||= (e) =>
|
||
isRef(E)
|
||
? (E.value = e)
|
||
: null),
|
||
type: `radio`,
|
||
name: `certification-channel`,
|
||
value: t.name,
|
||
disabled:
|
||
!t.name || unref(W),
|
||
"aria-label": t.title,
|
||
},
|
||
null,
|
||
8,
|
||
ct,
|
||
),
|
||
[[vModelRadio, unref(E)]],
|
||
),
|
||
t.icon
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`img`,
|
||
{
|
||
key: 0,
|
||
src: t.icon,
|
||
alt: ``,
|
||
class: `channel-icon`,
|
||
},
|
||
null,
|
||
8,
|
||
lt,
|
||
))
|
||
: (openBlock(),
|
||
createElementBlock(`i`, ut)),
|
||
createElementVNode(
|
||
`span`,
|
||
dt,
|
||
toDisplayString(t.title),
|
||
1,
|
||
),
|
||
t.name
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`i`,
|
||
{
|
||
key: 3,
|
||
class: normalizeClass([
|
||
`pi channel-check`,
|
||
unref(E) === t.name
|
||
? `pi-check-circle`
|
||
: `pi-circle`,
|
||
]),
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
2,
|
||
))
|
||
: (openBlock(),
|
||
createElementBlock(
|
||
`span`,
|
||
ft,
|
||
`暂未上线`,
|
||
)),
|
||
],
|
||
2,
|
||
)
|
||
),
|
||
),
|
||
128,
|
||
)),
|
||
],
|
||
8,
|
||
st,
|
||
)),
|
||
unref(T)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 4,
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(toDisplayString(unref(T)), 1),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(A)
|
||
? (openBlock(),
|
||
createBlock(
|
||
g,
|
||
{
|
||
key: 5,
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(toDisplayString(unref(A)), 1),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: !unref(w) && !unref(L).length
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
pt,
|
||
`暂无可用认证方式,请稍后重试。`,
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`visible`, `closable`, `close-on-escape`],
|
||
),
|
||
createVNode(
|
||
jt,
|
||
{
|
||
modelValue: unref(P),
|
||
"onUpdate:modelValue": (r[22] ||= (e) =>
|
||
isRef(P) ? (P.value = e) : null),
|
||
"order-id": unref(vt),
|
||
amount: unref(yt),
|
||
onSuccess: Kt,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`, `order-id`, `amount`],
|
||
),
|
||
createVNode(
|
||
Z,
|
||
{
|
||
visible: unref(Y),
|
||
"onUpdate:visible": [
|
||
(r[23] ||= (e) => (isRef(Y) ? (Y.value = e) : null)),
|
||
(r[24] ||= (e) => {
|
||
e || Qt();
|
||
}),
|
||
],
|
||
"aria-label": `实名认证二维码,按 Escape 关闭`,
|
||
modal: ``,
|
||
draggable: !1,
|
||
style: {
|
||
width: `min(272px, calc(100vw - 28px))`,
|
||
},
|
||
"show-header": !1,
|
||
closable: !1,
|
||
"dismissable-mask": !1,
|
||
"close-on-escape": !0,
|
||
pt: {
|
||
content: {
|
||
style: {
|
||
padding: `16px`,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createElementVNode(`div`, mt, [
|
||
unref(X)
|
||
? unref(X)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`iframe`,
|
||
{
|
||
key: 1,
|
||
srcdoc: unref(X),
|
||
class: `auth-frame`,
|
||
title: `实名认证二维码`,
|
||
},
|
||
null,
|
||
8,
|
||
ht,
|
||
))
|
||
: createCommentVNode(``, !0)
|
||
: (openBlock(),
|
||
createBlock(o, {
|
||
key: 0,
|
||
width: `100%`,
|
||
height: `240px`,
|
||
"aria-label": `正在加载实名认证二维码`,
|
||
})),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`visible`],
|
||
),
|
||
])
|
||
);
|
||
}
|
||
);
|
||
},
|
||
}),
|
||
[[`__scopeId`, `data-v-ed164766`]],
|
||
);
|
||
export {};
|
||
export default C;
|
||
</script>
|