docs: annotate remaining routes layouts and view boundaries

This commit is contained in:
cieanyau committed 2026-11-06 00:34:17 +08:00
1 parent 408f8e5c98
commit ab22d406c0
56 files changed
+403

No files matched your search

+27
View File
@@ -1,4 +1,7 @@
<script>
/**
* 安全组:组列表、出入站规则与实例关联共用页面;主列表、规则、已关联和可关联主机分别用请求代次隔离,批量关联保留失败目标供重试。
*/
import "~/assets/styles/PageInfoNotice._16xRFrB.css";
import "~/assets/styles/groups.Buw8nwl1.css";
definePageMeta({
@@ -244,6 +247,7 @@ var Te = {
},
],
k = ref([]);
// 常用端口快捷选择仅生成待确认的文本规则;默认 IP 为全网范围,生成并不立即下发。
function dt() {
$.value = ut
.filter((e) => k.value.includes(e.port))
@@ -253,9 +257,11 @@ var Te = {
).join(`
`);
}
// 打开新增规则弹窗,方向取当前入站/出站标签。
function ft() {
((R.value = null), (L.direction = D.value), (O.value = !0));
}
// 把已选规则复制到草稿后编辑,避免未保存时改动列表。
function pt(e) {
((R.value = e),
Object.assign(L, {
@@ -293,6 +299,7 @@ var Te = {
}),
R = ref(null),
bt = computed(() => ht.value.filter((e) => e.direction === D.value));
// 按关键词分页查询安全组,组件离开或新请求发起后废弃旧响应。
async function z() {
let e = ++x;
((st.value = !0), (T.value = ``));
@@ -313,6 +320,7 @@ var Te = {
e === x && !b && (st.value = !1);
}
}
// 新建组前清空上一次编辑目标和名称描述。
function xt() {
((j.value = null),
(M.name = ``),
@@ -320,6 +328,7 @@ var Te = {
(T.value = ``),
(A.value = !0));
}
// 编辑组时回填现有名称描述,保留原对象用于更新 ID。
function St(e) {
((j.value = e),
(M.name = e.name),
@@ -327,6 +336,7 @@ var Te = {
(T.value = ``),
(A.value = !0));
}
// 名称必填且同一时间只提交一次;新增/更新后重新读取组列表。
async function Ct() {
if (!mt.value) {
if (((T.value = ``), !M.name.trim())) {
@@ -352,6 +362,7 @@ var Te = {
}
}
}
// 删除组后刷新列表,失败保留页面错误。
async function wt(e) {
try {
(await y.del(`/security_group/${e.id}`), await z());
@@ -359,6 +370,7 @@ var Te = {
T.value = e instanceof Error ? e.message : `删除失败`;
}
}
// 进入组详情时重置规则页码、草稿与当前标签,再加载该组规则。
async function Tt(e) {
((P.value = e),
(N.value = !0),
@@ -375,6 +387,7 @@ var Te = {
}),
await B());
}
// 规则响应必须匹配组 ID 与请求代次,避免切组后展示上一组规则。
async function B() {
if (!P.value) return;
let e = ++tt,
@@ -429,6 +442,7 @@ var Te = {
G.value ||
Ot.value,
);
// 读取当前组全部关联主机用于搜索与去重,而不是只拿关联列表第一页。
async function Z() {
if (!P.value) return;
let e = P.value.id,
@@ -453,6 +467,7 @@ var Te = {
n() && (H.value = !1);
}
}
// 分页收集可用主机,失败时清空旧候选,避免沿用已失效的关联资格。
async function jt() {
let e = ++rt,
t = () => !b && e === rt;
@@ -492,6 +507,7 @@ var Te = {
value: e.id,
})),
);
// 批量提交前核对所有选择仍可关联;解析部分成功结果后保留失败 ID,刷新已关联列表及组计数。
async function Pt() {
if (!P.value || !W.value.length || X.value) return;
let e = P.value.id,
@@ -524,6 +540,7 @@ var Te = {
Ot.value = !1;
}
}
// 单主机关联仅接受当前候选项,提交后刷新关联及组列表。
async function Ft() {
if (
P.value &&
@@ -544,6 +561,7 @@ var Te = {
}
}
}
// 解除实例与组的关联后刷新状态,不在本地假定服务端已删除关系。
async function It(e) {
if (P.value && !X.value) {
((G.value = !0), (T.value = ``));
@@ -561,6 +579,7 @@ var Te = {
let Q = ref(!1),
$ = ref(``),
Lt = ref(!1);
// 每行按方向、协议、端口、IP 和可选描述解析;空行忽略,不足四列明确报格式错误。
function Rt(e) {
let t = [];
for (let n of e.split(`
@@ -580,6 +599,7 @@ var Te = {
}
return t;
}
// 批量规则先完整解析再提交,至少需要一条;成功后清空文本并刷新规则和组计数。
async function zt() {
if (!P.value || Lt.value) return;
T.value = ``;
@@ -617,6 +637,7 @@ var Te = {
watch(V, (e) => {
e === `host` && (Z(), jt());
});
// 单条规则按是否有编辑目标选择 PUT/POST;端口必填,成功后重置编辑器并刷新。
async function Vt() {
if (!yt.value) {
if (((T.value = ``), !P.value)) {
@@ -654,6 +675,7 @@ var Te = {
}
}
}
// 删除规则后同步规则列表与安全组统计。
async function Ht(e) {
try {
(await y.del(`/security_group/rule/${e.id}`), await B(), await z());
@@ -661,6 +683,7 @@ var Te = {
T.value = e instanceof Error ? e.message : `删除规则失败`;
}
}
// 把已知协议枚举转换为可读名称,未知协议保留大写标识。
function Ut(e) {
return (
{
@@ -678,12 +701,15 @@ var Te = {
function Wt(e) {
((C.value = e.page + 1), (w.value = e.rows), z());
}
// 确认搜索词后回到第一页查询组列表。
function Gt() {
((ct.value = E.value.trim()), (C.value = 1), z());
}
// 清空搜索草稿及已应用词,并恢复第一页。
function Kt() {
((E.value = ``), (ct.value = ``), (C.value = 1), z());
}
// 切换规则方向时恢复规则第一页,再按服务端方向筛选读取。
function qt(e) {
((V.value = `rule`), (D.value = e), (F.value = 1), B());
}
@@ -704,6 +730,7 @@ var Te = {
},
));
}),
// 组列表、规则详情、主机关联和批量规则各自使用独立草稿与提交锁,避免一个弹窗改变另一操作目标。
(n, r) => {
let i = button,
te = PageInfoNotice,