一、文档总览

当前文档中心主要整理了四类内容:AI 生成列表提示词、AI 生成表单提示词、组件总览索引、常用组件详细配置。目标不是替代完整源码,而是把最常查、最常复制、最容易出错的配置项集中展示出来。

AI 列表提示词

面向列表页生成,重点关注 searchcolumntableButtonrowButtonexpress

查看摘要

AI 表单提示词

面向表单页生成,重点关注 cardListfieldListiframesubmitExpress

查看摘要

组件总览

快速定位当前 DSL 支持哪些组件,哪些用于表单,哪些用于列表,哪些是按钮类动作组件。

查看索引

组件细项

整理输入类、选择类、日期类、上传类、列表展示类、按钮类的常用配置片段。

查看细项
建议阅读顺序

先看组件索引了解可用能力,再看 AI 提示词组织 DSL 的结构,最后按具体组件查详细配置。这样最适合“先搭页面,再补细节”的开发方式。

二、AI 列表提示词摘要

列表 DSL 的核心是“页面骨架 + 搜索条件 + 列渲染 + 按钮动作 + 查询表达式”。给 AI 下指令时,尽量把这五部分说清楚,生成质量会明显更高。

推荐让 AI 明确输出的顶级结构

{
  "id": "saleorder",
  "name": "订单列表",
  "dataSource": "dataSource",
  "hideSearch": false,
  "body": {
    "emptyShow": "-",
    "showIndex": true,
    "selectable": true,
    "rowActionWidth": 175,
    "limit": 30,
    "skin": "grid",
    "even": true,
    "size": "sm"
  },
  "search": [{"row": []}],
  "column": [],
  "tableButton": [],
  "rowButton": [],
  "express": {
    "main": "@import(saleorder.json.express_main.ql)",
    "orderBy": "ORDER BY t.ID DESC"
  }
}

让 AI 生成列表时要讲清的 6 件事

常见搜索操作符

operator 含义 典型组件
like 模糊匹配 input
EQ 精确匹配 selectradio
BETWEEN 区间查询 dateuniondate
IN 多值匹配 select-multiplecascader

三、AI 表单提示词摘要

表单 DSL 的关键不是“字段越多越好”,而是让 AI 明确页面结构、卡片划分、字段布局和提交逻辑。复杂表单往往还会带 iframe 子区域和流程字段。

推荐让 AI 明确输出的顶级结构

{
  "id": "base-trader",
  "name": "客户表单",
  "dataSource": "dataSource",
  "successUrl": "reload",
  "cardList": [],
  "buttonList": [],
  "initExpress": "@import(base-trader_initExpress.ql)",
  "submitExpress": "@import(base-trader_submitExpress.ql)",
  "deleteExpress": "@import(base-trader_deleteExpress.ql)",
  "appendFoot": "@import(base-trader_appendFoot.html)"
}

让 AI 生成表单时要讲清的 6 件事

successUrl 常见取值

效果
reload 刷新父页面
reloadlocal 刷新当前表单页
reloadTableData 仅刷新父页面表格数据
refreshcard.{cardName} 刷新父表单中的某个 iframe card
URL 跳转到指定页面

四、组件索引

组件按使用位置可以拆成四类:表单输入组件、只读展示组件、列表列组件、动作按钮组件。理解这个分类后,配置会更清晰。

表单输入组件

component 说明 常用场景
input单行输入名称、编号、手机号
textarea多行输入备注、描述
hidden隐藏字段ID、关联键、固定参数
select下拉单选状态、类型、字典项
select-multiple多选下拉标签、角色、权限
cascader级联选择地区、分类、部门树
radio单选平铺是否启用、状态少量选项
checkbox多选平铺功能开关、小规模多选
date日期时间有效期、创建时间、范围筛选
upload / file文件上传合同、附件、图片
tinymce富文本内容编辑、图文说明

只读展示组件

component 说明 常用场景
span只读文本单号、自动生成字段
select-span只读枚举文本审核状态、流程状态
date-span只读日期文本创建时间、审核时间

列表列组件

component 说明 常用场景
tdText文本展示普通列、日期格式化、行内编辑
tdLink可点击链接订单号、主键详情入口
tdSelect值映射为标签状态、审核结果
tdSelectMultiple多值映射为标签标签集合、角色集合
tdCascader级联路径展示地区、类目树
tdPic图片缩略图头像、商品图

按钮组件

component 位置 说明
button-toolbar / button-tabletableButton表头工具栏按钮
button-normal / button-singlerowButton行操作按钮
button-dropdown下拉菜单扩展动作集合
button-bread导航/行内面包屑或轻量链接样式
button-span任意区域文本样式按钮

五、组件细项与常用片段

