docs: annotate account commerce finance and content pages

This commit is contained in:
cieanyau committed 2026-11-06 00:29:13 +08:00
1 parent 60827b8bfb
commit 2be21c1c62
24 files changed
+223

No files matched your search

+26
View File
@@ -1,4 +1,7 @@
<script>
/**
* 购物车:读取服务端购物车、逐项重新报价、保留选择并结算。修改使用 revision 或 expected_cart 进行并发校验,不能把列表下标当作永久商品标识。
*/
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/cart.CSS2vTmS.css";
import { toDisplayString } from "vue";
@@ -40,15 +43,18 @@ import { t as purchase_limit_state_t } from "~/lib/purchase-limit-state.js";
import { a as cart_edit_a } from "~/lib/cart-edit.js";
import { i as cart_edit_i } from "~/lib/cart-edit.js";
import { t as cart_edit_t } from "~/lib/cart-edit.js";
// 只接受普通对象形状的数据,供配置摘要解析使用。
function E(e) {
return typeof e == `object` && e && !Array.isArray(e) ? e : void 0;
}
// 将可展示的配置值限制为文本;疑似 HTML 或编码标签不作为摘要内容。
function D(e) {
if (typeof e != `string` && (typeof e != `number` || !Number.isFinite(e)))
return ``;
let t = String(e).trim();
return /<\/?[a-z!]|&(?:amp;)*(?:lt|gt|quot|#0*60|#x0*3c);/i.test(t) ? `` : t;
}
// 仅在数值格式与单位明确时生成 CPU/内存/带宽等展示值。
function O(e, t) {
let n = D(e);
return n
@@ -73,10 +79,12 @@ var k = {
day: `天`,
daily: `天`,
};
// 将计费周期转换为可读名称,未识别的机器枚举不直接展示。
function A(e) {
let t = D(e);
return k[t.toLowerCase()] ?? (/^(?:[a-z_]+|\d+)$/i.test(t) ? `` : t);
}
// 归一化不同模块的配置标签,用于摘要去重和识别 CPU、内存、周期、镜像等字段。
function j(e, t = ``) {
return /^(?:cpu|cpu_num)$/i.test(t) ||
/^(?:cpu|CPU核数|处理器|核数)$/i.test(e)
@@ -93,6 +101,7 @@ function j(e, t = ``) {
? `os`
: e;
}
// 摘要排除密码、令牌、私钥及内部 ID 等字段;不能直接遍历配置对象展示所有内容。
function M(e, t = ``) {
return (
/(?:password|passwd|secret|token|private.?key|ssh.?key|credential|description|密码|口令|密钥|令牌|产品介绍|商品介绍|产品描述|商品描述)/i.test(
@@ -102,6 +111,7 @@ function M(e, t = ``) {
/(?:^|\s)id$/i.test(e)
);
}
// 当报价接口未提供 preview 时,从已知配置字段整理摘要。
function N(e, t) {
let n = [],
r = (e, t) => {
@@ -134,6 +144,7 @@ function N(e, t) {
n
);
}
// 优先使用报价 preview,过滤敏感项并合并 CPU/内存/套餐等重复信息;缺失时才使用已知配置字段。
function pe(e, t) {
let n = E(e.config_options) ?? {},
r =
@@ -391,6 +402,7 @@ var me = {
e.customfield,
e.self_defined_field,
]);
// 按商品配置签名及同签名出现次数记录选择,列表重排时不误选另一件同款商品。
function We() {
let e = new Map();
return D.value
@@ -401,6 +413,7 @@ var me = {
})
.filter(Boolean);
}
// 根据重新加载后的列表重建选择下标,避免沿用过期的位置。
function Ge(e) {
let t = new Map();
A.value = D.value.flatMap((n, r) => {
@@ -409,6 +422,7 @@ var me = {
return (t.set(i, a + 1), e.includes(`${i}:${a}`) ? [r] : []);
});
}
// 金额必须是非空且有限的非负数字;未返回报价不能当作零元。
function Ke(e) {
return (
e != null &&
@@ -417,6 +431,7 @@ var me = {
Number(e) >= 0
);
}
// 逐项请求最新报价;同时核对购物车代次、列表快照和单项请求序号,旧响应不覆盖新配置。
async function qe(e = D.value.map((e, t) => t)) {
let t = U,
n = q();
@@ -481,6 +496,7 @@ var me = {
X.value !== null &&
(!w.value || (C.checked.value && C.allowed.value)),
);
// 结算限购预检针对当前选择的位置;没有选择或仍在加载时清除旧预检。
function Ze() {
if (!w.value || k.value || !A.value.length) {
C.reset();
@@ -491,6 +507,7 @@ var me = {
positions: [...A.value],
});
}
// 刷新购物车时先废弃旧报价,再按配置签名恢复摘要与选择,最后重新报价。
async function Z(e = !1) {
let t = ++W,
n = e ? We() : [],
@@ -546,6 +563,7 @@ var me = {
let t = A.value.indexOf(e);
t === -1 ? A.value.push(e) : A.value.splice(t, 1);
}
// 遇到 409 并发冲突时重载购物车并清空选择,要求用户重新确认,避免误改已移动的下标。
async function Q(e, t) {
let n = e instanceof Error ? e.message : t;
e && typeof e == `object` && `status` in e && e.status === 409
@@ -556,6 +574,7 @@ var me = {
(M.value = N.value ? `${n};${M.value}` : n))
: (M.value = n);
}
// 先保存购物车编辑上下文,再进入对应商品页;商品页会再次确认该位置仍匹配商品。
async function et(e) {
if (!j.value && D.value[e]) {
j.value = !0;
@@ -574,6 +593,7 @@ var me = {
}
}
}
// 修改数量必须为正整数,并携带当前购物车并发校验信息。
async function tt(e, t) {
if (!(j.value || !Number.isInteger(t) || t < 1 || !D.value[e])) {
((j.value = !0), (M.value = ``));
@@ -591,6 +611,7 @@ var me = {
}
}
let $ = ref(null);
// 确认删除前记录位置与整个购物车签名,等待确认期间列表变化则不得继续使用旧位置。
function nt(e) {
let t = D.value[e];
!j.value &&
@@ -602,6 +623,7 @@ var me = {
label: `删除“${product_name_n(t.name)}”`,
});
}
// 清空操作记录当时的全部位置与签名,最终仍由统一确认函数校验。
function rt() {
!j.value &&
D.value.length &&
@@ -612,6 +634,7 @@ var me = {
label: `清空购物车`,
});
}
// 批量删除仅暂存当前选中位置,不立即发送删除请求。
function it() {
!j.value &&
A.value.length &&
@@ -622,6 +645,7 @@ var me = {
label: `删除选中的 ${A.value.length} 项商品`,
});
}
// 确认时再核对购物车签名;单项、批量、清空分别调用对应接口并携带并发校验。
async function at() {
let e = $.value;
if (e && !j.value) {
@@ -650,6 +674,7 @@ var me = {
}
}
}
// 结算要求选择项报价均已确认;服务端返回订单后打开支付并刷新购物车。
async function ot() {
if (!(j.value || P.value)) {
if (((M.value = ``), !A.value.length)) {
@@ -685,6 +710,7 @@ var me = {
}
}
}
// 支付完成后进入订单列表,订单与支付状态仍以服务端为准。
function st() {
E.push(`/orders`);
}