最后小修
This commit is contained in:
19
db.js
19
db.js
@@ -268,11 +268,12 @@ async function seedDepartmentsAndPermissions() {
|
|||||||
{ name: 'operations_manager', description: '运营部' },
|
{ name: 'operations_manager', description: '运营部' },
|
||||||
{ name: 'procurement_manager', description: '采购部' },
|
{ name: 'procurement_manager', description: '采购部' },
|
||||||
{ name: 'finance', description: '财务部' },
|
{ name: 'finance', description: '财务部' },
|
||||||
|
{ name: 'hr', description: '人力资源部' },
|
||||||
]
|
]
|
||||||
for (const d of deptList) {
|
for (const d of deptList) {
|
||||||
await pool.query('INSERT INTO departments (name, description) VALUES (?, ?)', [d.name, d.description])
|
await pool.query('INSERT INTO departments (name, description) VALUES (?, ?)', [d.name, d.description])
|
||||||
}
|
}
|
||||||
console.log('[init] 已初始化 6 个部门')
|
console.log('[init] 已初始化 7 个部门')
|
||||||
|
|
||||||
const permissionList = [
|
const permissionList = [
|
||||||
{ name: 'customer:read', description: '查看加盟商', resource: 'customer', action: 'read' },
|
{ name: 'customer:read', description: '查看加盟商', resource: 'customer', action: 'read' },
|
||||||
@@ -310,9 +311,12 @@ async function seedDepartmentsAndPermissions() {
|
|||||||
console.log('[init] 已初始化 25 个权限')
|
console.log('[init] 已初始化 25 个权限')
|
||||||
|
|
||||||
// 部门-权限映射
|
// 部门-权限映射
|
||||||
const allPerms = permissionList.map(p => p.name)
|
|
||||||
const deptPermMap = {
|
const deptPermMap = {
|
||||||
admin: allPerms,
|
admin: [
|
||||||
|
'user:manage',
|
||||||
|
'customer:read', 'contract:read', 'after_sale:read',
|
||||||
|
'product:read', 'supplier:read', 'employee:read',
|
||||||
|
],
|
||||||
general_manager: [
|
general_manager: [
|
||||||
'customer:read', 'contract:read', 'after_sale:read',
|
'customer:read', 'contract:read', 'after_sale:read',
|
||||||
'product:read', 'supplier:read', 'employee:read',
|
'product:read', 'supplier:read', 'employee:read',
|
||||||
@@ -324,6 +328,7 @@ async function seedDepartmentsAndPermissions() {
|
|||||||
],
|
],
|
||||||
operations_manager: [
|
operations_manager: [
|
||||||
'customer:read',
|
'customer:read',
|
||||||
|
'contract:read',
|
||||||
'after_sale:read', 'after_sale:create', 'after_sale:update', 'after_sale:delete',
|
'after_sale:read', 'after_sale:create', 'after_sale:update', 'after_sale:delete',
|
||||||
'employee:read',
|
'employee:read',
|
||||||
],
|
],
|
||||||
@@ -336,6 +341,12 @@ async function seedDepartmentsAndPermissions() {
|
|||||||
],
|
],
|
||||||
finance: [
|
finance: [
|
||||||
'customer:read', 'contract:read', 'after_sale:read', 'product:read', 'employee:read',
|
'customer:read', 'contract:read', 'after_sale:read', 'product:read', 'employee:read',
|
||||||
|
'supplier:read',
|
||||||
|
],
|
||||||
|
hr: [
|
||||||
|
'employee:read', 'employee:create', 'employee:update', 'employee:delete',
|
||||||
|
'user:manage',
|
||||||
|
'customer:read',
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,6 +380,7 @@ async function seedDefaultUsers() {
|
|||||||
{ name: '赵强', gender: '男', age: 36, education: '本科', department: '采购部', entry_date: '2017-09-20', position: '采购经理', salary: 18000, phone: '13800001004', email: 'zhaoqiang@mixue.com' },
|
{ name: '赵强', gender: '男', age: 36, education: '本科', department: '采购部', entry_date: '2017-09-20', position: '采购经理', salary: 18000, phone: '13800001004', email: 'zhaoqiang@mixue.com' },
|
||||||
{ name: '陈芳', gender: '女', age: 30, education: '本科', department: '财务部', entry_date: '2020-03-05', position: '财务主管', salary: 15000, phone: '13800001005', email: 'chenfang@mixue.com' },
|
{ name: '陈芳', gender: '女', age: 30, education: '本科', department: '财务部', entry_date: '2020-03-05', position: '财务主管', salary: 15000, phone: '13800001005', email: 'chenfang@mixue.com' },
|
||||||
{ name: '系统管理员', gender: '男', age: 28, education: '本科', department: '信息技术部', entry_date: '2022-07-01', position: '系统管理员', salary: 12000, phone: '13800001006', email: 'admin@mixue.com' },
|
{ name: '系统管理员', gender: '男', age: 28, education: '本科', department: '信息技术部', entry_date: '2022-07-01', position: '系统管理员', salary: 12000, phone: '13800001006', email: 'admin@mixue.com' },
|
||||||
|
{ name: '杨帆', gender: '女', age: 34, education: '本科', department: '人力资源部', entry_date: '2019-05-01', position: '人力资源经理', salary: 15000, phone: '13800001007', email: 'yangfan@mixue.com' },
|
||||||
]
|
]
|
||||||
|
|
||||||
const seedUsers = [
|
const seedUsers = [
|
||||||
@@ -378,6 +390,7 @@ async function seedDefaultUsers() {
|
|||||||
{ username: 'zhaoqiang', deptName: 'procurement_manager' },
|
{ username: 'zhaoqiang', deptName: 'procurement_manager' },
|
||||||
{ username: 'chenfang', deptName: 'finance' },
|
{ username: 'chenfang', deptName: 'finance' },
|
||||||
{ username: 'admin', deptName: 'admin' },
|
{ username: 'admin', deptName: 'admin' },
|
||||||
|
{ username: 'yangfan', deptName: 'hr' },
|
||||||
]
|
]
|
||||||
|
|
||||||
for (let i = 0; i < seedUsers.length; i++) {
|
for (let i = 0; i < seedUsers.length; i++) {
|
||||||
|
|||||||
@@ -51,11 +51,15 @@ function dataScope(resource) {
|
|||||||
break
|
break
|
||||||
|
|
||||||
case 'employees':
|
case 'employees':
|
||||||
|
if (deptName === 'hr') {
|
||||||
|
// 人力资源部可查看全量员工
|
||||||
|
break
|
||||||
|
}
|
||||||
if (['franchise_manager', 'operations_manager', 'procurement_manager'].includes(deptName)) {
|
if (['franchise_manager', 'operations_manager', 'procurement_manager'].includes(deptName)) {
|
||||||
sql = 'AND department = ?'
|
sql = 'AND department = ?'
|
||||||
params = [req.user.departmentDesc] // 如 '招商部'
|
params = [req.user.departmentDesc] // 如 '招商部'
|
||||||
}
|
}
|
||||||
// finance 全量看员工
|
// admin / general_manager / finance 全量看员工
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user