Bläddra i källkod

feat(router): menu增加提示

gemercheung 3 år sedan
förälder
incheckning
e0863871d8

+ 3 - 0
src/locales/lang/en/routes/system.ts

@@ -0,0 +1,3 @@
+export default {
+  buttonMenuWaring: '',
+};

+ 3 - 0
src/locales/lang/zh-CN/routes/system.ts

@@ -0,0 +1,3 @@
+export default {
+  buttonMenuWaring: '上级菜单只能为菜单类型',
+};

+ 1 - 1
src/utils/treeUtils.ts

@@ -11,7 +11,7 @@ export interface TreeMenuNode {
   menuId: number;
   parentId: number;
   name: string;
-  key?: (string | number)[];
+  type?: number;
   children?: TreeMenuNode[];
 }
 

+ 13 - 4
src/views/system/menu/MenuDrawer.vue

@@ -18,6 +18,8 @@
 
   import { getMenuList, saveMenuApi, updateMenuApi } from '/@/api/system/system';
   import { makeMenuTree, TreeMenuNode } from '/@/utils/treeUtils';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useI18n } from '/@/hooks/web/useI18n';
 
   export default defineComponent({
     name: 'MenuDrawer',
@@ -25,6 +27,7 @@
     emits: ['success', 'register'],
     setup(_, { emit }) {
       const isUpdate = ref(true);
+      const tData = ref<TreeMenuNode[]>([]);
 
       const [registerForm, { resetFields, setFieldsValue, updateSchema, validate }] = useForm({
         labelWidth: 100,
@@ -43,8 +46,8 @@
             ...data.record,
           });
         }
-        const tData = (await getMenuList()) as any as TreeMenuNode[];
-        const treeData = makeMenuTree(tData);
+        tData.value = (await getMenuList()) as any as TreeMenuNode[];
+        const treeData = makeMenuTree(tData.value);
         updateSchema({
           field: 'parentId',
           componentProps: {
@@ -54,7 +57,8 @@
       });
 
       const getTitle = computed(() => (!unref(isUpdate) ? '新增菜单' : '编辑菜单'));
-
+      const { createMessage } = useMessage();
+      const { t } = useI18n();
       async function handleSubmit() {
         try {
           const values = await validate();
@@ -62,10 +66,15 @@
           // TODO custom api
           console.log(values);
           values.parentId ??= 0;
-
+          const parent = tData.value.find((i) => i.menuId === values.parentId);
           if (values.type === 0) {
             values.component = 'LAYOUT';
           }
+          if (values.type === 2 && parent && parent.type !== 1) {
+            createMessage.error(t('routes.system.buttonMenuWaring'));
+            return;
+          }
+
           if (!unref(isUpdate)) {
             await saveMenuApi(values);
           } else {

+ 2 - 0
src/views/system/menu/menu.data.ts

@@ -163,6 +163,7 @@ export const formSchema: FormSchema[] = [
   {
     field: 'orderNum',
     label: '排序',
+    defaultValue: 0,
     component: 'InputNumber',
     required: true,
   },
@@ -190,6 +191,7 @@ export const formSchema: FormSchema[] = [
   {
     field: 'perms',
     label: '权限标识',
+    defaultValue: '',
     component: 'Input',
     ifShow: ({ values }) => !isDir(values.type),
   },