kakapay后台管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

460 lines
12 KiB

/**
* 通用js方法封装处理
* Copyright (c) 2019 ruoyi
*
*
*
*
*
* pay_channel_name,key_id, user_id, store_id, order_no, out_trade_no,
* transaction_id, tran_amt, pay_amt, pay_type, channel_type, pay_time, order_status,
* rate, channel_rate, mch_id, mch_name, notify_url, back_url, store_no, bank_code,
* bank_id, card_type, product_name, product_desc, qrcode_img, qrcode_url, user_key, source_type, attach,
* version, charset, sign_type, create_time, update_time, order_msg, media_type
* name, mobile,store_settle_time,store_settle,
real_amt,rate_amt,poundage_rate,poundage_amt,
store_name,store_type,type_name pay_type_name,
channel_name pay_channel_name
*
*/
const baseURL = process.env.VUE_APP_BASE_API
/**
* 从日期数组生成 range 对象
* @return {{beginTime: string, endTime: string}}
*/
export function calcRange(array) {
let range = {};
if (array && array.length > 0) {
range.beginTime = parseTime(array[0]);
range.endTime = parseTime(array[1]);
// 替换 endTime 为 23:59:59
range.endTime = range.endTime.replace(/(\d{2}:\d{2}:\d{2})/, '23:59:59');
} else {
throw new Error('Date range is empty!');
}
return range;
}
// 时区北京
export function BeiJingDate() {
return new Date(new Date().getTime()+(parseInt(new Date().getTimezoneOffset()/60) + 8)*3600*1000);
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
}
//获取当前年月日
export function today() {
let nowDate = new Date();
let date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
date: nowDate.getDate(),
}
if (date.date <= 9) {
return date.year + '-' + 0 + date.month + '-' + 0 + date.date;
} else {
return date.year + '-' + 0 + date.month + '-' + date.date;
}
}
// 添加日期范围
export function addSESDateRange(params, dateRange, propName) {
var search = params;
search.beginTime = null
search.endTime = null;
search.updateBeginTime = null
search.updateEndTime = null;
if (propName) {
if (dateRange[0]) {
if (dateRange[0][0] && dateRange[0][1]) {
search.beginTime = dateRange[0][0];
search.endTime = dateRange[0][1];
} else if (!dateRange[0][0]) {
search.beginTime = undefined;
search.endTime = undefined;
}
}
if (dateRange[1]) {
if (dateRange[1][0] && dateRange[1][1]) {
search.updateBeginTime = dateRange[1][0];
search.updateEndTime = dateRange[1][1];
} else if (!dateRange[1][0]) {
search.updateBeginTime = undefined;
search.updateEndTime = undefined;
}
}
}
if (!propName) {
if (null != dateRange && '' != dateRange) {
// search.beginTime = dateRange[0];
// search.endTime = dateRange[1];
if (dateRange[0] && dateRange[1]) {
search.beginTime = dateRange[0];
search.endTime = dateRange[1];
} else if (!dateRange[0]) {
search.beginTime = undefined;
search.endTime = undefined;
}
}
}
return search;
}
// 日期格式化
export function parseTime(time, pattern) {
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') {
return ['日', '一', '二', '三', '四', '五', '六'][value]
}
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
let search = params;
search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
dateRange = Array.isArray(dateRange) ? dateRange : [];
if (typeof (propName) === 'undefined') {
search.params['beginTime'] = dateRange[0];
search.params['endTime'] = dateRange[1];
} else {
search.params['begin' + propName] = dateRange[0];
search.params['end' + propName] = dateRange[1];
}
return search;
}
// 回显数据字典
export function selectDictLabel(datas, value) {
if (value === undefined) {
return "";
}
var actions = [];
Object.keys(datas).some((key) => {
if (datas[key].value == ('' + value)) {
actions.push(datas[key].label);
return true;
}
})
if (actions.length === 0) {
actions.push(value);
}
return actions.join('');
}
// 回显数据字典(字符串、数组)
export function selectDictLabels(datas, value, separator) {
if (value === undefined || value.length === 0) {
return "";
}
if (Array.isArray(value)) {
value = value.join(",");
}
var actions = [];
var currentSeparator = undefined === separator ? "," : separator;
var temp = value.split(currentSeparator);
Object.keys(value.split(currentSeparator)).some((val) => {
var match = false;
Object.keys(datas).some((key) => {
if (datas[key].value == ('' + temp[val])) {
actions.push(datas[key].label + currentSeparator);
match = true;
}
})
if (!match) {
actions.push(temp[val] + currentSeparator);
}
})
return actions.join('').substring(0, actions.join('').length - 1);
}
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments,
flag = true,
i = 1;
str = str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
}
// 转换字符串,undefined,null等转化为""
export function parseStrEmpty(str) {
if (!str || str == "undefined" || str == "null") {
return "";
}
return str;
}
// 数据合并
export function mergeRecursive(source, target) {
for (var p in target) {
try {
if (target[p].constructor == Object) {
source[p] = mergeRecursive(source[p], target[p]);
} else {
source[p] = target[p];
}
} catch (e) {
source[p] = target[p];
}
}
return source;
};
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
}
/**
* 参数处理
* @param {*} params 参数
*/
export function tansParams(params) {
let result = ''
for (const propName of Object.keys(params)) {
const value = params[propName];
var part = encodeURIComponent(propName) + "=";
if (value !== null && value !== "" && typeof (value) !== "undefined") {
if (typeof value === 'object') {
for (const key of Object.keys(value)) {
if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') {
let params = propName + '[' + key + ']';
var subPart = encodeURIComponent(params) + "=";
result += subPart + encodeURIComponent(value[key]) + "&";
}
}
} else {
result += part + encodeURIComponent(value) + "&";
}
}
}
return result
}
// 验证是否为blob格式
export async function blobValidate(data) {
try {
const text = await data.text();
JSON.parse(text);
return false;
} catch (error) {
return true;
}
}
/**
* toFixed 但是不四舍五入
*/
export function toFixedWithOutRounded(num, s) {
const re = new RegExp('^-?\\d+(?:\.\\d{0,' + (s || -1) + '})?');
return num.toString().match(re)[0];
}
/**
* 格式化金额, 保留两位小数
* @param o
* @param o.amount {number | string} 金额
* @param o.precision {number} 精度, 默认 100 (分)
* @param o.thousand {boolean} 是否需要千分位, 默认 true
* @param o.decimal {boolean} 是否需要小数点, 默认 true
* @param o.decimalLength {number} 小数点位数, 默认 2
* @param o.decimalSeparator {string} 小数点分隔符, 默认 '.'
* @param o.thousandSeparator {string} 千分位分隔符, 默认 ','
* @return {string | number}
*/
export const amountFormat = (o) => {
if (o.amount === undefined || o.amount === null) {
return o.amount;
}
let amount = o.amount;
// 如果 amount 是字符串, 则转换为数字
if (typeof amount === 'string') {
amount = parseFloat(amount);
}
let precision = o.precision || 100;
let thousand = o.thousand === undefined ? true : o.thousand;
let decimal = o.decimal === undefined ? true : o.decimal;
let decimalLength = o.decimalLength || 2;
let decimalSeparator = o.decimalSeparator || '.';
let thousandSeparator = o.thousandSeparator || ',';
amount = amount / precision;
amount = toFixedWithOutRounded(amount, decimalLength);
if (thousand) {
amount = amount.replace(/(\d)(?=(\d{3})+\.)/g, '$1' + thousandSeparator);
}
if (decimal) {
amount = amount.replace('.', decimalSeparator);
}
return amount;
}
/**
* 格式化金额, 自动进万, 百万
* @param amount
* @param unit
*/
export function amountFriendlyFormat(amount, unit) {
// 百万
if (amount >= 1000000 || unit === '百万') {
return {
unit: '百万',
amount: amount / 1000000,
display: `${amount / 1000000}百万`
}
}
// 万
if (amount >= 10000 || unit === '万') {
return {
unit: '万',
amount: amount / 10000,
display: `${amount / 10000}`
}
}
// 百
if (amount >= 100 || unit === '百') {
return {
unit: '百',
amount: amount / 100,
display: `${amount / 100}`
}
}
return {
unit: '',
amount: amount,
display: amount
};
}
/**
* sortBy
*/
export function sortBy(arr, key) {
return arr.sort(function (a, b) {
return a[key] - b[key];
});
}
/**
* 获取今天星期几
*/
export function getWeek() {
let week = new Date().getDay();
switch (week) {
case 0:
return "星期日";
case 1:
return "星期一";
case 2:
return "星期二";
case 3:
return "星期三";
case 4:
return "星期四";
case 5:
return "星期五";
case 6:
return "星期六";
}
}