new-cashier/jeepay-ui-uapp-agent/util/tool.js

234 lines
6.4 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 qrcode from "@/util/qrcode.js"
/* 获取当前日期并格式化 */
function getNowTime() {
var nowtime = new Date()
var year = nowtime.getFullYear()
var month = nowtime.getMonth() + 1 < 10 ? "0" + (nowtime.getMonth() + 1) : nowtime.getMonth() + 1
var day = nowtime.getDate() < 10 ? "0" + nowtime.getDate() : nowtime.getDate()
var hour = nowtime.getHours() < 10 ? "0" + nowtime.getHours() : nowtime.getHours()
var minute = nowtime.getMinutes() < 10 ? "0" + nowtime.getMinutes() : nowtime.getMinutes()
return year + "-" + month + "-" + day + " " + hour + ":" + minute
}
// 格式化日期格式为 xxxx-xx-xx
function getFullDate(targetDate) {
var nowDate = new Date()
var fullYear = nowDate.getFullYear()
var month = nowDate.getMonth() + 1 // getMonth 方法返回 0-11代表1-12月
var D, y, m, d
if (targetDate) {
D = new Date(targetDate)
y = D.getFullYear()
m = D.getMonth() + 1
d = D.getDate()
} else {
// 不传参数 则获取今天的日期
y = fullYear
m = month
d = new Date()
d = d.getDate()
}
m = m > 9 ? m : "0" + m
d = d > 9 ? d : "0" + d
return y + "-" + m + "-" + d
}
/* 将时间戳格式化为yyyy-MM-dd hh:mm:ss格式其它格式可自行更改 */
function formatTimeMills(timeMills, sign) {
var date = new Date(timeMills)
var timeStr = date.getFullYear() + sign
if (date.getMonth() < 9) {
// 月份从0开始的
timeStr += "0"
}
timeStr += date.getMonth() + 1 + sign
timeStr += date.getDate() < 10 ? "0" + date.getDate() : date.getDate()
timeStr += " "
timeStr += date.getHours() < 10 ? "0" + date.getHours() : date.getHours()
timeStr += ":"
timeStr += date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()
/* timeStr += ':';
timeStr += date.getSeconds() < 10 ? ('0' + date.getSeconds()) : date.getSeconds(); */
return timeStr
}
/* 获取今天的零点/最后一刻 */
function getTodayStartOrEnd(sign) {
let resultTime = ""
if (sign == "start") {
resultTime = new Date(new Date(new Date().toLocaleDateString()).getTime())
} else if (sign == "end") {
resultTime = new Date(new Date(new Date().toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1)
}
return formatTimeMills(resultTime, "-")
}
let num = (a) => {
if (a != null && a.toString() != "") {
let r = /^-?(0|[1-9]+\d*|[1-9]+\d*\.\d+|0\.\d+)$/
if (r.test(a.toString())) {
return true
}
}
return false
}
/* 除法 */
function division(a, b) {
if (!num(a) || !num(b)) {
return null
}
let c, d, f, g
try {
c = a.toString().split(".")[1].length
} catch (e) {
c = 0
}
try {
d = b.toString().split(".")[1].length
} catch (e) {
d = 0
}
f = Number(a.toString().replace(".", ""))
g = Number(b.toString().replace(".", ""))
return parseFloat(((f / g) * Math.pow(10, d - c)).toFixed(2))
}
/* 金额格式化 */
function amountFormatting(amount, sign) {
let changeAmount = 0
let resultAmount = 0
if (sign == 0) {
changeAmount = division(amount, 100)
resultAmount = changeAmount.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, "$&,")
} else if (sign == 1) {
resultAmount = amount.toFixed(0).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, "$&,")
}
return resultAmount
}
// 获取n天后的日期
function getNdaysLater(n) {
var nowDate = new Date()
let nDaysLaterDate = getFullDate(nowDate.getTime() + 24 * 60 * 60 * 1000 * n) //获取明天日期
return nDaysLaterDate
}
export const debounce = (fn, t) => {
let delay = t || 500
let timer
return function () {
let args = arguments
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
timer = null
fn.apply(this, args)
}, delay)
}
}
// 将回显的地址码,转为文本供只读组件使用 ,第一个参数为地址码数组,第二,三个参数为省市区的JSON只有收付通会用到第三个参数
const addressBack = (list, address, addressTow) => {
if (!list || list.length == 0) return "" // 非空校验
let addressText = ""
// 绝大多数清空都没有第二个 地址JSON表
if (!addressTow) {
let first = address.find((val) => val.value == list[0])
addressText += first.text + "/"
let second = first.children.find((val) => val.value == list[1])
addressText += second.text + "/"
let third = second.children.find((val) => val.value == list[2])
addressText += third.text
} else {
// 收付通 选择 支行所在地址专属 (只能选择到市一级)
let first = addressTow.find((val) => val.value == list[0])
addressText += first.text + "/"
let second = first.children.find((val) => val.value == list[1])
addressText += second.text
}
return addressText
}
// 将回显的行业mcc码转为文本供只读组件使用 ,第一个参数为地址码数组第二参数为行业mcc的JSON, 第三个参数为取值方式,拼接的截取取值,数组的拿最后一个值
const mccBack = (mccCode, mccJson, type) => {
if (!mccCode) return "" // 非空校验
let mccText = ""
if (type == "splicing") {
let code
if (mccCode) code = mccCode.split("_")[1]
for (var i = 0; i < mccJson.length; i++) {
mccText = mccJson[i].children.find((val) => val.value == code)
if (mccText) break
}
mccText = mccText.text
} else if (type == "last") {
for (var i = 0; i < mccJson.length; i++) {
mccText = mccJson[i].children.find((val) => val.value == mccCode)
if (mccText) break
}
mccText = mccText.text
}
return mccText
}
// 制作图片
const drawQRcode = (url) => {
let params = url // 二维码参数
var imgData = qrcode.drawImg(params, {
typeNumber: 4, // 密度
errorCorrectLevel: "Q", // 纠错等级
size: 175, // 白色边框
})
return imgData
}
function addressCode(val, address) {
const data = []
address.forEach((v) => {
if (val.indexOf(v.text) != -1) {
data.push(v)
v.children.forEach((ite) => {
if (val.indexOf(ite.text) != -1) {
data.push(ite)
ite.children.forEach((value) => {
if (val.indexOf(value.text) != -1) {
data.push(value)
}
})
}
})
}
})
const obj = {
text: [],
code: [],
}
data.forEach((v, i) => {
obj.text.push(v.text)
obj.code.push(v.value)
})
obj.text = obj.text.join("/")
return obj
}
export default {
getNowTime,
amountFormatting,
getNdaysLater,
getTodayStartOrEnd,
addressBack,
mccBack,
drawQRcode,
addressCode,
}