表单设计
# 一、概念
表单:某一功能的数据录入、修改、查看界面。界面中出现的数据交互形式包括:文本框、文本域、单选框、复选框、下拉框、文本按钮、按钮、时间、附件、流水号,另外还有看不见但是实际存在的隐藏域等。
表头:只录入一个数据的区域,称为表头(一般为数据库主表)。表头对应的有可能是该页面的主表,也可能是一对一从表
表体:会录入多个数据的称为表体,对应的是从表
PT:表单中的表格控件
# 二、规范
- 建表规范
(1) 建表的时候表名、字段名必须在30个字符以内
(2) 字段名使用驼峰命名法:除第一个单词之外,其他单词首字母大写。例如:repeatNumber、beginTime
所有表单主表必须有Creater,CreateTime字段,用以保存录入人,录入时间。
默认情况下,只有主表中有这两个字段,表单保存时系统就会自动记录数据。但是如果表单设计时配置了这两个字段作为前端字段,系统就不会再自动处理。
(3) 表名表字段必须有注释
(4) 以下字段按此规定配置
字段 | 字段名 | 字段类型 |
---|---|---|
主键 | SYSID | varchar (64) |
录入人 | Creater | varchar (64) |
录入时间 | CreateTime | dateTime |
物品编码 | ProductName | varchar (200) |
物品名称 | ProductCName | varchar (200) |
流程编码 | PlanName | varchar (200) |
流程名称 | PlanCName | varchar (200) |
工序编码 | StepName | varchar (200) |
工序名称 | StepCName | varchar (200) |
操作编码 | RuleName | varchar (200) |
操作名称 | RuleCName | varchar (200) |
批次 | Lot | varchar (200) |
批次号 | LotNo | varchar (200) |
单据编号 | TableNo | varchar (200) |
子表必须有的排序字段 | OrderBy | int |
(5)树表单主表字段必须有SYSID、code、name、treeid、parentId、OrderBy、isEnabled
# 三、表单配置
# 3.1 菜单位置
系统管理—表单管理—表单设计
# 3.2 配置页面
- 工具栏1:用于对表单本身进行的一些操作
- 工具栏2、工具栏3:用于对表单内容进行的一些操作
- 编辑区:用于将工具栏2、工具栏3的操作结果进行展现
# 3.2.1 工具栏1(表单操作)
# 1 打开
批量发布:同时发布选中的表单
全部发布:一键发布所有表单
导出:将选中的表单以json格式导出
导入:导入其他环境导出的表单,会自动创建文件中表单用到的表
# 2 属性/新增
属性与新增打开页面一致,新增用于新增表单,属性用于查看已打开的页面并进行修改
# 2.1属性

