feat: 采购管理税率+分开单价总价列 + 按单出/借库锁定扫描 + 含税法计算
- purchase: 新增tax_rate字段(model+service+frontend), 表格拆分为不含税单价/总价/税率三列 - buy.vue: 含税法计算(含税总价=数量×含税单价), 含税总价自动计算可手动覆盖 - create.vue: 按单出库模式下未选审批单时锁定摄像头和SKU输入 - borrow.vue: 未选审批单时锁定摄像头和SKU输入 - deploy_production.sql: 整合全部数据库变更(表结构+权限码+角色分配)
This commit is contained in:
@ -12,10 +12,13 @@ BEGIN;
|
||||
-- 1. 采购申请表新增 base_id(关联物料基础信息)
|
||||
ALTER TABLE purchase_request ADD COLUMN IF NOT EXISTS base_id INTEGER;
|
||||
|
||||
-- 2. 采购入库表新增 request_id(关联采购申请单)
|
||||
-- 2. 采购申请表新增 tax_rate(税率)
|
||||
ALTER TABLE purchase_request ADD COLUMN IF NOT EXISTS tax_rate NUMERIC(5,2) DEFAULT 0;
|
||||
|
||||
-- 3. 采购入库表新增 request_id(关联采购申请单)
|
||||
ALTER TABLE stock_buy ADD COLUMN IF NOT EXISTS request_id INTEGER;
|
||||
|
||||
-- 3. 角色权限表新增 company_name(支持公司级别权限隔离)
|
||||
-- 4. 角色权限表新增 company_name(支持公司级别权限隔离)
|
||||
ALTER TABLE sys_role_permission ADD COLUMN IF NOT EXISTS company_name VARCHAR(255);
|
||||
|
||||
|
||||
@ -188,6 +191,57 @@ FROM sys_menu
|
||||
WHERE code IN ('system_mgmt', 'system_permission', 'system_audit')
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_role_permission rp WHERE rp.role_code = 'SUPERVISOR' AND rp.target_code = sys_menu.code AND rp.type = 'menu');
|
||||
|
||||
-- ============================================================
|
||||
-- 三补、借库管理菜单 + 权限码 + 角色分配
|
||||
-- ============================================================
|
||||
|
||||
-- 借库选单 & 借库审批 菜单
|
||||
INSERT INTO sys_menu (code, name, parent_id, is_visible)
|
||||
SELECT 'op_borrow_apply', '借库选单', m.id, true
|
||||
FROM sys_menu m WHERE m.code = 'operation_mgmt'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE code = 'op_borrow_apply');
|
||||
|
||||
INSERT INTO sys_menu (code, name, parent_id, is_visible)
|
||||
SELECT 'op_borrow_approval', '借库审批', m.id, true
|
||||
FROM sys_menu m WHERE m.code = 'operation_mgmt'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_menu WHERE code = 'op_borrow_approval');
|
||||
|
||||
-- 借库选单元素权限
|
||||
INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'op_borrow_apply', '物品名称', 'op_borrow_apply:name', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_apply:name');
|
||||
INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'op_borrow_apply', '规格型号', 'op_borrow_apply:spec', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_apply:spec');
|
||||
INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'op_borrow_apply', '可用库存', 'op_borrow_apply:available_quantity', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_apply:available_quantity');
|
||||
INSERT INTO sys_element (menu_code, name, code, element_type) SELECT 'op_borrow_apply', '操作/编辑', 'op_borrow_apply:operation', 'column' WHERE NOT EXISTS (SELECT 1 FROM sys_element WHERE code = 'op_borrow_apply:operation');
|
||||
|
||||
-- 角色分配:有 operation_mgmt 的角色 → 获得借库选单/审批菜单 + 元素
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type)
|
||||
SELECT DISTINCT rp.role_code, 'op_borrow_apply', 'menu'
|
||||
FROM sys_role_permission rp WHERE rp.target_code = 'operation_mgmt'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = rp.role_code AND target_code = 'op_borrow_apply');
|
||||
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type)
|
||||
SELECT DISTINCT rp.role_code, 'op_borrow_approval', 'menu'
|
||||
FROM sys_role_permission rp WHERE rp.target_code = 'operation_mgmt'
|
||||
AND NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = rp.role_code AND target_code = 'op_borrow_approval');
|
||||
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type)
|
||||
SELECT rp.role_code, elem.code, 'element'
|
||||
FROM (SELECT DISTINCT role_code FROM sys_role_permission WHERE target_code = 'operation_mgmt') rp
|
||||
CROSS JOIN (SELECT unnest(ARRAY['op_borrow_apply:name','op_borrow_apply:spec','op_borrow_apply:available_quantity','op_borrow_apply:operation']) AS code) elem
|
||||
WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission rp2 WHERE rp2.role_code = rp.role_code AND rp2.target_code = elem.code);
|
||||
|
||||
-- 补借库管理菜单给 SUPERVISOR(如缺)
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'operation_mgmt', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'operation_mgmt');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'op_borrow_apply', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'op_borrow_apply');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'op_borrow_approval', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'op_borrow_approval');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'op_borrow', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'op_borrow');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'op_return', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'op_return');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'op_records', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'op_records');
|
||||
|
||||
-- 出库管理菜单补 SUPERVISOR
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'outbound_mgmt', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'outbound_mgmt');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', 'outbound_approval', 'menu' WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = 'outbound_approval');
|
||||
INSERT INTO sys_role_permission (role_code, target_code, type) SELECT 'SUPERVISOR', elem.code, 'element' FROM (SELECT unnest(ARRAY['outbound_approval:request_no','outbound_approval:applicant','outbound_approval:approver','outbound_approval:status','outbound_approval:operation']) AS code) elem WHERE NOT EXISTS (SELECT 1 FROM sys_role_permission WHERE role_code = 'SUPERVISOR' AND target_code = elem.code);
|
||||
|
||||
-- ============================================================
|
||||
-- 四、验证
|
||||
-- ============================================================
|
||||
@ -196,7 +250,7 @@ SELECT '=== 验证 ===' AS info;
|
||||
SELECT '表结构' AS item, column_name, data_type
|
||||
FROM information_schema.columns
|
||||
WHERE table_name IN ('purchase_request', 'stock_buy', 'sys_role_permission')
|
||||
AND column_name IN ('base_id', 'request_id', 'company_name')
|
||||
AND column_name IN ('base_id', 'request_id', 'company_name', 'tax_rate')
|
||||
ORDER BY table_name, column_name;
|
||||
|
||||
SELECT '权限码总数' AS item, count(*) FROM sys_element;
|
||||
|
||||
Reference in New Issue
Block a user