docs: annotate all shared frontend modules in Chinese

This commit is contained in:
cieanyau committed 2026-11-06 00:30:15 +08:00
1 parent 2be21c1c62
commit 408f8e5c98
55 files changed
+349

No files matched your search

+11
View File
@@ -1,3 +1,7 @@
/**
* 列表页面共用加载器:分页、同请求去重、身份隔离、缓存首屏与刷新失败保留旧结果。
* 缓存来自统一 auth 模块;旧查询/旧账号/已卸载组件的响应不能覆盖当前列表。
*/
import { onMounted } from "vue";
import { watch } from "vue";
import { onScopeDispose } from "vue";
@@ -8,6 +12,7 @@ import { useApi } from "~/lib/auth.js";
import { writeApiCache } from "~/lib/auth.js";
import { readApiCache } from "~/lib/auth.js";
import { clearApiCache } from "~/lib/auth.js";
/** u 为接口路径,d 可提供查询参数、外部 loader、行键和缓存命名空间等现有列表选项。 */
function u(u, d = {}) {
let f = useApi(),
p =
@@ -26,6 +31,7 @@ function u(u, d = {}) {
w = !0,
T = !1,
E = null;
// 身份变更或查询构造失败时统一作废在途序号,清理可见数据,防止跨账号残留。
function D() {
(S++,
(h.value = []),
@@ -50,6 +56,7 @@ function u(u, d = {}) {
onScopeDispose(() => {
((T = !0), S++, (E = null));
}));
// 优先使用业务行键,否则使用 id;没有稳定键的行不做对象复用。
function O(e) {
if (d.rowKey) return d.rowKey(e);
if (
@@ -60,6 +67,7 @@ function u(u, d = {}) {
)
return e.id;
}
/** 构造查询快照、读取一次初始缓存,再发真实请求刷新;同参数同身份共享 Promise。 */
function k() {
if (T) return Promise.resolve();
let e,
@@ -103,6 +111,7 @@ function u(u, d = {}) {
try {
let r = d.loader ? await d.loader(e) : await f.get(u, e);
if (!o()) return;
// 复用同 id 的行对象以保留 UI 引用,但删除新响应已不存在的字段,避免旧值残留。
let i = new Map(
h.value.flatMap((e) => {
let t = O(e);
@@ -133,6 +142,7 @@ function u(u, d = {}) {
A,
));
} catch (e) {
// 只有同一查询已拥有结果时才可保留旧列表;新筛选失败不能继续展示上一查询。
if (!o()) return;
((v.value = e instanceof Error ? e.message : `加载失败`),
(!m || !l) && ((h.value = []), (g.value = 0), (y.value = !1)));
@@ -151,6 +161,7 @@ function u(u, d = {}) {
j
);
}
// PrimeVue 页码从 0 开始,后端接口从 1 开始;切筛选的 reload 则回到第一页。
function A(e) {
((b.value = e.page + 1), (x.value = e.rows), k());
}