提示:表单名称、数据表、主键、表单类型为必填项,属性页签配完即可点击【确定】按钮完成基础信息配置,其余页签可根据后续需要进行配置。
表单名称:表单的名称
数据连接:表单连接的数据库(默认使用自定义连接)
数据表:表单对应数据库主表,同时也支持下拉式的搜索
主键:该主表的主键,选择表时会自动带出。注:建议按本平台表规范将主键统一设为SYSID vharchar(64)
标题字段:显示页面标题的字段
表单类型:类型树可在菜单【系统管理==>数据字典】 中设置。只有加在下图中【表单分类】下的数据字典才可作为表单类型
树表单:如果勾选,则当前所建立的表单为树表单,树表单在建立数据库表的时候会有特殊字段要求(字段规范有详解)。
启用从表:启用与该主表相关联的一对一从表(一对多的从表无需在此配置),选择【是】新增【从表属性】页签
保存后:表单数据保存后的操作
关闭:关闭当前表单
跳到新增:重新打开新增表单,可用于连续新增数据
跳到修改、跳到查看:打开修改/查看表单,可查看或修改当前新增的数据
# 2.2加载
表头字段会有一些不绑定数据库的字段,在编辑/查看的时候需要显示出来。此时需要在该页签配置
绑定表名:选择绑定的表。因为表头可能存在主表以及一对一从表,因此需要确定是依据哪张表。
脚本:是SQL查询语句,通过 select的列名/别名=表头控件ID的方式进行赋值显示
类型:(添加/修改)用于指定是添加时的效果还是修改时的效果,修改等同于查看
案例:测点编码与组未绑定表字段
-- 占位符【@】默认获取当主表id select t.code flow_textbutton_1,g.name flow_text_2 from conp_Tag_Group m left join conp_TagGroup_main g on g.sysid = m.GroupId left join conp_tag t on t.sysid = m.TagId where m.sysid=@
1
2
3
4
5
6
# 2.3 Onload
页面打开加载时需要做的自定义事件,使用js/jQuery实现
# 2.4 OnSave
页面保存时需要做的自定义事件,使用js/jQuery实现
# 2.5 接口
接口页签用于处理界面数据保存前/后的额外逻辑,处理顺序如下
1. 平台初始化组件:界面字段未保存时调用的逻辑。此处调用的是存储过程,接受参数为该条记录主表SYSID以及增/改/查参数。此处的应用场景更多的是数据修改时的备份以及业务反处理等。
2. 执行前组件:业务组件执行前调用的逻辑。此处调用的是是存储过程,接受参数为该条记录主表SYSID。
3. 执行后组件:业务组件执行后调用的逻辑。此处调用的是是存储过程,接受参数为该条记录主表SYSID。
4. 业务组件:本平台提供的固化的业务处理逻辑,如出入库单刷现存量,报工走拆合批/流程等。这些固化的逻辑被封装在名为业务组件的组件中,直接输入组件名称即可调用。具体组件说明见《腾泰工业互联网平台操作手册-业务组件》
5. 打印组件:处理打印逻辑的组件。 此处调用的规则是
a) 如果指定了打印模版名称,则按次名称打印
b) 如果指定了存储过程,则按存储过程输出的打印模版名称打印。
c) 如果指定的名称在打印模版名、存储过程名都有,按模版名称打印
d) 具体见《腾泰工业互联网平台操作手册-打印》
6. 消息组件:处理消息的组件。此处调用的是存储过程,接受参数为该条记录主表ID。
7. 更新组件:所有前述逻辑处理完后的处理组件。此处调用的是存储过程,接受参数为该条记录主表SYSID。
注:所有以上过程被封装在一个事务中,只要一个地方抛出异常回滚信号,系统即回滚。
1. 业务组件会在不符合组件规范的情况下进行回滚
2. 其他调用存储过程的组件(打印组件,消息组件除外)中只要执行select 语句,就能将select的第一列作为回滚信息返回。除了以下情况:
a) Select 1视为执行成功,不会回滚
b) 在一些极为特殊的场合,需要多个业务组件共同处理,此时可以通过业务执行前/后组件调用业务组件的方式,调用方式为执行前/后组件执行 select 1,业务组件名称 这里还是要再理下,最好不要占用额外字符
3. 打印组件和消息组件是广播性质的,无法回滚,如果需要一些验证逻辑,请在诸如执行后组件中执行
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 2.6 操作
表单中默认会有【保存】和【取消】两个按钮,如果需要新增按钮,则可以在此配置

- 名称:按钮名称
- 图标:按钮图标
- 脚本:操作里的按钮支持脚本自定义(JS/JQuery语法实现)
# 2.7 说明
用于表单的一些配置说明
# 2.8 sql管理

