357 lines
12 KiB
Vue
357 lines
12 KiB
Vue
<script>
|
|
import "~/assets/styles/DcimDomains.BT2s5hGW.css";
|
|
import { toDisplayString } from "vue";
|
|
import { onMounted } 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 { createElementBlock } 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 { NuxtLink } from "#components";
|
|
import { sanitizeMessage } from "~/lib/auth.js";
|
|
import { useApi } from "~/lib/auth.js";
|
|
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 tag from "primevue/tag";
|
|
var E = {
|
|
class: `domains`,
|
|
},
|
|
D = {
|
|
class: `toolbar`,
|
|
},
|
|
O = {
|
|
class: `empty`,
|
|
},
|
|
k = Object.assign(
|
|
_plugin_vue_export_helper_t(
|
|
defineComponent({
|
|
__name: `DcimDomains`,
|
|
props: {
|
|
hostId: {},
|
|
},
|
|
setup(f) {
|
|
let y = f,
|
|
k = useApi(),
|
|
A = ref(null),
|
|
j = ref(``),
|
|
M = ref(!1),
|
|
N = ref([]),
|
|
P = ref(0),
|
|
F = ref(0),
|
|
I = 0,
|
|
L = !1;
|
|
async function R() {
|
|
let e = ++I,
|
|
t = y.hostId;
|
|
((M.value = !0), (j.value = ``), (N.value = []));
|
|
try {
|
|
let n = await k.get(`/domain_whitelist/host`);
|
|
if (L || e !== I || t !== y.hostId) return;
|
|
A.value = (n.list || []).some((e) => String(e.id) === t);
|
|
let r = await k.get(`/domain_whitelist/record`, {
|
|
host_id: t,
|
|
page: P.value + 1,
|
|
limit: 10,
|
|
});
|
|
if (L || e !== I || t !== y.hostId) return;
|
|
((N.value = r.list || []), (F.value = Number(r.count || 0)));
|
|
} catch (t) {
|
|
!L &&
|
|
e === I &&
|
|
(j.value =
|
|
t instanceof Error ? t.message : `域名白名单加载失败`);
|
|
} finally {
|
|
!L && e === I && (M.value = !1);
|
|
}
|
|
}
|
|
return (
|
|
watch(
|
|
() => y.hostId,
|
|
() => {
|
|
((A.value = null), (P.value = 0), R());
|
|
},
|
|
),
|
|
onMounted(R),
|
|
onBeforeUnmount(() => {
|
|
((L = !0), I++);
|
|
}),
|
|
(t, n) => {
|
|
let r = message,
|
|
a = NuxtLink,
|
|
_ = button,
|
|
y = column,
|
|
k = tag,
|
|
I = datatable,
|
|
L = paginator;
|
|
return (
|
|
openBlock(),
|
|
createElementBlock(`div`, E, [
|
|
createVNode(
|
|
r,
|
|
{
|
|
severity: `info`,
|
|
closable: !1,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[1] ||= [
|
|
createTextVNode(
|
|
`域名白名单用于为当前实例提交域名访问申请,审核结果以平台记录为准。`,
|
|
-1,
|
|
),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
createElementVNode(`div`, D, [
|
|
(n[3] ||= createElementVNode(`h3`, null, `域名白名单`, -1)),
|
|
unref(A)
|
|
? (openBlock(),
|
|
createBlock(
|
|
a,
|
|
{
|
|
key: 0,
|
|
class: `p-button p-button-sm`,
|
|
to: {
|
|
path: `/security/domain-whitelist`,
|
|
query: {
|
|
host_id: f.hostId,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[2] ||= [
|
|
createElementVNode(
|
|
`i`,
|
|
{
|
|
class: `pi pi-plus`,
|
|
"aria-hidden": `true`,
|
|
},
|
|
null,
|
|
-1,
|
|
),
|
|
createTextVNode(`管理 / 添加域名`, -1),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
8,
|
|
[`to`],
|
|
))
|
|
: createCommentVNode(``, !0),
|
|
createVNode(
|
|
_,
|
|
{
|
|
label: `刷新`,
|
|
icon: `pi pi-refresh`,
|
|
severity: `secondary`,
|
|
text: ``,
|
|
size: `small`,
|
|
loading: unref(M),
|
|
onClick: R,
|
|
},
|
|
null,
|
|
8,
|
|
[`loading`],
|
|
),
|
|
]),
|
|
unref(j)
|
|
? (openBlock(),
|
|
createBlock(
|
|
r,
|
|
{
|
|
key: 0,
|
|
severity: `error`,
|
|
closable: !1,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
createTextVNode(toDisplayString(unref(j)), 1),
|
|
]),
|
|
_: 1,
|
|
},
|
|
))
|
|
: unref(A) === !1
|
|
? (openBlock(),
|
|
createBlock(
|
|
r,
|
|
{
|
|
key: 1,
|
|
severity: `info`,
|
|
closable: !1,
|
|
},
|
|
{
|
|
default: withCtx(() => [
|
|
...(n[4] ||= [
|
|
createTextVNode(
|
|
`此实例尚未配置可用的域名白名单入口,暂不能提交新域名。`,
|
|
-1,
|
|
),
|
|
]),
|
|
]),
|
|
_: 1,
|
|
},
|
|
))
|
|
: createCommentVNode(``, !0),
|
|
createVNode(
|
|
I,
|
|
{
|
|
value: unref(N),
|
|
loading: unref(M),
|
|
"data-key": `id`,
|
|
scrollable: ``,
|
|
},
|
|
{
|
|
empty: withCtx(() => [
|
|
createElementVNode(
|
|
`div`,
|
|
O,
|
|
toDisplayString(
|
|
unref(j) ? `记录暂不可用` : `暂无域名记录`,
|
|
),
|
|
1,
|
|
),
|
|
]),
|
|
default: withCtx(() => [
|
|
createVNode(
|
|
y,
|
|
{
|
|
header: `域名`,
|
|
},
|
|
{
|
|
body: withCtx(({ data: t }) => [
|
|
createTextVNode(
|
|
toDisplayString(t.domains?.join(`、`) || `—`),
|
|
1,
|
|
),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
createVNode(
|
|
y,
|
|
{
|
|
header: `状态`,
|
|
},
|
|
{
|
|
body: withCtx(({ data: e }) => [
|
|
createVNode(
|
|
k,
|
|
{
|
|
value:
|
|
e.status === 1
|
|
? `已通过`
|
|
: e.status === -1
|
|
? `已驳回`
|
|
: `处理中`,
|
|
severity:
|
|
e.status === 1
|
|
? `success`
|
|
: e.status === -1
|
|
? `danger`
|
|
: `warn`,
|
|
},
|
|
null,
|
|
8,
|
|
[`value`, `severity`],
|
|
),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
createVNode(
|
|
y,
|
|
{
|
|
header: `驳回原因`,
|
|
},
|
|
{
|
|
body: withCtx(({ data: t }) => [
|
|
createTextVNode(
|
|
toDisplayString(
|
|
unref(sanitizeMessage)(t.reject_reason) ||
|
|
`—`,
|
|
),
|
|
1,
|
|
),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
createVNode(y, {
|
|
field: `remark`,
|
|
header: `备注`,
|
|
}),
|
|
createVNode(
|
|
y,
|
|
{
|
|
header: `创建时间`,
|
|
},
|
|
{
|
|
body: withCtx(({ data: n }) => [
|
|
createTextVNode(
|
|
toDisplayString(
|
|
(`formatTime` in t
|
|
? t.formatTime
|
|
: unref(dict_r))(n.create_time),
|
|
),
|
|
1,
|
|
),
|
|
]),
|
|
_: 1,
|
|
},
|
|
),
|
|
]),
|
|
_: 1,
|
|
},
|
|
8,
|
|
[`value`, `loading`],
|
|
),
|
|
unref(F) > 10
|
|
? (openBlock(),
|
|
createBlock(
|
|
L,
|
|
{
|
|
key: 2,
|
|
rows: 10,
|
|
first: unref(P) * 10,
|
|
"total-records": unref(F),
|
|
onPage: (n[0] ||= (e) => {
|
|
((P.value = e.page), R());
|
|
}),
|
|
},
|
|
null,
|
|
8,
|
|
[`first`, `total-records`],
|
|
))
|
|
: createCommentVNode(``, !0),
|
|
])
|
|
);
|
|
}
|
|
);
|
|
},
|
|
}),
|
|
[[`__scopeId`, `data-v-6c2c5ee1`]],
|
|
),
|
|
{
|
|
__name: `DcimDomains`,
|
|
},
|
|
);
|
|
export {};
|
|
export default k;
|
|
</script>
|