3.5.6.1 字段的配置

字段组件类型

ttype可以配置哪些widget?本文这里把oinone平台默认支持的所有widget都进行了罗列,方便大家查阅。

字段组件匹配规则

字段组件没有严格的按组件名(widget)、字段类型(ttype)、视图组件类型(viewType)限定,而是一个匹配规则

  1. 按widget 最优先匹配

  2. 按最大匹配原则

    1. ttype、viewType。每个属性权重一分
  3. 按后注册优先原则

通用属性

属性 属性描述 属性name 默认值 类型
标题 字段的标题名称 label - string
占位提示 一个字段的描述信息,常用于说明当前字典的范围、注意事项等 placeholder - string
描述说明 组件描述信息 hint - string
数据校验 与表单其他数据联动校验 validator - 表达式
数据校验不通过提示 数据校验不通过提示 validatorMessage 校验失败 string
只读 字段的状态,可见,不可编辑 readonly false boolean或者表达式
隐藏 字段的状态,不,不可编辑 invisible false boolean或者表达式
必填 字段是否必填 required false boolean或者表达式
禁用 字段是否禁用 disabled false boolean或者表达式
宽度 属性在页面中的宽度 colSpan 01/02
标题排列方式 标题排列方式: 水平 , 横向 layout vertical vertical | horizontal
默认值 默认值,多值逗号分割 defaultValue - 根据不同ttype有不同的默认值类型

表3-5-6-1 字段通用属性

字段组件大全

widget为"-"表明不需要指定,是该ttype默认widget

组件名称 widget 对应ttype 属性 属性描述 属性name 默认值 类型
单行文本 - STRING 通用属性
文本类型 密码:password; 文本: text type text string
最小长度 输入框填写数据时最少输入的长度值 minLength - number
最大长度 输入框填写数据时最多输入的长度值 maxLength - number
输入格式 单行文本组件特有的属性,通过规则校验内容,提供一些常用的,也支持自定义校验正则 pattern - 正则表达式
输入格式不通过 输入格式不通过提示语 tips 校验失败 string
显示计数器 设置输入框是否显示字数计数器 showCount FALSE boolean
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
前缀存储 前缀存储, 仅前缀类型为文本可用 prefixStore - boolean
后缀存储 后缀存储, 仅后缀类型为文本可用 suffixStore - boolean
多行文本 - TEXT 通用属性
最小长度 输入框填写数据时最少输入的长度值 minLength - number
最大长度 输入框填写数据时最多输入的长度值 maxLength - number
显示计数器 设置输入框是否显示字数计数器 showCount FALSE boolean
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
整数 - INTEGER 通用属性
最大值 最大值 max - number
最小值 最小值 min - number
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
显示千分位 显示千分位 showThousandth FALSE boolean
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
小数 - FLOAT 通用属性
最大值 最大值 max - number
最小值 最小值 min - number
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
显示千分位 显示千分位 showThousandth FALSE boolean
保留小数位数 保留小数位数 precision - number
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
下拉单选 M2M、O2O、ENUM不需要配置 M2M 通用属性
BOOLEAN为Select O2O 选项配置 选项配置使用<option name="" displayName="" invisible="">节点可配置多个选项, options -
BOOLEAN 关系型下拉不支持
ENUM 选项字段 关系型下拉选项展示标题,例如"activeRecord.name" optionLabel 模型数据标题 表达式
搜索字段 关系下拉搜索使用字段,例如"name, code",字段名逗号分割 searchFields name string
过滤条件 关系型下拉数据过滤, 例如"activeRecord.name == '小明'" domain - 表达式
下拉多选 - O2M、M2M、ENUM 通用属性
选项配置 选项配置使用<option name="" displayName="" invisible="">节点可配置多个选项, options -
关系型下拉不支持
选项字段 关系型下拉选项展示标题,例如"activeRecord.name" optionLabel 模型数据标题 表达式
搜索字段 关系下拉搜索使用字段,例如"name, code",字段名逗号分割 searchFields name string
过滤条件 关系型下拉数据过滤, 例如"activeRecord.name == '小明'" domain - 表达式
最多选择个数 多选最多选择的个数 maxNumber - number
最少选择个数 多选最少选择的个数 minNumber - number
开关 - BOOLEAN 通用属性
默认值 默认值 defaultValue FALSE boolean
单选框 Radio BOOLEAN、ENUM 通用属性
选项配置 选项配置使用<option name="" displayName="" invisible="">节点可配置多个选项, options -
关系型下拉不支持
排列方式 单选框的排列方式 orientation horizontal vertical | horizontal
复选框 Checkbox ENUM,multi=true 通用属性
选项配置 选项配置使用<option name="" displayName="" invisible="">节点可配置多个选项, options -
关系型下拉不支持
排列方式 单选框的排列方式 orientation horizontal vertical | horizontal
富文本 - HTML 通用属性
年份 - Year 通用属性
日期 - Date 通用属性
日期格式 CHINESE: 2019年04月06日 dateFormat CHINESE CHINESE
CHINESE_YEAR_MONTH: 2019年04月 CHINESE_YEAR_MONTH
HYPHEN_YEAR_MONTH: 2019-04 HYPHEN_YEAR_MONTH
SLASH_YEAR_MONTH: 2019/04 SLASH_YEAR_MONTH
HYPHEN: 2019-04-06 HYPHEN
SLASH: 2019/04/06 SLASH
日期时间 - DateTime 通用属性
时间格式 COLON_NORMAL: HH:mm:ss timeFormat COLON_NORMAL COLON_NORMAL
COLON_SHORT: HH:mm COLON_SHORT
AP_COLON_NORMAL: A hh:mm:ss AP_COLON_NORMAL
AP_COLON_SHORT: A hh:mm AP_COLON_SHORT
日期格式 CHINESE: 2019年04月06日 dateFormat CHINESE CHINESE
CHINESE_YEAR_MONTH: 2019年04月 CHINESE_YEAR_MONTH
HYPHEN_YEAR_MONTH: 2019-04 HYPHEN_YEAR_MONTH
SLASH_YEAR_MONTH: 2019/04 SLASH_YEAR_MONTH
HYPHEN: 2019-04-06 HYPHEN
SLASH: 2019/04/06 SLASH
时间 - Time 通用属性
时间格式 COLON_NORMAL: HH:mm:ss timeFormat COLON_NORMAL COLON_NORMAL
COLON_SHORT: HH:mm COLON_SHORT
AP_COLON_NORMAL: A hh:mm:ss AP_COLON_NORMAL
AP_COLON_SHORT: A hh:mm AP_COLON_SHORT
颜色选择器 ColorPicker STRING 通用属性
文件上传 Upload STRING multi=true 通用属性
最大上传文件个数 最大上传文件个数 limit - number
最大上传文件体积 最大上传文件体积,单位为mb limitSize - number
限制上传文件类型 限制上传文件类型, 例如".jpg,.mp4", 逗号分割 limitFileExtensions - string
图片上传 UploadImg STRING multi=true 通用属性
最大上传文件个数 最大上传文件个数 limit - number
最大上传文件体积 最大上传文件体积,单位为mb limitSize - number
限制上传文件类型 限制上传文件类型, 例如".jpg,.mp4", 逗号分割 limitFileExtensions - string
标签 - STRING multi=true 数量限制 限制输入标签的个数 limit - number
表单 Form M2O、O2O 通用属性
标题排列方式 标题排列方式: 水平 , 横向, 控制整个表单的排列方式 layout vertical vertical | horizontal
表格 Table O2M、M2M 通用属性
操作列显示数量 表格操作列显示数量,1-5可选 inlineActiveCount 3 1, 2, 3, 4, 5
默认分页条数 表格分页默认分页条数 defaultPageSize 30 10,15, 30, 50, 100, 200
Iframe网页 Iframe STRING 通用属性
超链接 Hyperlinks STRING 通用属性
链接文字 超链接的展示标题
时间范围 - Year、Date、DateTime、Time 通用属性
货币 - CURRENCY 最大值 最大值 max - number
最小值 最小值 min - number
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
显示千分位 显示千分位 showThousandth FALSE boolean
保留小数位数 保留小数位数 precision - number
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
手机号 - PHONE 最小长度 输入框填写数据时最少输入的长度值 minLength - number
最大长度 输入框填写数据时最多输入的长度值 maxLength - number
输入格式 单行文本组件特有的属性,通过规则校验内容,提供一些常用的,也支持自定义校验正则 pattern - 正则表达式
输入格式不通过 输入格式不通过提示语 tips 校验失败 string
显示计数器 设置输入框是否显示字数计数器 showCount FALSE boolean
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
前缀存储 前缀存储, 仅前缀类型为文本可用 prefixStore - boolean
后缀存储 后缀存储, 仅后缀类型为文本可用 suffixStore - boolean
邮箱 - EMAIL 最小长度 输入框填写数据时最少输入的长度值 minLength - number
最大长度 输入框填写数据时最多输入的长度值 maxLength - number
输入格式 单行文本组件特有的属性,通过规则校验内容,提供一些常用的,也支持自定义校验正则 pattern - 正则表达式
输入格式不通过 输入格式不通过提示语 tips 校验失败 string
显示计数器 设置输入框是否显示字数计数器 showCount FALSE boolean
显示清除按钮 设置输入框是否有一键清除的按钮及功能 allowClear TRUE TRUE
支持前缀 开启前缀 showPrefix FALSE boolean
支持后缀 开启后缀 showSuffix FALSE boolean
前缀类型 ICON: 图标; TEXT:文本 prefixType - string
后缀类型 ICON: 图标; TEXT:文本 suffixType - string
前缀内容 文本内容或者图标引用名 prefix - string
后缀内容 文本内容或者图标引用名 suffix - string
前缀存储 前缀存储, 仅前缀类型为文本可用 prefixStore - boolean
后缀存储 后缀存储, 仅后缀类型为文本可用 suffixStore - boolean

