// 获取当前用户关联职员基础数据---后台公式 export default { execute: async function () { console.log("进入给设置默认基础数据值前端公式"); // 初始化汇率 let result = '', // 获取指定字段值 propName = arguments[0][2].StaticValue if (arguments && arguments[0] && arguments[0][0] && arguments[0][1] && arguments[1]) { let bill = arguments[1], sourceValueField = arguments[0][0], isValueFromSub = false if (sourceValueField instanceof FunctionNode) { let funcResult = sourceValueField.getResult() if(funcResult instanceof AbstractData) { await funcResult.Value.then(res => { result = res }) } } else if (sourceValueField instanceof BillDataNode) { let tableObj = bill.getTableType(sourceValueField.FieldTableCode); if (tableObj.type == "sub") { isValueFromSub = true } else { result = sourceValueField.dynamicNodeFactory.methodJson.GetFieldData('', sourceValueField.FieldTableCode + "." + sourceValueField.FieldCode, '') } } else if (sourceValueField instanceof StaticDataNode) { result = sourceValueField.StaticValue } // 获取目标字段 let targetField = arguments[0][1], targetFieldLink = targetField.FieldTableCode + "." + targetField.FieldCode, // 目标字段原始值 oldVal = '', // 是否覆盖:0不覆盖;1覆盖 recoverFlag = arguments[0][3].StaticValue // 当是单据字段时进行赋值 if (targetField instanceof BillDataNode) { let tableObj = bill.getTableType(targetField.FieldTableCode); if (tableObj.type == "master") { let res = propName ? result[propName] : result oldVal = targetField.dynamicNodeFactory.methodJson.GetFieldData('',targetFieldLink, '') if (oldVal instanceof Object && res instanceof Object && "id" in oldVal && "id" in res && oldVal.id === res.id ) { // short circuit to avoid loop call }else{ if (recoverFlag === 1 || !oldVal) { targetField.dynamicNodeFactory.methodJson.SetFieldData('', targetFieldLink, res, '') } } } else { let _data = bill.getSubData(tableObj.title); if(_data instanceof Array){ for (const iterator of _data) { oldVal = iterator.getValue(targetField.FieldCode) if (recoverFlag == 1 || !oldVal) { if (isValueFromSub) { result = iterator.getValue(sourceValueField.FieldCode) } iterator.setValue(targetField.FieldCode, result && propName ? result[propName] : result) } } } // 刷新表格 bill.refreshSubDataRow(tableObj.title) } } } return result && propName ? result[propName] : result }, getResultType: function () { return FMR.ConstDataTypes.General; } }