修复增加修改删除域名解析记录时无法自动刷新页面的问题

This commit is contained in:
jingrow 2025-08-05 05:41:22 +08:00
parent 7e40d5c78e
commit 4f9a4fedbe

View File

@ -7,7 +7,7 @@
<div class="flex gap-2"> <div class="flex gap-2">
<Button <Button
@click="refreshRecords" @click="refreshRecords"
:loading="loading" :loading="$resources.dnsRecords.loading"
variant="outline" variant="outline"
size="sm" size="sm"
> >
@ -36,7 +36,7 @@
</div> </div>
<!-- 加载状态 --> <!-- 加载状态 -->
<div v-if="loading" class="flex items-center justify-center py-12"> <div v-if="$resources.dnsRecords.loading" class="flex items-center justify-center py-12">
<div class="flex items-center space-x-2"> <div class="flex items-center space-x-2">
<Loader2Icon class="h-5 w-5 animate-spin text-gray-500" /> <Loader2Icon class="h-5 w-5 animate-spin text-gray-500" />
<span class="text-gray-500">正在加载DNS记录...</span> <span class="text-gray-500">正在加载DNS记录...</span>
@ -44,18 +44,18 @@
</div> </div>
<!-- 错误状态 --> <!-- 错误状态 -->
<div v-else-if="error" class="rounded-md border border-red-200 bg-red-50 p-4"> <div v-else-if="$resources.dnsRecords.error" class="rounded-md border border-red-200 bg-red-50 p-4">
<div class="flex items-center"> <div class="flex items-center">
<AlertCircleIcon class="h-5 w-5 text-red-400 mr-2" /> <AlertCircleIcon class="h-5 w-5 text-red-400 mr-2" />
<div> <div>
<h3 class="text-sm font-medium text-red-800">加载失败</h3> <h3 class="text-sm font-medium text-red-800">加载失败</h3>
<p class="text-sm text-red-700 mt-1">{{ error }}</p> <p class="text-sm text-red-700 mt-1">{{ $resources.dnsRecords.error }}</p>
</div> </div>
</div> </div>
</div> </div>
<!-- DNS记录列表 --> <!-- DNS记录列表 -->
<div v-else-if="!loading && !error" class="space-y-4"> <div v-else-if="!$resources.dnsRecords.loading && !$resources.dnsRecords.error" class="space-y-4">
<div class="overflow-hidden rounded-md border border-gray-200"> <div class="overflow-hidden rounded-md border border-gray-200">
<table class="min-w-full divide-y divide-gray-200"> <table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50"> <thead class="bg-gray-50">
@ -324,7 +324,7 @@
</div> </div>
<!-- 空状态 --> <!-- 空状态 -->
<div v-else-if="!loading && !error && dnsRecords.length === 0" class="text-center py-12"> <div v-else-if="!$resources.dnsRecords.loading && !$resources.dnsRecords.error && dnsRecords.length === 0" class="text-center py-12">
<GlobeIcon class="mx-auto h-12 w-12 text-gray-400" /> <GlobeIcon class="mx-auto h-12 w-12 text-gray-400" />
<h3 class="mt-2 text-sm font-medium text-gray-900">暂无DNS记录</h3> <h3 class="mt-2 text-sm font-medium text-gray-900">暂无DNS记录</h3>
<p class="mt-1 text-sm text-gray-500">开始添加您的第一个DNS解析记录</p> <p class="mt-1 text-sm text-gray-500">开始添加您的第一个DNS解析记录</p>
@ -358,8 +358,6 @@ export default {
props: ['domain'], props: ['domain'],
data() { data() {
return { return {
loading: false,
error: null,
dnsRecords: [], dnsRecords: [],
pagination: { pagination: {
pageno: 1, pageno: 1,
@ -370,68 +368,68 @@ export default {
selectedRecords: [] // ID selectedRecords: [] // ID
}; };
}, },
methods: { resources: {
// DNS dnsRecords() {
async loadDNSRecords() { return {
if (!this.$domain.pg?.domain) { url: 'jcloud.api.domain_west.get_jingrow_domain_dns_records',
this.error = '域名信息不存在'; params: {
return; domain: this.$domain.pg?.domain,
} limit: this.pagination.limit,
pageno: this.pagination.pageno
this.loading = true; },
this.error = null; auto: true,
onSuccess: (response) => {
try { if (response.status === 'success' && response.data) {
const request = createResource({ //
url: 'jcloud.api.domain_west.get_jingrow_domain_dns_records', this.dnsRecords = (response.data.items || []).map(record => ({
params: { ...record,
domain: this.$domain.pg.domain, editing: false,
limit: this.pagination.limit, isNew: false
pageno: this.pagination.pageno }));
},
onSuccess: (response) => { this.pagination = {
this.loading = false; pageno: response.data.pageno || 1,
if (response.status === 'success' && response.data) { limit: response.data.limit || 20,
// total: response.data.total || 0,
this.dnsRecords = (response.data.items || []).map(record => ({ pagecount: response.data.pagecount || 0
...record, };
editing: false, } else {
isNew: false this.error = response.message || '获取DNS记录失败';
}));
this.pagination = {
pageno: response.data.pageno || 1,
limit: response.data.limit || 20,
total: response.data.total || 0,
pagecount: response.data.pagecount || 0
};
} else {
this.error = response.message || '获取DNS记录失败';
}
},
onError: (error) => {
this.loading = false;
this.error = getToastErrorMessage(error);
} }
}); },
request.submit(); onError: (error) => {
} catch (error) { this.error = getToastErrorMessage(error);
this.loading = false; }
this.error = '获取DNS记录时发生错误'; };
console.error('加载DNS记录失败:', error); }
} },
}, methods: {
// //
refreshRecords() { refreshRecords() {
this.loadDNSRecords(); //
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
}, },
// //
changePage(page) { changePage(page) {
if (page >= 1 && page <= this.pagination.pagecount) { if (page >= 1 && page <= this.pagination.pagecount) {
this.pagination.pageno = page; this.pagination.pageno = page;
this.loadDNSRecords(); //
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
} }
}, },
@ -565,8 +563,17 @@ export default {
toast.success('DNS记录保存成功'); toast.success('DNS记录保存成功');
record.editing = false; record.editing = false;
record.isNew = false; record.isNew = false;
// //
this.loadDNSRecords(); setTimeout(() => {
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
}, 1000);
} else { } else {
toast.error(response.message || '保存DNS记录失败'); toast.error(response.message || '保存DNS记录失败');
} }
@ -629,7 +636,16 @@ export default {
if (response.status === 'success') { if (response.status === 'success') {
toast.success('DNS记录删除成功'); toast.success('DNS记录删除成功');
hide(); hide();
this.loadDNSRecords(); setTimeout(() => {
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
}, 1000);
} else { } else {
toast.error(response.message || '删除DNS记录失败'); toast.error(response.message || '删除DNS记录失败');
} }
@ -690,12 +706,30 @@ export default {
if (response.status === 'success') { if (response.status === 'success') {
toast.success(response.message || `批量删除 ${validRecordIds.length} 条DNS记录成功`); toast.success(response.message || `批量删除 ${validRecordIds.length} 条DNS记录成功`);
hide(); hide();
this.loadDNSRecords(); setTimeout(() => {
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
}, 1000);
this.selectedRecords = []; // this.selectedRecords = []; //
} else if (response.status === 'partial_success') { } else if (response.status === 'partial_success') {
toast.success(response.message || '批量删除部分成功'); toast.success(response.message || '批量删除部分成功');
hide(); hide();
this.loadDNSRecords(); setTimeout(() => {
this.$resources.dnsRecords.update({
params: {
domain: this.$domain.pg?.domain,
limit: this.pagination.limit,
pageno: this.pagination.pageno
}
});
this.$resources.dnsRecords.reload();
}, 1000);
this.selectedRecords = []; // this.selectedRecords = []; //
} else { } else {
toast.error(response.message || '批量删除DNS记录失败'); toast.error(response.message || '批量删除DNS记录失败');
@ -788,7 +822,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.loadDNSRecords(); // DNSresourcesauto: true
} }
}; };
</script> </script>