模块关联
把两张台账用一个共同字段拴在一起,打开一条记录就能看到另一张表里相关的所有行,不用来回切换。
什么是模块关联
模块关联,说白了就是两张表之间的"指向"关系。比如你有一张"村民花名册",还有一张"低保户"台账,这两张表里都有"户号"这个字段。把"低保户.户号"指向"村民.户号"以后,打开一户低保户的详情页,就能直接看到这个户号下所有村民的名字、年龄、身份证号,不用再去花名册里搜一遍。
关联不是把两张表合并,也不是把数据复制过去。它只是一个"指针",原数据还在原模块里,删一边不影响另一边。
业务例子
下面这几种场景在村里最常用,看完就明白关联是干嘛的:
| 场景 | 源模块 | 关联字段 | 目标模块 |
|---|---|---|---|
| 一户多人 | 村民花名册 | 户号 | 户主信息表 |
| 合同找供应商 | 采购合同 | 供应商名称 | 供应商名录 |
| 工程找施工方 | 村级工程项目 | 施工单位 | 施工队伍库 |
| 党员找支部 | 党员名册 | 所属支部 | 党支部台账 |
| 低保户找村民 | 低保户 | 身份证号 | 村民花名册 |
入口在哪儿
关联配置在模块管理页顶部工具栏,只有 admin 能进。普通用户看不到这个入口,也改不了关联。
- 左侧菜单点"模块管理"进入模块列表页。
- 点顶部工具栏的"模块关联"按钮弹出模块关联管理弹窗。
- 点右上角"新建关联"按钮,弹出配置弹窗。
配置一条关联
弹窗从上往下分三块,要填的东西不多:
| 项 | 说明 | 例子 |
|---|---|---|
| 关联名称 | 必填,1-20 字,在主模块详情页里当小标题显示 | 法人代表 |
| 主模块 / 匹配字段 | 在它的详情页里展示这条关联;匹配字段是当前模块里用来去关联模块里查的那个字段 | 低保户 / 户号 |
| 关联模块 / 匹配字段 | 从这张表里往回拉记录;匹配字段是对方表里和主字段对得上的那个字段 | 村民花名册 / 户号 |
| 卡片字段(可选) | 关联卡片上要显示对方哪几列,不勾走默认(前 5 个"列表显示"字段) | 姓名、身份证号、与户主关系 |
两边的"匹配字段"下拉框里都不显示派生字段(年龄、党龄这类算出来的字段选不了)。填完点"保存",这条关联立刻生效。回到任何一条低保户记录,详情页最下面就多出一个新区块,标题是刚才填的关联名称(比如"法人代表")。
主字段和关联字段的类型不一样时(比如一边文本一边数字),下拉框旁边会出现一行黄色小字"两端字段类型不同,匹配可能不准",但依然能点"保存"。类型不一致的关联大概率查不到任何匹配记录,建议改成两边同类型。真正会被拦下来、没法保存的只有派生字段——年龄、党龄这类算出来的字段,两端都不能选它作匹配字段。
关联建立后的效果
配好之后,打开任意一条源记录的详情页,往下滚,会看到一个新区块,标题是这条关联的名称(你配置时填的名字,比如"法人代表"),下面一行小字写着对方模块名和条数,比如村民花名册 · 共 5 条。里面有:
- 一排卡片,每张卡片显示你在"卡片字段"里勾的那几列(不勾就是默认的前 5 个"列表显示"字段)
- 单条关联匹配超过 100 条时,只显示前 100 条,小字会变成
100 条(共 236 条)这种格式,提醒你还有更多没显示 - 如果配了多条关联,会有多个区块依次往下排,一条关联一个区块
- 某条关联在当前记录上一条匹配记录都没查到,这个区块直接不显示(不会出现"没有匹配记录"这种空提示)
这一块本身是只读的,不能在这里直接改数据。要改,得点进去跳到对方那条记录上改。
跳转到关联记录
点一下卡片(卡片上任意位置都能点,不用找特定按钮),直接跳到目标模块那条记录的详情页,可以在那边正常编辑。
跳过去之后, 顶部 tab 栏会同时留着源模块和目标模块两个标签, 点回源模块的 tab 会自动重开你刚才看的那条记录的详情, 不需要重新翻列表找。这套现场恢复机制对"关联卡片跳转"和"家庭成员跨模块跳转"都生效。
关联卡片显示哪些字段
1.5.4 起, 每条关联可以单独配"卡片上显示哪几列", 不再写死前 5 个。配置入口:
- 打开关联管理在左侧菜单进"模块管理"页, 顶部工具栏点"模块关联"打开管理弹窗。
- 编辑某条关联找到那一行(比如"居民关联低保"), 点右侧"编辑"。
- 勾"关联卡片显示哪些字段"编辑弹窗最下方多了一个多选区, 列出目标模块的所有非派生字段。建议勾 3-6 个最关键的, 例如低保户卡只勾"姓名 / 低保类型 / 月低保金 / 纳入时间", 既一眼能看清又不占位置。
- 保存之后, 再打开源模块的详情, 关联卡片立刻按你勾的字段渲染。
如果一个字段都没勾, 系统继续走老逻辑——取目标模块前 5 个开了"列表显示"的字段。所以历史关联升级到 1.5.4 后不需要重配, 想要更精准时再编辑一下就行。
关联与导入
从 Excel 导入数据的时候,关联会自动起作用。比如你导入一批新的低保户,表里有"户号"列,只要这个户号在村民花名册里能查到,导入完成后详情页里"关联记录"就自动出来了,你不需要手动绑。
需要注意的是,关联的匹配靠的是字段值完全相等:
- Excel 里户号写成
2024001,村民表里是2024-001,这两个对不上 - 身份证号一边有空格一边没有,也对不上
- 大小写不一致(英文/拼音字段)也对不上
导入前最好先在 Excel 里把这一列统一格式。
导入时选的"仅新增 / 跳过重复 / 增量更新 / 完全替换"是用来在当前模块内部判重的,匹配字段也是当前模块的字段。关联是导入完成之后才发生的"找对应"动作,不参与判重。
关联的性能影响
系统底层用 SQLite 存数据。一条关联本质上就是一次 WHERE 目标字段=源字段值 的查询。数据量小(几百条以内)感觉不到;数据量大的时候,只要这个字段在模块管理里勾了"唯一"或"可搜索",系统就会自动给它建索引——身份证号、户号这类字段大部分情况下本来就会勾这两项之一,所以关联查询一般已经吃到索引,不用你额外做什么。
删除关联配置
关联不要了,在顶部工具栏点"模块关联"打开弹窗,找到那一行,点右边的"删除",二次确认即可。
删关联配置只是把那根"指针"拿掉,源模块和目标模块里的原始数据一条都不会少。删完之后详情页里的"关联记录"区块就不再显示了,仅此而已。如果删错了,重新配一遍就行,效果一样。
关联配置删了就是删了,不会进全局回收站,也不能从备份里单独还原配置。配置本身很轻,记下来重建就行;真正重要的数据(记录)删除才会进回收站保留 7 天。
常见关联误区
新手最容易踩的几个坑,提前看一眼省得返工:
| 误区 | 实际情况 |
|---|---|
| "两边字段名都叫'户号',应该能自动关联吧" | 系统不看字段名,只看你在关联配置里手动指的对应关系。同名字段也得显式配置一次。 |
| "我把村民的'姓名'关联到低保户的'户主姓名'" | 能配,但是同名村民会全部被牵出来。关联应该用唯一标识(身份证号、户号),不要用姓名。 |
| "源字段是'数字',目标字段是'文本',里面都是数字应该可以吧" | 系统不拦你保存,只在旁边给一句黄色小字提醒类型不同。但 2024001(数字)和 "2024001"(文本)在数据库里是两种存法,永远不算相等,这条关联实际上一条记录都查不到。改成两边都是文本最稳。 |
| "派生字段也能拿来关联吧" | 不行。派生字段(比如"年龄")两端下拉框里都是灰的选不了,硬传也会被后端拦下来:"派生字段没有真实值,不能作为关联键"。 |
| "删了关联,详情页里的村民也跟着没了" | 不会。村民数据在村民花名册里,关联只是显示通道,删通道不删数据。 |