翼度科技»论坛 编程开发 JavaScript 查看内容

uniapp,常用工具函数

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
  1. /* 处理文件路径 */
  2. export default { //  拨打电话
  3.     callPhone(phone) {
  4.         uni.makePhoneCall({
  5.             phoneNumber: phone //仅为示例
  6.         });
  7.     },
  8.     // 判断对象是否包含空值
  9.     /*
  10.      ** @return flag
  11.      ** @params 目标对象
  12.      */
  13.     paramsValidate(params) {
  14.         let flag = true;
  15.         for (var key in params) {
  16.             if (params[key] != '0' && !params[key]) {
  17.                 return false; // 终止程序
  18.             }
  19.         }
  20.         return flag;
  21.     },
  22.     // 日期2023-01-03转几小时前,刚刚文字
  23.     timeToWords(stringTime) {
  24.         if (stringTime) {
  25.             // 获取当前
  26.             var minute = 1000 * 60;
  27.             var hour = minute * 60;
  28.             var day = hour * 24;
  29.             var week = day * 7;
  30.             var month = day * 30;
  31.             var time1 = new Date().getTime(); //当前的时间戳
  32.             var time2 = Date.parse(new Date(stringTime)); //指定时间的时间戳
  33.             var time = time1 - time2;
  34.             var result = null;
  35.             if (time < 0) {
  36.                 result = stringTime
  37.             } else if (time / month >= 1) {
  38.                 result = parseInt(time / month) + "月前";
  39.             } else if (time / week >= 1) {
  40.                 result = parseInt(time / week) + "周前";
  41.             } else if (time / day >= 1) {
  42.                 result = parseInt(time / day) + "天前";
  43.             } else if (time / hour >= 1) {
  44.                 result = parseInt(time / hour) + "小时前";
  45.             } else if (time / minute >= 1) {
  46.                 result = parseInt(time / minute) + "分钟前";
  47.             } else {
  48.                 result = "刚刚";
  49.             }
  50.             return result;
  51.         }
  52.     },
  53.     // 判断是否是json格式
  54.     isJSON(str) {
  55.         if (typeof str == "string") {
  56.             try {
  57.                 var obj = JSON.parse(str)
  58.                 if (typeof obj == "object" && obj) {
  59.                     return true
  60.                 } else {
  61.                     return false
  62.                 }
  63.             } catch (e) {
  64.                 return false
  65.             }
  66.         }
  67.     },
  68.     // 电话号码加密
  69.     phonePas(string, type) {
  70.         if (string) {
  71.             let str = string.substring(3, 7)
  72.             return string.replace(str, '****')
  73.         }
  74.     },
  75.     checkPhone(phone) {
  76.         let check = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/g.test(phone);
  77.         return check
  78.     },
  79.     // 身份证校验
  80.     checkIdNumber(idNum) {
  81.         let c = /^\d{6}(18|19|20)\d{2}(0\d|10|11|12)([0-2]\d|30|31)\d{3}[\dXx]$/g.test(idNum);
  82.         return c
  83.     },
  84.     // 字符串截取,str,需要截取的字符串,num需要从第几位截取,endStr-结尾的字符串
  85.     substr(str, num, endStr) {
  86.         return `${str.substring(0,num)}${endStr}`
  87.     },
  88.     // 判断空对象
  89.     isEmpty(obj) {
  90.         return Object.keys(obj).length === 0
  91.     },
  92.     // 年月日转为日期格式
  93.     // 日期转换
  94.     formatYMD(data, format = '-') {
  95.         if (data) {
  96.             let time1 = data.split(' ')
  97.             let time = time1[0].replace('年', '-').replace('月', '-').replace('日', ' ')
  98.             let arr = time.split('-')
  99.             let y = arr[0]
  100.             let m = arr[1] < 10 ? `0${arr[1]}` : arr[1]
  101.             let r = arr[2] < 10 ? `0${arr[2]}` : arr[2]
  102.             // 没有秒自动补全秒
  103.             if (time1[1].split(':').length < 3) {
  104.                 return `${y}${format}${m}${format}${r}${time1[1]?time1[1]+':00':''}`
  105.             }
  106.             return `${y}${format}${m}${format}${r}${time1[1]?time1[1]:''}`
  107.         } else {
  108.             return null
  109.         }
  110.     },
  111.     // 日期格式转年月日
  112.     formatToYMD(data) {
  113.         if (data) {
  114.             let time1 = data.split(' ')
  115.             let time = time1[0].replace('-', '年').replace('-', '月')
  116.             let arr = time1[0].split('-')
  117.             let y = arr[0]
  118.             let m = arr[1] < 10 ? `${arr[1].split('0')[1]}` : arr[1]
  119.             let enr = arr[2]
  120.             let r = enr.split('0')[0] ? enr.split('0')[0] : enr.split('0')[1]
  121.             return `${y}年${m}月${r}日 ${time1[1]?time1[1]:''}`
  122.         } else {
  123.             return null
  124.         }
  125.     },
  126.     // 日期格式化
  127.     formatDate: function(dateA, format = 'yyyy-MM-dd HH:mm:ss', splitType = "-") {
  128.         console.log('dateA', dateA)
  129.         const dateB = new Date(dateA).toJSON();
  130.         const date = new Date(+new Date(dateB) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(
  131.             /\.[\d]{3}Z/, '')
  132.         let arr = date.split(" ")
  133.         let dates
  134.         switch (format) {
  135.             case 'yyyy-MM-dd HH:mm:ss':
  136.                 dates = date
  137.                 break
  138.             case 'yyyy-MM-dd':
  139.                 // dates = arr[0]
  140.                 dates = arr[0].replace('-', splitType).replace('-', splitType)
  141.                 break
  142.             case 'HH:mm:ss':
  143.                 dates = arr[1]
  144.                 break
  145.             case 'yyyy-MM-dd HH:mm':
  146.                 let arr2 = []
  147.                 arr2.push(date.split(":")[0])
  148.                 arr2.push(date.split(":")[1])
  149.                 dates = arr2.join(":")
  150.                 break
  151.             case 'MM-dd':
  152.                 let newArr = arr[0].split('-')
  153.                 let result = []
  154.                 if (newArr.length === 3) {
  155.                     newArr[1] < 10 ? newArr[1] = newArr[1].split('0')[1] : newArr[1]
  156.                     newArr[2] < 10 ? newArr[2] = newArr[2].split('0')[1] : newArr[2]
  157.                     result.push(newArr[1])
  158.                     result.push(newArr[2])
  159.                     dates = result.join(splitType)
  160.                 }
  161.                 break
  162.             case 'HH:mm':
  163.                 let newArr2 = arr[1].split(':')
  164.                 let arr3 = []
  165.                 arr3.push(newArr2[0])
  166.                 arr3.push(newArr2[1])
  167.                 dates = arr3.join(':')
  168.                 break
  169.         }
  170.         return dates
  171.     },
  172.     // 获取当前月的最后一天
  173.     getLastDay(year, month) {
  174.         const isLeapYear = ((year % 4) == 0) && ((year % 100) != 0) || ((year % 400) == 0)
  175.         const maxDays = [1, 3, 5, 7, 8, 10, 12]
  176.         const middleDays = [4, 6, 9, 11]
  177.         month = Number(month)
  178.         if (month == 2) {
  179.             if (isLeapYear) {
  180.                 return 29
  181.             } else {
  182.                 return 28
  183.             }
  184.         } else if (maxDays.includes(month)) {
  185.             return 31
  186.         } else if (middleDays.includes(month)) {
  187.             return 30
  188.         }
  189.     },
  190.     // 删除对象属性值为空的属性,obj-传入的对象
  191.     removeProperty(obj) {
  192.         Object.keys(obj).forEach((item) => {
  193.             if (obj[item] === '' || obj[item] === undefined || obj[item] === null || obj[item] === 'null') {
  194.                 Reflect.deleteProperty(obj,item)
  195.             }
  196.         })
  197.         return obj
  198.     },
  199.     // base64转path
  200.     base64ToPath(base64) {
  201.         return new Promise(function(resolve, reject) {
  202.             if (typeof window === 'object' && 'document' in window) {
  203.                 base64 = base64.split(',')
  204.                 var type = base64[0].match(/:(.*?);/)[1]
  205.                 var str = atob(base64[1])
  206.                 var n = str.length
  207.                 var array = new Uint8Array(n)
  208.                 while (n--) {
  209.                     array[n] = str.charCodeAt(n)
  210.                 }
  211.                 return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], {
  212.                     type: type
  213.                 })))
  214.             }
  215.             var extName = base64.match(/data\:\S+\/(\S+);/)
  216.             if (extName) {
  217.                 extName = extName[1]
  218.             } else {
  219.                 reject(new Error('base64 error'))
  220.             }
  221.             var fileName = Date.now() + '.' + extName
  222.             if (typeof plus === 'object') {
  223.                 var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
  224.                 bitmap.loadBase64Data(base64, function() {
  225.                     var filePath = '_doc/uniapp_temp/' + fileName
  226.                     bitmap.save(filePath, {}, function() {
  227.                         bitmap.clear()
  228.                         resolve(filePath)
  229.                     }, function(error) {
  230.                         bitmap.clear()
  231.                         reject(error)
  232.                     })
  233.                 }, function(error) {
  234.                     bitmap.clear()
  235.                     reject(error)
  236.                 })
  237.                 return
  238.             }
  239.             if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
  240.                 var filePath = wx.env.USER_DATA_PATH + '/' + fileName
  241.                 wx.getFileSystemManager().writeFile({
  242.                     filePath: filePath,
  243.                     data: base64.replace(/^data:\S+\/\S+;base64,/, ''),
  244.                     encoding: 'base64',
  245.                     success: function() {
  246.                         resolve(filePath)
  247.                     },
  248.                     fail: function(error) {
  249.                         reject(error)
  250.                     }
  251.                 })
  252.                 return
  253.             }
  254.             reject(new Error('not support'))
  255.         })
  256.     }
  257. }
  258. function getLocalFilePath(path) {
  259.     if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path.indexOf(
  260.             '_downloads') === 0) {
  261.         return path
  262.     }
  263.     if (path.indexOf('file://') === 0) {
  264.         return path
  265.     }
  266.     if (path.indexOf('/storage/emulated/0/') === 0) {
  267.         return path
  268.     }
  269.     if (path.indexOf('/') === 0) {
  270.         var localFilePath = plus.io.convertAbsoluteFileSystem(path)
  271.         if (localFilePath !== path) {
  272.             return localFilePath
  273.         } else {
  274.             path = path.substr(1)
  275.         }
  276.     }
  277.     return '_www/' + path
  278. }
  279. /* base64转文件路径 */
  280. export function base64ToPath(base64) {
  281.     return new Promise(function(resolve, reject) {
  282.         if (typeof window === 'object' && 'document' in window) {
  283.             base64 = base64.split(',')
  284.             var type = base64[0].match(/:(.*?);/)[1]
  285.             var str = atob(base64[1])
  286.             var n = str.length
  287.             var array = new Uint8Array(n)
  288.             while (n--) {
  289.                 array[n] = str.charCodeAt(n)
  290.             }
  291.             return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], {
  292.                 type: type
  293.             })))
  294.         }
  295.         var extName = base64.match(/data\:\S+\/(\S+);/)
  296.         if (extName) {
  297.             extName = extName[1]
  298.         } else {
  299.             reject(new Error('base64 error'))
  300.         }
  301.         var fileName = Date.now() + '.' + extName
  302.         if (typeof plus === 'object') {
  303.             var bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
  304.             bitmap.loadBase64Data(base64, function() {
  305.                 var filePath = '_doc/uniapp_temp/' + fileName
  306.                 bitmap.save(filePath, {}, function() {
  307.                     bitmap.clear()
  308.                     resolve(filePath)
  309.                 }, function(error) {
  310.                     bitmap.clear()
  311.                     reject(error)
  312.                 })
  313.             }, function(error) {
  314.                 bitmap.clear()
  315.                 reject(error)
  316.             })
  317.             return
  318.         }
  319.         if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
  320.             var filePath = wx.env.USER_DATA_PATH + '/' + fileName
  321.             wx.getFileSystemManager().writeFile({
  322.                 filePath: filePath,
  323.                 data: base64.replace(/^data:\S+\/\S+;base64,/, ''),
  324.                 encoding: 'base64',
  325.                 success: function() {
  326.                     resolve(filePath)
  327.                 },
  328.                 fail: function(error) {
  329.                     reject(error)
  330.                 }
  331.             })
  332.             return
  333.         }
  334.         reject(new Error('not support'))
  335.     })
  336. }
复制代码
 

来源:https://www.cnblogs.com/zz151/p/17218763.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具