// 获取当前用户关联职员基础数据---后台公式
export default {
    execute:async function(){
        console.log("进入“根据code获取某个基础数据指定字段值”前端公式");
        if(arguments&&arguments[0]&&arguments[0][0]&&arguments[0][1]&&arguments[1]){
             
            let
            tablename = arguments[0][0].StaticValue//基础数据表名
            ,codeField = arguments[0][1] // code取值来源
            ,valueField = arguments[0][2].StaticValue//基础数据指定字段名
            ,context = arguments[1]
            ,mdcode = '';//基础数据code
            if (codeField instanceof StaticDataNode) {
                mdcode = codeField.StaticValue
            } else if (codeField instanceof BillDataNode) {
                let table_Obj = context.getTableType(codeField.FieldTableCode)
                if(table_Obj && table_Obj.type == "master") {//如果是主表字段
                     //获取字段对应值
                    let fieldValue =context.getMasterData().getValue(codeField.FieldCode);
                    mdcode = fieldValue && fieldValue.code ? fieldValue.code : fieldValue
                }
            }
            let mdObject = await this.getMDObject(tablename,mdcode);
            return mdObject[valueField] ? mdObject[valueField] : mdObject;
            
        }else{
            GAMS.Common.messagePrompt('GetMdFieldValueByCode公式：参数配置有误');
            return '';
        }
    },
    getResultType:function(){
        return FMR.ConstDataTypes.General;
    },
    // 获取基础数据
    getMDObject(name, code) {
        let param = {
            "limit": 1,
            "offset": 0,
            "pagination": true,
            "tableName": name,
            "searchKey": code,//按code和name过滤
            "queryDataStructure": "ALL"//返回的接口类型
        }
        return new Promise((resolve, reject) => {
            let promise = GMS.$http.post("/baseData/data/list", param);
            promise
                .then((data) => {
                    if (data.data && data.data.rows && data.data.rows.length > 0) {
                        resolve(data.data.rows[0]);
                    } else {
                        resolve([]);
                    }
                })
                .catch((error) => {
                    resolve([]);
                });
        });
    }
}