123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277 |
- import { config } from "../config/config"
- import { log } from "./log"
- import { tools } from "./tools"
- export class util {
- /**
- * 获取本地数据
- */
- public static getStorage(key:string){
- try {
- let d = uni.getStorageSync(key)
- if(util.isNull(d)){
- return null
- }
- return d
- } catch(e) {
- console.error('本地获取失败', e);
- return null
- }
- }
-
- /**
- * 设置本地数据
- */
- public static setStorage(key:string,value:string){
- try {
- uni.setStorageSync(key,value)
- } catch (e) {
- console.error('本地存储失败', e);
- }
- }
-
- /**
- * 删除本地key数据
- */
- public static removeStorageForKey(key:string){
- try {
- uni.removeStorageSync(key)
- } catch (e) {
- console.error('本地删除失败', e);
- }
- }
-
- /**
- * 清除本地数据
- */
- public static clearAllStorage(){
- try {
- uni.clearStorageSync()
- } catch (e) {
- console.error('本地清空失败', e);
- }
- }
-
- public static isNull(v:any){
- if(v==null||v==undefined||v==""){
- return true
- }
- return false
- }
-
- public static alert(v:string){
- let Platform = tools.getCurPlatform()
- if(Platform==config.Platform.H5){
- alert(v)
- }else if(Platform==config.Platform.TOUTIAO){
- log.Debug("TOUTIAO",v)
- }else if(Platform==config.Platform.WEIXIN){
- log.Debug("WEIXIN",v)
- }
- }
-
- // Loadding
- public static showLoading(title='加载中...',mask:boolean=false) {
- if(title.length==0) {
- title = '加载中...'
- }
- uni.showLoading({
- title:title,
- mask:mask
- })
- }
-
- // delaytime:毫秒
- public static hideLoading(delaytime:number=0, cb:Function=null) {
- if(delaytime<=0) {
- uni.hideLoading()
- cb && cb()
- return
- }
- setTimeout(()=>{
- uni.hideLoading()
- cb && cb()
- },delaytime)
- }
-
- // Toast
- public static showInfoToast(title:string,duration=1500,mask=false) {
- uni.showToast({
- title:title,
- icon:'none',
- duration:duration,
- mask:mask
- })
- }
-
- public static showSuccessToast(title:string,duration=1500,mask=false) {
- uni.showToast({
- title:title,
- icon:'success',
- duration:duration,
- mask:mask
- })
- }
-
- public static showErrorToast(title:string,duration=1500,mask=false) {
- uni.showToast({
- title:title,
- icon:'error',
- duration:duration,
- mask:mask
- })
- }
-
- // Modal
- public static showModal(title:string, content:string, confirm_cb:Function=null, cancel_cb:Function=null, confirmText:string='确定', showCancel:boolean=true, cancelText:string='取消') {
- uni.showModal({
- title: title,
- content: content,
- confirmText: confirmText,
- showCancel: showCancel,
- cancelText: cancelText,
- success: function (res) {
- if (res.confirm) {
- // console.log('用户点击确定')
- confirm_cb && confirm_cb()
- } else if (res.cancel) {
- // console.log('用户点击取消')
- cancel_cb && cancel_cb()
- }
- }
- })
- }
-
- public static showModalNoCancel(title:string, content:string, confirm_cb:Function=null, cancel_cb:Function=null, confirmText:string='确定'){
- this.showModal(title,content,confirm_cb,cancel_cb,confirmText,false)
- }
-
- // ActionSheet
- public static showActionSheet(alertText:string, itemList:string[], confirm_cb:Function, cancel_cb:Function=null) {
- uni.showActionSheet({
- alertText:alertText,
- itemList: itemList,
- success: function (res) {
- // console.log('选中了第' + (res.tapIndex + 1) + '个按钮');
- confirm_cb && confirm_cb(res.tapIndex)
- },
- fail: function (err) {
- // console.log('showActionSheet err=',err.errMsg);
- cancel_cb && cancel_cb()
- }
- });
- }
-
- /**
- * 格式化时间
- * dateTime(String|Number) 需要格式化的时间戳
- * formatStr(String) 格式化规则 yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合 默认yyyy-mm-dd
- */
- public static timeFormat(dateTime = null, formatStr = 'yyyy-mm-dd') {
- let date:any
- // 若传入时间为假值,则取当前时间
- if (!dateTime) {
- date = new Date()
- }
- // 若为unix秒时间戳,则转为毫秒时间戳(逻辑有点奇怪,但不敢改,以保证历史兼容)
- else if (/^\d{10}$/.test(dateTime?.toString().trim())) {
- date = new Date(dateTime * 1000)
- }
- // 若用户传入字符串格式时间戳,new Date无法解析,需做兼容
- else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) {
- date = new Date(Number(dateTime))
- }
- // 处理平台性差异,在Safari/Webkit中,new Date仅支持/作为分割符的字符串时间
- // 处理 '2022-07-10 01:02:03',跳过 '2022-07-10T01:02:03'
- else if (typeof dateTime === 'string' && dateTime.includes('-') && !dateTime.includes('T')) {
- date = new Date(dateTime.replace(/-/g, '/'))
- }
- // 其他都认为符合 RFC 2822 规范
- else {
- date = new Date(dateTime)
- }
-
- const timeSource = {
- 'y': date.getFullYear().toString(), // 年
- 'm': (date.getMonth() + 1).toString().padStart(2, '0'), // 月
- 'd': date.getDate().toString().padStart(2, '0'), // 日
- 'h': date.getHours().toString().padStart(2, '0'), // 时
- 'M': date.getMinutes().toString().padStart(2, '0'), // 分
- 's': date.getSeconds().toString().padStart(2, '0') // 秒
- // 有其他格式化字符需求可以继续添加,必须转化成字符串
- }
-
- for (const key in timeSource) {
- const [ret] = new RegExp(`${key}+`).exec(formatStr) || []
- if (ret) {
- // 年可能只需展示两位
- const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0
- formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex))
- }
- }
-
- return formatStr
- }
-
- // 转换时间(timeStamp:毫秒)
- public static convertTimeString (timeStamp:number) {
- if (timeStamp <= 0) {
- return ""
- }
- let nowTimeDate = new Date()
- let nowTimeStamp = nowTimeDate.getTime()
- // 判断用户输入的时间戳是秒还是毫秒,一般前端js获取的时间戳是毫秒(13位),后端传过来的为秒(10位)
- if (timeStamp.toString().length == 10) timeStamp *= 1000
-
- let between = (nowTimeStamp - timeStamp)/1000 //转换秒
- // console.log('between=',between,'timeStamp=',timeStamp,'nowTimeStamp=',nowTimeStamp)
- if (between < 300) {
- return "刚刚"
- } else if (between >= 300 && between < 3600) {
- return `${Math.round(between/60)}分钟前`
- } else if (between >= 3600 && between < 86400) {
- return `${Math.round(between/3600)}小时前`
- } else if (between >= 86400 && between < 86400 * 2) {
- return "昨天"
- } else if (between >= 86400 * 2 && between < 86400 * 30) {
- return `${Math.round(between/86400)}天前`
- } else {
- return util.timeFormat(timeStamp)
- }
- }
-
- // 转换单位
- public static convertUnit(arg:number) {
- let realVal = arg+''
- if(arg.toString().length>=4) {
- let number = arg/10000
- realVal = number.toFixed(1) + '万'
- }
- return realVal
- }
- // 去除空格
- public static trim(str:string, pos = 'both') {
- str = String(str)
- if (pos == 'both') {
- return str.replace(/^\s+|\s+$/g, '')
- }
- if (pos == 'left') {
- return str.replace(/^\s*/, '')
- }
- if (pos == 'right') {
- return str.replace(/(\s*$)/g, '')
- }
- if (pos == 'all') {
- return str.replace(/\s+/g, '')
- }
- return str
- }
-
- public static reLaunch(url:string){
- uni.reLaunch({
- url:url
- })
- }
-
- }
|