2
0

feat: 菜单管理和日志管理super权限控制

This commit is contained in:
caiyuchao
2025-04-28 10:37:31 +08:00
parent dcd0c706fa
commit 87d2e1adeb
2 changed files with 27 additions and 12 deletions

View File

@@ -4,10 +4,17 @@ import { Button, Tag } from 'ant-design-vue';
import { SimpleScrollbar } from '~/packages/materials/src';
import MenuOperateModal from './modules/menu-operate-modal.vue';
import { useI18n } from 'vue-i18n';
import { useAuthStore } from '@/store/modules/auth';
const { t } = useI18n();
const authStore = useAuthStore();
const isSuper = authStore.userInfo.roles?.includes('super');
const { data, columns, loading, getData } = useTable({
apiFn: doGetMenuList,
columns: () => [
columns: () => {
let arr =
[
{
key: 'menuName',
dataIndex: 'menuName',
@@ -89,12 +96,15 @@ const { data, columns, loading, getData } = useTable({
dataIndex: 'createTime',
align: 'center',
title: t('page.menu.createtime')
},
{
}
]
if (isSuper) {
arr.push({
key: 'operate',
title: t('page.menu.operate'),
align: 'center',
width: 200,
hidden: true,
customRender: ({ record }) => (
<div class="flex justify-around gap-8px">
<Button size="small" onClick={() => edit(record.menuId)}>
@@ -102,8 +112,10 @@ const { data, columns, loading, getData } = useTable({
</Button>
</div>
)
})
}
],
return arr;
},
rowKey: 'menuId'
});
const { handleEdit, handleAdd, checkedRowKeys, operateType, drawerVisible, onDeleted, editingData } = useTableOperate(
@@ -145,7 +157,7 @@ function handleSubmitSuccess() {
<SimpleScrollbar>
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
<ACard :title="t('page.menu.title')">
<AButton mb-4 type="primary" ghost @click="handleAdd">{{ t('page.menu.addmenu') }}</AButton>
<AButton mb-4 type="primary" ghost @click="handleAdd" v-if="isSuper">{{ t('page.menu.addmenu') }}</AButton>
<ATable
:checked-row-keys="checkedRowKeys"

View File

@@ -11,6 +11,7 @@ import Form from 'ant-design-vue/es/form/Form';
import Modal from 'ant-design-vue/es/modal/Modal';
import { useRouter, useRoute } from 'vue-router';
import useDictStore from '@/store/modules/dict';
import { useAuthStore } from '@/store/modules/auth';
const router = useRouter();
const route = useRoute();
const routePath = route.path;
@@ -24,6 +25,8 @@ const { t } = useI18n();
const wrapperEl = shallowRef<HTMLElement | null>(null);
const { height: wrapperElHeight } = useElementSize(wrapperEl);
const authStore = useAuthStore();
const isSuper = authStore.userInfo.roles?.includes('super');
/**对话框对象信息状态 */
let modalState: any = reactive({
@@ -509,14 +512,14 @@ const handleReset = () => {
<div class="flex flex-wrap justify-end gap-x-12px gap-y-8px lt-sm:(w-200px py-12px)">
<slot name="prefix"></slot>
<slot name="default">
<AButton size="small" ghost type="primary" @click="fnModalVisibleByEdit()">
<AButton size="small" ghost type="primary" @click="fnModalVisibleByEdit()" v-if="isSuper">
<div class="flex-y-center gap-8px">
<icon-ic-round-plus class="text-icon" />
<span>{{ $t('common.add') }}</span>
</div>
</AButton>
<APopconfirm :title="$t('common.confirmDelete')" :disabled="checkedRowKeys.length === 0"
@confirm="handleBatchDelete">
@confirm="handleBatchDelete" v-if="isSuper">
<AButton size="small" danger :disabled="checkedRowKeys.length <= 0">
<div class="flex-y-center gap-8px">
<icon-ic-round-delete class="text-icon" />
@@ -559,7 +562,7 @@ const handleReset = () => {
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'status'">
<a-switch v-model:checked="record.status" checked-value="0" un-checked-value="1" size="small"
<a-switch v-model:checked="record.status" checked-value="0" :disabled="!isSuper" un-checked-value="1" size="small"
@change="fnRecordStatus(record)" />
</template>
@@ -573,7 +576,7 @@ const handleReset = () => {
</template>
</a-button>
</a-tooltip>
<a-tooltip>
<a-tooltip v-if="isSuper">
<template #title>{{ t('common.edit') }}</template>
<a-button type="link" @click.prevent="fnModalVisibleByEdit(record.jobId)">
<template #icon>
@@ -582,7 +585,7 @@ const handleReset = () => {
</a-button>
</a-tooltip>
<a-tooltip>
<a-tooltip v-if="isSuper">
<template #title>{{ t('common.delete') }}</template>
<a-button type="link" @click.prevent="fnRecordDelete(record.jobId)">
<template #icon>
@@ -591,7 +594,7 @@ const handleReset = () => {
</a-button>
</a-tooltip>
<a-tooltip>
<a-tooltip v-if="isSuper">
<template #title>{{ t('page.manage.task.runOne') }}</template>
<a-button type="link" @click.prevent="fnRunTask(record.jobId)">
<template #icon>