const isObject = (obj) => { return Object.prototype.toString.call(obj) === '[object Object]'; }; const isString = (obj) => { return Object.prototype.toString.call(obj) === '[object String]'; }; const isNumber = (num) => { return Object.prototype.toString.call(num) === '[object Number]'; }; const isArray = (arr) => { return Object.prototype.toString.call(arr) === '[object Array]'; }; const isFunction = (obj) => { return Object.prototype.toString.call(obj) === '[object Function]'; }; const hasMoney = (configItems) => { if (!configItems) return false; let _items = configItems.split('|'); return !!_items.find((item) => item === '金额'); }; const isSelect = (configItems) => { if (!configItems) return false; let _items = configItems.split('|'); return !!_items.find((item) => item === 'renderAsSelect'); }; // options=name1[.value1],name2[.value2],name3[.value3]; const returnOptions = (configItems) => { if (!configItems) return false; let _items = configItems.split('|'); let _options = _items.find((item) => item.includes('options=')); if (!_options) return false; return _options.replace('options=', '').split(','); }; const returnRows = (configItems) => { if (!configItems) return 3; let _items = configItems.split('|'); let _options = _items.find((item) => item.includes('rows=')); if (!_options) return 3; let _rows = Number(_options.replace('rows=', '')); return !isNaN(_rows) && _rows >= 1 ? _rows : 3; }; const returnCols = (configItems) => { if (!configItems) return 1; let _items = configItems.split('|'); let _options = _items.find((item) => item.includes('cols=')); if (!_options) return 1; let _cols = Number(_options.replace('cols=', '')); return !isNaN(_cols) && _cols <= 3 && _cols >= 0 ? _cols : 1; }; /** * @description: 用来在summary中处理数值的配置 * @params: 参数描述 * @date: 2022/8/10 * @author: ChenLong */ const returnHandledNumber = (configItems, num, isSummary) => { // 精度、前缀、后缀、倍率 // $_d|_d%|_d*0.0001|金额|0.00 if (isNaN(num)) return '-'; if (!configItems) return num; num = Number(num); let _items = configItems.split('|'); /* let prefix = ''; let suffix = '';*/ let template = '_d'; let precision = 0; let rate = 1; _items.forEach((item) => { let _arr = []; if (item.match(/_d[^\*]/)) { // 后缀 template = item; } else if (item.match(/^_d\*/)) { // 倍率 let _rate = item.replace(/_d\*/, ''); rate = _rate && isSummary ? Number(_rate) : 1; // 总结栏计算需要计算倍率,其他不用 } else if (item.match(/^0\./)) { // 精度 precision = item.replace('0.', '').length; } }); // 可能存在NaN的问题 let final = _items.includes('金额') ? Number((num * rate).toFixed(precision)).toLocaleString() : Number((num * rate).toFixed(precision)).toLocaleString(); return template.replace(/_d/, isString(final) ? final : '-'); }; /** * @description: 返回configItems内配置的默认值、默认模式等等 * @params: 参数描述 * @date: 2022/8/12 * @author: ChenLong * @params: * configItems 报表字段的配置 例如 defaultValue=智慧水务 * * defaultDateModel=customer|defaultDateValue=2022-01-01,2022-12-31; * keysArray * * 所需要返回的值的key的集合,比如你需要获取configItems中的’defaultValue‘,那么keysArray=['defaultValue']; * @returns: * defaultValue 通用参数 默认值 * defaultDateModel 时间参数 默认模式 * defaultDateValue 时间参数 默认时间 */ const returnDefaultValueOrConfigs = (configItems = '', keysArray = []) => { let _map = {}; let _configItemsArray = configItems.split('|'); keysArray.forEach((key) => { _map[key] = _configItemsArray.find((item) => item.includes(`${key}=`))?.replace(`${key}=`, ''); }); return _map; }; function downloadFunc(url, name, target = '_self') { const a = document.createElement('a'); a.href = url; a.target = target; a.download = name; a.click(); a.remove(); } /** * @description: 校验文件的名称是否包含特殊字符 * @params: {Object: File} file file对象 { special:Boolean } 是否去除/的匹配 * @date: 2021/12/8 * @author: ChenLong * @returns {Object} {type: error | success ,content: 提示...} */ function filenameVerification(file, special) { // 文件名含有特殊字符 提示不能上传 {+,:/?#[]@!$&\\*+;=} // 规则对象(flag) var flag = !special ? new RegExp("[`~!@#$^&*=|{}':;',\\[\\]/?~!@#¥&*——|{}【】‘;:”“'。,、?]") : new RegExp("[`~!@#$^&*=|{}':;',[\\]?~!@#¥&*——|{}【】‘;:”“'。,、?]"); if (flag.test(file.name)) { return { type: 'error', content: `文件名格式错误,请检查文件名是否含有特殊字符${"~!@#$^&*=|{}':;',\\[\\]/?~!@#¥&*——|{}【】‘;:”“'。,、?"}`, }; } return { type: 'success', content: `上传成功!`, }; } export { isObject, isString, isNumber, hasMoney, isArray, isFunction, returnHandledNumber, returnDefaultValueOrConfigs, downloadFunc, filenameVerification, isSelect, returnOptions, returnRows, returnCols, };