vhb-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
53 lines (45 loc) • 1.45 kB
JavaScript
import XEUtils from 'xe-utils'
class OptionConfig {
constructor ($xeselect, _vm) {
Object.assign(this, {
value: _vm.value,
label: _vm.label,
visible: _vm.visible,
className: _vm.className,
disabled: _vm.disabled
})
}
update (name, value) {
this[name] = value
}
}
export function isOption (option) {
return option instanceof OptionConfig
}
export function getOptionConfig ($xeselect, _vm, options) {
return isOption(_vm) ? _vm : new OptionConfig($xeselect, _vm, options)
}
export function createOption ($xeselect, _vm) {
return getOptionConfig($xeselect, _vm)
}
export function destroyOption (_vm) {
const { $xeselect, optionConfig } = _vm
const matchObj = XEUtils.findTree($xeselect.collectOption, option => option === optionConfig, { children: 'options' })
if (matchObj) {
matchObj.items.splice(matchObj.index, 1)
}
}
export function assemOption (_vm) {
const { $el, $xeselect, $xeoptgroup, optionConfig } = _vm
const groupConfig = $xeoptgroup ? $xeoptgroup.optionConfig : null
if (groupConfig) {
// 子选项才允许自定义插槽
optionConfig.slots = _vm.$slots
if (!groupConfig.options) {
groupConfig.options = []
}
groupConfig.options.splice([].indexOf.call($xeoptgroup.$el.children, $el), 0, optionConfig)
} else {
$xeselect.collectOption.splice([].indexOf.call($xeselect.$refs.hideOption.children, $el), 0, optionConfig)
}
}