diff --git a/src/api/system/menu.ts b/src/api/system/menu.ts index 9f2c8ebd..93be944c 100644 --- a/src/api/system/menu.ts +++ b/src/api/system/menu.ts @@ -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('/menu/user-own/tree', data) - +/** + * 校验编码唯一性 + * @param data + */ +export const validCode_api = (data:object) => server.get(`/menu/code/_validate`,data); // 获取资产类型 diff --git a/src/views/system/Menu/Detail/BasicInfo.vue b/src/views/system/Menu/Detail/BasicInfo.vue index 16b4214b..2d5523bf 100644 --- a/src/views/system/Menu/Detail/BasicInfo.vue +++ b/src/views/system/Menu/Detail/BasicInfo.vue @@ -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', + }, ]" > @@ -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 => { + 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([ diff --git a/src/views/system/Menu/Detail/ButtonMange.vue b/src/views/system/Menu/Detail/ButtonMange.vue index 00c266b6..dc60930d 100644 --- a/src/views/system/Menu/Detail/ButtonMange.vue +++ b/src/views/system/Menu/Detail/ButtonMange.vue @@ -20,7 +20,7 @@ @@ -28,7 +28,7 @@ @@ -36,7 +36,6 @@ +.button-mange-container { + :deep(.ant-table-cell) { + .ant-btn-link { + padding: 0; + } + } +} + diff --git a/src/views/system/Menu/index.vue b/src/views/system/Menu/index.vue index ed39b707..06a43ffa 100644 --- a/src/views/system/Menu/index.vue +++ b/src/views/system/Menu/index.vue @@ -74,7 +74,7 @@ -