这一部分不是罗列所有能力,而是收录最常复制的配置片段。足够支撑大多数 DSL 页面配置。

1. input / textarea

{
  "item_name": "TRADER_NAME",
  "label": "客户名称",
  "component": "input",
  "classAppend": "layui-col-md8",
  "props": {
    "placeholder": "请输入客户名称",
    "lay-verify": "required",
    "maxlength": "100",
    "description": "字段下方说明文字"
  }
}
{
  "item_name": "COMMENT",
  "label": "备注",
  "component": "textarea",
  "classAppend": "layui-col-md12",
  "props": {
    "rows": 4,
    "maxlength": 500
  }
}

2. select / select-multiple / cascader

{
  "item_name": "STATUS",
  "label": "状态",
  "component": "select",
  "initData": {
    "dataJson": [
      {"label": "启用", "value": "1"},
      {"label": "禁用", "value": "0"}
    ]
  }
}
{
  "item_name": "ROLE_IDS",
  "label": "角色",
  "component": "select-multiple",
  "operator": "in",
  "initData": {
    "dataSource": "dataSource",
    "dataSql": "SELECT ROLE_ID value, ROLE_NAME label FROM T_SYS_ROLE WHERE DELETE_FLAG=0"
  }
}
{
  "item_name": "REGION_ID",
  "label": "地区",
  "component": "cascader",
  "initData": {
    "dataSource": "dataSource",
    "dataSql": "SELECT REGION_FULL_ID value, REGION_FULL_NAME label, PARENT_ID parent_id FROM T_BASE_REGION WHERE DELETE_FLAG=0"
  }
}

3. radio / checkbox / hidden

{
  "item_name": "STATUS",
  "label": "状态",
  "component": "radio",
  "initData": {
    "dataJson": [{"value": 1, "label": "启用"}, {"value": 0, "label": "禁用"}]
  }
}
{
  "item_name": "FEATURES",
  "label": "功能",
  "component": "checkbox",
  "initData": {
    "dataJson": [
      {"label": "邮件通知", "value": "email"},
      {"label": "短信通知", "value": "sms"}
    ]
  }
}
{
  "item_name": "TRADER_ID",
  "label": "客户ID",
  "component": "hidden"
}

4. date / date-span / uniondate

{
  "item_name": "ADD_TIME",
  "label": "添加时间",
  "component": "date",
  "operator": "BETWEEN",
  "props": {
    "range": true,
    "format": "yyyy-MM-dd HH:mm:ss"
  }
}
{
  "item_name": "CREATE_TIME",
  "label": "创建时间",
  "component": "date-span",
  "classAppend": "layui-col-md6"
}
{
  "item_name": "UNIONDATE",
  "label": "时间",
  "component": "uniondate",
  "operator": "BETWEEN",
  "props": {"range": true},
  "options": [
    {"label": "添加时间", "value": "ADD_TIME"},
    {"label": "审核时间", "value": "VALID_TIME"}
  ]
}

5. upload / file / tinymce

{
  "item_name": "CONTRACT_FILE",
  "label": "合同附件",
  "component": "upload",
  "props": {
    "accept": "file",
    "multiple": true,
    "number": 5,
    "size": 10240,
    "description": "- 支持 PDF、Word 格式"
  }
}
{
  "item_name": "CONTENT",
  "label": "内容",
  "component": "tinymce",
  "classAppend": "layui-col-md12"
}

6. td 系列与按钮

{
  "item_name": "SALEORDER_NO",
  "label": "订单号",
  "component": "tdLink",
  "props": {
    "url": "/topezadmin/form/page-saleorder/saleorder?ID={{=d.ID}}",
    "windowname": "订单详情"
  }
}
{
  "item_name": "CHECK_STATUS",
  "label": "审核状态",
  "component": "tdSelect",
  "initData": {
    "dataJson": [
      {"value": "0", "label": "待审核"},
      {"value": "3", "label": "审核通过"}
    ]
  }
}
{
  "item_name": "EDIT",
  "label": "编辑",
  "component": "button-normal",
  "props": {
    "opentype": "MODAL",
    "windowname": "编辑",
    "url": "/topezadmin/form/page-user-form?ID={{=d.ID}}"
  }
}

常见 opentype

opentype 效果
MODAL弹窗打开页面
FORM全屏表单页
PARENT父窗口打开或刷新
AJAXAjax 请求
CONFIRM_AJAX确认后 Ajax
_BLANK新窗口打开

六、使用建议

后续可继续扩展

如果后面要进一步开放细粒度文档,可以继续把每个组件拆成独立的 `/doc/component-xxx.html` 页面,或者把现有 Markdown 自动转换为 HTML 页面索引。