From bd6496c1cbcbd97c8b5245a76f1064ae758c9b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sun, 27 Oct 2024 01:22:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E7=AB=99=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E8=AF=81=E4=B9=A6=E5=A1=AB=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/website/EditView.vue | 73 ++++++++++++++++++++++-------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/web/src/views/website/EditView.vue b/web/src/views/website/EditView.vue index 2127ff00..46c4168b 100644 --- a/web/src/views/website/EditView.vue +++ b/web/src/views/website/EditView.vue @@ -7,8 +7,10 @@ import Editor from '@guolao/vue-monaco-editor' import type { MessageReactive } from 'naive-ui' import { NButton } from 'naive-ui' +import cert from '@/api/panel/cert' import dashboard from '@/api/panel/dashboard' import website from '@/api/panel/website' +import type { Cert } from '@/views/cert/types' import type { WebsiteListen, WebsiteSetting } from '@/views/website/types' let messageReactive: MessageReactive | null = null @@ -56,18 +58,38 @@ const installedDbAndPhp = ref({ } ] }) +const certs = ref([] as Cert[]) -const getPhpAndDb = async () => { +const title = computed(() => { + if (setting.value) { + return `编辑网站 - ${setting.value.name}` + } + return '编辑网站 - 加载中...' +}) +const certOptions = computed(() => { + return certs.value.map((item) => ({ + label: item.domains.join(', '), + value: item.id + })) +}) +const selectedCert = ref(null) + +const fetchPhpAndDb = async () => { const { data } = await dashboard.installedDbAndPhp() installedDbAndPhp.value = data } -const getWebsiteSetting = async () => { +const fetchWebsiteSetting = async () => { await website.config(Number(id)).then((res) => { setting.value = res.data }) } +const fetchCertList = async () => { + const { data } = await cert.certs(1, 10000) + certs.value = data.items +} + const handleSave = async () => { // 如果没有任何监听地址设置了https,则自动添加443 if (setting.value.https && !setting.value.listens.some((item) => item.https)) { @@ -87,14 +109,14 @@ const handleSave = async () => { } await website.saveConfig(Number(id), setting.value).then(() => { - getWebsiteSetting() + fetchWebsiteSetting() window.$message.success('保存成功') }) } const handleReset = async () => { await website.resetConfig(Number(id)).then(() => { - getWebsiteSetting() + fetchWebsiteSetting() window.$message.success('重置成功') }) } @@ -106,7 +128,7 @@ const handleObtainCert = async () => { await website .obtainCert(Number(id)) .then(() => { - getWebsiteSetting() + fetchWebsiteSetting() window.$message.success('签发成功') }) .finally(() => { @@ -114,20 +136,21 @@ const handleObtainCert = async () => { }) } +const handleSelectCert = (value: number) => { + const cert = certs.value.find((item) => item.id === value) + if (cert) { + setting.value.ssl_certificate = cert.cert + setting.value.ssl_certificate_key = cert.key + } +} + const clearLog = async () => { await website.clearLog(Number(id)).then(() => { - getWebsiteSetting() + fetchWebsiteSetting() window.$message.success('清空成功') }) } -const title = computed(() => { - if (setting.value) { - return `编辑网站 - ${setting.value.name}` - } - return '编辑网站 - 加载中...' -}) - const onCreateListen = () => { return { address: '', @@ -137,8 +160,9 @@ const onCreateListen = () => { } onMounted(async () => { - await getWebsiteSetting() - await getPhpAndDb() + await fetchWebsiteSetting() + await fetchPhpAndDb() + await fetchCertList() }) @@ -270,9 +294,18 @@ onMounted(async () => { - - - + + + + + + + + @@ -290,14 +323,14 @@ onMounted(async () => {