feat: 业务组和应用支持多负责人,修复权限查询表名错误

- 业务组 MasterUid 改为 MasterUids(逗号分隔多用户ID)
- 应用 OwnerId 改为 OwnerIds(逗号分隔多用户ID)
- 前端负责人下拉框改为多选
- 权限查询改用 FIND_IN_SET 匹配多负责人
- 修复 user_permissions 表名错误(应为 user_permission)
- 所有数据库实体添加 TableName() 方法显式指定表名
- xorm tag 显式指定 owner_ids/master_uids 列名
- 启动时自动清理 owner_ids 中的空格
This commit is contained in:
2026-05-15 21:09:40 +08:00
parent 5e55d899c3
commit 0b2e836c27
12 changed files with 193 additions and 81 deletions
+9 -3
View File
@@ -12,7 +12,7 @@
<el-table-column prop="name" label="应用名称"></el-table-column>
<el-table-column prop="code" label="应用编码"></el-table-column>
<el-table-column prop="groupName" label="所属业务组" width="120"></el-table-column>
<el-table-column prop="ownerName" label="负责人" width="100"></el-table-column>
<el-table-column prop="ownerNames" label="负责人" width="100"></el-table-column>
<el-table-column prop="token" label="Token" width="200">
<template slot-scope="scope">
<template v-if="scope.row.token">
@@ -61,7 +61,7 @@
</el-select>
</el-form-item>
<el-form-item label="负责人">
<el-select v-model="form.ownerId" placeholder="请选择">
<el-select v-model="form.ownerIds" multiple placeholder="请选择">
<el-option v-for="u in users" :key="u.value" :label="u.label" :value="parseInt(u.value)"></el-option>
</el-select>
</el-form-item>
@@ -126,12 +126,18 @@ export default {
},
showAdd() {
this.dialogTitle = '新建应用'
this.form = { name: '', code: '', groupId: null, ownerId: null, remarks: '' }
this.form = { name: '', code: '', groupId: null, ownerIds: [], remarks: '' }
this.dialogVisible = true
},
showEdit(row) {
this.dialogTitle = '编辑应用'
this.form = { ...row }
// 将逗号分隔的ID字符串转为数组
if (typeof this.form.ownerIds === 'string' && this.form.ownerIds) {
this.form.ownerIds = this.form.ownerIds.split(',').map(Number)
} else if (!Array.isArray(this.form.ownerIds)) {
this.form.ownerIds = []
}
this.dialogVisible = true
},
handleSubmit() {
+10 -4
View File
@@ -31,8 +31,8 @@
<el-form-item label="组名称" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="负责人" prop="masterUid">
<el-select v-model="form.masterUid" placeholder="请选择">
<el-form-item label="负责人" prop="masterUids">
<el-select v-model="form.masterUids" multiple placeholder="请选择">
<el-option v-for="u in users" :key="u.value" :label="u.label" :value="parseInt(u.value)"></el-option>
</el-select>
</el-form-item>
@@ -62,7 +62,7 @@ export default {
form: {},
rules: {
name: [{ required: true, message: '请输入组名称', trigger: 'blur' }],
masterUid: [{ required: true, message: '请选择负责人', trigger: 'change' }]
masterUids: [{ required: true, message: '请选择负责人', trigger: 'change', type: 'array', min: 1 }]
},
users: []
}
@@ -105,12 +105,18 @@ export default {
},
showAdd() {
this.dialogTitle = '新建业务组'
this.form = { name: '', masterUid: null, remarks: '' }
this.form = { name: '', masterUids: [], remarks: '' }
this.dialogVisible = true
},
showEdit(row) {
this.dialogTitle = '编辑业务组'
this.form = { ...row }
// 将逗号分隔的ID字符串转为数组
if (typeof this.form.masterUids === 'string' && this.form.masterUids) {
this.form.masterUids = this.form.masterUids.split(',').map(Number)
} else {
this.form.masterUids = []
}
this.dialogVisible = true
},
handleSubmit() {