perf: 输入证书域名时,支持点击导入域名

This commit is contained in:
xiaojunnuo
2026-01-25 22:57:59 +08:00
parent bca0eefc83
commit 40be42406c
8 changed files with 118 additions and 37 deletions
@@ -3,11 +3,10 @@ import { Modal, notification } from "ant-design-vue";
import { Ref, ref } from "vue";
import { useRouter } from "vue-router";
import * as api from "./api";
import DomainImportTaskStatus from "./import.vue";
import { useDomainImportManage } from "./use";
import { Dicts } from "/@/components/plugins/lib/dicts";
import { useSettingStore } from "/@/store/settings";
import { useUserStore } from "/@/store/user";
import { useFormDialog } from "/@/use/use-dialog";
import { createAccessApi } from "/@/views/certd/access/api";
import { useI18n } from "/src/locales";
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
@@ -51,7 +50,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
url: "pi/dnsProvider/dnsProviderTypeDict",
});
const { openFormDialog } = useFormDialog();
const openDomainImportManageDialog = useDomainImportManage();
return {
crudOptions: {
settings: {
@@ -104,13 +103,8 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
color: "gold",
icon: "mingcute:vip-1-line",
click: async () => {
settingStore.checkPlus();
await openFormDialog({
title: "从域名提供商导入域名",
body: () => {
return <DomainImportTaskStatus />;
},
onSubmit: async (form: any) => {
await openDomainImportManageDialog({
afterSubmit: res => {
crudExpose.doRefresh();
},
});
@@ -42,7 +42,7 @@
<div v-else>未执行</div>
</td>
<td>
<fs-button type="primary" icon="ion:play-outline" @click="startTask(item)">执行</fs-button>
<fs-button type="primary" icon="ion:play-outline" :disabled="item.task?.status === 'running'" @click="startTask(item)">执行</fs-button>
<fs-button type="primary" class="ml-2" danger icon="ion:trash-outline" @click="deleteTask(item)">删除</fs-button>
</td>
</tr>
@@ -53,7 +53,7 @@
</template>
<script setup lang="ts">
import { onMounted, ref } from "vue";
import { onMounted, onUnmounted, ref } from "vue";
import * as api from "./api";
import { Modal } from "ant-design-vue";
import { useDomainImport } from "./use";
@@ -90,7 +90,10 @@ const openDomainImportDialog = useDomainImport();
async function addTask() {
await openDomainImportDialog({
afterSubmit: async () => {
afterSubmit: async (res?: any) => {
if (res) {
await api.ImportTaskStart(res.key);
}
await loadImportTaskStatus();
},
});
@@ -105,8 +108,16 @@ async function editTask(item: any) {
});
}
const checkIntervalRef = ref();
onMounted(async () => {
await loadImportTaskStatus();
checkIntervalRef.value = setInterval(async () => {
await loadImportTaskStatus();
}, 3000);
});
onUnmounted(() => {
clearInterval(checkIntervalRef.value);
});
</script>
@@ -3,7 +3,8 @@ import * as api from "./api";
import { useFormDialog } from "/@/use/use-dialog";
import { compute } from "@fast-crud/fast-crud";
import { Dicts } from "/@/components/plugins/lib/dicts";
import { useSettingStore } from "/@/store/settings";
import DomainImportTaskStatus from "./import.vue";
export function useDomainImport() {
const { openFormDialog } = useFormDialog();
@@ -49,7 +50,7 @@ export function useDomainImport() {
},
};
return function openDomainImportDialog(req: { afterSubmit?: () => void; form?: any }) {
return function openDomainImportDialog(req: { afterSubmit?: (res?: any) => void; form?: any }) {
openFormDialog({
title: "从域名提供商导入域名",
columns: columns,
@@ -57,13 +58,33 @@ export function useDomainImport() {
...req.form,
},
onSubmit: async (form: any) => {
await api.ImportTaskSave({
const res = await api.ImportTaskSave({
key: form.key,
dnsProviderType: form.dnsProviderType,
dnsProviderAccessId: form.dnsProviderAccessId,
});
if (req.afterSubmit) {
req.afterSubmit();
req.afterSubmit(res);
}
},
});
};
}
export function useDomainImportManage() {
const { openFormDialog } = useFormDialog();
const settingStore = useSettingStore();
return async function openDomainImportManageDialog(req: { afterSubmit?: (res?: any) => void; form?: any; zIndex?: number }) {
settingStore.checkPlus();
await openFormDialog({
title: "从域名提供商导入域名",
body: () => {
return <DomainImportTaskStatus />;
},
zIndex: req.zIndex,
onSubmit: async (form: any) => {
if (req.afterSubmit) {
req.afterSubmit(form);
}
},
});