docs: explain common, dcim and kky resource upgrades
This commit is contained in:
1 parent
5ba081550c
commit
1e9f2d786b
3 files changed
+28
No files matched your search
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// 通用模块升级及展示适配:归一化按钮、镜像、图表和配置项,并管理配置/商品升级流程。
|
||||
import "~/assets/styles/CommonUpgrade.C8sZ-ExM.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { renderList } from "vue";
|
||||
@@ -46,6 +47,7 @@ var j = (e) => (e && typeof e == `object` && !Array.isArray(e) ? e : {}),
|
||||
`rescue_system`,
|
||||
]),
|
||||
F = new Set([`on`, `off`, `reboot`, `hard_off`, `hard_reboot`, `vnc`]);
|
||||
// 兼容单项或 console/control 分组按钮;仅开放已适配动作,重复项有禁用标记时从严合并。
|
||||
function I(e, t) {
|
||||
let n = (Array.isArray(e) ? e : [e])
|
||||
.flatMap((e) => {
|
||||
@@ -89,6 +91,7 @@ function I(e, t) {
|
||||
: e,
|
||||
);
|
||||
}
|
||||
// 将配置项→系统→版本的嵌套镜像结构展开,保留版本所属 optionId 供重装接口使用。
|
||||
function L(e) {
|
||||
return (Array.isArray(e) ? e : [e]).flatMap((e) => {
|
||||
let t = j(e);
|
||||
@@ -113,6 +116,7 @@ function L(e) {
|
||||
});
|
||||
});
|
||||
}
|
||||
// 将模块提供的图表类型及下拉选项转换为统一展示结构。
|
||||
function R(e) {
|
||||
return (Array.isArray(e) ? e : []).flatMap((e) => {
|
||||
let t = j(e);
|
||||
@@ -133,6 +137,7 @@ function R(e) {
|
||||
];
|
||||
});
|
||||
}
|
||||
// 兼容多序列 value 列表与 in_bw/out_bw 列表;按首序列时间对齐,缺失采样保留 null。
|
||||
function z(e) {
|
||||
let t = j(e);
|
||||
if (!Array.isArray(t.list)) throw Error(`图表数据格式暂未适配`);
|
||||
@@ -191,6 +196,7 @@ function z(e) {
|
||||
series: l,
|
||||
};
|
||||
}
|
||||
// 当前配置按类型展示数量、级联路径或子项文本,镜像和网络标签沿用统一格式化规则。
|
||||
function B(e) {
|
||||
let t = e.unit ? ` ${e.unit}` : ``;
|
||||
if (e.option_type === `cascade`) return String(e.cascade_path || `--`) + t;
|
||||
@@ -213,6 +219,7 @@ function B(e) {
|
||||
.filter(Boolean);
|
||||
return r.length ? r.join(`、`) + t : String(e.sub_name || `--`);
|
||||
}
|
||||
// 递归展开可见级联叶子为完整路径,深度上限避免异常后台树导致无限递归。
|
||||
function V(e, t = [], n = 0) {
|
||||
return !Array.isArray(e) || n > 20
|
||||
? []
|
||||
@@ -234,6 +241,7 @@ function V(e, t = [], n = 0) {
|
||||
: [];
|
||||
});
|
||||
}
|
||||
// 归一化可升级配置;数量区间按步长对齐,隐藏选项过滤后再判定是否支持编辑。
|
||||
function H(e) {
|
||||
return Array.isArray(e)
|
||||
? e.flatMap((e) => {
|
||||
@@ -323,6 +331,7 @@ function H(e) {
|
||||
})
|
||||
: [];
|
||||
}
|
||||
// 校验表单成员、数量区间/步长和重复数量,分别生成普通与级联配置请求字段。
|
||||
function U(e, t, n) {
|
||||
let r = {},
|
||||
i = {};
|
||||
@@ -383,6 +392,7 @@ function U(e, t, n) {
|
||||
cascade_configoption: i,
|
||||
};
|
||||
}
|
||||
// 升级状态机:配置升级通用于已适配模块,跨商品升级仅由 idcsmart_common 开放。
|
||||
function W(e, t) {
|
||||
let n = useApi(),
|
||||
a = ref(`config`),
|
||||
@@ -504,6 +514,7 @@ function W(e, t) {
|
||||
function W() {
|
||||
(L++, (F.value = ``), (P.value = ``), (O.value = !1), (M.value = !1));
|
||||
}
|
||||
// 应用商品高级规则并同步联动后的表单;同步锁阻止 watch 再入递归。
|
||||
function G() {
|
||||
if (!z) {
|
||||
if (_.value.error) throw Error(_.value.error);
|
||||
@@ -517,6 +528,7 @@ function W(e, t) {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 配置升级优先使用实例当前值,换商品则使用目标默认值,并初始化周期和级联数量。
|
||||
function K() {
|
||||
let e = Array.isArray(u.value.configoptions)
|
||||
? u.value.configoptions.map(j)
|
||||
@@ -555,6 +567,7 @@ function W(e, t) {
|
||||
W(),
|
||||
G());
|
||||
}
|
||||
// 按升级模式选择配置接口,实例或模式切换后通过代次废弃旧结果。
|
||||
async function q() {
|
||||
if (!I || D.value || !e().allowed) return;
|
||||
if (!c.value) {
|
||||
@@ -589,6 +602,7 @@ function W(e, t) {
|
||||
I && t === R && (E.value = !1);
|
||||
}
|
||||
}
|
||||
// 统一构建报价/下单载荷;尚未适配含子商品组合的升级,不能只提交父商品。
|
||||
function J() {
|
||||
if (!c.value) throw Error(`此模块未开放更换商品`);
|
||||
if (_.value.error) throw Error(_.value.error);
|
||||
@@ -605,6 +619,7 @@ function W(e, t) {
|
||||
}
|
||||
return e;
|
||||
}
|
||||
// 高级规则联动完成后再记录快照;价格必须有效且非负,改动表单立即废弃报价。
|
||||
async function Y() {
|
||||
if (
|
||||
!I ||
|
||||
@@ -644,6 +659,7 @@ function W(e, t) {
|
||||
I && t === L && (O.value = !1);
|
||||
}
|
||||
}
|
||||
// 需要有效报价和用户确认;商品升级将配置包裹进 config_options,与配置升级载荷区分。
|
||||
async function X() {
|
||||
if (!I || !V.value || !M.value) return;
|
||||
let r = B.value;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// DCIM 资源升级表单:基于当前线路选择带宽、流量、IP、防御及可选硬件数量。
|
||||
import "~/assets/styles/ConfigBandwidth.CWSH1WJZ.css";
|
||||
import "~/assets/styles/DcimUpgrade.DaLApYFa.css";
|
||||
import { toDisplayString } from "vue";
|
||||
@@ -119,6 +120,7 @@ var T = {
|
||||
},
|
||||
].filter((e) => e.options.length),
|
||||
);
|
||||
// 档位既可能是离散值,也可能是区间;区间需要同时满足上下限和步长。
|
||||
function ie(e, t) {
|
||||
return (
|
||||
Number.isFinite(e) &&
|
||||
@@ -146,6 +148,7 @@ var T = {
|
||||
function Z() {
|
||||
(H++, (B.value = ``), (V.value = ``), (G = ``), (L.value = !1));
|
||||
}
|
||||
// 从当前实例恢复初值并保存基准快照,只有与基准不同的配置才需要询价。
|
||||
function ae() {
|
||||
for (let e of [`bw`, `flow`, `ip_num`, `peak_defence`])
|
||||
F[e] = Number(O.current[e] ?? 0);
|
||||
@@ -180,6 +183,7 @@ var T = {
|
||||
e === U && (I.value = !1);
|
||||
}
|
||||
}
|
||||
// 硬件数量只允许已有/可选项目,新增数量不得超剩余槽位;网络变更需匹配线路档位。
|
||||
function oe() {
|
||||
for (let e of N) {
|
||||
let t = F[`optional_${e}`],
|
||||
@@ -221,6 +225,7 @@ var T = {
|
||||
)
|
||||
throw Error(`请选择有效的${t.label}档位`);
|
||||
}
|
||||
// 询价接口使用扁平 optional_*[id] 参数,返回价格仅对当前配置快照有效。
|
||||
async function $() {
|
||||
if (O.upgradeAllowed === !1 || R.value || W || !J.value) return;
|
||||
((z.value = ``), Z());
|
||||
@@ -264,6 +269,7 @@ var T = {
|
||||
e === H && (L.value = !1);
|
||||
}
|
||||
}
|
||||
// 下单使用完整嵌套配置,并在报价、配置快照一致后把有效订单交给支付入口。
|
||||
async function se() {
|
||||
if (
|
||||
O.upgradeAllowed === !1 ||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// KKY ECS 分项升级入口:实例规格、带宽、防护、新增硬盘和已有磁盘扩容分别调用对应接口。
|
||||
import "~/assets/styles/ConfigBandwidth.CWSH1WJZ.css";
|
||||
import "~/assets/styles/KkyUpgrade.CkDmxFBM.css";
|
||||
import { toDisplayString } from "vue";
|
||||
@@ -263,6 +264,7 @@ var ue = {
|
||||
protect: Xe,
|
||||
disk: Ze,
|
||||
};
|
||||
// 各页签首次进入时按需加载规格,已尝试加载的页签不重复发起初始化请求。
|
||||
async function Y(e) {
|
||||
if (
|
||||
x.upgradeAllowed !== !1 &&
|
||||
@@ -278,6 +280,7 @@ var ue = {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 扩容配置必须匹配所选磁盘 identity;切换磁盘或页签后丢弃旧配置响应。
|
||||
async function $e(e) {
|
||||
if (J || x.upgradeAllowed === !1 || W.value) return;
|
||||
let t = ++q,
|
||||
@@ -309,6 +312,7 @@ var ue = {
|
||||
e instanceof Error ? e.message : `该磁盘暂不支持扩容`);
|
||||
}
|
||||
}
|
||||
// 根据当前页签组装请求体;新增磁盘发送列表,扩容发送类型、目标容量与唯一标识。
|
||||
function X() {
|
||||
return E.value === `ins`
|
||||
? A.value
|
||||
@@ -360,6 +364,7 @@ var ue = {
|
||||
},
|
||||
};
|
||||
}
|
||||
// 询价记录页签、实例和请求体快照,只让仍对应当前选择的结果更新界面。
|
||||
async function Z() {
|
||||
if (x.upgradeAllowed === !1) return;
|
||||
let e = ++K,
|
||||
@@ -394,6 +399,7 @@ var ue = {
|
||||
bandwidth: `bandwidth_order`,
|
||||
protect: `protect_upgrade_order`,
|
||||
};
|
||||
// 按升级种类选择订单接口,返回后由父级统一处理支付。
|
||||
async function tt() {
|
||||
if (x.upgradeAllowed === !1 || W.value || U.value || !H.value)
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user