UNPKG

@varonervar/components

Version:

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

77 lines (70 loc) 2.35 kB
/** * 检测数据类型 * @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 }