UI模板
模板是来描述UI的JSON数据,业务开发在开发前端页面之前,首先要配置好界面模板。
1. 模板加载方法
平台提供了createUIDom用于加载界面模板、按钮、上下文信息context等JSON数据 使用createPage包装过的业务组件,可以通过props.createUIDom 方法加载到模板数据,示例代码如下:
import React, { Component } from 'react';import { createPage } from 'nc-lightapp-front';class Order extends Component {constructor(props) {super(props);this.initMeta()}initMeta = () => {this.props.createUIDom({pagecode: "452000504A_list" //页面编码},(data)=>{if(data){if(data.template){ //模板数据props.meta.setMeta(data.template)}if(data.button){ //按钮数据props.button.setButtons(data.button)}//context数据: data.context}})}render(){return (//界面视图)}createPage({})(Order);}
2.模板与应用组件关系
模板每个区域对应一个UI组件 如:表单类型的区域,对应Form应用组件(组件使用文档链接);表格类型的区域,对应Table应用组件
如下图:
模板每个区域与应用组件之间,通过区域编码对应。 应用组件渲染时,根据业务组传的区域编码参数,取到模板上对该区域的描述数据,进行组件渲染。
3.区域属性描述
模板目前支持三种类型的区域:表单、表格、查询区 描述区域的属性如下表:
| 属性 | 说明 | 类型 | 默认值 | 备注 |
|---|---|---|---|---|
| name | 区域名称 | String | 无 | |
| code | 区域编码 | String | 无 | |
| relationcode | 关联区域编码 | String | 无 | |
| moduletype | 区域类型 | String | 无 | |
| items | 区域中所有字段UI描述 | Array | 无 | 详见4.模板区域字段描述 |
| areaVisible | 区域是否显示 | Boolean | true | |
| isunfold | 区域是否折叠 | Boolean | true | |
| oid | 区域id | String | 无 | |
| isnotmeta | Boolean | false |
4.字段属性描述
区域中 items 为数组结构,每一个元素,对应区域每个字段。 区域中每个字段的属性说明如下:
| 属性 | 说明 | 类型 | 默认值 | 备注 |
|---|---|---|---|---|
| label | 名称 | String | 无 | |
| attrcode | 编码 | String | 无 | |
| visible | 是否显示 | Boolean | 无 | |
| itemtype | 控件类型 | String | 无 | 详见表4.2 |
| required | 是否必输 | Boolean | 无 | |
| disabled | 是否可编辑 | Boolean | 无 | |
| hyperlinkflag | 是否为超链接 | Boolean | 无 | 字段浏览态有效 |
| rows | 占多少行 | Number | 1 | 表单有效 |
| colnum | 占多少列 | Number | 1 | 表单有效 |
| isnextrow | 是否另起一行 | Boolean | false | 表单有效 |
| editAfterFlag | 是否配置编辑公式 | Boolean | false | 表单表格字段编辑态有效 |
| initialvalue | 字段默认值 | Object | 表单表格新增态默认值 | |
| color | label字体颜色 | String | ‘#111111’ | |
| scale | 精度 | Number | 0 | 数值型(number)字段有效 |
| maxlength | 最大录入长度 | Number | 文本录入型(input/number/textarea)字段有效 | |
| min | 最小值 | Number | 数值型(number)字段有效 | |
| max | 最大值 | Number | 数值型(number)字段有效 | |
| refcode | 参照编码 | String | 参照(refer)字段有效 | |
| options | 枚举项 | Array | 枚举(select)字段有效 |
控件类型 itemtype 说明
目前支持的控件类型有 10 种,类型说明如下表
| 类型值 | 说明 | 备注 |
|---|---|---|
| input | 文本输入框 | |
| number | 数值输入框 | 只可以录入数值 |
| textarea | 文本域 | |
| select | 下拉单选框 | |
| radio | 单选 | |
| checkbox | 复选 | |
| checkbox_switch | 复选开关 | 表示是/否的复选框,复选框后不含文字 |
| switch | 开关 | 编辑态为可选开关、浏览态显示是否 |
| switch_browse | 开关 | 编辑态不可编辑开关、浏览态为可编辑开关 |
| label | 纯文本 | 文本 不能编辑 |
| refer | 参照 | |
| residtxt | 多语文本输入框 | |
| password | 密码输入框 | |
| timepicker | 时间选择器 | 如 ‘12:00:00’ |
| datepicker | 日期选择器 | 日期由用户选择,时间为选择日期时的时间,如:’2019-10-30 09:25:04’ |
| datetimepicker | 日期时间选择器 | 日期、时间都由用户选择, 如:’2019-10-30 09:00:00 |
| NCTZDatePickerStart | 开始日期 | 日期由用户选择,时间固定开始时间, 如:’2019-10-30 00:00:00’ |
| NCTZDatePickerEnd | 结束日期 | 日期由用户选择,时间固定结束时间, 如:’2019-10-30 23:59:59’ |
| NCTZDatePickClientHourTime | 日期选择器 | —— |
| datePickerNoTimeZone | 不转时区的日期选择器 | 日期由用户选择,时间为选择日期时的时间,如:’2019-10-30 09:25:04’ |
| rangepicker | 日期范围选择器 | 日期由用户选择,时间为选择日期时的时间,如:’2019-10-30 09:25:04_2019-11-30 09:25:38’ |
| NCTZDatePickerRangeDay | 固定时间范围日期选择器 | 日期由用户选择,时间固定为开始和结束时间, 如’2019-09-30 00:00:00_2019-09-30 23:59:59’ |
