场景:

测试链接
明细表中存在父子行时,当选择父行连接器值时,同时给子行进行赋值,需要将翻译内容给子行复制一份,使得子行可以翻译。

没有复制效果:

通过属性联动触发

实现代码(通用):

const { context, extra, batchExtra } = configs;
let tableData;
let _formCode;
const allDictionary = context.getDictionary();
const allDictionaryMap = context.getDictionaryMap();
const run = (item) => {
    const { index, formCode, attrCode } = item;
    console.log('item', item)
    console.log('Dictionary', context.getDictionary())
    console.log('DictionaryMap', context.getDictionaryMap())
    _formCode = formCode
    tableData = tableData || (context?.getFormData?.()?.[formCode] ?? []);
    if (typeof index === 'number') {
        const itemData = tableData[index] || {};
        const optFiled = itemData[attrCode];
        const optOptions = itemData?.__options?.[attrCode] || [];
        const optSelectedOptions = optOptions.filter(item => item.value === optFiled);
        itemData?.children?.forEach?.(item => {
            item[attrCode] = itemData?.[attrCode]
            item.__options[attrCode] = optOptions;
            item.__selectedOptions[attrCode] = optSelectedOptions;
            if (allDictionary?.[`${formCode}:${attrCode}`]?.[itemData?.ID]) {
                allDictionary[`${formCode}:${attrCode}`][item?.ID] = allDictionary?.[`${formCode}:${attrCode}`]?.[itemData?.ID];
            }
            if (allDictionaryMap?.[`${formCode}:${attrCode}`]?.[itemData?.ID]) {
                allDictionaryMap[`${formCode}:${attrCode}`][item?.ID] = allDictionaryMap?.[`${formCode}:${attrCode}`]?.[itemData?.ID];
            }
        });
    }
}
if (batchExtra?.length) {
    batchExtra.forEach(item => {
        run(item)
    })
} else {
    run(extra)
}
context.setDictionary(allDictionary);
context.setDictionaryMap(allDictionaryMap)
context.setFormData({ [_formCode]: [...tableData] });
作者:tz_docs  创建时间:2024-11-08 10:33
最后编辑:tz_docs  更新时间:2025-05-12 18:04