import { http } from './config'; export const formatTime = (date: Date) => { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes(); const second = date.getSeconds(); return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second] .map(formatNumber) .join(':')}`; }; export const formatNumber = (n: number | string) => { n = n.toString(); return n[1] ? n : `0${n}`; }; // 对话框 export const showModal = (title: string, content: string, showCancel = false) => { return new Promise((resolve, reject) => { wx.showModal({ title, content, showCancel, success(res) { if (res.confirm) { resolve(); } else if (res.cancel) { reject(); } }, }); }); }; /** 判断数据是不是数组类型 */ export const isArray = (data: any) => data && Array.isArray(data); /** * 转成数组 * @param {*} data * @returns {Array} */ export const toArray = (data: any): any[] => (isArray(data) ? data : []); /** 判断数据是不是对象类型 */ export const isObject = (data: any) => { return data && `${Object.prototype.toString.call(data)}`.includes('Object'); }; export const toObject = (data: any) => (isObject(data) ? data : {}); export const reloadPage = () => { let pages = getCurrentPages(); //获取加载的页面 let currentPage = pages[pages.length - 1]; //获取当前页面的对象 let url = currentPage.route; //当前页面url // 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。 wx.redirectTo({ url: '/' + url }); }; /** 判断是json数据 */ export const isJson = (str: any) => { if (str && typeof str == 'string') { try { const obj = JSON.parse(str); return obj && typeof obj == 'object'; } catch (_e) { // } } return false; }; /** * 解码json数据 * @param data 数据 * @returns array | object | null */ export const jsonParse = (data: any): any[] | object | null => { if (data) { if (typeof data == 'string') { try { const obj = JSON.parse(data); if (['Array', 'Object'].includes(Object.prototype.toString.call(obj).slice(8, -1))) { return obj; } } catch (e) { // } } else if (['Array', 'Object'].includes(Object.prototype.toString.call(data).slice(8, -1))) { return data; } } return null; }; /** * 判断是数字 * @param {*} value * @returns Boolean */ export const isNumber = (value: any) => { return !isNaN(parseFloat(value)) && isFinite(value); }; /** * 转成数字 * @param {*} str * @returns Number */ export const toNumber = (str: any) => { return isNumber(str) ? Number(str) : 0; }; /** * 保留小数 * @param {*} str 文本 * @param {*} num 位数 */ export const formatToDecimals = (str: any, num: number = 2) => { num = num === undefined ? 2 : toNumber(num); return toNumber(str).toFixed(num); }; /** 获取权限 */ export const getAuthInfo = () => toObject(wx.getStorageSync('auth_info')); export const goIndexPage = () => { wx.navigateTo({ url: '/pages/index/index' }); }; export const isImageFile = (path: string) => { return /\.(jpe?g|png|gif|svg|webp|bmp)$/i.test(path); }; /** 滚动到顶部 */ export const scrollToTop = () => { wx.pageScrollTo({ scrollTop: 0 }); }; /** 设置tabs配置 */ export const tabsConfigSet = (key: string, value: any) => { const tabsConfig = toObject(tabsConfigGet()); tabsConfig[key] = value; setStorage('tabsConfig', tabsConfig); }; /** 获取tabs配置 */ export const tabsConfigGet = () => { return getStorage('tabsConfig'); }; /** * 媒体图片预览 * @param {*} imageUrls 图片地址数据 * @param {*} currentUrl 当前数据地址 */ export const mediaPreview = (imageUrls: any[], currentUrl: string) => { console.log('媒体图片预览方法'); const lastLen = `${currentUrl}`.indexOf('?') > -1 ? `${currentUrl}`.indexOf('?') : `${currentUrl}`.length; const suffix: any = currentUrl .substring(currentUrl.lastIndexOf('.') + 1, lastLen) .toLocaleLowerCase(); if (isImageFile('.' + suffix)) { wx.previewImage({ urls: imageUrls, current: currentUrl, showmenu: true }); } else if (['mp3', 'mp4', 'm4a'].includes(suffix)) { wx.previewMedia({ sources: [{ url: currentUrl, type: 'video' }], fail() { wx.showToast({ title: '播放失败' }); }, }); } else if (['doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf'].includes(suffix)) { const downloadTask = wx.downloadFile({ url: currentUrl, header: http.header, success: (res) => { const filePath = res.tempFilePath; wx.openDocument({ filePath: filePath, showMenu: true, fileType: suffix, success: () => {}, }); }, fail() {}, complete() { wx.hideLoading(); }, }); downloadTask.onProgressUpdate((res) => { wx.showLoading({ title: `${res.progress}%`, }); if (res.progress == 100) { wx.hideLoading(); } }); } else { wx.showToast({ title: '请前往网页端下载查看' }); } }; /** * 文件上传封装 * @param {*} option {filePath: '文件路径', name: 'files', url:'上传url',formData: {额外data},success: (data)=>{}, complete:()=>{},fail: ()=>{} } */ export const uploadFile2 = (option: any) => { console.log('文件上传封装'); option = toObject(option); option.name = option.name || 'files'; wx.showLoading({ title: '文件上传中...' }); wx.uploadFile({ filePath: option.filePath, name: option.name, header: { ...http.header, cookie: 'FREESESSID=' + wx.getStorageSync('session_id'), }, formData: option.formData, url: option.url, success(res) { const resData = jsonParse(res.data); wx.showToast({ title: '上传成功' }); if (option.success) { option.success(resData); } }, fail() { wx.showToast({ title: '上传失败' }); if (option.fail) { option.fail(); } }, complete() { wx.hideLoading(); if (option.complete) { option.complete(); } }, }); }; /** * 获取dataset * @param {*} e */ export const getDataSet = (e: any) => { return e.currentTarget.dataset; }; export const toastSuccess = (title: string) => { wx.showToast({ title: `${title}`, icon: 'success' }); }; export const toastError = (title: string) => { wx.showToast({ title: `${title}`, icon: 'error' }); }; export const toastSuccessNotIcon = (title: string) => { wx.showToast({ title: `${title}`, icon: 'none' }); }; export const getEnvVersion = wx.getAccountInfoSync().miniProgram.envVersion; /** * 获取缓存数据根据小程序版本 * @param key string */ export const getStorage = (key: string) => { // return wx.getStorageSync(`${getEnvVersion}_${key}`); return wx.getStorageSync(key); }; /** * 设置缓存数据根据小程序版本 * @param key string * @param data any */ export const setStorage = (key: string, data: any) => { // return wx.setStorageSync(`${getEnvVersion}_${key}`, data); return wx.setStorageSync(key, data); }; /** * 移除缓存数据根据小程序版本 * @param key string */ export const removeStorage = (key: string) => { // return wx.removeStorageSync(`${getEnvVersion}_${key}`); return wx.removeStorageSync(key); }; /** * 获取当前页面路由 */ export const getCurrentPageRoute = () => { const pages = getCurrentPages(); // 获取页面栈 const currentPage = pages[pages.length - 1]; // 获取当前页面对象 return `/${currentPage.route}`; // 获取当前页面路径 };