chore: 优化角色交互
This commit is contained in:
parent
cbb3c156a6
commit
35622b164c
@ -6,6 +6,7 @@ namespace Modules\Permissions\Http\Controllers;
|
|||||||
|
|
||||||
use Catch\Base\CatchController as Controller;
|
use Catch\Base\CatchController as Controller;
|
||||||
use Catch\Exceptions\FailedException;
|
use Catch\Exceptions\FailedException;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Modules\Permissions\Enums\DataRange;
|
use Modules\Permissions\Enums\DataRange;
|
||||||
use Modules\Permissions\Models\Roles;
|
use Modules\Permissions\Models\Roles;
|
||||||
use Modules\Permissions\Http\Requests\RoleRequest;
|
use Modules\Permissions\Http\Requests\RoleRequest;
|
||||||
@ -39,13 +40,15 @@ class RolesController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(RoleRequest $request)
|
public function store(RoleRequest $request)
|
||||||
{
|
{
|
||||||
$dataRange = $request->get('data_range');
|
$data = $request->all();
|
||||||
|
|
||||||
if ($dataRange && ! DataRange::Personal_Choose->assert($request->get('data_range'))) {
|
if ($request->get('data_range') && ! DataRange::Personal_Choose->assert($data['data_range'])) {
|
||||||
$request['departments'] = [];
|
$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
|
* @param $id
|
||||||
* @return \Illuminate\Database\Eloquent\Model|null
|
* @return \Illuminate\Database\Eloquent\Model|null
|
||||||
*/
|
*/
|
||||||
public function show($id)
|
public function show($id, Request $request)
|
||||||
{
|
{
|
||||||
$role = $this->model->firstBy($id);
|
$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'));
|
$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'])) {
|
if ($request->get('data_range') && ! DataRange::Personal_Choose->assert($data['data_range'])) {
|
||||||
$data['departments'] = [];
|
$data['departments'] = [];
|
||||||
|
} else {
|
||||||
|
$data['data_range'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->model->updateBy($id,$data);
|
return $this->model->updateBy($id, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,7 +105,7 @@ const { formData, form, loading, submitForm, close, beforeCreate, beforeUpdate }
|
|||||||
|
|
||||||
if (props.primary) {
|
if (props.primary) {
|
||||||
const { afterShow } = useShow(props.api, props.primary, formData)
|
const { afterShow } = useShow(props.api, props.primary, formData)
|
||||||
|
// 更新角色值
|
||||||
afterShow.value = formData => {
|
afterShow.value = formData => {
|
||||||
const data = unref(formData)
|
const data = unref(formData)
|
||||||
data.parent_id = data.parent_id ? [data.parent_id] : 0
|
data.parent_id = data.parent_id ? [data.parent_id] : 0
|
||||||
@ -115,6 +115,8 @@ if (props.primary) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
formData.value = data
|
formData.value = data
|
||||||
|
// 这里需要获取角色的上级的权限以限制可用权限范围
|
||||||
|
getPermissions(data.parent_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,9 +129,12 @@ const departments = ref()
|
|||||||
const showDepartments = ref<boolean>(false)
|
const showDepartments = ref<boolean>(false)
|
||||||
|
|
||||||
const permissionLoadingText = ref<string>('加载中...')
|
const permissionLoadingText = ref<string>('加载中...')
|
||||||
|
|
||||||
|
// 获取权限
|
||||||
const getPermissions = async (value: number = 0) => {
|
const getPermissions = async (value: number = 0) => {
|
||||||
if (value) {
|
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
|
permissions.value = r.data.data.permissions
|
||||||
setCheckedPermissions()
|
setCheckedPermissions()
|
||||||
})
|
})
|
||||||
@ -141,6 +146,7 @@ const getPermissions = async (value: number = 0) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置已选权限
|
||||||
const setCheckedPermissions = () => {
|
const setCheckedPermissions = () => {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
props.hasPermissions.forEach(p => {
|
props.hasPermissions.forEach(p => {
|
||||||
@ -152,6 +158,8 @@ const setCheckedPermissions = () => {
|
|||||||
permissionLoadingText.value = '暂无数据'
|
permissionLoadingText.value = '暂无数据'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取角色信息
|
||||||
const getRoles = () => {
|
const getRoles = () => {
|
||||||
http.get(props.api, { id: props.primary ? props.primary : '' }).then(r => {
|
http.get(props.api, { id: props.primary ? props.primary : '' }).then(r => {
|
||||||
roles.value = r.data.data
|
roles.value = r.data.data
|
||||||
@ -163,9 +171,15 @@ const getDepartments = () => {
|
|||||||
departments.value = r.data.data
|
departments.value = r.data.data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新增默认获取全部权限
|
||||||
|
if (!props.primary) {
|
||||||
|
getPermissions()
|
||||||
|
}
|
||||||
|
|
||||||
|
// 页面挂载完成后
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getRoles()
|
getRoles()
|
||||||
getPermissions()
|
|
||||||
getDepartments()
|
getDepartments()
|
||||||
close(() => emit('close'))
|
close(() => emit('close'))
|
||||||
watch(
|
watch(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user