# Feegrid 模块重构计划 ## 1. 修改内容 ### 1.1 JS 文件修改 | 修改项 | 原内容 | 新内容 | 说明 | |--------|--------|--------|------| | 函数名 | `createFeegridManager` | `createDataGridManager` | 更通用 | | callbacks 配置 | `callbacks: { onLoadSuccess, onAfterEdit, onSelectionChange }` | 直接展开 `onLoadSuccess, onAfterEdit, onSelectionChange` | 简化配置 | | pagerId 配置 | `pagerId: 'subgridPager'` | 移除 | 自动创建,无需配置 | | 全部选中/反选 | JSP 中有 wrapper 函数 | JS 中自动管理按钮文字 | 进一步解耦 | ### 1.2 JSP 文件修改 | 修改项 | 说明 | |--------|------| | 删除 `subgridPager` div | 由 JS 自动创建 | | 简化 `toggleSelectAll` 函数 | 直接调用 JS 方法 | | 变量名可保持或改为更通用的名字 | 可选 | --- ## 2. 重构后的 API ```js // 之前 var feeGrid = createFeegridManager({ gridId: 'feegrid', pagerId: 'subgridPager', keyField: 'subid', pageSize: 50, viewName: subviewtable, callbacks: { onLoadSuccess: function(rows) { calcw_selfee(); }, onAfterEdit: function(rowIndex, row, changes) { calcw_fee(); }, onSelectionChange: function() { calcw_selfee(); } } }); // 之后 var gridManager = createDataGridManager({ gridId: 'feegrid', keyField: 'subid', pageSize: 50, viewName: subviewtable, searchUrl: 'jsp/searchdatapagenew.jsp', orderField: 'father ASC, mx_xh ASC, b_id ASC', onLoadSuccess: function(rows) { calcw_selfee(); }, onAfterEdit: function(rowIndex, row, changes) { calcw_fee(); }, onSelectionChange: function() { calcw_selfee(); } }); ``` --- ## 3. JSP 中需要修改的部分 ### 3.1 删除的分页器 HTML(自动创建) ```html
``` ### 3.2 简化的 `toggleSelectAll` 函数 ```js // 之前:复杂的判断逻辑 function toggleSelectAll() { if (feeGridManager.getDraftManager().isAllChecked()) { feeGridManager.toggleSelectAll(); $('#btn_select_all').val('全部选中'); } else { feeGridManager.toggleSelectAll(); $('#btn_select_all').val('全部反选'); } } // 之后:直接调用 function toggleSelectAll() { gridManager.toggleSelectAll(); } ``` ### 3.3 更新的初始化代码 ```js // 之前 feeGridManager = createFeegridManager({ gridId: 'feegrid', pagerId: 'subgridPager', keyField: 'subid', pageSize: 50, viewName: subviewtable, callbacks: { onLoadSuccess: function(rows) { calcw_selfee(); }, onAfterEdit: function(rowIndex, row, changes) { calcw_fee(); }, onSelectionChange: function() { calcw_selfee(); } } }); // 之后 gridManager = createDataGridManager({ gridId: 'feegrid', keyField: 'subid', pageSize: 50, viewName: subviewtable, orderField: 'father ASC, mx_xh ASC, b_id ASC', onLoadSuccess: function(rows) { calcw_selfee(); }, onAfterEdit: function(rowIndex, row, changes) { calcw_fee(); }, onSelectionChange: function() { calcw_selfee(); } }); ``` --- ## 4. 检查 JSP 中未使用的代码 | 函数/变量 | 状态 | 说明 | |-----------|------|------| | `subdata_zdfees` | 未使用 | 可以删除 | | `feegridjson` | 未使用 | 可以删除 | | `loaddata_subdata_zdfees` | 未使用 | 可以删除 | | `loaddata_detail` | 部分使用 | 在 `newSKData`/`newIVData` 的 onClose 中调用 | | `removeit_all` | 注释掉 | 已废弃 | | `getSelections` | 未使用 | 可以删除 | --- ## 5. searchCondition 功能 代码中已有 `searchCondition` 配置项和 `setSearchCondition` 方法,JSP 中通过 `setMasterId` 设置主表ID后,会自动生成 `mx_zdorderid='xxx'` 的查询条件。 如需自定义查询条件,可使用: ```js gridManager.setSearchCondition("mx_dw_id='xxx'"); ``` --- ## 6. 实施步骤 1. 修改 `feegrid-manager.js`: - 重命名函数为 `createDataGridManager` - 移除 `callbacks` 包装,直接展开回调配置 - 移除 `pagerId` 配置 - 完善 `toggleSelectAll` 自动管理按钮文字 - 更新默认值配置 2. 修改 `editorder_s_cw.jsp`: - 删除 `subgridPager` div - 简化 `toggleSelectAll` 函数 - 更新初始化代码 - 删除未使用的变量和函数 - 变量名改为更通用的 `gridManager` --- ## 7. 预期结果 - **API 简化**:从 `createFeegridManager({ callbacks: {...} })` 变为 `createDataGridManager({ onLoadSuccess, onAfterEdit, onSelectionChange })` - **配置减少**:移除 `pagerId`,无需在 HTML 中定义分页器 - **代码清理**:删除未使用的函数和变量 - **更好的复用性**:通用名称可在其他页面直接使用