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

+13
View File
@@ -1,4 +1,7 @@
<script>
/**
* 发票列表与申请入口共用页面:加载可开票订单、抬头、收票地址、项目及税费配置;报价必须匹配当前表单签名后才可提交。
*/
import "~/assets/styles/PageInfoNotice._16xRFrB.css";
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/invoices.t1P1GXOx.css";
@@ -397,6 +400,7 @@ var Ce = {
tax: V.tax_rate,
}),
);
// 打开申请时重置上次草稿,并完整加载所有分页选项;默认值确定后再请求报价。
async function J() {
if (!(D.value || E.value)) {
((T.value = !0),
@@ -521,6 +525,7 @@ var Ce = {
: `请选择当前抬头支持的开票项目`
: `请选择有效的发票抬头`;
});
// 报价以排序后的订单 ID 和全部开票选项作为签名;更早响应或表单已变更的结果不得用于提交。
async function Q() {
let e = ++P.value;
if (
@@ -578,6 +583,7 @@ var Ce = {
.reduce((e, t) => e + Number(t.amount || 0), 0)
.toFixed(2);
});
// 重新校验订单有效性、抬头、收票方式及最新报价后申请;返回费用订单时转入支付,不直接认定发票已开具。
async function Et() {
if (E.value || D.value || !O.value) return;
if (((k.value = ``), Z.value)) {
@@ -633,12 +639,14 @@ var Ce = {
E.value = !1;
}
}
// 只接受正整数形式的费用订单 ID,防止无效跳转或支付目标。
function Dt(e) {
return (
(typeof e == `string` || typeof e == `number`) &&
/^[1-9]\d*$/.test(String(e))
);
}
// 只有具有有效费用订单且处于可继续处理的支付状态,才展示对应入口。
function Ot(e) {
return (
Dt(e.invoice_order_id) &&
@@ -647,6 +655,7 @@ var Ce = {
)
);
}
// 未付款的发票费用订单打开支付,其余待审核凭证状态交给订单详情处理。
function kt(e) {
if (Ot(e)) {
if (e.order_status !== `Unpaid`) {
@@ -656,9 +665,11 @@ var Ce = {
((vt.value = e.invoice_order_id), (F.value = !0));
}
}
// 支付结束后退出申请专用路由或刷新列表,开票状态以服务端为准。
function At() {
((F.value = !1), S.value ? x.push(`/invoices`) : w());
}
// 申请弹窗关闭且没有有效草稿时,申请专用路由回到发票列表。
function jt(e) {
!e && S.value && !O.value && x.push(`/invoices`);
}
@@ -670,9 +681,11 @@ var Ce = {
`wait_create`,
`create_fail`,
]);
// 可删除状态集中列举,已开具、已寄出等终态不开放撤回。
function Nt(e) {
return Mt.has(String(e.status || ``).toLowerCase());
}
// 撤回需要状态允许且用户确认;删除后重新读取列表。
async function Pt(e) {
if (
Nt(e) &&
+7
View File
@@ -1,4 +1,7 @@
<script>
/**
* 发票详情:按查询 ID 加载发票,区分历史登记与正式电子文件;下载链接必须通过协议与字符校验。
*/
import "~/assets/styles/invoice.B6sYFYlb.css";
definePageMeta({
key: (e) => e.fullPath,
@@ -104,6 +107,7 @@ var T = {
: W[String(z.value?.status || ``).toLowerCase()] ||
String(z.value?.status || `—`),
);
// 下载地址仅允许 HTTP(S) 或站内绝对路径,拒绝反斜杠、空白控制字符和协议相对地址。
function q(e) {
return typeof e != `string` || /[\u0000-\u0020\\]/.test(e)
? ``
@@ -111,6 +115,7 @@ var T = {
? e
: ``;
}
// 从详情的候选字段中选择第一个非空值,用于兼容不同发票字段展示。
function J(...e) {
for (let t of e) {
let e = z.value?.[t];
@@ -118,6 +123,7 @@ var T = {
}
return ``;
}
// 普通发票尚无有效下载地址时单独请求文件地址;历史已开票登记不伪造下载文件。
async function Y(e) {
if (!(G.value || q(z.value?.invoice_url))) {
((H.value = !0), (U.value = ``));
@@ -138,6 +144,7 @@ var T = {
}
}
}
// 校验查询 ID 并确认响应含发票资料,再按需要获取正式文件地址。
async function X() {
((B.value = !0), (V.value = ``));
try {
+3
View File
@@ -1,4 +1,7 @@
<script>
/**
* 发票申请路由适配层:复用发票列表页,具体申请专用交互由该页根据当前路由决定。
*/
import "~/assets/styles/PageInfoNotice._16xRFrB.css";
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/invoices.t1P1GXOx.css";
+13
View File
@@ -1,4 +1,7 @@
<script>
/**
* 发票资料设置:统一维护抬头与收票地址;编辑器复制原数据,提交按新增/修改及电子/纸质地址分别组装字段。
*/
import "~/assets/styles/settings.zV3AWuRw.css";
import { toDisplayString } from "vue";
import { onMounted } from "vue";
@@ -145,6 +148,7 @@ var ue = {
M = ref([]),
N = ref(!0),
P = ref(``);
// 完整读取抬头与地址的所有分页,避免选择器仅显示第一页资料。
async function F() {
((N.value = !0), (P.value = ``));
try {
@@ -182,6 +186,7 @@ var ue = {
bank: ``,
bank_user: ``,
});
// 重置抬头草稿后回填待编辑记录,避免上次表单字段残留。
function V(e) {
((L.value = e?.id ?? null),
(z.value = ``),
@@ -205,6 +210,7 @@ var ue = {
}),
(I.value = !0));
}
// 抬头名称必填;新增与修改成功后统一重新加载资料列表。
async function We() {
if (!R.value) {
if (((z.value = ``), !B.title.trim())) {
@@ -230,6 +236,7 @@ var ue = {
}
}
}
// 删除抬头后重载列表,失败在页面保留错误提示。
async function H(e) {
try {
(await v.del(`/invoice_title/${e.id}`), await F());
@@ -249,6 +256,7 @@ var ue = {
phone: ``,
is_default: !1,
});
// 电子邮箱和纸质地址共用编辑器;打开时恢复默认字段,再复制现有资料。
function J(e) {
((W.value = e?.id ?? null),
(K.value = ``),
@@ -271,6 +279,7 @@ var ue = {
}),
(U.value = !0));
}
// 电子地址只提交邮箱,纸质地址提交收件地址与电话,避免把另一种地址的草稿字段发给接口。
async function Ge() {
if (!G.value) {
if (((K.value = ``), q.rec_type === `email` && !q.email.trim())) {
@@ -306,6 +315,7 @@ var ue = {
}
}
}
// 删除收票地址后重载资料。
async function Y(e) {
try {
(await v.del(`/invoice_address/${e.id}`), await F());
@@ -316,6 +326,7 @@ var ue = {
let X = ref(!1),
Z = ref(!1),
Q = ref(null);
// 记录待删除抬头,在确认前不发起删除。
function Ke(e) {
((Q.value = {
kind: `title`,
@@ -323,6 +334,7 @@ var ue = {
}),
(X.value = !0));
}
// 记录待删除地址,复用同一确认弹窗。
function qe(e) {
((Q.value = {
kind: `address`,
@@ -330,6 +342,7 @@ var ue = {
}),
(X.value = !0));
}
// 确认时按目标类型调用删除函数,用独立忙碌态阻止重复确认。
async function Je() {
if (Q.value && !Z.value) {
Z.value = !0;