diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java
index 06b8d2c9..10f354c7 100644
--- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java
+++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/ar/ArBillController.java
@@ -283,7 +283,7 @@ public class ArBillController extends BaseController {
/**
* 下载已成功生成的导出文件;文件内容由服务层从临时文件或配置存储读取。
*/
- @PreAuthorize("@ss.hasPermi('ar:bill:export')")
+ @PreAuthorize("@ss.hasPermi('ar:bill:download')")
@GetMapping("/export/{exportId}/download")
public void download(@PathVariable Long exportId, HttpServletResponse response) throws Exception {
billService.downloadExport(exportId, response);
diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java
index 8199fb39..7fd50e29 100644
--- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java
+++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/ProductController.java
@@ -85,7 +85,7 @@ public class ProductController extends BaseController
return success(task);
}
- @PreAuthorize("@ss.hasPermi('price:product:query')")
+// @PreAuthorize("@ss.hasPermi('price:product:query')")
@GetMapping("/{productCode}/countries")
public AjaxResult countries(@PathVariable String productCode,
@RequestParam(required = false) Date effectiveDate,
diff --git a/bms-back/sql/20261028_ar_bill_export_download_perm.sql b/bms-back/sql/20261028_ar_bill_export_download_perm.sql
new file mode 100644
index 00000000..d2143a34
--- /dev/null
+++ b/bms-back/sql/20261028_ar_bill_export_download_perm.sql
@@ -0,0 +1,64 @@
+-- 应收账单导出与下载权限拆分
+-- ar:bill:export 继续用于账单列表导出和发起账单明细导出。
+-- 新增 ar:bill:download 用于下载已生成的账单明细文件。
+-- 新权限仅在首次创建时继承原 ar:bill:export 角色授权,后续可由管理员独立调整。
+
+START TRANSACTION;
+
+UPDATE sys_menu
+ SET menu_name = '账单导出',
+ remark = '应收账单列表导出及账单明细导出任务'
+ WHERE perms = 'ar:bill:export';
+
+SET @ar_bill_download_perm_created = 0;
+
+INSERT INTO sys_menu (
+ menu_name, parent_id, order_num, path, component, query, route_name,
+ is_frame, is_cache, menu_type, visible, status, perms, icon,
+ create_by, create_time, remark
+)
+SELECT '账单下载', export_menu.parent_id,
+ (SELECT COALESCE(MAX(order_num), 0) + 1
+ FROM sys_menu child_menu
+ WHERE child_menu.parent_id = export_menu.parent_id),
+ '', '', '', '', 1, 0, 'F', '0', '0', 'ar:bill:download', '#',
+ 'admin', NOW(), '应收账单明细文件下载'
+ FROM sys_menu export_menu
+ WHERE export_menu.perms = 'ar:bill:export'
+ AND NOT EXISTS (
+ SELECT 1 FROM sys_menu WHERE perms = 'ar:bill:download'
+ )
+ ORDER BY export_menu.menu_id
+ LIMIT 1;
+
+SET @ar_bill_download_perm_created = ROW_COUNT();
+
+-- 初次拆分时保持现有导出角色原有下载能力;后续角色可独立增删此权限。
+INSERT INTO sys_role_menu (role_id, menu_id)
+SELECT DISTINCT export_grant.role_id, download_menu.menu_id
+ FROM sys_role_menu export_grant
+ JOIN sys_menu export_menu ON export_menu.menu_id = export_grant.menu_id
+ JOIN sys_menu download_menu ON download_menu.perms = 'ar:bill:download'
+ WHERE export_menu.perms = 'ar:bill:export'
+ AND @ar_bill_download_perm_created > 0
+ AND NOT EXISTS (
+ SELECT 1
+ FROM sys_role_menu existing_grant
+ WHERE existing_grant.role_id = export_grant.role_id
+ AND existing_grant.menu_id = download_menu.menu_id
+ );
+
+COMMIT;
+
+-- 核对权限菜单及角色授权结果。
+SELECT menu_id, menu_name, parent_id, order_num, menu_type, perms, remark
+ FROM sys_menu
+ WHERE perms IN ('ar:bill:export', 'ar:bill:download')
+ ORDER BY parent_id, order_num, menu_id;
+
+SELECT r.role_id, r.role_name, m.menu_name, m.perms
+ FROM sys_role_menu rm
+ JOIN sys_role r ON r.role_id = rm.role_id
+ JOIN sys_menu m ON m.menu_id = rm.menu_id
+ WHERE m.perms IN ('ar:bill:export', 'ar:bill:download')
+ ORDER BY r.role_id, m.perms;
diff --git a/bms-front/src/views/ar/bill/components/BillDetail.vue b/bms-front/src/views/ar/bill/components/BillDetail.vue
index bee0a4f4..5c75d3ec 100644
--- a/bms-front/src/views/ar/bill/components/BillDetail.vue
+++ b/bms-front/src/views/ar/bill/components/BillDetail.vue
@@ -67,7 +67,7 @@
- 下载
+ 下载