3321 lines
177 KiB
Vue
3321 lines
177 KiB
Vue
<script>
|
||
import "~/assets/styles/ConfigBandwidth.CWSH1WJZ.css";
|
||
import "~/assets/styles/DcimUpgrade.DaLApYFa.css";
|
||
import "~/assets/styles/DcimReinstallStatus.CuXeXmZ3.css";
|
||
import "~/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css";
|
||
import "~/assets/styles/InstanceLoadingShell.CwfiUwdU.css";
|
||
import "~/assets/styles/FlowPacketPanel.-RJSx13z.css";
|
||
import "~/assets/styles/InstanceServiceInfo.BftSVIeW.css";
|
||
import "~/assets/styles/GeetestField.DiieTibK.css";
|
||
import "~/assets/styles/CaptchaField.BSN3ZbsD.css";
|
||
import "~/assets/styles/InstanceSmsCode.CsITfIEU.css";
|
||
import "~/assets/styles/DcimActions.Da2op5wy.css";
|
||
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
|
||
import "~/assets/styles/OsIcon.CAi4Iz2S.css";
|
||
import "~/assets/styles/DcimManage.BlqFeSOi.css";
|
||
import { toDisplayString } from "vue";
|
||
import { renderList } from "vue";
|
||
import { onMounted } from "vue";
|
||
import { onBeforeUnmount } from "vue";
|
||
import { mergeModels } from "vue";
|
||
import { useModel } from "vue";
|
||
import { watch } from "vue";
|
||
import { Suspense } from "vue";
|
||
import { defineAsyncComponent } from "vue";
|
||
import { createBlock } from "vue";
|
||
import { ref } from "vue";
|
||
import { withCtx } from "vue";
|
||
import { createCommentVNode } from "vue";
|
||
import { computed } from "vue";
|
||
import { isRef } from "vue";
|
||
import { createElementBlock } from "vue";
|
||
import { Fragment } from "vue";
|
||
import { createElementVNode } from "vue";
|
||
import { createTextVNode } from "vue";
|
||
import { unref } from "vue";
|
||
import { defineComponent } from "vue";
|
||
import { createVNode } from "vue";
|
||
import { openBlock } from "vue";
|
||
import { publicAssetsURL } from "#internal/nuxt/paths";
|
||
import { NuxtLink } from "#components";
|
||
import { loadModule } from "~/utils/load-module.js";
|
||
import { useApi } from "~/lib/auth.js";
|
||
import dialog from "primevue/dialog";
|
||
import button from "primevue/button";
|
||
import { t as _plugin_vue_export_helper_t } from "~/lib/_plugin-vue_export-helper.js";
|
||
import message from "primevue/message";
|
||
import { r as dict_r } from "~/lib/dict.js";
|
||
import datatable from "primevue/datatable";
|
||
import paginator from "primevue/paginator";
|
||
import column from "primevue/column";
|
||
import OsIcon from "~/components/OsIcon.vue";
|
||
import OperationNotice from "~/components/OperationNotice.vue";
|
||
import PaymentDialog from "~/components/PaymentDialog.vue";
|
||
import skeleton from "primevue/skeleton";
|
||
import { t as os_name_t } from "~/lib/os-name.js";
|
||
import { n as configuration_display_n } from "~/lib/configuration-display.js";
|
||
import DcimActions from "~/components/instance/DcimActions.vue";
|
||
import InstanceServiceInfo from "~/components/instance/InstanceServiceInfo.vue";
|
||
import InstanceLoadingShell from "~/components/instance/InstanceLoadingShell.vue";
|
||
import InstanceStatusTag from "~/components/instance/InstanceStatusTag.vue";
|
||
import InstanceMonitorSkeleton from "~/components/instance/InstanceMonitorSkeleton.vue";
|
||
import DcimReinstallStatus from "~/components/instance/DcimReinstallStatus.vue";
|
||
import DcimUpgrade from "~/components/instance/DcimUpgrade.vue";
|
||
import tabs from "primevue/tabs";
|
||
import tabpanels from "primevue/tabpanels";
|
||
import tabpanel from "primevue/tabpanel";
|
||
import progressbar from "primevue/progressbar";
|
||
import tablist from "primevue/tablist";
|
||
import tab from "primevue/tab";
|
||
function Ee(e, t) {
|
||
let n = useApi(),
|
||
i = ref(null),
|
||
a = ref(null),
|
||
s = ref(null),
|
||
c = ref(``),
|
||
l = ref(``),
|
||
d = ref(!1),
|
||
f = ref(``),
|
||
m = ref(``),
|
||
h = ref(``),
|
||
g = ref(``),
|
||
_ = ref(!1),
|
||
v = ref(!1),
|
||
y = ref(!1),
|
||
b = 0,
|
||
x = 0,
|
||
S = !1;
|
||
function C() {
|
||
(b++,
|
||
x++,
|
||
(i.value = null),
|
||
(a.value = null),
|
||
(s.value = null),
|
||
(c.value = ``),
|
||
(l.value = ``),
|
||
(f.value = m.value = h.value = g.value = ``),
|
||
(d.value = !1),
|
||
(_.value = v.value = y.value = !1));
|
||
}
|
||
async function ee() {
|
||
let r = t.value;
|
||
if (!r || !e || S) return;
|
||
let i = ++x,
|
||
a = b,
|
||
o = () => !S && i === x && a === b && t.value === r;
|
||
y.value = !0;
|
||
try {
|
||
let t = await n.get(`/${r}/${e}/status`, void 0, !1, {
|
||
timeoutMs: 12e3,
|
||
});
|
||
if (!o()) return;
|
||
((c.value = typeof t?.status == `string` ? t.status : ``),
|
||
(l.value = t?.desc || ``),
|
||
(g.value = c.value ? `` : `电源状态暂不可用`));
|
||
} catch (e) {
|
||
o() && ((c.value = ``), (g.value = E(e, `电源状态加载失败`)));
|
||
} finally {
|
||
o() && (y.value = !1);
|
||
}
|
||
}
|
||
async function w() {
|
||
let r = t.value;
|
||
if (!r || !e || S) {
|
||
C();
|
||
return;
|
||
}
|
||
let o = ++b;
|
||
f.value = m.value = h.value = g.value = ``;
|
||
let l = () => !S && o === b && t.value === r;
|
||
d.value = !0;
|
||
let u = `/${r}/${e}`,
|
||
p = n.get(u);
|
||
async function y(e, t, r, i, a) {
|
||
t.value = !0;
|
||
try {
|
||
let t = await n.get(e);
|
||
l() && a(t);
|
||
} catch (e) {
|
||
l() && (r.value = E(e, i));
|
||
} finally {
|
||
l() && (t.value = !1);
|
||
}
|
||
}
|
||
(y(`${u}/remote_info`, _, m, `远程访问信息加载失败`, (e) => {
|
||
a.value = e;
|
||
}),
|
||
y(`${u}/flow`, v, h, `流量信息加载失败`, (e) => {
|
||
s.value = e;
|
||
}),
|
||
ee());
|
||
try {
|
||
let e = await p;
|
||
if (!l()) return;
|
||
if (!e || typeof e != `object` || Array.isArray(e))
|
||
throw Error(`物理实例信息格式无效`);
|
||
((i.value = e), (c.value ||= e.power_status || ``));
|
||
} catch (e) {
|
||
l() && (f.value = E(e, `物理实例信息加载失败`));
|
||
} finally {
|
||
l() && (d.value = !1);
|
||
}
|
||
}
|
||
function E(e, t) {
|
||
return e instanceof Error ? e.message : t;
|
||
}
|
||
return (
|
||
watch(t, C, {
|
||
flush: `sync`,
|
||
}),
|
||
onBeforeUnmount(() => {
|
||
((S = !0), C());
|
||
}),
|
||
{
|
||
info: i,
|
||
remote: a,
|
||
flow: s,
|
||
powerStatus: c,
|
||
powerDescription: l,
|
||
loading: d,
|
||
error: f,
|
||
remoteError: m,
|
||
flowError: h,
|
||
statusError: g,
|
||
remoteLoading: _,
|
||
flowLoading: v,
|
||
statusLoading: y,
|
||
canControl: computed(
|
||
() =>
|
||
!d.value &&
|
||
!f.value &&
|
||
!!i.value &&
|
||
(Number(i.value.config?.manual_resource) !== 1 ||
|
||
(!!i.value.config?.manual_resource_control_mode &&
|
||
i.value.config.manual_resource_control_mode !== `not_support`)),
|
||
),
|
||
region: computed(() =>
|
||
[
|
||
i.value?.data_center?.country,
|
||
i.value?.data_center?.city,
|
||
i.value?.data_center?.area,
|
||
i.value?.line?.name,
|
||
]
|
||
.filter(Boolean)
|
||
.join(` · `),
|
||
),
|
||
load: w,
|
||
loadStatus: ee,
|
||
}
|
||
);
|
||
}
|
||
var De = publicAssetsURL(`/images/reference/firewall.png`),
|
||
Oe = defineAsyncComponent(() =>
|
||
loadModule(
|
||
() =>
|
||
import("~/components/instance/DcimMonitor.vue").then(
|
||
(e) => e.default || e,
|
||
),
|
||
[],
|
||
import.meta.url,
|
||
),
|
||
),
|
||
ke = defineAsyncComponent(() =>
|
||
loadModule(
|
||
() =>
|
||
import("~/components/instance/DcimDefence.vue").then(
|
||
(e) => e.default || e,
|
||
),
|
||
[],
|
||
import.meta.url,
|
||
),
|
||
),
|
||
Ae = defineAsyncComponent(() =>
|
||
loadModule(
|
||
() =>
|
||
import("~/components/instance/DcimDomains.vue").then(
|
||
(e) => e.default || e,
|
||
),
|
||
[],
|
||
import.meta.url,
|
||
),
|
||
),
|
||
je = defineAsyncComponent(() =>
|
||
loadModule(
|
||
() =>
|
||
import("~/components/instance/DcimBilling.vue").then(
|
||
(e) => e.default || e,
|
||
),
|
||
[],
|
||
import.meta.url,
|
||
),
|
||
),
|
||
Me = defineAsyncComponent(() =>
|
||
loadModule(
|
||
() =>
|
||
import("~/components/mfcloud/MfCloudLogs.vue").then(
|
||
(e) => e.default || e,
|
||
),
|
||
[],
|
||
import.meta.url,
|
||
),
|
||
),
|
||
Ne = {
|
||
class: `dcim-manage`,
|
||
},
|
||
Pe = {
|
||
key: 3,
|
||
class: `load-failure`,
|
||
},
|
||
Fe = {
|
||
key: 0,
|
||
class: `overview`,
|
||
},
|
||
Ie = {
|
||
class: `stack`,
|
||
},
|
||
Le = {
|
||
class: `card flow-card`,
|
||
},
|
||
Re = {
|
||
key: 0,
|
||
class: `inline-error`,
|
||
},
|
||
ze = {
|
||
class: `flow-used`,
|
||
},
|
||
Be = {
|
||
class: `compact-rows`,
|
||
},
|
||
Ve = {
|
||
key: 2,
|
||
class: `muted`,
|
||
role: `status`,
|
||
},
|
||
He = {
|
||
key: 3,
|
||
class: `muted`,
|
||
},
|
||
Ue = {
|
||
class: `card`,
|
||
},
|
||
We = {
|
||
class: `resource-list`,
|
||
},
|
||
Ge = {
|
||
key: 0,
|
||
},
|
||
Ke = {
|
||
key: 0,
|
||
},
|
||
qe = {
|
||
class: `stack`,
|
||
},
|
||
Je = {
|
||
class: `card`,
|
||
},
|
||
Ye = {
|
||
class: `os`,
|
||
},
|
||
Xe = {
|
||
class: `compact-rows`,
|
||
},
|
||
Ze = {
|
||
class: `mono`,
|
||
},
|
||
Qe = {
|
||
class: `mono`,
|
||
},
|
||
$e = {
|
||
key: 0,
|
||
class: `muted`,
|
||
},
|
||
et = {
|
||
class: `quick-actions access-quick`,
|
||
},
|
||
tt = {
|
||
class: `card protection-card`,
|
||
},
|
||
nt = {
|
||
class: `protection-body`,
|
||
},
|
||
rt = {
|
||
class: `card`,
|
||
},
|
||
it = {
|
||
class: `help-links`,
|
||
},
|
||
at = {
|
||
class: `stack`,
|
||
},
|
||
ot = {
|
||
class: `card`,
|
||
},
|
||
st = {
|
||
class: `compact-rows`,
|
||
},
|
||
ct = {
|
||
class: `card network-card`,
|
||
},
|
||
lt = {
|
||
class: `compact-rows`,
|
||
},
|
||
ut = {
|
||
key: 0,
|
||
},
|
||
dt = {
|
||
class: `mono`,
|
||
},
|
||
ft = {
|
||
class: `compact-monitor-slot`,
|
||
},
|
||
pt = {
|
||
key: 0,
|
||
class: `detail-content access-detail`,
|
||
},
|
||
mt = {
|
||
class: `rows`,
|
||
},
|
||
ht = {
|
||
class: `mono`,
|
||
},
|
||
gt = {
|
||
key: 0,
|
||
},
|
||
_t = {
|
||
class: `stacked-value`,
|
||
},
|
||
vt = {
|
||
class: `password-line`,
|
||
},
|
||
yt = {
|
||
class: `rows`,
|
||
},
|
||
bt = {
|
||
class: `stacked-value`,
|
||
},
|
||
xt = {
|
||
class: `inline-actions`,
|
||
},
|
||
St = {
|
||
class: `rows`,
|
||
},
|
||
Ct = {
|
||
class: `stacked-value`,
|
||
},
|
||
wt = {
|
||
class: `stacked-value`,
|
||
},
|
||
Tt = {
|
||
key: 0,
|
||
class: `detail-content`,
|
||
},
|
||
Et = {
|
||
class: `muted`,
|
||
},
|
||
Dt = {
|
||
class: `rows`,
|
||
},
|
||
Ot = {
|
||
key: 0,
|
||
},
|
||
kt = {
|
||
class: `stacked-value`,
|
||
},
|
||
At = {
|
||
class: `ip-table-cell`,
|
||
},
|
||
jt = {
|
||
class: `empty`,
|
||
},
|
||
Mt = {
|
||
key: 1,
|
||
class: `rows`,
|
||
},
|
||
Nt = {
|
||
class: `stacked-value`,
|
||
},
|
||
Pt = {
|
||
class: `flow-used`,
|
||
},
|
||
Ft = {
|
||
key: 0,
|
||
class: `detail-content`,
|
||
},
|
||
It = {
|
||
key: 0,
|
||
class: `detail-content`,
|
||
},
|
||
Lt = {
|
||
class: `detail-content`,
|
||
},
|
||
O = Object.assign(
|
||
_plugin_vue_export_helper_t(
|
||
defineComponent({
|
||
__name: `DcimManage`,
|
||
props: mergeModels(
|
||
{
|
||
hostId: {},
|
||
productId: {},
|
||
host: {},
|
||
module: {},
|
||
productState: {},
|
||
},
|
||
{
|
||
tab: {
|
||
default: `overview`,
|
||
},
|
||
tabModifiers: {},
|
||
},
|
||
),
|
||
emits: mergeModels(
|
||
[`refresh`, `renew`, `presentation`],
|
||
[`update:tab`],
|
||
),
|
||
setup(i, { expose: c, emit: b }) {
|
||
let C = i,
|
||
w = b,
|
||
D = useApi(),
|
||
O = useModel(i, `tab`),
|
||
Rt = computed(() => C.module),
|
||
k = Ee(C.hostId, Rt),
|
||
{
|
||
info: A,
|
||
remote: j,
|
||
flow: M,
|
||
loading: zt,
|
||
error: N,
|
||
remoteError: P,
|
||
flowError: F,
|
||
statusError: Bt,
|
||
flowLoading: Vt,
|
||
remoteLoading: Ht,
|
||
canControl: I,
|
||
powerStatus: L,
|
||
powerDescription: R,
|
||
} = k,
|
||
Ut = ref(null),
|
||
Wt = ref(0);
|
||
function Gt() {
|
||
(Wt.value++, k.load());
|
||
}
|
||
let z = ref(!1),
|
||
B = ref(!1),
|
||
Kt = ref(null),
|
||
qt = ref(``),
|
||
Jt = computed(() => A.value ?? {}),
|
||
Yt = ref(null);
|
||
function Xt(e) {
|
||
((z.value = !1),
|
||
(Kt.value = e.order_id),
|
||
(qt.value = e.amount),
|
||
(B.value = !0));
|
||
}
|
||
function Zt() {
|
||
(Gt(), $(), w(`refresh`));
|
||
}
|
||
let Qt = [
|
||
{
|
||
value: `overview`,
|
||
label: `概要`,
|
||
},
|
||
{
|
||
value: `monitor`,
|
||
label: `监控`,
|
||
},
|
||
{
|
||
value: `access`,
|
||
label: `访问控制`,
|
||
},
|
||
{
|
||
value: `network`,
|
||
label: `网络与安全`,
|
||
},
|
||
{
|
||
value: `ddos`,
|
||
label: `DDoS防护`,
|
||
},
|
||
{
|
||
value: `domains`,
|
||
label: `域名白名单`,
|
||
},
|
||
{
|
||
value: `billing`,
|
||
label: `计费`,
|
||
},
|
||
{
|
||
value: `log`,
|
||
label: `日志`,
|
||
},
|
||
],
|
||
V = computed(() => C.host.status === `Active`),
|
||
$t = computed(() => j.value?.username || A.value?.username || `—`),
|
||
H = computed(() => j.value?.password || A.value?.password || ``),
|
||
en = computed(() => {
|
||
let e = A.value?.image?.icon || ``,
|
||
t = [
|
||
`AlmaLinux`,
|
||
`ArchLinux`,
|
||
`CentOS`,
|
||
`Debian`,
|
||
`ESXi`,
|
||
`Fedora`,
|
||
`FreeBSD`,
|
||
`Linux`,
|
||
`OpenEuler`,
|
||
`RedHat`,
|
||
`Rocky`,
|
||
`TencentOS-Server`,
|
||
`Ubuntu`,
|
||
`Windows`,
|
||
`XenServer`,
|
||
].find((t) => t.toLowerCase() === e.toLowerCase());
|
||
return t
|
||
? `/plugins/server/mf_cloud/view/assets/default_icons/${t}.svg`
|
||
: void 0;
|
||
}),
|
||
U = ref(!1),
|
||
tn = ref(``),
|
||
nn = ref(``),
|
||
W = computed(
|
||
() =>
|
||
M.value?.total_num != null && Number(M.value.total_num) === 0,
|
||
),
|
||
rn = computed(() => {
|
||
let e = M.value?.total_num,
|
||
t = M.value?.used_num;
|
||
return e != null && t != null && Number(e) > 0
|
||
? Math.min(100, Math.max(0, (Number(t) / Number(e)) * 100))
|
||
: 0;
|
||
}),
|
||
an = computed(
|
||
() =>
|
||
A.value?.bw_show ||
|
||
(A.value?.bw == null ? `—` : `${A.value.bw} Mbps`),
|
||
),
|
||
on = computed(() =>
|
||
A.value?.peak_defence == null
|
||
? `未提供`
|
||
: `${A.value.peak_defence} Gbps`,
|
||
),
|
||
G = computed(() =>
|
||
configuration_display_n(C.module, A.value, C.host),
|
||
);
|
||
computed(
|
||
() =>
|
||
R.value ||
|
||
{
|
||
on: `运行中`,
|
||
off: `已关机`,
|
||
operating: `操作中`,
|
||
fault: `故障`,
|
||
}[L.value] ||
|
||
`状态未知`,
|
||
);
|
||
function K(e) {
|
||
V.value && I.value && Ut.value?.request(e);
|
||
}
|
||
async function sn(e, t) {
|
||
if (e && e !== `—`)
|
||
try {
|
||
(await navigator.clipboard.writeText(e),
|
||
(tn.value = t),
|
||
(nn.value = ``));
|
||
} catch {
|
||
nn.value = `复制失败,请手动选择并复制内容`;
|
||
}
|
||
}
|
||
let cn = ref([]),
|
||
q = ref(!1),
|
||
J = ref(!1),
|
||
Y = ref(``),
|
||
X = ref(0),
|
||
ln = ref(0),
|
||
Z = 0,
|
||
Q = !1;
|
||
async function $() {
|
||
let e = ++Z,
|
||
t = C.hostId,
|
||
n = C.module;
|
||
((q.value = !0), (Y.value = ``));
|
||
try {
|
||
let r = await D.get(`/${n}/${t}/ip`, {
|
||
page: X.value + 1,
|
||
limit: 10,
|
||
});
|
||
if (Q || e !== Z || t !== C.hostId || n !== C.module) return;
|
||
((cn.value = r.list || []),
|
||
(ln.value = Number(r.count || 0)),
|
||
(J.value = !0));
|
||
} catch (t) {
|
||
!Q &&
|
||
e === Z &&
|
||
(Y.value = t instanceof Error ? t.message : `IP 列表加载失败`);
|
||
} finally {
|
||
!Q && e === Z && (q.value = !1);
|
||
}
|
||
}
|
||
return (
|
||
watch(
|
||
O,
|
||
(e) => {
|
||
if (!Qt.some((t) => t.value === e)) {
|
||
O.value = `overview`;
|
||
return;
|
||
}
|
||
V.value && e === `network` && !J.value && $();
|
||
},
|
||
{
|
||
immediate: !0,
|
||
},
|
||
),
|
||
watch([() => C.hostId, () => C.module], () => {
|
||
(Z++,
|
||
(cn.value = []),
|
||
(J.value = !1),
|
||
(U.value = !1),
|
||
(X.value = 0));
|
||
}),
|
||
watch(
|
||
[A, L, Bt, I],
|
||
() =>
|
||
w(`presentation`, {
|
||
region: G.value.region,
|
||
spec: [
|
||
A.value?.model_config?.cpu,
|
||
A.value?.model_config?.memory,
|
||
]
|
||
.filter(Boolean)
|
||
.join(` | `),
|
||
ip: A.value?.ip || ``,
|
||
power: Bt.value ? `` : L.value,
|
||
control: I.value,
|
||
}),
|
||
{
|
||
immediate: !0,
|
||
},
|
||
),
|
||
onMounted(k.load),
|
||
watch(() => C.host, k.load),
|
||
onBeforeUnmount(() => {
|
||
((Q = !0), Z++);
|
||
}),
|
||
c({
|
||
requestAction: K,
|
||
refreshStatus: () => {
|
||
if (!k.statusLoading.value) return k.loadStatus();
|
||
},
|
||
}),
|
||
(n, r) => {
|
||
let a = button,
|
||
o = message,
|
||
c = InstanceServiceInfo,
|
||
u = InstanceLoadingShell,
|
||
p = tab,
|
||
b = tablist,
|
||
C = progressbar,
|
||
T = OsIcon,
|
||
D = NuxtLink,
|
||
fe = InstanceStatusTag,
|
||
Ee = Oe,
|
||
Rt = skeleton,
|
||
R = tabpanel,
|
||
J = InstanceMonitorSkeleton,
|
||
Z = DcimReinstallStatus,
|
||
Q = column,
|
||
un = datatable,
|
||
dn = paginator,
|
||
fn = ke,
|
||
pn = Ae,
|
||
mn = je,
|
||
hn = Me,
|
||
gn = tabpanels,
|
||
_n = tabs,
|
||
vn = DcimUpgrade,
|
||
yn = dialog,
|
||
bn = PaymentDialog,
|
||
xn = OperationNotice,
|
||
Sn = DcimActions;
|
||
return (
|
||
openBlock(),
|
||
createElementBlock(`div`, Ne, [
|
||
unref(N) && unref(A)
|
||
? (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 0,
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(toDisplayString(unref(N)), 1),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重试`,
|
||
text: ``,
|
||
size: `small`,
|
||
loading: unref(zt),
|
||
onClick: unref(k).load,
|
||
},
|
||
null,
|
||
8,
|
||
[`loading`, `onClick`],
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
!unref(V) || (!unref(A) && unref(N))
|
||
? (openBlock(),
|
||
createBlock(
|
||
c,
|
||
{
|
||
key: 1,
|
||
host: i.host,
|
||
module: i.module,
|
||
info: unref(A),
|
||
onPay: (r[0] ||= (e) => {
|
||
((Kt.value = e.order_id),
|
||
(qt.value = e.amount),
|
||
(B.value = !0));
|
||
}),
|
||
},
|
||
null,
|
||
8,
|
||
[`host`, `module`, `info`],
|
||
))
|
||
: !unref(A) && !unref(N)
|
||
? (openBlock(),
|
||
createBlock(u, {
|
||
key: 2,
|
||
dcim: ``,
|
||
}))
|
||
: createCommentVNode(``, !0),
|
||
unref(N) && !unref(A) && unref(V)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Pe, [
|
||
createVNode(
|
||
o,
|
||
{
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(toDisplayString(unref(N)), 1),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重试`,
|
||
icon: `pi pi-refresh`,
|
||
text: ``,
|
||
onClick: unref(k).load,
|
||
},
|
||
null,
|
||
8,
|
||
[`onClick`],
|
||
),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
unref(V) && unref(A)
|
||
? (openBlock(),
|
||
createBlock(
|
||
_n,
|
||
{
|
||
key: 4,
|
||
value: O.value,
|
||
"onUpdate:value": (r[23] ||= (e) => (O.value = e)),
|
||
lazy: ``,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createVNode(b, null, {
|
||
default: withCtx(() => [
|
||
(openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
null,
|
||
renderList(Qt, (t) =>
|
||
createVNode(
|
||
p,
|
||
{
|
||
key: t.value,
|
||
value: t.value,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(t.label),
|
||
1,
|
||
),
|
||
]),
|
||
_: 2,
|
||
},
|
||
1032,
|
||
[`value`],
|
||
),
|
||
),
|
||
64,
|
||
)),
|
||
]),
|
||
_: 1,
|
||
}),
|
||
createVNode(gn, null, {
|
||
default: withCtx(() => [
|
||
!unref(V) && O.value !== `billing`
|
||
? (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 0,
|
||
severity: `info`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[26] ||= [
|
||
createTextVNode(
|
||
`实例尚未开通或当前不可用,管理信息将在服务恢复后显示。`,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `overview`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V) && unref(A)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Fe, [
|
||
createElementVNode(`div`, Ie, [
|
||
createElementVNode(
|
||
`section`,
|
||
Le,
|
||
[
|
||
createElementVNode(
|
||
`h3`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`button`,
|
||
{
|
||
class: `card-title`,
|
||
onClick: (r[1] ||= (
|
||
e,
|
||
) =>
|
||
(O.value = `network`)),
|
||
},
|
||
[
|
||
...(r[27] ||= [
|
||
createTextVNode(
|
||
`流量`,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
unref(F)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`div`,
|
||
Re,
|
||
[
|
||
createElementVNode(
|
||
`span`,
|
||
null,
|
||
toDisplayString(
|
||
unref(F),
|
||
),
|
||
1,
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重试`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick:
|
||
unref(k).load,
|
||
},
|
||
null,
|
||
8,
|
||
[`onClick`],
|
||
),
|
||
],
|
||
))
|
||
: unref(M)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
{
|
||
key: 1,
|
||
},
|
||
[
|
||
createVNode(
|
||
C,
|
||
{
|
||
value:
|
||
unref(rn),
|
||
"show-value":
|
||
!1,
|
||
},
|
||
null,
|
||
8,
|
||
[`value`],
|
||
),
|
||
createElementVNode(
|
||
`p`,
|
||
ze,
|
||
[
|
||
(r[28] ||=
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-arrow-right-arrow-left`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
)),
|
||
createTextVNode(
|
||
`已用流量 ` +
|
||
toDisplayString(
|
||
unref(M)
|
||
.used ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
!unref(W) &&
|
||
unref(M)
|
||
.total_num
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
Fragment,
|
||
{
|
||
key: 0,
|
||
},
|
||
[
|
||
createTextVNode(
|
||
`(` +
|
||
toDisplayString(
|
||
Math.round(
|
||
unref(
|
||
rn,
|
||
),
|
||
),
|
||
) +
|
||
`%)`,
|
||
1,
|
||
),
|
||
],
|
||
64,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`dl`,
|
||
Be,
|
||
[
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[29] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`总流量`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(W)
|
||
? `不限`
|
||
: unref(
|
||
M,
|
||
)
|
||
.total ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[30] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`剩余流量`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(W)
|
||
? `不限`
|
||
: unref(
|
||
M,
|
||
)
|
||
.leave ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[31] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`重置时间`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(M)
|
||
.reset_flow_date ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
(r[32] ||=
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`流量自动购买`,
|
||
),
|
||
createElementVNode(
|
||
`dd`,
|
||
{
|
||
class: `muted`,
|
||
},
|
||
`暂不支持`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
],
|
||
),
|
||
createVNode(a, {
|
||
label: `查看流量详情`,
|
||
icon: `pi pi-angle-right`,
|
||
outlined: ``,
|
||
class: `card-bottom`,
|
||
onClick: (r[2] ||=
|
||
(e) =>
|
||
(O.value = `network`)),
|
||
}),
|
||
],
|
||
64,
|
||
))
|
||
: unref(Vt)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
Ve,
|
||
`正在加载流量信息…`,
|
||
))
|
||
: (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
He,
|
||
`暂无流量信息`,
|
||
)),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`section`,
|
||
Ue,
|
||
[
|
||
(r[37] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`资源`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dl`, We, [
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[33] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-microchip`,
|
||
},
|
||
),
|
||
createTextVNode(
|
||
`CPU`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
[
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(A)
|
||
.model_config
|
||
?.cpu || `—`,
|
||
),
|
||
1,
|
||
),
|
||
unref(A)
|
||
.model_config
|
||
?.cpu_param
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`small`,
|
||
Ge,
|
||
toDisplayString(
|
||
unref(A)
|
||
.model_config
|
||
.cpu_param,
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[34] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-server`,
|
||
},
|
||
),
|
||
createTextVNode(
|
||
`RAM`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(A)
|
||
.model_config
|
||
?.memory || `—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[35] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-database`,
|
||
},
|
||
),
|
||
createTextVNode(
|
||
`硬盘`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(A)
|
||
.model_config
|
||
?.disk || `—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
unref(A).model_config?.gpu
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`div`,
|
||
Ke,
|
||
[
|
||
(r[36] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-desktop`,
|
||
},
|
||
),
|
||
createTextVNode(
|
||
`显卡`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(A)
|
||
.model_config
|
||
.gpu,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
]),
|
||
createElementVNode(`div`, qe, [
|
||
createElementVNode(
|
||
`section`,
|
||
Je,
|
||
[
|
||
createElementVNode(
|
||
`h3`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`button`,
|
||
{
|
||
class: `card-title`,
|
||
onClick: (r[3] ||= (
|
||
e,
|
||
) =>
|
||
(O.value = `access`)),
|
||
},
|
||
[
|
||
...(r[38] ||= [
|
||
createTextVNode(
|
||
`访问`,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
Ye,
|
||
[
|
||
createVNode(
|
||
T,
|
||
{
|
||
url: unref(en),
|
||
name:
|
||
unref(A).image
|
||
?.icon ||
|
||
unref(A).image
|
||
?.name,
|
||
size: 56,
|
||
},
|
||
null,
|
||
8,
|
||
[`url`, `name`],
|
||
),
|
||
createElementVNode(
|
||
`strong`,
|
||
null,
|
||
toDisplayString(
|
||
unref(os_name_t)(
|
||
unref(A).image
|
||
?.name,
|
||
) || `操作系统未提供`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(`dl`, Xe, [
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[39] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`IP 地址`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`span`,
|
||
Ze,
|
||
toDisplayString(
|
||
unref(A).ip ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
unref(A).ip
|
||
? (openBlock(),
|
||
createBlock(
|
||
a,
|
||
{
|
||
key: 0,
|
||
icon:
|
||
unref(
|
||
tn,
|
||
) === `ip`
|
||
? `pi pi-check`
|
||
: `pi pi-copy`,
|
||
"aria-label": `复制 IP 地址`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick:
|
||
(r[4] ||=
|
||
(e) =>
|
||
sn(
|
||
unref(
|
||
A,
|
||
)
|
||
.ip,
|
||
`ip`,
|
||
)),
|
||
},
|
||
null,
|
||
8,
|
||
[`icon`],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[40] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`用户名`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref($t),
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[41] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`密码`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`span`,
|
||
Qe,
|
||
toDisplayString(
|
||
unref(H)
|
||
? unref(U)
|
||
? unref(H)
|
||
: `••••••••••`
|
||
: `未提供`,
|
||
),
|
||
1,
|
||
),
|
||
unref(H)
|
||
? (openBlock(),
|
||
createBlock(
|
||
a,
|
||
{
|
||
key: 0,
|
||
icon: unref(
|
||
U,
|
||
)
|
||
? `pi pi-eye-slash`
|
||
: `pi pi-eye`,
|
||
"aria-label":
|
||
unref(U)
|
||
? `隐藏实例密码`
|
||
: `显示实例密码`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick:
|
||
(r[5] ||=
|
||
(e) =>
|
||
(U.value =
|
||
!unref(
|
||
U,
|
||
))),
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`icon`,
|
||
`aria-label`,
|
||
],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
]),
|
||
unref(P)
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`p`,
|
||
$e,
|
||
toDisplayString(
|
||
unref(P),
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
et,
|
||
[
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: unref(j)
|
||
?.rescue
|
||
? `退出救援`
|
||
: `救援模式`,
|
||
icon: `pi pi-wrench`,
|
||
outlined: ``,
|
||
size: `small`,
|
||
disabled:
|
||
!unref(I) ||
|
||
unref(Ht) ||
|
||
!unref(j),
|
||
onClick: (r[6] ||= (
|
||
e,
|
||
) =>
|
||
K(
|
||
unref(j)?.rescue
|
||
? `rescue/exit`
|
||
: `rescue`,
|
||
)),
|
||
},
|
||
null,
|
||
8,
|
||
[`label`, `disabled`],
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重装系统`,
|
||
icon: `pi pi-wrench`,
|
||
size: `small`,
|
||
disabled: !unref(I),
|
||
onClick: (r[7] ||= (
|
||
e,
|
||
) => K(`reinstall`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`section`,
|
||
tt,
|
||
[
|
||
(r[44] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`DDoS 防护`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`div`,
|
||
nt,
|
||
[
|
||
(r[42] ||=
|
||
createElementVNode(
|
||
`img`,
|
||
{
|
||
src: De,
|
||
alt: ``,
|
||
width: `112`,
|
||
height: `112`,
|
||
},
|
||
null,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`strong`,
|
||
null,
|
||
`防御峰值 ` +
|
||
toDisplayString(
|
||
unref(on),
|
||
),
|
||
1,
|
||
),
|
||
(r[43] ||=
|
||
createElementVNode(
|
||
`p`,
|
||
null,
|
||
`实际防护状态以平台信息为准`,
|
||
-1,
|
||
)),
|
||
createVNode(a, {
|
||
label: `查看防护信息`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick: (r[8] ||= (
|
||
e,
|
||
) =>
|
||
(O.value = `ddos`)),
|
||
}),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`section`,
|
||
rt,
|
||
[
|
||
(r[47] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`需要帮助?`,
|
||
-1,
|
||
)),
|
||
(r[48] ||= createElementVNode(
|
||
`p`,
|
||
{
|
||
class: `muted`,
|
||
},
|
||
`查看使用文档,或提交工单联系支持。`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`div`,
|
||
it,
|
||
[
|
||
createVNode(
|
||
D,
|
||
{
|
||
to: `/help`,
|
||
},
|
||
{
|
||
default: withCtx(
|
||
() => [
|
||
...(r[45] ||= [
|
||
createTextVNode(
|
||
`帮助中心 `,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
D,
|
||
{
|
||
to: `/tickets/create`,
|
||
},
|
||
{
|
||
default: withCtx(
|
||
() => [
|
||
...(r[46] ||= [
|
||
createTextVNode(
|
||
`提交工单 `,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
_: 1,
|
||
},
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
]),
|
||
createElementVNode(`div`, at, [
|
||
createElementVNode(
|
||
`section`,
|
||
ot,
|
||
[
|
||
createElementVNode(
|
||
`h3`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`button`,
|
||
{
|
||
class: `card-title`,
|
||
onClick: (r[9] ||= (
|
||
e,
|
||
) =>
|
||
(O.value = `billing`)),
|
||
},
|
||
[
|
||
...(r[49] ||= [
|
||
createTextVNode(
|
||
`计费`,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(`dl`, st, [
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[50] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`计费方式`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
i.host
|
||
.billing_cycle_name ||
|
||
i.host
|
||
.billing_cycle ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[51] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`产品状态`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
[
|
||
createVNode(
|
||
fe,
|
||
{
|
||
state:
|
||
i.productState,
|
||
power: unref(Bt)
|
||
? ``
|
||
: unref(L),
|
||
lifecycle:
|
||
i.host.status,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`state`,
|
||
`power`,
|
||
`lifecycle`,
|
||
],
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[52] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`续费金额`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`strong`,
|
||
null,
|
||
`¥` +
|
||
toDisplayString(
|
||
i.host
|
||
.renew_amount,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[53] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`到期时间`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
(`formatTime` in n
|
||
? n.formatTime
|
||
: unref(dict_r))(
|
||
i.host.due_time,
|
||
),
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
]),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `续费`,
|
||
icon: `pi pi-wallet`,
|
||
class: `card-bottom`,
|
||
disabled:
|
||
!!i.host
|
||
.renew_forbidden,
|
||
onClick: (r[10] ||= (e) =>
|
||
w(`renew`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`section`,
|
||
ct,
|
||
[
|
||
createElementVNode(
|
||
`h3`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`button`,
|
||
{
|
||
class: `card-title`,
|
||
onClick: (r[11] ||= (
|
||
e,
|
||
) =>
|
||
(O.value = `network`)),
|
||
},
|
||
[
|
||
...(r[54] ||= [
|
||
createTextVNode(
|
||
`网络`,
|
||
-1,
|
||
),
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-angle-right`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
),
|
||
]),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(`dl`, lt, [
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[55] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`区域`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G).region ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[56] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`线路`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G).line ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
unref(G).networkType
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`div`,
|
||
ut,
|
||
[
|
||
(r[57] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`网络类型`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G)
|
||
.networkType,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[58] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`带宽上限`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(an),
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[59] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`防御峰值`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(on),
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[60] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`IPv4 地址`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
dt,
|
||
toDisplayString(
|
||
unref(A).ip || `—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
]),
|
||
createElementVNode(
|
||
`div`,
|
||
ft,
|
||
[
|
||
(openBlock(),
|
||
createBlock(
|
||
Suspense,
|
||
null,
|
||
{
|
||
fallback: withCtx(
|
||
() => [
|
||
createVNode(Rt, {
|
||
height: `154px`,
|
||
}),
|
||
],
|
||
),
|
||
default: withCtx(
|
||
() => [
|
||
createVNode(
|
||
Ee,
|
||
{
|
||
"host-id":
|
||
i.hostId,
|
||
module:
|
||
i.module,
|
||
compact: ``,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`host-id`,
|
||
`module`,
|
||
],
|
||
),
|
||
],
|
||
),
|
||
_: 1,
|
||
},
|
||
)),
|
||
],
|
||
),
|
||
createVNode(a, {
|
||
label: `网络管理`,
|
||
icon: `pi pi-angle-right`,
|
||
outlined: ``,
|
||
class: `card-bottom`,
|
||
onClick: (r[12] ||= (e) =>
|
||
(O.value = `network`)),
|
||
}),
|
||
],
|
||
),
|
||
]),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `monitor`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V)
|
||
? (openBlock(),
|
||
createBlock(
|
||
Suspense,
|
||
{
|
||
key: 0,
|
||
},
|
||
{
|
||
fallback: withCtx(() => [
|
||
createVNode(J, {
|
||
dcim: ``,
|
||
}),
|
||
]),
|
||
default: withCtx(() => [
|
||
createVNode(
|
||
Ee,
|
||
{
|
||
"host-id": i.hostId,
|
||
module: i.module,
|
||
},
|
||
null,
|
||
8,
|
||
[`host-id`, `module`],
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `access`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V) && unref(A)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, pt, [
|
||
unref(I)
|
||
? createCommentVNode(``, !0)
|
||
: (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 0,
|
||
severity: `info`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[61] ||= [
|
||
createTextVNode(
|
||
`此实例为手动资源,未配置远程控制能力。请联系支持处理电源与系统操作。`,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
)),
|
||
unref(P)
|
||
? (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 1,
|
||
severity: `warn`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(P),
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
unref(I)
|
||
? (openBlock(),
|
||
createBlock(
|
||
Z,
|
||
{
|
||
key: 2,
|
||
"host-id": i.hostId,
|
||
module: i.module,
|
||
"refresh-version":
|
||
unref(Wt),
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`host-id`,
|
||
`module`,
|
||
`refresh-version`,
|
||
],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
(r[72] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`访问信息`,
|
||
-1,
|
||
)),
|
||
(r[73] ||= createElementVNode(
|
||
`p`,
|
||
{
|
||
class: `muted`,
|
||
},
|
||
`访问信息可以帮助您访问您的服务器。`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dl`, mt, [
|
||
createElementVNode(`div`, null, [
|
||
(r[62] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`主 IP 地址`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
ht,
|
||
toDisplayString(
|
||
unref(A).ip || `—`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[63] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`操作系统`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, null, [
|
||
createVNode(
|
||
T,
|
||
{
|
||
url: unref(en),
|
||
name: unref(A).image
|
||
?.icon,
|
||
size: 28,
|
||
},
|
||
null,
|
||
8,
|
||
[`url`, `name`],
|
||
),
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(os_name_t)(
|
||
unref(A).image?.name,
|
||
) || `—`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[64] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`用户名`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, null, [
|
||
createTextVNode(
|
||
toDisplayString(unref($t)),
|
||
1,
|
||
),
|
||
unref(j)?.port
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`small`,
|
||
gt,
|
||
` · 连接端口 ` +
|
||
toDisplayString(
|
||
unref(j).port,
|
||
),
|
||
1,
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
]),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[65] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`密码`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, _t, [
|
||
createElementVNode(
|
||
`span`,
|
||
vt,
|
||
[
|
||
createElementVNode(
|
||
`span`,
|
||
null,
|
||
toDisplayString(
|
||
unref(H)
|
||
? unref(U)
|
||
? unref(H)
|
||
: `••••••••••`
|
||
: `未提供`,
|
||
),
|
||
1,
|
||
),
|
||
unref(H)
|
||
? (openBlock(),
|
||
createBlock(
|
||
a,
|
||
{
|
||
key: 0,
|
||
icon: unref(U)
|
||
? `pi pi-eye-slash`
|
||
: `pi pi-eye`,
|
||
"aria-label":
|
||
unref(U)
|
||
? `隐藏实例密码`
|
||
: `显示实例密码`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick:
|
||
(r[13] ||= (
|
||
e,
|
||
) =>
|
||
(U.value =
|
||
!unref(U))),
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`icon`,
|
||
`aria-label`,
|
||
],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
unref(H)
|
||
? (openBlock(),
|
||
createBlock(
|
||
a,
|
||
{
|
||
key: 1,
|
||
icon:
|
||
unref(tn) ===
|
||
`password`
|
||
? `pi pi-check`
|
||
: `pi pi-copy`,
|
||
"aria-label": `复制实例密码`,
|
||
text: ``,
|
||
size: `small`,
|
||
onClick:
|
||
(r[14] ||= (
|
||
e,
|
||
) =>
|
||
sn(
|
||
unref(H),
|
||
`password`,
|
||
)),
|
||
},
|
||
null,
|
||
8,
|
||
[`icon`],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
],
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重置密码`,
|
||
size: `small`,
|
||
disabled: !unref(I),
|
||
onClick: (r[15] ||= (e) =>
|
||
K(`reset_password`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
]),
|
||
]),
|
||
]),
|
||
(r[74] ||= createElementVNode(
|
||
`h3`,
|
||
{
|
||
class: `section-gap`,
|
||
},
|
||
`VNC 连接`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dl`, yt, [
|
||
createElementVNode(`div`, null, [
|
||
(r[67] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`VNC 连接`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, bt, [
|
||
createElementVNode(
|
||
`div`,
|
||
xt,
|
||
[
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `启动 VNC 连接`,
|
||
icon: `pi pi-desktop`,
|
||
disabled: !unref(I),
|
||
onClick: (r[16] ||= (
|
||
e,
|
||
) => K(`vnc`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重启 VNC`,
|
||
outlined: ``,
|
||
disabled: !unref(I),
|
||
onClick: (r[17] ||= (
|
||
e,
|
||
) =>
|
||
K(
|
||
i.module ===
|
||
`remf_dcim`
|
||
? `vnc/start`
|
||
: `vnc/restart`,
|
||
)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
],
|
||
),
|
||
(r[66] ||= createElementVNode(
|
||
`small`,
|
||
null,
|
||
`通过 VNC 连接,您可使用浏览器管理实例;连接启动可能需要一些时间。`,
|
||
-1,
|
||
)),
|
||
]),
|
||
]),
|
||
]),
|
||
(r[75] ||= createElementVNode(
|
||
`h3`,
|
||
{
|
||
class: `section-gap`,
|
||
},
|
||
`系统修复`,
|
||
-1,
|
||
)),
|
||
(r[76] ||= createElementVNode(
|
||
`p`,
|
||
{
|
||
class: `muted`,
|
||
},
|
||
`系统修复可以帮助您修复系统损坏的问题。`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dl`, St, [
|
||
createElementVNode(`div`, null, [
|
||
(r[69] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`救援模式`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, Ct, [
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: unref(j)?.rescue
|
||
? `退出救援模式`
|
||
: `进入救援模式`,
|
||
icon: `pi pi-angle-right`,
|
||
disabled:
|
||
!unref(I) ||
|
||
unref(Ht) ||
|
||
!unref(j),
|
||
onClick: (r[18] ||= (e) =>
|
||
K(
|
||
unref(j)?.rescue
|
||
? `rescue/exit`
|
||
: `rescue`,
|
||
)),
|
||
},
|
||
null,
|
||
8,
|
||
[`label`, `disabled`],
|
||
),
|
||
(r[68] ||= createElementVNode(
|
||
`small`,
|
||
null,
|
||
`当系统无法启动时,可以进入救援模式排查问题。`,
|
||
-1,
|
||
)),
|
||
]),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[71] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`重装系统`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, wt, [
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `重装系统`,
|
||
icon: `pi pi-wrench`,
|
||
disabled: !unref(I),
|
||
onClick: (r[19] ||= (e) =>
|
||
K(`reinstall`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`disabled`],
|
||
),
|
||
(r[70] ||= createElementVNode(
|
||
`small`,
|
||
null,
|
||
`重装系统会覆盖所选分区,请提前备份数据。`,
|
||
-1,
|
||
)),
|
||
]),
|
||
]),
|
||
]),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `network`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V) && unref(A)
|
||
? (openBlock(),
|
||
createElementBlock(`div`, Tt, [
|
||
(r[93] ||= createElementVNode(
|
||
`h3`,
|
||
null,
|
||
`公共网络`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`p`, Et, [
|
||
(r[78] ||= createTextVNode(
|
||
`公共网络地址用于连接您的服务器。如需调整网络配置,请`,
|
||
-1,
|
||
)),
|
||
createVNode(
|
||
D,
|
||
{
|
||
to: `/tickets/create`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
...(r[77] ||= [
|
||
createTextVNode(
|
||
`提交工单`,
|
||
-1,
|
||
),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
(r[79] ||= createTextVNode(
|
||
`联系支持。`,
|
||
-1,
|
||
)),
|
||
]),
|
||
createElementVNode(`dl`, Dt, [
|
||
createElementVNode(`div`, null, [
|
||
(r[80] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`区域`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G).region || `—`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[81] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`线路`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G).line || `—`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
unref(G).networkType
|
||
? (openBlock(),
|
||
createElementBlock(
|
||
`div`,
|
||
Ot,
|
||
[
|
||
(r[82] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`网络类型`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(G).networkType,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createElementVNode(`div`, null, [
|
||
(r[83] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`带宽上限`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(unref(an)),
|
||
1,
|
||
),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[85] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`防护峰值`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, kt, [
|
||
createTextVNode(
|
||
toDisplayString(unref(on)),
|
||
1,
|
||
),
|
||
(r[84] ||= createElementVNode(
|
||
`small`,
|
||
null,
|
||
`实际防护状态以平台信息为准。`,
|
||
-1,
|
||
)),
|
||
]),
|
||
]),
|
||
createElementVNode(`div`, null, [
|
||
(r[86] ||= createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`IPv4 地址`,
|
||
-1,
|
||
)),
|
||
createElementVNode(`dd`, At, [
|
||
unref(Y)
|
||
? (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 0,
|
||
severity: `error`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(
|
||
() => [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(Y),
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
_: 1,
|
||
},
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
createVNode(
|
||
un,
|
||
{
|
||
value: unref(cn),
|
||
loading: unref(q),
|
||
scrollable: ``,
|
||
},
|
||
{
|
||
empty: withCtx(() => [
|
||
createElementVNode(
|
||
`div`,
|
||
jt,
|
||
toDisplayString(
|
||
unref(Y)
|
||
? `IP 列表暂不可用`
|
||
: `暂无 IP 地址`,
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
default: withCtx(() => [
|
||
createVNode(Q, {
|
||
field: `ip`,
|
||
header: `IP 地址`,
|
||
}),
|
||
createVNode(Q, {
|
||
field: `subnet_mask`,
|
||
header: `子网掩码`,
|
||
}),
|
||
createVNode(Q, {
|
||
field: `gateway`,
|
||
header: `网关`,
|
||
}),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`value`, `loading`],
|
||
),
|
||
createVNode(
|
||
a,
|
||
{
|
||
label: `刷新地址`,
|
||
icon: `pi pi-refresh`,
|
||
text: ``,
|
||
size: `small`,
|
||
loading: unref(q),
|
||
onClick: $,
|
||
},
|
||
null,
|
||
8,
|
||
[`loading`],
|
||
),
|
||
unref(ln) > 10
|
||
? (openBlock(),
|
||
createBlock(
|
||
dn,
|
||
{
|
||
key: 1,
|
||
rows: 10,
|
||
first: unref(X) * 10,
|
||
"total-records":
|
||
unref(ln),
|
||
onPage: (r[20] ||= (
|
||
e,
|
||
) => {
|
||
((X.value = e.page),
|
||
$());
|
||
}),
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`first`,
|
||
`total-records`,
|
||
],
|
||
))
|
||
: createCommentVNode(
|
||
``,
|
||
!0,
|
||
),
|
||
]),
|
||
]),
|
||
]),
|
||
(r[94] ||= createElementVNode(
|
||
`h3`,
|
||
{
|
||
class: `section-gap`,
|
||
},
|
||
`网络流量`,
|
||
-1,
|
||
)),
|
||
unref(F)
|
||
? (openBlock(),
|
||
createBlock(
|
||
o,
|
||
{
|
||
key: 0,
|
||
severity: `warn`,
|
||
closable: !1,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createTextVNode(
|
||
toDisplayString(
|
||
unref(F),
|
||
),
|
||
1,
|
||
),
|
||
]),
|
||
_: 1,
|
||
},
|
||
))
|
||
: (openBlock(),
|
||
createElementBlock(`dl`, Mt, [
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[88] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`流量使用情况`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
Nt,
|
||
[
|
||
createVNode(
|
||
C,
|
||
{
|
||
value: unref(rn),
|
||
"show-value": !1,
|
||
class: `network-flow-bar`,
|
||
},
|
||
null,
|
||
8,
|
||
[`value`],
|
||
),
|
||
createElementVNode(
|
||
`span`,
|
||
Pt,
|
||
[
|
||
(r[87] ||=
|
||
createElementVNode(
|
||
`i`,
|
||
{
|
||
class: `pi pi-arrow-right-arrow-left`,
|
||
"aria-hidden": `true`,
|
||
},
|
||
null,
|
||
-1,
|
||
)),
|
||
createTextVNode(
|
||
`已用流量 ` +
|
||
toDisplayString(
|
||
unref(M)
|
||
?.used ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[89] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`总流量`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(W)
|
||
? `不限`
|
||
: unref(M)?.total ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[90] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`剩余流量`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(W)
|
||
? `不限`
|
||
: unref(M)?.leave ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
(r[91] ||=
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`重置时间`,
|
||
-1,
|
||
)),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
toDisplayString(
|
||
unref(M)
|
||
?.reset_flow_date ||
|
||
`—`,
|
||
),
|
||
1,
|
||
),
|
||
],
|
||
),
|
||
(r[92] ||= createElementVNode(
|
||
`div`,
|
||
null,
|
||
[
|
||
createElementVNode(
|
||
`dt`,
|
||
null,
|
||
`流量自动购买`,
|
||
),
|
||
createElementVNode(
|
||
`dd`,
|
||
null,
|
||
`此实例暂不支持设置`,
|
||
),
|
||
],
|
||
-1,
|
||
)),
|
||
])),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `ddos`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V)
|
||
? (openBlock(),
|
||
createElementBlock(`section`, Ft, [
|
||
createVNode(
|
||
fn,
|
||
{
|
||
"upgrade-allowed":
|
||
i.host.upgrade_allowed,
|
||
"host-id": i.hostId,
|
||
module: i.module,
|
||
ip: unref(A)?.ip || ``,
|
||
"additional-ip":
|
||
unref(A)?.additional_ip,
|
||
peak: unref(A)?.peak_defence,
|
||
active: unref(V),
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`upgrade-allowed`,
|
||
`host-id`,
|
||
`module`,
|
||
`ip`,
|
||
`additional-ip`,
|
||
`peak`,
|
||
`active`,
|
||
],
|
||
),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `domains`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V)
|
||
? (openBlock(),
|
||
createElementBlock(`section`, It, [
|
||
createVNode(
|
||
pn,
|
||
{
|
||
"host-id": i.hostId,
|
||
},
|
||
null,
|
||
8,
|
||
[`host-id`],
|
||
),
|
||
]))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `billing`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
createElementVNode(`section`, Lt, [
|
||
createVNode(
|
||
mn,
|
||
{
|
||
"host-id": i.hostId,
|
||
host: i.host,
|
||
onRefresh: (r[21] ||= (e) =>
|
||
w(`refresh`)),
|
||
},
|
||
null,
|
||
8,
|
||
[`host-id`, `host`],
|
||
),
|
||
unref(V) &&
|
||
unref(A) &&
|
||
i.host.upgrade_allowed !== !1
|
||
? (openBlock(),
|
||
createBlock(a, {
|
||
key: 0,
|
||
label: `配置升级`,
|
||
onClick: (r[22] ||= (e) =>
|
||
(z.value = !0)),
|
||
}))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
createVNode(
|
||
R,
|
||
{
|
||
value: `log`,
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(V) && O.value === `log`
|
||
? (openBlock(),
|
||
createBlock(
|
||
hn,
|
||
{
|
||
key: 0,
|
||
"host-id": i.hostId,
|
||
module: i.module,
|
||
},
|
||
null,
|
||
8,
|
||
[`host-id`, `module`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
),
|
||
]),
|
||
_: 1,
|
||
}),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`value`],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
createVNode(
|
||
yn,
|
||
{
|
||
visible: unref(z),
|
||
"onUpdate:visible": (r[24] ||= (e) =>
|
||
isRef(z) ? (z.value = e) : null),
|
||
header: `配置升级`,
|
||
modal: ``,
|
||
closable: !unref(Yt)?.busy,
|
||
"close-on-escape": !unref(Yt)?.busy,
|
||
style: {
|
||
width: `650px`,
|
||
maxWidth: `calc(100vw - 24px)`,
|
||
},
|
||
},
|
||
{
|
||
default: withCtx(() => [
|
||
unref(z) && unref(A)
|
||
? (openBlock(),
|
||
createBlock(
|
||
vn,
|
||
{
|
||
key: 0,
|
||
ref_key: `upgrade`,
|
||
ref: Yt,
|
||
"host-id": i.hostId,
|
||
"product-id": i.productId,
|
||
module: i.module,
|
||
current: unref(Jt),
|
||
"upgrade-allowed": i.host.upgrade_allowed,
|
||
onPay: Xt,
|
||
},
|
||
null,
|
||
8,
|
||
[
|
||
`host-id`,
|
||
`product-id`,
|
||
`module`,
|
||
`current`,
|
||
`upgrade-allowed`,
|
||
],
|
||
))
|
||
: createCommentVNode(``, !0),
|
||
]),
|
||
_: 1,
|
||
},
|
||
8,
|
||
[`visible`, `closable`, `close-on-escape`],
|
||
),
|
||
createVNode(
|
||
bn,
|
||
{
|
||
modelValue: unref(B),
|
||
"onUpdate:modelValue": (r[25] ||= (e) =>
|
||
isRef(B) ? (B.value = e) : null),
|
||
"order-id": unref(Kt),
|
||
amount: unref(qt),
|
||
onSuccess: Zt,
|
||
},
|
||
null,
|
||
8,
|
||
[`modelValue`, `order-id`, `amount`],
|
||
),
|
||
createVNode(
|
||
xn,
|
||
{
|
||
message: unref(nn),
|
||
severity: `warn`,
|
||
},
|
||
null,
|
||
8,
|
||
[`message`],
|
||
),
|
||
createVNode(
|
||
Sn,
|
||
{
|
||
ref_key: `actions`,
|
||
ref: Ut,
|
||
"host-id": i.hostId,
|
||
"product-id": i.productId,
|
||
host: i.host,
|
||
module: i.module,
|
||
detail: unref(k),
|
||
onRefresh: Gt,
|
||
},
|
||
null,
|
||
8,
|
||
[`host-id`, `product-id`, `host`, `module`, `detail`],
|
||
),
|
||
])
|
||
);
|
||
}
|
||
);
|
||
},
|
||
}),
|
||
[[`__scopeId`, `data-v-e2d08c68`]],
|
||
),
|
||
{
|
||
__name: `DcimManage`,
|
||
},
|
||
);
|
||
export {};
|
||
export default O;
|
||
</script>
|