!44 优化权限配置

Merge pull request !44 from 木子-李/role_per_20240628
This commit is contained in:
dvadmin
2024-06-28 13:03:51 +00:00
committed by Gitee
4 changed files with 78 additions and 108 deletions

View File

@@ -80,8 +80,8 @@ export default defineComponent({
const state = reactive({
isShowPassword: false,
ruleForm: {
username: '',
password: '',
username: 'superadmin',
password: 'admin123456',
captcha: '',
captchaKey: '',
captchaImgBase: '',

View File

@@ -40,10 +40,11 @@ export function getDataPermissionRangeAll() {
method: 'get',
})
}
export function getDataPermissionDept() {
export function getDataPermissionDept(query:object) {
return request({
url: '/api/system/role_menu_button_permission/role_to_dept_all/',
method: 'get'
method: 'get',
params:query
})
}

View File

@@ -29,7 +29,7 @@
:label="btn.value">
<div class="btn-item">
{{ btn.data_range !== null ? `${btn.name}(${formatDataRange(btn.data_range)})` : btn.name }}
<span v-show="btn.isCheck" @click.stop.prevent="handleSettingClick(menu, btn.id)">
<span v-show="btn.isCheck" @click.stop.prevent="handleSettingClick(menu, btn)">
<el-icon>
<Setting />
</el-icon>
@@ -124,6 +124,7 @@ watch(
(val) => {
drawerVisible.value = val;
getMenuBtnPermission()
getDataPermissionRangeLable()
}
);
@@ -144,9 +145,10 @@ let menuCurrent = ref<Partial<MenuDataType>>({});
let menuBtnCurrent = ref<number>(-1);
let dialogVisible = ref(false);
let dataPermissionRange = ref<DataPermissionRangeType[]>([]);
let dataPermissionRangeLabel = ref<DataPermissionRangeType[]>([]);
const formatDataRange = computed(() => {
return function (datarange: number) {
const findItem = dataPermissionRange.value.find((i) => i.value === datarange);
const findItem = dataPermissionRangeLabel.value.find((i) => i.value === datarange);
return findItem?.label || ''
}
})
@@ -158,8 +160,13 @@ const getMenuBtnPermission = async () => {
const resMenu = await getRolePremission({ role: props.roleId })
menuData.value = resMenu.data
}
// 获取按钮的数据权限下拉选项
const getDataPermissionRangeLable = async () => {
const resRange = await getDataPermissionRange({ role: props.roleId })
dataPermissionRangeLabel.value = resRange.data;
}
const fetchData = async (btnId) => {
const fetchData = async (btnId:number) => {
try {
const resRange = await getDataPermissionRange({menu_button:btnId});
if (resRange?.code === 2000) {
@@ -170,20 +177,22 @@ const fetchData = async (btnId) => {
}
};
const handleCollapseChange = (val: number) => {
collapseCurrent.value = [val];
};
// const handleCollapseChange = (val: number) => {
// collapseCurrent.value = [val];
// };
/**
* 设置按钮数据权限
* @param record 当前菜单
* @param btnType 按钮类型
*/
const handleSettingClick = (record: MenusType, btnId: number) => {
const handleSettingClick = (record: MenusType, btn: MenusType['btns'][number]) => {
menuCurrent.value = record;
menuBtnCurrent.value = btnId;
menuBtnCurrent.value = btn.id;
dialogVisible.value = true;
fetchData(btnId)
dataPermission.value =btn.data_range;
handlePermissionRangeChange(btn.data_range)
fetchData( btn.id)
};
const handleColumnChange = (val: boolean, record: MenusType, btnType: string) => {
@@ -194,9 +203,10 @@ const handleColumnChange = (val: boolean, record: MenusType, btnType: string) =>
const handlePermissionRangeChange = async (val: number) => {
if (val === 4) {
const res = await getDataPermissionDept();
const data = XEUtils.toArrayTree(res.data, { parentKey: 'parent', strict: false });
deptData.value = data;
const res = await getDataPermissionDept({ role: props.roleId,menu_button:menuBtnCurrent.value });
const depts = XEUtils.toArrayTree(res.data.depts, { parentKey: 'parent', strict: false });
deptData.value = depts;
customDataPermission.value = res.data.dept_checked;
}
};