123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- // import { whoami } from '../api/auth'
- import { USER_ID, T_STORAGE_KEY, USER_INFO } from '../constant'
- // import { isNull } from 'lodash-es'
- /**
- * @description 解决小数计算精度问题(en,你应该使用big.js)
- * @param {Number, String} data 数字
- * @param {Number} accuracy 保留几位小数
- * @returns
- */
- export const fomartNumber = (data, accuracy = 2) => {
- const temp = data + ''
- if (temp.includes('.')) {
- return (data * 1).toFixed(accuracy)
- }
- return data
- }
- /**
- * @description 批量清除缓存
- * @param {String[]} cacheArr 要清除的缓存string数组
- */
- export const removeCache = (cacheArr) => {
- if (!Array.isArray(cacheArr)) {
- return
- }
- for (const item of cacheArr) {
- uni.removeStorageSync(item)
- }
- }
- /**
- * 检测登录是否有效
- */
- export const checkWhoami = () => {
- new Promise(async (resolve, reject) => {
- const userId = getUserId()
- const res = await whoami(userId)
- if (res.errno !== 0) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- }
- })
- }
- /**
- * 获取用户userid
- * @returns
- */
- export const getUserId = () => {
- const userId = uni.getStorageSync(USER_ID)
- if (!userId) {
- // uni.showToast({
- // title: "登录已失效,请重新登录",
- // duration: 2000,
- // icon: "none",
- // });
- // uni.navigateTo({
- // url: "/pages/login/login",
- // });
- uni.showModal({
- title: '提示',
- content: '您还未登录,是否去登录?',
- success(res) {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- } else if (res.cancel) {
- // uni.navigateBack();
- }
- }
- })
- return
- }
- return userId
- }
- /**
- * 获取新团蜂用户id
- * @returns
- */
- export const getStorageUserId = () => {
- const userInfo = uni.getStorageSync(T_STORAGE_KEY) || {}
- if (!userInfo.buyerUserId) {
- uni.showModal({
- title: '提示',
- content: '您还未登录,是否去登录?',
- success(res) {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- } else if (res.cancel) {
- // uni.navigateBack();
- }
- }
- })
- return
- }
- return userInfo.buyerUserId
- }
- /**
- * 获取新团蜂token
- * @returns
- */
- export const getStorageKeyToken = () => {
- const userInfo = uni.getStorageSync(USER_INFO)
- if (!userInfo || !userInfo.userId) {
- uni.showModal({
- title: '提示',
- content: '您还未登录,是否去登录?',
- success(res) {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- } else if (res.cancel) {
- // uni.navigateBack();
- }
- }
- })
- return
- }
- if (!userInfo || !userInfo.phone) {
- uni.showModal({
- title: '提示',
- content: '未绑定手机号码,是否去绑定?',
- success(res) {
- if (res.confirm) {
- uni.switchTab({
- url: '/pages/index/index'
- })
- } else if (res.cancel) {
- // uni.navigateBack();
- }
- }
- })
- return
- }
- const storageKey = uni.getStorageSync(T_STORAGE_KEY)
- if (!storageKey || !storageKey.token) {
- uni.showModal({
- title: '提示',
- content: '系统出错,请重新登陆',
- success(res) {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/login/login'
- })
- } else if (res.cancel) {
- // uni.navigateBack();
- }
- }
- })
- return
- }
- return storageKey.token
- }
- /**
- * 跳转到新团蜂入驻端项目
- * @returns
- */
- export const jumpToOtherProject = (url, cb = () => { }) => {
- // #ifdef H5
- window.location.href = url
- // #endif
- // #ifdef APP
- plus.runtime.openURL(url, cb)
- // #endif
- // #ifdef MP
- uni.redirectTo({
- url: `/user/view?target=${url}`
- })
- // #endif
- }
- /**
- * 点击复制
- * @param {*} text
- */
- export const useCopy = (text) => {
- const input = document.createElement('input')
- input.value = text
- document.body.appendChild(input)
- input.select()
- document.execCommand('Copy')
- document.body.removeChild(input)
- uni.showToast({
- title: '单号复制成功'
- })
- }
- /**
- * @description 防抖函数
- * @param {*} func
- * @param {*} wait
- * @param {*} immediate
- * @returns
- */
- export function handleDebounce(func, wait, immediate) {
- let timeout
- return function () {
- const context = this
- const args = arguments
- if (timeout) clearTimeout(timeout)
- if (immediate) {
- var callNow = !timeout
- timeout = setTimeout(() => {
- timeout = null
- }, wait)
- if (callNow) func.apply(context, args)
- } else {
- timeout = setTimeout(function () {
- func.apply(context, args)
- }, wait)
- }
- }
- }
- export function getRandom(min, max) {
- return Math.floor(Math.random() * (max - min) + min)
- }
- export const randomRGB = () => {
- const r = Math.floor(Math.random() * 255)
- const g = Math.floor(Math.random() * 255)
- const b = Math.floor(Math.random() * 255)
- return `rgb(${r}, ${g}, ${b})`
- }
- export const timestampToTime = (timestamp) => {
- // 时间戳为10位需*1000,时间戳为13位不需乘1000
- // var date = new Date(timestamp * 1000);
- var date = new Date(timestamp)
- var Y = date.getFullYear() + '-'
- var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
- var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
- var h = date.getHours() + ':'
- var m = date.getMinutes() + ':'
- var s = date.getSeconds()
- return Y + M + D + h + m + s
- // console.log(timestampToTime(1670145353)); //2022-12-04 17:15:53
- }
- /**
- * 时间格式化
- */
- export const timeFormatting = (timeDifference) => {
- // 天数
- const day = Math.floor(timeDifference / 3600 / 24)
- // 小时
- const hr = Math.floor(timeDifference / 3600 % 24)
- // 分钟
- const min = Math.floor(timeDifference / 60 % 60)
- // 秒
- const sec = Math.floor(timeDifference % 60)
- return {
- day: day < 10 ? '0' + day : day,
- hour: hr < 10 ? '0' + hr : hr,
- min: min < 10 ? '0' + min : min,
- sec: sec < 10 ? '0' + sec : sec
- }
- }
- export const throttle = (fn, interval) => {
- let lastTime = 0
- const _throttle = function (...args) {
- const nowTime = new Date().getTime()
- const remainTime = interval - (nowTime - lastTime)
- if (remainTime <= 0) {
- fn.apply(this, args)
- lastTime = nowTime
- }
- }
- return _throttle
- }
- // 获取 微信 code
- // #ifdef H5
- export const getUrlCode = () => {
- var url = location.search
- var theRequest = new Object()
- if (url.indexOf('?') != -1) {
- var str = url.substr(1)
- var strs = str.split('&')
- for (var i = 0; i < strs.length; i++) {
- theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]
- }
- }
- console.log('code结果', theRequest)
- return theRequest
- }
- // #endif
- // 判断当前是否处于微信环境
- export const isInWx = () => {
- // #ifdef H5
- var ua = navigator.userAgent.toLowerCase()
- return ua.match(/MicroMessenger/i) == 'micromessenger'
- // #endif
- // #ifdef APP
- return false
- // #endif
- }
- /**
- * 大数转小数 12345.123 = 1.23万
- */
- export const convertToDecimal = (number) => {
- if (!number || isNull(number)) return 0
- if (number < 10000) {
- return number.toString()
- } else if (number < 100000000) {
- const decimalNumber = (number / 10000).toFixed(2)
- return decimalNumber + '万'
- }
- const decimalNumber = (number / 100000000).toFixed(2)
- return decimalNumber + '亿'
- }
- export const isSubarray = (arr, subarr) => {
- const mainSet = new Set(arr)
- for (const element of subarr) {
- if (!mainSet.has(element)) {
- return false
- }
- }
- return true
- }
- export const tradeOrderNo = function () {
- const now = new Date()
- const year = now.getFullYear()
- let month = now.getMonth() + 1
- let day = now.getDate()
- let hour = now.getHours()
- let minutes = now.getMinutes()
- let seconds = now.getSeconds()
- String(month).length < 2 ? month = Number('0' + month) : month
- String(day).length < 2 ? day = Number('0' + day) : day
- String(hour).length < 2 ? hour = Number('0' + hour) : hour
- String(minutes).length < 2 ? minutes = Number('0' + minutes) : minutes
- String(seconds).length < 2 ? seconds = Number('0' + seconds) : seconds
- const yyyyMMddHHmmss = `${year}${month}${day}${hour}${minutes}${seconds}`
- return yyyyMMddHHmmss + Math.random().toString(36)
- .substr(2, 9)
- }
- /**
- * 判断当前H5是否在webview中打开
- */
- export const isH5InWebview = () => {
- const ua = navigator.userAgent.toLowerCase()
- return typeof ua === 'string' && (ua.includes('webview') || ua.includes('miniprogramhtmlwebview'))
- }
- /**
- * 判断当前资源是否是视频格式
- * @param {string} url
- * @returns {boolean}
- */
- // export function isVideo(url) {
- // // ['png', 'jpg', 'jpeg', 'bmp', 'gif','webp'] ['mp4', 'm2v', 'mkv', 'webm', 'ogg', 'flv']
- // const videoExtensions = ['.avi', '.wmv', '.mpg', '.mpeg', '.mov', '.rm', '.ram', '.swf', '.flv', '.mp4']
- // const lowercasedUrl = url.toLowerCase()
- // return videoExtensions.some(type => lowercasedUrl.includes(type))
- // }
- export function isVideoSource(src) {
- // return ['.avi', '.wmv', '.mpg', '.mpeg', '.mov', '.rm', '.ram', '.swf', '.flv', '.mp4'].some((item) => src.indexOf(item) !== -1)
- return ['.avi', '.wmv', '.mpg', '.mpeg', '.mov', '.rm', '.ram', '.swf', '.flv', '.mp4'].includes(src.substring(src.lastIndexOf('.')))
- }
- export const saveImg = (url, cb) => {
- // #ifdef H5
- if (isInWx()) {
- uni.showToast({
- title: '请长按图片保存',
- duration: 2000,
- icon: 'none'
- })
- } else {
- const uniappA = document.createElement('a')
- uniappA.download = ''
- uniappA.href = url
- document.body.appendChild(uniappA)
- uniappA.click()
- uniappA.remove()
- cb && typeof cb === 'function' && cb()
- }
- // #endif
- // #ifdef APP || MP
- uni.saveImageToPhotosAlbum({
- filePath: url,
- success() {
- cb && typeof cb === 'function' && cb()
- }
- })
- // #endif
- }
|