同步操作将从 XE/vxe-table 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import { h, VNode } from 'vue'import XEUtils from 'xe-utils'import { VxeUI } from '../../ui'import { getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'import { updateCellTitle } from '../../ui/src/dom'import { createColumn, getRowid } from './util'import { getSlotVNs } from '../../ui/src/vn'import type { VxeTableConstructor, VxeTableDefines, VxeTablePrivateMethods, VxeComponentSlotType } from '../../../types'const { getI18n, getIcon, renderer } = VxeUIfunction renderTitlePrefixIcon (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst titlePrefix = column.titlePrefix || column.titleHelpreturn titlePrefix? [h('i', {class: ['vxe-cell-title-prefix-icon', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],onMouseenter (evnt: MouseEvent) {$table.triggerHeaderTitleEvent(evnt, titlePrefix, params)},onMouseleave (evnt: MouseEvent) {$table.handleTargetLeaveEvent(evnt)}})]: []}function renderTitleSuffixIcon (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst titleSuffix = column.titleSuffixreturn titleSuffix? [h('i', {class: ['vxe-cell-title-suffix-icon', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],onMouseenter (evnt: MouseEvent) {$table.triggerHeaderTitleEvent(evnt, titleSuffix, params)},onMouseleave (evnt: MouseEvent) {$table.handleTargetLeaveEvent(evnt)}})]: []}function renderTitleContent (params: VxeTableDefines.CellRenderHeaderParams, content: VxeComponentSlotType | VxeComponentSlotType[]) {const { $table, column } = paramsconst { props, reactData } = $tableconst { computeTooltipOpts } = $table.getComputeMaps()const { showHeaderOverflow: allColumnHeaderOverflow } = propsconst { type, showHeaderOverflow } = columnconst tooltipOpts = computeTooltipOpts.valueconst showAllTip = tooltipOpts.showAllconst headOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflowconst showTitle = headOverflow === 'title'const showTooltip = headOverflow === true || headOverflow === 'tooltip'const ons: any = {}if (showTitle || showTooltip || showAllTip) {ons.onMouseenter = (evnt: MouseEvent) => {if (reactData._isResize) {return}if (showTitle) {updateCellTitle(evnt.currentTarget, column)} else if (showTooltip || showAllTip) {$table.triggerHeaderTooltipEvent(evnt, params)}}}if (showTooltip || showAllTip) {ons.onMouseleave = (evnt: MouseEvent) => {if (reactData._isResize) {return}if (showTooltip || showAllTip) {$table.handleTargetLeaveEvent(evnt)}}}return [type === 'html' && XEUtils.isString(content)? h('span', {class: 'vxe-cell--title',innerHTML: content,...ons}): h('span', {class: 'vxe-cell--title',...ons}, getSlotVNs(content))]}function getFooterContent (params: VxeTableDefines.CellRenderFooterParams) {const { $table, column, _columnIndex, items, row } = paramsconst { slots, editRender, cellRender } = columnconst renderOpts = editRender || cellRenderconst footerSlot = slots ? slots.footer : nullif (footerSlot) {return $table.callSlot(footerSlot, params)}if (renderOpts) {const compConf = renderer.get(renderOpts.name)if (compConf) {const rtFooter = compConf.renderTableFooter || compConf.renderFooterif (rtFooter) {return getSlotVNs(rtFooter(renderOpts, params))}}}// 兼容老模式if (XEUtils.isArray(items)) {return [formatText(items[_columnIndex], 1)]}return [formatText(XEUtils.get(row, column.field), 1)]}function getDefaultCellLabel (params: VxeTableDefines.CellRenderBodyParams) {const { $table, row, column } = paramsreturn formatText($table.getCellLabel(row, column), 1)}export const Cell = {createColumn ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, columnOpts: VxeTableDefines.ColumnOptions | VxeTableDefines.ColumnInfo) {const { type, sortable, filters, editRender, treeNode } = columnOptsconst { props } = $xeTableconst { editConfig } = propsconst { computeEditOpts, computeCheckboxOpts } = $xeTable.getComputeMaps()const checkboxOpts = computeCheckboxOpts.valueconst editOpts = computeEditOpts.valueconst renConfs: any = {renderHeader: Cell.renderDefaultHeader,renderCell: treeNode ? Cell.renderTreeCell : Cell.renderDefaultCell,renderFooter: Cell.renderDefaultFooter}switch (type) {case 'seq':renConfs.renderHeader = Cell.renderSeqHeaderrenConfs.renderCell = treeNode ? Cell.renderTreeIndexCell : Cell.renderSeqCellbreakcase 'radio':renConfs.renderHeader = Cell.renderRadioHeaderrenConfs.renderCell = treeNode ? Cell.renderTreeRadioCell : Cell.renderRadioCellbreakcase 'checkbox':renConfs.renderHeader = Cell.renderCheckboxHeaderrenConfs.renderCell = checkboxOpts.checkField ? (treeNode ? Cell.renderTreeSelectionCellByProp : Cell.renderCheckboxCellByProp) : (treeNode ? Cell.renderTreeSelectionCell : Cell.renderCheckboxCell)breakcase 'expand':renConfs.renderCell = Cell.renderExpandCellrenConfs.renderData = Cell.renderExpandDatabreakcase 'html':renConfs.renderCell = treeNode ? Cell.renderTreeHTMLCell : Cell.renderHTMLCellif (filters && sortable) {renConfs.renderHeader = Cell.renderSortAndFilterHeader} else if (sortable) {renConfs.renderHeader = Cell.renderSortHeader} else if (filters) {renConfs.renderHeader = Cell.renderFilterHeader}breakdefault:if (editConfig && editRender) {renConfs.renderHeader = Cell.renderEditHeaderrenConfs.renderCell = editOpts.mode === 'cell' ? (treeNode ? Cell.renderTreeCellEdit : Cell.renderCellEdit) : (treeNode ? Cell.renderTreeRowEdit : Cell.renderRowEdit)} else if (filters && sortable) {renConfs.renderHeader = Cell.renderSortAndFilterHeader} else if (sortable) {renConfs.renderHeader = Cell.renderSortHeader} else if (filters) {renConfs.renderHeader = Cell.renderFilterHeader}}return createColumn($xeTable, columnOpts, renConfs)},/*** 单元格*/renderHeaderTitle (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst { slots, editRender, cellRender } = columnconst renderOpts = editRender || cellRenderconst headerSlot = slots ? slots.header : nullif (headerSlot) {return renderTitleContent(params, $table.callSlot(headerSlot, params))}if (renderOpts) {const compConf = renderer.get(renderOpts.name)if (compConf) {const rtHeader = compConf.renderTableHeader || compConf.renderHeaderif (rtHeader) {return renderTitleContent(params, getSlotVNs(rtHeader(renderOpts, params)))}}}return renderTitleContent(params, formatText(column.getTitle(), 1))},renderDefaultHeader (params: VxeTableDefines.CellRenderHeaderParams) {return renderTitlePrefixIcon(params).concat(Cell.renderHeaderTitle(params)).concat(renderTitleSuffixIcon(params))},renderDefaultCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, row, column } = paramsconst { slots, editRender, cellRender } = columnconst renderOpts = editRender || cellRenderconst defaultSlot = slots ? slots.default : nullif (defaultSlot) {return $table.callSlot(defaultSlot, params)}if (renderOpts) {const compConf = renderer.get(renderOpts.name)if (compConf) {const rtCell = compConf.renderTableCell || compConf.renderCellconst rtDefault = compConf.renderTableDefault || compConf.renderDefaultconst renderFn = editRender ? rtCell : rtDefaultif (renderFn) {return getSlotVNs(renderFn(renderOpts, Object.assign({ $type: editRender ? 'edit' : 'cell' }, params)))}}}const cellValue = $table.getCellLabel(row, column)const cellPlaceholder = editRender ? editRender.placeholder : ''return [h('span', {class: 'vxe-cell--label'}, editRender && eqEmptyValue(cellValue)? [// 如果设置占位符h('span', {class: 'vxe-cell--placeholder'}, formatText(getFuncText(cellPlaceholder), 1))]: formatText(cellValue, 1))]},renderTreeCell (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderDefaultCell(params) as VNode[])},renderDefaultFooter (params: VxeTableDefines.CellRenderFooterParams) {return [h('span', {class: 'vxe-cell--item'}, getFooterContent(params))]},/*** 树节点*/renderTreeIcon (params: VxeTableDefines.CellRenderBodyParams, cellVNodes: VxeComponentSlotType[]) {const { $table, isHidden } = paramsconst { reactData } = $tableconst { computeTreeOpts } = $table.getComputeMaps()const { treeExpandedMaps, treeExpandLazyLoadedMaps } = reactDataconst treeOpts = computeTreeOpts.valueconst { row, column, level } = paramsconst { slots } = columnconst { indent, lazy, trigger, iconLoaded, showIcon, iconOpen, iconClose } = treeOptsconst childrenField = treeOpts.children || treeOpts.childrenFieldconst hasChildField = treeOpts.hasChild || treeOpts.hasChildFieldconst rowChilds = row[childrenField]const iconSlot = slots ? slots.icon : nulllet hasLazyChilds = falselet isAceived = falselet isLazyLoaded = falseconst ons: any = {}if (iconSlot) {return $table.callSlot(iconSlot, params)}if (!isHidden) {const rowid = getRowid($table, row)isAceived = !!treeExpandedMaps[rowid]if (lazy) {isLazyLoaded = !!treeExpandLazyLoadedMaps[rowid]hasLazyChilds = row[hasChildField]}}if (!trigger || trigger === 'default') {ons.onClick = (evnt: Event) => {$table.triggerTreeExpandEvent(evnt, params)}}return [h('div', {class: ['vxe-cell--tree-node', {'is--active': isAceived}],style: {paddingLeft: `${level * indent}px`}}, [showIcon && ((rowChilds && rowChilds.length) || hasLazyChilds)? [h('div', {class: 'vxe-tree--btn-wrapper',...ons}, [h('i', {class: ['vxe-tree--node-btn', isLazyLoaded ? (iconLoaded || getIcon().TABLE_TREE_LOADED) : (isAceived ? (iconOpen || getIcon().TABLE_TREE_OPEN) : (iconClose || getIcon().TABLE_TREE_CLOSE))]})])]: null,h('div', {class: 'vxe-tree-cell'}, cellVNodes)])]},/*** 索引*/renderSeqHeader (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst { slots } = columnconst headerSlot = slots ? slots.header : nullreturn renderTitleContent(params, headerSlot ? $table.callSlot(headerSlot, params) : formatText(column.getTitle(), 1))},renderSeqCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, column } = paramsconst { props } = $tableconst { treeConfig } = propsconst { computeSeqOpts } = $table.getComputeMaps()const seqOpts = computeSeqOpts.valueconst { slots } = columnconst defaultSlot = slots ? slots.default : nullif (defaultSlot) {return $table.callSlot(defaultSlot, params)}const { seq } = paramsconst seqMethod = seqOpts.seqMethodreturn [formatText(seqMethod ? seqMethod(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + (seq as number), 1)]},renderTreeIndexCell (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderSeqCell(params) as VNode[])},/*** 单选*/renderRadioHeader (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst { slots } = columnconst headerSlot = slots ? slots.header : nullconst titleSlot = slots ? slots.title : nullreturn renderTitleContent(params, headerSlot? $table.callSlot(headerSlot, params): [h('span', {class: 'vxe-radio--label'}, titleSlot ? $table.callSlot(titleSlot, params) : formatText(column.getTitle(), 1))])},renderRadioCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, column, isHidden } = paramsconst { reactData } = $tableconst { computeRadioOpts } = $table.getComputeMaps()const { selectRadioRow } = reactDataconst radioOpts = computeRadioOpts.valueconst { slots } = columnconst { labelField, checkMethod, visibleMethod } = radioOptsconst { row } = paramsconst defaultSlot = slots ? slots.default : nullconst radioSlot = slots ? slots.radio : nullconst isChecked = $table.eqRow(row, selectRadioRow)const isVisible = !visibleMethod || visibleMethod({ row })let isDisabled = !!checkMethodlet onsif (!isHidden) {ons = {onClick (evnt: Event) {if (!isDisabled && isVisible) {$table.triggerRadioRowEvent(evnt, params)}}}if (checkMethod) {isDisabled = !checkMethod({ row })}}const radioParams = { ...params, checked: isChecked, disabled: isDisabled, visible: isVisible }if (radioSlot) {return $table.callSlot(radioSlot, radioParams)}const radioVNs: VNode[] = []if (isVisible) {radioVNs.push(h('span', {class: ['vxe-radio--icon', isChecked ? getIcon().TABLE_RADIO_CHECKED : getIcon().TABLE_RADIO_UNCHECKED]}))}if (defaultSlot || labelField) {radioVNs.push(h('span', {class: 'vxe-radio--label'}, defaultSlot ? $table.callSlot(defaultSlot, radioParams) : XEUtils.get(row, labelField as string)))}return [h('span', {class: ['vxe-cell--radio', {'is--checked': isChecked,'is--disabled': isDisabled}],...ons}, radioVNs)]},renderTreeRadioCell (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderRadioCell(params))},/*** 多选*/renderCheckboxHeader (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column, isHidden } = paramsconst { reactData } = $tableconst { computeIsAllCheckboxDisabled, computeCheckboxOpts } = $table.getComputeMaps()const { isAllSelected: isAllCheckboxSelected, isIndeterminate: isAllCheckboxIndeterminate } = reactDataconst isAllCheckboxDisabled = computeIsAllCheckboxDisabled.valueconst { slots } = columnconst headerSlot = slots ? slots.header : nullconst titleSlot = slots ? slots.title : nullconst checkboxOpts = computeCheckboxOpts.valueconst headerTitle = column.getTitle()let onsif (!isHidden) {ons = {onClick (evnt: MouseEvent) {if (!isAllCheckboxDisabled) {$table.triggerCheckAllEvent(evnt, !isAllCheckboxSelected)}}}}const checkboxParams = { ...params, checked: isAllCheckboxSelected, disabled: isAllCheckboxDisabled, indeterminate: isAllCheckboxIndeterminate }if (headerSlot) {return renderTitleContent(checkboxParams, $table.callSlot(headerSlot, checkboxParams))}if (checkboxOpts.checkStrictly ? !checkboxOpts.showHeader : checkboxOpts.showHeader === false) {return renderTitleContent(checkboxParams, [h('span', {class: 'vxe-checkbox--label'}, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : headerTitle)])}return renderTitleContent(checkboxParams, [h('span', {class: ['vxe-cell--checkbox', {'is--checked': isAllCheckboxSelected,'is--disabled': isAllCheckboxDisabled,'is--indeterminate': isAllCheckboxIndeterminate}],title: getI18n('vxe.table.allTitle'),...ons}, [h('span', {class: ['vxe-checkbox--icon', isAllCheckboxIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllCheckboxSelected ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]})].concat(titleSlot || headerTitle? [h('span', {class: 'vxe-checkbox--label'}, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : headerTitle)]: []))])},renderCheckboxCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, row, column, isHidden } = paramsconst { props, reactData } = $tableconst { treeConfig } = propsconst { selectCheckboxMaps, treeIndeterminateMaps } = reactDataconst { computeCheckboxOpts } = $table.getComputeMaps()const checkboxOpts = computeCheckboxOpts.valueconst { labelField, checkMethod, visibleMethod } = checkboxOptsconst { slots } = columnconst defaultSlot = slots ? slots.default : nullconst checkboxSlot = slots ? slots.checkbox : nulllet indeterminate = falselet isChecked = falseconst isVisible = !visibleMethod || visibleMethod({ row })let isDisabled = !!checkMethodlet onsif (!isHidden) {const rowid = getRowid($table, row)isChecked = !!selectCheckboxMaps[rowid]ons = {onClick (evnt: MouseEvent) {if (!isDisabled && isVisible) {$table.triggerCheckRowEvent(evnt, params, !isChecked)}}}if (checkMethod) {isDisabled = !checkMethod({ row })}if (treeConfig) {indeterminate = !!treeIndeterminateMaps[rowid]}}const checkboxParams = { ...params, checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate }if (checkboxSlot) {return $table.callSlot(checkboxSlot, checkboxParams)}const checkVNs: VNode[] = []if (isVisible) {checkVNs.push(h('span', {class: ['vxe-checkbox--icon', indeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]}))}if (defaultSlot || labelField) {checkVNs.push(h('span', {class: 'vxe-checkbox--label'}, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams) : XEUtils.get(row, labelField as string)))}return [h('span', {class: ['vxe-cell--checkbox', {'is--checked': isChecked,'is--disabled': isDisabled,'is--indeterminate': indeterminate,'is--hidden': !isVisible}],...ons}, checkVNs)]},renderTreeSelectionCell (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderCheckboxCell(params))},renderCheckboxCellByProp (params: VxeTableDefines.CellRenderBodyParams) {const { $table, row, column, isHidden } = paramsconst { props, reactData } = $tableconst { treeConfig } = propsconst { treeIndeterminateMaps } = reactDataconst { computeCheckboxOpts } = $table.getComputeMaps()const checkboxOpts = computeCheckboxOpts.valueconst { labelField, checkField, checkMethod, visibleMethod } = checkboxOptsconst indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfFieldconst { slots } = columnconst defaultSlot = slots ? slots.default : nullconst checkboxSlot = slots ? slots.checkbox : nulllet isIndeterminate = falselet isChecked = falseconst isVisible = !visibleMethod || visibleMethod({ row })let isDisabled = !!checkMethodlet onsif (!isHidden) {const rowid = getRowid($table, row)isChecked = XEUtils.get(row, checkField as string)ons = {onClick (evnt: MouseEvent) {if (!isDisabled && isVisible) {$table.triggerCheckRowEvent(evnt, params, !isChecked)}}}if (checkMethod) {isDisabled = !checkMethod({ row })}if (treeConfig) {isIndeterminate = !!treeIndeterminateMaps[rowid]}}const checkboxParams = { ...params, checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate: isIndeterminate }if (checkboxSlot) {return $table.callSlot(checkboxSlot, checkboxParams)}const checkVNs: VNode[] = []if (isVisible) {checkVNs.push(h('span', {class: ['vxe-checkbox--icon', isIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isChecked ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]}))if (defaultSlot || labelField) {checkVNs.push(h('span', {class: 'vxe-checkbox--label'}, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams) : XEUtils.get(row, labelField as string)))}}return [h('span', {class: ['vxe-cell--checkbox', {'is--checked': isChecked,'is--disabled': isDisabled,'is--indeterminate': indeterminateField && !isChecked ? row[indeterminateField] : isIndeterminate,'is--hidden': !isVisible}],...ons}, checkVNs)]},renderTreeSelectionCellByProp (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderCheckboxCellByProp(params))},/*** 展开行*/renderExpandCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, isHidden, row, column } = paramsconst { reactData } = $tableconst { rowExpandedMaps, rowExpandLazyLoadedMaps } = reactDataconst { computeExpandOpts } = $table.getComputeMaps()const expandOpts = computeExpandOpts.valueconst { lazy, labelField, iconLoaded, showIcon, iconOpen, iconClose, visibleMethod } = expandOptsconst { slots } = columnconst defaultSlot = slots ? slots.default : nullconst iconSlot = slots ? slots.icon : nulllet isAceived = falselet isLazyLoaded = falseif (iconSlot) {return $table.callSlot(iconSlot, params)}if (!isHidden) {const rowid = getRowid($table, row)isAceived = !!rowExpandedMaps[rowid]if (lazy) {isLazyLoaded = !!rowExpandLazyLoadedMaps[rowid]}}return [showIcon && (!visibleMethod || visibleMethod(params))? h('span', {class: ['vxe-table--expanded', {'is--active': isAceived}],onClick (evnt: MouseEvent) {$table.triggerRowExpandEvent(evnt, params)}}, [h('i', {class: ['vxe-table--expand-btn', isLazyLoaded ? (iconLoaded || getIcon().TABLE_EXPAND_LOADED) : (isAceived ? (iconOpen || getIcon().TABLE_EXPAND_OPEN) : (iconClose || getIcon().TABLE_EXPAND_CLOSE))]})]): null,defaultSlot || labelField? h('span', {class: 'vxe-table--expand-label'}, defaultSlot ? $table.callSlot(defaultSlot, params) : XEUtils.get(row, labelField as string)): null]},renderExpandData (params: VxeTableDefines.CellRenderDataParams) {const { $table, column } = paramsconst { slots, contentRender } = columnconst contentSlot = slots ? slots.content : nullif (contentSlot) {return $table.callSlot(contentSlot, params)}if (contentRender) {const compConf = renderer.get(contentRender.name)if (compConf) {const rtExpand = compConf.renderTableExpand || compConf.renderExpandif (rtExpand) {return getSlotVNs(rtExpand(contentRender, params))}}}return []},/*** HTML 标签*/renderHTMLCell (params: VxeTableDefines.CellRenderBodyParams) {const { $table, column } = paramsconst { slots } = columnconst defaultSlot = slots ? slots.default : nullif (defaultSlot) {return $table.callSlot(defaultSlot, params)}return [h('span', {class: 'vxe-cell--html',innerHTML: getDefaultCellLabel(params)})]},renderTreeHTMLCell (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderHTMLCell(params) as VNode[])},/*** 排序和筛选*/renderSortAndFilterHeader (params: VxeTableDefines.CellRenderHeaderParams) {return Cell.renderDefaultHeader(params).concat(Cell.renderSortIcon(params)).concat(Cell.renderFilterIcon(params))},/*** 排序*/renderSortHeader (params: VxeTableDefines.CellRenderHeaderParams) {return Cell.renderDefaultHeader(params).concat(Cell.renderSortIcon(params))},renderSortIcon (params: VxeTableDefines.CellRenderHeaderParams | VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst { computeSortOpts } = $table.getComputeMaps()const sortOpts = computeSortOpts.valueconst { showIcon, iconLayout, iconAsc, iconDesc } = sortOptsconst { order } = columnif (showIcon) {return [h('span', {class: ['vxe-cell--sort', `vxe-cell--sort-${iconLayout}-layout`]}, [h('i', {class: ['vxe-sort--asc-btn', iconAsc || getIcon().TABLE_SORT_ASC, {'sort--active': order === 'asc'}],title: getI18n('vxe.table.sortAsc'),onClick (evnt: Event) {evnt.stopPropagation()$table.triggerSortEvent(evnt, column, 'asc')}}),h('i', {class: ['vxe-sort--desc-btn', iconDesc || getIcon().TABLE_SORT_DESC, {'sort--active': order === 'desc'}],title: getI18n('vxe.table.sortDesc'),onClick (evnt: Event) {evnt.stopPropagation()$table.triggerSortEvent(evnt, column, 'desc')}})])]}return []},/*** 筛选*/renderFilterHeader (params: VxeTableDefines.CellRenderHeaderParams) {return Cell.renderDefaultHeader(params).concat(Cell.renderFilterIcon(params))},renderFilterIcon (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column, hasFilter } = paramsconst { reactData } = $tableconst { filterStore } = reactDataconst { computeFilterOpts } = $table.getComputeMaps()const filterOpts = computeFilterOpts.valueconst { showIcon, iconNone, iconMatch } = filterOptsreturn showIcon? [h('span', {class: ['vxe-cell--filter', {'is--active': filterStore.visible && filterStore.column === column}]}, [h('i', {class: ['vxe-filter--btn', hasFilter ? (iconMatch || getIcon().TABLE_FILTER_MATCH) : (iconNone || getIcon().TABLE_FILTER_NONE)],title: getI18n('vxe.table.filter'),onClick (evnt: Event) {if ($table.triggerFilterEvent) {$table.triggerFilterEvent(evnt, params.column, params)}}})])]: []},/*** 可编辑*/renderEditHeader (params: VxeTableDefines.CellRenderHeaderParams) {const { $table, column } = paramsconst { props } = $tableconst { computeEditOpts } = $table.getComputeMaps()const { editConfig, editRules } = propsconst editOpts = computeEditOpts.valueconst { sortable, filters, editRender } = columnlet isRequired = falseif (editRules) {const columnRules = XEUtils.get(editRules, column.field) as VxeTableDefines.ValidatorRule[]if (columnRules) {isRequired = columnRules.some((rule) => rule.required)}}return (isEnableConf(editConfig)? [isRequired && editOpts.showAsterisk? h('i', {class: 'vxe-cell--required-icon'}): null,isEnableConf(editRender) && editOpts.showIcon? h('i', {class: ['vxe-cell--edit-icon', editOpts.icon || getIcon().TABLE_EDIT]}): null]: []).concat(Cell.renderDefaultHeader(params)).concat(sortable ? Cell.renderSortIcon(params) : []).concat(filters ? Cell.renderFilterIcon(params) : [])},// 行格编辑模式renderRowEdit (params: VxeTableDefines.CellRenderBodyParams) {const { $table, column } = paramsconst { reactData } = $tableconst { editStore } = reactDataconst { actived } = editStoreconst { editRender } = columnreturn Cell.runRenderer(params, isEnableConf(editRender) && actived && actived.row === params.row)},renderTreeRowEdit (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderRowEdit(params) as VNode[])},// 单元格编辑模式renderCellEdit (params: VxeTableDefines.CellRenderBodyParams) {const { $table, column } = paramsconst { reactData } = $tableconst { editStore } = reactDataconst { actived } = editStoreconst { editRender } = columnreturn Cell.runRenderer(params, isEnableConf(editRender) && actived && actived.row === params.row && actived.column === params.column)},renderTreeCellEdit (params: VxeTableDefines.CellRenderBodyParams) {return Cell.renderTreeIcon(params, Cell.renderCellEdit(params) as VNode[])},runRenderer (params: VxeTableDefines.CellRenderBodyParams, isEdit: boolean) {const { $table, column } = paramsconst { slots, editRender, formatter } = columnconst defaultSlot = slots ? slots.default : nullconst editSlot = slots ? slots.edit : nullconst compConf = renderer.get(editRender.name)const rtEdit = compConf ? (compConf.renderTableEdit || compConf.renderEdit) : nullif (isEdit) {if (editSlot) {return $table.callSlot(editSlot, params)}if (rtEdit) {return getSlotVNs(rtEdit(editRender, Object.assign({ $type: 'edit' }, params)))}return []}if (defaultSlot) {return $table.callSlot(defaultSlot, params)}if (formatter) {return [h('span', {class: 'vxe-cell--label'}, getDefaultCellLabel(params))]}return Cell.renderDefaultCell(params)}}export default Cell
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。