crud-up
Version:
基于el-plus-crud上做细微修改以适配新的依赖特性 原版请见https://github.com/KDJack/el-plus-crud
57 lines (47 loc) • 1.91 kB
text/typescript
import { App } from 'vue'
import components from './components-list'
import ElPlusForm from './components/el-plus-form/ElPlusForm.vue'
import ElPlusFormDialog from './components/el-plus-form/ElPlusFormDialog.vue'
import ElPlusFormGroup from './components/el-plus-form/ElPlusFormGroup.vue'
import ElPlusTable from './components/el-plus-table/ElPlusTable.vue'
import defaultConf from './config'
import * as all from '../types'
import { cloneDeep, debounce } from 'lodash-es'
export default {
install: (app: App, config?: all.ICRUDConfig, format?: { [key: string]: Function }, globalData?: { [key: string]: Function }) => {
// 合并配置
deepMerge(defaultConf, config || {})
defaultConf.debug && console.log('initConfig: ', defaultConf)
// 这里注入format对象
app.provide('format', format)
app.provide('globalData', globalData)
// 这里注入defaultConf
app.provide('defaultConf', defaultConf)
// 这里注入lodash
app.provide('lodash', { cloneDeep, debounce })
// 循环注册表单组件
components.unshift(ElPlusForm)
components.unshift(ElPlusFormDialog)
components.unshift(ElPlusFormGroup)
// 注册列表组件
components.push(ElPlusTable)
defaultConf.debug && console.log('components: ', components)
components.map((component: any) => {
app.component(component.name, component)
})
}
}
/**
* 深度合并对象
* @param obj1
* @param obj2
* @returns
*/
function deepMerge(obj1: any, obj2: any) {
let key
for (key in obj2) {
// 如果target(也就是obj1[key])存在,且是对象的话再去调用deepMerge,否则就是obj1[key]里面没这个对象,需要与obj2[key]合并
obj1[key] = obj1[key] && obj1[key].toString() === '[object Object]' ? deepMerge(obj1[key], obj2[key]) : (obj1[key] = obj2[key])
}
return obj1
}