首页 > 其他分享 >E9-根据主表选择框值判断改变主表、明细表字段的属性

E9-根据主表选择框值判断改变主表、明细表字段的属性

时间:2024-07-16 09:55:30浏览次数:9  
标签:changeFieldAttr field17579 tr 框值 明细表 WfForm var field17578 主表

一、流程表单开发过程中,标准的属性联动功能无法满足特定情况下的字段属性联动功能时,使用了以下JavaScript代码进行控制。

二、代码实现了根据表单字段的值动态显示或隐藏特定字段,同时修改字段的属性。这在需要根据用户输入动态调整表单显示

三、代码如下(供参考)

// 将字段名称转换为字段ID
var sfcsfy = WfForm.convertFieldNameToId("sfcsfy");
var hdhylx = WfForm.convertFieldNameToId("hdhylx");
var yjhcprs = WfForm.convertFieldNameToId("yjhcprs", "detail_2");
var yjnbrs = WfForm.convertFieldNameToId("yjnbrs", "detail_2");
var hyzt = WfForm.convertFieldNameToId("hyzt", "detail_2");
var hycd = WfForm.convertFieldNameToId("hycd", "detail_2");
var dyhybh = WfForm.convertFieldNameToId("dyhybh", "detail_3");

// 在文档加载时执行
jQuery(document).ready(function() {
    // 绑定字段变更事件
    WfForm.bindFieldChangeEvent(sfcsfy, function(obj, id, value) {
        toggleFieldVisibility(value);
    });
    WfForm.bindFieldChangeEvent(hdhylx, function(obj, id, value) {
        toggleDyhybhVisibility(value);
    });
    WfForm.registerAction(WfForm.ACTION_ADDROW + "2", function(index) {
        var sfcsfyValue = WfForm.getFieldValue(sfcsfy);
        toggleFieldVisibility(sfcsfyValue);
    });
    // 初始化字段可见性
    var initialSfcsfyValue = WfForm.getFieldValue(sfcsfy);
    toggleFieldVisibility(initialSfcsfyValue);

    var initialHdhylxValue = WfForm.getFieldValue(hdhylx);
    toggleDyhybhVisibility(initialHdhylxValue);
});

// 根据值切换字段可见性
function toggleFieldVisibility(value) {
    var detailRows = WfForm.getDetailRowCount("detail_2");
    var fieldNames = [yjhcprs, yjnbrs, hyzt, hycd];
    if (value == "1") {
        fieldNames.forEach(function(field) {
            changeAttr(field, 2, detailRows);
        });
        $(".ptoc").hide();
    } else {
        fieldNames.forEach(function(field) {
            changeAttr(field, 3, detailRows);
        });
        $(".ptoc").show();
    }
}

// 根据值切换字段可见性
function toggleDyhybhVisibility(value) {
    var detailRows = WfForm.getDetailRowCount("detail_3");
    if (value == "0") {
        changeAttr(dyhybh, 2, detailRows);
        $(".ptoc").show();
    } else {
        changeAttr(dyhybh, 3, detailRows);
        $(".ptoc").hide();
    }
}

// 改变字段属性
function changeAttr(id, viewAttr, row) {
    if (row != 0) {
        for (let i = 0; i < row; i++) {
            WfForm.changeFieldAttr(id + "_" + i, viewAttr);
            WfForm.changeFieldAttr(id + "_" + i, 4, viewAttr === 3);
        }
    } else {
        WfForm.changeFieldAttr(id, viewAttr);
        WfForm.changeFieldAttr(id, 4, viewAttr === 3);
    }
}

// 在文档加载时执行
jQuery(document).ready(function() {
    WfForm.bindFieldChangeEvent("field9657,field11015,field17547", function(obj, id, value) {
        var field9657 = WfForm.getFieldValue("field9657");
        var field11015 = WfForm.getFieldValue("field11015");
        var field17547 = WfForm.getFieldValue("field17547");
        var field17693 = WfForm.getFieldValue("field17693");
        if ((field9657 == 0) && field11015 == 0) {
            WfForm.changeFieldAttr("field17578", 1); 
            $('#field17578').closest('tr').hide();   
        } else if ((field9657 == 0) && field11015 == 1) {
            WfForm.changeFieldAttr("field17579", 1); 
            $('#field17579').closest('tr').hide();   
        } else if ([1, 2, 3, 4, 5].includes(field9657)) {
            WfForm.changeFieldAttr("field17578", 1); 
            $('#field17578').closest('tr').hide();   
            WfForm.changeFieldAttr("field17579", 1); 
            $('#field17579').closest('tr').hide();   
        } else {
            WfForm.changeFieldAttr("field17578", 3); 
            $('#field17578').closest('tr').show();  
            WfForm.changeFieldAttr("field17579", 3); 
            $('#field17579').closest('tr').show();   
        }
    });
    function initializeFieldVisibility() {
        var field9657 = WfForm.getFieldValue("field9657");
        var field11015 = WfForm.getFieldValue("field11015");
        var field17547 = WfForm.getFieldValue("field17547");
        var field17693 = WfForm.getFieldValue("field17693");

        if ((field9657 == 0) && field11015 == 0) {
            WfForm.changeFieldAttr("field17578", 1); 
            $('#field17578').closest('tr').hide();   
        } else if ((field9657 == 0) && field11015 == 1) {
            WfForm.changeFieldAttr("field17579", 1); 
            $('#field17579').closest('tr').hide();
        } else if ([1, 2, 3, 4, 5].includes(field9657)) {
            WfForm.changeFieldAttr("field17578", 1);
            $('#field17578').closest('tr').hide();
            WfForm.changeFieldAttr("field17579", 1);
            $('#field17579').closest('tr').hide();
        } else {
            WfForm.changeFieldAttr("field17578", 3);
            $('#field17578').closest('tr').show();
            WfForm.changeFieldAttr("field17579", 3);
            $('#field17579').closest('tr').show();
        }
    }
    initializeFieldVisibility();
});

