Crud数据审批

批量动作设定 #

  • 在新增修改界面可以配置指量动作及功能ds设定
  • 如下方法
{"action1":["动作1","black"],...}
  • 在用户批量选择行后, 会自动提交两个参数:
action: 按钮的名称,如上是action1
updatelist: 选择行清单主键的字符串,主键是在只读字段中定义了, 如:'key1','key2', 注意已自带单引号了
  • 在功能ds中配置如下,推荐使python数据源
action='$action'
updatelist="$updatelist"
sql=''
if action=='arrive':
    sql=f"update action_log set remark='已到达' where code in ({updatelist})"

if sql:
    ds=ds_sql('local',sql)

新增修改的配置方法 #

  • 不管是新增,更新,审批,导入的数据集配置方法都是一样的,参考 数据更新
  • 新建好数据集后,指定对定的数据集序号就可以开启了
  • 关于审批ds, 你需要先建好审批表,然后定义写入审批即可,以下为建表样列
create table modify_request(
    id INT NOT NULL AUTO_INCREMENT,
    tablename VARCHAR(50) NOT NULL,
    codename VARCHAR(50) NOT NULL,
    code VARCHAR(50) NOT NULL,
    columnname varchar(50),
    oldvalue varchar(100),
    newvalue varchar(255),
    requester varchar(50),
    checker varchar(50),
    flag int default 0,
    request_remark varchar(200),
    check_remark varchar(200),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
) comment '变更清单';
dataset={
    "table":"modify_request",
    "sFields":[],
    "id":"id",
    "fDict":{},
    "autoDict":{"tablename":"表名","codename":"主键名","requester":"$username"}
}
  • 审批有两种方式, 一种是打开单独的窗口选择要修改的字段(开启审批), 还有一种是编辑里不会生效,会流向审批(开启审批编辑)

  • 审批界面也是通过平台CRUD功能生成, 采用两个功能按钮(参考"批量动作设定")

import json
action='$action'
updatelist="$updatelist"
sql=''
if action=='check':
    contents=ds_sql('数据源名',f'select tablename,columnname,newvalue,codename,code from erp_modify where id in ({updatelist})')
    sql=[]
    for content in contents[1:]:
        if content[1]:
            sql.append(f"update {content[0]} set {content[1]}='{content[2]}' where {content[3]}='{content[4]}'")
        else:
            changeList=[]
            changeDict=json.loads(content[2])
            for k,v in changeDict.items():
                changeList.append(f"{k}='{v}'")
            changeList=','.join(changeList)
            if changeList:
                sql.append(f"update {content[0]} set {changeList} where {content[3]}='{content[4]}'")
            
    sql.append(f"update erp_modify set flag=2, checker='$username' where id in ({updatelist})")
    sql=';'.join(sql)
elif action=='reject':
    sql= f"update erp_modify set flag=1, checker='$username' where id in ({updatelist})"
if sql:
    ds=ds_sql('数据源名',sql)