diff --git a/modules/Permissions/Http/Controllers/RolesController.php b/modules/Permissions/Http/Controllers/RolesController.php index 24dd228..d297645 100644 --- a/modules/Permissions/Http/Controllers/RolesController.php +++ b/modules/Permissions/Http/Controllers/RolesController.php @@ -6,6 +6,7 @@ namespace Modules\Permissions\Http\Controllers; use Catch\Base\CatchController as Controller; use Catch\Exceptions\FailedException; +use Illuminate\Http\Request; use Modules\Permissions\Enums\DataRange; use Modules\Permissions\Models\Roles; use Modules\Permissions\Http\Requests\RoleRequest; @@ -39,13 +40,15 @@ class RolesController extends Controller */ public function store(RoleRequest $request) { - $dataRange = $request->get('data_range'); + $data = $request->all(); - if ($dataRange && ! DataRange::Personal_Choose->assert($request->get('data_range'))) { - $request['departments'] = []; + if ($request->get('data_range') && ! DataRange::Personal_Choose->assert($data['data_range'])) { + $data['departments'] = []; + } else { + $data['data_range'] = 0; } - return $this->model->storeBy($request->all()); + return $this->model->storeBy($data); } /** @@ -53,11 +56,15 @@ class RolesController extends Controller * @param $id * @return \Illuminate\Database\Eloquent\Model|null */ - public function show($id) + public function show($id, Request $request) { $role = $this->model->firstBy($id); - $role->setAttribute('permissions', $role->permissions()->get()->pluck('id')); + if ($request->has('from') && $request->get('from') == 'parent_role') { + $role->setAttribute('permissions', $role->permissions()->get()->toTree()); + } else { + $role->setAttribute('permissions', $role->permissions()->get()->pluck('id')); + } $role->setAttribute('departments', $role->departments()->pluck('id')); @@ -76,9 +83,11 @@ class RolesController extends Controller if ($request->get('data_range') && ! DataRange::Personal_Choose->assert($data['data_range'])) { $data['departments'] = []; + } else { + $data['data_range'] = 0; } - return $this->model->updateBy($id,$data); + return $this->model->updateBy($id, $data); } /** diff --git a/modules/Permissions/views/roles/form/create.vue b/modules/Permissions/views/roles/form/create.vue index e4e0840..b779b2b 100644 --- a/modules/Permissions/views/roles/form/create.vue +++ b/modules/Permissions/views/roles/form/create.vue @@ -105,7 +105,7 @@ const { formData, form, loading, submitForm, close, beforeCreate, beforeUpdate } if (props.primary) { const { afterShow } = useShow(props.api, props.primary, formData) - + // 更新角色值 afterShow.value = formData => { const data = unref(formData) data.parent_id = data.parent_id ? [data.parent_id] : 0 @@ -115,6 +115,8 @@ if (props.primary) { } formData.value = data + // 这里需要获取角色的上级的权限以限制可用权限范围 + getPermissions(data.parent_id) } } @@ -127,9 +129,12 @@ const departments = ref() const showDepartments = ref(false) const permissionLoadingText = ref('加载中...') + +// 获取权限 const getPermissions = async (value: number = 0) => { if (value) { - http.get('permissions/roles/' + getParent(value)).then(r => { + // 获取角色权限 + http.get('permissions/roles/' + getParent(value), { from: 'parent_role' }).then(r => { permissions.value = r.data.data.permissions setCheckedPermissions() }) @@ -141,6 +146,7 @@ const getPermissions = async (value: number = 0) => { } } +// 设置已选权限 const setCheckedPermissions = () => { nextTick(() => { props.hasPermissions.forEach(p => { @@ -152,6 +158,8 @@ const setCheckedPermissions = () => { permissionLoadingText.value = '暂无数据' } } + +// 获取角色信息 const getRoles = () => { http.get(props.api, { id: props.primary ? props.primary : '' }).then(r => { roles.value = r.data.data @@ -163,9 +171,15 @@ const getDepartments = () => { departments.value = r.data.data }) } + +// 新增默认获取全部权限 +if (!props.primary) { + getPermissions() +} + +// 页面挂载完成后 onMounted(() => { getRoles() - getPermissions() getDepartments() close(() => emit('close')) watch(