gaoluyang
10 天以前 d39e4f7d839167c16425086dfa2f8747bccfdff9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
-- =============================================
-- 财务核算模块菜单初始化脚本
-- =============================================
-- 模块:yudao-module-finance
--      记账凭证 / 总账 / 明细账 / 会计科目 / 固定资产 / 无形资产 / 财务报表
-- 前端页面:mom-pro2-before/src/views/erp/finance/**
-- 后端权限码:见各 Controller 的 @PreAuthorize
--
-- 说明:
--   1. 新建一级菜单「财务核算」(/finance-core)。原 ERP 下的「财务管理」(id=2645)
--      因其父菜单「ERP 系统」(id=2563) 已停用而不可见,本脚本把它挂到「财务核算」下,
--      恢复 结算账户/付款单/收款单 三个菜单(原 role_menu 授权保留)。
--   2. 页面菜单(type=2) 各自携带 :query 权限;增删改/导出/折旧摊销等操作权限建成按钮(type=3)。
--   3. 总账与明细账共用 finance:ledger:query、finance:ledger:export 两个权限码,
--      因此「导出账簿」按钮只挂在「总账」下 —— 同一权限码在角色授权树里出现一次即可,
--      授予后「明细账」的导出按钮同样生效。
--   4. 幂等:先删除本脚本占用的 id 区间 (1075600~1075649) 及对应角色授权再插入,可重复执行。
--      注意:若之后已在「角色管理」里给这些菜单授权,重跑本脚本会丢失对应 system_role_menu 记录。
--   5. 不含 tenant_id(本项目非多租户)。
-- =============================================
 
DELETE FROM system_role_menu WHERE menu_id BETWEEN 1075600 AND 1075649;
DELETE FROM system_menu WHERE id BETWEEN 1075600 AND 1075649;
 
-- ---------------------------------------------------------------
-- 一级菜单
-- ---------------------------------------------------------------
INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES
(1075600, '财务核算', '', 1, 4, 0, '/finance-core', 'ep:money', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
 
-- ---------------------------------------------------------------
-- 页面菜单 (type=2)
-- ---------------------------------------------------------------
INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES
(1075601, '记账凭证', 'finance:voucher:query',           2, 1, 1075600, 'voucher',         'ep:document',        'erp/finance/voucher/index',           'FinVoucher',         0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075602, '总账',     'finance:ledger:query',            2, 2, 1075600, 'general-ledger',  'ep:notebook',        'erp/finance/ledger/general/index',    'FinGeneralLedger',   0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075603, '明细账',   'finance:ledger:query',            2, 3, 1075600, 'detail-ledger',   'ep:list',            'erp/finance/ledger/detail/index',     'FinDetailLedger',    0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075604, '会计科目', 'finance:account-subject:query',   2, 4, 1075600, 'subject',         'ep:collection-tag',  'erp/finance/subject/index',           'FinAccountSubject',  0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075605, '固定资产', 'finance:fixed-asset:query',       2, 5, 1075600, 'fixed-asset',     'ep:office-building', 'erp/finance/fixed-asset/index',       'FinFixedAsset',      0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075606, '无形资产', 'finance:intangible-asset:query',  2, 6, 1075600, 'intangible-asset','ep:medal',           'erp/finance/intangible-asset/index',  'FinIntangibleAsset', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075607, '财务报表', 'finance:statistics:query',        2, 7, 1075600, 'statistics',      'ep:data-line',       'erp/finance/statistics/index',        'FinStatistics',      0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0');
 
-- ---------------------------------------------------------------
-- 按钮权限 (type=3)
-- ---------------------------------------------------------------
INSERT INTO system_menu (id, name, permission, type, sort, parent_id, path, icon, component, component_name, status, visible, keep_alive, always_show, creator, create_time, updater, update_time, deleted) VALUES
-- 记账凭证
(1075610, '凭证新增',     'finance:voucher:create',        3, 1, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075611, '凭证修改',     'finance:voucher:update',        3, 2, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075612, '凭证删除',     'finance:voucher:delete',        3, 3, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075613, '凭证状态变更', 'finance:voucher:update-status', 3, 4, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075614, '凭证导出',     'finance:voucher:export',        3, 5, 1075601, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
-- 总账 / 明细账(两页共用 finance:ledger:query,导出权限只在此处挂一次,见文件头说明 3)
(1075620, '账簿导出',     'finance:ledger:export',         3, 1, 1075602, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
-- 会计科目
(1075621, '科目新增',     'finance:account-subject:create',3, 1, 1075604, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075622, '科目修改',     'finance:account-subject:update',3, 2, 1075604, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075623, '科目删除',     'finance:account-subject:delete',3, 3, 1075604, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075624, '科目导出',     'finance:account-subject:export',3, 4, 1075604, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
-- 固定资产
(1075630, '资产新增',     'finance:fixed-asset:create',    3, 1, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075631, '资产修改',     'finance:fixed-asset:update',    3, 2, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075632, '资产删除',     'finance:fixed-asset:delete',    3, 3, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075633, '计提折旧',     'finance:fixed-asset:depreciate',3, 4, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075634, '资产导出',     'finance:fixed-asset:export',    3, 5, 1075605, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
-- 无形资产
(1075640, '资产新增',     'finance:intangible-asset:create',   3, 1, 1075606, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075641, '资产修改',     'finance:intangible-asset:update',   3, 2, 1075606, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075642, '资产删除',     'finance:intangible-asset:delete',   3, 3, 1075606, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075643, '无形资产摊销', 'finance:intangible-asset:amortize', 3, 4, 1075606, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0'),
(1075644, '资产导出',     'finance:intangible-asset:export',   3, 5, 1075606, '', '', '', '', 0, b'1', b'0', b'1', '1', NOW(), '1', NOW(), b'0');
 
-- ---------------------------------------------------------------
-- 角色授权(可选)
-- 超级管理员 (super_admin) 由代码直接返回全部菜单,无需授权。
-- 若要把财务核算放给某个角色,在「系统管理 → 角色管理」里勾选即可;
-- 也可用下面的语句直接授权(把 <roleId> 换成目标角色 id,参考:163 设备 / 164 质量 / 165 销售):
--
-- INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted)
-- SELECT 165, id, '1', NOW(), '1', NOW(), b'0' FROM system_menu WHERE id BETWEEN 1075600 AND 1075649;
-- ---------------------------------------------------------------
 
-- ---------------------------------------------------------------
-- 恢复原有 ERP「财务管理」(id=2645) 子树
-- 其父菜单「ERP 系统」(id=2563) 已停用,导致 结算账户/付款单/收款单 无法显示;
-- 现挂到「财务核算」下作为二级目录(排序 8,排在财务报表之后)。
-- ---------------------------------------------------------------
UPDATE system_menu SET parent_id = 1075600, sort = 8 WHERE id = 2645;
 
-- ---------------------------------------------------------------
-- 给原本拥有「财务管理」(2645) 的角色补授新增的财务核算菜单
-- (超管由代码直接返回全部菜单,不受影响)
-- ---------------------------------------------------------------
INSERT INTO system_role_menu (role_id, menu_id, creator, create_time, updater, update_time, deleted)
SELECT DISTINCT rm.role_id, m.id, '1', NOW(), '1', NOW(), b'0'
FROM system_menu m
JOIN system_role_menu rm ON rm.menu_id = 2645 AND rm.deleted = b'0'
WHERE m.id BETWEEN 1075600 AND 1075649
  AND NOT EXISTS (SELECT 1
                  FROM system_role_menu x
                  WHERE x.role_id = rm.role_id
                    AND x.menu_id = m.id
                    AND x.deleted = b'0');
 
-- ---------------------------------------------------------------
-- 回滚脚本
-- UPDATE system_menu SET parent_id = 2563, sort = 50 WHERE id = 2645;
-- DELETE FROM system_menu WHERE id BETWEEN 1075600 AND 1075649;
-- DELETE FROM system_role_menu WHERE menu_id BETWEEN 1075600 AND 1075649;
-- ---------------------------------------------------------------