浏览代码

enhance(dns_credential): add provider and name filtering options

0xJacky 2 周之前
父节点
当前提交
16aed0c1fe
共有 2 个文件被更改,包括 32 次插入2 次删除
  1. 4 1
      api/certificate/dns_credential.go
  2. 28 1
      app/src/views/certificate/DNSCredential.vue

+ 4 - 1
api/certificate/dns_credential.go

@@ -36,7 +36,10 @@ func GetDnsCredential(c *gin.Context) {
 }
 
 func GetDnsCredentialList(c *gin.Context) {
-	cosy.Core[model.DnsCredential](c).SetFussy("provider").PagingList()
+	cosy.Core[model.DnsCredential](c).
+		SetEqual("provider").
+		SetFussy("name").
+		PagingList()
 }
 
 type DnsCredentialManageJson struct {

+ 28 - 1
app/src/views/certificate/DNSCredential.vue

@@ -1,10 +1,18 @@
 <script setup lang="tsx">
 import type { CustomRenderArgs, StdTableColumn } from '@uozi-admin/curd'
+import type { DNSProvider } from '@/api/auto_cert'
 import type { DnsCredential } from '@/api/dns_credential'
 import { datetimeRender, StdCurd } from '@uozi-admin/curd'
+import auto_cert from '@/api/auto_cert'
 import dns_credential from '@/api/dns_credential'
 import DNSChallenge from './components/DNSChallenge.vue'
 
+const dnsProviders = ref<DNSProvider[]>([])
+
+onMounted(async () => {
+  dnsProviders.value = await auto_cert.get_dns_providers()
+})
+
 const columns: StdTableColumn[] = [{
   title: () => $gettext('Name'),
   dataIndex: 'name',
@@ -13,14 +21,33 @@ const columns: StdTableColumn[] = [{
   edit: {
     type: 'input',
   },
+  search: true,
 }, {
   title: () => $gettext('Provider'),
-  dataIndex: ['config', 'name'],
+  dataIndex: 'provider',
   customRender: ({ record }: CustomRenderArgs) => {
     return record.provider
   },
   sorter: true,
   pure: true,
+  search: {
+    type: 'select',
+    select: {
+      remote: {
+        valueKey: 'name',
+        labelKey: 'name',
+        api: async () => {
+          return {
+            data: await auto_cert.get_dns_providers(),
+          }
+        },
+      },
+      showSearch: true,
+      filterOption: (input, option) => {
+        return option?.label?.toLowerCase().includes(input.toLowerCase()) ?? false
+      },
+    },
+  },
 }, {
   title: () => $gettext('Configuration'),
   dataIndex: 'code',