shop_app/utils/index.js

111 lines
2.8 KiB
JavaScript
Raw Normal View History

2025-05-08 09:16:37 +08:00
import { showToast } from '../components/common.js'
// 金额校验
export function checkAmt(dPrice) {
// 判断是否为空
if(dPrice === '') {
showToast('金额不可为空')
return false
}
// 1判断是否有非法字符
for(var i = 0; i < dPrice.length; i++) {
if(isNaN(parseInt(dPrice.charAt(i))) && dPrice.charAt(i) != "." && dPrice.charAt(i) != ","){
showToast('请输入正确的金额')
return false
}
}
// 2如果存在小数点判断是否仅有一个小数点
if(dPrice.indexOf(".") != dPrice.lastIndexOf(".")) {
showToast('请输入正确的金额')
return false
}
// 3判断金额是否为零
var re = /,/g
var amt1 = dPrice.replace(re, "")
var amt2 = parseFloat(amt1)
if(amt2 <= 0) {
showToast('输入金额须大于0')
return false
} else {
// 4判断金额小数点后是否超过两位
if(amt1.indexOf(".") != -1) {
var str = amt1.substr(amt1.indexOf(".") + 1)
if(str.length > 2) {
showToast('输入金额小数点不可超过两位')
return false
}else if(str.length === 0) {
showToast('请输入正确的金额')
return false
}
}
// 5判断以零开头的金额小数点是否在第一位
if(amt1.charAt(0) == "0" && amt1.indexOf(".") != 1) {
showToast('请输入正确的金额')
return false
}
}
return true
}
// 比较版本号
export function compareVersion(v1, v2){
v1 = v1.split('.')
v2 = v2.split('.')
let len = Math.max(v1.length, v2.length)
while(v1.length <len) {
v1.push('0')
}
while(v2.length <len) {
v2.push('0')
}
for(let i = 0; i < len; i++) {
let num1 = parseInt(v1[i])
let num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
// 根据背景色动态改变字体颜色
export function modifyTextColor(bgColor){
// #123456或rgb(12, 34, 56)转为rgb数组[12, 34, 56]
const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
if (/^(rgb|RGB)/.test(bgColor)) {
// 处理rgb转为数组
let aColor = bgColor.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',')
return resBgColor(aColor)
} else if (reg.test(bgColor)) {
// 处理十六进制色值
let sColor = bgColor.toLowerCase();
if (sColor && reg.test(sColor)) {
if (sColor.length === 4) {
let sColorNew = '#'
for (let i = 1; i < 4; i += 1) {
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1))
}
sColor = sColorNew
}
//处理六位的颜色值
let sColorChange = []
for (let i = 1; i < 7; i += 2) {
sColorChange.push(parseInt('0x' + sColor.slice(i, i + 2)))
}
return resBgColor(sColorChange)
} else {
return false
}
} else {
return false
}
}
export function resBgColor(rgbArr){
let color = 0.213 * rgbArr[0] + 0.715 * rgbArr[1] + 0.072 * rgbArr[2] > 255 / 2;
return color ? '#333333': '#ded0d0'
}