docs: annotate funds, backups and loading states

This commit is contained in:
cieanyau committed 2026-11-06 00:37:46 +08:00
1 parent 179c6febf0
commit 74e94730e0
8 files changed
+24

No files matched your search

+9
View File
@@ -1,4 +1,5 @@
<script> <script>
// 统一备份/快照面板,兼容云模块与财务模块的列表格式、磁盘来源及数量额度升级。
import "~/assets/styles/MfCloudBackupPanel.BTlEe-fy.css"; import "~/assets/styles/MfCloudBackupPanel.BTlEe-fy.css";
import { toDisplayString } from "vue"; import { toDisplayString } from "vue";
import { onMounted } from "vue"; import { onMounted } from "vue";
@@ -201,6 +202,7 @@ var Se = {
function tt() { function tt() {
et &&= (clearTimeout(et), null); et &&= (clearTimeout(et), null);
} }
// 列表中仍有未完成任务时每两秒复查;卸载时停止调度并使请求失效。
function nt() { function nt() {
(tt(), (tt(),
!H && !H &&
@@ -216,6 +218,7 @@ var Se = {
size: e.size, size: e.size,
})); }));
} }
// 规范化历史字段及任务状态;财务模块需另读支持标记、额度和可选磁盘。
function it(e) { function it(e) {
let t = instance_data_l(e), let t = instance_data_l(e),
n = [`list`, v.kind, `${v.kind}s`].find((e) => n = [`list`, v.kind, `${v.kind}s`].find((e) =>
@@ -287,6 +290,7 @@ var Se = {
e === B && (E.value = !1); e === B && (E.value = !1);
} }
} }
// 打开创建表单前重新确认额度并取得磁盘,不能使用其他实例留下的磁盘选项。
async function at() { async function at() {
if (Qe.value) return; if (Qe.value) return;
let e = ++V, let e = ++V,
@@ -327,6 +331,7 @@ var Se = {
e === V && (Ye.value = !1); e === V && (Ye.value = !1);
} }
} }
// 创建接口只代表任务已提交,随后刷新列表跟踪状态,不直接宣称备份已完成。
async function ot() { async function ot() {
if (!O.value) { if (!O.value) {
if (!P.name.trim()) { if (!P.name.trim()) {
@@ -359,6 +364,7 @@ var Se = {
} }
} }
} }
// 还原使用已确认的目标记录,并按 backup/snapshot 类型传递对应 ID 字段。
async function st() { async function st() {
let e = F.value; let e = F.value;
if (e) { if (e) {
@@ -478,6 +484,7 @@ var Se = {
watch($, gt, { watch($, gt, {
flush: `sync`, flush: `sync`,
}); });
// 额度升级规格来自商品订单页;空间计费或禁止升级时不提供数量升级入口。
async function _t() { async function _t() {
let e = ++X; let e = ++X;
if ( if (
@@ -531,6 +538,7 @@ var Se = {
(G.value = !0), (G.value = !0),
await yt()); await yt());
} }
// 报价绑定实例、类型、当前数量及目标额度,任一条件变化都会废弃旧报价。
async function yt() { async function yt() {
if ( if (
(gt(), (gt(),
@@ -556,6 +564,7 @@ var Se = {
!H && e === U && (lt.value = !1); !H && e === U && (lt.value = !1);
} }
} }
// 仅提交有效快照下的额度订单,校验订单 ID 后再交给父级支付流程。
async function bt() { async function bt() {
if (!ht.value || O.value || H) return; if (!ht.value || O.value || H) return;
let e = $.value, let e = $.value,
+2
View File
@@ -1,4 +1,5 @@
<script> <script>
// 余额充值分为创建充值订单和渠道支付两步;支付成功事件再通知父级更新余额。
import "~/assets/styles/PaymentDialog.BNFKQF1U.css"; import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/RechargeDialog.DpsMly4r.css"; import "~/assets/styles/RechargeDialog.DpsMly4r.css";
import { toDisplayString } from "vue"; import { toDisplayString } from "vue";
@@ -58,6 +59,7 @@ var E = {
I = ref(!1), I = ref(!1),
L = ref(null), L = ref(null),
R = ref(``); R = ref(``);
// 创建订单后保存订单 ID 与金额,关闭金额表单并打开通用支付弹窗。
async function z() { async function z() {
if (!P.value) { if (!P.value) {
if (((F.value = ``), !N.value || N.value <= 0)) { if (((F.value = ``), !N.value || N.value <= 0)) {
+5
View File
@@ -1,4 +1,5 @@
<script> <script>
// 提现表单共用余额与推荐奖励两个场景,规则、手续费和可提现余额均按场景校验。
import "~/assets/styles/WithdrawDialog.ks0wdKEK.css"; import "~/assets/styles/WithdrawDialog.ks0wdKEK.css";
import { toDisplayString } from "vue"; import { toDisplayString } from "vue";
import { useId } from "vue"; import { useId } from "vue";
@@ -49,6 +50,7 @@ function w(e, t = ``) {
? C(e) ? C(e)
: e?.status === 1 || e?.status === `1` || e?.status === !0; : e?.status === 1 || e?.status === `1` || e?.status === !0;
} }
// 金额最多两位小数,先转为安全整数“分”,避免用浮点金额直接比较限额。
function T(e) { function T(e) {
if (typeof e != `string` && typeof e != `number`) return null; if (typeof e != `string` && typeof e != `number`) return null;
let t = String(e).trim(); let t = String(e).trim();
@@ -57,6 +59,7 @@ function T(e) {
i = Number(n) * 100 + Number(r.padEnd(2, `0`)); i = Number(n) * 100 + Number(r.padEnd(2, `0`));
return Number.isSafeInteger(i) ? i : null; return Number.isSafeInteger(i) ? i : null;
} }
// 百分比允许六位小数,用 BigInt 计算手续费并向下取整到分。
function E(e, t) { function E(e, t) {
let n = String(t ?? ``).trim(); let n = String(t ?? ``).trim();
if (!/^\d+(?:\.\d{1,6})?$/.test(n) || Number(n) > 100) return null; if (!/^\d+(?:\.\d{1,6})?$/.test(n) || Number(n) > 100) return null;
@@ -221,6 +224,7 @@ var ce = {
notes: ``, notes: ``,
}); });
} }
// 加载可用渠道及规则;奖励场景额外读取奖励专属限额和手续费,代次隔离旧响应。
async function $() { async function $() {
if (!G || !x.value || V.value) return; if (!G || !x.value || V.value) return;
let e = ++W, let e = ++W,
@@ -292,6 +296,7 @@ var ce = {
G && e === W && (V.value = !1); G && e === W && (V.value = !1);
} }
} }
// 提交前重新校验渠道、金额区间、可用余额和收款账号,只发送当前渠道需要的字段。
async function Oe() { async function Oe() {
if (!G || !x.value || H.value || V.value || !Q(B.value)) return; if (!G || !x.value || H.value || V.value || !Q(B.value)) return;
let e = B.value; let e = B.value;
@@ -1,4 +1,5 @@
<script> <script>
// 为 mf_cloud/remf_cloud 的 Windows 实例提供 RDP 文件下载,其他模块或镜像不启用。
import "~/assets/styles/CloudAccessExtras.CnBJlFAZ.css"; import "~/assets/styles/CloudAccessExtras.CnBJlFAZ.css";
import { toDisplayString } from "vue"; import { toDisplayString } from "vue";
import { onBeforeUnmount } from "vue"; import { onBeforeUnmount } from "vue";
@@ -53,6 +54,7 @@ var y = {
D = ref(``), D = ref(``),
O = 0, O = 0,
k = !1; k = !1;
// 将接口文本转成临时下载链接,净化文件名并释放 Blob URL;实例变更后忽略旧响应。
async function A() { async function A() {
if (!w.value || !T.value || E.value || k) return; if (!w.value || !T.value || E.value || k) return;
let e = O; let e = O;
@@ -1,4 +1,5 @@
<script> <script>
// 查询 DCIM 重装任务进度;有任务时有限轮询,实例或刷新版本变化后重新开始。
import "~/assets/styles/DcimReinstallStatus.CuXeXmZ3.css"; import "~/assets/styles/DcimReinstallStatus.CuXeXmZ3.css";
import { toDisplayString } from "vue"; import { toDisplayString } from "vue";
import { onMounted } from "vue"; import { onMounted } from "vue";
@@ -42,6 +43,7 @@ var m = {
C = !1, C = !1,
w = 0, w = 0,
T; T;
// 每十秒调度;页面隐藏或存在弹窗时暂缓查询,减少后台流量及界面干扰。
function E() { function E() {
T = setTimeout(() => { T = setTimeout(() => {
if (!C) { if (!C) {
@@ -56,6 +58,7 @@ var m = {
} }
}, 1e4); }, 1e4);
} }
// 仅接受 task_type 有效的任务数组,发现进行中任务后最多推进 60 轮查询。
async function D(e = !0) { async function D(e = !0) {
if (v.value || C) return; if (v.value || C) return;
(clearTimeout(T), e && (w = 0)); (clearTimeout(T), e && (w = 0));
@@ -1,4 +1,5 @@
<script> <script>
// 实例详情加载占位:保持页签与卡片布局,用 aria-busy 告知辅助技术正在加载。
import "~/assets/styles/InstanceLoadingShell.CwfiUwdU.css"; import "~/assets/styles/InstanceLoadingShell.CwfiUwdU.css";
import { renderList } from "vue"; import { renderList } from "vue";
import { normalizeClass } from "vue"; import { normalizeClass } from "vue";
@@ -1,4 +1,5 @@
<script> <script>
// 监控加载占位按模块展示一张 DCIM 图或四张云监控图,不触发任何监控请求。
import "~/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css"; import "~/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css";
import { renderList } from "vue"; import { renderList } from "vue";
import { normalizeClass } from "vue"; import { normalizeClass } from "vue";
@@ -1,4 +1,5 @@
<script> <script>
// 优先展示调用方已归一化的状态,否则结合电源状态与生命周期生成统一状态标签。
import { createBlock } from "vue"; import { createBlock } from "vue";
import { computed } from "vue"; import { computed } from "vue";
import { unref } from "vue"; import { unref } from "vue";