docs: explain instance billing and renewal workflows
This commit is contained in:
1 parent
9166b1376d
commit
2ff311005e
4 files changed
+17
No files matched your search
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// 实例计费面板:串联升级、自动续费、退款/停用申请及安全验证重试。
|
||||
import "~/assets/styles/KkyUpgrade.CkDmxFBM.css";
|
||||
import "~/assets/styles/MfCloudUpgrade.N7TNG8F1.css";
|
||||
import "~/assets/styles/ConfigBandwidth.CWSH1WJZ.css";
|
||||
@@ -227,6 +228,7 @@ var Se = {
|
||||
I = ref(!1),
|
||||
L = ref(``),
|
||||
R = 0;
|
||||
// 自动续费只接受接口明确返回的 0/1,并用请求序号避免旧响应覆盖新设置。
|
||||
async function z() {
|
||||
let e = S.hostId,
|
||||
t = k,
|
||||
@@ -324,6 +326,7 @@ var Se = {
|
||||
Number(B.value?.allow_refund) === 1 &&
|
||||
(!V.value || [`Reject`, `Cancelled`].includes(V.value.status)),
|
||||
);
|
||||
// 同时读取退款规则和当前申请,决定能否申请、可选原因以及撤销入口。
|
||||
async function X() {
|
||||
let e = S.hostId,
|
||||
t = k,
|
||||
@@ -364,6 +367,7 @@ var Se = {
|
||||
(D.value = ``),
|
||||
(H.value = !0));
|
||||
}
|
||||
// 按后台要求提交自定义原因或原因 ID;遇到安全挑战时保留请求等待验证。
|
||||
async function ut(e) {
|
||||
if (W.value || G.value || !Y.value) return;
|
||||
let t = S.hostId,
|
||||
@@ -411,6 +415,7 @@ var Se = {
|
||||
A(t, n) && (W.value = !1);
|
||||
}
|
||||
}
|
||||
// 将安全验证字段合入原申请重试;再次收到挑战不能视为申请成功。
|
||||
async function dt(e) {
|
||||
if (!K.value || W.value) return;
|
||||
let t = {
|
||||
@@ -461,6 +466,7 @@ var Se = {
|
||||
bw: S.info.bw,
|
||||
protect: S.info.protect,
|
||||
}));
|
||||
// 实例切换后使旧请求失效,并重新加载该实例的计费、退款与优惠码状态。
|
||||
function mt() {
|
||||
(k++,
|
||||
(F.value = null),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// 管理按需/预付费转换及自动释放计划;可用操作取决于后台明确返回的能力与实例状态。
|
||||
import "~/assets/styles/InstanceOnDemand.okGWwgIJ.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { onBeforeUnmount } from "vue";
|
||||
@@ -146,6 +147,7 @@ var oe = {
|
||||
Y === q() &&
|
||||
(E.value ? !!X.value : !!B.value),
|
||||
);
|
||||
// 实例、计费模式或能力变化时关闭弹窗并作废报价,防止跨模式误提交。
|
||||
function Q() {
|
||||
(G++,
|
||||
(Y = ``),
|
||||
@@ -162,6 +164,7 @@ var oe = {
|
||||
onBeforeUnmount(() => {
|
||||
((K = !0), Q());
|
||||
}));
|
||||
// 两种转换方向的报价结构不同,分别校验周期选项或按需/保留时间价格。
|
||||
async function $() {
|
||||
if (!A.value || F.value) return;
|
||||
((N.value = !0),
|
||||
@@ -209,6 +212,7 @@ var oe = {
|
||||
e === G && !K && (P.value = !1);
|
||||
}
|
||||
}
|
||||
// 仅使用当前身份快照下的报价提交;产生订单时把订单交给父级支付入口。
|
||||
async function me() {
|
||||
if (!Z.value) return;
|
||||
((F.value = !0), (I.value = ``));
|
||||
@@ -278,6 +282,7 @@ var oe = {
|
||||
(I.value = ``),
|
||||
(V.value = !0));
|
||||
}
|
||||
// 自动释放可能删除实例,必须明确勾选知情确认;时间以秒提交,0 表示取消计划。
|
||||
async function _e() {
|
||||
if (!j.value || F.value || !V.value || !U.value) return;
|
||||
let e = H.value ? Math.floor(H.value.getTime() / 1e3) : 0;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// 续费弹窗以实例和优惠码快照绑定报价,避免使用已过期的周期价格提交。
|
||||
import "~/assets/styles/InstanceRenewDialog.BHDAL6d3.css";
|
||||
import { toDisplayString } from "vue";
|
||||
import { useId } from "vue";
|
||||
@@ -133,6 +134,7 @@ var ue = {
|
||||
),
|
||||
be = computed(() => J.value?.price ?? ``),
|
||||
Z = computed(() => Number(J.value?.client_level_discount ?? 0));
|
||||
// 获取并规范化周期报价;弹窗关闭、实例变化或优惠码变化后丢弃旧结果。
|
||||
async function Q() {
|
||||
let e = ++K,
|
||||
t = N.hostId,
|
||||
@@ -190,6 +192,7 @@ var ue = {
|
||||
onBeforeUnmount(() => {
|
||||
(K++, (R.value = !1));
|
||||
}));
|
||||
// 优惠码只有报价成功且后台确认可用才生效,否则恢复原优惠码重新报价。
|
||||
async function $() {
|
||||
let e = W.value.trim();
|
||||
if (!e || R.value || z.value) return;
|
||||
@@ -212,6 +215,7 @@ var ue = {
|
||||
async function xe() {
|
||||
R.value || z.value || ((U.value = []), await Q());
|
||||
}
|
||||
// 仅提交当前有效报价对应的周期和优惠码;接口成功后通知父级刷新支付流程。
|
||||
async function Se() {
|
||||
if (X.value) {
|
||||
((z.value = !0), (H.value = ``), (I.value = ``));
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script>
|
||||
// 实例服务概览:统一展示状态、配置与计费信息,并为符合条件的欠费实例提供续费入口。
|
||||
import "~/assets/styles/FlowPacketPanel.-RJSx13z.css";
|
||||
import "~/assets/styles/InstanceServiceInfo.BftSVIeW.css";
|
||||
import { toDisplayString } from "vue";
|
||||
@@ -112,6 +113,7 @@ var N = defineAsyncComponent(() =>
|
||||
W.value = !1;
|
||||
});
|
||||
let K = ref(!1),
|
||||
// 兼容模块详情与主机附加字段的结构,密码默认脱敏后再生成明细行。
|
||||
q = computed(() => {
|
||||
let e = b.info ?? {},
|
||||
t = instance_data_l(e.raw ?? e),
|
||||
|
||||
Reference in new issue
Block a user