1.通过浏览器找到表单中单元格对应的HTML标签,一般为<div>下的<td>

2.设置<style>样式

PS:这里要注意的是在为单元格补值的时候字段必须是只读或者不可编辑的状态,否则会出现异常

<style>
	/*添加背景色**/
	.yellowColor div {
        background: yellow !important;
    }
    /*为各种类型字段的空单元格补值而不存入数据库**/
    .refMain div::before {
        font-weight: bold;
        content: "N/A";
    }
</style>

3.写一个函数调用对应的style(本案例通过判断字段值是否为空然后给对应的单元格添加或移除样式,具体情况依据业务需求来定)

    function funStyle(value, field, params) {
        // debugger
        //PS:通过对应的class找到最近的标签td
        var dom = jQuery(`.${field}_swapDiv`).closest("td");
        if (value != '') {//(value === "0") {
            dom.addClass("yellowColor");
            dom.removeClass("refMain");
        } else {
            dom.removeClass("yellowColor");
            dom.addClass("refMain");
        }
    }

4.通过泛微OA的前端API获取表单中的单元格fieldid以及值,然后调用3中的函数


<script>
	jQuery(document).ready(function () {
		//主表调用
 		 // 实际验收单日期
        var sjysdrq = WfForm.convertFieldNameToId("sjysdrq", "main", true);
        funMain(WfForm.getFieldValue(sjysdrq), sjysdrq)
        WfForm.bindFieldChangeEvent(sjysdrq, function (obj, id, value) {
            funStyle(value, sjysdrq)
        });
        //明细表调用
        // 质保款变更
        WfForm.bindDetailFieldChangeEvent(WfForm.convertFieldNameToId("zbkbg", "detail_6", true), function (id, rowIndex, value) {
            funStyle(value, WfForm.convertFieldNameToId("zbkbg", "detail_6", true) + "_" + rowIndex);
        });
        
        
  });
  //同时明细表存在特殊性用户可以随意添加行所有要在添加时默认为新添加的行做标记且初始化
  WfForm.registerAction(WfForm.ACTION_ADDROW + "6", function (rowIndex) {
        debugger
        rowArrFun6()
    });//下标从1开始,明细1添加行触发事件,注册函数入参为新添加行下标
    // 杭可科技-海外逾期收款及验收变更流程【明细表6】
    function rowArrFun6() {
        debugger
        var rowArr = WfForm.getDetailAllRowIndexStr("detail_6").split(",");
        for (var i = 0; i < rowArr.length; i++) {
            var rowIndex = rowArr[i];
            if (rowIndex !== "") {
                // 质保款变更
                var zbkbg6 = WfForm.convertFieldNameToId("zbkbg", "detail_6", true) + "_" + rowIndex;
                funStyle(WfForm.getFieldValue(zbkbg6), zbkbg6);
            }
        }
    }
</script>

最终的效果就不在这里展示了,如果需要可以通过理解去搬运调试优化,查看最终的效果

最后附上一段日期类型转时间戳加减然后转日期的代码,然后拜拜/~~~/

function bgysChange() {
        debugger
        var yjfhrq = WfForm.getFieldValue(WfForm.convertFieldNameToId("yjfhrq", "main", true));//预计发货日期
        var bgfh = WfForm.getFieldValue(WfForm.convertFieldNameToId("bgfh", "main", true));//变更发货
        var yjysrq = WfForm.getFieldValue(WfForm.convertFieldNameToId("yjysrq", "main", true));//预计验收日期
        var yjfhrqDate = Date.parse(yjfhrq)//预计发货日期转时间戳
        var bgfhDate = Date.parse(bgfh)//变更发货日期转时间戳
        var yjysrqDate = Date.parse(yjysrq)//预计验收日期转时间戳
        var dateDiff = bgfhDate - yjfhrqDate//变更发货时间戳-预计发货时间戳
        var dateAdd = yjysrqDate + dateDiff//预计验收时间戳-(变更发货时间戳-预计发货时间戳)
        var newDate = new Date(dateAdd);//时间戳初始化为UTC时间
        var year = newDate.getFullYear();    //获取完整的年份(4位,1970-????)
        var month = newDate.getMonth() + 1;       //获取当前月份(0-11,0代表1月)
        var date = newDate.getDate();        //获取当前日(1-31)
        var dateAll = newDate.toLocaleDateString('zh').replaceAll('/', '-')//返回在 zh-CN 区域的时间并把“/”替换为“-”
        //赋值给主表和子表字段
        /**WfForm.changeSingleField(WfForm.convertFieldNameToId("bgys", "main", true), { value: dateAll }, { viewAttr: "1" });
        var rowArr = WfForm.getDetailAllRowIndexStr("detail_3").split(",");
        for (var i = 0; i < rowArr.length; i++) {
            var rowIndex = rowArr[i];
            if (rowIndex !== "") {
                WfForm.changeSingleField(WfForm.convertFieldNameToId("yjxysrq", "detail_3", true) + "_" + rowIndex, { value: dateAll }, { viewAttr: "1" });
            }
        }*/

        var rowArr = WfForm.getDetailAllRowIndexStr("detail_2").split(",");
        for (var i = 0; i < rowArr.length; i++) {
            var rowIndex = rowArr[i];
            if (rowIndex !== "") {
            		var nian = '年'
                    //var nian = WfForm.getSelectShowName(WfForm.convertFieldNameToId("fksj", "detail_2", true) + "_" + rowIndex).substr(-1);//获取最后一位是“年”还是“天”
                   	var fksj = '天'
                    //var fksj = WfForm.getSelectShowName(WfForm.convertFieldNameToId("fksj", "detail_2", true) + "_" + rowIndex).replace(/[^\d]/g, " ");//获取字符串中的数字
                    var newDate_yjxskrq = "";
                    if (nian == "年") {
                    	//(预计验收时间戳-(变更发货时间戳-预计发货时间戳)) *付款时间“年”的时间戳
                        newDate_yjxskrq = dateAdd + fksj * 365 * 24 * 60 * 60 * 1000
                        console.log(newDate_yjxskrq);
                    } else {
                    //(预计验收时间戳-(变更发货时间戳-预计发货时间戳)) *付款时间“天”的时间戳
                        newDate_yjxskrq = dateAdd + fksj * 24 * 60 * 60 * 1000
                        console.log(newDate_yjxskrq);
                    var newDate2 = new Date(newDate_yjxskrq);
                    var yjxskrq = newDate2.toLocaleDateString('zh').replaceAll('/', '-')
                    //最后给对应的字段赋值
                    //WfForm.changeSingleField(WfForm.convertFieldNameToId("yjxskrq", "detail_2", true) + "_" + rowIndex, { value: yjxskrq }, { viewAttr: "1" });

                }
            }
        }
    }

个人感觉各大博客论坛中关于泛微OA代码块中个性化开发是比较少的,希望可以帮助到有需要的人

文中有涉及到泛微OA的前端API方法的引用!!!

晚安各位,记录下来,万一我还用得到呢~~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