import { getToken } from '@/utils/auth'
import config from '@/config'
const baseUrl = config.baseUrl

//上传文件还是选择相册图片
const getWxFile = (type,fileNum) => {
    return new Promise((resolve, reject) => {
        //文件上传
        if (type === 'file') {
            wx.chooseMessageFile({
                count: fileNum || 1,
                type: 'file',
                success: (res) => {
                    resolve(res)
                },
                fail(error) {
                    console.log(' 上传失败', error);
                    uni.showToast({
                        title: '上传失败',
                        icon: 'none'
                    })
                    reject(error)
                }
            });
        }
        //相册或者摄像头
        if (type === 'img') {
            wx.chooseImage({
                count: 1, // 选择图片数量 
                sizeType: ['original', 'compressed'], // 图片类型 
                sourceType: ['album', 'camera'], // 来源（相册或摄像头）
                success: function (res) {
                    resolve(res)
                },
                fail(error) {
                    console.log(' 上传失败', error);
                    uni.showToast({
                        title: '上传失败',
                        icon: 'none'
                    })
                    reject(error)
                }
            });
        }


    })
}
const getUploadPromise = (file) => {
    return new Promise((resolve, reject) => {
        const path = file.path
        wx.uploadFile({
            url: baseUrl + '/common/upload',  // 服务器接口地址 
            filePath: path,        // 本地文件路径（通过 wx.chooseImage  获取）
            name: 'file',                      // 文件对应的 key（服务器接收字段名）
            formData: {                        // 额外表单数据 
                file: file,
            },
            header: {
                'Authorization': 'Bearer ' + getToken(),   // 自定义请求头
            },
            success(res) {
                const data = JSON.parse(res.data);
                resolve(data);
            },
            fail(error) {
                console.log(' 上传失败', error);
                uni.showToast({
                    title: '上传失败',
                    icon: 'none'
                })
                reject(error)
            }
        });
    })
}
const uploadFile = async (files) => {
    const filesPromise = files.map((item) => {
        return getUploadPromise(item)
    })
    try {
        const results = await Promise.all(filesPromise)
        console.log('results',results);
        
        return results;
    } catch (error) {
        console.log('上传失败-uploadFile', error);
        throw error;
    }
}

/**
 * 
 * type: 文件上传方式
 * file:选择文件
 * img: 相册或者摄像头
 */
export const wxUploadFile = async (type,fileNum) => {
    try {
        console.log('11');
        
        //选择文件
        const files = await getWxFile(type,fileNum);
        console.log('选择文件', files,files.tempFiles);
        //上传服务器
        const u_files = await uploadFile(files.tempFiles);
        console.log('上传服务器', u_files);
        return u_files;
    } catch (error) {
        console.log('上传失败-wxUploadFile', error);
        throw error;

    }

}

/**
 * 拨打电话
 */
export const wxMakePhoneCall = (phoneNumber) => {
    uni.makePhoneCall({
        phoneNumber: phoneNumber
    });
}