zhengyiming
6 天以前 93393138afcda975703f8c89ae1702fb62502080
src/views/System/ModuleManage.vue
@@ -111,6 +111,7 @@
import _ from 'lodash';
import { useReset } from '@bole-core/core';
import * as menuServices from '@/services/api/menu';
import { DrawerTableDataItem } from './types';
defineOptions({
  name: 'ModuleManage',
@@ -181,6 +182,7 @@
const BaseState = {
  loading: true,
  searchValue: '',
  group: 'default',
};
const state = reactive({ ...BaseState });
const moduleTreeStore = ref<TreeStore<TreeModuleDtoGroupDto>>();
@@ -210,9 +212,10 @@
//drawer
const drawerVisible = ref(false);
const currentDrawerModule = ref<API.GetMenuQueryResult>({});
const drawerState = reactive<{
  type: SubModuleType;
  tableData: ValueOf<API.AllSubModule>;
  tableData: DrawerTableDataItem[];
}>({
  type: SubModuleType.PageButton,
  tableData: [],
@@ -396,12 +399,7 @@
async function saveMenu(params: API.SaveMenuCommand) {
  try {
    const res = await menuServices.saveMenu(params);
    if (res) {
      Message.successMessage('保存成功');
      getAllModule();
      editDialogFormVisible.value = false;
      return res;
    }
    return res;
  } catch (error) {}
}
@@ -418,20 +416,36 @@
async function openDrawer(module: TreeModuleDtoGroupDto, type: SubModuleType) {
  try {
    drawerState.type = type;
    currentDrawerModule.value = await getMenu(module.id);
    await nextTick();
    getBaseModuleGetAllSubModule(module, type);
  } catch (error) {}
}
async function getBaseModuleGetAllSubModule(module: TreeModuleDtoGroupDto, type: SubModuleType) {
  try {
    const defaultGroup = currentDrawerModule.value.groups.find((g) => g.group === 'default');
    const menu = await getMenu(module.id);
    currentDrawerModule.value = menu;
    const currentGroup = menu.groups.find((g) => g.group === state.group) ?? {};
    if (type === SubModuleType.Column) {
      drawerState.tableData = defaultGroup.fields;
      drawerState.tableData = (currentGroup.fields ?? []).map((f) => ({
        enCode: f.code,
        name: f.name,
        sortCode: f.sort,
        width: f.width,
        isEdit: false,
        isShow: false,
        id: f.id,
      }));
    } else {
      drawerState.tableData = defaultGroup.buttonLocations.find(
        (b) => b.location === SubModuleKey[type]
      );
      drawerState.tableData = (
        currentGroup.buttonLocations?.find((b) => b.location === SubModuleKey[type])?.buttons ?? []
      ).map((b) => ({
        enCode: b.code,
        name: b.name,
        sortCode: b.sort,
        width: b.width,
        isEdit: false,
        isShow: false,
        id: b.id,
      }));
    }
    drawerVisible.value = true;
  } catch (error) {}
@@ -442,17 +456,17 @@
    enCode: '',
    name: '',
    sortCode: sortCode,
    width: 0,
    width: 0 as any as string,
    isEdit: true,
    apiName: '',
    realColumn: '',
    // apiName: '',
    // realColumn: '',
    isShow: true,
  };
  drawerState.tableData?.push(baseData);
}
function getDefaultSortCode() {
  return drawerState.tableData.length > 0
    ? drawerState.tableData[drawerState.tableData.length - 1].sort + 1
    ? drawerState.tableData[drawerState.tableData.length - 1].sortCode + 1
    : 0;
}
function handleBatchAddColumn(keys: string[]) {
@@ -461,13 +475,13 @@
    enCode: key,
    name: '',
    sortCode: sortCode + index,
    width: 0,
    width: 0 as any as string,
    isEdit: true,
  }));
  drawerState.tableData?.push(...baseDataList);
}
function handleAddFastBtn(fastBtn: FastBtn) {
  let subModule: API.ModuleButtonDto | API.ModuleColumnDto = {
  let subModule: DrawerTableDataItem = {
    enCode: fastBtn.enCode,
    name: fastBtn.name,
    sortCode: getDefaultSortCode(),
@@ -478,37 +492,29 @@
  }
  handleSaveSubModule(subModule);
}
async function handleSaveSubModule(subModule: API.ModuleButtonDto | API.ModuleColumnDto) {
async function handleSaveSubModule(subModule: DrawerTableDataItem) {
  try {
    let params = {
      moduleId: currentDrawerModule.value.id,
      enCode: subModule.enCode,
    let params: API.SaveMenuFieldCommand = {
      parentId: currentDrawerModule.value.id,
      code: subModule.enCode,
      name: subModule.name,
      sortCode: subModule.sortCode,
      group: state.group,
      // location: 'string',
      width: subModule.width,
      sort: subModule.sortCode,
    };
    if (subModule.id) {
      //@ts-ignore
      params.id = subModule.id;
    }
    if (drawerState.type === SubModuleType.Column) {
      const _subModule = subModule as API.ModuleColumnDto;
      params = {
        ...params,
        //@ts-ignore
        width: _subModule.width,
        apiName: _subModule.apiName,
        realColumn: _subModule.realColumn,
        isShow: _subModule.isShow,
      };
    } else {
      //@ts-ignore
      params.buttonType = drawerState.type;
      params.location = SubModuleKey[drawerState.type];
    }
    let res = null;
    if (drawerState.type === SubModuleType.Column) {
      res = await baseModuleServices.addOrEditModuleColumn(params);
      res = await menuServices.saveMenuField(params);
    } else {
      res = await baseModuleServices.addOrEditModuleButton(params);
      res = await menuServices.saveMenuButton(params);
    }
    if (res) {
      getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type);
@@ -519,28 +525,25 @@
async function handelBatchSaveColumn() {
  try {
    if (drawerState.type === SubModuleType.Column) {
      let columnModuleList = drawerState.tableData as (API.ModuleColumnDto & { isEdit: boolean })[]; //.filter((d) => d.isEdit);
      let columnModuleList = drawerState.tableData; //.filter((d) => d.isEdit);
      if (columnModuleList.length > 0) {
        let params = columnModuleList.map((columnModule) => {
          let columnItem = {
            moduleId: currentDrawerModule.value.id,
            enCode: columnModule.enCode,
            name: columnModule.name,
            sortCode: columnModule.sortCode,
            apiName: columnModule.apiName,
            realColumn: columnModule.realColumn,
            isShow: columnModule.isShow,
            width: columnModule.width,
          };
          if (columnModule.id) {
            //@ts-ignore
            columnItem.id = columnModule.id;
        const groups = currentDrawerModule.value.groups.map((group) => {
          if (group.group === state.group) {
            group.fields ==
              columnModuleList.map((c) => ({
                code: c.enCode,
                name: c.name,
                width: c.width,
                sort: c.sortCode,
              }));
          }
          return columnItem;
          return group;
        });
        let res = await baseModuleServices.addModuleColumnList(params, {
          getResponse: true,
        });
        let params: API.SaveMenuCommand = {
          ...currentDrawerModule.value,
          groups: groups,
        };
        const res = await saveMenu(params);
        if (res) {
          getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type);
          Message.successMessage('保存成功');
@@ -550,15 +553,12 @@
  } catch (error) {}
}
async function handleDeleteSubModule(subModule: API.ModuleButtonDto | API.ModuleColumnDto) {
async function handleDeleteSubModule(subModule: DrawerTableDataItem) {
  try {
    await Message.deleteMessage();
    let res = null;
    if (drawerState.type === SubModuleType.Column) {
      res = await baseModuleServices.deleteModuleColumn({ id: subModule.id });
    } else {
      res = await baseModuleServices.deleteModuleButton({ id: subModule.id });
    }
    let res = await menuServices.deleteMenu({
      ids: [subModule.id],
    });
    if (res) {
      Message.successMessage('删除成功');
      getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type);