修复模板id缺失时无法删除所有者模板的问题

This commit is contained in:
jingrow 2025-08-06 20:16:42 +08:00
parent c1a938226b
commit 3f462923f1
2 changed files with 30 additions and 29 deletions

View File

@ -58,7 +58,7 @@
<!-- 空状态 --> <!-- 空状态 -->
<div v-else-if="filteredOwners.length === 0" class="flex flex-col items-center justify-center py-12 text-gray-500"> <div v-else-if="filteredOwners.length === 0" class="flex flex-col items-center justify-center py-12 text-gray-500">
<UsersIcon class="mb-4 h-12 w-12 text-gray-300" /> <UsersIcon class="mb-4 h-12 w-12 text-gray-300" />
<p class="text-lg font-medium">暂无域名所有者模板</p> <p class="text-lg font-medium">暂无所有者模板</p>
<p class="text-sm">点击上方按钮创建第一个模板</p> <p class="text-sm">点击上方按钮创建第一个模板</p>
</div> </div>
@ -185,7 +185,7 @@
<!-- 标题栏 --> <!-- 标题栏 -->
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0"> <div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<h3 class="text-lg font-medium text-gray-900">域名所有者详情</h3> <h3 class="text-lg font-medium text-gray-900">所有者详细信息</h3>
<button <button
@click="closeDetailDialog" @click="closeDetailDialog"
class="text-gray-400 hover:text-gray-600 transition-colors duration-200" class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
@ -716,7 +716,7 @@ export default {
params: data, params: data,
onSuccess: (response) => { onSuccess: (response) => {
if (response.status === 'Success') { if (response.status === 'Success') {
toast.success('域名所有者模板创建成功!'); toast.success('所有者模板创建成功!');
this.fetchOwners(); // this.fetchOwners(); //
this.handleCloseDialog(); // this.handleCloseDialog(); //
} else { } else {
@ -737,7 +737,7 @@ export default {
} }
}, },
// //
viewOwner(owner) { viewOwner(owner) {
this.selectedOwner = owner; this.selectedOwner = owner;
this.showDetailDialog = true; this.showDetailDialog = true;
@ -804,7 +804,7 @@ export default {
onSuccess: (response) => { onSuccess: (response) => {
if (response.status === 'Success') { if (response.status === 'Success') {
toast.success('域名所有者模板更新成功!'); toast.success('所有者模板更新成功!');
this.fetchOwners(); // this.fetchOwners(); //
this.closeEditDialog(); // this.closeEditDialog(); //
} else { } else {
@ -832,7 +832,7 @@ export default {
async deleteOwner(owner) { async deleteOwner(owner) {
confirmDialog({ confirmDialog({
title: '确认删除', title: '确认删除',
message: `确定要删除域名所有者模板 "<strong>${this.getDisplayName(owner)}</strong>" 吗?<br><br>此操作将不可逆。`, message: `确定要删除所有者模板 "<strong>${this.getDisplayName(owner)}</strong>" 吗?<br><br>此操作将不可逆。`,
primaryAction: { primaryAction: {
label: '删除', label: '删除',
variant: 'solid', variant: 'solid',
@ -843,7 +843,7 @@ export default {
params: { name: owner.name }, params: { name: owner.name },
onSuccess: (response) => { onSuccess: (response) => {
if (response.status === 'Success') { if (response.status === 'Success') {
toast.success('域名所有者模板删除成功!'); toast.success('所有者模板删除成功!');
this.fetchOwners(); // this.fetchOwners(); //
hide(); hide();
} else { } else {

View File

@ -3432,7 +3432,7 @@ def update_domain_owner(name, **data):
@jingrow.whitelist() @jingrow.whitelist()
def delete_domain_owner(name): def delete_domain_owner(name):
"""删除域名所有者模板""" """删除所有者模板"""
try: try:
if not name: if not name:
return {"status": "Error", "message": "域名所有者名称不能为空"} return {"status": "Error", "message": "域名所有者名称不能为空"}
@ -3452,35 +3452,36 @@ def delete_domain_owner(name):
# 检查是否有 c_sysid西部数码模板标识 # 检查是否有 c_sysid西部数码模板标识
c_sysid = getattr(domain_owner, 'c_sysid', None) c_sysid = getattr(domain_owner, 'c_sysid', None)
if not c_sysid:
return {"status": "Error", "message": "域名所有者没有模板标识,无法删除"}
# 先删除西部数码的模板 # 如果有模板标识,先删除西部数码的模板
if c_sysid:
try:
client = get_west_client()
if not client:
return {"status": "Error", "message": "API客户端初始化失败"}
# 调用西部数码删除模板接口
west_result = client.delete_contact_template(c_sysid)
if west_result.get('result') != 200:
error_msg = west_result.get('msg', west_result.get('message', '所有者模板删除失败'))
return {"status": "Error", "message": f"所有者模板删除失败: {error_msg}"}
except Exception as e:
return {"status": "Error", "message": f"所有者模板删除失败: {str(e)}"}
# 删除本地记录(无论是否有模板标识)
try: try:
client = get_west_client() domain_owner.delete(ignore_permissions=True)
if not client: jingrow.db.commit()
return {"status": "Error", "message": "API客户端初始化失败"}
# 调用西部数码删除模板接口 return {"status": "Success", "message": "所有者模板删除成功"}
west_result = client.delete_contact_template(c_sysid)
if west_result.get('result') != 200:
error_msg = west_result.get('msg', west_result.get('message', '所有者模板删除失败'))
return {"status": "Error", "message": f"所有者模板删除失败: {error_msg}"}
except Exception as e: except Exception as e:
return {"status": "Error", "message": f"所有者模板删除失败: {str(e)}"} return {"status": "Error", "message": f"所有者模板删除失败: {str(e)}"}
# 西部数码模板删除成功后,删除本地记录
try:
domain_owner.delete(ignore_permissions=True)
return {"status": "Success", "message": "域名所有者模板删除成功"}
except Exception as e:
return {"status": "Error", "message": f"本地记录删除失败: {str(e)}"}
except Exception as e: except Exception as e:
return {"status": "Error", "message": f"删除失败: {str(e)}"} return {"status": "Error", "message": f"所有者模板删除失败: {str(e)}"}
@jingrow.whitelist() @jingrow.whitelist()