修改30年教龄管理,福利汇总管理

This commit is contained in:
2026-09-14 20:36:35 +08:00
parent 4373cc0095
commit 8301342598
2 changed files with 140 additions and 55 deletions
@@ -2,10 +2,50 @@
layout("/layouts/platform.html"){ layout("/layouts/platform.html"){
#--> #-->
<div id="app" v-cloak> <style>
/* 扣除平台顶部导航 64px 和内容区上下间距 20px,让列表使用剩余可视高度。 */
.thirty-teach-summary-page {
height: calc(100vh - 84px);
}
.thirty-teach-summary-page > .guava-main-content {
height: 100%;
}
.thirty-teach-summary-page > .guava-main-content > .transition-item {
display: flex;
flex-direction: column;
min-height: 0;
}
.thirty-teach-summary-page .summary-search-card,
.thirty-teach-summary-page .summary-list-card > .el-card__body > .ele-table-tool {
flex-shrink: 0;
}
/* 列表卡片允许收缩,避免数据行撑高外层页面;表头和合计由 el-table 固定。 */
.thirty-teach-summary-page .summary-list-card {
flex: 1;
min-height: 0;
}
.thirty-teach-summary-page .summary-list-card > .el-card__body {
height: 100%;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.thirty-teach-summary-page .summary-table-container {
flex: 1;
min-height: 0;
}
</style>
<div id="app" class="thirty-teach-summary-page" v-cloak>
<guava ref="guava"> <guava ref="guava">
<template> <template>
<el-card shadow="never"> <el-card shadow="never" class="summary-search-card">
<search @search="doSearch"> <search @search="doSearch">
<search-item label="所属工会"> <search-item label="所属工会">
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会" <el-select v-model="pageForm.unionId" placeholder="请选择所属工会"
@@ -29,29 +69,31 @@ layout("/layouts/platform.html"){
</el-card> </el-card>
<el-card shadow="never" class="mt10"> <el-card shadow="never" class="mt10 summary-list-card">
<table-tool label="教职工汇总"> <table-tool label="教职工汇总">
<el-button size="small" @click="doExportSummary" type="primary"> <el-button size="small" @click="doExportSummary" type="primary">
导出汇总表 导出汇总表
</el-button> </el-button>
</table-tool> </table-tool>
<el-table ref="table" :data="tableData" style="width: 100%" row-key="id" <div class="summary-table-container">
@sort-change="pageOrder" show-summary <el-table ref="table" :data="tableData" style="width: 100%" row-key="id"
v-loading="tableLoading" :size="tableSize" class="vi-table"> @sort-change="pageOrder" show-summary height="100%"
<el-table-column align="center" header-align="center" type="index" v-loading="tableLoading" :size="tableSize" class="vi-table">
:index="indexMethod" label="序号" <el-table-column align="center" header-align="center" type="index"
width="80px"></el-table-column> :index="indexMethod" label="序号"
<el-table-column width="80px"></el-table-column>
align="center" <el-table-column
header-align="center" align="center"
v-for="column in tableColumns" header-align="center"
show-overflow-tooltip v-for="column in tableColumns"
:label="column.label" show-overflow-tooltip
:prop="column.prop" :label="column.label"
:sortable="column.sortable" :prop="column.prop"
> :sortable="column.sortable"
</el-table-column> >
</el-table> </el-table-column>
</el-table>
</div>
</el-card> </el-card>
</template> </template>
@@ -71,10 +113,10 @@ layout("/layouts/platform.html"){
}, },
tableColumns: [ tableColumns: [
{prop: 'name', label: '分工会名称', sortable: true}, {prop: 'name', label: '分工会名称', sortable: true},
{prop: 'userNum', label: '人数', sortable: true},
{prop: 'willThirtyNum', label: '即将满30年', sortable: true}, {prop: 'willThirtyNum', label: '即将满30年', sortable: true},
{prop: 'anniversaryThirtyNum', label: '周年满30年', sortable: true}, {prop: 'anniversaryThirtyNum', label: '周年满30年', sortable: true},
{prop: 'overThirtyNum', label: '超过30年', sortable: true}, {prop: 'overThirtyNum', label: '超过30年', sortable: true},
{prop: 'userNum', label: '人数', sortable: true},
], ],
unionOptions: [], unionOptions: [],
unitOptions: [], unitOptions: [],
@@ -2,10 +2,50 @@
layout("/layouts/platform.html"){ layout("/layouts/platform.html"){
#--> #-->
<div id="app" v-cloak> <style>
/* 扣除平台顶部导航 64px 和内容区上下间距 20px,让列表使用剩余可视高度。 */
.welfare-statistics-page {
height: calc(100vh - 84px);
}
.welfare-statistics-page > .guava-main-content {
height: 100%;
}
.welfare-statistics-page > .guava-main-content > .transition-item {
display: flex;
flex-direction: column;
min-height: 0;
}
.welfare-statistics-page .statistics-search-card,
.welfare-statistics-page .statistics-list-card > .el-card__body > .ele-table-tool {
flex-shrink: 0;
}
/* 列表卡片允许收缩,避免数据行撑高外层页面;表头和合计由 el-table 固定。 */
.welfare-statistics-page .statistics-list-card {
flex: 1;
min-height: 0;
}
.welfare-statistics-page .statistics-list-card > .el-card__body {
height: 100%;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.welfare-statistics-page .statistics-table-container {
flex: 1;
min-height: 0;
}
</style>
<div id="app" class="welfare-statistics-page" v-cloak>
<guava ref="guava"> <guava ref="guava">
<template> <template>
<el-card shadow="never"> <el-card class="statistics-search-card" shadow="never">
<search @search="doSearch"> <search @search="doSearch">
<search-item label="年度"> <search-item label="年度">
<el-date-picker <el-date-picker
@@ -31,7 +71,7 @@ layout("/layouts/platform.html"){
</search> </search>
</el-card> </el-card>
<el-card class="mt10" shadow="never" v-loading="tableLoading"> <el-card class="mt10 statistics-list-card" shadow="never" v-loading="tableLoading">
<table-tool label="工会列表"> <table-tool label="工会列表">
<el-button @click="exportByWelfareOptions" icon="el-icon-printer" size="small" type="primary">按福利选项导出</el-button> <el-button @click="exportByWelfareOptions" icon="el-icon-printer" size="small" type="primary">按福利选项导出</el-button>
<template v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','SCHOOL_UNION_WELFARE_ADMIN'])"> <template v-if="$auth.hasRoleOr(['SYSADMIN','SCHOOL_UNION_ADMIN','SCHOOL_UNION_WELFARE_ADMIN'])">
@@ -40,38 +80,41 @@ layout("/layouts/platform.html"){
</el-button> </el-button>
</template> </template>
</table-tool> </table-tool>
<el-table <div class="statistics-table-container">
:data="tableData" <el-table
:size="tableSize" :data="tableData"
@sort-change="pageOrder" :size="tableSize"
class="vi-table" @sort-change="pageOrder"
lazy class="vi-table"
ref="table" height="100%"
row-key="id" lazy
show-summary ref="table"
style="width: 100%" row-key="id"
v-if="tableData&&tableData.length>0" show-summary
> style="width: 100%"
<el-table-column type="index" width="50"></el-table-column> v-if="tableData&&tableData.length>0"
<el-table-column
:key="column.prop"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
align="center"
show-overflow-tooltip
v-for="column in tableColumns"
> >
<template scope="{row}" v-if="column.prop=='welfareUnitName'">{{row.welfareUnitName}}</template> <el-table-column type="index" width="50"></el-table-column>
<template scope="{row}" v-else-if="column.prop=='selectedNum'"> <el-table-column
<el-link @click="openSelected(row)" type="primary">{{row.selectedNum}}</el-link> :key="column.prop"
</template> :label="column.label"
<template scope="{row}" v-else-if="column.prop=='unSelectedNum'"> :prop="column.prop"
<el-link @click="openUnSelected(row)" type="primary">{{row.unSelectedNum}}</el-link> :sortable="column.sortable"
</template> :width="column.width"
</el-table-column> align="center"
</el-table> show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='welfareUnitName'">{{row.welfareUnitName}}</template>
<template scope="{row}" v-else-if="column.prop=='selectedNum'">
<el-link @click="openSelected(row)" type="primary">{{row.selectedNum}}</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='unSelectedNum'">
<el-link @click="openUnSelected(row)" type="primary">{{row.unSelectedNum}}</el-link>
</template>
</el-table-column>
</el-table>
</div>
</el-card> </el-card>
</template> </template>
</guava> </guava>