/** * 封装 uni.chooseImage,返回 Promise,便于 async/await 使用 * @param {Object} options - 透传给 uni.chooseImage 的配置 * @returns {Promise>} 返回选中的临时图片路径数组 */ export const chooseImage = (options = {}) => { // 默认配置 const defaultOptions = { count: 1, sourceType: ['album', 'camera'], ...options } return new Promise((resolve, reject) => { uni.chooseImage({ ...defaultOptions, success(res) { if (res.tempFilePaths && res.tempFilePaths.length > 0) { resolve(res.tempFilePaths) } else { reject(new Error('未选择任何图片')) } }, fail(err) { // 统一错误处理(如权限被拒、用户取消等) let msg = '选择图片失败' if (err.errMsg.includes('cancel')) { msg = '用户取消选择' } else if ( err.errMsg.includes('auth deny') || err.errMsg.includes('permission') ) { msg = '请在设置中开启相册或相机权限' } // 可选:自动弹出 toast 提示 uni.showToast({ title: msg, icon: 'none', duration: 2000 }) reject(new Error(msg)) } }) }) }