4.7 KiB
4.7 KiB
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. 实施步骤
-
修改
feegrid-manager.js:- 重命名函数为
createDataGridManager - 移除
callbacks包装,直接展开回调配置 - 移除
pagerId配置 - 完善
toggleSelectAll自动管理按钮文字 - 更新默认值配置
- 重命名函数为
-
修改
editorder_s_cw.jsp:- 删除
subgridPagerdiv - 简化
toggleSelectAll函数 - 更新初始化代码
- 删除未使用的变量和函数
- 变量名改为更通用的
gridManager
- 删除
7. 预期结果
- API 简化:从
createFeegridManager({ callbacks: {...} })变为createDataGridManager({ onLoadSuccess, onAfterEdit, onSelectionChange }) - 配置减少:移除
pagerId,无需在 HTML 中定义分页器 - 代码清理:删除未使用的函数和变量
- 更好的复用性:通用名称可在其他页面直接使用