表3-5-6-2 字段组件大全

字段可选系统Widget

组件名称*代表统配widget 支持ttype 支持视图类型*代表统配ViewType, 说明
Table
*[TableO2MFieldWidget] OneToMany ViewType.Table 表格默认O2M组件
* [TableM2MFieldWidget] ManyToMany ViewType.Table 表格默认M2M组件
UploadImg[TableM2MUploadImgFieldWidget] ManyToMany ViewType.Table 图片上传往往用于跟PamirsFile对象关联的时候
UploadImg [TableM2OUploadImgFieldWidget ] ManyToOne ViewType.Table 图片上传往往用于跟PamirsFile对象关联的时候
Image[TableStringImageFieldWidget] String ViewType.Table 把字段值当url展示图片
*[TableBooleanFieldWidget] Boolean ViewType.Table 表格默认的Boolean组件
*[TableEnumFieldWidget] Enum ViewType.Table 表格默认的Enum组件
*[TableFloatFieldWidget] Float ViewType.Table 表格默认的Float组件
*[TableIntegerFieldWidget] Integer ViewType.Table 表格默认的Integer组件
*[TableLongFieldWidget] Long ViewType.Table 表格默认的Long组件
*[TableStringFieldWidget] String ViewType.Table 表格默认的String组件
*[TableYearFieldWidget] Year ViewType.Table 表格默认的Year组件
Search
*[SearchBooleanSelectFieldWidget] Boolean ViewType.Search 搜索默认的Boolean组件
*[SearchRangeDateTimeFieldWidget] DateTime ViewType.Search 搜索默认的DateTime组件
Form
Checkbox[FormBooleanCheckboxFieldWidget] Boolean ViewType.Form, ViewType.Search, ViewType.Detail
*[FormBooleanFieldWidget] Boolean ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Boolean组件,Radio形式
Switch [FormBooleanSwitchFieldWidget] Boolean ViewType.Form, ViewType.Search, ViewType.Detail
*[FormMoneyFieldWidget] Currency ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Currency组件
*[FormDateFieldWidget] Date ViewType.Form, ViewType.Detail Form\Detail默认的Date组件
*[FormDateTimeFieldWidget] DateTime ViewType.Form, ViewType.Detail Form\Detail默认的Date组件
RangeDatePickerTime [FormRangeDateTimeFieldWidget] DateTime ViewType.Form, ViewType.Detail
*[FormEnumFieldWidget] Enum ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Enum组件
*[FormFloatFieldWidget] Float ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Float组件
RichText [FormHTMLRichTextFieldWidget] HTML * 所有viewType的HTML字段都可以配 RichText
*[FormIntegerFieldWidget] Integer Currency ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Integer\Currency组件
Select [FormM2MFieldSelectWidget] ManyToMany ViewType.Form, ViewType.Search
*[FormM2MTableFieldWidget] ManyToMany ViewType.Form, ViewType.Detail Form\Detail默认的ManyToMany组件
Upload [FormM2MUploadFieldWidget] ManyToMany ViewType.Form, ViewType.Detail
UploadImg [FormM2MUploadImgFieldWidget] ManyToMany ViewType.Form, ViewType.Detail
Form[FormM2OFormFieldWidget] ManyToOne ViewType.Form, ViewType.Detail
Select、* [FormM2OSelectFieldWidget] ManyToOne ViewType.Form, ViewType.Search, ViewType.Detail, ViewType.Table Form\Search\Detail\Table默认的ManyToOne组件
SSConstructSelect[FormM2OConstructSelectFieldWidget ] ManyToOne ViewType.Form, ViewType.Search, ViewType.Detail
Upload[FormM2OUploadFieldWidget] ManyToOne ViewType.Form, ViewType.Detail
UploadImg [FormM2OUploadImgFieldWidget] ManyToOne ViewType.Form, ViewType.Detail
*[TableM2OFieldWidget] ManyToOne ViewType.Table Table默认的ManyToOne组件
*FormMapFieldFormFieldWidget Map ViewType.Form, ViewType.Detail Form\Detail默认的Map组件
Select[FormO2MFieldSelectWidget] OneToMany ViewType.Form, ViewType.Search
Table[FormO2MFieldWidget] OneToMany ViewType.Form, ViewType.Detail
*[FormRelatedFieldWidget] Related ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Related组件
Email [FormStringEmailFieldWidget] String ViewType.Form, ViewType.Search, ViewType.Detail
*[FormStringFieldWidget] String ViewType.Form, ViewType.Search, ViewType.Detail
Password [FormStringPasswordFieldWidget] String ViewType.Form, ViewType.Search, ViewType.Detail
Phone [FormStringPhoneFieldWidget] String ViewType.Form, ViewType.Search, ViewType.Detail
VerificationCode [FormStringVerificationCodeFieldWidget] String ViewType.Form
DomainExpGenerator [FormTextDomainGeneratorFieldWidget] Text ViewType.Form
*[FormTextFieldWidget] Text ViewType.Form, ViewType.Search, ViewType.Detail Form\Search\Detail默认的Text组件
*[FormTimeFieldWidget] Time ViewType.Form, ViewType.Detail
*[FormYearPickerControlWidget] Year ViewType.Form, ViewType.Search
Detail
*[DetailBooleanFieldWidget] Boolean ViewType.Detail Detail默认的Boolean组件
*[DetailCurrencyFieldWidget] Currency ViewType.Detail Detail默认的Currency组件
*[DetailDateTimeFieldWidget] DateTime ViewType.Detail Detail默认的DateTime组件
*[DetailEnumFieldWidget] Enum ViewType.Detail Detail默认的Enum组件
*[DetailFloatFieldWidget] Float ViewType.Detail Detail默认的Float组件
*[DetailHtmlFieldWidget] HTML ViewType.Detail Detail默认的HTML组件
*[DetailIdFieldWidget] ID ViewType.Detail Detail默认的ID组件
*[DetailIntegerFieldWidget] Integer ViewType.Detail Detail默认的Integer组件
Select[DetailM2MSelectFieldWidget] ManyToMany ViewType.Detail
UploadImg [DetailM2MUploadImgFieldWidget] ManyToMany ViewType.Detail
Select [DetailO2MSelectFieldWidget] OneToMany ViewType.Detail
*[DetailStringFieldWidget] String ViewType.Detail Detail默认的String组件
*[DetailTextFieldWidget] Text ViewType.Detail Detail默认的Text组件
*[DetailTimeFieldWidget] Time ViewType.Detail Detail默认的Time组件
*[DetailYearFieldWidget] Year ViewType.Detail Detail默认的Year组件

