vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
87 lines (76 loc) • 1.92 kB
JavaScript
import XEUtils from 'xe-utils/ctor'
import GlobalConfig from '../conf'
import interceptor from './src/interceptor'
import renderer from './src/renderer'
import commands from './src/commands'
import menus from './src/menus'
import formats from './src/formats'
import setup from './src/setup'
import { UtilTools } from '../tools'
const installedPlugins = []
function use (Plugin, options) {
/* eslint-disable @typescript-eslint/no-use-before-define */
if (Plugin && Plugin.install) {
if (installedPlugins.indexOf(Plugin) === -1) {
Plugin.install(VXETable, options)
installedPlugins.push(Plugin)
}
}
return VXETable
}
/**
* 检测模块的安装顺序是否正确
*/
function reg (key) {
/* eslint-disable @typescript-eslint/no-use-before-define */
if (VXETable.Table) {
UtilTools.error('vxe.error.useErr', [key])
}
VXETable[`_${key}`] = 1
}
export const VXETable = {
t: (key, args) => GlobalConfig.i18n(key, args),
v: 'v3',
reg,
use,
setup,
interceptor,
renderer,
commands,
formats,
menus
}
/**
* 获取当前的 zIndex
*/
Object.defineProperty(VXETable, 'zIndex', { get: UtilTools.getLastZIndex })
/**
* 获取下一个 zIndex
*/
Object.defineProperty(VXETable, 'nextZIndex', { get: UtilTools.nextZIndex })
function getExportOrImpotType (types, flag) {
const rest = []
XEUtils.objectEach(types, (val, type) => {
if (val === 0 || val === flag) {
rest.push(type)
}
})
return rest
}
/**
* 获取所有导出类型
*/
Object.defineProperty(VXETable, 'exportTypes', {
get () {
return getExportOrImpotType(GlobalConfig.export.types, 1)
}
})
/**
* 获取所有导入类型
*/
Object.defineProperty(VXETable, 'importTypes', {
get () {
return getExportOrImpotType(GlobalConfig.export.types, 2)
}
})
export default VXETable