20260511214503

This commit is contained in:
oneao committed 2026-05-11 21:45:04 +08:00
1 parent 364d29dbaa
commit e98740192d
9 files changed
+2451 -875

No files matched your search

@@ -0,0 +1,162 @@
# 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
<!-- 删除这行 -->
<div id="subgridPager" class="easyui-pagination" style="margin: 6px 0px;background:#efefef;border:1px solid #ccc;"></div>
```
### 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 中定义分页器
- **代码清理**:删除未使用的函数和变量
- **更好的复用性**:通用名称可在其他页面直接使用