修改系统
This commit is contained in:
253
stdiet-ui/src/utils/ruoyi.js
Normal file
253
stdiet-ui/src/utils/ruoyi.js
Normal file
@ -0,0 +1,253 @@
|
||||
/**
|
||||
* 通用js方法封装处理
|
||||
* Copyright (c) 2019 ruoyi
|
||||
*/
|
||||
|
||||
const baseURL = process.env.VUE_APP_BASE_API
|
||||
|
||||
// 日期格式化
|
||||
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), '/');
|
||||
}
|
||||
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) {
|
||||
var search = params;
|
||||
search.beginTime = "";
|
||||
search.endTime = "";
|
||||
if (null != dateRange && '' != dateRange) {
|
||||
search.beginTime = dateRange[0];
|
||||
search.endTime = dateRange[1];
|
||||
}
|
||||
return search;
|
||||
}
|
||||
|
||||
// 回显数据字典
|
||||
export function selectDictLabel(datas, value) {
|
||||
if (value === null || value === undefined) {
|
||||
return '';
|
||||
}
|
||||
var actions = [];
|
||||
Object.keys(datas).some((key) => {
|
||||
if (datas[key].dictValue == ('' + value)) {
|
||||
actions.push(datas[key].dictLabel);
|
||||
return true;
|
||||
}
|
||||
})
|
||||
return actions.join('');
|
||||
}
|
||||
|
||||
// 回显数据字典(字符串数组)
|
||||
export function selectDictLabels(datas, value, separator) {
|
||||
var actions = [];
|
||||
var currentSeparator = undefined === separator ? "," : separator;
|
||||
var temp = value.split(currentSeparator);
|
||||
Object.keys(value.split(currentSeparator)).some((val) => {
|
||||
Object.keys(datas).some((key) => {
|
||||
if (datas[key].dictValue == ('' + temp[val])) {
|
||||
actions.push(datas[key].dictLabel + currentSeparator);
|
||||
}
|
||||
})
|
||||
})
|
||||
return actions.join('').substring(0, actions.join('').length - 1);
|
||||
}
|
||||
|
||||
// 通用下载方法
|
||||
export function download(fileName) {
|
||||
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
|
||||
}
|
||||
|
||||
// 字符串格式化(%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 praseStrEmpty(str) {
|
||||
if (!str || str == "undefined" || str == "null") {
|
||||
return "";
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造树型结构数据
|
||||
* @param {*} data 数据源
|
||||
* @param {*} id id字段 默认 'id'
|
||||
* @param {*} parentId 父节点字段 默认 'parentId'
|
||||
* @param {*} children 孩子节点字段 默认 'children'
|
||||
* @param {*} rootId 根Id 默认 0
|
||||
*/
|
||||
export function handleTree(data, id, parentId, children, rootId) {
|
||||
id = id || 'id'
|
||||
parentId = parentId || 'parentId'
|
||||
children = children || 'children'
|
||||
rootId = rootId || Math.min.apply(Math, data.map(item => {
|
||||
return item[parentId]
|
||||
})) || 0
|
||||
//对源数据深度克隆
|
||||
const cloneData = JSON.parse(JSON.stringify(data))
|
||||
//循环所有项
|
||||
const treeData = cloneData.filter(father => {
|
||||
let branchArr = cloneData.filter(child => {
|
||||
//返回每一项的子级数组
|
||||
return father[id] === child[parentId]
|
||||
});
|
||||
branchArr.length > 0 ? father.children = branchArr : '';
|
||||
//返回第一层
|
||||
return father[parentId] === rootId;
|
||||
});
|
||||
return treeData != '' ? treeData : data;
|
||||
}
|
||||
|
||||
/** 数字逢三位加逗号 */
|
||||
export function toThousands(num){
|
||||
const str = num.toString();
|
||||
const reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
|
||||
return str.replace(reg,"$1,");
|
||||
}
|
||||
|
||||
export function digitUppercase(n) {
|
||||
const fraction = ['角', '分'];
|
||||
const digit = [
|
||||
'零', '壹', '贰', '叁', '肆',
|
||||
'伍', '陆', '柒', '捌', '玖'
|
||||
];
|
||||
const unit = [
|
||||
['元', '万', '亿'],
|
||||
['', '拾', '佰', '仟']
|
||||
];
|
||||
const head = n < 0 ? '欠' : '';
|
||||
n = Math.abs(n);
|
||||
let s = '';
|
||||
for (let i = 0; i < fraction.length; i++) {
|
||||
s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
|
||||
}
|
||||
s = s || '整';
|
||||
n = Math.floor(n);
|
||||
for (let i = 0; i < unit[0].length && n > 0; i++) {
|
||||
const p = '';
|
||||
for (let j = 0; j < unit[1].length && n > 0; j++) {
|
||||
p = digit[n % 10] + unit[1][j] + p;
|
||||
n = Math.floor(n / 10);
|
||||
}
|
||||
s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
|
||||
}
|
||||
return head + s.replace(/(零.)*零元/, '元')
|
||||
.replace(/(零.)+/g, '零')
|
||||
.replace(/^整$/, '零元整');
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* @params {string} idcode
|
||||
*
|
||||
* 函数参数必须是字符串,因为二代身份证号码是十八位,而在javascript中,十八位的数值会超出计算范围,造成不精确的结果,
|
||||
* 导致最后两位和计算的值不一致,从而该函数出现错误(详情查看javascript的数值范围)。
|
||||
* 为了避免这一误差,idcode必须是字符串
|
||||
*
|
||||
* 正则思路:
|
||||
* 第一位不可能是0
|
||||
* 第二位到第六位可以是0-9
|
||||
* 第七位到第十位是年份,所以七八位为19或者20
|
||||
* 十一位和十二位是月份,这两位是01-12之间的数值
|
||||
* 十三位和十四位是日期,是从01-31之间的数值
|
||||
* 十五,十六,十七都是数字0-9
|
||||
* 十八位可能是数字0-9,也可能是X
|
||||
* */
|
||||
export function validatorIDCard(idcode) {
|
||||
if (typeof idcode !== 'string') {
|
||||
return {
|
||||
code: -1,
|
||||
msg: "为了避免javascript数值范围误差,idcode 必须是字符串"
|
||||
}
|
||||
}
|
||||
const idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
|
||||
// 判断格式是否正确
|
||||
const format = idcard_patter.test(idcode);
|
||||
if (!format) {
|
||||
return {
|
||||
code: -1,
|
||||
msg: "身份证号码格式错误"
|
||||
}
|
||||
}
|
||||
// 加权因子
|
||||
const weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
|
||||
// 校验码
|
||||
const check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
||||
const last = idcode[17];//最后一位
|
||||
const seventeen = idcode.substring(0, 17);
|
||||
// ISO 7064:1983.MOD 11-2
|
||||
// 判断最后一位校验码是否正确
|
||||
const arr = seventeen.split("");
|
||||
const len = arr.length;
|
||||
let num = 0;
|
||||
for (let i = 0; i < len; i++) {
|
||||
num += arr[i] * weight_factor[i];
|
||||
}
|
||||
// 获取余数
|
||||
const resisue = num % 11;
|
||||
const last_no = check_code[resisue];
|
||||
// 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
|
||||
const result = last === last_no ? true : false;
|
||||
return {
|
||||
code: result ? 1 : -1,
|
||||
msg: !result ? "身份证号码格式错误" : ""
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user