统一设置创建人、修改人

数据表中需要记录创建人、创建时间、修改人、修改时间,如下图所示,使用动态数据集扩展组件实现

动态数据集扩展组件

  • 提供三个模板用于在数据集中创建这些列
  • 提供 js 方法,实现在页面上新增和修改数据时,自动写入数据

1745544973332

添加动态数据集扩展组件

切换到页面设计区,从市场添加“动态数据集扩展组件”,如下图所示

1745545063427

添加数据集时选择模板

添加动态数据集时,出现3个模板,如下图所示,选择模板后创建的数据集,除了主键列还会包括模板中的列

1745545101721

使用版本锁模板创建的数据集,如下图所示

1745546157940

使用创建修改人模板创建的数据集,如下图所示

1745546224038

使用创建修改人版本锁模板创建的数据集,如下图所示

1745546282933

系统自带的3个模板

动态数据集扩展主键中带的三个模板位于 model\service\comp\restDataExtender 目录下,如下图所示,分别是

  • 版本锁模板:version.data.template.m
  • 创建修改人模板:creator.data.template.m
  • 创建修改人版本锁模板:creatorVersion.data.template.m

1745545306832

在页面上添加动态数据集扩展组件

新增和修改数据时,需要自动写入创建信息和修改信息时,在页面中添加动态数据集扩展组件,如下图所示

1745560960444

  • fcreator 和 fmodifier 写入当前人的全路径编码
  • fcreatorName 和 fmodifierName 写入当前人的姓名
  • fcreateTime 和 fmodifyTime 写入当前服务器时间

自定义列标识、列名称

当需要修改数据集模板中的列标识、列名称或者增加列时,需要修改动态数据集扩展组件

本例:将 fcreatorName 改为 personName,fcreator 和 fmodifier 写入当前人的ID

定制组件

切换到页面设计区,点击市场组件图标,如下图所示,打开市场组件对话框

1745547321345

找到动态数据集扩展组件,点击定制按钮,如下图所示,选择提交 git

1745545645493

修改模板

切换到代码页,打开 model\service\comp\restDataExtender 目录下的模板文件 xxx.data.template.m

  • 修改列标识:修改 property 中的 name
  • 修改列名称:修改 property 中的 label
  • 添加新列:添加一个 property,property 的写法可以从其他数据集的模型文件(service/main/xxx.data.m)中复制

1745545614904

修改组件 js 文件中的列标识

动态数据集扩展组件的 model\UI2\comp\restDataExtender\components\restDataExtender\restDataExtender.js 文件中,实现新增时写入创建信息和修改信息,保存前写入修改信息,如下图所示

1745545785564

  • 新增时在 getDefaults 方法中写入创建信息和修改信息
  • 保存前在 processSaveRow 方法中写入修改信息

在这两个方法中,修改列标识,或者增加新的列,代码如下

    async getDefaults(){
        let now = wx.Date.getServerDatetime();
        let id = this._context.getCurrentPersonMemberID();
        let name = this._context.getCurrentPersonMemberName();
        return {"fcreator":id, "fcreateTime": now, "personName": name, "fmodifier":id, "fmodifyTime": now, "fmodifierName": name};
    }

    processSaveRow(row, ignoreSlave, allCol){
        if(this.canExtend() && row){
            let now = wx.Date.getServerDatetime();
            let id = this._context.getCurrentPersonMemberID();
            let name = this._context.getCurrentPersonMemberName();
            let defaults = {"fmodifier":id, "fmodifyTime": now, "fmodifierName": name};

            let props = ['fmodifier','fmodifyTime','fmodifierName'];
            for(let prop of props){
                if(this.getColumnDef(prop)){
                    row[prop] = defaults[prop];
                }
            }
        }
        return super.processSaveRow(row, ignoreSlave, allCol);
    }

results matching ""

    No results matching ""