234 lines
6.4 KiB
JavaScript
234 lines
6.4 KiB
JavaScript
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,
|
||
}
|