表3-5-6-3 字段可选系统Widget

字段属性配置

常规字段field通用属性

Table字段通用属性

配置项 可选值 默认值 作用
label string displayName 展示中文名称
widget string 见上方的widget,字段组件类型
independentlyEditable true、false false 是否启用单字段编辑

表3-5-6-4 Table字段通用属性

Form字段通用属性

配置项 可选值 默认值 作用
基础校验
pattern 前端正则校验
maxValue 最大值
minValue 最小值
maxLength 最大长度
minLength 最小长度
required true、false、string false 是否必填
字段状态:自读、是否可见
invisible true、false、string false 是否隐藏
readonly true、false、string false 是否只读
字段数据处理:数据源过滤、计算、默认值
defaultValue * 前端默认值
domain string rsql表达式
compute string 计算值
其他配置
label string displayName 展示中文名称false 为不展示label
hint string 一些字段的说明性文字
widget string 见上方的widget,字段组件类型
colSpan number 1 字段在表单一行中所占比例具体看布局的配置
mutil true、false list的默认true其他为false 是否支持多值针对枚举、o2m、m2m、m2o

表3-5-6-5 Form字段通用属性

关系字段扩展配置

关系字段展示的形态更多,在通用和form的配置基础上,我们也增加了一些场景的配置形态,满足更多的业务场景。

配置项 可选值 默认值 作用
Select类组件配置
labelField string 展示字段以
separator连接
separator string
searchField string 搜索所用的字段

表3-5-6-6 关系字段扩展配置

搜索字段通用属性

配置项 可选值 默认值 作用
mutil true、false list的默认true其他为false 是否支持多值针对枚举、o2m、m2m、m2o
label string displayName 展示中文名称false为不展示label
domain string rsql表达式
blank true、false false 是否加入自选搜索字段
operator rsql操作符 根据ttype默认推断 搜索filter特有

表3-5-6-7 搜索字段通用属性

举例mutil和operator

针对mutil和operator进行举例,因为我们经常会碰到两种场景,这两个配置就非常有用

1mutil:单选的枚举值要在搜索框中选择多个值进行过滤,如订单状态枚举,我们搜索要搜索已下单未支付和已支付未发货的两种状态时就非常有必要

2operator:默认ttype为string,搜索的时候都是以like为操作符,但对于一些数据量比较大的表,我们希望走=或者单边like就可以派上用场了

Step1 新增PetTalentSexEnum枚举类
package pro.shushi.pamirs.demo.api.enumeration;

import pro.shushi.pamirs.meta.annotation.Dict;
import pro.shushi.pamirs.meta.common.enmu.BaseEnum;

@Dict(dictionary = PetTalentSexEnum.DICTIONARY,displayName = "萌猫体型")
public class PetTalentSexEnum extends BaseEnum<PetTalentSexEnum,Integer> {

    public static final String DICTIONARY ="demo.PetTalentSexEnum";

    public final static PetTalentSexEnum MAN =create("MAN",1,"男","男");
    public final static PetTalentSexEnum FEMAL =create("FEMAL",2,"女","女");
}

图3-5-6-1 新增PetTalentSexEnum枚举类

Step2 新增PetFile模型
package pro.shushi.pamirs.demo.api.model;

import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;

@Model.model(PetFile.MODEL_MODEL)
@Model(displayName = "文件",summary="文件",labelFields = {"url"})
public class PetFile extends AbstractDemoIdModel{
    public static final String MODEL_MODEL="demo.PetFile";

    @Field(displayName = "图片路径")
    private String url;

}

图3-5-6-2 新增PetFile模型

Step3 修改PetTalent模型
package pro.shushi.pamirs.demo.api.model;

import pro.shushi.pamirs.demo.api.enumeration.PetTalentSexEnum;
import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;
import pro.shushi.pamirs.user.api.model.PamirsUser;

import java.util.List;

@Model.model(PetTalent.MODEL_MODEL)
@Model(displayName = "宠物达人",summary="宠物达人")
public class PetTalent extends AbstractDemoIdModel{
    public static final String MODEL_MODEL="demo.PetTalent";

    @Field(displayName = "达人")
    private String name;

