|
@@ -46,8 +46,8 @@
|
|
|
</a-tabs>
|
|
|
</BasicDrawer>
|
|
|
</template>
|
|
|
-<script lang="ts">
|
|
|
- import { defineComponent, ref, computed } from 'vue';
|
|
|
+<script lang="ts" setup>
|
|
|
+ import { ref, computed } from 'vue';
|
|
|
import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
|
|
|
import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
|
|
|
import { BasicColumn } from '/@/components/Table';
|
|
@@ -77,7 +77,7 @@
|
|
|
const componentType = ref<number>(0);
|
|
|
const hasMetaFormId = ref(false);
|
|
|
const systemType = ref('');
|
|
|
- export const formSchema: FormSchema[] = [
|
|
|
+ const formSchema: FormSchema[] = [
|
|
|
{
|
|
|
field: 'title',
|
|
|
label: t('菜单名称'),
|
|
@@ -279,7 +279,7 @@
|
|
|
},
|
|
|
];
|
|
|
|
|
|
- export const columns: BasicColumn[] = [
|
|
|
+ const columns: BasicColumn[] = [
|
|
|
{
|
|
|
title: t('按钮名称'),
|
|
|
dataIndex: 'name',
|
|
@@ -308,218 +308,184 @@
|
|
|
},
|
|
|
},
|
|
|
];
|
|
|
+ const emit = defineEmits(['success', 'register']);
|
|
|
|
|
|
- export default defineComponent({
|
|
|
- name: 'MenuDrawer',
|
|
|
- components: {
|
|
|
- Upload,
|
|
|
- BasicDrawer,
|
|
|
- BasicForm,
|
|
|
- FormTable,
|
|
|
+ const permissionStore = usePermissionStore();
|
|
|
+ const { notification } = useMessage();
|
|
|
+ const rowId = ref('');
|
|
|
+ const activeKey = ref('1');
|
|
|
+ const buttonTable = ref();
|
|
|
+ const columnTable = ref();
|
|
|
+ const formTable = ref();
|
|
|
+ const buttonDatas = ref<MenuButtonModel[]>([]);
|
|
|
+ const columnDatas = ref<MenuButtonModel[]>([]);
|
|
|
+ const formDatas = ref<MenuButtonModel[]>([]);
|
|
|
+ const systemId = ref('1');
|
|
|
|
|
|
- ButtonTable,
|
|
|
- ColumnTable,
|
|
|
- },
|
|
|
- emits: ['success', 'register'],
|
|
|
- setup(_, { emit }) {
|
|
|
- const permissionStore = usePermissionStore();
|
|
|
- const { notification } = useMessage();
|
|
|
- const rowId = ref('');
|
|
|
- const activeKey = ref('1');
|
|
|
- const buttonTable = ref();
|
|
|
- const columnTable = ref();
|
|
|
- const formTable = ref();
|
|
|
- const buttonDatas = ref<MenuButtonModel[]>([]);
|
|
|
- const columnDatas = ref<MenuButtonModel[]>([]);
|
|
|
- const formDatas = ref<MenuButtonModel[]>([]);
|
|
|
- const systemId = ref('1');
|
|
|
-
|
|
|
- const folderId = ref('');
|
|
|
+ const folderId = ref('');
|
|
|
|
|
|
- const [registerForm, { resetFields, setFieldsValue, updateSchema, validate }] = useForm({
|
|
|
- labelWidth: 100,
|
|
|
- schemas: formSchema,
|
|
|
- showActionButtonGroup: false,
|
|
|
- baseColProps: { lg: 12, md: 24 },
|
|
|
- });
|
|
|
- // {
|
|
|
+ const [registerForm, { resetFields, setFieldsValue, updateSchema, validate }] = useForm({
|
|
|
+ labelWidth: 100,
|
|
|
+ schemas: formSchema,
|
|
|
+ showActionButtonGroup: false,
|
|
|
+ baseColProps: { lg: 12, md: 24 },
|
|
|
+ });
|
|
|
+ // {
|
|
|
|
|
|
- const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
|
|
- await resetFields();
|
|
|
- systemType.value = data.systemType;
|
|
|
- setDrawerProps({ confirmLoading: false });
|
|
|
- isUpdate.value = !!data?.isUpdate;
|
|
|
- if (isUpdate.value) {
|
|
|
- rowId.value = data.record.id;
|
|
|
- folderId.value = data.record.iconUrl || '0';
|
|
|
- if (data.record && data.record.meta && data.record.meta.formId) {
|
|
|
- hasMetaFormId.value = true;
|
|
|
- }
|
|
|
- componentType.value = data.record.componentType;
|
|
|
- if (data.record.outLink == 1) {
|
|
|
- data.record.url = data.record.component;
|
|
|
- }
|
|
|
- if (data.record.parentId) {
|
|
|
- data.record.systemId = null;
|
|
|
- }
|
|
|
+ const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
|
|
|
+ await resetFields();
|
|
|
+ systemType.value = data.systemType;
|
|
|
+ setDrawerProps({ confirmLoading: false });
|
|
|
+ isUpdate.value = !!data?.isUpdate;
|
|
|
+ if (isUpdate.value) {
|
|
|
+ rowId.value = data.record.id;
|
|
|
+ folderId.value = data.record.iconUrl || '0';
|
|
|
+ if (data.record && data.record.meta && data.record.meta.formId) {
|
|
|
+ hasMetaFormId.value = true;
|
|
|
+ }
|
|
|
+ componentType.value = data.record.componentType;
|
|
|
+ if (data.record.outLink == 1) {
|
|
|
+ data.record.url = data.record.component;
|
|
|
+ }
|
|
|
+ if (data.record.parentId) {
|
|
|
+ data.record.systemId = null;
|
|
|
+ }
|
|
|
|
|
|
- if (data.record.deptId) {
|
|
|
- data.record['orgIds'] = data.record.deptId.split(',');
|
|
|
- }
|
|
|
+ if (data.record.deptId) {
|
|
|
+ data.record['orgIds'] = data.record.deptId.split(',');
|
|
|
+ }
|
|
|
|
|
|
- setFieldsValue({
|
|
|
- ...data.record,
|
|
|
- });
|
|
|
- getMenuButtonById({ id: data.record.id }).then((res) => {
|
|
|
- buttonDatas.value = res;
|
|
|
- });
|
|
|
- getMenuColumnById({ menuId: data.record.id }).then((res) => {
|
|
|
- columnDatas.value = res;
|
|
|
- });
|
|
|
- getMenuFormById({ menuId: data.record.id }).then((res) => {
|
|
|
- formDatas.value = res;
|
|
|
- });
|
|
|
- } else {
|
|
|
- rowId.value = '';
|
|
|
- componentType.value = 0;
|
|
|
- setFieldsValue({
|
|
|
- menuType: 1,
|
|
|
- enabledMark: 1,
|
|
|
- outLink: 0,
|
|
|
- display: 1,
|
|
|
- componentType: 0,
|
|
|
- systemId: '1',
|
|
|
- });
|
|
|
+ setFieldsValue({
|
|
|
+ ...data.record,
|
|
|
+ });
|
|
|
+ getMenuButtonById({ id: data.record.id }).then((res) => {
|
|
|
+ buttonDatas.value = res;
|
|
|
+ });
|
|
|
+ getMenuColumnById({ menuId: data.record.id }).then((res) => {
|
|
|
+ columnDatas.value = res;
|
|
|
+ });
|
|
|
+ getMenuFormById({ menuId: data.record.id }).then((res) => {
|
|
|
+ formDatas.value = res;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ rowId.value = '';
|
|
|
+ componentType.value = 0;
|
|
|
+ setFieldsValue({
|
|
|
+ menuType: 1,
|
|
|
+ enabledMark: 1,
|
|
|
+ outLink: 0,
|
|
|
+ display: 1,
|
|
|
+ componentType: 0,
|
|
|
+ systemId: '1',
|
|
|
+ });
|
|
|
|
|
|
- folderId.value = '0';
|
|
|
- }
|
|
|
+ folderId.value = '0';
|
|
|
+ }
|
|
|
|
|
|
- const treeData = await getMenuTree({ systemType: systemType.value });
|
|
|
+ const treeData = await getMenuTree({ systemType: systemType.value });
|
|
|
|
|
|
- const system = await getSubSystemList();
|
|
|
- await updateSchema([
|
|
|
- {
|
|
|
- field: 'parentId',
|
|
|
- component: 'MenuSelect',
|
|
|
- componentProps: ({ formModel }) => {
|
|
|
- return {
|
|
|
- getPopupContainer: () => document.body,
|
|
|
- systemType: systemType.value,
|
|
|
- onChange: (v) => {
|
|
|
- findParentSystem(treeData, treeData, v);
|
|
|
- formModel.systemId = systemId.value;
|
|
|
- },
|
|
|
- };
|
|
|
+ const system = await getSubSystemList();
|
|
|
+ await updateSchema([
|
|
|
+ {
|
|
|
+ field: 'parentId',
|
|
|
+ component: 'MenuSelect',
|
|
|
+ componentProps: ({ formModel }) => {
|
|
|
+ return {
|
|
|
+ getPopupContainer: () => document.body,
|
|
|
+ systemType: systemType.value,
|
|
|
+ onChange: (v) => {
|
|
|
+ findParentSystem(treeData, treeData, v);
|
|
|
+ formModel.systemId = systemId.value;
|
|
|
},
|
|
|
- },
|
|
|
- {
|
|
|
- field: 'systemId',
|
|
|
- componentProps: { options: system },
|
|
|
- },
|
|
|
- {
|
|
|
- field: 'outLink',
|
|
|
- dynamicDisabled: () => {
|
|
|
- return isUpdate.value && componentType.value == 1;
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- field: 'path',
|
|
|
- dynamicDisabled: () => {
|
|
|
- return isUpdate.value && componentType.value == 1;
|
|
|
- },
|
|
|
- },
|
|
|
- ]);
|
|
|
- });
|
|
|
+ };
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'systemId',
|
|
|
+ componentProps: { options: system },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'outLink',
|
|
|
+ dynamicDisabled: () => {
|
|
|
+ return isUpdate.value && componentType.value == 1;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'path',
|
|
|
+ dynamicDisabled: () => {
|
|
|
+ return isUpdate.value && componentType.value == 1;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
|
|
|
- const getTitle = computed(() => (!isUpdate.value ? t('新增菜单') : t('编辑菜单')));
|
|
|
- const { createMessage } = useMessage();
|
|
|
- async function handleSubmit() {
|
|
|
- try {
|
|
|
- const values = await validate();
|
|
|
- if (values.outLink == 1) {
|
|
|
- values.component = values.url;
|
|
|
- }
|
|
|
- if (values.orgIds) {
|
|
|
- const orgIds: Recordable[] = [];
|
|
|
- values.orgIds.forEach((item) => {
|
|
|
- orgIds.push({ deptId: item });
|
|
|
- });
|
|
|
- values.menuDeptRelations = orgIds;
|
|
|
- }
|
|
|
- values.buttonList = buttonTable.value
|
|
|
- ? buttonTable.value.getDataSource()
|
|
|
- : buttonDatas.value;
|
|
|
- values.columnList = columnTable.value
|
|
|
- ? columnTable.value.getDataSource()
|
|
|
- : columnDatas.value;
|
|
|
- values.systemType = systemType.value;
|
|
|
- values.formList = formTable.value ? formTable.value.getDataSource() : formDatas.value;
|
|
|
- setDrawerProps({ confirmLoading: true });
|
|
|
- if (values.parentId === rowId.value) {
|
|
|
- setDrawerProps({ confirmLoading: false });
|
|
|
- createMessage.error('不能将自身设为上级菜单');
|
|
|
- return false;
|
|
|
- }
|
|
|
- // TODO custom api
|
|
|
- if (!isUpdate.value) {
|
|
|
- //false 新增
|
|
|
- await addMenu(values);
|
|
|
- notification.success({
|
|
|
- message: t('提示'),
|
|
|
- description: t('新增菜单成功'),
|
|
|
- }); //提示消息
|
|
|
- } else {
|
|
|
- values.id = rowId.value;
|
|
|
- await updateMenu(values);
|
|
|
- notification.success({
|
|
|
- message: t('提示'),
|
|
|
- description: t('修改菜单成功'),
|
|
|
- }); //提示消息
|
|
|
- }
|
|
|
- await permissionStore.buildRoutesAction();
|
|
|
- closeDrawer();
|
|
|
- emit('success');
|
|
|
- } catch (error) {
|
|
|
- setDrawerProps({ confirmLoading: false });
|
|
|
- }
|
|
|
+ const getTitle = computed(() => (!isUpdate.value ? t('新增菜单') : t('编辑菜单')));
|
|
|
+ const { createMessage } = useMessage();
|
|
|
+ async function handleSubmit() {
|
|
|
+ try {
|
|
|
+ const values = await validate();
|
|
|
+ if (values.outLink == 1) {
|
|
|
+ values.component = values.url;
|
|
|
}
|
|
|
- const handleUpdate = (e) => {
|
|
|
- setFieldsValue({
|
|
|
- iconUrl: e[0].fileUrl,
|
|
|
+ if (values.orgIds) {
|
|
|
+ const orgIds: Recordable[] = [];
|
|
|
+ values.orgIds.forEach((item) => {
|
|
|
+ orgIds.push({ deptId: item });
|
|
|
});
|
|
|
- };
|
|
|
- function findParentSystem(treeData, tempTree, id) {
|
|
|
- for (let i = 0; i < treeData.length; i++) {
|
|
|
- let o = treeData[i];
|
|
|
+ values.menuDeptRelations = orgIds;
|
|
|
+ }
|
|
|
+ values.buttonList = buttonTable.value ? buttonTable.value.getDataSource() : buttonDatas.value;
|
|
|
+ values.columnList = columnTable.value ? columnTable.value.getDataSource() : columnDatas.value;
|
|
|
+ values.systemType = systemType.value;
|
|
|
+ values.formList = formTable.value ? formTable.value.getDataSource() : formDatas.value;
|
|
|
+ setDrawerProps({ confirmLoading: true });
|
|
|
+ if (values.parentId === rowId.value) {
|
|
|
+ setDrawerProps({ confirmLoading: false });
|
|
|
+ createMessage.error('不能将自身设为上级菜单');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // TODO custom api
|
|
|
+ if (!isUpdate.value) {
|
|
|
+ //false 新增
|
|
|
+ await addMenu(values);
|
|
|
+ notification.success({
|
|
|
+ message: t('提示'),
|
|
|
+ description: t('新增菜单成功'),
|
|
|
+ }); //提示消息
|
|
|
+ } else {
|
|
|
+ values.id = rowId.value;
|
|
|
+ await updateMenu(values);
|
|
|
+ notification.success({
|
|
|
+ message: t('提示'),
|
|
|
+ description: t('修改菜单成功'),
|
|
|
+ }); //提示消息
|
|
|
+ }
|
|
|
+ await permissionStore.buildRoutesAction();
|
|
|
+ closeDrawer();
|
|
|
+ emit('success');
|
|
|
+ } catch (error) {
|
|
|
+ setDrawerProps({ confirmLoading: false });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const handleUpdate = (e) => {
|
|
|
+ setFieldsValue({
|
|
|
+ iconUrl: e[0].fileUrl,
|
|
|
+ });
|
|
|
+ };
|
|
|
+ function findParentSystem(treeData, tempTree, id) {
|
|
|
+ for (let i = 0; i < treeData.length; i++) {
|
|
|
+ let o = treeData[i];
|
|
|
|
|
|
- if (o.id == id) {
|
|
|
- systemId.value = o.systemId;
|
|
|
- if (o.parentId) {
|
|
|
- findParentSystem(tempTree, tempTree, o.parentId);
|
|
|
- } else {
|
|
|
- break;
|
|
|
- }
|
|
|
- } else if (o.children?.length > 0) {
|
|
|
- findParentSystem(o.children, tempTree, id);
|
|
|
- }
|
|
|
+ if (o.id == id) {
|
|
|
+ systemId.value = o.systemId;
|
|
|
+ if (o.parentId) {
|
|
|
+ findParentSystem(tempTree, tempTree, o.parentId);
|
|
|
+ } else {
|
|
|
+ break;
|
|
|
}
|
|
|
+ } else if (o.children?.length > 0) {
|
|
|
+ findParentSystem(o.children, tempTree, id);
|
|
|
}
|
|
|
- return {
|
|
|
- registerDrawer,
|
|
|
- registerForm,
|
|
|
- getTitle,
|
|
|
- hasMetaFormId,
|
|
|
- handleSubmit,
|
|
|
- buttonTable,
|
|
|
- rowId,
|
|
|
- columnTable,
|
|
|
- formTable,
|
|
|
- activeKey,
|
|
|
- t,
|
|
|
- folderId,
|
|
|
- handleUpdate,
|
|
|
- systemType,
|
|
|
- };
|
|
|
- },
|
|
|
- });
|
|
|
+ }
|
|
|
+ }
|
|
|
</script>
|