diff --git a/doc.txt b/doc.txt new file mode 100644 index 000000000..3db58e78c --- /dev/null +++ b/doc.txt @@ -0,0 +1,126 @@ +明白你的实际需求是这样的: + +✅ 你有多个类似的表单表格页面 +结构类似,都是用 + 组成。 + +不想复制粘贴逻辑去控制字段显示与否。 + +✅ 每个账号登录后,后端会返回字段权限控制数组 +例如: + +json +复制 +编辑 +["customerName", "companyAccount", "companyAddress"] +你希望根据这个字段列表来自动控制每一列是否显示,不再手动加 v-if="showField('xxx')"。 + +✅ 目标:让字段显示/隐藏逻辑封装好,不影响页面使用结构 +你想要的最终效果是: + +vue +复制 +编辑 + + + + + + + + + + + + +✅ 解决方案:封装 FormTable,自动隐藏字段(通过 prop 字段) +我们只需要在封装组件中 拦截 slot 中的 el-table-column,判断其 prop 是否在权限字段中,不在就不渲染。 + +✅ 封装组件 FormTable.vue +vue +复制 +编辑 + + + +✅ 父组件使用方式(完全一样,只加一个 visibleFields) +vue +复制 +编辑 + + + + + + + + + + + + + + + + +✅ 后端返回字段控制 +你只需要从后端返回一个字段列表,比如: + +ts +复制 +编辑 +const visibleFields = ['customerName', 'companyAccount'] +然后传给 FormTable 即可: + +vue +复制 +编辑 +... +✅ 总结优点 +✅ 只改 ,其他逻辑不动。 + +✅ 无需手动每列写 v-if。 + +✅ 可根据后端返回字段权限自动显示/隐藏。 + +✅ 支持任意结构(form-item、插槽等)。 + +需要我帮你做完整的 .vue 文件模板或添加分页/loading 也可以继续说。 \ No newline at end of file