docs: annotate account commerce finance and content pages
This commit is contained in:
1 parent
60827b8bfb
commit
2be21c1c62
24 files changed
+223
No files matched your search
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* API 密钥管理:列表分页、创建、IP 白名单编辑及删除。私钥仅在创建响应中保留,关闭弹窗或离开页面即清空,不能视为可再次查询的资料。
|
||||
*/
|
||||
import "~/assets/styles/api-keys.Bq3Csr53.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { onMounted } from "vue";
|
||||
@@ -33,6 +36,7 @@ import paginator from "primevue/paginator";
|
||||
import checkbox from "primevue/checkbox";
|
||||
import column from "primevue/column";
|
||||
import textarea from "primevue/textarea";
|
||||
// 集中管理列表权限、写操作忙碌态和仅本次可见的私钥;请求代次与存活标记防止旧响应更新已离开的页面。
|
||||
function D() {
|
||||
let e = useApi(),
|
||||
t = ref([]),
|
||||
@@ -60,6 +64,7 @@ function D() {
|
||||
onBeforeUnmount(() => {
|
||||
((v = !1), y++, b());
|
||||
});
|
||||
// 刷新当前页并读取服务端 create_api 权限;响应结构无效时不开放创建入口。
|
||||
async function x() {
|
||||
if (!v) return;
|
||||
let n = ++y;
|
||||
@@ -86,6 +91,7 @@ function D() {
|
||||
v && n === y && (o.value = !1);
|
||||
}
|
||||
}
|
||||
// 只在权限已加载且允许创建时提交。创建响应不完整时提示先刷新核实,避免误以为失败而重复生成密钥。
|
||||
async function C() {
|
||||
if (!(!v || s.value || m.value)) {
|
||||
if (((d.value = ``), (f.value = ``), !l.value || o.value)) {
|
||||
@@ -123,6 +129,7 @@ function D() {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 打开白名单编辑器时复制行数据,未保存的输入不直接修改列表。
|
||||
function w(e) {
|
||||
s.value ||
|
||||
((d.value = ``),
|
||||
@@ -131,6 +138,7 @@ function D() {
|
||||
(g.enabled = Number(e.status) === 1),
|
||||
(g.ip = e.ip || ``));
|
||||
}
|
||||
// 开启白名单必须提供 IP;保存成功后关闭编辑器并重新读取服务端数据。
|
||||
async function T() {
|
||||
if (!v || s.value || !h.value) return;
|
||||
if (((d.value = ``), (f.value = ``), g.enabled && !g.ip.trim())) {
|
||||
@@ -155,6 +163,7 @@ function D() {
|
||||
v && (s.value = !1);
|
||||
}
|
||||
}
|
||||
// 删除成功后,若当前页只剩这一条则回退一页,再刷新列表。
|
||||
async function E() {
|
||||
if (v && !s.value && _.value?.id) {
|
||||
((d.value = ``), (f.value = ``), (s.value = !0));
|
||||
@@ -271,6 +280,7 @@ var O = {
|
||||
!e && !N.value && (U.value = null);
|
||||
},
|
||||
});
|
||||
// 复制创建时返回的私钥;剪贴板不可用时保留手动复制提示,不把私钥写入持久存储。
|
||||
async function he() {
|
||||
if (z.value) {
|
||||
J.value = ``;
|
||||
@@ -282,9 +292,11 @@ var O = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 关闭私钥展示同时清空密钥与复制反馈,避免之后再次暴露。
|
||||
function Z() {
|
||||
(B(), (q.value = !1), (J.value = ``));
|
||||
}
|
||||
// 分页器为零基页码,接口页码从 1 开始。
|
||||
function ge(e) {
|
||||
((S.value = e.page + 1), W());
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 第三方账号关联管理:从账户资料整理 OAuth 绑定状态,通过公共 OAuth 流程发起关联,并确认后解除绑定。
|
||||
*/
|
||||
import "~/assets/styles/WechatConnection.DI5ko1xy.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { renderList } from "vue";
|
||||
@@ -77,6 +80,7 @@ var D = {
|
||||
onBeforeUnmount(() => {
|
||||
J = !1;
|
||||
});
|
||||
// 读取 /account 的 OAuth 关联列表;组件卸载后的响应不再更新界面。
|
||||
async function Y() {
|
||||
if (!R.value) {
|
||||
((R.value = !0), (z.value = ``));
|
||||
@@ -91,6 +95,7 @@ var D = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 仅对已关联的提供方执行解绑;请求完成后重新加载列表,以服务端结果为准。
|
||||
async function X() {
|
||||
if (U.value?.linked && !H.value && !W.value && J) {
|
||||
((H.value = !0), (z.value = ``), (B.value = ``));
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 账户设置聚合页:资料、登录密码、操作密码、手机、邮箱和流量预警分别维护表单与提交状态;敏感修改可由安全验证弹窗续接原请求。
|
||||
*/
|
||||
import "~/assets/styles/UploadField.BbTCTv6C.css";
|
||||
import "~/assets/styles/PageSteps.B5K7G9zF.css";
|
||||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||||
@@ -324,6 +327,7 @@ var Ce = {
|
||||
label: `流量预警`,
|
||||
},
|
||||
];
|
||||
// 为账户设置标签提供左右方向键及 Home/End 导航,并同步实际焦点。
|
||||
function Xt(e, t) {
|
||||
let n = t;
|
||||
if (e.key === `ArrowRight`) n = (t + 1) % E.length;
|
||||
@@ -336,6 +340,7 @@ var Ce = {
|
||||
document.getElementById(`account-tab-${T.value}`)?.focus());
|
||||
}
|
||||
let Zt = ref([]);
|
||||
// 加载账户并回填资料表单,同时决定手机、邮箱是否需要先验证旧联系方式。
|
||||
async function Qt() {
|
||||
Gt.value = !0;
|
||||
try {
|
||||
@@ -354,6 +359,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
let $t = ref(!1);
|
||||
// 国家选项按需加载;失败时保留空选项,后续仍可重新尝试。
|
||||
async function en() {
|
||||
if (!$t.value)
|
||||
try {
|
||||
@@ -380,9 +386,11 @@ var Ce = {
|
||||
function N(e, t) {
|
||||
D.value = e instanceof Error ? e.message : t;
|
||||
}
|
||||
// 暂存安全挑战及原操作闭包,验证成功后以原表单快照继续提交。
|
||||
function rn(e, t) {
|
||||
((tn.value = e), (A.value = t), (k.value = !0));
|
||||
}
|
||||
// 把安全验证结果交给待续接操作;再次出现挑战时更新弹窗,不把尚未验证的结果当成功。
|
||||
async function an(e) {
|
||||
if (A.value && !j.value) {
|
||||
((j.value = !0), (D.value = ``));
|
||||
@@ -405,6 +413,7 @@ var Ce = {
|
||||
country_id: null,
|
||||
}),
|
||||
on = ref(!1);
|
||||
// 保存可编辑资料,同时保留当前账户已有的 language、notes 字段,避免更新接口覆盖它们。
|
||||
async function sn() {
|
||||
(M(), (on.value = !0));
|
||||
try {
|
||||
@@ -424,6 +433,7 @@ var Ce = {
|
||||
on.value = !1;
|
||||
}
|
||||
}
|
||||
// 取消编辑时从账户快照还原表单,不额外写入接口。
|
||||
function cn() {
|
||||
(M(),
|
||||
S.value &&
|
||||
@@ -483,6 +493,7 @@ var Ce = {
|
||||
onBeforeUnmount(() => {
|
||||
((U = !0), clearInterval(gn), (A.value = null));
|
||||
}));
|
||||
// 向已绑定手机或邮箱发送 verify 验证码;成功后启动 60 秒倒计时,离页时清理计时器。
|
||||
async function vn() {
|
||||
if (
|
||||
!(
|
||||
@@ -518,6 +529,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 根据旧密码或验证码验证方式选择不同接口;密码一致性通过后才提交,安全挑战保留同一份请求数据。
|
||||
async function yn() {
|
||||
if (I.value || j.value || k.value || w(`password`)) return;
|
||||
if (
|
||||
@@ -602,6 +614,7 @@ var Ce = {
|
||||
G = ref({}),
|
||||
Sn = ref(!1),
|
||||
Cn = ref(``);
|
||||
// 分别加载云服务器与独立服务器的流量预警;单个模块失败只记录该模块错误。
|
||||
async function wn() {
|
||||
((Sn.value = !0), (G.value = {}));
|
||||
try {
|
||||
@@ -643,12 +656,14 @@ var Ce = {
|
||||
Sn.value = !1;
|
||||
}
|
||||
}
|
||||
// 开启预警且未选阈值时提供初始比例;关闭状态的实际提交比例在保存时归零。
|
||||
function Tn(e, t) {
|
||||
let n = +!!t,
|
||||
r = W.value[e];
|
||||
((r.warning_switch = n),
|
||||
n === 1 && !r.leave_percent && (r.leave_percent = xn[1]));
|
||||
}
|
||||
// 按模块保存预警开关和剩余流量比例,避免另一模块的草稿被一并提交。
|
||||
async function En(e) {
|
||||
let t = W.value[e];
|
||||
if (t) {
|
||||
@@ -673,6 +688,7 @@ var Ce = {
|
||||
re_operate_password: ``,
|
||||
}),
|
||||
Dn = ref(!1);
|
||||
// 操作密码独立于登录密码;支持安全挑战续接,成功后清空密码输入。
|
||||
async function On() {
|
||||
if (Dn.value || j.value || k.value) return;
|
||||
if ((M(), !K.operate_password)) {
|
||||
@@ -730,6 +746,7 @@ var Ce = {
|
||||
update: useCaptcha_t(`update`),
|
||||
},
|
||||
};
|
||||
// 统一联系方式 verify/update 场景的验证码请求,并由各自验证码实例处理挑战失效。
|
||||
async function jn(e, t, n = {}) {
|
||||
let r = An[e][t],
|
||||
ee = r.validationError();
|
||||
@@ -746,6 +763,7 @@ var Ce = {
|
||||
throw (await r.handleError(e), e);
|
||||
}
|
||||
}
|
||||
// 向当前绑定手机号发送旧号码验证短信。
|
||||
async function Mn() {
|
||||
if (!(Y.value || w(`phone`))) {
|
||||
(M(), (Y.value = !0));
|
||||
@@ -759,6 +777,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 旧手机号验证通过后才进入新号码绑定步骤。
|
||||
async function Nn() {
|
||||
(M(), (Y.value = !0));
|
||||
try {
|
||||
@@ -773,6 +792,7 @@ var Ce = {
|
||||
Y.value = !1;
|
||||
}
|
||||
}
|
||||
// 向草稿中的新手机号发送 update 场景验证码。
|
||||
async function Pn() {
|
||||
if (!(Y.value || w(`phone`))) {
|
||||
(M(), (Y.value = !0));
|
||||
@@ -790,6 +810,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 完成新号码绑定后重载账户,清空新旧验证码并复位步骤。
|
||||
async function Fn() {
|
||||
(M(), (Y.value = !0));
|
||||
try {
|
||||
@@ -821,6 +842,7 @@ var Ce = {
|
||||
t = e === `phone` ? J.value : Z.value;
|
||||
return An[e][t === 1 ? `verify` : `update`];
|
||||
});
|
||||
// 向当前绑定邮箱发送旧邮箱验证邮件。
|
||||
async function Ln() {
|
||||
if (!(Q.value || w(`email`))) {
|
||||
(M(), (Q.value = !0));
|
||||
@@ -834,6 +856,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 旧邮箱验证通过后才进入新邮箱绑定步骤。
|
||||
async function Rn() {
|
||||
(M(), (Q.value = !0));
|
||||
try {
|
||||
@@ -848,6 +871,7 @@ var Ce = {
|
||||
Q.value = !1;
|
||||
}
|
||||
}
|
||||
// 向草稿中的新邮箱发送 update 场景验证码。
|
||||
async function zn() {
|
||||
if (!(Q.value || w(`email`))) {
|
||||
(M(), (Q.value = !0));
|
||||
@@ -864,6 +888,7 @@ var Ce = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 提交新邮箱及验证码;成功后重载账户资料并清空步骤输入。
|
||||
async function Bn() {
|
||||
(M(), (Q.value = !0));
|
||||
try {
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 企业实名认证路由适配层:复用统一实名认证页,仅把 initial-type 设为 company;认证状态、接口与上传流程均由统一页负责。
|
||||
*/
|
||||
import "~/assets/styles/UploadField.BbTCTv6C.css";
|
||||
import "~/assets/styles/PageSteps.B5K7G9zF.css";
|
||||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 实名认证流程:个人/企业资料 → 选择渠道及动态字段 → 必要时支付认证费 → 二维码核验与状态轮询。序号将异步结果绑定到当前资料、渠道和核验会话。
|
||||
*/
|
||||
import "~/assets/styles/UploadField.BbTCTv6C.css";
|
||||
import "~/assets/styles/PageSteps.B5K7G9zF.css";
|
||||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||||
@@ -46,6 +49,7 @@ 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 =
|
||||
@@ -454,6 +458,7 @@ var xe = {
|
||||
flush: `sync`,
|
||||
},
|
||||
);
|
||||
// 只收集已上传的图片标识,空字段不随申请发送。
|
||||
function At() {
|
||||
let e = {};
|
||||
for (let [t, n] of Object.entries(G)) n && (e[t] = n);
|
||||
@@ -466,9 +471,11 @@ var xe = {
|
||||
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 = ``));
|
||||
@@ -483,11 +490,13 @@ var xe = {
|
||||
!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 ||
|
||||
@@ -496,6 +505,7 @@ var xe = {
|
||||
e.required === `true`
|
||||
);
|
||||
}
|
||||
// 将数组、对象、JSON 字符串或逗号列表整理为选择项,供认证渠道动态表单使用。
|
||||
function Lt(e) {
|
||||
if (Array.isArray(e))
|
||||
return e.map((e) => ({
|
||||
@@ -521,6 +531,7 @@ var xe = {
|
||||
}
|
||||
return [];
|
||||
}
|
||||
// 加载当前认证类型与渠道的动态字段;请求结束时同时核对渠道、类型、弹窗状态和代次。
|
||||
async function Rt(e) {
|
||||
Ft();
|
||||
let t = j,
|
||||
@@ -553,6 +564,7 @@ var xe = {
|
||||
i() && (k.value = !1);
|
||||
}
|
||||
}
|
||||
// 验证个人资料及要求上传的证件后,暂存申请并进入渠道选择。
|
||||
async function zt() {
|
||||
if (!(W.value || C.value || Y.value || P.value || !Dt.value)) {
|
||||
if (((z.value = ``), K.value))
|
||||
@@ -569,6 +581,7 @@ var xe = {
|
||||
});
|
||||
}
|
||||
}
|
||||
// 企业申请额外校验企业实名开关、个人认证前置条件、营业执照和必要的委托书。
|
||||
async function Bt() {
|
||||
if (!(
|
||||
W.value ||
|
||||
@@ -597,6 +610,7 @@ var xe = {
|
||||
});
|
||||
}
|
||||
}
|
||||
// 保存待提交的资料快照;渠道选择不直接修改原始表单。
|
||||
async function Vt(e, t) {
|
||||
((F.value = null),
|
||||
(D.value = {
|
||||
@@ -607,6 +621,7 @@ var xe = {
|
||||
(C.value = !0),
|
||||
await Ht());
|
||||
}
|
||||
// 加载可用认证插件,使用独立代次隔离弹窗重开或重试。
|
||||
async function Ht() {
|
||||
if (!C.value || W.value) return;
|
||||
let e = ++I;
|
||||
@@ -625,6 +640,7 @@ var xe = {
|
||||
e === I && (w.value = !1);
|
||||
}
|
||||
}
|
||||
// 非提交期间允许关闭渠道弹窗,并使其异步加载结果失效。
|
||||
function Ut() {
|
||||
W.value ||
|
||||
(I++,
|
||||
@@ -635,6 +651,7 @@ var xe = {
|
||||
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);
|
||||
@@ -720,6 +737,7 @@ var xe = {
|
||||
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
|
||||
@@ -731,6 +749,7 @@ var xe = {
|
||||
plugin_name: n,
|
||||
});
|
||||
}
|
||||
// 支付回调后再次查询渠道订单,确认同一订单已 Paid 才续交认证,不能仅凭前端支付事件认定到账。
|
||||
async function Kt() {
|
||||
let e = F.value;
|
||||
if (!e || W.value || N) return;
|
||||
@@ -764,9 +783,11 @@ var xe = {
|
||||
!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 = $;
|
||||
@@ -777,6 +798,7 @@ var xe = {
|
||||
await Xt(t),
|
||||
t === $ && Y.value && Zt(t, e));
|
||||
}
|
||||
// 认证资料失效或变更时终止旧核验并刷新资料,要求用户重新提交。
|
||||
async function Yt(e) {
|
||||
if (![`10000`, `10001`].includes(String(e))) return !1;
|
||||
Qt();
|
||||
@@ -792,6 +814,7 @@ var xe = {
|
||||
!0
|
||||
);
|
||||
}
|
||||
// 按当前核验会话加载二维码,并设置刷新时间门槛;过期会话的响应不再显示。
|
||||
async function Xt(e) {
|
||||
if (e === $ && Y.value) {
|
||||
((Z.value = !0), (Mt = Date.now() + (X.value ? 3e4 : 1e4)));
|
||||
@@ -819,6 +842,7 @@ var xe = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 每两秒查询核验状态;第三方完成后仍复查本平台认证资料,区别认证成功与进入审核,关闭后停止调度。
|
||||
function Zt(e, t) {
|
||||
jt.value = !0;
|
||||
let n = () => e === $ && Y.value;
|
||||
@@ -874,6 +898,7 @@ var xe = {
|
||||
}
|
||||
Q = setTimeout(r, 2e3);
|
||||
}
|
||||
// 关闭二维码核验并清空 HTML,同时取消下一次状态查询。
|
||||
function Qt() {
|
||||
((Y.value = !1), Nt(), (Z.value = !1), (X.value = ``));
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 个人实名认证路由适配层:复用统一实名认证页,以 person 作为初始认证类型,不单独维护一套提交逻辑。
|
||||
*/
|
||||
import "~/assets/styles/UploadField.BbTCTv6C.css";
|
||||
import "~/assets/styles/PageSteps.B5K7G9zF.css";
|
||||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||||
|
||||
Reference in new issue
Block a user