1.业务场景

业务场景: 在子表1中点击按钮,就会在子表2增加这行的数据。子表2点击按钮,就会跳去对应的表单方案(这里也是对应子表2的表),可以从这个表单方案修改数据并保存、返回。此时子表2的数据也更新了。情景如下图:

2. 操作步骤

2.1 生成记录并添加到子表

这边的实现逻辑是获取当前行的数据,调用脚本将数据插入到子表2(数据表)中,然后返回ID,并将这行记录插入到前端子表2的数据中。 后端脚本将子表数据和主键进行了关联。

实现逻辑:


{name:"demo1",action:function(item,index){  
    var self=this;
    var main=self.data;
    //脚本函数,插入数据库
    this.invokeScript("srsj",{"e":item.c,"f":item.d,"refId":this.data.ID_},function(data){
      var id=data.data;
      //将数据插入到子表2
      main.sub__zb2.push({"ID_":id,"e": item.c,"f": item.d});
    });
  }}

2.2 添加脚本调用定义

这个脚本的作用给第二步调用的脚本。

对应的数据库脚本(插入数据到子表2):

import com.redxun.common.utils.SpringUtil;
import com.redxun.db.CommonDao;
import com.redxun.common.tool.IdGenerator;
import com.redxun.common.utils.ContextUtil;
import java.util.Date;
CommonDao dao = SpringUtil.getBean(CommonDao.class);
Map<String,Object> paramMap=new HashMap<String, Object>();
String sql = "insert into w_zb2 (ID_,REF_ID_,F_E,F_F,PARENT_ID_,UPDATE_VERSION_,TENANT_ID_,CREATE_TIME_) values (#{id},#{refId},#{e},#{f},#{parentId},#{updateVersion},#{tenantId},#{createTime})";
//生成新的ID
String id=IdGenerator.getIdStr()
String tenantId=ContextUtil.getCurrentTenantId();
paramMap.put("id", id);
paramMap.put("refId", params.refId);
paramMap.put("e", params.e);
paramMap.put("f",params.f);
paramMap.put("parentId","0");
paramMap.put("updateVersion",1);
paramMap.put("tenantId",tenantId);
paramMap.put("createTime",new Date());
//test 是一个数据源的别名
dao.execute("test",sql, paramMap);
//返回主键到前端
return id;

效果图如下:(点击操作1按钮,子表2会多一条数据)

2.2 编辑子表记录并更新数据

实现逻辑:

点击子表2的数据中得一行,使用表单方案进行编辑,编辑数据提交后,返回后查询当前的数据并更新改行记录。

{
    //这是操作2按钮的点击事件
    name:"demo2",action:function(item,index){
      var self=this;
      //查看http://doc.redxun.cn/docs/jpaas/openForm
     this.openForm("zb2","表单方案",false,item.ID_,{},function(action){
     //数据库脚本
      self.invokeScript("cxsj",{"id":item.ID_},function(data){
        var data=data.data;
        //构造前端的子表2的数据结构
        var newdata={
              "pid_": "0",
              "INST_ID_": null,
              "index_": data.id_,
              "ID_": data.id_,
              "e": data.f_e,
              "f": data.f_f,
              "PARENT_ID_": data.parent_id_,
              "UPDATE_BY_": data.update_by_,
              "TENANT_ID_": data.tenant_id_,
              "CREATE_TIME_": data.create_time_,
              "INST_STATUS_": data.inst_status_,
              "ids": null,
              "UPDATE_TIME_": data.update_time_,
              "CREATE_DEP_ID_": data.create_dep_id_,
              "UPDATE_VERSION_": data.update_version_,
              "CREATE_BY_": data.create_by_,
              "REF_ID_": data.ref_id_
        }
        for(let i=0;i<self.data.sub__zb2.length;i++){
          if(self.data.sub__zb2[i].ID_ === newdata.ID_){
                self.data.sub__zb2.splice(i,1,newdata);
          }
        }
      });
    })
  }
}

对应数据库脚本:

import com.redxun.common.utils.SpringUtil;
import com.redxun.db.CommonDao;
CommonDao dao = SpringUtil.getBean(CommonDao.class);
String sql="select * from w_zb2 where id_= '"+id+"'";
return dao.queryForMap("test", sql);

效果如下图:


文档更新时间: 2021-07-14 14:29   作者:zyg