    @Field.one2many
    @Field(displayName = "达人图片")
    private List<PetFile> picList;

    @Field.many2many(relationFields = {"petTalentId"},referenceFields = {"petShopId"},throughClass =PetShopRelPetTalent.class)
    @Field(displayName = "推荐宠物商店")
    private List<PetShop> petShops;

    @Field.Enum
    @Field(displayName = "性别")
    private PetTalentSexEnum petTalentSex;

    @Field.many2one
    @Field(displayName = "创建者",required = true)
    @Field.Relation(relationFields = {"createUid"},referenceFields = {"id"})
    private PamirsUser creater;

}

图3-5-6-3 修改PetTalent模型

Step4 修改宠物达人表格视图的Template中search部分

<template slot="search"  cols="4">
    <field data="name" label="达人" operator="==" />
    <field data="petTalentSex" multi="true"/>
    <field data="petShops" />
    <field data="dataStatus" label="数据状态" multi="true">
        <options>
            <option name="DRAFT" displayName="草稿" value="DRAFT" state="ACTIVE"/>
            <option name="NOT_ENABLED" displayName="未启用" value="NOT_ENABLED" state="ACTIVE"/>
            <option name="ENABLED" displayName="已启用" value="ENABLED" state="ACTIVE"/>
            <option name="DISABLED" displayName="已禁用" value="DISABLED" state="ACTIVE"/>
        </options>
    </field>
    <field data="createDate" label="创建时间"/>
</template>

图3-5-6-4 修改宠物达人表格视图的Template中search部分

Step5 重启看效果

我们看到发起的请求中name变成了==,而性别可以下拉多选并以or拼接。在3.5.3【Action的类型】一文的“ViewAction高级参数filter和domain(举例)”部分中的宠物达人2菜单针对name配置domain = ""name =like= \'老\'""将无效。

3.5.6.1 字段的配置

图3-5-6-5 查看宠物达人2菜单

视图中字段间的联动

字段联动需求主要在于:数据处理、展示处理和数据校验等字段间相互动态作用,其他复杂的联动需要自定义字段的widget,如平台提供的SSConstructSelect。

数据处理:通过字段的数据处理相关属性配置来完成如domain、compute

展示处理:通过字段的数据展示相关属性配置来完成如invisible、readonly

数据校验:通过字段的基础校验相关属性配置来完成如required

domain的举例

我们经常在o2m和m2m中的filter或field会设置domain来过滤数据,但是如何在设置过滤条件时用上其他字段的值呢?在4.1.19【框架之网关协议-后端占位符】一文中我们在过滤条件中用上了后端占位符,这个在日常开发中也很有用。言归正传我们来看“过滤条件时用上其他字段的值”的例子吧。

Step1 修改宠物达人的表格视图的Template中search部分

我们给petShops字段的domain设置成createUid == ${activeRecord.creater.id},表示该字段的可选范围取决于creater字段,activeRecord为前端内置关键字,获取当前操作记录。

 <template slot="search"  cols="4">
    <field data="name" label="达人" operator="==" />
    <field data="petTalentSex" multi="true" label="达人性别"/>
    <field data="creater" />
    <field data="petShops" label="宠物商店" domain="createUid == ${activeRecord.creater.id}"/>
    <field data="dataStatus" label="数据状态" multi="true">
        <options>
            <option name="DRAFT" displayName="草稿" value="DRAFT" state="ACTIVE"/>
            <option name="NOT_ENABLED" displayName="未启用" value="NOT_ENABLED" state="ACTIVE"/>
            <option name="ENABLED" displayName="已启用" value="ENABLED" state="ACTIVE"/>
            <option name="DISABLED" displayName="已禁用" value="DISABLED" state="ACTIVE"/>
        </options>
    </field>
    <field data="createDate" label="创建时间"/>
</template>

图3-5-6-6 给petShops字段的domain设置成createUid == ${activeRecord.creater.id}

Step2 重启看效果

3.5.6.1 字段的配置

图3-5-6-7 查看宠物达人列表页

3.5.6.1 字段的配置

图3-5-6-8 查看宠物达人列表页

compute的举例

字段的值通过compute计算而来,这里

Step1 为PetTalent增加一个nick字段

 @Field(displayName = "昵称")
 private String nick;

图3-5-6-9 为PetTalent增加一个nick字段

Step2 修改PetTalent的Form视图增加下面代码

<field data="nick" compute="activeRecord.name"/>

图3-5-6-10 修改PetTalent的Form视图

Step3 重启看效果

我们发现昵称的值会跟着达人字段变化而变化

3.5.6.1 字段的配置

图3-5-6-11 昵称的值会跟着达人字段变化而变化

注:invisible、readonly、required的配置方式均与compute类似,感兴趣的小伙伴可自行体验。

通过自定义组件进行联动(SSConstructSelect)

目前对于复杂的联动需要自定义widget,在值变化时提交数据到后端,然后拿到后端返回值进行其他字段的赋值操作。

这里举例SSConstructSelect组件,它在值变化的时候会调用后端constructMirror的函数,并把对象返回的值进行赋值。

Step1 新增PetTalentAction类,并增加一个constructMirror函数

package pro.shushi.pamirs.demo.core.action;

import org.springframework.stereotype.Component;
import pro.shushi.pamirs.demo.api.model.PetTalent;
import pro.shushi.pamirs.meta.annotation.Function;
import pro.shushi.pamirs.meta.annotation.Model;
import pro.shushi.pamirs.meta.enmu.FunctionOpenEnum;
import pro.shushi.pamirs.meta.enmu.FunctionTypeEnum;

@Model.model(PetTalent.MODEL_MODEL)
@Component
public class PetTalentAction {
    @Function(openLevel = FunctionOpenEnum.API)
    @Function.Advanced(type= FunctionTypeEnum.QUERY)
    public PetTalent constructMirror(PetTalent data){
        return data.setName("oinone");
    }
}

图3-5-6-12 新增PetTalentAction类

Step2 在PetTalent的form视图指定widget

widget【SSConstructSelect】有两个属性配置

  1. submitFields 提交后端请求时会带上字段列表,默认为:当前配置字段

  2. responseFields 请求返回值后会影响的字段列表,默认为:影响所有字段

<field data="creater" widget="SSConstructSelect" submitFields="creater,name" responseFields="name"/>

图3-5-6-13 在PetTalent的form视图指定widget

Step3 重启看效果

选择创建者,后端会把达人改成了oinone,而昵称又通过前端compute计算为oinone

3.5.6.1 字段的配置

图3-5-6-14 示例效果

前端上下文关键字

关键字 说明 举例
activeRecord 当前对象 字段间联动之domain的举例
rootRecord 根对象 在视图嵌套的情况下,子视图需要用到父视图数据,则可以通过rootRecord来获取字段数据
openerRecord 打开者对象 在弹出框时需要用到打开者对象数据时,则可以用openerRecord来获取父窗口对象数据
scene 当前页面的viewAction.name

