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