428 lines
17 KiB
Vue
428 lines
17 KiB
Vue
<script>
|
|
import "~/assets/styles/RemoteConsole.DLmX5UZu.css";
|
|
import "~/assets/styles/remote-console.zcxaOxxS.css";
|
|
definePageMeta({
|
|
layout: !1,
|
|
});
|
|
import { toDisplayString } from "vue";
|
|
import { onBeforeUnmount } from "vue";
|
|
import { watch } 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 { withModifiers } from "vue";
|
|
import { useRoute } from "#app";
|
|
import { useHead } from "#app";
|
|
import { NuxtLink } from "#components";
|
|
import button from "primevue/button";
|
|
import { t as _plugin_vue_export_helper_t } from "~/lib/_plugin-vue_export-helper.js";
|
|
import inputtext from "primevue/inputtext";
|
|
import OperatePasswordGate from "~/components/OperatePasswordGate.vue";
|
|
import RemoteConsole from "~/components/instance/RemoteConsole.vue";
|
|
import { logoUrl } from "~/utils/brand.js";
|
|
import { t as composables_t } from "~/lib/composables-2.js";
|
|
var O = {
|
|
class: `standalone-console`,
|
|
},
|
|
k = {
|
|
class: `console-page-header`,
|
|
},
|
|
A = {
|
|
key: 0,
|
|
class: `console-page-host`,
|
|
},
|
|
j = {
|
|
class: `console-page-content`,
|
|
},
|
|
M = {
|
|
key: 0,
|
|
class: `console-intro`,
|
|
"aria-labelledby": `console-invalid-title`,
|
|
},
|
|
N = {
|
|
key: 1,
|
|
class: `console-intro`,
|
|
"aria-labelledby": `console-closed-title`,
|
|
},
|
|
P = _plugin_vue_export_helper_t(
|
|
defineComponent({
|
|
__name: `remote-console`,
|
|
setup(m) {
|
|
(composables_t({
|
|
layout: !1,
|
|
}),
|
|
useHead({
|
|
title: `远程控制台 - 破碎工坊云`,
|
|
}));
|
|
let S = useRoute(),
|
|
P = ref(!0),
|
|
F = ref(``),
|
|
I = ref(!1),
|
|
L = computed(() =>
|
|
/^\d+$/.test(String(S.query.hostId || ``))
|
|
? String(S.query.hostId)
|
|
: ``,
|
|
),
|
|
R = new Set([
|
|
`kky_ecs`,
|
|
`mf_cloud`,
|
|
`remf_cloud`,
|
|
`mf_dcim`,
|
|
`remf_dcim`,
|
|
`remf_finance`,
|
|
`remf_finance_dcim`,
|
|
`remf_finance_common`,
|
|
`idcsmart_common`,
|
|
]),
|
|
z = computed(() =>
|
|
R.has(String(S.query.module)) ? String(S.query.module) : ``,
|
|
),
|
|
B = computed(() =>
|
|
L.value
|
|
? {
|
|
path: `/servers/server`,
|
|
query: {
|
|
id: L.value,
|
|
},
|
|
}
|
|
: {
|
|
path: `/cloud-servers`,
|
|
},
|
|
),
|
|
V = computed(() => z.value === `mf_dcim` && !I.value);
|
|
function H() {
|
|
((I.value = !0), (P.value = !0));
|
|
}
|
|
function U() {
|
|
((F.value = ``), (I.value = !1), (P.value = !0));
|
|
}
|
|
return (
|
|
watch(P, (e) => {
|
|
e || ((F.value = ``), (I.value = !1));
|
|
}),
|
|
watch([L, z], () => {
|
|
((F.value = ``), (I.value = !1), (P.value = !0));
|
|
}),
|
|
onBeforeUnmount(() => {
|
|
F.value = ``;
|
|
}),
|
|
(t, n) => {
|
|
let i = RemoteConsole,
|
|
s = NuxtLink,
|
|
m = button,
|
|
v = inputtext,
|
|
y = OperatePasswordGate;
|
|
return (
|
|
openBlock(),
|
|
createElementBlock(`main`, O, [
|
|
unref(L) && unref(z) && unref(P) && !unref(V)
|
|
? (openBlock(),
|
|
createBlock(
|
|
i,
|
|
{
|
|
key: 0,
|
|
visible: unref(P),
|
|
"onUpdate:visible": (n[0] ||= (e) =>
|
|
isRef(P) ? (P.value = e) : null),
|
|
"host-id": unref(L),
|
|
module: unref(z),
|
|
"operate-password": unref(F),
|
|
},
|
|
null,
|
|
8,
|
|
[`visible`, `host-id`, `module`, `operate-password`],
|
|
))
|
|
: (openBlock(),
|
|
createElementBlock(
|
|
Fragment,
|
|
{
|
|
key: 1,
|
|
},
|
|
[
|
|
createElementVNode(`header`, k, [
|
|
createVNode(
|
|
s,
|
|
{
|
|
to: unref(B),
|
|
class: `console-page-brand`,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[2] ||= [
|
|
createElementVNode(
|
|
`img`,
|
|
{
|
|
src: logoUrl,
|
|
alt: `破碎工坊云`,
|
|
},
|
|
null,
|
|
-1,
|
|
),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
8,
|
|
[`to`],
|
|
),
|
|
unref(L)
|
|
? (openBlock(),
|
|
createElementBlock(
|
|
`span`,
|
|
A,
|
|
`实例 #` + toDisplayString(unref(L)),
|
|
1,
|
|
))
|
|
: createCommentVNode(``, !0),
|
|
]),
|
|
createElementVNode(`div`, j, [
|
|
!unref(L) || !unref(z)
|
|
? (openBlock(),
|
|
createElementBlock(`section`, M, [
|
|
(n[4] ||= createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-link intro-icon`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
)),
|
|
(n[5] ||= createElementVNode(
|
|
`h1`,
|
|
{
|
|
id: `console-invalid-title`,
|
|
},
|
|
`控制台链接已失效`,
|
|
-1,
|
|
)),
|
|
(n[6] ||= createElementVNode(
|
|
`p`,
|
|
null,
|
|
`请从实例详情页重新打开远程控制台。`,
|
|
-1,
|
|
)),
|
|
createVNode(
|
|
s,
|
|
{
|
|
to: `/cloud-servers`,
|
|
class: `console-return`,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[3] ||= [
|
|
createTextVNode(`返回云服务器`, -1),
|
|
createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-arrow-right`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
]))
|
|
: unref(P)
|
|
? (openBlock(),
|
|
createElementBlock(
|
|
`form`,
|
|
{
|
|
key: 2,
|
|
class: `console-intro console-operation`,
|
|
"aria-labelledby": `console-operation-title`,
|
|
onSubmit: withModifiers(H, [`prevent`]),
|
|
},
|
|
[
|
|
(n[14] ||= createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-desktop intro-icon`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
)),
|
|
(n[15] ||= createElementVNode(
|
|
`h1`,
|
|
{
|
|
id: `console-operation-title`,
|
|
},
|
|
`连接远程控制台`,
|
|
-1,
|
|
)),
|
|
(n[16] ||= createElementVNode(
|
|
`p`,
|
|
null,
|
|
`在此标签页中查看和操作实例屏幕。`,
|
|
-1,
|
|
)),
|
|
createVNode(y, null, {
|
|
default: withCtx(() => [
|
|
(n[11] ||= createElementVNode(
|
|
`label`,
|
|
{
|
|
for: `console-operation-password`,
|
|
},
|
|
[
|
|
createTextVNode(`操作密码`),
|
|
createElementVNode(
|
|
`span`,
|
|
null,
|
|
`选填`,
|
|
),
|
|
],
|
|
-1,
|
|
)),
|
|
createVNode(
|
|
v,
|
|
{
|
|
id: `console-operation-password`,
|
|
modelValue: unref(F),
|
|
"onUpdate:modelValue": (n[1] ||= (
|
|
e,
|
|
) =>
|
|
isRef(F) ? (F.value = e) : null),
|
|
type: `password`,
|
|
autocomplete: `off`,
|
|
fluid: ``,
|
|
"aria-describedby": `console-operation-help`,
|
|
},
|
|
null,
|
|
8,
|
|
[`modelValue`],
|
|
),
|
|
(n[12] ||= createElementVNode(
|
|
`p`,
|
|
{
|
|
id: `console-operation-help`,
|
|
class: `operation-help`,
|
|
},
|
|
`若此实例开启了操作验证,请填写操作密码。`,
|
|
-1,
|
|
)),
|
|
]),
|
|
_: 1,
|
|
}),
|
|
createVNode(m, {
|
|
type: `submit`,
|
|
label: `连接控制台`,
|
|
icon: `pi pi-arrow-right`,
|
|
fluid: ``,
|
|
}),
|
|
createVNode(
|
|
s,
|
|
{
|
|
to: unref(B),
|
|
class: `console-return`,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[13] ||= [
|
|
createTextVNode(`返回实例详情`, -1),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
8,
|
|
[`to`],
|
|
),
|
|
],
|
|
32,
|
|
))
|
|
: (openBlock(),
|
|
createElementBlock(`section`, N, [
|
|
(n[8] ||= createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-desktop intro-icon`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
)),
|
|
(n[9] ||= createElementVNode(
|
|
`h1`,
|
|
{
|
|
id: `console-closed-title`,
|
|
},
|
|
`远程控制台已关闭`,
|
|
-1,
|
|
)),
|
|
(n[10] ||= createElementVNode(
|
|
`p`,
|
|
null,
|
|
`远程会话已结束,实例继续运行。您可以关闭此标签页,或重新打开控制台。`,
|
|
-1,
|
|
)),
|
|
createVNode(m, {
|
|
label: `重新打开控制台`,
|
|
icon: `pi pi-refresh`,
|
|
onClick: U,
|
|
}),
|
|
createVNode(
|
|
s,
|
|
{
|
|
to: unref(B),
|
|
class: `console-return`,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[7] ||= [
|
|
createTextVNode(`返回实例详情`, -1),
|
|
createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-arrow-right`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
8,
|
|
[`to`],
|
|
),
|
|
])),
|
|
]),
|
|
(n[17] ||= createElementVNode(
|
|
`footer`,
|
|
{
|
|
class: `console-page-footer`,
|
|
},
|
|
`关闭控制台不会关闭实例`,
|
|
-1,
|
|
)),
|
|
],
|
|
64,
|
|
)),
|
|
])
|
|
);
|
|
}
|
|
);
|
|
},
|
|
}),
|
|
[[`__scopeId`, `data-v-5f7e2625`]],
|
|
);
|
|
export {};
|
|
export default P;
|
|
</script>
|