Sql管理用于js中调用sql的情况
允许范围:允许执行的sql类型,支持增删改查及存储过程
事件脚本:用于添加需执行的sql语句
- 说明:sql语句作用备注
Key:sql标识
Sql:编写sql语句,参数格式 '$参数名$'
3.案例
调用:"Key@参数名"
var SYSID = window.GetQueryString("SYSID");
var sqlJude = "selJuderule@SYSID="+SYSID;
var result=RoadUI.AjaxRequest(sqlJude);
result=JSON.parse(result);
2
3
4
# 2.9 App_Onload
移动端加载事件脚步
# 2.10 App_OnSave
移动端保存事件脚步
# 2.11 App_AfterSubmit
移动端保存后事件脚步
# 3 保存
将已配置的表单内容进行保存,注意保存只是一个草稿性质的保存,要正式使用必须发布
# 4 发布
配置或者修改后的表单要发布才能使用(如直接点击发布即默认已经发布, 无需点击保存之后再点击发布),可直接发布,也可点击【添加】按钮填写发布说明
# 5 另存为
另存已经配置的表单(复制)
# 6 恢复
最新发布的表单会覆盖历史版本,如果要重新使用历史版本,可以使用恢复。
# 7 预览
可以通过预览查看最新发布的表单实际使用效果。
# 3.2.2 工具栏2(控件使用)
# 1 常规控件属性说明

- 绑定字段:关联的数据库字段。选择字段后,对控件录入数据会保存到对应的字段中。也可以不关联字段。这在很多只显示不保存的数据对象很常见。(如录入人只存录入用户ID,不存姓名)
- 默认值:不输入情况下的默认值。
a) 既可以是固定值
b) 也可以从系统提供的选择项中选择。其中的URL是记录URL中的参数值(把XXXX改为URL参数名即可)

宽度:控件宽度。单位px不可省略,如100px。
高度:控件高度。单位px不可省略,如100px。
字符数:设置允许输入的最大字符数
APP隐藏:对APP端配置隐藏此控件
只读:启用后不允许输入
值类型:点击可以选择适用的各种值格式

是否必填:启用后控件为必填控件。如果不填就保存,系统会报错。
输入类型:明文为可见字符,密码全部用*表示
标题:
描述:用于设置控件提示语
# 2 常规控件事件
大部分控件都有事件属性,如下图。不同事件触发不同的效果。具体的效果逻辑用js/Jquery在事件脚本中书写

事件 | 说明 |
---|---|
onclick (opens new window) | 元素上发生鼠标点击时触发 |
onchange (opens new window) | 在元素值被改变时运行的脚本 |
ondblclick (opens new window) | 元素上发生鼠标双击时触发 |
onfocus (opens new window) | 当元素获得焦点时运行的脚本 |
onblur (opens new window) | 元素失去焦点时运行的脚本 |
onkeydown (opens new window) | 在用户按下按键时触发 |
onkeypress (opens new window) | 在用户敲击按钮时触发 |
onkeyup (opens new window) | 当用户释放按键时触发 |
onmousedown (opens new window) | 当元素上按下鼠标按钮时触发 |
onmouseup (opens new window) | 当在元素上释放鼠标按钮时触发 |
onmouseover (opens new window) | 当鼠标指针移动到元素上时触发 |
onmouseup (opens new window) | 当在元素上释放鼠标按钮时触发 |
tap | 移动端点击时触发 |
longtap | 移动端长按时触发 |
appchange | 移动端值改变时触发 |
appblur | 移动端元素失去焦点时运行的脚本 |
appfocus | 移动端元素获得焦点时运行的脚本 |
PC端具体案例可见 http://www.w3school.com.cn/tags/html_ref_eventattributes.asp
移动端事件可查看 配置平台API中的【手机端API】
回车事件:点击后自动会输入以下代码
if (event.keyCode == 13) {
}
2
键值表:可以查看键盘对应的键值
注:点击【编辑】可对控件属性、事件进行设置;点击【删除】可删除控件;单击【复制】可复制控件id(如,conp_datasource.DataSourseType),双击可【复制】可用于jQuery取值(如, $("#conp_datasource\.DataSourseType").val() )

