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 ToastOK = (title: string, duration = 2000) => { wx.showToast({ title, icon: "success", duration, }); }; export const ToastErr = (title: string, duration = 2000) => { wx.showToast({ title, icon: "error", duration, }); }; // 对话框 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) => { return data && Array.isArray(data); }; /** * 转成数组 * @param {*} data * @returns {Array} */ export const toArray = (data: any): any[] => { return isArray(data) ? data : []; }; /** 判断数据是不是对象类型 */ export const isObject = (data: any) => { return data && `${Object.prototype.toString.call(data)}`.includes("Object"); }; export const toObject = (data: any) => { return 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 = () => { return toObject(wx.getStorageSync("auth_info")); }; export const goIndexPage = () => { wx.switchTab({ 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: function (res) { const filePath = res.tempFilePath; wx.openDocument({ filePath: filePath, showMenu: true, fileType: suffix, success: function () {}, }); }, 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: "DFSESSID=" + 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}`); }; /** * 设置缓存数据根据小程序版本 * @param key string * @param data any */ export const setStorage = (key: string, data: any) => { return wx.setStorageSync(`${getEnvVersion}_${key}`, data); }; /** * 移除缓存数据根据小程序版本 * @param key string */ export const removeStorage = (key: string) => { return wx.removeStorageSync(`${getEnvVersion}_${key}`); }; /** * 获取当前页面路由 */ export const getCurrentPageRoute = () => { const pages = getCurrentPages(); // 获取页面栈 const currentPage = pages[pages.length - 1]; // 获取当前页面对象 return `/${currentPage.route}`; // 获取当前页面路径 };