使用序号组件生成默认值
场景描述
新增数据时根据日期或者需要的格式生成序号
主键ID根据雪花算法生成唯一递增的整数序号
实现思路
使用序号(sn)组件提供的API:
@name $UI/comp/wxSn/components/wxSn/wxSn#next
@label 获取下个序号
@function
@param {String} key
@param {String} format
@param {String} num
@priority 30
@returns {Promise}
key:标识,format:格式,num:序号增量
@name $UI/comp/wxSn/components/wxSn/wxSn#nextByDate
@label 根据当前时间获取下个序号
@function
@param {String} key
@priority 30
@returns {Promise}
@name $UI/comp/wxSn/components/wxSn/wxSn#snowId
@label 获取雪花算法序号
@function
@priority 30
@returns {Promise}
实现步骤
在数据集的新增后事件中可以调用序号组件提供的操作生成序号)如下:
通过操作设置
(1).根据当前时间生成标识为DD的序号
生成的序号如下:
(2).生成000X格式标识为CC的序号
生成的序号如下:
(3).主键根据雪花算法生成唯一递增序号
- 在数据集模型设置中,主键的数据类型可以是长数字,也可以是精确数字类型,精确数字类型需要设置长度和精度
- 在数据集新增后事件中设置
生成的序号如下:
二、通过代码设置
(1).根据当前时间生成标识为DD的序号
onMainDataAfterNew(event){
var data = event.source;//获取数据集对象
var sn = this.comp("wxSn");//获取序号组件对象
sn.nextByDate("DD").then(function(){
data.setValue("no",sn.nextByDateSync("DD"));//调用序号组件nextByDate方法生成序号,然后给data的列赋值
})
}
(2).生成000X格式标识为CC的序号
onMainDataAfterNew(event){
var data = event.source;//获取数据集对象
var sn = this.comp("wxSn");//获取序号组件对象
sn.next("CC","%04d",1).then(function(){
data.setValue("no",sn.nextSync("CC","%04d",1));//调用序号组件next方法生成序号,然后给data的列赋值
})
}
(3).根据雪花算法生成主键序号
onMainDataAfterNew(event){
var data = event.source;//获取数据集对象
var sn = this.comp("wxSn0");//获取序号组件对象
sn.snowId().then(function(){
data.setValue("fid",sn.snowIdSync());//调用序号组件snowId方法生成主键序号,然后给主键列赋值
})
}