# 3 基础控件
# 3.1 文本框
用于输入单行文字, 数据可以直接在里面录入
# 3.2 文本域
用于输入多行文字, 支持输入大段文字,需要很长的备注时可以选取此控件。
# 3.3 隐藏域
用于需要保存又不想在页面中显示的数据
# 3.4 下拉列表框
数据是向下展开的方式展现的控件,数据选择方式同单选按钮和复选按钮一致,这些控件都拥有数据源属性
属性说明:
添加空选项:默认添加一个没有值的选项
是否必选:选择【是】,保存时若未选择有效值则报错提示
数据源:
1)数据字典:使用数据字典中设置的值作为下拉选项,可在菜单【系统管理==>数据字典】 中设置所需的选项值。数据字典名称作为选项值,数据字典id作为字段保存值
2)自定义:用于自定义下拉选项。格式为【显示值1,值1;显示值2,值2;】,前面为选项显示值,后面为数据库所保存的字段值,必须使用英文逗号和分号。例如,录入【是,1;否,0】:下拉选项显示是、否,存到表里的值为1、0。
3)SQL语句:用sql查询出自己想要的字段作为选项值,查询的第一个字段为保存值,第二个字段为下拉选项值
-- 字段sysid的值为数据库所保存的字段值,字段name的值为下拉选项显示的值 select sysid,name from conp_DataSource
1
2
# 3.5 文本按钮
实现一个文本框加按钮的效果。大部分情况下主要用于实现参照页面的选择

PC弹框事件
参照数据源:可选择系统列表或外部接口作为参照数据源
列表地址:选择系统中配置的参照列表。【查看】用于查看选择的参照列表
标题:设置参照列表页面左上角的标题,未设置则使用参照列表的名称作为标题
返回多条数据:勾选后将启用多选模式
窗口大小:设置打开的参照列表页面大小,窗口的大小一般以px结尾(100px)
关闭窗口:用于设置选择后是否关闭参照列表
附加参数:如果要给参照页面传额外参数,在此输入。此处用js/Jquery。也可以实现打开参照页面前的逻辑判断。
// 语法格式 (参数:写法为sql语句where后的条件) return "OtherCon=参数"; // 案例 (Name、state:参照列表中查询的字段名,AA:参数值) return "OtherCon=Name='AA' and state=1";
1
2
3
4
5验证函数:验证参照页面数据的函数,如果验证函数条件返回false,不执行回调函数,不返回或者返回true都关闭并执行回调函数
案例:如果选择的数据Name字段值为AA,则返回false,不执行回调函数;否则执行回调函数(return true 可不写)
// data为返回的数据 if(data.Name=='AA') return false;
1
2
3回调函数:用于编写选择数据返回后的脚步事件,回填逻辑,此处用js/Jquery
案例:将参照列表字段Code、Name、SYSID的值回填到对应控件,data为返回的数据
$("#conp_tag_group\\.flow_textbutton_1").val(data.Code); // 编码 $("#conp_tag_group\\.TagName").val(data.Name); $("#conp_tag_group\\.TagId").val(data.SYSID);
1
2
3
# 3.6 日期时间
用于日期时间录入。选择时间控件之后,要选择自己想要保存的时间格式,如图所示,选择之后会自动带出参数传递格式

- 选择范围:可以设定时间的选择范围。超过该范围的无法选中
- 允许选择时间:如果不勾选,则只能选择日期,不可选择时间
- 格式:可以设定日期显示的格式
# 3.7 流水号
用于生成流水号

- 格式:流水号格式,其中有$serialnumber$代表流水号。如CPT$date&yyyyMMdd&$$serialnumber$,表示前缀是CPT+日期生成的流水号。如CPT20240122001
- 位数:流水号的位数
- 隐藏:设置流水号控件是否显示
- SQL条件:可以设置流水号的重置条件。如day(getdate())=day(CreateTime)。其中CreateTime为该表的日期字段。
# 3.8 附件上传
用于上传附件