表3-5-6-8 前端上下文关键字

Oinone社区 作者:史, 昂原创文章,如若转载,请注明出处:https://doc.oinone.top/oio4/9260.html

访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验

(0)
史, 昂的头像史, 昂数式管理员
上一篇 2024年5月23日 am9:18
下一篇 2024年5月23日

相关推荐

  • 数据类

    1.数据类 1.1 新增数据 新增数据节点可以为任意模型通过表达式新增数据,包含两种模式,「节点执行完即增加业务数据」功能下新增的数据也可以同步触发流程,相反「节点执行完不增加业务数据」则不会触发新增业务数据关联的流程,数据仅可用于后续流程使用。 流程增加的数据在节点执行时就生效。 1.2 更新数据 更新数据节点可以为任意模型通过表达式更新数据。 1.3 获取数据 当流程需要调用触发模型之外的模型中的数据时就需要使用获取数据的功能。 需要选择获取单条/多条数据,选择一个获取数据的模型,可以设置一些筛选项减少不必要的数据。最后需要设置未获取到数据时的执行方式。 继续执行:跳过本次数据获取,继续执行流程。 向模型中新增数据后继续执行:新增数据来供后续节点使用,新增数据同时存入数据库中。 终止流程:终止流程将结束该流程,不管之后是否还有流程节点。 1.4 删除数据 删除数据节点可以将流程节点上面的模型数据从数据库中删除。 1.5 更新流程参数 可以将「流程配置」中的「流程参数」进行修改,仅有变更过的流程参数才能其他节点选中。 1.6 引用逻辑 可以在流程中使用模块自带的逻辑或使用低代码设计的逻辑。

    2024年5月23日
    1.2K00
  • 4.2.4 框架之网络请求-HttpClient

    oinone提供统一的网络请求底座,基于graphql二次封装 一、初始化 import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); http.setMiddleware() // 必须设置,请求回调。具体查看文章https://shushi.yuque.com/yqitvf/oinone/vwo80g http.setBaseURL() // 必须设置,后端请求的路径 图4-2-4-1 初始化代码示例 二、HttpClient详细介绍 获取实例 import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); 图4-2-4-2 获取实例 接口地址 import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); http.setBaseURL('接口地址'); http.getBaseURL(); // 获取接口地址 图4-2-4-3 接口地址 请求头 import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); http.setHeader({key: value}); 图4-2-4-4 请求头 variables import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); http.setExtendVariables((moduleName: string) => { return customFuntion(); }); 图4-2-4-5 variables 回调 import { HttpClient } from '@kunlun/dependencies'; const http = HttpClient.getInstance(); http.setMiddleware([middleware]); 图4-2-4-6 回调 业务使用-query private http = HttpClient.getInstance(); private getTestQuery = async () => { const query = `gql str`; const result = await this.http.query('module name', query); console.log(result) return result.data[`xx`]['xx']; // 返回的接口,打印出result对象层次返回 }; 图4-2-4-7 业务使用-query 业务使用-mutate private http = HttpClient.getInstance(); private getTestMutate = async () => { const mutation = `gql str`; const result = await this.http.mutate('module name', mutation); console.log(result) return result.data[`xx`]['xx']; // 返回的接口,打印出result对象层次返回 }; 图4-2-4-8 业务使用-mutate 三、如何使用HttpClient 初始化 在项目目录src/main.ts下初始化httpClient 初始化必须要做的事: 设置服务接口链接 设置接口请求回调 业务实战 前文说到自定义新增宠物表单,让我们在这个基础上加入我们的httpClient; 第一步新增service.ts 图4-2-4-8 新增service.ts service.ts import { HttpClient }…

    2024年5月23日
    1.4K00
  • 报表

    1. 业务场景 报表不局限于表格的样式,还能以各式各样的图表形式展现各项汇总数据 这有利于管理者更为直观地了解公司的经营情况,便于后续进行分析,提高对公司的管理水平。 2. 操作流程 1)进入数据可视化,进入报表tab,维护分组信息; 2)在二级分组名称后点击“+”【添加报表】,对报表进行编辑设计; 3)创建完成后可以【编辑】报表标题、备注; 4)需要通过【选择图表、创建图表】完善报表内容; 5)完善后可以点击【发布】报表,则报表此时可以被引用; 6)如果报表有更新,则可以点击【更新发布】,使业务系统引用对报表变为最新的报表信息; 7)如果报表数据不再可以公开使用,则需要通过【隐藏】功能将报表的引用权限收起,此时数据大屏、前端业务系统均不可再引用该报表,但不影响已被引用的报表; 8)隐藏后可以【取消隐藏】,报表恢复隐藏前的状态和功能,可以被引用。 3. 操作流程图解 3.1 创建分组 1)操作流程:创建分组 2)操作路径:数据可视化-报表-创建分组 3)点击搜索框后的「+」创建一级分组,输入一级分组名称后,点击一级分组后的「+」创建二级分组,输入二级分组名称后,此时分组创建完成,可以在二级分组下创建报表 3.2 编辑分组名称 1)操作流程:选择分组-编辑分组名称 2)操作路径:数据可视化-报表-编辑分组名称 3)鼠标移动至需要修改的分组上,点击出现的「编辑图标」,可以修改分组名称,修改后分组名称实时更新 3.3 删除分组 1)操作流程:选择分组-删除分组 2)操作路径:数据可视化-报表-删除分组 3)鼠标移动至需要删除的分组上,当分组下无报表时出现「删除图标」,可以点击图标后删除分组,删除一级分组时对应所有的二级分组也会被删除,删除后消失,只要分组下没有报表的分组才能直接删除成功 3.4 创建报表 1)操作流程:选择二级分组-创建报表 2)操作路径:数据可视化-报表-二级分组-创建报表 3)鼠标移动至需要创建报表的二级分组上,出现「+」,点击图标后=需要填写报表标题; a. 报表标题:最大支持20个字,支持汉字、数字、大小写字母、-;同个一级分组下不允许重复; 4)创建后可以选择报表需要展示的图表 3.5 删除报表 1)操作流程:选择报表-删除报表 2)操作路径:数据可视化-报表-二级分组-报表名称-删除图表 3)未发布或者已发布但没有被隐藏的报表,并且没被前端或者数据大屏引用,才展示报表菜单名称后的删除图标 4)删除报表后报表消失 3.6 选择图表 1)操作流程:选择报表-为报表选择图表 2)操作路径:数据可视化-报表-二级分组-报表名称-选择图表 3)选择单个未发布或者已发布但没有被隐藏的报表,点击【选择图表】,弹出“选择图表”弹窗,对该报表需要展示的图表进行选择 a. 需要选择图表的一级分组后才能选择图表; b. 可以多选图表,选择的图表只能是已选一级分组下的未隐藏的未被选择的图表;选择一个二级分组时,默认该二级分组下的图表会全部被选中,图表会按照选中的顺序展示在报表列表; 4)选择图表后,报表信息保持展示图表的最新效果;如果图表更新了,但是报表没有发布最新,则报表在前端展示的仍为最近发布的版本; 5)如果图表中存在超过一行的图内筛选项,则在报表处原始的图表尺寸只能查看一行图内筛选项,需要根据图表在报表处的等比拖动效果展示更多的图内筛选项 3.7 创建图表 1)操作流程:选择报表-创建图表 2)操作路径:数据可视化-报表-二级分组-创建图表 3)选择单个未发布或者已发布但没有被隐藏的报表,点击【创建图表】,弹出“创建图表”弹窗,需要填写图表标题、模型、方法; a. 图表标题:最大支持20个字,支持汉字、数字、大小写字母、-;同个一级分组下不允许重复; b. 模型:需要选择来源数据对应的模型; c. 方法:选择模型后需要选择方法,方法是用来提取模型数据的逻辑; 4)选择成功后进入图表设计页面,创建图表保存后返回,返回到当前报表页面,新创建的图表展示在报表的第一个位置 3.8 拖拽图表 1)操作流程:选择报表-拖拽图表 2) 操作路径:数据可视化-报表-二级分组-报表名称-拖拽图表 3)所有的报表均可拖拽图表,拖拽时需要选择图表,可以上下左右等比拖动,图表的内容也会根据拖动的比例进行缩放,展示全部的被遮挡图表内容 4)拖拽后实时生效,报表信息保持展示最新效果 3.9 移除图表 1)操作流程:选择报表-移除图表 2)操作路径:数据可视化-报表-二级分组-报表名称-移除图表 3)未发布或者已发布但没有被隐藏的报表,并且没被前端或者数据大屏引用,此时可以针对不需要的图表进行移除 4)选择移除后不展示在报表中,不影响原图表 5)报表移除图表后实时更新,更新发布后,前端可以展示最新的报表信息,如果未发布,则仅数据大屏可展示最新的报表信息,前端仍为最近发布的报表 3.10 设置报表筛选项 1)操作流程:选择报表-设置报表筛选项 2)操作路径:数据可视化-报表-二级分组-报表名称-更多-报表筛选项-添加 3)添加时选择筛选项字段的类型,关联每个图表对应的字段,一个图表只能关联一个 4)关联后可以按关联字段查询图表数据 3.11 发布 1)操作流程:选择报表-发布报表 2)操作路径:数据可视化-图表-二级分组-报表-发布 3)选择单个未发布且没有被隐藏的报表,点击【发布】按钮,报表发布后可以被前端引用,报表状态变为已发布,展示最近发布时间; 4)如果报表发布后有更新内容,会展示的更新类型:更新报表信息/更新图表内容/选择图表/移除图表 3.12 查看最近一次发布的版本 1)操作流程:选择报表-查看最近一次发布的版本 2)操作路径:数据可视化-报表-二级分组-报表名称-查看最近一次发布的版本 3)当报表发布后有更新,在最近发布时间左侧展示【查看】,在最近发布时间下展示更新的类型,点击查看可以查看最近发布的版 3.13 更新发布 1)操作流程:选择报表-更新发布报表 2)操作路径:数据可视化-报表-二级分组-报表名称-更新发布报表 3)选择单个已发布且没有被隐藏的报表,并且该报表在上次发布后有所更新,可以点击【更新发布】按钮,将最新的报表内容发布至业务系统,业务系统引用的报表为最新内容; 4)如果更新了内容,但未点击更新发布,则前端业务系统查看的报表仍为最近发布的报表 3.14 隐藏 1)操作流程:选择报表-隐藏报表 2)操作路径:数据可视化-报表-二级分组-报表名称-隐藏报表 3)报表默认不隐藏,可以切换是否隐藏=是 a. 未发布的报表,较隐藏前,不可以操作【发布】,可以【取消隐藏】; b. 已发布的图表,较隐藏前,只能操作【导出图片、导出excel、取消隐藏】; c. 隐藏后的报表不可以被引用,但不影响已经被引用的数据 3.15 取消隐藏 1) 操作流程:选择报表-取消隐藏报表 2) 操作路径:数据可视化-报表-二级分组-报表名称-取消隐藏报表 3) 隐藏后的报表可以取消隐藏,切换是否隐藏=否,取消隐藏后,报表恢复隐藏前的状态和功能,可以被引用 3.16 查看引用 1)流程:选择报表-查看被哪些页面引用 2)操作路径:数据可视化-报表-二级分组-报表-更多-查看引用 3)选择具体的报表,查看当前报表被引用的所有信息 3.17 不允许别人编辑 1)流程:选择报表-不允许别人编辑 2)操作路径:数据可视化-报表-二级分组-报表-更多-不允许别人编辑 3)选择自己创建的报表,对报表是否允许其他人编辑进行设置;如果设置为不允许,则其他人无法编辑报表 3.18 不允许别人引用 1)流程:选择图表-更多-不允许别人引用 2)操作路径:数据可视化-报表-二级分组-报表-更多-不允许别人引用 3)选择自己创建的报表,对报表是否允许他人引用进行设置;如果设置为不允许,则其他人无法引用到该报表 3.19 导出图片 1) 操作流程:选择报表-导出图片 2) 操作路径:数据可视化-报表-二级分组-报表名称-导出图片 3) 选择报表后,点击【导出图片】按钮可以将当前报表导出为图片 3.20 导出EXCEL 1)操作流程:选择报表-导出EXCEL 2)操作路径:数据可视化-报表-二级分组-报表名称-报表导出EXCEL 3)选择报表后,点击【导出EXCEL】按钮可以将当前报表导出为EXCEL

    2024年6月20日
    1.5K00
  • 7.2 实战训练(积分发放)

    前言 当我们碰到一个全新的场景,除了写代码以外也可以通过设计器来完成,大致步骤如下: 分析业务场景,规划对应的模型并通过模型设计器进行配置 通过界面设计器,设计出必要管理页面 通过流程设计器,设计对应业务流程 通过数据可视化,设计相应的数据看板 场景说明 本节通过例子完成一个积分成本分摊的业务场景 积分支出:谁受益谁支出原则+导购手动确认原则,通过门店应用的积分规则,来实现自动化+手动积分形式实现 案例背景 某家具企业经营多种家具类型,不同系列不同品类分事业部经营。 注: 独立门店:只能售卖本事业部下的商品; 融合门店:可以售卖多事业部下的商品; 需求:需要建立一套积分规则,遵循谁受益谁支出原则+导购手动确认原则;通过门店应用的积分规则,来实现自动化+手动积分。 场景一 导购a邀请老客户c通过裂变分享新客户x在独立门店1下单。系统根据独立门店1的积分规则,自动发放积分给老客户c和新客户x,积分由国一事业部承担。 场景二 融合门店1导购b邀请老客户d裂变分享新客户y在融合门店下单。该订单可能涉及多个事业部,由导购b手动选择最大量值的积分规则进行发放 场景三 独立门店1的导购a邀请老客户c裂变分享新客户z在独立门店2下单。系统根据独立门店2的积分规则,来计算积分值,自动发放老客户c和新客户z的积分,积分由国二事业部 实战训练 Step1 分析业务场景规划对应模型 本场景下涉及基础对象模型包括:事业部、门店、导购、会员等 事业部:它是积分成本的载体 门店:类型分为独立门店和融合门店,独立门店必须隶属于一个事业部,同时配置默认积分发放规则,融合门店可能属于多个事业部当发生积分发放时,需要店员手工选择成本事业部和积分发放规则 导购员:导购员必须隶属于一个门店等 会员:消费者需要记录它隶属导购员,以及是由哪个会员推荐过来的等 涉及业务对象模型包括:积分发放规则,积分发放记录,邀请下单记录 积分发放规则:会员积分发放规则,对应邀请老客的积分发放规则等 积分发放记录:本次发放积分、本次发放积分规则、发放对象(会员)、成本事业部、关联门店、关联导购、关联老客(可空)、关联下单记录编码等 邀请下单记录:导购、下单会员、下单门店、商品信息、下单金额等 对应模型如下: 模型 设计器呈现 自定义字段列表 关系字段说明 说明 事业部 事业部负责人(文本) 门店列表(o2m) 与门店建立o2m绑定关系,绑定时选择双向绑定,双向绑定意思是在事业部这边建立o2m到门店的关系字段,在门店那边建立m2o的关系字段 关系字段需要在有对方模型的情况下再建,比如事业部中的门店列表则是再后面追加新增的 门店 导购列表(o2m) 事业部(m2o) 默认积分发规则(m2o) 门店类型(枚举) 分别与事业部、导购、积分发放规则建立m2o、o2m、m2o关系 门店类型:需要先建对应的数据字典 导购 绑定用户(m2o) 门店(m2o) 是否离职(布尔型) 与门店建立m2o关系 1. 绑定用户,用于后续业务流程设计中的填写规则 2. 打马赛克的忽略,其他场景测试用 会员 会员累计积分(浮点数) 推荐客户(m2o) 所属于导购员(m2o) 是否为新客(布尔型) 与导购、会员建立m2o关系 1. 会员m2o的字段是自关联用于存储推荐会员 2. 打马赛克的忽略,其他场景测试用 积分发放规则 推荐客户发放比例(浮点数) 发放倍数(整数) 积分发放记录 最终发放积分(浮点数) 关联积分规则(m2o) 事件编码(文本) 推荐导购员(m2o) 推荐会员(m2o) 关系门店(m2o) 成本事业部(m2o) 会员(m2o) 成本事业部名称(文本) 会员名称(文本) 与积分发放规则、导购员、会员、门店、事业部建立m2o关系 1. 会员有两个m2o,分别用户记录发放会员和发放会员的推荐会员也就是老客 2. 事件编码用户维护触发本次积分发放记录产生的源头单据编码如:邀请下单记录的编码 邀请下单记录 成本事业部(m2o) 选择积分发放规则(m2o) 下单门店(m2o) 购买商品(文本) 下单金额(整数) 会员(m2o) 导购(m2o) 与成本事业部、积分发放规则、下单门店、会员、导购等建立m2o的关系 1. 会员、下单门店、导购属于必要信息 2. 成本事业部、积分发放规则是业务流程中自动计算回填的数据 Step3 利用界面设计器,设计出必要的管理页面 以事业部为例,构建管理页面。其他模型依次按例子建立管理页面 进入界面设计器,应用选择全员营销,模型选择事业部,点击添加页面下的直接创建 设置页面标题、模型(自动带上可切换)、业务类型(运营管理后续会扩展其他类型)、视图类型(表单)后点击确认按钮进入事业部表单设计页面 进入页面设计器,对事业部表单页面进行设计(更多细节介绍,请参考界面设计产品使用手册) a. 左侧为物料区:分为组件、模型。 ⅰ. 【组件】选项卡下为通用物料区,我们可以为页面增加对应布局、字段(如同在模型设计器增加字段)、动作、数据、多媒体等等 ⅱ. 【模型】选项卡下为页面对应模型的自定义字段、系统字段、以及模型已有动作 b. 中间是设计区域 c. 右侧为属性面板,在设计区域选择中组件会显示对应组件的可配置参数 在左侧【组件】选项卡下,拖入布局组件【分组】,并设置组件【标题属性】为基础信息 在左侧【组件】选项卡下,再次拖入布局组件【分组】,并设置组件【标题属性】为门店列表 在左侧【模型】选项卡下,分别把自定义字段中的【事业部负责人】和系统字段中的【名称】拖入【基础信息】分组,把自定义字段中的【门店列表】字段拖入门店列表分组 在设计区域切换【门店列表】展示组件为【表格】 此时【门店列表】展示形式变成了表格形式,选中【门店列表】组件,会发现左侧【模型】选项卡下的当前模型切换成了【门店】,同时我们在右属性面板区置空其【标题属性】 设计区选中【门店列表】的表格组件,分别把自定义字段中的【默认积分发规则】、【门店类型】、【导购列表】和系统字段中的【名称】拖入【门店列表】表格组件的表格字段设计区 设计区选中【门店列表】的表格组件的【创建】按钮,点击【打开弹窗】设计关系字段【门店】的新增页面 11.分别把自定义字段中的【默认积分发规则】、【门店类型】和系统字段中的【名称】拖入门店的新增页面设计区 选中弹出框中【取消】取消按钮,设置其【按钮样式】属性为【次要按钮】 关闭弹出框,回到主设计区 设计区选中【门店列表】的表格组件的【删除】按钮,设置其【按钮样式】属性为【次要按钮】,【二次确认】属性打开 设计区选中【门店列表】的表格组件中操作列的【编辑】按钮,点击【打开弹窗】设计关系字段【门店】的编辑页面, a. 分别把自定义字段中的【默认积分发规则】、【门店类型】和系统字段中的【名称】拖入门店的新增页面设计区。 b. 选中弹出框中【取消】取消按钮,设置其【按钮样式】属性为【次要按钮】 c. 把门店类型展示组件切换为【单选框】 d. 关闭弹出框 设计区选择非【门店列表】组件如基础信息,模型切换为主模型【事业部】,在左侧【模型】选项卡下,把动作分类下的提交类型【创建】动作拖入中间设计区的动作区 选择中展示名为【确定】的创建动作按钮,在右侧属性面板中设置:是否隐藏属性为【条件隐藏】,隐藏条件为【id非空】 在左侧【模型】选项卡下,把动作分类下的提交类型【更新】动作拖入中间设计区的动作区 选择中展示名为【确定】的更新动作按钮,在右侧属性面板中设置:是否隐藏属性为【条件隐藏】,隐藏条件为【id为空】。之所以同时拖入【创建】和【更新】动作并都命名为确认,是期望这个页面同时可以做为新增页面也可以做为编辑页面,只不过要通过条件隐藏来设置按钮的出现规则 在左侧【组件】选项卡下,把动作分类下的【客户端动作】拖入中间设计区的动作区 选择设计区【客户端动作】,在右侧属性面板中设置:动作名称为【返回】,客户端行为为【返回上一个页面】并点击保存 选择设计区【返回】动作,在右侧属性面板中设置:按钮样式为【返回】,【二次确认】属性打开并设置提示文字为【返回页面操作将不被保存】,可以点击预览二次确认看效果 点击【发布】按钮,页面成功发布,每发布一次会有一个例子版本,可以通过历史版本进行恢复 点击右上角历史版本图标,进入历史版本查看页面 在历史版本页面可以选择对应历史版本记录,并通过【恢复此版本】来完成页面的历史版本切换 接下来我们为事业部模型创建表格管理页面,入口同编辑页面。设置页面标题、模型(自动带上可切换)、业务类型(运营管理后续会扩展其他类型)、视图类型(表格)后点击确认按钮进入事业部表格设计页面 进入页面设计器,对事业部表格页面进行设计(更多细节介绍,请参考界面设计产品使用手册) 在左侧【模型】选项卡下,分别把自定义字段中的【事业部负责人】和系统字段中的【名称】拖入表格组件的表格字段设计区 在左侧【组件】选项卡下,把动作分类下的【跳转动作】拖入中间设计区的动作区,并在右侧属性面板中设置动作名称为【新增】,数据控制类型为【不进行数据处理】,打开方式为【当前窗口打开】,动作跳转页面为【事业部编辑】页面,并点击保存 在左侧【组件】选项卡下,把动作分类下的【跳转动作】拖入中间设计区的行内动作区,并在右侧属性面板中设置动作名称为【编辑】,数据控制类型为【处理单条数据】,打开方式为【当前窗口打开】,动作跳转页面为【事业部编辑】页面,并点击保存 在左侧【模型】选项卡下,把动作分类下的【删除】拖入中间设计区的动作区,并在右侧属性面板中设置动作名称为【删除】,按钮样式为【次要按钮】,【二次确认】属性打开 点击右上角【显示母版】进入页面最终展示形式,点击添加菜单项,并在输入框中输入【事业部管理】 点击菜单右侧设置图标,选择【绑定已有页面】,进行菜单与页面的绑定操作 在绑定页面中,模型选择【事业部】,视图选择【事业部管理】,点击确认按钮提交 拖动【事业部管理】菜单到【积分管理】父菜单下 最后别忘了点击右上角【发布】按钮对【事业部管理】表格页面进行发布,回到界面设计器首页查看刚刚建好的两个页面 以事业部为例分别对门店、导购、会员、积分发放规则、积分发放记录、邀请下单记录等模型进行页面设计,这里不再累赘,请按照自身学习需要,尝试进行界面设计 Step4 通过流程设计器,设计对应业务流程 我们先来整理下核心流程即:邀请下单流程 Step4.1 创建导购邀请下单记录触发流程 进入流程设计器,点击【创建】按钮 注意:流程中需要获取关系类型的字段(如:O2O、O2M、M2O或M2M),这种类型都是复杂的对象字段,除关联字段(一般为ID)以外的字段,需要通过【数据获取】节点单独获取【关系字段】的对象数据。所以在流程设计中经常会用到【数据获取】节点 左上角编辑流程名称为【导购邀请下单触发流程】,点击第一个【触发】节点,触发方式选择模型触发,模型选择【导购邀请下单】,触发场景选择【新增数据时】,点击该节点的【保存】按钮 点击流程图节点间的【+】图标选择增加【获取数据】节点,或者拖动左侧物料区【获取数据】到特定的【+】图标 点击【获取数据】,在右侧属性面板中设置【获取数据条数】为单条,选择模型为【导购】,点击【筛选条件】的【{X}】图标,进行数据获取的条件设置 选择条件字段为【ID】条件操作符为【等于】,条件为变量的导购字段的ID。当上下文只有一个变量时默认不需要选择,这里默认的是【触发[导购邀请下单记录]】,设置好以后点击确认,回到属性面板设置【未获取到数据时执行方式】为【终止流程】,并点击节点【保持】按钮 再增加一个【获取数据】节点,在右侧属性面板中设置 a. 【获取数据条数】为单条,选择模型为【会员】 b. 点击【筛选条件】的【{X}】图标,进行数据获取的条件设置,选择条件字段为【ID】条件操作符为【等于】,条件为变量【导购邀请下单记录】的会员关系字段的ID字段。因为上下文中存在多个变量时需要选择对应变量,跟获取导购数据有点区别,在获取导购数据时,上下文中只有此次【导购邀请下单记录】所以不需要选择对应变量,设置好以后点击【确认】按钮 c. 回到属性面板设置【未获取到数据时执行方式】为【终止流程】 d. 最后点击节点【保持】按钮。…

    2024年5月23日
    1.7K00
  • 应用审计

    1. 整体介绍 应用审计是基于模型字段记录用户操作留痕记录,通过定义审计规则,平台基于审计规则订阅的字段记录形成日志。平台名词概念: 应用日志:针对已订阅的审计规则记录用户操作信息,是用户在各应用中操作行为留痕记录。 审计规则:业务审计中,数据变化订阅记录的规则。 操作入口:应用中心——业务审计应用。 2. 审计规则 审计规则是指定义审计过程订阅数据变化的信息,根据模型、订阅到具体字段内容变化形成应用日志。如订阅销售订单的备注,销售订单S20231001888,订单备注【尽快发货】,备注修改为【需易碎品包装】,审计规则为:销售订单模型,订阅【备注】。 操作包括:新增、编辑、删除。 2.1. 新增 新增时,定义审计规则名称,选择需要审计的模型,指定需要订阅的字段信息,同时可以指定关联关系的字段。 需要注意:每个模型仅限定义单条审计规则。 2.2. 编辑 编辑同新增操作,不做赘述。 2.3. 删除 删除规则后,平台将不再监听对应数据的变更日志,请慎重删除。 3. 应用日志 应用日志是针对已订阅的审计规则记录用户操作信息。记录操作用户、IP、登录设备、位置、订阅的字段变化内容。 应用日志详情 4. 业务表达 4.1. 展示效果 表格-行操作—日志记录 详情—日志记录 4.2. 操作步骤 Step1:在应用中心,需要维护业务应用依赖业务审计应用; 操作入口:应用中心,找到业务应用——编辑,依赖模块选择业务审计。 Step2:配置审计规则; 操作入口:业务审计应用——审计规则——新增规则。 Step2:界面设计器配置日志记录; 操作入口:界面设计器,找到需要配置的页面——模型组件,将动作区的日志记录拖动到页面中。

    2024年1月20日
    1.2K00

Leave a Reply

登录后才能评论