From 675e9d9e998412c0777427d36124e340463bb56f Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 05 八月 2025 14:32:27 +0800
Subject: [PATCH] fix: 修改功能模块

---
 src/views/System/ModuleManage.vue |  140 ++++++++++++++++++++++++----------------------
 1 files changed, 72 insertions(+), 68 deletions(-)

diff --git a/src/views/System/ModuleManage.vue b/src/views/System/ModuleManage.vue
index 5389d40..c35f3b4 100644
--- a/src/views/System/ModuleManage.vue
+++ b/src/views/System/ModuleManage.vue
@@ -104,6 +104,8 @@
   FastBtn,
   ModuleColumns,
   EnumMenuType,
+  EnumClientTypeText,
+  EnumUserTypeText,
 } from '@/constants';
 import SubModuleEditDrawer from './components/SubModuleEditDrawer.vue';
 import AddOrEditModuleDialog from './components/AddOrEditModuleDialog.vue';
@@ -111,6 +113,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 +184,9 @@
 const BaseState = {
   loading: true,
   searchValue: '',
+  group: 'default',
+  userType: EnumUserType.Operation,
+  clientType: EnumClientType.PcWeb,
 };
 const state = reactive({ ...BaseState });
 const moduleTreeStore = ref<TreeStore<TreeModuleDtoGroupDto>>();
@@ -210,9 +216,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: [],
@@ -225,8 +232,8 @@
   try {
     let res = await menuServices.getMenus(
       {
-        userType: EnumUserType.Operation,
-        clientType: EnumClientType.PcWeb,
+        userType: state.userType,
+        clientType: state.clientType,
       },
       {
         showLoading: false,
@@ -363,8 +370,8 @@
 async function handleAddOrEditModule() {
   try {
     let params: API.SaveMenuCommand = {
-      userType: EnumUserType.Operation,
-      clientType: EnumClientType.PcWeb,
+      userType: state.userType,
+      clientType: state.clientType,
       code: editForm.enCode,
       name: editForm.name,
       type: editForm.isMenu ? EnumMenuType.Menu : EnumMenuType.Page,
@@ -396,12 +403,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,19 +420,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])?.buttons ?? [];
+      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) {}
@@ -441,17 +460,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[]) {
@@ -460,13 +479,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(),
@@ -477,37 +496,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);
@@ -518,28 +529,24 @@
 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('淇濆瓨鎴愬姛');
@@ -549,15 +556,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);

--
Gitblit v1.9.1