Files
console-dev/app/pages/account/realname/index.vue
T

2604 lines
123 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>