fix: 菜单管理
This commit is contained in:
parent
7c86bdc569
commit
5c65ca9c50
|
@ -4,7 +4,11 @@ import server from '@/utils/request';
|
|||
export const getMenuTree_api = (data: object) => server.post(`/menu/_all/tree`, data);
|
||||
|
||||
export const queryOwnThree = (data: any) => server.post<any>('/menu/user-own/tree', data)
|
||||
|
||||
/**
|
||||
* 校验编码唯一性
|
||||
* @param data
|
||||
*/
|
||||
export const validCode_api = (data:object) => server.get(`/menu/code/_validate`,data);
|
||||
|
||||
|
||||
// 获取资产类型
|
||||
|
|
|
@ -57,8 +57,12 @@
|
|||
label="编码"
|
||||
name="code"
|
||||
:rules="[
|
||||
{ required: true, message: '请输入编码' },
|
||||
{ max: 64, message: '最多可输入64个字符' },
|
||||
{ required: true, message: '' },
|
||||
{ max: 64, message: '' },
|
||||
{
|
||||
validator: form.checkCode,
|
||||
trigger: 'blur',
|
||||
},
|
||||
]"
|
||||
>
|
||||
<j-input v-model:value="form.data.code" />
|
||||
|
@ -228,7 +232,9 @@ import {
|
|||
getMenuInfo_api,
|
||||
saveMenuInfo_api,
|
||||
addMenuInfo_api,
|
||||
validCode_api,
|
||||
} from '@/api/system/menu';
|
||||
import { Rule } from 'ant-design-vue/lib/form';
|
||||
|
||||
const permission = 'system/Menu';
|
||||
// 路由
|
||||
|
@ -260,18 +266,18 @@ const form = reactive({
|
|||
treeData: [], // 关联菜单
|
||||
assetsType: [] as assetType[], // 资产类型
|
||||
saveLoading: false,
|
||||
sourceCode: '', // 原本的code
|
||||
|
||||
init: () => {
|
||||
// 获取菜单详情
|
||||
routeParams.id &&
|
||||
getMenuInfo_api(routeParams.id).then((resp: any) => {
|
||||
console.log(1111);
|
||||
|
||||
form.data = {
|
||||
...(resp.result as formType),
|
||||
accessSupport:
|
||||
resp.result?.accessSupport?.value || 'unsupported',
|
||||
};
|
||||
form.sourceCode = resp.result.code
|
||||
});
|
||||
// 获取关联菜单
|
||||
getMenuTree_api({ paging: false }).then((resp: any) => {
|
||||
|
@ -285,6 +291,20 @@ const form = reactive({
|
|||
}));
|
||||
});
|
||||
},
|
||||
checkCode: async (_rule: Rule, value: string): Promise<any> => {
|
||||
if (!value) return Promise.reject('请输入编码');
|
||||
else if (value.length > 64) return Promise.reject('最多可输入64个字符');
|
||||
// 编辑时不校验原本的编码
|
||||
else if (routeParams.id && value === form.sourceCode) return Promise.resolve('');
|
||||
else {
|
||||
const resp: any = await validCode_api({
|
||||
code: value,
|
||||
owner: 'iot',
|
||||
});
|
||||
if (resp.result.passed) return Promise.resolve();
|
||||
else return Promise.reject('该编码重复');
|
||||
}
|
||||
},
|
||||
clickSave: () => {
|
||||
if (!basicFormRef || !permissFormRef) return;
|
||||
Promise.all([
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<j-space :size="16">
|
||||
<PermissionButton
|
||||
type="link"
|
||||
:uhasPermission="`${permission}:update`"
|
||||
:hasPermission="`${permission}:update`"
|
||||
:tooltip="{ title: '编辑' }"
|
||||
@click="openDialog('编辑', slotProps)"
|
||||
>
|
||||
|
@ -28,7 +28,7 @@
|
|||
</PermissionButton>
|
||||
<PermissionButton
|
||||
type="link"
|
||||
:uhasPermission="true"
|
||||
:hasPermission="`${permission}:view`"
|
||||
:tooltip="{ title: '查看' }"
|
||||
@click="openDialog('查看', slotProps)"
|
||||
>
|
||||
|
@ -36,7 +36,6 @@
|
|||
</PermissionButton>
|
||||
<PermissionButton
|
||||
type="link"
|
||||
:uhasPermission="`${permission}:update`"
|
||||
:tooltip="{ title: '删除' }"
|
||||
:popConfirm="{
|
||||
title: `确认删除`,
|
||||
|
@ -83,7 +82,7 @@ const selectItem = ref<any>({});
|
|||
const dialogVisible = ref(false);
|
||||
const dialogTitle = ref<'查看' | '新增' | '编辑'>('新增');
|
||||
const openDialog = (mode: '查看' | '新增' | '编辑', row: object) => {
|
||||
if(!routeParams.id) return message.warning('请先新增菜单基本信息')
|
||||
if (!routeParams.id) return message.warning('请先新增菜单基本信息');
|
||||
selectItem.value = { ...row };
|
||||
dialogTitle.value = mode;
|
||||
dialogVisible.value = true;
|
||||
|
@ -149,4 +148,12 @@ type tableDataItem = {
|
|||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
<style lang="less" scoped>
|
||||
.button-mange-container {
|
||||
:deep(.ant-table-cell) {
|
||||
.ant-btn-link {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
</page-container>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
<script setup lang="ts" name="Menu">
|
||||
import PermissionButton from '@/components/PermissionButton/index.vue';
|
||||
|
||||
import { getMenuTree_api, delMenuInfo_api } from '@/api/system/menu';
|
||||
|
@ -201,10 +201,12 @@ const table = reactive({
|
|||
};
|
||||
},
|
||||
addChildren: (row: any) => {
|
||||
const sortIndex = row?.children?.length || 0;
|
||||
|
||||
router.push(
|
||||
`/system/Menu/detail/:id?pid=${row.id}&basePath=${
|
||||
row.url || ''
|
||||
}&sortIndex=${row.children.length + 1}`,
|
||||
}&sortIndex=${sortIndex + 1}`,
|
||||
);
|
||||
},
|
||||
// 跳转至详情页
|
||||
|
|
Loading…
Reference in New Issue