import React from 'react'; import moment from 'moment'; import { Icon, message, notification } from 'antd'; import { getOnestopKey } from '../../Services'; let messageTime = new Date().getTime() - 3000; /** * 校验 开始时间必须在结束时间之前的函数 * */ export function checkDate(endTime = '2019-01-01', startTime = '2018-12-31') { return moment(endTime).isAfter(moment(startTime)); } /** * 去除字符串中的所有html 标签 * */ export function matchReg(str) { let reg = /<\/?.+?\/?>/g; return str.replace(reg, '').replace(/ /g, ' '); } export function htmlFormat(str) { if(typeof str !== 'string'){ return ''; } const newTxt = str.replace(/\s+([^<>]+)(?=<)/g, function(match) { return match.replace(/\s/g, ' '); }); return newTxt; } export function countSpecialField(filedSpanBig, nameSpanBig) { let style = {}; if (document.body.clientWidth > 1400) { if (filedSpanBig === 5) { // 当设置一行排列5个字段时 自定义宽度为20% style = { width: '20%' }; } if (filedSpanBig === 1 && nameSpanBig === 2) { // 当一行显示一个字段 然后名字又特别长时 使用这个width style = { width: '6%' }; } } return style; }; /** * 深拷贝函数 * */ export function deepCopy(obj, parent = null) { if (React.isValidElement(obj)) { return React.cloneElement(obj); } if (['boolean', 'string', 'number'].indexOf(typeof obj) > -1 || !obj) { return obj; } let result; if (obj.constructor === Array) { result = []; } else { result = {}; } let keys = Object.keys(obj), key = null, temp = null, _parent = parent; // 该字段有父级则需要追溯该字段的父级 while (_parent) { // 如果该字段引用了它的父级则为循环引用 if (_parent.originalParent === obj) { // 循环引用直接返回同级的新对象 return _parent.currentParent; } _parent = _parent.parent; } for (let i = 0; i < keys.length; i++) { key = keys[i]; temp = obj[key]; // 如果字段的值也是一个对象 if (temp && typeof temp === 'object') { // 递归执行深拷贝 将同级的待拷贝对象与新对象传递给 parent 方便追溯循环引用 result[key] = deepCopy(temp, { originalParent: obj, currentParent: result, parent: parent, }); } else { result[key] = temp; } } return result; } /** * 获取表单元素中每个元素的值, * @param type * @param e * @param other * @returns {*|boolean} */ export function getFormElemValue(type, e, other) { let value = e; switch (type) { case 'input': value = e.target.value; break; case 'checkbox': value = e.target.checked; break; case 'textarea': value = e.target.value; break; case 'buttonUpload': value = e.url; break; case 'upload': value = Array.isArray(e) ? e.join(',') : ''; break; default: break; } return value; } /** * 生成随机字符串 * */ export function randomStr() { return Math.random().toString(36).substr(2); } export function isJSON(str) { if (typeof str == 'string') { try { JSON.parse(str); if (typeof JSON.parse(str) === 'number') { return false; } return true; } catch (e) { return false; } } } export function checkMustHaveValue(configFileds, data){ for (let item of configFileds) { if (!data[item.key] && data[item.key] !== false && data[item.key] !== 0) { return false; } } return true; } export function mustHaveValue(configFields, data) { for (let item of configFields) { if (!item.required) continue; if (Array.isArray(data[item.key]) && data[item.key].length < 1) { message.warning(`${item.name}是必填项请填写`); return false; } if (!data[item.key] && data[item.key] !== false && data[item.key] !== 0) { message.warning(`${item.name}是必填项请填写`); return false; } } return true; } /** * 判断数组中是否有重复元素 * 通过数组排序,比较临近元素 * */ export function isRepeat(ary) { if (ary.length <= 1) { return false; } let nary = ary.sort(); for (let i = 0; i < ary.length - 1; i++) { if (nary[i] === nary[i + 1]) { return nary[i]; // alert("数组重复内容:" + nary[i]); } } return false; } export function displayRender(label) { if (label) { return label[label.length - 1]; } else { return ''; } } export function isEmptyValue(value) { return typeof value === 'undefined' || value === null || value === ''; } // 全局的通知消息组件 export function controlNotification(props) { const nowTime = new Date().getTime(); if (nowTime - messageTime < 3000) { return; } messageTime = nowTime; notification.info({ ...props, icon: <Icon type="info-circle" style={{ color: '#fa8c16' }} />, }); return true; } export function setOneStopConfig(value){ if(typeof value !== 'string'){ value = JSON.stringify(value); } localStorage.setItem('oneStopConfig', value); } export function getOneStopConfig(key){ let configList = localStorage.getItem('oneStopConfig'); if(configList && isJSON(configList)){ let data = JSON.parse(configList); if(data && typeof data === 'object'){ if(typeof data === 'undefined'){ return ''; } return data[key] || false; } }else{ return getOnestopKey(key); } }