|
|
@ -26,12 +26,8 @@ |
|
|
clearable |
|
|
clearable |
|
|
style="width: 240px" |
|
|
style="width: 240px" |
|
|
> |
|
|
> |
|
|
<el-option |
|
|
|
|
|
v-for="dict in dict.type.sys_normal_disable" |
|
|
|
|
|
:key="dict.value" |
|
|
|
|
|
:label="dict.label" |
|
|
|
|
|
:value="dict.value" |
|
|
|
|
|
/> |
|
|
|
|
|
|
|
|
<el-option key="0" :label="$t('page.system.role.statusEnable')" value="0" /> |
|
|
|
|
|
<el-option key="1" :label="$t('page.system.role.statusDisable')" value="1" /> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<!-- <el-form-item label="创建时间"> |
|
|
<!-- <el-form-item label="创建时间"> |
|
|
@ -130,7 +126,7 @@ |
|
|
<el-button |
|
|
<el-button |
|
|
size="mini" |
|
|
size="mini" |
|
|
type="text" |
|
|
type="text" |
|
|
@click="handleUpdate(scope.row)" |
|
|
|
|
|
|
|
|
@click="handleUpdate(scope.row,false)" |
|
|
v-hasPermi="['system:role:edit']" |
|
|
v-hasPermi="['system:role:edit']" |
|
|
>{{$t('page.system.role.edit')}}</el-button> |
|
|
>{{$t('page.system.role.edit')}}</el-button> |
|
|
|
|
|
|
|
|
@ -153,14 +149,14 @@ |
|
|
<el-button |
|
|
<el-button |
|
|
size="mini" |
|
|
size="mini" |
|
|
type="text" |
|
|
type="text" |
|
|
@click="handleUpdate(scope.row)" |
|
|
|
|
|
|
|
|
@click="transfer(scope.row)" |
|
|
v-hasPermi="['system:role:edit']" |
|
|
v-hasPermi="['system:role:edit']" |
|
|
>{{$t('page.system.role.allocate')}}</el-button> |
|
|
>{{$t('page.system.role.allocate')}}</el-button> |
|
|
|
|
|
|
|
|
<el-button |
|
|
<el-button |
|
|
size="mini" |
|
|
size="mini" |
|
|
type="text" |
|
|
type="text" |
|
|
@click="handleUpdate(scope.row)" |
|
|
|
|
|
|
|
|
@click="handleUpdate(scope.row,true)" |
|
|
>{{$t('page.system.role.detail')}}</el-button> |
|
|
>{{$t('page.system.role.detail')}}</el-button> |
|
|
|
|
|
|
|
|
<!-- <el-button |
|
|
<!-- <el-button |
|
|
@ -178,6 +174,16 @@ |
|
|
v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item> |
|
|
v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item> |
|
|
</el-dropdown-menu> |
|
|
</el-dropdown-menu> |
|
|
</el-dropdown> --> |
|
|
</el-dropdown> --> |
|
|
|
|
|
|
|
|
|
|
|
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']"> |
|
|
|
|
|
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> |
|
|
|
|
|
<el-dropdown-menu slot="dropdown"> |
|
|
|
|
|
<el-dropdown-item command="handleDataScope" icon="el-icon-circle-check" |
|
|
|
|
|
v-hasPermi="['system:role:edit']">数据权限</el-dropdown-item> |
|
|
|
|
|
<el-dropdown-item command="handleAuthUser" icon="el-icon-user" |
|
|
|
|
|
v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item> |
|
|
|
|
|
</el-dropdown-menu> |
|
|
|
|
|
</el-dropdown> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
|
@ -193,34 +199,40 @@ |
|
|
<!-- 添加或修改角色配置对话框 --> |
|
|
<!-- 添加或修改角色配置对话框 --> |
|
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
|
|
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
|
|
<el-form-item label="角色名称" prop="roleName"> |
|
|
|
|
|
<el-input v-model="form.roleName" placeholder="请输入角色名称" /> |
|
|
|
|
|
|
|
|
<el-form-item :label="$t('page.system.role.name')+':'" prop="roleName"> |
|
|
|
|
|
<el-input v-model="form.roleName" :placeholder="$t('form.placeholderInput')" :readonly="readonly" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item prop="roleKey"> |
|
|
<el-form-item prop="roleKey"> |
|
|
<span slot="label"> |
|
|
<span slot="label"> |
|
|
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top"> |
|
|
|
|
|
|
|
|
<!-- <el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top"> |
|
|
<i class="el-icon-question"></i> |
|
|
<i class="el-icon-question"></i> |
|
|
</el-tooltip> |
|
|
|
|
|
权限字符 |
|
|
|
|
|
|
|
|
</el-tooltip> --> |
|
|
|
|
|
{{$t('page.system.role.key')}}: |
|
|
</span> |
|
|
</span> |
|
|
<el-input v-model="form.roleKey" placeholder="请输入权限字符" /> |
|
|
|
|
|
|
|
|
<el-input v-model="form.roleKey" :placeholder="$t('form.placeholderInput')" :readonly="readonly" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="角色顺序" prop="roleSort"> |
|
|
|
|
|
|
|
|
<!-- <el-form-item label="角色顺序" prop="roleSort"> |
|
|
<el-input-number v-model="form.roleSort" controls-position="right" :min="0" /> |
|
|
<el-input-number v-model="form.roleSort" controls-position="right" :min="0" /> |
|
|
|
|
|
</el-form-item> --> |
|
|
|
|
|
<el-form-item :label="$t('page.system.role.status')+':'" prop="status"> |
|
|
|
|
|
<el-select |
|
|
|
|
|
v-model="form.status" |
|
|
|
|
|
:placeholder="$t('form.placeholderSelect')" |
|
|
|
|
|
style="width:100%" |
|
|
|
|
|
:disabled="readonly" |
|
|
|
|
|
> |
|
|
|
|
|
<el-option key="0" :label="$t('page.system.role.statusEnable')" value="0" /> |
|
|
|
|
|
<el-option key="1" :label="$t('page.system.role.statusDisable')" value="1" /> |
|
|
|
|
|
</el-select> |
|
|
|
|
|
|
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="状态"> |
|
|
|
|
|
<el-radio-group v-model="form.status"> |
|
|
|
|
|
<el-radio |
|
|
|
|
|
v-for="dict in dict.type.sys_normal_disable" |
|
|
|
|
|
:key="dict.value" |
|
|
|
|
|
:label="dict.value" |
|
|
|
|
|
>{{dict.label}}</el-radio> |
|
|
|
|
|
</el-radio-group> |
|
|
|
|
|
|
|
|
<el-form-item :label="$t('page.system.role.remark')+':'"> |
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" :placeholder="$t('form.placeholderSelect')" :readonly="readonly"></el-input> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="菜单权限"> |
|
|
|
|
|
<el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox> |
|
|
|
|
|
|
|
|
<el-form-item :label="$t('page.system.role.permit')+':'"> |
|
|
|
|
|
<!-- <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox> |
|
|
<el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox> |
|
|
<el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox> |
|
|
<el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox> |
|
|
|
|
|
|
|
|
<el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox> --> |
|
|
<el-tree |
|
|
<el-tree |
|
|
class="tree-border" |
|
|
class="tree-border" |
|
|
:data="menuOptions" |
|
|
:data="menuOptions" |
|
|
@ -228,17 +240,15 @@ |
|
|
ref="menu" |
|
|
ref="menu" |
|
|
node-key="id" |
|
|
node-key="id" |
|
|
:check-strictly="!form.menuCheckStrictly" |
|
|
:check-strictly="!form.menuCheckStrictly" |
|
|
empty-text="加载中,请稍候" |
|
|
|
|
|
|
|
|
empty-text="loading" |
|
|
:props="defaultProps" |
|
|
:props="defaultProps" |
|
|
></el-tree> |
|
|
></el-tree> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="备注"> |
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> |
|
|
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
|
|
|
|
</el-form> |
|
|
</el-form> |
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
|
|
<el-button type="primary" @click="submitForm">确 定</el-button> |
|
|
|
|
|
<el-button @click="cancel">取 消</el-button> |
|
|
|
|
|
|
|
|
<div slot="footer" class="dialog-footer" v-if="!readonly"> |
|
|
|
|
|
<el-button type="primary" @click="submitForm">{{$t('form.saveConfirm')}}</el-button> |
|
|
|
|
|
<el-button @click="cancel">{{$t('form.cancel')}}</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
@ -283,6 +293,16 @@ |
|
|
<el-button @click="cancelDataScope">取 消</el-button> |
|
|
<el-button @click="cancelDataScope">取 消</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 分配角色数据权限对话框 --> |
|
|
|
|
|
<el-dialog :title="transferDialog.title" :visible.sync="transferDialog.visible" width="500px" append-to-body> |
|
|
|
|
|
<el-transfer v-model="transferDialog.selected" :data="transferDialog.list"></el-transfer> |
|
|
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
|
|
<el-button type="primary" @click="submitDataScope">{{$t('form.saveConfirm')}}</el-button> |
|
|
|
|
|
<el-button @click="cancelDataScope">{{$t('form.cancel')}}</el-button> |
|
|
|
|
|
</div> |
|
|
|
|
|
</el-dialog> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
@ -365,14 +385,25 @@ export default { |
|
|
// 表单校验 |
|
|
// 表单校验 |
|
|
rules: { |
|
|
rules: { |
|
|
roleName: [ |
|
|
roleName: [ |
|
|
{ required: true, message: "角色名称不能为空", trigger: "blur" } |
|
|
|
|
|
|
|
|
{ required: true, message: this.$t('page.system.role.name')+this.$t('page.system.role.notEmpty'), trigger: "blur" } |
|
|
], |
|
|
], |
|
|
roleKey: [ |
|
|
roleKey: [ |
|
|
{ required: true, message: "权限字符不能为空", trigger: "blur" } |
|
|
|
|
|
|
|
|
{ required: true, message: this.$t('page.system.role.key')+this.$t('page.system.role.notEmpty'), trigger: "blur" } |
|
|
|
|
|
], |
|
|
|
|
|
status: [ |
|
|
|
|
|
{ required: true, message: this.$t('page.system.role.status')+this.$t('page.system.role.notEmpty'), trigger: "change" } |
|
|
], |
|
|
], |
|
|
roleSort: [ |
|
|
|
|
|
{ required: true, message: "角色顺序不能为空", trigger: "blur" } |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
readonly:false, |
|
|
|
|
|
|
|
|
|
|
|
transferDialog:{ |
|
|
|
|
|
title:this.$t('page.system.role.allocate'), |
|
|
|
|
|
visible:false, |
|
|
|
|
|
|
|
|
|
|
|
list:[], |
|
|
|
|
|
selected:[], |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
@ -418,9 +449,18 @@ export default { |
|
|
getRoleMenuTreeselect(roleId) { |
|
|
getRoleMenuTreeselect(roleId) { |
|
|
return roleMenuTreeselect(roleId).then(response => { |
|
|
return roleMenuTreeselect(roleId).then(response => { |
|
|
this.menuOptions = response.menus |
|
|
this.menuOptions = response.menus |
|
|
|
|
|
this.setDisabled(this.menuOptions) |
|
|
return response |
|
|
return response |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
|
|
|
setDisabled(arr) { |
|
|
|
|
|
for (var i = 0; i < arr.length; i++) { |
|
|
|
|
|
arr[i]['disabled'] = this.readonly |
|
|
|
|
|
if (arr[i].children && arr[i].children.length > 0) { |
|
|
|
|
|
this.setDisabled(arr[i].children) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
/** 根据角色ID查询部门树结构 */ |
|
|
/** 根据角色ID查询部门树结构 */ |
|
|
getDeptTree(roleId) { |
|
|
getDeptTree(roleId) { |
|
|
return deptTreeSelect(roleId).then(response => { |
|
|
return deptTreeSelect(roleId).then(response => { |
|
|
@ -534,13 +574,16 @@ export default { |
|
|
}, |
|
|
}, |
|
|
/** 新增按钮操作 */ |
|
|
/** 新增按钮操作 */ |
|
|
handleAdd() { |
|
|
handleAdd() { |
|
|
|
|
|
this.readonly = false |
|
|
this.reset() |
|
|
this.reset() |
|
|
this.getMenuTreeselect() |
|
|
this.getMenuTreeselect() |
|
|
this.open = true |
|
|
this.open = true |
|
|
this.title = "添加角色" |
|
|
|
|
|
|
|
|
this.title = this.$t('page.system.role.addRole') |
|
|
|
|
|
|
|
|
}, |
|
|
}, |
|
|
/** 修改按钮操作 */ |
|
|
/** 修改按钮操作 */ |
|
|
handleUpdate(row) { |
|
|
|
|
|
|
|
|
handleUpdate(row,readonly) { |
|
|
|
|
|
this.readonly = readonly |
|
|
this.reset() |
|
|
this.reset() |
|
|
const roleId = row.roleId || this.ids |
|
|
const roleId = row.roleId || this.ids |
|
|
const roleMenu = this.getRoleMenuTreeselect(roleId) |
|
|
const roleMenu = this.getRoleMenuTreeselect(roleId) |
|
|
@ -558,7 +601,7 @@ export default { |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
this.title = "修改角色" |
|
|
|
|
|
|
|
|
this.title = this.$t('page.system.role.modifyRole') |
|
|
}, |
|
|
}, |
|
|
/** 选择角色权限范围触发 */ |
|
|
/** 选择角色权限范围触发 */ |
|
|
dataScopeSelectChange(value) { |
|
|
dataScopeSelectChange(value) { |
|
|
@ -622,11 +665,10 @@ export default { |
|
|
/** 删除按钮操作 */ |
|
|
/** 删除按钮操作 */ |
|
|
handleDelete(row) { |
|
|
handleDelete(row) { |
|
|
const roleIds = row.roleId || this.ids |
|
|
const roleIds = row.roleId || this.ids |
|
|
this.$modal.confirm('是否确认删除角色编号为"' + roleIds + '"的数据项?').then(function() { |
|
|
|
|
|
|
|
|
this.$modal.confirm(this.$t('form.confirmDelete')).then(function() { |
|
|
return delRole(roleIds) |
|
|
return delRole(roleIds) |
|
|
}).then(() => { |
|
|
}).then(() => { |
|
|
this.getList() |
|
|
this.getList() |
|
|
this.$modal.msgSuccess("删除成功") |
|
|
|
|
|
}).catch(() => {}) |
|
|
}).catch(() => {}) |
|
|
}, |
|
|
}, |
|
|
/** 导出按钮操作 */ |
|
|
/** 导出按钮操作 */ |
|
|
@ -634,6 +676,10 @@ export default { |
|
|
this.download('system/role/export', { |
|
|
this.download('system/role/export', { |
|
|
...this.queryParams |
|
|
...this.queryParams |
|
|
}, `role_${new Date().getTime()}.xlsx`) |
|
|
}, `role_${new Date().getTime()}.xlsx`) |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
transfer(){ |
|
|
|
|
|
this.transferDialog.visible = true |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |