"use strict";
import { khcAlert } from '../../../component/alert/khcAlert.js'
import { fullMap } from '../../../fullMap.js';
import {config} from "../../../config.js";
import { util } from "../../../util/util.js";
import {httpUtil} from "../../../util/httpUtil.js";
import {khcToastr} from "../../../component/alert/khcToastr.js";
import {khcModalSlide} from "../../../component/alert/khcModalSlide.js";
import {form} from "../../../component/page/form/form.js";
import {pageInfoMap} from "../../../pageInfoMap.js";
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 jsonImport(){
    let jsonConfig=this;
    let queryViewComponent = fullMap.getObj(jsonConfig.objID);
    let params = queryViewComponent.code;
    let eleMap = queryViewComponent.getFormMap();
    params.importJsonStr=eleMap.get('import_json_str').getValue();
    let pageParamsObj=pageInfoMap.getObj(queryViewComponent.code.queryCode);//页面传参对象（仅在子表会产生）
    if(pageParamsObj!=null){
        params.parentUUID=pageParamsObj.page_parent_uuid;
    }
    let obj={url:config.getConfigJson().importJsonData,params:params}
    return httpUtil.post(obj, (response)=>{
        Swal.fire('导入成功', '','success' )
        queryViewComponent.runSaveAfter()
    })
}
functionMap.set('jsonImport', jsonImport);// 将函数添加到 Map 中

function jsonUpdate(){
    let jsonConfig=this;
    let queryViewComponent = fullMap.getObj(jsonConfig.objID);
    let params = queryViewComponent.code;
    let eleMap = queryViewComponent.getFormMap();
    if(params['content']==undefined){
        khcAlert.showWarningMessage('更新失败，content 为 undefined');
        return ;
    }
    if(params['content']['id']==undefined){
        khcAlert.showWarningMessage('更新失败，content[\'id\'] 为 undefined');
        return ;
    }
    let updateJsonStr=eleMap.get('update_json_str').getValue();
    let parsedObj = null;
    try {
        // 尝试解析 JSON 字符串
        parsedObj = JSON.parse(updateJsonStr);

        // 检查解析后的对象是否为非数组对象
        if (typeof parsedObj === 'object' && !Array.isArray(parsedObj)) {
            // 有效的对象
        } else {
            khcAlert.showWarningMessage('输入数据必须是一个对象，不能是数组！');
            return ;
        }
    } catch (e) {
        khcAlert.showWarningMessage('输入的数据格式不正确！');
        return ;
    }
    parsedObj['id']=params['content']['id']
    params.updateJsonStr=JSON.stringify(parsedObj);
    console.log(params.updateJsonStr)
    let pageParamsObj=pageInfoMap.getObj(queryViewComponent.code.queryCode);//页面传参对象（仅在子表会产生）
    if(pageParamsObj!=null){
        params.parentUUID=pageParamsObj.page_parent_uuid;
    }
    let obj={url:config.getConfigJson().updateJsonData,params:params}
    return httpUtil.post(obj, (response)=>{
        Swal.fire('导入成功', '','success' )
        queryViewComponent.runSaveAfter()
    })
}
functionMap.set('jsonUpdate', jsonUpdate);// 将函数添加到 Map 中