- 单文件上传:设置是否一次只能上传一份文件
- 文件类型:设置可上传的文件类型。录入文件后缀名,多类型用英文逗号隔开(例如:jpg,png,gif,doc,docx)
# 3.9 按钮
实现按钮效果
# 3.10 单选按钮
用于在多个选项中选择单一选项,支持三中数据选择方式(数据字典、自定义、SQL查询语句),与下拉框配置一致
# 3.11 复选按钮
支持两个及以上的数据选择,实现方式与下拉框一 样。选择单选时用于是/否的复选框效果(也可作为单选按钮使用)
# 4 数据表格控件
# 4.1 表体(PT)
4.1.1 属性
标题:设置表体标题,实现效果如下图
从表:该表体关联的从表
从表主键:该从表主键
主表字段:从表关联主表时的主表字段,一般为主表SYSID(只要遵守平台表字段规范,平台会默认)
与主表关联字段:从表关联主表时的从表字段;关联字段会默认为从表的第二个字段,保持数据库中从表的第二个字段为关联字段的建表习惯可以减少操作
默认空行数:显示默认的不可输入的空行数
子表对象:设置表体对象名,默认tb,建议修改
从表排序字段:关联字段名必须是 OrderBy
从表排序类型:设置表体数据根据排序字段按升序或降序排序
编辑方式:包含常规、弹出、显示表格、显示默认行
1) 常规:已默认的方式展现
2) 弹出:以弹出窗口的方式
3) 显示表格:数据展现以表格的形式
4) 显示默认行:如果勾选,则在打开新增界面时会自动带入一行可输入行
- 显示列:初始时显示该从表的所有字段。注意:只有勾选了该列的数据才会存进数据库。(除了主键、从表关联字段以及OrderBy字段)
- 显示名称:该字段在该表体显示的列名
- 对齐方式:与word的居中,左对齐,右对齐同样的用法。
- 宽度:列的宽度(在查询列表界面的列宽是可以拖动的,亦可以左右调换位置)
- 编辑模式,表体的列可以实现成表头大多数控件的效果,其实现方式与表头相同
- APP显示:勾选的列在APP端才会显示
- 合计:如果勾选,则会在最后一行显示该列所有值的合计值
- 显示顺序:列的显示顺序
- 添加模版列:如果需要一些不绑定表字段但是显示的列,则通过添加默认列实现。例如,上图中的字段【field1】人员编码
4.1.2 加载
加载属性用于页面打开时给表体进行赋值,采用sql语法(sql的别名=PT的列名,占位符@获取当前主表数据ID)。可以对新增、修改(等同于查看)时进行不同赋值。在编辑区空白时点击可以自动生成样例语句。可以用于显示未绑定数据库的子表的值等。
案例:以下sql给可以在修改、查看时给上图中的模板列【field1】赋值
-- 编辑加载sql
select p.*,u.LogIN_Name field1 from conp_tag_groupperson p
left join Smart_UserInfo u on p.UserCode=u.sysid
where p.ParentID=@ Order By p.OrderBy
2
3
4
4.1.3 按钮
按钮页签用于给表体增加按钮,系统提供了多种按钮供使用。包括添加、删除、弹框(与表头文本按钮用法一致)、复制多行、行上移、行下移、行置顶、行置底、自定义。系统提供的按钮不满足业务需求时,可使用自定义按钮通过js脚本自行实现具体逻辑。
PC事件
对于系统提供的内置按钮,可以通过开始事件和结束事件来自定义按钮前后执行逻辑。例如,添加按钮开始事件中return false,将不会添加一行数据。
如果是自定义事件,可以在开始事件和结束事件的任意位置写逻辑。
APP事件:用于编写移动端按钮事件脚本
4.1.4 布局
4.1.5 事件
与加载页签通过sql进行初始化不同,事件页签通过JS语法实现表体加载时的一些逻辑,分别可以对表给、行、单元格进行设置。
4.1.6 App事件
移动端事件编写
# 5 自定义控件
# 5.1 多页签
实现效果:点击页签栏可以切换页签
配置:

