源文件

This commit is contained in:
gyq
2024-05-23 14:39:33 +08:00
commit a1128dd791
2997 changed files with 500069 additions and 0 deletions

View File

@@ -0,0 +1,233 @@
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,
}