From c7d55d99d8e5c1fa07cc61acdd3083093d4dfc2e Mon Sep 17 00:00:00 2001 From: jingrow Date: Sat, 9 Aug 2025 22:03:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=90=8C=E6=AD=A5=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E6=95=B0=E6=8D=AE=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jcloud/api/aliyun_server_light.py | 4 ++- .../pagetype/jsite_server/jsite_server.js | 36 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/jcloud/api/aliyun_server_light.py b/jcloud/api/aliyun_server_light.py index 8e884a1..eaaa29b 100644 --- a/jcloud/api/aliyun_server_light.py +++ b/jcloud/api/aliyun_server_light.py @@ -1567,11 +1567,13 @@ def update_server_record(instance_ids): server.plan_price = float(plan['origin_price']) break - sync_firewall_rules(instance_id) # 保存更新 server.save(ignore_permissions=True) jingrow.db.commit() + # 同步防火墙规则(在保存服务器信息之后) + sync_firewall_rules(instance_id) + return { "success": True, "message": "服务器信息更新成功", diff --git a/jcloud/jcloud/pagetype/jsite_server/jsite_server.js b/jcloud/jcloud/pagetype/jsite_server/jsite_server.js index 3bb1ed7..344899b 100644 --- a/jcloud/jcloud/pagetype/jsite_server/jsite_server.js +++ b/jcloud/jcloud/pagetype/jsite_server/jsite_server.js @@ -117,6 +117,16 @@ jingrow.ui.form.on("Jsite Server", { } ); }); + + frm.add_custom_button(__('同步服务器数据'), function() { + // 弹出确认对话框 + jingrow.confirm( + __('确定要同步服务器数据吗?这将从阿里云同步最新的服务器信息,包括状态、IP地址、系统信息、规格和防火墙规则等。'), + function() { + sync_server_data(frm); + } + ); + }); } // 为password字段添加眼睛图标 @@ -258,3 +268,29 @@ function sync_firewall_rules(frm) { } }); } + +function sync_server_data(frm) { + jingrow.call({ + method: 'jcloud.api.aliyun_server_light.update_server_record', + args: { + instance_ids: JSON.stringify([frm.pg.instance_id]) + }, + callback: function(r) { + if (r.message && r.message.success) { + jingrow.msgprint({ + title: __('成功'), + message: r.message.message || __('服务器数据同步成功'), + indicator: 'green' + }); + // 刷新表单以显示最新的服务器数据 + frm.reload_pg(); + } else { + jingrow.msgprint({ + title: __('错误'), + message: r.message ? r.message.message : __('同步服务器数据失败'), + indicator: 'red' + }); + } + } + }); +}