列表全屏
This commit is contained in:
parent
ec9233098e
commit
116378469d
|
|
@ -1,12 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="top-right-btn" :style="style">
|
<div class="top-right-btn" :style="style">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
|
<!-- <el-tooltip class="item" effect="dark" :content="showSearch ? '隐藏搜索' : '显示搜索'" placement="top" v-if="search">
|
||||||
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
|
<el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
|
||||||
</el-tooltip>
|
</el-tooltip> -->
|
||||||
<el-tooltip class="item" effect="dark" content="刷新" placement="top">
|
<!-- <el-tooltip class="item" effect="dark" content="刷新" placement="top">
|
||||||
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
|
<el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
|
||||||
</el-tooltip>
|
</el-tooltip> -->
|
||||||
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
|
<el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
|
||||||
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
|
<el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
|
||||||
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
|
<el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
|
||||||
|
|
@ -20,6 +20,14 @@
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
<el-tooltip class="item" effect="dark" content="列表全屏" placement="top" style="margin-left: 10px">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
circle
|
||||||
|
icon="el-icon-full-screen"
|
||||||
|
@click="toggleFullscreen"
|
||||||
|
/>
|
||||||
|
</el-tooltip>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-dialog :title="title" :visible.sync="open" append-to-body>
|
<el-dialog :title="title" :visible.sync="open" append-to-body>
|
||||||
<el-transfer
|
<el-transfer
|
||||||
|
|
@ -99,6 +107,79 @@ export default {
|
||||||
this.$emit("queryTable");
|
this.$emit("queryTable");
|
||||||
},
|
},
|
||||||
// 右侧列表元素变化
|
// 右侧列表元素变化
|
||||||
|
toggleFullscreen() {
|
||||||
|
// 1️⃣ 找表格 DOM
|
||||||
|
let tableEl = document.querySelector('.el-table')
|
||||||
|
|
||||||
|
if (!tableEl) {
|
||||||
|
const tables = Array.from(document.querySelectorAll('.el-table'))
|
||||||
|
tableEl = tables.find((t) => t.offsetParent !== null)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tableEl) {
|
||||||
|
this.$message.warning('未找到表格区域')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2️⃣ 找分页 DOM
|
||||||
|
let pagerEl = document.querySelector('.pagination-container')
|
||||||
|
|
||||||
|
if (!pagerEl) {
|
||||||
|
const pagers = Array.from(document.querySelectorAll('.pagination-container'))
|
||||||
|
pagerEl = pagers.find((p) => p.offsetParent !== null)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3️⃣ 找最近公共父节点
|
||||||
|
let fullscreenEl = tableEl.parentElement
|
||||||
|
|
||||||
|
if (pagerEl) {
|
||||||
|
while (fullscreenEl && (!fullscreenEl.contains(tableEl) || !fullscreenEl.contains(pagerEl))) {
|
||||||
|
fullscreenEl = fullscreenEl.parentElement
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fullscreenEl) fullscreenEl = tableEl
|
||||||
|
|
||||||
|
const doc = document
|
||||||
|
|
||||||
|
// 🔐 只保存一次原样式
|
||||||
|
if (!fullscreenEl.__fsBound) {
|
||||||
|
fullscreenEl.__oldBg = fullscreenEl.style.background
|
||||||
|
fullscreenEl.__oldMinHeight = fullscreenEl.style.minHeight
|
||||||
|
fullscreenEl.__fsBound = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===== 进入全屏 =====
|
||||||
|
if (!doc.fullscreenElement) {
|
||||||
|
fullscreenEl.style.background = '#fff'
|
||||||
|
fullscreenEl.style.minHeight = '100vh'
|
||||||
|
|
||||||
|
const onFsChange = () => {
|
||||||
|
// 👉 退出全屏(ESC / API)
|
||||||
|
if (!document.fullscreenElement) {
|
||||||
|
// 1️⃣ 还原样式
|
||||||
|
fullscreenEl.style.background = fullscreenEl.__oldBg || ''
|
||||||
|
fullscreenEl.style.minHeight = fullscreenEl.__oldMinHeight || ''
|
||||||
|
|
||||||
|
// 2️⃣ 强制表格重新布局(不依赖 ref)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
const tableVm = tableEl.__vue__ || document.querySelector('.el-table')?.__vue__
|
||||||
|
|
||||||
|
tableVm?.doLayout()
|
||||||
|
})
|
||||||
|
|
||||||
|
document.removeEventListener('fullscreenchange', onFsChange)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.addEventListener('fullscreenchange', onFsChange)
|
||||||
|
|
||||||
|
fullscreenEl.requestFullscreen?.()
|
||||||
|
} else {
|
||||||
|
// ===== 主动退出全屏(点按钮)=====
|
||||||
|
doc.exitFullscreen?.()
|
||||||
|
}
|
||||||
|
},
|
||||||
dataChange(data) {
|
dataChange(data) {
|
||||||
for (let item in this.columns) {
|
for (let item in this.columns) {
|
||||||
const key = this.columns[item].key;
|
const key = this.columns[item].key;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue