From cf5f7bd86611d83984431e90acdd155bce82a03f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sun, 27 Oct 2024 01:46:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=81=E4=B9=A6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=90=8C=E6=97=B6=E9=83=A8=E7=BD=B2=E5=A4=9A=E4=B8=AA=E7=BD=91?= =?UTF-8?q?=E7=AB=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/data/cert.go | 3 +- internal/data/ssh.go | 2 +- web/src/views/cert/CertView.vue | 43 ++++++++++++++------------ web/src/views/cert/CreateCertModal.vue | 8 ++--- web/src/views/cert/IndexView.vue | 8 ----- 5 files changed, 30 insertions(+), 34 deletions(-) diff --git a/internal/data/cert.go b/internal/data/cert.go index 3fe7ddca..88ba932f 100644 --- a/internal/data/cert.go +++ b/internal/data/cert.go @@ -59,7 +59,8 @@ func (r *certRepo) Create(req *request.CertCreate) (*biz.Cert, error) { } func (r *certRepo) Update(req *request.CertUpdate) error { - return app.Orm.Model(&biz.Cert{}).Where("id = ?", req.ID).Updates(&biz.Cert{ + return app.Orm.Model(&biz.Cert{}).Where("id = ?", req.ID).Select("*").Updates(&biz.Cert{ + ID: req.ID, AccountID: req.AccountID, WebsiteID: req.WebsiteID, DNSID: req.DNSID, diff --git a/internal/data/ssh.go b/internal/data/ssh.go index 970b6b30..567fbd6d 100644 --- a/internal/data/ssh.go +++ b/internal/data/ssh.go @@ -81,7 +81,7 @@ func (r *sshRepo) Update(req *request.SSHUpdate) error { Remark: req.Remark, } - return app.Orm.Model(ssh).Updates(ssh).Error + return app.Orm.Model(ssh).Where("id = ?", req.ID).Select("*").Updates(ssh).Error } func (r *sshRepo) Delete(id uint) error { diff --git a/web/src/views/cert/CertView.vue b/web/src/views/cert/CertView.vue index 294631cc..afdf1fde 100644 --- a/web/src/views/cert/CertView.vue +++ b/web/src/views/cert/CertView.vue @@ -20,10 +20,10 @@ let messageReactive: MessageReactive | null = null const updateCertModel = ref({ domains: [], - dns_id: 0, type: 'P256', + dns_id: null, account_id: null, - website_id: 0, + website_id: null, auto_renew: true }) const updateCertModal = ref(false) @@ -35,8 +35,8 @@ const showCertModel = ref({ }) const deployCertModal = ref(false) const deployCertModel = ref({ - id: 0, - website_id: 0 + id: null, + websites: [] }) const columns: any = [ @@ -97,6 +97,9 @@ const columns: any = [ resizable: true, ellipsis: { tooltip: true }, render(row: any) { + if (row.account_id == 0) { + return h(NTag, null, { default: () => '无' }) + } return h(NFlex, null, { default: () => [ h(NTag, null, { default: () => (row.account?.email == null ? '无' : row.account.email) }), @@ -255,12 +258,10 @@ const columns: any = [ size: 'small', type: 'info', onClick: () => { - if (row.website_id != 0) { - deployCertModel.value.website_id = row.website_id - } else { - deployCertModel.value.website_id = 0 - } deployCertModel.value.id = row.id + if (row.website_id != 0) { + deployCertModel.value.websites.push(row.website_id) + } deployCertModal.value = true } }, @@ -318,10 +319,10 @@ const columns: any = [ onClick: () => { updateCert.value = row.id updateCertModel.value.domains = row.domains - updateCertModel.value.dns_id = row.dns_id updateCertModel.value.type = row.type - updateCertModel.value.account_id = row.account_id - updateCertModel.value.website_id = row.website_id + updateCertModel.value.dns_id = row.dns_id == 0 ? null : row.dns_id + updateCertModel.value.account_id = row.account_id == 0 ? null : row.account_id + updateCertModel.value.website_id = row.website_id == 0 ? null : row.website_id updateCertModel.value.auto_renew = row.auto_renew updateCertModal.value = true } @@ -399,20 +400,21 @@ const handleUpdateCert = async () => { updateCertModal.value = false onPageChange(1) updateCertModel.value.domains = [] - updateCertModel.value.dns_id = 0 updateCertModel.value.type = 'P256' - updateCertModel.value.account_id = 0 - updateCertModel.value.website_id = 0 + updateCertModel.value.dns_id = null + updateCertModel.value.account_id = null + updateCertModel.value.website_id = null updateCertModel.value.auto_renew = true } const handleDeployCert = async () => { - await cert.deploy(deployCertModel.value.id, deployCertModel.value.website_id) + for (const website of deployCertModel.value.websites) { + await cert.deploy(deployCertModel.value.id, website) + } window.$message.success('部署成功') deployCertModal.value = false - deployCertModel.value.id = 0 - deployCertModel.value.website_id = 0 - onPageChange(1) + deployCertModel.value.id = null + deployCertModel.value.websites = [] } const handleShowModalClose = () => { @@ -519,9 +521,10 @@ onUnmounted(() => { diff --git a/web/src/views/cert/CreateCertModal.vue b/web/src/views/cert/CreateCertModal.vue index 5c3ce487..769bceff 100644 --- a/web/src/views/cert/CreateCertModal.vue +++ b/web/src/views/cert/CreateCertModal.vue @@ -15,10 +15,10 @@ const { algorithms, websites, accounts, dns } = toRefs(props) const model = ref({ domains: [], - dns_id: 0, + dns_id: null, type: 'P256', account_id: null, - website_id: 0, + website_id: null, auto_renew: true }) @@ -29,8 +29,8 @@ const handleCreateCert = async () => { model.value.domains = [] model.value.dns_id = 0 model.value.type = 'P256' - model.value.account_id = 0 - model.value.website_id = 0 + model.value.account_id = null + model.value.website_id = null model.value.auto_renew = true window.$bus.emit('cert:refresh-cert') window.$bus.emit('cert:refresh-async') diff --git a/web/src/views/cert/IndexView.vue b/web/src/views/cert/IndexView.vue index b8409e59..47ee69e1 100644 --- a/web/src/views/cert/IndexView.vue +++ b/web/src/views/cert/IndexView.vue @@ -33,10 +33,6 @@ const getAsyncData = async () => { algorithms.value = algorithmData websites.value = [] - websites.value.push({ - label: '无', - value: 0 - }) app.isInstalled('nginx').then(async (res) => { if (res.data.installed) { const { data: websiteData } = await website.list(1, 10000) @@ -51,10 +47,6 @@ const getAsyncData = async () => { const { data: dnsData } = await cert.dns(1, 10000) dns.value = [] - dns.value.push({ - label: '无', - value: 0 - }) for (const item of dnsData.items) { dns.value.push({ label: item.name,