// 字典查询api
import request from "@/utils/request";

export const commonApi = {
    /**
     * 根据字典名称(cbName)和值(value)获取对应的中文显示
     * 参考：notInputOnclick1 - objectpickertype: 2 表示获取要回显的一项
     * @param {string} cbName - 字典名称(codebook)
     * @param {string} value - 需要查找的值
     * @returns {Promise} 返回对应的中文显示
     */
    getDictByCbNameAndValue: (cbName, value) => {
        const data = {
            objectpickerparam: JSON.stringify({
                input: "false",
                codebook: cbName
            }),
            objectpickertype: 2, // 2表示获取要回显的一项
            objectpickervalue: value // 需回显的值
        };

        return request.post('/service?ssServ=loadObjpOpt&objectpickerdropdown1=1',
            data,
            {
                loading: true,
                formData: true,
            }
        );
    },

    /**
     * 根据字典名称(cbName)获取该字典下的所有选项
     * 参考：notInputOnclick2 - objectpickertype: 1 表示获取所有下拉菜单项
     * @param {string} cbName - 字典名称(codebook)
     * @returns {Promise} 返回该字典下的所有选项列表
     */
    getDictOptionsByCbName: (cbName) => {
        const data = {
            objectpickerparam: JSON.stringify({
                input: "false",
                codebook: cbName
            }),
            objectpickertype: 1, // 1表示获取所有下拉菜单项
            objectpickersearchAll: 1
        };

        return request.post('/service?ssServ=loadObjpOpt&objectpickerdropdown1=1',
            data,
            {
                loading: true,
                formData: true,
            }
        );
    },

    /**
     * 通用查询接口 - 支持动态ssServ参数
     * @param {string} ssServ - 服务名称，如 'bjdm_cx'
     * @param {object} params - 查询参数
     * @param {number} params.pageNo - 页码，默认1
     * @param {number} params.rowNumPer - 每页条数，默认10
     * @param {string} params.management - 管理标识，默认'1'
     * @param {string} params.isReady - 就绪标识，默认'1'
     * @param {object} extraParams - 其他额外参数
     * @returns {Promise} 返回查询结果 {objectList, ssPaging, buttonList}
     */
    universalQuery: (ssServ, params = {}, extraParams = {}) => {
        // 默认参数
        const defaultParams = {
            pageNo: 1,
            rowNumPer: 10,
            management: '1',
            isReady: '1'
        };

        // 合并参数
        const queryParams = {
            ...defaultParams,
            ...params,
            ...extraParams
        };

        console.log(`通用查询接口调用: ssServ=${ssServ}`, queryParams);

        return request.post(
            `/service?ssServ=${ssServ}&management=${queryParams.management}&isReady=${queryParams.isReady}`,
            queryParams,
            {
                loading: true,
                formData: true,
            }
        );
    }
}