This commit is contained in:
吴红兵
2026-03-07 01:34:48 +08:00
parent adc511cfdc
commit 94c3473958
1211 changed files with 599405 additions and 322105 deletions

View File

@@ -2,39 +2,38 @@
* 列显示/隐藏指令
* 用法: v-column-visible="'propName'" 或 v-column-visible="propName"
*/
import type { Directive } from 'vue'
import type { Directive } from 'vue';
interface ColumnVisibleBinding {
value: string // prop 或 label
arg?: string
value: string; // prop 或 label
arg?: string;
}
export const vColumnVisible: Directive<HTMLElement, string> = {
mounted(el, binding) {
// 获取 isColumnVisible 函数(需要从父组件注入或通过其他方式获取)
const isColumnVisible = (el as any).__isColumnVisible || (() => true)
const propOrLabel = binding.value
if (!isColumnVisible(propOrLabel)) {
// 隐藏该列(通过隐藏父元素)
const columnElement = el.closest('.el-table-column') || el.parentElement
if (columnElement) {
(columnElement as HTMLElement).style.display = 'none'
}
}
},
updated(el, binding) {
const isColumnVisible = (el as any).__isColumnVisible || (() => true)
const propOrLabel = binding.value
const columnElement = el.closest('.el-table-column') || el.parentElement
if (columnElement) {
if (isColumnVisible(propOrLabel)) {
(columnElement as HTMLElement).style.display = ''
} else {
(columnElement as HTMLElement).style.display = 'none'
}
}
}
}
mounted(el, binding) {
// 获取 isColumnVisible 函数(需要从父组件注入或通过其他方式获取)
const isColumnVisible = (el as any).__isColumnVisible || (() => true);
const propOrLabel = binding.value;
if (!isColumnVisible(propOrLabel)) {
// 隐藏该列(通过隐藏父元素)
const columnElement = el.closest('.el-table-column') || el.parentElement;
if (columnElement) {
(columnElement as HTMLElement).style.display = 'none';
}
}
},
updated(el, binding) {
const isColumnVisible = (el as any).__isColumnVisible || (() => true);
const propOrLabel = binding.value;
const columnElement = el.closest('.el-table-column') || el.parentElement;
if (columnElement) {
if (isColumnVisible(propOrLabel)) {
(columnElement as HTMLElement).style.display = '';
} else {
(columnElement as HTMLElement).style.display = 'none';
}
}
},
};