vxe-table
Version:
一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...
79 lines (71 loc) • 2.31 kB
JavaScript
import VXETable from '../../v-x-e-table'
const lineOffsetSizes = {
mini: 3,
small: 2,
medium: 1
}
function countTreeExpand (prevRow, params) {
const { $table } = params
const rowChildren = prevRow[$table.treeOpts.children]
let count = 1
if ($table.isTreeExpandByRow(prevRow)) {
for (let index = 0; index < rowChildren.length; index++) {
count += countTreeExpand(rowChildren[index], params)
}
}
return count
}
export function getOffsetSize ($xetable) {
return lineOffsetSizes[$xetable.vSize] || 0
}
export function calcTreeLine (params, items) {
const { $table, $rowIndex } = params
let expandSize = 1
if ($rowIndex) {
expandSize = countTreeExpand(items[$rowIndex - 1], params)
}
return $table.rowHeight * expandSize - ($rowIndex ? 1 : (12 - getOffsetSize($table)))
}
export function mergeBodyMethod (mergeList, _rowIndex, _columnIndex) {
for (let mIndex = 0; mIndex < mergeList.length; mIndex++) {
const { row: mergeRowIndex, col: mergeColIndex, rowspan: mergeRowspan, colspan: mergeColspan } = mergeList[mIndex]
if (mergeColIndex > -1 && mergeRowIndex > -1 && mergeRowspan && mergeColspan) {
if (mergeRowIndex === _rowIndex && mergeColIndex === _columnIndex) {
return { rowspan: mergeRowspan, colspan: mergeColspan }
}
if (_rowIndex >= mergeRowIndex && _rowIndex < mergeRowIndex + mergeRowspan && _columnIndex >= mergeColIndex && _columnIndex < mergeColIndex + mergeColspan) {
return { rowspan: 0, colspan: 0 }
}
}
}
}
export function clearTableDefaultStatus (_vm) {
_vm.inited = false
_vm.clearSort()
_vm.clearCurrentRow()
_vm.clearCurrentColumn()
_vm.clearRadioRow()
_vm.clearRadioReserve()
_vm.clearCheckboxRow()
_vm.clearCheckboxReserve()
_vm.clearRowExpand()
_vm.clearTreeExpand()
_vm.clearTreeExpandReserve()
if (VXETable._edit) {
_vm.clearActived()
}
if (_vm.keyboardConfig || _vm.mouseConfig) {
_vm.clearSelected()
}
if (_vm.mouseConfig) {
_vm.clearCellAreas()
_vm.clearCopyCellArea()
}
return _vm.clearScroll()
}
export function clearTableAllStatus (_vm) {
if (VXETable._filter) {
return _vm.clearFilter()
}
return clearTableDefaultStatus(_vm)
}