Files
JiaZhiQianYan/utils/util.js

424 lines
9.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {getBaseURL} from '@/request/http.js'
export function uploadImg(path)
{
return new Promise ((resolve,reject)=>
{
let token = uni.getStorageSync('token')
uni.uploadFile({
url: getBaseURL()+'/file-upload',
filePath: path,
name: 'file',
header:{
'Authorization':token?('Bearer '+token):''
},
success: (res) => {
console.log(res)
var result = JSON.parse(res.data);//返回的结果,可能不同项目结果不一样
resolve(result.url)
},
fail: (error) => {
console.log('上传失败'+error.errMsg)
reject()
}
});
})
}
export async function uploadImgs(paths, success)
{
for (let path of paths) {
try {
const uploadData = await uploadImg(path)
success(uploadData)
} catch (e) {
//TODO handle the exception
console.log(e)
uni.showToast({
title: e || '上传失败',
icon: 'error'
})
break
}
}
}
export function isValidJSON(jsonString) {
// 先做基础类型校验,排除非字符串的情况
if (typeof jsonString !== 'string') {
console.warn('输入必须是字符串类型');
return false;
}
// 去除首尾空白字符(可选,但能兼容常见的格式问题)
jsonString = jsonString.trim();
// 空字符串直接判定为无效
if (jsonString === '') {
return false;
}
try {
// 尝试解析 JSON 字符串
const parsed = JSON.parse(jsonString);
// 额外校验:确保解析结果是对象/数组(排除单个数字/布尔值等非结构化 JSON
// 如果不需要这个校验,可以删除下面这行
if (typeof parsed !== 'object' || parsed === null) return false;
return true;
} catch (error) {
// 解析失败,说明格式错误
console.log('JSON 格式错误:', error.message);
return false;
}
}
export function accDiv(arg1,arg2){
var t1=0,t2=0,r1,r2;
try{t1=arg1.toString().split(".")[1].length}catch(e){}
try{t2=arg2.toString().split(".")[1].length}catch(e){}
r1=Number(arg1.toString().replace(".",""))
r2=Number(arg2.toString().replace(".",""))
return accMul((r1/r2),Math.pow(10,t2-t1));
}
//乘法
export function accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
//加法
export function accAdd(arg1,arg2){
var r1,r2,m;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
return (arg1*m+arg2*m)/m
}
//减法
export function accSub(arg1,arg2){
var r1,r2,m,n;
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
n=(r1>=r2)?r1:r2;
return ((arg1*m-arg2*m)/m).toFixed(n);
}
function isEmptyStr(str)
{
return (!str || 0 === str.length);
}
function isNotaNumber(str)
{
// return isNaN(str);
return true
}
export function maskPhoneNumber(phoneNumber) {
return phoneNumber.replace(/(\d{3})\d*(\d{4})/, '$1****$2');
}
function getCurrentTimeStr()
{
let date = new Date()
let month = date.getMonth()+1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
return month+'月'+day+'日'+hour+':'+(minute<10?('0'+minute):minute)
}
function getChineseTimeStrBySecond(s)
{
if (s<0) {
s = 0-s
}
let day = parseInt(s/(24*60*60))
let hour = parseInt(s%(24*60*60)/(60*60))
let minute = parseInt(s/60)%60
let second = s%60
return (day>0?(day+'天'):'')+(hour>0?(hour+'小时'):'')+minute+'分'+second+'秒'
}
function getTimeStrBySecond(s)
{
if (s<0) {
s = 0-s
}
let hour = parseInt(s/(60*60))
let minute = parseInt(s/60)%60
let second = s%60
return (hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)+':'+(second<10?('0'+second):second)
}
function getChineseTimeStrByHour(h)
{
if (!h) return
if (h<0) {
h = 0-h
}
let day = parseInt(h/24)
let hour = parseInt(h%24)
console.log(day,hour)
return (day>0?(day+'天'):'')+(hour>0?(hour+'小时'):'')
}
/**
* 获取涨幅字符串
* @param {Object} r
*/
export function getRateStr(r)
{
if (!r) return
r = String(r)
if(r.indexOf('-')>-1)
{
r = r.substr(1,r.length-1)
return parseFloat(r).toFixed(2)
}else
{
if(parseFloat(r)==0)
{
return 0.00
}else
return parseFloat(r).toFixed(2)
}
}
/**
* 获取涨跌幅字符串
* @param {Object} r
*/
export function getChgRateStr(r)
{
if (!r) return
r = String(r)
if(r.indexOf('-')>-1)
{
r = r.substr(1,r.length-1)
return '-'+parseFloat(r).toFixed(2)
}else
{
if(parseFloat(r)==0)
{
return 0.00
}else
return '+'+parseFloat(r).toFixed(2)
}
}
/**
* 获取涨幅字符串是涨还是跌 true为跌false为涨
* @param {Object} r
*/
export function getRateUpOrDown(r)
{
if (!r) return
return String(r).indexOf('-')>-1
}
/**
* 根据数字大小展示亿或者完
* @param {Object} r
*/
export function getNumStr(r)
{
if (!r) return
let value = r
if (r<0) value = 0-r
value = parseFloat(value)
if (value>100000000) {
return (r/100000000).toFixed(2)+'亿'
}else if (value>10000) {
return (r/10000).toFixed(2)+'万'
}else
return r
}
/**
* 根据姓名获取姓
* @param {Object} r
*/
export function getLastNameStr(r)
{
if (!r) return
return r.substr(0,1)
}
/**
* 根据出生年份计算年龄
* @param {Object} r
*/
export function getAgeByBirthYear(r)
{
if (!r) return 0
let date = new Date()
let year = date.getFullYear()
return parseInt(year)-parseInt(r)
}
/**
* 获取本地时间
* @param {Object} time
*/
export function getLocaleTime(time)
{
if(time.indexOf('T')==-1)
{
time = time.replace(/-/g,'/')
}
let date = new Date(time)
let year = date.getFullYear()
let month = date.getMonth()+1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
return year+'-'+(month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)+' '+(hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
}
/**
* 获取本地时分
* @param {Object} time
*/
export function getLocaleHourMinute(time)
{
if(time.indexOf('T')==-1)
{
time = time.replace(/-/g,'/')
}
let date = new Date(time)
let hour = date.getHours()
let minute = date.getMinutes()
return (hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
}
/**
* 获取本地月日时分
* @param {Object} time
*/
export function getLocaleMonthDayHourMinte(time)
{
if(time.indexOf('T')==-1)
{
time = time.replace(/-/g,'/')
}
let date = new Date(time)
let month = date.getMonth()+1
let day = date.getDate()
let hour = date.getHours()
let minute = date.getMinutes()
return (month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)+' '+(hour<10?('0'+hour):hour)+':'+(minute<10?('0'+minute):minute)
}
/**
* 获取本地日期
* @param {Object} time
*/
export function getLocalDate(time)
{
if(time.indexOf('T')==-1)
{
time = time.replace(/-/g,'/')
}
let date = new Date(time)
let year = date.getFullYear()
let month = date.getMonth()+1
let day = date.getDate()
return year+'-'+(month<10?('0'+month):month)+'-'+(day<10?('0'+day):day)
}
/**
* 替换
* @param {Object} time
*/
export function replaceAnswerLabel(text)
{
return text.replace('<answer>','').replace('</answer>','')
}
/**
* 身份证号校验
*/
export function checkIdCard (cardNum)
{
cardNum = cardNum.replace(/(^\s*)|(\s*$)/g,"")
if (cardNum.length==15) {
return isValidateBirthBy15IdCard(cardNum)
}else if(cardNum.length==18)
{
var idCard = cardNum.split("")
if (isValidateBirthBy18IdCard(cardNum)&&isValidateCodeBy18IdCard(idCard)) {
return true
}else
return false
}else
return false
}
function isValidateCodeBy18IdCard(cardNum)
{
var wi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1] //加权因子
var valideCode = [1,0,10,9,8,7,6,5,4,3,2]
var sum = 0
if (cardNum[17].toLowerCase() == 'x') {
cardNum[17] = 10 //将最后位的x替换成10
}
for (let i = 0; i < 17; i++) {
sum+= wi[i] * cardNum[i]
}
var valCodePosition = sum%11
if (cardNum[17] == valideCode[valCodePosition]) {
return true
}else
return false
}
/**
* 验证18位身份证号中的生日是否为有效生日
* @param {*} cardNum
*/
function isValidateBirthBy18IdCard (cardNum)
{
var year = cardNum.substring(6,10)
var month = cardNum.substring(10,12)
var day = cardNum.substring(12,14)
var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day))
//这里用getFullYear获取年份
if (tempDate.getFullYear()!=parseFloat(year)||
tempDate.getMonth()!=(parseFloat(month)-1)||
tempDate.getDate()!=parseFloat(day)) {
return false
}else
return true
}
/**
* 验证15位身份证号中的生日是否为有效生日
* @param {*} cardNum
*/
function isValidateBirthBy15IdCard (cardNum)
{
var year = cardNum.substring(6,8)
var month = cardNum.substring(8,10)
var day = cardNum.substring(10,12)
var tempDate = new Date(year,parseFloat(month)-1,parseFloat(day))
//这里用getFullYear获取年份
if (tempDate.getFullYear()!=parseFloat(year)||
tempDate.getMonth()!=(parseFloat(month)-1)||
tempDate.getDate()!=parseFloat(day)) {
return false
}else
return true
}