chore: 优化角色交互

This commit is contained in:
JaguarJack 2023-05-10 16:52:17 +08:00
parent cbb3c156a6
commit 35622b164c
2 changed files with 33 additions and 10 deletions

View File

@ -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);
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('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);
} }
/** /**

View File

@ -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(