UNPKG

@varonervar/components

Version:

> 基于[Element-UI](https://element.eleme.cn/#/zh-CN/component/quickstart) 封装常用组件,部分组件参考[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)

75 lines (66 loc) 2.42 kB
import "core-js/modules/es.array.includes.js"; /** * 检测数据类型 * @param {any} target 目标数据 */ export const typeCheck = target => Object.prototype.toString.call(target).slice(8, -1); /** * @param {string} path * @returns {Boolean} */ export default function isExternal(path) { return /^(https?:|mailto:|tel:)/.test(path); } /** * This is just a simple version of deep copy * Has a lot of edge cases bug * If you want to use a perfect deep copy, use lodash's _.cloneDeep * @param {Object} source 源对象 * @returns {Object} 克隆对象 */ export function deepClone(source) { if (!['Array', 'Object'].includes(typeCheck(source))) { return source; } const targetObj = source.constructor(); Object.keys(source).forEach(keys => { if (['Array', 'Object'].includes(typeCheck(source[keys]))) { targetObj[keys] = deepClone(source[keys]); } else { targetObj[keys] = source[keys]; } }); return targetObj; } // 判断值是否不存在, 提交数据时,存在值为false或0的情况 export const isFalse = data => { return data == null || data === ''; }; // 业务函数:检查组件的rule用change还是blur export function changeRuleItems(type) { return ['radio', 'select', 'datePicker', 'checkbox', 'cascader', 'timePicker'].includes(type); } // 业务函数:检查时间是不是范围选择 export function editFormDateIsRange(item) { return item.template === 'datePicker' && ['daterange', 'datetimerange'].includes(item.type); } // 业务函数:检查编辑组件的是否初始赋值数组 export function editFormatIsArr(item) { // 如果有指定是数组,则返回数组 if (item.valIsArr) return true; const selectMul = item.template === 'select' && item.bind && item.bind.multiple; const dateMul = editFormDateIsRange(item); const timeMul = item.template === 'timePicker' && item.isRange; return ['checkbox', 'cascader'].includes(item.template) || selectMul || dateMul || timeMul; } // 业务函数:json数据处理, condition与form export function ajaxDataDispose(DATA) { if (typeCheck(DATA) !== 'Object') return DATA; const result = {}; Object.keys(DATA).forEach(key => { if (key.includes(',')) { const data = DATA[key] || []; key.split(',').forEach((k, i) => { result[k] = data[i]; }); } else { result[key] = DATA[key]; } }); return result; }