Files
workspace/code/jsp/.trae/documents/js_refactor_plan.md
T
2026-05-11 21:45:04 +08:00

4.7 KiB
Raw Blame History

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

// 之前
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(自动创建)

<!-- 删除这行 -->
<div id="subgridPager" class="easyui-pagination" style="margin: 6px 0px;background:#efefef;border:1px solid #ccc;"></div>

3.2 简化的 toggleSelectAll 函数

// 之前:复杂的判断逻辑
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 更新的初始化代码

// 之前
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' 的查询条件。

如需自定义查询条件,可使用:

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 中定义分页器
  • 代码清理:删除未使用的函数和变量
  • 更好的复用性:通用名称可在其他页面直接使用