泛微OA的JS语句之明细表的日期字段防呆

这篇博客主要讨论了使用jQuery和WfForm库进行时间日期格式的验证。在保存或提交表单时,通过正则表达式检查每行明细的时间日期字段,确保其符合特定格式。如果格式不正确,会提示用户进行修正。博客内容涉及前端表单验证和数据处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<script>

    jQuery().ready(function () {

        checkData();

        WfForm.registerCheckEvent(WfForm.OPER_SAVE+","+WfForm.OPER_SUBMIT,function(callback){

            //... 执行自定义逻辑

            var res = checkData();

            if (res) {

                callback();

            }else {

                var flag = confirm("明细时间日期数据存在格式问题,确认保存或提交吗?");

                if (flag) {

                    callback();

                }else {}

            }

        });

        function checkData() {

            var config = {

                detailForm: "detail_1",

                field1: "field9104",

                field2: "field9105"

            };

            var totalRow = WfForm.getDetailRowCount(config.detailForm);

            if (totalRow > 0) {

                //var regx = /^[1-9]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[1-2][0-9]|3[0-1])\s+([0-9]|0[0-9]|([1]?[0-9]?)|([2]?[0-3]?)):[0-5]\d$/;

                var regx = /^[1-9]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[1-2][0-9]|3[0-1])\s+((([0-9]|0[0-9]|([1]?[0-9]?)|([2]?[0-3]?))(:[0-5]{1,2}){1,2})|(24:00:00)|(24:00))/ ;

                for (let i = 0; i < totalRow; i++) {

                    var time1 = WfForm.getFieldValue(config.field1 + "_" + i);

                    var time2 = WfForm.getFieldValue(config.field2 + "_" + i);

                    if ((time1 != null && time1 !== "")) {

                        let res1 = regx.test(time1);

                        if (res1) {

                        } else {

                            alert("第" + (i + 1) + "行的时间日期字段格式存在问题,请检查");

                            return false;

                        }

                    }

                    if ((time2 != null && time2 !== "")) {

                        let res2 = regx.test(time2);

                        if (res2) {

                        } else {

                            alert("第" + (i + 1) + "行的时间日期字段格式存在问题,请检查");

                            return false;

                        }

                    }

                }

            }

            return true;

  

<think>嗯,用户的问题是关于在OA中如何通过主表更新明细表字段的方法或配置。首先,我需要回忆一下之前看到的引用内容,特别是引用1、2、3中的信息。引用1提到了动态列显示的方法,比如设置class属性和通过下拉框控制。引用2和3讨论了主表和明细表共享expid字段,通过序列获取并赋值。这可能涉及到主表和明细表之间的关联机制。 用户可能需要具体的步骤来实现主表更新明细表字段。根据引用1,动态显示明细列需要设置class属性,并利用下拉框的事件触发。这可能涉及到前端JavaScript的配置,比如下拉框的onchange事件调用函数来隐藏或显示对应的明细列。比如,当主表下拉框的值改变时,触发JavaScript函数,根据选择的值动态调整明细表的显示字段。 另外,引用2和3提到主表和明细表使用相同的expid字段来保持数据一致性。这可能需要在业务层中先生成expid,然后同时赋值给主表和明细表。例如,在Java业务层中,先通过数据库序列获取expid,然后分别设置到主表和明细表对象中,确保它们的关联正确。 用户的问题可能涉及两个方面:一是动态显示或隐藏明细表字段,二是主表数据更新时同步更新明细表字段。针对第一个方面,可能需要在前端配置动态列的显示逻辑,通过事件触发和DOM操作实现。针对第二个方面,可能需要在后端业务逻辑中处理字段的赋值和同步,确保数据一致性。 此外,用户可能对具体的配置步骤或代码示例感兴趣。比如,如何在前端页面中设置class属性,如何编写JavaScript函数,以及在后端如何获取并赋值expid。需要将这些步骤详细说明,并参考引用中的案例进行解释。 最后,用户可能还想了解相关的注意事项,比如字段命名规范、事件触发的时机、数据同步的机制等。需要确保步骤清晰,并提醒用户在实际操作中的常见问题,比如确保expid的正确生成和赋值顺序,避免数据不一致的情况。</think>在OA中通过主表更新明细表字段的配置方法可分为以下步骤,结合动态列控制和字段赋值逻辑实现: ### 一、动态列显示配置 1. **设置明细列class属性** 在需要动态控制的明细列字段(如$bzxx$、$num$)上添加统一的class属性(例如$ptoc$),作为前端识别的标识。该配置在表单设计器中完成[^1]。 2. **主表下拉框事件绑定** 在主表下拉框控件中添加`onchange`事件,调用JavaScript函数动态控制明细列显示: ```javascript function toggleColumns(selectObj){ var val = selectObj.value; // 隐藏/显示class为ptoc的明细列 $('.ptoc').toggle(val === 'show_all'); } ``` ### 二、主从表字段同步 1. **序列字段赋值逻辑** 在业务层处理主从表关联字段$expid$时,需先通过数据库序列获取值: ```java // 示例Java代码 String expid = sequenceDAO.getNextValue("SEQ_EXPENSE"); mainForm.setExpid(expid); // 主表赋值 detailList.forEach(detail -> detail.setExpid(expid)); // 明细表赋值 ``` 确保主表和所有明细记录共享相同的$expid$值[^2][^3]。 2. **字段级联更新配置** 通过流程引擎的字段联动规则,设置主表字段与明细字段的映射关系: ```xml <!-- 示例联动规则配置 --> <field-mapping> <source>mainForm.amount</source> <target>detailForm.total_amount</target> <trigger>ON_MODIFY</trigger> </field-mapping> ``` ### 三、验证与调试 1. 使用开发者工具的DOM检查器验证动态列class是否正确应用 2. 通过SQL日志监控$expid$字段的生成和赋值过程 3. 在测试流程中验证字段联动规则的触发时机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jagive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值