import {
	getDicts
} from '@/api/dict.js'

/**
 * 显示消息提示框
 * @param content 提示的标题
 */
export function toast(content) {
	uni.showToast({
		icon: 'none',
		title: content,
    mask: true,
	})
}

/**
 * 显示模态弹窗
 * @param content 提示的标题
 */
export function showConfirm(content, showCancel) {
	if (!showCancel) showCancel = false
	return new Promise((resolve, reject) => {
		uni.showModal({
			title: '提示',
			content: content,
			cancelText: '取消',
			showCancel: showCancel,
			confirmText: '确定',
			success: function(res) {
				resolve(res)
			}
		})
	})
}

/**
 * 参数处理
 * @param params 参数
 */
export function tansParams(params) {
	let result = ''
	for (const propName of Object.keys(params)) {
		const value = params[propName]
		var part = encodeURIComponent(propName) + "="
		if (value !== null && value !== "" && typeof(value) !== "undefined") {
			if (typeof value === 'object') {
				for (const key of Object.keys(value)) {
					if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') {
						let params = propName + '[' + key + ']'
						var subPart = encodeURIComponent(params) + "="
						result += subPart + encodeURIComponent(value[key]) + "&"
					}
				}
			} else {
				result += part + encodeURIComponent(value) + "&"
			}
		}
	}
	return result
}

// 返回上一页
export function back() {
	uni.navigateBack({
		delta: 1
	})
}

// 页面跳转
export function navigateTo(url) {
	uni.navigateTo({
		url: url
	})
}

// 回显数据字典
export function transDictLabel(datas, value) {
	if (value === undefined) {
		return "";
	}
	var actions = [];
	Object.keys(datas).some((key) => {
		if (datas[key].value == ('' + value)) {
			actions.push(datas[key].text);
			return true;
		}
	})
	if (actions.length === 0) {
		actions.push(value);
	}
	return actions.join('');
}

/**
 * 批量获取字典数据
 * dictTypeArr: 字典名称数组
 * result: 接数据容器
 */
export function getDictList(dictTypeArr, result) {
	dictTypeArr.forEach(dictType => {
		getDicts(dictType).then(res => {
			if (res.code !== 200) return
			result[dictType] = changeDictAttrName(res.data)
		})
	})
}

// 更改字典数据的属性名
export function changeDictAttrName(array) {
	let result = JSON.stringify(array).replaceAll('dictLabel', 'text').replaceAll('dictValue', 'value')
	return JSON.parse(result)
}

// 匹配字典值
export function getDictInfo(array, value) {
	return array.filter(e => e.text.includes(value))
}


/**
 * @description 本地图片转base64方法（兼容APP、H5、小程序）
 * @param {number} path 图片本地路径
 * @returns Promise对象
 */
const toBase64 = (path) => {
	return new Promise((resolve, reject) => {
		// #ifdef APP-PLUS
		plus.io.resolveLocalFileSystemURL(path, (entry) => {
			entry.file((file) => {
				let fileReader = new plus.io.FileReader()
				fileReader.readAsDataURL(file)
				fileReader.onloadend = (evt) => {
					let base64 = evt.target.result.split(",")[1]
					resolve(base64)
				}
			})
		})
		// #endif
		// #ifdef H5
		uni.request({
			url: path,
			responseType: 'arraybuffer',
			success: (res) => {
				resolve(uni.arrayBufferToBase64(res.data))
			}
		})
		// #endif
		// #ifdef MP-WEIXIN
		uni.getFileSystemManager().readFile({
			filePath: path,
			encoding: 'base64',
			success: (res) => {
				resolve(res.data)
			}
		})
		// #endif
	})
}

export {
	toBase64
}