fix: 菜单管理

This commit is contained in:
easy 2023-03-13 15:36:24 +08:00
parent 7c86bdc569
commit 5c65ca9c50
4 changed files with 45 additions and 12 deletions

View File

@ -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);
// 获取资产类型

View File

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

View File

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

View File

@ -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}`,
);
},
//