vxe-table-demonic
Version:
一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...
66 lines (65 loc) • 2.59 kB
JavaScript
import { watch } from 'vue';
import { VXETable } from '../../v-x-e-table';
import XEUtils from 'xe-utils';
import { ItemInfo } from './itemInfo';
import { isEnableConf } from '../../tools/utils';
export function isFormItem(item) {
return item instanceof ItemInfo;
}
export function createItem($xeform, _vm) {
return isFormItem(_vm) ? _vm : new ItemInfo($xeform, _vm);
}
export function handleFieldOrItem($xeform, fieldOrItem) {
if (fieldOrItem) {
return XEUtils.isString(fieldOrItem) ? $xeform.getItemByField(fieldOrItem) : fieldOrItem;
}
return null;
}
export function isHiddenItem($xeform, formItem) {
var reactData = $xeform.reactData;
var collapseAll = reactData.collapseAll;
var folding = formItem.folding, visible = formItem.visible;
return visible === false || (folding && collapseAll);
}
export function isActivetem($xeform, formItem) {
var visibleMethod = formItem.visibleMethod, itemRender = formItem.itemRender, visible = formItem.visible, field = formItem.field;
if (visible === false) {
return visible;
}
var compConf = isEnableConf(itemRender) ? VXETable.renderer.get(itemRender.name) : null;
if (!visibleMethod && compConf && compConf.itemVisibleMethod) {
visibleMethod = compConf.itemVisibleMethod;
}
if (!visibleMethod) {
return true;
}
var data = $xeform.props.data;
return visibleMethod({ data: data, field: field, property: field, item: formItem, $form: $xeform, $grid: $xeform.xegrid });
}
export function watchItem(props, formItem) {
Object.keys(props).forEach(function (name) {
watch(function () { return props[name]; }, function (value) {
formItem.update(name, value);
});
});
}
export function assemItem($xeform, el, formItem, formGather) {
var reactData = $xeform.reactData;
var staticItems = reactData.staticItems;
var parentElem = el.parentNode;
var parentItem = formGather ? formGather.formItem : null;
var parentItems = parentItem ? parentItem.children : staticItems;
if (parentElem) {
parentItems.splice(XEUtils.arrayIndexOf(parentElem.children, el), 0, formItem);
reactData.staticItems = staticItems.slice(0);
}
}
export function destroyItem($xeform, formItem) {
var reactData = $xeform.reactData;
var staticItems = reactData.staticItems;
var index = XEUtils.findIndexOf(staticItems, function (item) { return item.id === formItem.id; });
if (index > -1) {
staticItems.splice(index, 1);
}
reactData.staticItems = staticItems.slice(0);
}