|
@@ -9,32 +9,38 @@
|
|
|
<div class="filter-item date-filter">
|
|
<div class="filter-item date-filter">
|
|
|
<span><i class="el-icon-date"></i> 统计月份</span>
|
|
<span><i class="el-icon-date"></i> 统计月份</span>
|
|
|
<el-date-picker v-model="filters.month" type="month" size="small" value-format="yyyy-MM"
|
|
<el-date-picker v-model="filters.month" type="month" size="small" value-format="yyyy-MM"
|
|
|
- placeholder="默认当前自然月" :clearable="false" popper-class="dark-popper" @change="reload" />
|
|
|
|
|
|
|
+ placeholder="默认当前自然月" :clearable="false" popper-class="dark-popper"
|
|
|
|
|
+ :append-to-body="!isBoardFullscreen" @change="reload" />
|
|
|
</div>
|
|
</div>
|
|
|
<div class="filter-item organization-filter">
|
|
<div class="filter-item organization-filter">
|
|
|
<span><i class="el-icon-office-building"></i> 组织范围</span>
|
|
<span><i class="el-icon-office-building"></i> 组织范围</span>
|
|
|
<el-select v-model="filters.organizationId" size="small" clearable filterable popper-class="dark-popper"
|
|
<el-select v-model="filters.organizationId" size="small" clearable filterable popper-class="dark-popper"
|
|
|
- placeholder="全部授权组织" @change="handleOrganizationChange">
|
|
|
|
|
|
|
+ :popper-append-to-body="!isBoardFullscreen" placeholder="全部授权组织" @change="handleOrganizationChange">
|
|
|
<el-option v-for="item in organizationList" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in organizationList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="filter-item department-filter">
|
|
<div class="filter-item department-filter">
|
|
|
<span><i class="el-icon-s-grid"></i> 统计部门</span>
|
|
<span><i class="el-icon-s-grid"></i> 统计部门</span>
|
|
|
<el-select v-model="filters.departmentId" size="small" clearable filterable popper-class="dark-popper"
|
|
<el-select v-model="filters.departmentId" size="small" clearable filterable popper-class="dark-popper"
|
|
|
- placeholder="全部部门" @change="reload">
|
|
|
|
|
|
|
+ :popper-append-to-body="!isBoardFullscreen" placeholder="全部部门" @change="reload">
|
|
|
<el-option v-for="item in departmentList" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in departmentList" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="filter-item contract-filter">
|
|
<div class="filter-item contract-filter">
|
|
|
<span><i class="el-icon-document"></i> 合同类型</span>
|
|
<span><i class="el-icon-document"></i> 合同类型</span>
|
|
|
<el-select v-model="filters.contractType" size="small" clearable popper-class="dark-popper"
|
|
<el-select v-model="filters.contractType" size="small" clearable popper-class="dark-popper"
|
|
|
- placeholder="全部类型" @change="reload">
|
|
|
|
|
|
|
+ :popper-append-to-body="!isBoardFullscreen" placeholder="全部类型" @change="reload">
|
|
|
<el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in contractTypes" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</div>
|
|
</div>
|
|
|
<el-button class="refresh-button" type="primary" size="small" :loading="loading" icon="el-icon-refresh"
|
|
<el-button class="refresh-button" type="primary" size="small" :loading="loading" icon="el-icon-refresh"
|
|
|
@click="reload">{{ loading ? "刷新中" : "刷新数据" }}</el-button>
|
|
@click="reload">{{ loading ? "刷新中" : "刷新数据" }}</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <!-- 右上角全屏(2026-11-03 用户要求);全屏期间 Element 弹层挂回页面内部,选择器才能正常点开 -->
|
|
|
|
|
+ <button class="board-fullscreen-btn" type="button" :aria-pressed="isBoardFullscreen"
|
|
|
|
|
+ :title="isBoardFullscreen ? '退出全屏' : '全屏'" @click="toggleBoardFullscreen">
|
|
|
|
|
+ <i class="el-icon-full-screen"></i>{{ isBoardFullscreen ? "退出全屏" : "全屏" }}
|
|
|
|
|
+ </button>
|
|
|
</div>
|
|
</div>
|
|
|
</header>
|
|
</header>
|
|
|
|
|
|
|
@@ -217,8 +223,8 @@
|
|
|
</div>
|
|
</div>
|
|
|
</section>
|
|
</section>
|
|
|
|
|
|
|
|
- <el-dialog :title="detailTitle" :visible.sync="detailVisible" width="90%" append-to-body
|
|
|
|
|
- custom-class="personnel-detail-dialog" @open="loadDetail">
|
|
|
|
|
|
|
+ <el-dialog :title="detailTitle" :visible.sync="detailVisible" width="90%"
|
|
|
|
|
+ :append-to-body="!isBoardFullscreen" custom-class="personnel-detail-dialog" @open="loadDetail">
|
|
|
<div class="detail-summary">
|
|
<div class="detail-summary">
|
|
|
<span><i class="el-icon-data-analysis"></i></span>
|
|
<span><i class="el-icon-data-analysis"></i></span>
|
|
|
<div>
|
|
<div>
|
|
@@ -261,7 +267,7 @@
|
|
|
<div class="detail-pager">
|
|
<div class="detail-pager">
|
|
|
<span class="detail-pager__total">共 {{ detailTotal }} 条</span>
|
|
<span class="detail-pager__total">共 {{ detailTotal }} 条</span>
|
|
|
<el-select v-model="detailSize" size="mini" class="detail-pager__size" popper-class="dark-popper"
|
|
<el-select v-model="detailSize" size="mini" class="detail-pager__size" popper-class="dark-popper"
|
|
|
- @change="reloadDetail">
|
|
|
|
|
|
|
+ :popper-append-to-body="!isBoardFullscreen" @change="reloadDetail">
|
|
|
<el-option v-for="size in pageSizes" :key="size" :label="`${size} 条/页`" :value="size" />
|
|
<el-option v-for="size in pageSizes" :key="size" :label="`${size} 条/页`" :value="size" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
<el-button size="mini" :disabled="detailPage <= 1" @click="changeDetailPage(-1)">
|
|
<el-button size="mini" :disabled="detailPage <= 1" @click="changeDetailPage(-1)">
|
|
@@ -282,6 +288,7 @@
|
|
|
<script>
|
|
<script>
|
|
|
import * as echarts from "echarts";
|
|
import * as echarts from "echarts";
|
|
|
import BoardTitle from "@/components/board-title/index.vue";
|
|
import BoardTitle from "@/components/board-title/index.vue";
|
|
|
|
|
+import boardFullscreen from "@/mixins/board-fullscreen";
|
|
|
import { listOrganizations } from "@/api/organization";
|
|
import { listOrganizations } from "@/api/organization";
|
|
|
/* 机构选项取登录缓存(loginChangeGroupVOList);组织列表接口仍用于部门与名称映射 */
|
|
/* 机构选项取登录缓存(loginChangeGroupVOList);组织列表接口仍用于部门与名称映射 */
|
|
|
import { getOrgOptions, getCurrentOrgId } from "@/utils/current-org";
|
|
import { getOrgOptions, getCurrentOrgId } from "@/utils/current-org";
|
|
@@ -452,6 +459,7 @@ function emptyTrend() {
|
|
|
export default {
|
|
export default {
|
|
|
name: "PersonnelStructureDashboard",
|
|
name: "PersonnelStructureDashboard",
|
|
|
components: { BoardTitle },
|
|
components: { BoardTitle },
|
|
|
|
|
+ mixins: [boardFullscreen],
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
loading: false,
|
|
loading: false,
|
|
@@ -1444,3 +1452,32 @@ export default {
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style src="../../../styles/views/personnelStructureDashboard/index.scss" scoped lang="scss"></style>
|
|
<style src="../../../styles/views/personnelStructureDashboard/index.scss" scoped lang="scss"></style>
|
|
|
|
|
+
|
|
|
|
|
+<!-- 右上角全屏按钮(scoped) -->
|
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
|
+.board-fullscreen-btn {
|
|
|
|
|
+ display: inline-flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 6px;
|
|
|
|
|
+ padding: 7px 14px;
|
|
|
|
|
+ font-size: 13px;
|
|
|
|
|
+ color: #bfe9ff;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ background: linear-gradient(135deg, rgba(0, 60, 100, 0.55), rgba(0, 25, 50, 0.75));
|
|
|
|
|
+ border: 1px solid rgba(0, 210, 255, 0.4);
|
|
|
|
|
+ box-shadow: inset 0 0 12px rgba(0, 180, 255, 0.18);
|
|
|
|
|
+ transition: all 0.2s;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+
|
|
|
|
|
+ i {
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ color: #4fe3ff;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ &:hover {
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ border-color: rgba(0, 230, 255, 0.8);
|
|
|
|
|
+ box-shadow: 0 0 14px rgba(0, 200, 255, 0.4);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|