"use strict";
import { util } from '../../../util/util.js'
import { fullMap } from '../../../fullMap.js';
import { khcAlert } from '../../../component/alert/khcAlert.js'
import {config} from "../../../config.js";
import {httpUtil} from "../../../util/httpUtil.js";
import {tree} from "../../../component/page/query/tree.js";
let formComponent=null;
let functionMap=new Map();// 使用 Map 来存储多个函数。每个函数都通过 set 方法添加到 Map 中，键是函数名，值是对应的函数。
export function main(jsonConfig) {
    try {
        functionMap.get(jsonConfig.button_method).apply(jsonConfig);
    } catch (error) {
        khcAlert.showSystemError(error.message);
        console.log(error);
    }
}

function fCreate(){
    let jsonConfig=this;
    jsonConfig.formType='create'
    init.call(jsonConfig)
}
functionMap.set('fCreate', fCreate);// 将函数添加到 Map 中

function fEdit(){
    let jsonConfig=this;
    jsonConfig.formType='edit'
    init.call(jsonConfig)
}
functionMap.set('fEdit', fEdit);// 将函数添加到 Map 中

function fUserCreate(){
    let jsonConfig=this;
    jsonConfig.formType='create'
    init.call(jsonConfig)
}
functionMap.set('fUserCreate', fUserCreate);// 将函数添加到 Map 中

function fUserEdit(){
    let jsonConfig=this;
    jsonConfig.formType='edit'
    init.call(jsonConfig)
}
functionMap.set('fUserEdit', fUserEdit);// 将函数添加到 Map 中

function fDetail() {
    let jsonConfig=this;
    jsonConfig.formType='detail'
    init.call(jsonConfig)
}
functionMap.set('fDetail', fDetail);// 将函数添加到 Map 中

function init(){
    let jsonConfig=this;
    let objID = jsonConfig.objID;
    let formType = jsonConfig.formType
    formComponent = fullMap.getObj(objID);
    let eleMap=formComponent.getFormMap();
    if((formType==undefined||formType=='undefined')||formType=='create'){
    }else if(formType=='edit'){
        initForm(eleMap)//初始化表单的一些限制,或对更改内容添加标注（添加背景颜色代表该字段被更改过）
        let roleMenuTreeObj=eleMap.get('role_menu_tree');
        let roleId=eleMap.get('role_id').getValue();
        let params= {dsCode: 'ds_system_menu'};
        params.role_id=roleId;
        params.methodName='getMenuByRoleId';
        let obj={url:config.getConfigJson().myActionUrl,params:params}
        httpUtil.post(obj, (response)=>{
            console.log(response.data.data)
            let menuList=response.data.data.menuList;
            let newMenuList=[];
            let pushFunc=(menuList)=>{
                for (let i = 0; i < menuList.length; i++) {
                    let menu={level:menuList[i]['menu_level'],name:menuList[i]['menu_name'],pId:menuList[i]['menu_parent_id'],id:menuList[i]['menu_id']}
                    newMenuList.push(menu);
                    if(menuList[i]['menu_child'].length>0){
                        pushFunc(menuList[i]['menu_child'])
                    }
                }
            }
            pushFunc(menuList)
            let treeData=util.clone(roleMenuTreeObj.data);
            let parentDomID=roleMenuTreeObj.eleID+'_show_tree_div'
            treeData['parentDomID']=parentDomID
            document.getElementById(parentDomID).setAttribute('class','ztree');
            roleMenuTreeObj.treeView = new tree(treeData);
            roleMenuTreeObj.treeView.openLevel(4)
            console.log(newMenuList)
            roleMenuTreeObj.treeView.renderTreeHtml(newMenuList);
        })
    }
}
functionMap.set('init', init);// 将函数添加到 Map 中

function initForm(eleMap){
}