SmartCRUD 使用说明 #
基于 SmartChart 平台的低代码 CRUD 框架,通过可视化配置面板快速构建数据管理界面。
目录 #
1. 快速开始 #
1.1 打开配置面板 #
页面右下角点击 「CRUD配置」 按钮,弹出底部配置抽屉,共有 5 个 Tab:
| Tab | 功能 |
|---|---|
| 📋 表格显示 | 表格外观、列设置、分页 |
| 🔍 筛选过滤 | 查询区、过滤条件、选项 |
| ✏️ 新增修改 | 表单字段、权限按钮 |
| ⚙️ 数据管理 | 绑定各功能的数据集 ID |
| 🔧 模型管理 | 数据库表结构管理 |
1.2 基本配置流程 #
① ⚙️ 数据管理 → 填写 table_id(查询数据集)
② ⚙️ 数据管理 → 填写 add_id / update_id / delete_id
③ 📋 表格显示 → 设置 tableFields(表格显示字段)和 nameDict(字段中文名)
④ ✏️ 新增修改 → 设置 aform(新增字段)和 constFields(只读/主键字段)
⑤ 点击「预览」查看效果 → 确认后点击「发布」
1.3 三个操作按钮 #
每个 Tab 底部均有三个按钮:
| 按钮 | 行为 |
|---|---|
| 预览 | 将当前配置应用到页面(不保存) |
| 保存 | 应用并写入服务器(开发环境) |
| 发布 | 二次确认后覆盖线上配置 |
2. 配置值格式说明 #
在配置面板中填写配置时,支持以下输入格式:
| 格式类型 | 输入示例 | 实际含义 |
|---|---|---|
逗号分隔列表 |
code,name,status |
字段列表 |
键值对字典 |
code:编码,name:名称 |
键值对 |
JSON字典 |
{"status":1} |
JSON 对象 |
数字 |
5 |
数据集 ID |
3. 数据集绑定 #
⚙️ 数据管理 Tab
3.1 核心数据集 #
| 配置项 | 说明 | 必填 |
|---|---|---|
table_id |
主表查询数据集,返回二维数组 | ✅ |
add_id |
新增数据集,接收表单参数,返回 {status:200, msg:'...'} |
✅ |
update_id |
修改数据集,同上 | ✅ |
delete_id |
删除数据集,接收主键值;为空则不显示删除按钮 | — |
3.2 扩展数据集 #
| 配置项 | 说明 |
|---|---|
ztable_id |
子表(明细)查询数据集,传参 fid=主表主键值 |
statistic_id |
顶部统计数据集,返回的键值对显示为统计卡片 |
detail_id |
点击「查看」时调用的数据集,返回的数据在弹窗展示 |
option_id |
下拉选项数据集(支持多个字段的选项) |
addb_id |
提交前校验数据集 |
adda_id |
提交成功后触发的数据集 |
uploadds |
导入 Excel/CSV 的数据集(设置后显示上传按钮) |
daochu_id |
自定义导出数据集(不设则导出当前表格数据) |
daochut_id |
导入模板下载数据集 |
tree_ds |
左侧树形菜单数据集 |
tree_id |
树形表格懒加载子级数据集 |
audit_id |
审批/变更申请提交数据集(默认为 1) |
action_id |
批量动作专用数据集(不设则用 add_id) |
3.3 联动数据集 #
| 配置项 | 格式 | 说明 |
|---|---|---|
selectDsDict |
字段名:数据集ID |
选择框变化时带出其他字段值(支持字典返回同时带出子表) |
remoteDsDict |
字段名:数据集ID |
字段支持远程搜索(模糊输入) |
selectParamDict |
JSON | 联动/远程搜索时额外传参的字段,如 {"供应商":["物料","地区"]} |
optionParam |
field1,field2 |
表单中这些字段值变更时,自动刷新固定选项(option_id)并传参 |
funDsDict |
图标:数据集ID |
工具栏功能按钮,末尾加 ! 弹出窗口 |
viewDsDict |
图标:数据集ID |
操作列自定义按钮,末尾加 ! 弹窗,!! 静默刷新 |
iframeFormDict |
JSON | 操作列按钮弹出 iframe 表单页(见 9.4) |
editDict |
JSON | 多编辑按钮:每个按钮可指定独立数据集和字段(见 9.5) |
chartids |
3,4,5 |
点击「查询」时联动刷新的图形 ID |
chartids_t |
3,4 |
点击表格行时联动刷新的图形 ID |
3.4 后端分页 #
开启 isBackPage = true 后,每次翻页都请求后端。数据集需返回两个数据帧:
df0: [['total'], [总条数]] // 表头行 + 总条数行
df1: [[字段名列表], [数据行1], [数据行2], ...]
框架自动传递参数:limit(每页条数)和 offset(偏移量 = 每页条数 ×(当前页-1))。
4. 表格显示配置 #
📋 表格显示 Tab
4.1 字段显示 #
| 配置项 | 格式 | 说明 |
|---|---|---|
nameDict |
code:编码,name:名称 |
字段英文名 → 中文名映射,作为列标题 |
tableFields |
code,name,status |
表格显示的字段(为空则显示全部) |
shortTableFields |
code,name |
设置后启用折叠展开行,短列用于主表格,tableFields 用于展开内容 |
fixedFields |
code,name |
固定在左侧不随滚动消失的字段 |
widthDict |
code:100px,name:200px |
各字段列宽 |
alignDict |
amount:right |
各字段对齐方式(left/center/right) |
columnAlign |
center |
全局默认对齐方式 |
sortableFields |
code,amount |
允许排序的字段(为空则全部允许排序;mergeFields 启用时排序禁用) |
exSumFields |
id,phone |
不参与底部合计的字段 |
4.2 外观配置 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
title |
数据清单 |
表格标题(也用作导出文件名) |
tableHeaderColor |
#475254 |
表头背景色 |
hColor |
#fff |
表头字体颜色 |
hBorder |
false |
显示表头边框 |
stripe |
false |
斑马纹 |
showIndex |
false |
序号列 |
showSummary |
false |
底部合计行 |
maxheight |
600 |
表格最大高度(px) |
minheight |
— | 表格最小高度,如 300px |
tableAutoHeight |
true |
表格高度自动适应可视区域(开启时忽略 maxheight) |
actionFixed |
true |
操作列固定在右侧 |
toolbar |
true |
显示右侧工具栏(刷新、导出、列配置等) |
print |
false |
显示打印按钮(printOpt 可自定义打印参数,如最大宽度) |
showTable |
true |
是否显示表格(关闭后可只显示统计卡片/图形) |
isChart |
false |
加载图形区域(配合看板图形联动) |
smtdrag |
false |
开启拖拽 |
isMobileCard |
false |
移动端切换为卡片列表模式 |
shortCol |
2 |
展开详情卡片/移动卡片的列数 |
shortBord |
false |
详情卡片显示边框 |
shortDire |
false |
详情卡片竖向排列 |
4.3 特殊列展示 #
Tag 标签:
tagFields = status,category
statusColor = 启用:green,禁用:red,待审:#ff9900
字段值会渲染为彩色 Tag,多个值(逗号分隔)会展示多个 Tag。
表头高亮(spotFields):
spotFields = status:red,amount:green
表头说明(tooltipDict):
tooltipDict = code:这是物料的唯一编码,amount:金额单位为元
行合并(mergeFields):
mergeFields = department,category
相邻行中该字段值相同时自动合并单元格。启用后该字段排序禁用。
4.4 分页配置 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
pageSize |
30 |
每页条数 |
pageSizes |
30,50,100,500,1000 |
可选分页条数 |
isBackPage |
false |
是否启用后端分页 |
提示: 设置
pageSize=9999可隐藏分页控件(适合数据量少的场景)。
4.5 列配置(隐藏列) #
工具栏(toolbar = true)中的「列配置」按钮可弹窗勾选各列的显示/隐藏(对应 hiddenColumns),用户可按需临时隐藏不关心的列,切换 Tab 或刷新页面后恢复。
5. 查询与过滤 #
🔍 筛选过滤 Tab
5.1 后端查询(searchDict) #
点击「查询」按钮后,将字段值提交给后端数据集作为查询参数。
searchDict = status,department,order_date
typeDict = order_date:date,status:select
特殊处理:
date/month类型 → 区间选择,自动拆分为字段名_s(开始)和字段名_e(结束)date1/month1类型 → 单个日期/月份,直接以字段名传参(不拆分)- 多选(
selects)→ 自动转为'val1','val2'的 SQL IN 格式 - 设置
defaultDict = {"status":1}可配置查询初始默认值 - 日期/月份控件内置快捷选项(今天、昨天、本周、本月、近7/30/90天;月份:本月、近3/6月、今年)
5.2 前端实时过滤(filterDict) #
在已加载的数据中实时过滤,不请求后端,适合快速筛选。
filterDict = status,amount,name
支持运算符:
| 输入 | 含义 |
|---|---|
abc |
正则模糊匹配(含 abc) |
=100 |
精确等于 100 |
>100 |
大于 100 |
<100 |
小于 100 |
>=100 |
大于等于 100 |
<=100 |
小于等于 100 |
过滤模式(filterMode): 多个过滤条件默认为 AND(同时满足),开启
filterMode = true切换为 OR(任一满足),工具栏中也可点击切换。
5.3 全局关键词搜索(isfilter) #
开启 isfilter = true 后显示全局搜索框,对所有字段进行模糊匹配:
- 空格分隔多个关键词(AND 逻辑)
- 匹配内容黄色高亮显示
- 200ms 防抖优化
searchHint可设置搜索框的提示文字
5.4 表头筛选(headerFilter) #
headerFilter = status,type
配置后对应列的表头出现筛选图标,选项自动从全量数据去重生成,支持多选,属于前端过滤(不请求后端)。
5.5 查询区其他配置 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
searchHead |
true |
显示查询区 |
btnSearch |
true |
显示查询按钮(关闭后输入即实时查询) |
showLabel |
false |
查询框显示字段中文标签 |
inputWidth |
100px |
查询输入框宽度 |
swidthDict |
— | 逐字段查询框宽度,如 name:200px |
placeholderDict |
— | 字段占位提示,如 code:请输入编码(查询区与表单通用) |
line_input |
false |
查询输入框使用线性(下划线)风格 |
dmFields |
— | 维度切换字段(显示为 CheckboxButton) |
treeWidth |
150px |
左侧树区域宽度 |
6. 新增与修改 #
✏️ 新增修改 Tab
6.1 表单字段配置 #
| 配置项 | 说明 |
|---|---|
aform |
新增表单字段列表,如 code,name,status |
mform |
修改表单字段列表(不设则复用 aform) |
constFields |
只读字段列表,第一位必须是主键字段名,默认 id |
requiredFields |
必填字段,会自动生成校验规则 |
cform |
折叠到「其它」分组的字段 |
⚠️ 重要:
constFields的第一位必须是主键字段名,框架依赖它来区分新增和修改。
6.2 按钮权限控制 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
btnAdd |
true |
新增按钮 |
btnEdit |
false |
编辑按钮(操作列) |
btnView |
false |
查看按钮(操作列) |
btnDownload |
true |
导出按钮 |
delete_id |
— | 不为空则显示删除按钮 |
行级权限(数据驱动): 数据集返回的数据中若包含 操作 字段,可控制单行按钮显示:
- 包含
E→ 显示编辑按钮 - 包含
D→ 显示删除按钮 - 包含自定义图标名 → 显示对应的
viewDsDict按钮
6.3 表单外观配置 #
| 配置项 | 说明 |
|---|---|
dialogWidth |
弹窗宽度,如 60%、800px |
dialogFull |
true 则全屏弹窗 |
formLabelWidth |
表单标签宽度,如 80px、auto |
labelPosition |
标签位置:top/left/right |
formSize |
表单字段尺寸:medium/small/mini(非空时切换为 inline 模式) |
ainfo |
新增弹窗顶部提示文字 |
minfo |
修改弹窗顶部提示文字 |
formRows |
表单行布局(见 6.5) |
6.4 高级表单行为 #
| 配置项 | 说明 |
|---|---|
adefaultDict |
新增时字段默认值,如 {"status":1} |
remainFields |
新增提交后不清空的字段(适合连续录入) |
iseditadd |
编辑即新增:点编辑按钮时以新增模式打开 |
isEditRequest |
编辑走审批流,需填写变更原因 |
addHead |
新增表单显示在页面顶部而非弹窗 |
cellEditable |
允许双击单元格直接编辑(字段需在 mform 中且非只读),保存时调用 update_id 提交 {主键, 字段} |
scanSubmit |
扫码后自动提交表单 |
ossUpload |
文件/图片直传云存储(OSS/COS),填写 apiconfig 中 smtoss 的配置名,如 ali1 |
6.5 表单行布局(formRows) #
默认表单字段逐个排列,通过 formRows 可自定义分组标题与多列布局:
[{"label":"基本信息"}, "name,code:16,8", "remark"]
| 元素 | 含义 |
|---|---|
{"label":"基本信息"} |
渲染一个分组分隔标题 |
"name,code:16,8" |
name 与 code 同一行,冒号后为各字段栅格宽度(总计 24) |
"remark" |
单独占一行(不写宽度时按字段数均分 24 栅格) |
6.6 子表(明细录入) #
在新增/修改弹窗中内嵌明细数据录入,适用于主从表场景:
ztable_id = 8 // 查询子表数据,传参 fid=主键值
aform1 = product_code,qty,unit_price // 子表新增字段
mform1 = product_code,qty,unit_price // 子表修改字段
提交数据格式:
{
"main_field": "xxx",
"_child": {
"fid": "主键值",
"add": [{"product_code":"A001","qty":10}],
"mod": [{"id":5,"qty":20}],
"del": [3, 7]
}
}
7. 字段类型参考 #
通过 typeDict 配置字段类型,格式:字段名:类型。
typeDict = status:select,birthday:date,amount:number,remark:text
| 类型值 | 查询区控件 | 表单控件 | 表格展示 |
|---|---|---|---|
text |
普通输入框 | 多行文本域 | 普通文本 |
date |
日期范围选择器 | 日期选择器 | 普通文本 |
date1 |
日期单选(单值传参) | 日期选择器 | 普通文本 |
month |
月份范围选择器 | 月份选择器 | 普通文本 |
month1 |
月份单选(单值传参) | 月份选择器 | 普通文本 |
datetime |
日期范围选择器 | 日期时间选择器 | 普通文本 |
select |
下拉单选 | 下拉单选 | 普通文本 |
selects |
下拉多选 | 下拉多选 | 普通文本 |
radio |
下拉单选 | 单选按钮组 | 普通文本 |
selec |
级联选择器 | 级联选择器 | 普通文本 |
number |
普通输入框 | 数字输入框 | 普通文本 |
switch |
开关 | 开关 | 只读开关 |
progress |
普通输入框 | 数字输入框 | 进度条 |
rate |
— | 星级评分 | 只读评分 |
color |
— | 颜色选择器 | 颜色图标 |
file |
普通输入框 | 文件上传 | 下载链接 |
img |
普通输入框 | 图片上传 | 图片预览 |
qr |
输入+扫码按钮 | 输入+扫码按钮 | 普通文本 |
remark |
— | 只读文本 | 普通文本 |
action |
— | 魔法棒按钮 | — |
选项数据配置(optionDict):
{
"status": [[1, "启用"], [0, "禁用"]],
"category": [["A", "类别A"], ["B", "类别B"]]
}
格式:二维数组,每项
[值, 显示文本]。也可通过option_id从数据集动态加载。
8. 模型管理 #
🔧 模型管理 Tab(仅 Dev 模式可见)
提供可视化的数据库表结构管理,支持建表和字段变更(兼容 MySQL / PostgreSQL / SQLite,连接类型为 gp/gppool/vectorPostgres 时按 PostgreSQL 处理,字段类型下拉会按数据库类型自动切换候选)。
8.1 操作流程 #
① 输入表名(可选)→ 点「查询」
├─ 有表名:从数据库读取真实表结构
└─ 无表名:从当前 CRUD 配置中收集字段
(也可点「Excel导入」从 Excel 文件生成字段清单,见 8.5)
② 在列表中修改字段属性
③ 点「预览」→ 将字段配置应用到 CRUD 设置面板
④ 点「保存」→ 保存 CRUD 配置
⑤ 点「执行」→ 生成并执行 SQL(⚠️ 不可恢复)
8.2 字段属性说明 #
| 列名 | 说明 |
|---|---|
| 字段名 | 数据库列名 |
| 备注 | 字段中文说明(对应 nameDict) |
| 实际类型 | 数据库类型,如 varchar(50)、int、decimal(10,2) |
| 默认 | 字段默认值 |
| 空 | 是否允许 NULL |
| 类型 | 前端表单类型(见第 7 节) |
| 对齐 | 列对齐方式 |
| 宽度 | 列宽度 |
| 只读 | 加入 constFields |
| 新增 | 加入 aform |
| 修改 | 加入 mform |
| 必填 | 加入 requiredFields |
| 查询 | 加入 searchDict |
| 过滤 | 加入 filterDict |
| 长显 | 加入 tableFields |
| 短显 | 加入 shortTableFields |
| 子增 | 加入 aform1 |
| 子修 | 加入 mform1 |
| 其它 | 加入 cform |
| ▲▼ | 调整字段顺序 |
| 🗑 | 标记删除(执行后从数据库删除列) |
8.3 特殊字段自动处理 #
| 字段名 | 自动处理 |
|---|---|
id |
自动设置为自增主键(MySQL: PRIMARY KEY AUTO_INCREMENT;PostgreSQL: serial;SQLite: PRIMARY KEY AUTOINCREMENT) |
create_time |
自动设置为 DEFAULT CURRENT_TIMESTAMP |
update_time |
自动设置为 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
字段重命名: 在字段列表中修改已有字段的名称,执行时会生成
RENAME COLUMN语句(SQLite 不支持)。
8.4 数据库兼容说明 #
| 操作 | MySQL | PostgreSQL | SQLite |
|---|---|---|---|
| 建表 | ✅ 支持 COMMENT | ✅ COMMENT ON 语句 | ✅(无 COMMENT) |
| 新增字段 | ✅ | ✅ | ✅ |
| 修改字段 | ✅ CHANGE COLUMN | ✅ ALTER COLUMN(类型/空值/默认值/备注分条语句) | ❌ 不支持 |
| 重命名字段 | ✅ RENAME COLUMN | ✅ RENAME COLUMN | ❌ 不支持 |
| 删除字段 | ✅ | ✅ | ❌ 不支持 |
| 自增主键 | AUTO_INCREMENT | serial / bigserial | AUTOINCREMENT |
8.5 Excel 导入建表 #
点「Excel导入」上传 .xlsx 文件,可自动生成字段清单:
- 第一行 = 字段名(自动转小写、空格转下划线)
- 第二行 = 字段备注(可选,为空时用字段名)
- 后续行 = 数据样本,用于自动推断字段类型(整数/数值/日期/文本,按数据库类型映射)
- 文件名(去扩展名)自动作为表备注
预览确认后字段填入列表并切换到「新建表」模式,输入表名后点「执行」建表。
9. 高级功能 #
9.1 选择联动(selectDsDict) #
当某字段值变化时,调用数据集自动带出其他字段:
selectDsDict = supplier_code:5
字段 supplier_code 变化时,调用数据集 5(传参 {supplier_code: 值}),返回数据自动填充到表单同名字段。
如需额外传参:
selectParamDict = {"supplier_code": ["warehouse", "category"]}
9.2 远程搜索(remoteDsDict) #
让下拉框支持输入搜索:
remoteDsDict = product_code:8
typeDict = product_code:select
输入时实时调用数据集 8(传参 {product_code: 输入值}),返回结果作为选项列表。
9.3 自定义操作按钮(viewDsDict) #
在操作列添加自定义按钮:
viewDsDict = el-icon-printer:9,详情:10!,el-icon-goods:11!!
| 后缀 | 行为 |
|---|---|
| 无 | 调用数据集,打开查看弹窗 |
! |
调用数据集,弹出图形窗口 |
!! |
调用数据集,静默刷新(无弹窗) |
按钮名用 Element Icon 类名(如
el-icon-printer)显示为图标,中文则显示为文字按钮。
9.4 弹窗表单(iframeFormDict) #
在操作列添加按钮,点击后以 iframe 弹窗打开另一个页面(如独立的 Form 表单页):
iframeFormDict = {"审批":{"url":"/echart/?type=form","params":["order_id"],"width":"80%","height":"80vh"}}
| 属性 | 说明 |
|---|---|
url |
弹窗页面地址;若只填类型名(不含 /),自动拼为 /echart/?type=xx |
params |
从当前行取值传递的字段列表,统一以 param={"xx":"xx"} 形式拼到 URL |
width / height |
弹窗尺寸,默认 80% / 80vh |
弹窗关闭后自动刷新表格。按钮名同样支持行级权限(操作 字段包含按钮名才显示)。
9.5 多编辑按钮(editDict) #
在操作列配置多个编辑按钮,每个按钮可指定独立的数据集和字段子集:
editDict = {"编辑库存":{"ds":5,"fields":"qty,warehouse","icon":"el-icon-s-goods"}}
| 属性 | 说明 |
|---|---|
ds |
提交时调用的数据集 ID(代替 update_id) |
fields |
弹窗表单中显示的字段(代替 mform) |
icon |
按钮图标 |
add |
true 则以新增模式提交(如「复制新增」场景),如 {"复制新增":{"ds":5,"fields":"name,qty","add":true}} |
9.6 工具栏功能按钮(funDsDict) #
在工具栏添加批量操作按钮:
funDsDict = el-icon-check:12!,批量审批:13
传参:action(按钮 key)、updatelist(选中行主键列表,逗号分隔)。
9.7 批量动作(actionDict) #
开启多选后,针对选中行执行批量状态变更(需要表中有 status 字段),key 为要变更的状态值:
actionDict = {"已审批": ["批量审批", "green"], "已驳回": ["批量驳回", "red"]}
显示为按钮,点击后带二次确认,执行时传参 action(状态值)和 updatelist(选中行主键列表)。默认调用 add_id,可通过 action_id 指定专用数据集。
9.8 左侧树形菜单(tree_ds) #
tree_ds = 15 // 树形菜单数据集 ID
treeWidth = 180px // 树宽度
数据集返回树形结构数据,点击叶子节点自动向后端传 _label 参数并刷新表格。
9.9 提交前后处理(addb_id / adda_id) #
提交前校验(addb_id):
在数据提交到数据库前进行校验。校验通过返回 status:200,校验不通过返回 status:400 并给出提示信息 msg。可用于检查数据完整性、重复性等。若返回中带 data,将替换实际提交的参数(可在校验时补充/加工字段)。
提交后触发(adda_id): 数据提交成功后自动执行的操作,可用于发送通知、触发工作流、更新关联数据等。
9.10 扫码输入 #
typeDict = barcode:qr
qrFormats = code_128,qr_code // 支持的码格式(空则全支持)
qrCheckStr = SC // 扫码内容必须以 SC 开头
scanSubmit = true // 扫码后自动提交表单
9.11 文件/图片上传 #
typeDict = avatar:img,attachment:file
uploadpath = my_files // 文件存储路径
上传地址:/echart/upload_file/,存储路径:/static/custom/{uploadpath}/{filename}。表格中展示时,若字段值以 http 开头则直接使用原地址。
设置 ossUpload = 配置名(apiconfig 中 smtoss 的配置名,如 ali1)可将文件直传阿里云 OSS / 腾讯云 COS 等云存储。
9.12 多表 Tab(tabs) #
一个 CRUD 页面可配置多个 Tab,每个 Tab 拥有独立的数据集和显示配置(类似多张表切换):
| 配置项 | 说明 |
|---|---|
tabs |
Tab 列表(在配置面板中新增/删除 Tab 时自动维护) |
tabLabel |
当前 Tab 的显示名称 |
tabIcon |
当前 Tab 的图标,如 el-icon-goods |
tabColor |
当前 Tab 的颜色 |
tabRefreshMode |
切换 Tab 时的刷新策略:always 始终刷新(默认)/ ifempty 有数据不刷新 / never 不刷新 |
工作机制:
- 第一个 Tab 保存页面完整配置,其余 Tab 仅保存与默认配置的差异项,切换时自动应用
- 切换 Tab 时数据自动缓存(
ifempty/never模式下回切不重新请求) - 配置方法:在配置面板切换到目标 Tab 后修改配置并保存,各 Tab 配置互不影响
9.13 自定义计算(calcChange) #
在看板 JS 中重写 calcChange 方法实现联动计算:
vapp.calcChange = function(key) {
if (key === 'qty') {
vapp.form.amount = vapp.form.qty * vapp.form.price;
}
}
10. 常见问题 #
Q: 配置保存后没有生效?
「保存」写入测试配置,「发布」才会覆盖线上。确认点击的是正确按钮。
Q: 新增提交提示「没有任何修改项」?
所有字段值为
null时会触发此提示。检查aform配置是否正确,字段名是否与数据一致。
Q: 修改时找不到主键?
constFields第一位必须是主键字段名,且该字段必须存在于表格数据中(加入tableFields或不设置tableFields)。
Q: 下拉框没有选项?
设置
optionDict配置固定选项,或设置option_id从数据集动态加载,数据集第一行第一列为字段名。
Q: 子表数据没有加载?
确认设置了
ztable_id,且该数据集支持接收fid参数(主键值)。子表必须包含id字段作为主键。
Q: 表格列太多横向滚动?
设置
shortTableFields显示少量关键列,其余字段在展开行中显示。或使用widthDict控制列宽。
Q: 导出按钮导出的是什么?
默认导出
shortTableFields或tableFields中的字段,使用fullData(全量数据,非当前页)。导出对话框可自定义文件名并选择 CSV 或 Excel 格式。设置daochu_id可自定义导出数据集。
Q: 如何只导出选中的行?
导出下拉菜单选「选择行导出」,表格会出现勾选列,勾选后再导出即可(文件名自动带
_选中行后缀)。
Q: 双击单元格编辑不生效?
需开启
cellEditable = true,且该字段必须在mform中并且不在constFields里。保存时调用update_id。
Q: 移动端显示效果不好?
开启
isMobileCard = true在移动端切换为卡片列表模式,通过tableFields控制显示字段,shortCol控制列数。移动端点击行第一列可弹出操作菜单,底部固定「搜索/新增」工具栏,过滤与搜索收纳在底部面板中。
版权说明: SmartChart / SmartCRUD 由 JohnYan 设计