- 名称:页签的名称
- 宽度和高度:页签窗口的高度和宽度(px)
- 排序:页签的显示顺序
- 事件类型:只包含onclik事件
- 操作:对页签的操作
注意:修改多页签,可在表单编辑区点击编辑先前已经建好的多页签控件,即可打开多页签设置页面
# 四、常用脚本
# 4.1 表格(PT)常用脚本
PtObj 为PT对象名
# (1). 添加行,返回添加的行
PtObj.AddRow(index,isAppend,data,isLast)
index 添加的位置,默认0;
isAppend:true index位置后添加 ,false index位置前添加;
data行的初始化数据格式为{"table.colname1":value,"table.colname2"};
isLast 多行添加时有用,是否最后一行
# (2). 清空行
PtObj.clearRows(isAll)
isAll:true删除所有行,false 只删除选中的行
# (3). 复制行
PtObj.copyRow(tr,isAppend,isLast)
tr:要复制的行或行号;
isAppend,isLast 参见addRow
# (4). 复制多行
PtObj.copyRows(tr,rows,isAppend)
tr:要复制的行或行号;
rows 复制的行数,或者rows不是数值类型的时候,手动输入要复制的行数;
isAppend参见addRow
# (5). 删除单行
PtObj.delRow(tr)
tr要删除的行
# (6). 清空当前行的值
PtObj.emptyRow(tr) tr行号或行
# (7). 获取td
PtObj.getCell(tr,index)
tr行或行号(从1开始);index 列号 从1开始
# (8). 获取选中的行,返回的树数组
PtObj.getCheckedRows()
# (9). 获取指定行的某列元素
PtObj.getElement(parent,name)
parent:tr或td;name 列名
# (10). 获取该列的和
PtObj.getFieldSum(name) name 列名
# (11). 获取行对象
PtObj.getRow(index,hasHead)
index 行号从1开始,hasHead:true包含标题列
# (12). 通过行主键获取行对象
PtObj.getRowByKey(key) 行的主键值
# (13. 获取PT所有显示的行
PtObj.getRowCount(hasHead) hasHead:true 包含标题列
# (14). 获取行的行号
PtObj.getRowIndex(tr) tr:行
# (15). 获取行的主键值
PtObj.getRowKey(tr)
# (16). 获取当前table
PtObj.getTable()
# (17). 获取table的配置属性
PtObj.getTableSetting()
# (18). 获取某行某列的值
PtObj.getValue(tr,name)
tr:行对象,name:列名
# (19). 获取指定列的值
PtObj.getValues(name,isJoin,joinStr)
name:列名;
isJoin=false返回数组,true返回字符串;
isJoin=true结果组合为字符串,默认,隔开;
joinStr:自定义的隔开符号,配合isJoin=true时使用;
# (20). PT表格加载数据
PtObj.querystring(sql,type,cols,dbconn,fn)
sql:加载sql;
type:0清空表格重新加载,1向表格尾部追加数据 2向表格头部插入数据;
cols:无用;
dbconn:数据库连接key;
fn:获取到数据后的自定义处理。
注:如果一行中存在下拉框的单元格,则只要数据以“值1,显示1#值2,显示2#”的方式组织,就会自动实现下拉框展示;
返回值为sql的查询结果;
# (21). 行置底
PtObj.moveBottom(tr)
# (22). 行下移
PtObj.moveDown(tr,setup)
tr:行对象;
setup:移动行数;
# (23). 行上移
PtObj.moveUp(tr,setup)
tr:行对象;
setup:移动行数;
# (24). 行置顶
PtObj.moveTop(tr)
# (25). 设置select元素的option加载
PtObj.setRowSelect(tr,name,sql)
tr:行对象;
name:表格列名;
sql:option加载sql
# (26). 给行赋值
PtObj.setRowValue(tr,data)
tr:行对象;
data:初始化数据格式为 {"table.colname1":value,"table.colname2"};
# (27). 给单个或多个元素赋值
PtObj.setValue(tr,p1,p2)
tr:行;
p1:字符串 列名,p2 value 给当前行该列名的元素赋值;p2[{key:"id1",value:"table1_id"},{key:"name",value:"table_name"}],{"table_id":"idvalue","table_name":"namevalue"} 给元素 id1和name赋值,并且数据源是
{"table_id":"idvalue","table_name":"namevalue"} id1的value是idvalue,name的value是:namevalue
# (28). 给某列赋值
PtObj.setField(ColName,Value,Con)
ColName列名,
Value:要改的值;
Con:过滤条件。
前面两个必填,Con没有的情况下,该列全部修改。Con支持正则表达式比如:要把PT的某个列为空的全部赋值,就是PtObj. setField(‘Name’,’1’,’’)
案例:把PT【name】列值为aaa的全部替换成bbb
let bbb = "bbb";
let reg = new RegExp(`${bbb}`)
PtObj.setField("name","aaa",reg)
2
3
# (29). 根据某列值获取行对象组
PtObj.getRowByCol(ColName,Con)
ColName:列名
Con:支持正则表达式
# 4.2 通配符
$userid$:当前登录用户的ID。
$username$:当前登录用户的姓名。
$deptid$:当前登录用户的部门ID。
$deptname$:当前登录用户的部门名称。
$unitid$:当前用户所在单位ID。
$unitname$:当前用户所在单位名称。
$account$:当前用户账号。
$querystring:获取URL参数值,写法:$querystring&flowid&$,中间的flowid为要查询的参数名称。
$queryform:获取POST的参数值,写法:$queryform&参数名称&$。也可以直接用$r.flowid,其中flowid就是URL中名为flowid的参数。
$date:用当前日期时间替换字符串,写法:$date&日期时间格式&$。例:$date&yyyyMMdd&$。
$datarow:获取一个System.Data.DataRow中的一个字段值,调用的时候要将DataRow作为参数传入,public static string FilterWildcard(string str, string userID = "", object data = null),例:"$datarow&id&$".FilterWildcard("",DataRow);
# 4.3 常用封装函数
# (1). 获取当前登录用户信息
var user= window.getUserInfo();
# (2). 获取列表选中行数组
var checkRows=window.getlistChecked();Console.log(checkRows.length);
# (3). 获取URL参数
var value=window.GetQueryString("参数名");
# (4). AJAX请求函数
平台在jQuery的Ajax基础上进行了封装修改,已方便平台使用(只能用于调用平台内部接口)。API如下:
POST请求:post_not_async(异步请求)、post(同步请求)
GET请求:get_not_async(异步请求)、get(同步请求)
案例:
let tk = TentaiUI.Common.getCookie("tk"); // 获取登录tk
TentaiUI.Common.post_not_async("API/CM/ModifyValue","参数", function(res){
if (res.Result) {
console.log(res)
// 请求成功进行的操作
} else {
// 请求失败进行的操作
}
},"","application/json");
2
3
4
5
6
7
8
9
// JQUERY原生AJAX请求,用于调用非平台接口
$.ajax({
type : 'get',
url : 'API/CM/ModifyValue',
data:{},
success : function(res) {
console.log(res)
if(res.Code==200){
// 请求成功进行的操作
}else {
// 请求失败进行的操作
}
});
2
3
4
5
6
7
8
9
10
11
12
13
# (5). 打开页面
Window.open和RoadUI.Core.open 的使用方法一样
Window.open(url,name,style,type) 或 RoadUI.Core.open(url,name,style,type) Url:站外网址(http://) Name:窗口名称 Style:窗口样式 Type:
- _blank:浏览器新页签打开
- _self:当前页面打开
- _top:当前iframe父级页面打开
// 案例1 打开列表
window.open("/Product/report?programid=0ae0aa79e30d4aa9a32182fb1a4db96e","列表","width=1024,height=768")
// 案例2 打开表单
window.open("/Product/report?secondtableeditform=d1318ce8-4de0-87de-7600-de90f2d3e2da&formopenmode=1&instanceid="+SYSYID,"修改","width=824,height=668");
关键参数说明:
formopenmode 打开类型 0 新增 1 编辑 2 查看
openmodel 打开模式 1 新窗口 0本窗口
Secondtableeditform 表单ID
instanceid 表头记录ID SYSID
programid 列表ID
2
3
4
5
6
7
8
9
10
11
12
# (6). 前端SQL执行函数
- RoadUI.AjaxRequest(sql)
此函数可执行SQL语句(增删改查),如果是查询则返回json字符
var sql='select id,name,age from mes_userinfo where id=1'; // sql语句可写到Sql管理中
var result=RoadUI.AjaxRequest(sql);//执行sql并返回json字符
console.log(result);
result=JSON.parse(result);//转换称json格式
Console.log(result[0].name);
2
3
4
5
- RoadUI.formHeader(sql)
Sql:只能是查询SQL语句
返回值为sql的查询结果,可用于给表头控件赋值
案例:
// 别名(sqlserver:[表名.字段名];mysql:`表名.字段名`)
var sql='select name [mes_userinfo.name],age [mes_userinfo.age] from mes_user where id=1’;
RoadUI.formHeader(sql);//
2
3
- header_select(id,sql)
Id:下拉框ID sql:查询sql语句
返回值为sql的查询结果,此函数用于给表头下拉框赋值
案例:
var sql='select id,name from mes_userinfo where id=1’;
header_select("mes_userinfo.name”,sql);
2
# (7). 生成GUID
RoadUI.Core.newid(isMiddline)
isMiddline:值为true或false,设置生成的GUID是否带 -
var guid=RoadUI.Core.newid(true);//参数为true生成 -
Console.log(guid); // f29aa020-95c2-555f-dd8c-44e7d74c8b1a
var guid=RoadUI.Core.newid(false);//参数为false生成不带 -
Console.log(guid); // d5645fc9996301d9ad0803f08b0a7ba9
2
3
4
5
# (8). 查看PDF文件
//PDFView(filepath) filepath:pdf文件相对路径
window.PDFView(“\RoadFlowEngine\Content\UploadFiles\202109\17\333.pdf”);
2
# (9). 加密
GetEncryptPwd("123456");// 加密字符串123456
# (10). 日期格式化
(new Date()).pattern("yyyy-MM-dd HH:mm:ss")
# (11). 获取tk
TentaiUI.Common.getCookie("tk")
# (12). 提示信息框
TentaiUI.Alert({
message: "提示信息",
type: "alert", // alert:信息提示;confirm:带确认/取消按钮的提示框
level: "info" // 弹框级别 info debug waring error
});
2
3
4
5
# 4.4 常用控件脚本
# (1). 基础控件取值赋值
$("#mes_userinfo\\.Name").val("张三"); // 赋值
let name = $("#mes_userinfo\\.Name").val(); // 取值
var a=$(srcObj).val(); // 获取当前控件值
2
3
4
# (2). 下拉框脚本
// 把sql查询的值赋值到下拉框
var sql='select id,name from mes_userinfo where id=1’;
header_select("mes_userinfo.name”,sql);
// 根据值设置默认选中项
$("input[name='mes_userinfo.name'][value=张三]").prop("checked","true");
// 设置下拉框不可选
$("#mes_userinfo\\.name").attr("disabled","true");
2
3
4
5
6
7
8
9
# (3). 文本按钮、弹框事件脚本
// 附加参数 return "OtherCon=自定义参数" (自定义参数为sql语句中where后面的部分)
let name = "张三", sex="男";
return "OtherCon=name!='"+name+"' and sex='"+sex+"'"; // 过滤掉打开的人员参照列表中name字段值不等于张三,但sex字段值为男的数据
2
3
4
# (4). PT
// 调sql管理的方式给PT赋值
let name = "aaa";
PtObj.loadData("sqlKey@name="+name,0);
// 自定义按钮 弹框参照赋值 Key为Pt列名,Value为参照列表查询的列名,注意区分大小写
var trobj = PtObj.addRow();
var cols = [{Key:"ItemID",Value:"ID"},{Key:"ItemName",Value:"Name"},{Key:"CheckUser",Value:"CheckUser"}];
PtObj.setValue(trobj,cols,data);
// 弹框参照 过滤参照列表已选择数据 ItemID为PT列,ID为参照列表字段
return "OtherCon=ID not in ('"+PtObj.getValues('ItemID',true,"','")+"')";
// PT 下拉框赋值
PtObj.setRowSelect(trobj,'PT列名',sql);
PtObj.setRowSelect(trobj,'field1','select sysid,name from Mes_StoreSet '); // sql可放于sql管理中
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# (5). 获取左侧树列表id
$("#Form_Tree_ID").val();