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 getMenuTree_api = (data: object) => server.post(`/menu/_all/tree`, data);
|
||||||
|
|
||||||
export const queryOwnThree = (data: any) => server.post<any>('/menu/user-own/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="编码"
|
label="编码"
|
||||||
name="code"
|
name="code"
|
||||||
:rules="[
|
:rules="[
|
||||||
{ required: true, message: '请输入编码' },
|
{ required: true, message: '' },
|
||||||
{ max: 64, message: '最多可输入64个字符' },
|
{ max: 64, message: '' },
|
||||||
|
{
|
||||||
|
validator: form.checkCode,
|
||||||
|
trigger: 'blur',
|
||||||
|
},
|
||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
<j-input v-model:value="form.data.code" />
|
<j-input v-model:value="form.data.code" />
|
||||||
|
@ -228,7 +232,9 @@ import {
|
||||||
getMenuInfo_api,
|
getMenuInfo_api,
|
||||||
saveMenuInfo_api,
|
saveMenuInfo_api,
|
||||||
addMenuInfo_api,
|
addMenuInfo_api,
|
||||||
|
validCode_api,
|
||||||
} from '@/api/system/menu';
|
} from '@/api/system/menu';
|
||||||
|
import { Rule } from 'ant-design-vue/lib/form';
|
||||||
|
|
||||||
const permission = 'system/Menu';
|
const permission = 'system/Menu';
|
||||||
// 路由
|
// 路由
|
||||||
|
@ -260,18 +266,18 @@ const form = reactive({
|
||||||
treeData: [], // 关联菜单
|
treeData: [], // 关联菜单
|
||||||
assetsType: [] as assetType[], // 资产类型
|
assetsType: [] as assetType[], // 资产类型
|
||||||
saveLoading: false,
|
saveLoading: false,
|
||||||
|
sourceCode: '', // 原本的code
|
||||||
|
|
||||||
init: () => {
|
init: () => {
|
||||||
// 获取菜单详情
|
// 获取菜单详情
|
||||||
routeParams.id &&
|
routeParams.id &&
|
||||||
getMenuInfo_api(routeParams.id).then((resp: any) => {
|
getMenuInfo_api(routeParams.id).then((resp: any) => {
|
||||||
console.log(1111);
|
|
||||||
|
|
||||||
form.data = {
|
form.data = {
|
||||||
...(resp.result as formType),
|
...(resp.result as formType),
|
||||||
accessSupport:
|
accessSupport:
|
||||||
resp.result?.accessSupport?.value || 'unsupported',
|
resp.result?.accessSupport?.value || 'unsupported',
|
||||||
};
|
};
|
||||||
|
form.sourceCode = resp.result.code
|
||||||
});
|
});
|
||||||
// 获取关联菜单
|
// 获取关联菜单
|
||||||
getMenuTree_api({ paging: false }).then((resp: any) => {
|
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: () => {
|
clickSave: () => {
|
||||||
if (!basicFormRef || !permissFormRef) return;
|
if (!basicFormRef || !permissFormRef) return;
|
||||||
Promise.all([
|
Promise.all([
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<j-space :size="16">
|
<j-space :size="16">
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
type="link"
|
type="link"
|
||||||
:uhasPermission="`${permission}:update`"
|
:hasPermission="`${permission}:update`"
|
||||||
:tooltip="{ title: '编辑' }"
|
:tooltip="{ title: '编辑' }"
|
||||||
@click="openDialog('编辑', slotProps)"
|
@click="openDialog('编辑', slotProps)"
|
||||||
>
|
>
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
</PermissionButton>
|
</PermissionButton>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
type="link"
|
type="link"
|
||||||
:uhasPermission="true"
|
:hasPermission="`${permission}:view`"
|
||||||
:tooltip="{ title: '查看' }"
|
:tooltip="{ title: '查看' }"
|
||||||
@click="openDialog('查看', slotProps)"
|
@click="openDialog('查看', slotProps)"
|
||||||
>
|
>
|
||||||
|
@ -36,7 +36,6 @@
|
||||||
</PermissionButton>
|
</PermissionButton>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
type="link"
|
type="link"
|
||||||
:uhasPermission="`${permission}:update`"
|
|
||||||
:tooltip="{ title: '删除' }"
|
:tooltip="{ title: '删除' }"
|
||||||
:popConfirm="{
|
:popConfirm="{
|
||||||
title: `确认删除`,
|
title: `确认删除`,
|
||||||
|
@ -83,7 +82,7 @@ const selectItem = ref<any>({});
|
||||||
const dialogVisible = ref(false);
|
const dialogVisible = ref(false);
|
||||||
const dialogTitle = ref<'查看' | '新增' | '编辑'>('新增');
|
const dialogTitle = ref<'查看' | '新增' | '编辑'>('新增');
|
||||||
const openDialog = (mode: '查看' | '新增' | '编辑', row: object) => {
|
const openDialog = (mode: '查看' | '新增' | '编辑', row: object) => {
|
||||||
if(!routeParams.id) return message.warning('请先新增菜单基本信息')
|
if (!routeParams.id) return message.warning('请先新增菜单基本信息');
|
||||||
selectItem.value = { ...row };
|
selectItem.value = { ...row };
|
||||||
dialogTitle.value = mode;
|
dialogTitle.value = mode;
|
||||||
dialogVisible.value = true;
|
dialogVisible.value = true;
|
||||||
|
@ -149,4 +148,12 @@ type tableDataItem = {
|
||||||
};
|
};
|
||||||
</script>
|
</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>
|
</page-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts" name="Menu">
|
||||||
import PermissionButton from '@/components/PermissionButton/index.vue';
|
import PermissionButton from '@/components/PermissionButton/index.vue';
|
||||||
|
|
||||||
import { getMenuTree_api, delMenuInfo_api } from '@/api/system/menu';
|
import { getMenuTree_api, delMenuInfo_api } from '@/api/system/menu';
|
||||||
|
@ -201,10 +201,12 @@ const table = reactive({
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
addChildren: (row: any) => {
|
addChildren: (row: any) => {
|
||||||
|
const sortIndex = row?.children?.length || 0;
|
||||||
|
|
||||||
router.push(
|
router.push(
|
||||||
`/system/Menu/detail/:id?pid=${row.id}&basePath=${
|
`/system/Menu/detail/:id?pid=${row.id}&basePath=${
|
||||||
row.url || ''
|
row.url || ''
|
||||||
}&sortIndex=${row.children.length + 1}`,
|
}&sortIndex=${sortIndex + 1}`,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
// 跳转至详情页
|
// 跳转至详情页
|
||||||
|
|
Loading…
Reference in New Issue