「云之家个性化开发」从【明细】中筛选[符合条件记录],并自动填充至【主表单】其他控件中

213 阅读1分钟

场景

当在【教育经历明细】中录入【教育经历】信息时,自动筛选【是否最高学历】为【是】的学历的【最高学历】、【最高学历形式】、【最高学历院校名称】、【最高学历院校专业】,并填入主表单对应控件中,简化填写步骤

模板设计如下

最高学历:单选框 对应【教育经历明细】中的【学历】最高学历形式:单选框  对应【教育经历明细】中的【学历形式】最高学历院校名称:单行文本框  对应【教育经历明细】中的【院校】最高学历院校专业:单行文本框  对应【教育经历明细】中的【专业】
图片

    <script type="text/javascript">
    cf.ready(function(){
        var formInfo = {}
        cf.flow.getFormInfo().then(function (res) {
            formInfo = res
            setUp()
        })
        // 值改变时判断应该给文事会关联控件设置什么状态
        function assignWidgets (highOne) {
            // 最高学历
            cf.form.setFieldValue('Ra_4', findWidgetOptionLabel("Ra_18", highOne.Ra_18"Ra_4"))
            // 最高学历形式
            cf.form.setFieldValue('Ra_5', findWidgetOptionLabel("Ra_16", highOne.Ra_16"Ra_5"))
            // 最高学历院校名称
            cf.form.setFieldValue('Te_19', highOne.Te_20)
            // 最高学历院校专业
            cf.form.setFieldValue('Te_67', highOne.Te_21)
        }

        function findWidgetOptionLabel (widgetCodeId, key, targetCodeId) {
            var widgetsMap = formInfo.widgetsMap
            var options = widgetsMap[widgetCodeId].options || []
            var yesOption = cf.find(options, function (o) {
                return o.key === key
            })
            return yesOption ? 
            findMatchWidgetOptionValue(targetCodeId, yesOption.value) : ""
        }

        function findMatchWidgetOptionValue (widgetCodeId, value) {
            var widgetsMap = formInfo.widgetsMap
            var options = widgetsMap[widgetCodeId].options || []
            var yesOption = cf.find(options, function (o) {
                return o.value === value
            })
            return yesOption ? yesOption.key""
        }
        
        function setUp () {
            var widgetsMap = formInfo.widgetsMap
            // 监听教育经历改变
            cf.form.subscribeFieldValueChange("Dd_0", (eventValue) => {
                var widgetValue = eventValue.widgetValue || []
                // 找到最高学历
                var highOne = cf.find(widgetValue, function (row) {
                    var options = widgetsMap.Ra_15.options || []
                    var yesOption = cf.find(options, function (o) {
                        return o.value === "是"
                    })
                    // 判断是否最高学历
                    return row.Ra_15 && row.Ra_15 === yesOption.key
                })
                if (highOne) {
                    assignWidgets(highOne)
                }
            })
        }
      })
    </script>

欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!

扫码关注我.png