Files
console-dev/app/pages/dedicated-servers/index.vue
T

99 lines
3.0 KiB
Vue

<script>
/**
* 物理服务器列表入口:复用 HostList 的物理服务器模块组;动态菜单 m 必须通过正整数校验,组件 key 随菜单变化以重置列表状态。
*/
import "~/assets/styles/PaymentDialog.BNFKQF1U.css";
import "~/assets/styles/OsIcon.CAi4Iz2S.css";
import "~/assets/styles/HostList.B3U15sJm.css";
import { createBlock } from "vue";
import { withCtx } from "vue";
import { computed } from "vue";
import { createTextVNode } from "vue";
import { unref } from "vue";
import { defineComponent } from "vue";
import { createVNode } from "vue";
import { openBlock } from "vue";
import { useRoute } from "#app";
import { NuxtLink } from "#components";
import button from "primevue/button";
import message from "primevue/message";
import { t as modules_t } from "~/lib/modules.js";
import HostList from "~/components/HostList.vue";
var m = defineComponent({
__name: `index`,
setup(a) {
let m = useRoute(),
h = computed(() =>
/^\d+$/.test(String(m.query.m ?? ``)) &&
Number.isSafeInteger(Number(m.query.m)) &&
Number(m.query.m) > 0
? Number(m.query.m)
: void 0,
);
// 物理模块组交给 HostList;无效菜单参数不会回退为另一个有效分组。
return (n, a) => {
let c = message,
g = button,
_ = NuxtLink,
v = HostList;
return unref(m).query.m !== void 0 && !unref(h)
? (openBlock(),
createBlock(
c,
{
key: 0,
severity: `error`,
closable: !1,
},
{
default: withCtx(() => [
...(a[0] ||= [createTextVNode(`服务器导航参数无效`, -1)]),
]),
_: 1,
},
))
: (openBlock(),
createBlock(
v,
{
key: unref(h) ?? `default`,
"menu-id": unref(h),
modules: (`SERVER_MODULE_GROUPS` in n
? n.SERVER_MODULE_GROUPS
: unref(modules_t)
).dcim,
title: `物理服务器`,
description: `管理你的物理服务器(裸金属)`,
},
{
actions: withCtx(() => [
createVNode(
_,
{
to: `/products`,
},
{
default: withCtx(() => [
createVNode(g, {
// 外层 NuxtLink 独占导航语义,避免链接里再次嵌套按钮焦点。
as: `span`,
label: `订购物理服务器`,
icon: `pi pi-plus`,
}),
]),
_: 1,
},
),
]),
_: 1,
},
8,
[`menu-id`, `modules`],
));
};
},
});
export {};
export default m;
</script>