标签:changeFieldAttr,field17579,tr,框值,明细表,WfForm,var,field17578,主表
From: https://blog.csdn.net/weixin_55435577/article/details/140455152

相关文章

  • 生产订单执行明细表二开增加字段
    业务背景业务需求方案设计详细设计和实现  一、业务背景标准产品目前的逻辑是入库数量/计划数量=达成率,需要加入计划完成时间和数据/实际完成时间和数量=达成率。 二、业务需求过滤匡提供输入时间段,作为入库单的时间限制,算出入库数,实际达成率=入库数/计划数*100%。......
  • 5.FineReport制作明细表
    1.首先连接自带的sqlite数据库,具体方法点击下面的链接FineReport连接自带的sqlite数据库2.文件–新建普通报表3.新建数据库查询4.查询自带的销量表5.按shift键选中左下角的地区到销量字段,拖动到右边的格子中,选从左往右6.添加标题,并调整对齐,边框线,背景色和字体颜色......
  • php+sql后台实现从主表迁出至副表(数据超万条)
    上万条甚至上百万数据进行迁出做备份或者进行不妨碍原系统数据的操作,现在很多企业都会用到,目前就需要将上百万条数据进行迁出到副表保存并操作,直接再后台写一个按钮进行操作,既方便操作也不会很慢。毕竟是客户需要,不能每次迁出都要客户去数据库操作,操作的不好那数据危险度挺高的。......
  • 查询同时附带查主表的第二列
    --declare@tablenvarchar(50)='子表';--declare@sizeint=10;--declare@indexint=3;--declare@ordernvarchar(50)='Id';ifnot@size>0beginset@size=11;endifnot@index>0beginset@index=1;enddecl......
  • [泛微OA]明细表1的字段赋值给明细表2的字段js实现方法
    文章目录概要整体架构流程技术名词解释技术细节小结概要明细表1的编码字段值自动赋值给明细表2的编码字段.整体操作触发过程保存或者提交后自动触发.技术名词解释添加明细时默认复制最后一行记录setDetailAddUseCopy:function(detailMark,needCopy)参数参数类......
  • 外联结(OUTER JOIN)的主表
    1.什么是联结——JOIN简单来说,就是将其他表中的列添加到特定的表中,即进行“添加列”的运算,本质是对主表字段的扩展,主表集合不变,一对多的情况下,主表列会增加。联结图示该操作通常用于无法从一张表中获取期望数据(列)的情况。在实际工作中,期望得到的数据往往会分散在不同的表之......
  • 以传入的companyIds作为左连接主表
    <selectid="getUserDatas"resultType="com.shsajt.common.dto.UserDataWorkDTO">SELECTtemp.user_id,ifnull(tempwap.count,0)ascountfrom( <iftest="userIds!=nulla......
  • EKP qhky 流程启接口addReview 支持明细表地址本传递多值
     问题描述: 流程启动接口(addReview),给第一行多人员地址本字段 传多个部门,后台代码解析不成功     /** * *20230703定制处理附件列表问题sjx * ***/ for(inti=0;i<attForms.size();i++){ S......
  • mysql关于主表和从表
    typeGoodsstruct{BaseModelCategoryIDint32`gorm:"type:int;notnull"`CategoryCategoryBrandsIDint32`gorm:"type:int;notnull"`BrandsBrands} Goods是从表,从表中addforeignkey关系,reference主表altertab......
  • Odoo—货运管理—主表获取明细表数据计算结果
    在开发货运管理模块的时候,用到了两张表:主表[waybill]和明细表[waybill.detail],主表存放运单主体信息,明细表存放运单货物信息,如下图所示。上图中红色方框标记的是明细表中行内的运费计算结果;蓝色圆圈标记的是主表中的总运费,是明细表中三条货品数据的运费总和。在odoo中是如何实现......