外观
框架本地改动(非生成物,官方升级会覆盖)
Why: 这些改动直接修改框架源码文件(非 Partial/extension 安全区),升级框架版本时会丢失;重新套用需知道改了什么、为什么。
How to apply: 升级前端依赖或替换 web.vite 框架文件后,按下面清单逐项重做并用采购入库页验证。
2026-10-31 VolTable.vue 表头筛选增强(可搜索多选面板)
- 需求:element-plus 原生 filters 面板无搜索框,供应商多时没法用
- 改动点(3 处模板 + 5 个方法,均在
web.vite/src/components/basic/VolTable.vue):- el-table-column:
:filtered-value受控绑定 +#filter-icon空插槽(藏原生图标) #header插槽末尾:el-popover(trigger="manual" + v-model:visible + :teleported="false",含 el-input 搜索 + el-checkbox-group + el-scrollbar + 确定/清空)- 方法:
toggleColFilter(打开时重置 __fkw='')/getFilteredOptions/applyColFilter/clearColFilter/commitColFilter
- el-table-column:
- 踩坑(勿重复):
- el-popover 在 el-table header 插槽里 trigger="click" 不生效(OnlyChild 事件注入链失效)→ 必须 manual 受控
- element-plus 的
:filtered-value只同步列状态不触发过滤,真正过滤要table.value.store.commit('filterChange', {column, values})(store/watcher.mjs 的 execFilter 只认 store.filters) - script setup 组件里取 el-table 实例用内部
const table = ref(proxy.$refs是空的)
- 状态约定:column 上挂
__fshow/__fkw/__ftmp/__fv - 验证脚本:
d:\VOL源码\.playwright-cli\test-filter.js、test-multi2.js、test-clear.js(playwright-cli run-code --filename)
2026-11-02 VolTable.vue Excel 式录入三件套(粘贴/复制行/批量填充)
- 需求:明细录入 Excel 化——从 Excel 粘贴多行多列、复制行(多行)、列批量填充(替代下拉填充)
- 改动点(
VolTable.vue):- 模板根 div 加
@paste="onTablePaste" - delRow 后新增方法块:
onTablePaste/translatePasteCell/copyRows/fillColumn/refreshSummaryCols - defineExpose 暴露
copyRows、fillColumn
- 模板根 div 加
- 行为约定:
- 粘贴守卫 = 存在编辑列(
column.edit),不能用!props.url判断——ViewGrid 明细表也传 :url(ViewGrid.vue:374,明细数据从后端 load),用 url 判断会拦死 - 粘贴 TSV 按"可见数据列"从第一列对齐;readonly 列占位不赋值;首格匹配列 title 视为表头丢弃;字典列(bind.data)按显示文本反查 key;数字列千分位剥离转 float;日期 / 转 -
- copyRows(rows, fields):fields 默认 ['id','Id'] 清主键按新增提交;新行的 elementIndex 由 row-class-name 的 initIndex 渲染时自动补(delRow 安全)
- fillColumn(field, {mode:'fixed'|'inc', value, step}):rows 默认选中行,未勾选=全部行
- 粘贴守卫 = 存在编辑列(
- 演示页
ERP_PurchaseIn.vue:detailOptions.buttons 加"复制行"(清 Id/PurchaseOrderDetailId/PurchaseOrderNo)+"批量填充"(el-dialog 对话框,字典列下拉/数字递增) - 踩坑(勿重复):本地后端 localhost:9100 自签 token 时 aud 必须=配置的
vol.core(appsettings.json Audience),抄 DB 旧 token 的vol.com会 401;生成脚本.playwright-cli/make-token.js - 验证脚本:
paste-step2.js(粘贴2行+表头丢弃)、paste-step3.js(三件套)、paste-step4.js(全选递增 100/110/120)