docs: annotate remaining routes layouts and view boundaries
This commit is contained in:
1 parent
408f8e5c98
commit
ab22d406c0
56 files changed
+403
No files matched your search
@@ -1,4 +1,7 @@
|
||||
<script>
|
||||
/**
|
||||
* 实例详情调度页:先确认主机与商品,再解析实际管理模块;统一展示数据与能力开关,云/物理/通用旧模块分别委派管理组件。权限展示不替代后端鉴权。
|
||||
*/
|
||||
import "~/assets/styles/InstanceLoadingShell.CwfiUwdU.css";
|
||||
import "~/assets/styles/FlowPacketPanel.-RJSx13z.css";
|
||||
import "~/assets/styles/InstanceServiceInfo.BftSVIeW.css";
|
||||
@@ -151,6 +154,7 @@ var M = {
|
||||
remoteConsole: !0,
|
||||
},
|
||||
};
|
||||
// 统一云实例数据、状态和磁盘访问;模块变化或作用域销毁时递增请求代次,使旧模块在途响应失效。
|
||||
function Ee(e, t, n) {
|
||||
let r = useApi(),
|
||||
i = ref(null),
|
||||
@@ -197,11 +201,13 @@ function Ee(e, t, n) {
|
||||
};
|
||||
}),
|
||||
S = () => t.value;
|
||||
// 镜像图标名经过 URL 编码后仅拼入本地固定图标目录。
|
||||
function ee(e) {
|
||||
return e
|
||||
? `/plugins/server/mf_cloud/view/assets/default_icons/${encodeURIComponent(e)}.svg`
|
||||
: ``;
|
||||
}
|
||||
// 把 mf_cloud/remf_cloud 详情转换为统一展示结构,同时保留 raw 供专用管理组件读取。
|
||||
function te(e) {
|
||||
let t = e.image ?? {},
|
||||
n = String(t.icon ?? ``);
|
||||
@@ -231,6 +237,7 @@ function Ee(e, t, n) {
|
||||
raw: e,
|
||||
};
|
||||
}
|
||||
// 从财务模块 host_data 与配置项提取实例规格;IP 去重,连接端口交给公共解析器处理。
|
||||
function C(e) {
|
||||
let t = instance_data_l(e.host_data),
|
||||
n = instance_data_i(e.config_options),
|
||||
@@ -272,6 +279,7 @@ function Ee(e, t, n) {
|
||||
raw: e,
|
||||
};
|
||||
}
|
||||
// 整理弹性云的镜像、带宽计费和安全组字段,不改变原始接口数据。
|
||||
function ne(e) {
|
||||
let t = instance_data_a(e),
|
||||
n = String(t.icon ?? ``);
|
||||
@@ -304,6 +312,7 @@ function Ee(e, t, n) {
|
||||
}
|
||||
);
|
||||
}
|
||||
// 整理 jy 系列的多种字段来源;仅选有效数值作为统一规格,保留原始详情。
|
||||
function w(e) {
|
||||
let t = instance_data_l(e.host_data),
|
||||
n = instance_data_a(e),
|
||||
@@ -352,6 +361,7 @@ function Ee(e, t, n) {
|
||||
raw: e,
|
||||
};
|
||||
}
|
||||
// 按模块读取并规范化磁盘列表;财务模块从快照/备份信息提取,明确空数组才作为无磁盘。
|
||||
async function ie(t) {
|
||||
if (t === `remf_finance`) {
|
||||
let t = !1,
|
||||
@@ -433,6 +443,7 @@ function Ee(e, t, n) {
|
||||
raw: e,
|
||||
}));
|
||||
}
|
||||
// 磁盘异步结果同时绑定模块、详情代次和磁盘请求代次,失败只更新磁盘区域。
|
||||
async function ae() {
|
||||
let e = t.value;
|
||||
if (!e || !i.value || M[e].disk === !1) return;
|
||||
@@ -450,6 +461,7 @@ function Ee(e, t, n) {
|
||||
a() && (h.value = !1);
|
||||
}
|
||||
}
|
||||
// 状态查询有独立 12 秒截止时间;结果缺少有效 rescue 标记时保留详情已有标记,不用未知状态冒充关机。
|
||||
async function T() {
|
||||
let n = S();
|
||||
if (!n) return;
|
||||
@@ -483,6 +495,7 @@ function Ee(e, t, n) {
|
||||
u() && (l.value = !1);
|
||||
}
|
||||
}
|
||||
// 并行发起状态与详情查询,按模块归一化详情后再加载磁盘;缺失连接端口时单独读取 remote_info。
|
||||
async function oe(n) {
|
||||
let a = t.value;
|
||||
if (!a) return;
|
||||
@@ -527,6 +540,7 @@ function Ee(e, t, n) {
|
||||
c() && (f.value = !1);
|
||||
}
|
||||
}
|
||||
// 先核对模块电源能力及强制操作能力,再携带可选操作密码请求,完成后重新读取状态。
|
||||
async function se(t, n = ``) {
|
||||
if (!M[S()]?.power) throw Error(`当前模块暂未开放电源管理操作`);
|
||||
if (t.startsWith(`hard_`) && !M[S()]?.hardPower)
|
||||
@@ -538,6 +552,7 @@ function Ee(e, t, n) {
|
||||
: void 0;
|
||||
(await r.post(`/${S()}/${e}/${t}`, i), await T());
|
||||
}
|
||||
// 密码重置按模块组装既有字段契约,不能把 kky 与其他模块的参数形状直接互换。
|
||||
async function ce(t, n = ``, i = ``) {
|
||||
if (!M[S()]?.passwordReset) throw Error(`当前模块暂未开放密码重置操作`);
|
||||
S() === `kky_ecs`
|
||||
@@ -587,6 +602,7 @@ var N = new Set([
|
||||
F = (e) => e === `idcsmart_common` || e === `reidcsmart_common`,
|
||||
I = (e) => e === !0 || e === 1 || e === `1` || e === `on` || e === `true`,
|
||||
L = (e) => e === !1 || e === 0 || e === `0` || e === `off` || e === `false`;
|
||||
// 从后端按钮元数据提取允许与禁止电源动作;显式禁用优先于允许,同名动作不能被另一条配置重新放开。
|
||||
function R(e) {
|
||||
let t = new Set(),
|
||||
n = new Set(),
|
||||
@@ -614,6 +630,7 @@ function R(e) {
|
||||
};
|
||||
}
|
||||
var z = (e) => R(e).allowed;
|
||||
// 按旧模块的实际权限形状计算动作集合,兼顾 dcim 授权与手工资源控制模式;未知模块不开放电源操作。
|
||||
function Oe(e, t) {
|
||||
if (F(e)) return z(t.client_button);
|
||||
if (e === `remf_finance_common`) return z(t.module_button);
|
||||
@@ -641,6 +658,7 @@ function Oe(e, t) {
|
||||
}
|
||||
return new Set();
|
||||
}
|
||||
// 旧/通用实例电源权限与状态控制器:权限元数据必须属于当前模块才能开放动作,提交期间互斥。
|
||||
function ke(e, t) {
|
||||
let n = useApi(),
|
||||
r = ref(!1),
|
||||
@@ -655,6 +673,7 @@ function ke(e, t) {
|
||||
h = 0,
|
||||
g = !1,
|
||||
_ = !1;
|
||||
// 模块重载、切换或销毁时清空权限和状态,并让已有异步结果失效。
|
||||
function v() {
|
||||
(h++,
|
||||
f++,
|
||||
@@ -667,9 +686,11 @@ function ke(e, t) {
|
||||
(i.value = ``),
|
||||
(r.value = !1));
|
||||
}
|
||||
// 只有当前模块元数据已成功加载、没有错误且动作被允许时才可提交。
|
||||
function y(e) {
|
||||
return !g && !r.value && !i.value && m === t.value && p.value.has(e);
|
||||
}
|
||||
// 刷新旧模块电源状态;状态错误独立于权限错误,不把查询失败转为已关机。
|
||||
async function b() {
|
||||
let r = t.value;
|
||||
if (g || m !== r || !N.has(r)) return;
|
||||
@@ -687,6 +708,7 @@ function ke(e, t) {
|
||||
o() && (l.value = !1);
|
||||
}
|
||||
}
|
||||
// 先重置旧权限,再读取当前模块配置;已有初始详情可复用,空响应不授予任何操作。
|
||||
async function x(a) {
|
||||
v();
|
||||
let s = t.value;
|
||||
@@ -708,6 +730,7 @@ function ke(e, t) {
|
||||
l() && (r.value = !1);
|
||||
}
|
||||
}
|
||||
// 请求前再次检查当前权限与互斥标记,响应后复查模块/代次;切换实例后要求核实操作结果。
|
||||
async function S(r, i = ``) {
|
||||
if (!y(r)) throw Error(`当前实例不支持此电源操作或权限尚未加载`);
|
||||
if (_) throw Error(`电源操作正在提交,请稍候`);
|
||||
@@ -1067,6 +1090,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
label: `返回产品列表`,
|
||||
});
|
||||
});
|
||||
// 非统一云详情模块独立读取主机 IP,使用请求序号避免旧响应覆盖。
|
||||
async function Et() {
|
||||
if (V.value) return;
|
||||
let e = ++F;
|
||||
@@ -1081,6 +1105,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
e === F && (De.value = !1);
|
||||
}
|
||||
}
|
||||
// 读取通用主机配置并把同一份响应交给权限控制器,避免两次查询得到不同权限快照。
|
||||
async function Dt(e = O) {
|
||||
let t = () => !k && e === O;
|
||||
K.reset();
|
||||
@@ -1100,6 +1125,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
(ye.value = e instanceof Error ? e.message : `主机配置加载失败`);
|
||||
}
|
||||
}
|
||||
// 主机或商品不匹配时清空所有展示与模块信息,废弃旧 IP 请求,防止混合显示不同实例。
|
||||
function Ot() {
|
||||
((w.value = null),
|
||||
(B.value = ``),
|
||||
@@ -1113,6 +1139,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
(P.value = ``),
|
||||
(De.value = !1));
|
||||
}
|
||||
// 先严格核对 /host 响应 ID 与商品,再补取实际模块;按模块组合加载详情、IP、配置和电源权限。
|
||||
async function q() {
|
||||
if (k) return;
|
||||
let e = ++O,
|
||||
@@ -1188,6 +1215,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
t() && ((T.value = !1), (D.value = !1));
|
||||
}
|
||||
}
|
||||
// 保存备注时绑定主机对象与加载代次;离页/切换后不把旧备注回填到新实例。
|
||||
async function kt() {
|
||||
let e = w.value;
|
||||
if (R.value || !e || k) return;
|
||||
@@ -1212,27 +1240,32 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
R.value = !1;
|
||||
}
|
||||
}
|
||||
// 打开备注编辑时从最新主机对象复制草稿,提交中不重新打开。
|
||||
function At() {
|
||||
w.value &&
|
||||
!R.value &&
|
||||
((z.value = ``), (I.value = w.value.notes || ``), (L.value = !0));
|
||||
}
|
||||
// 为当前实例尚未完成的原订单打开支付,使用已有订单而非再次创建。
|
||||
function jt() {
|
||||
w.value?.order_id &&
|
||||
((vt.value = w.value.order_id),
|
||||
(yt.value = String(w.value.first_payment_amount ?? ``)),
|
||||
(Oe.value = !0));
|
||||
}
|
||||
// 续费/升级等子组件返回订单后统一打开支付弹窗。
|
||||
function Mt(e) {
|
||||
((vt.value = e.order_id),
|
||||
(yt.value = String(e.amount ?? ``)),
|
||||
(Oe.value = !0));
|
||||
}
|
||||
let Nt = ref(0);
|
||||
// 操作完成后重载实例并递增刷新键,让需要重新挂载的管理区域同步更新。
|
||||
async function Pt() {
|
||||
(await q(), k || Nt.value++);
|
||||
}
|
||||
let J = ref(``);
|
||||
// 复制非空字段并短暂标识具体复制项,不在日志中输出连接资料。
|
||||
async function Ft(e, t) {
|
||||
if (e)
|
||||
try {
|
||||
@@ -1294,6 +1327,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
);
|
||||
}),
|
||||
Vt;
|
||||
// 仅在页面可见、实例 Active、无弹窗且无其他动作时刷新电源状态,避免状态查询与操作冲突。
|
||||
function Ht() {
|
||||
k ||
|
||||
D.value ||
|
||||
@@ -1314,19 +1348,23 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
Gt = !1,
|
||||
Kt = ref(``),
|
||||
qt = ref(``);
|
||||
// 成功反馈清除之前的错误;仅提示指令已下发,不保证实例已经进入最终电源状态。
|
||||
function Jt(e) {
|
||||
((qt.value = ``),
|
||||
(Kt.value = e),
|
||||
setTimeout(() => (Kt.value = ``), 4e3));
|
||||
}
|
||||
// 统一提取操作异常消息,失败与成功提示互斥。
|
||||
function Yt(e, t) {
|
||||
((Kt.value = ``), (qt.value = e instanceof Error ? e.message : t));
|
||||
}
|
||||
// 识别后端 operate_password 标记,决定是否保留确认框要求再次输入操作密码。
|
||||
function Xt(e) {
|
||||
if (!e || typeof e != `object`) return !1;
|
||||
let t = e.data;
|
||||
return !!t && typeof t == `object` && t.operate_password === 1;
|
||||
}
|
||||
// 确认电源动作快照仍匹配当前路由、主机、模块、状态和权限,防止确认期间切换目标。
|
||||
function Zt(e) {
|
||||
return (
|
||||
!Gt &&
|
||||
@@ -1340,6 +1378,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
(!G.value || K.can(e.action))
|
||||
);
|
||||
}
|
||||
// 按云/物理/旧模块分流电源动作;创建确认快照时冻结目标实例与动作,最终提交仍再校验。
|
||||
function Q(e) {
|
||||
if (U.value) {
|
||||
!T.value &&
|
||||
@@ -1375,9 +1414,11 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
};
|
||||
Zt(t) && ((Z.value = ``), (Ut.value = ``), (X.value = t));
|
||||
}
|
||||
// 无动作执行时关闭确认并清空操作密码。
|
||||
function Qt() {
|
||||
Y.value || ((X.value = null), (Z.value = ``), (Ut.value = ``));
|
||||
}
|
||||
// 路由/实例/模块/状态变化时废弃待确认动作和旧反馈,密码不跨目标复用。
|
||||
function $t() {
|
||||
((Wt += 1),
|
||||
(X.value = null),
|
||||
@@ -1392,6 +1433,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
flush: `sync`,
|
||||
},
|
||||
);
|
||||
// 确认提交前后都验证动作快照;后端要求操作密码时留在确认框重试,其他结果关闭并刷新实例。
|
||||
async function en() {
|
||||
let e = X.value;
|
||||
if (!e || Y.value || j.value) return;
|
||||
@@ -1427,6 +1469,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
t === Wt && ((Y.value = ``), (Z.value = ``));
|
||||
}
|
||||
}
|
||||
// 只有当前模块支持远控且实例 Active 才打开独立远控入口。
|
||||
function tn() {
|
||||
!D.value &&
|
||||
H.caps.value.remoteConsole &&
|
||||
@@ -1435,6 +1478,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
((qt.value = ``), remote_console_t(C, V.value));
|
||||
}
|
||||
let nn = ref(!1);
|
||||
// 打开续费弹窗,具体报价和可用周期交给续费组件处理。
|
||||
function rn() {
|
||||
((qt.value = ``), (nn.value = !0));
|
||||
}
|
||||
@@ -1537,6 +1581,7 @@ var Ae = publicAssetsURL(`/images/reference/cloud-server.png`),
|
||||
(Gt = !0),
|
||||
$t());
|
||||
}),
|
||||
// 初始骨架、加载错误与主机详情互斥展示;按实际管理模块挂载专用面板,电源确认/续费/支付弹窗使用冻结目标。
|
||||
(n, r) => {
|
||||
let a = skeleton,
|
||||
s = InstanceLoadingShell,
|
||||
|
||||
Reference in new issue
Block a user