自定义主键值

新增数据时,系统给主键列默认填充 uuid,填充自定义数据有下面两种方法

单个数据组件设置(49)

设置数据组件的“自定义主键值”属性为 true,此时系统将不给主键列赋值,由开发者在规则设置中给主键列设置默认值,设计界面如下图所示

1742200291171

1742200325750

运行效果如下图所示

1742203860540

全局设置(48)

对某些数据集进行统一设置,通过在动态数据集扩展组件中写代码实现

添加动态数据集扩展组件

在 IDE 中,从市场添加动态数据集扩展组件,设计界面如下图所示

1742200836407

1742200717435

定制空调数据集扩展组件

从市场添加的组件默认是只读的,定制后,才能修改组件。在 IDE 中,定制动态数据集扩展组件,设计界面如下图所示

1742200850047

1742200754250

1742200771085

写代码自定义主键值

切换到代码页,打开动态数据集扩展组件的 model/UI2/comp/restDataExtender/components/restDataExtender/restDataExtender.js 文件,如下图所示

1742200892280

增加 page 对象

在构造方法中,添加下面这行代码,获取的 page 对象用于发送请求

this.page = page;

添加后的代码如下图所示

1742201835536

修改 generateDefaultValue 方法

在第 32 行代码中,添加下面的代码,用于只要是主键列都可重新赋值

this.primaryColumns.indexOf(key) >= 0 ||

添加后的代码如下图所示

1742202050928

修改 getDefaults 方法

getDefaults 方法返回的值,就是默认值。本例通过序号组件获取主键值,代码如下

代码中的

  • this 是数据组件
  • this.tableName 是表名
  • this.microServiceName 是服务名
  • this.page 是页面对象
  • this.primaryColumns 是主键列,因为支持多主键列,所以是数组
     async getDefaults(){
        if(this.tableName == "product"){
            //获取服务名
            let serviceName = this.microServiceName ? this.microServiceName : this.page.getServiceName();
            //获取序号
            let res = await this.page.request({
                url: "/" + serviceName + "/sn/sn/next",
                data:{key:this.tableName,format:"%05d",num:1}
            })
            //去掉表名
            let id = res.data.substr(this.tableName.length);
            //获取主键列名
            let idCol = this.primaryColumns[0];
            //写入返回默认值
            let defaults = {};
            defaults[idCol] = id;
            return defaults;
        }
     }

原来的代码不需要,都被注释了,修改后的代码如下图所示

1742203273963

运行效果如下图所示

1742203829286

results matching ""

    No results matching ""