mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2025-12-19 09:25:53 +08:00
109 lines
3.0 KiB
JavaScript
109 lines
3.0 KiB
JavaScript
import Checkbox from "../Checkbox/Checkbox"; // eslint-disable-line
|
|
import { mixins } from "./utils";
|
|
|
|
/* eslint-disable no-underscore-dangle */
|
|
export default {
|
|
name: "TreeTable__header",
|
|
mixins: [mixins],
|
|
data() {
|
|
return {};
|
|
},
|
|
computed: {
|
|
table() {
|
|
return this.$parent;
|
|
}
|
|
},
|
|
methods: {
|
|
toggleAllChecked(checked) {
|
|
this.table.bodyData = this.table.bodyData.map(row => ({
|
|
...row,
|
|
_isChecked: checked
|
|
}));
|
|
}
|
|
},
|
|
render() {
|
|
// className
|
|
function getClassName(type, { headerAlign, key }) {
|
|
const certainType = this.validateType(
|
|
type,
|
|
["cell", "inner"],
|
|
"getClassName"
|
|
);
|
|
const classList = [];
|
|
if (key == "_normalIndex") {
|
|
classList.push(`${this.prefixCls}--center-cell`);
|
|
}
|
|
if (certainType.cell) {
|
|
classList.push(`${this.prefixCls}__header-cell`);
|
|
if (this.table.border) {
|
|
classList.push(`${this.prefixCls}--border-cell`);
|
|
}
|
|
if (["center", "right"].indexOf(headerAlign) > -1) {
|
|
classList.push(`${this.prefixCls}--${headerAlign}-cell`);
|
|
}
|
|
}
|
|
if (certainType.inner) {
|
|
classList.push(`${this.prefixCls}__cell-inner`);
|
|
if (this.table.treeType && this.table.firstProp === key) {
|
|
classList.push(`${this.prefixCls}--firstProp-header-inner`);
|
|
}
|
|
}
|
|
return classList.join(" ");
|
|
}
|
|
|
|
// 根据type渲染单元格Label
|
|
function renderLabel(column, columnIndex) {
|
|
if (
|
|
this.isSelectionCell(this.table, columnIndex) &&
|
|
this.selectType === "checkbox"
|
|
) {
|
|
const allCheck = this.table.bodyData.every(row => row._isChecked);
|
|
const indeterminate =
|
|
!allCheck && this.table.bodyData.some(row => row._isChecked);
|
|
return (
|
|
<Checkbox
|
|
indeterminate={indeterminate}
|
|
value={allCheck}
|
|
onOn-change={checked => this.toggleAllChecked(checked)}
|
|
></Checkbox>
|
|
);
|
|
}
|
|
return column.title ? column.title : "";
|
|
}
|
|
|
|
// Template
|
|
return (
|
|
<table
|
|
cellspacing="0"
|
|
cellpadding="0"
|
|
border="0"
|
|
class={`${this.prefixCls}__header`}
|
|
>
|
|
{/* <colgroup>
|
|
{this.table.tableColumns.map(column => (
|
|
<col
|
|
width={column.computedWidth || column.minWidth || column.width}
|
|
></col>
|
|
))}
|
|
</colgroup> */}
|
|
<thead>
|
|
<tr class={`${this.prefixCls}__header-row`}>
|
|
{
|
|
this.table.tableColumns.map((column, columnIndex) =>
|
|
column.key ? (
|
|
<th class={getClassName.call(this, "cell", column)}>
|
|
<div class={getClassName.call(this, "inner", column)}>
|
|
{renderLabel.call(this, column, columnIndex)}
|
|
</div>
|
|
</th>
|
|
) : (
|
|
""
|
|
)
|
|
)}
|
|
</tr>
|
|
</thead>
|
|
</table>
|
|
);
|
|
}
|
|
};
|