批量动作设定 #
- 在新增修改界面可以配置指量动作及功能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)