first commit

This commit is contained in:
2026-09-09 09:14:28 +08:00
commit 5343198112
5199 changed files with 1052895 additions and 0 deletions
@@ -0,0 +1,697 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<div class="search">
<div class="search-item">
<div class="search-item-label">年度:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
@change="yearChange"
:clearable="false"
value-format="yyyy"
v-model="pageForm.year"
type="year"
placeholder="选择年">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">福利项目:</div>
<div class="search-item-option">
<el-select placeholder="福利项目" v-model="pageForm.projectId"
@change="doSearch();getWelfareOptions();"
style="width: 100%;"
filterable="true">
<el-option v-for="item in welfareProjectList" :label="item.name"
:value="item.id"></el-option>
</el-select>
</div>
</div>
<!-- <div class="search-item">
<div class="search-item-label">月份:</div>
<div class="search-item-option">
<el-date-picker
style="width: 100%"
v-model="pageForm.month"
type="month"
value-format="yyyy-MM"
placeholder="请选择发放生日蛋糕的月份">
</el-date-picker>
</div>
</div>-->
<div class="search-item">
<div class="search-item-label">所属工会:</div>
<div class="search-item-option">
<el-select @change="getUnionGroup()" clearable filterable
placeholder="所属工会" style="width: 100%;"
:clearable="clearable"
v-model="pageForm.welfareUnitCode">
<el-option :label="item.unionname" :value="item.unioncode"
v-for="item in unions"></el-option>
</el-select>
</div>
</div>
<div class="search-item">
<div class="search-item-label">工会小组:</div>
<div class="search-item-option">
<el-select v-model="pageForm.unionGroupId" style="width: 100%"
filterable
:clearable="clearable"
@change="pageData"
placeholder="请选择">
<el-option
v-for="item in unionGroups"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</div>
</div>
<div class="search-query">
<el-button type="primary" icon="el-icon-search"
@click="doSearch();unionGroupChange()">搜索
</el-button>
</div>
</div>
</el-card>
<el-card shadow="never" class="mt10" v-loading="tableLoading">
<table-tool label="工会列表" :app="this">
<template #func>
<!-- <el-button type="primary" size="small" icon="el-icon-printer"
:disabled="provideMode!==3"
@click="openImportExpressExcel">
导入快递单号
</el-button>-->
<!--<el-button @click="sendMsg" icon="el-icon-s-promotion" size="small"
type="primary">
短信通知
</el-button>-->
<el-button
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}"
@click="allExportReceiveDetailByUnionIdWord"
icon="el-icon-printer"
size="small"
type="primary">导出全部福利签领表(压缩包)
</el-button>
<el-button
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H04')}"
@click="welfareProjectGroupExport" icon="el-icon-printer"
size="small"
type="primary">按品牌导出(xlsx
</el-button>
<!-- <el-button
@click="allShopExport" icon="el-icon-printer"
size="small"
type="primary">按品牌导出全部(蛋糕券)
</el-button>-->
<template
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('H04')}">
<!-- <el-button :disabled="!pageForm.projectId" type="primary"
size="small"
icon="el-icon-printer"
@click="exportReceiveDetail(true)">按分工会导出已选名单
</el-button>
<el-button
:disabled="!pageForm.projectId" type="primary"
size="small"
icon="el-icon-printer"
@click="exportReceiveDetail(false)">按分工会导出未选名单
</el-button>
<el-button
:disabled="!pageForm.projectId"
type="primary" size="small"
icon="el-icon-printer"
@click="exportByUnit">按单位导出汇总表
</el-button>-->
<el-button
:disabled="!pageForm.projectId"
type="primary" size="small"
icon="el-icon-printer"
@click="exportByUnionGroup">导出汇总表
</el-button>
</template>
<template
v-if="${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}">
<!-- <el-button :disabled="!pageForm.projectId" type="primary" size="small"
icon="el-icon-printer"
@click="exportByUnion">导出汇总表
</el-button>-->
<el-button @click="selectOptionByAdmin"
icon="el-icon-printer"
size="small"
type="primary">管理员代选择
</el-button>
</template>
</template>
</table-tool>
<el-table :data="tableData"
@sort-change="pageOrder"
row-key="welfareUnitId" show-summary style="width: 100%"
ref="table" class="vi-table" :size="tableSize" lazy
@expand-change="unionGroupChange">
<!-- <el-table-column type="expand">
<template scope="{row}">
<el-table :data="row.unionGroupTableData" style="width: 100%"
row-key="id"
v-loading="tableLoading" class="vi-table" :size="tableSize">
<el-table-column type="index" width="50"></el-table-column>
<el-table-column
align="center"
v-for="column in row.unionGroupTableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
</el-table-column>
</el-table>
</template>
</el-table-column>-->
<el-table-column type="index" width="50"></el-table-column>
<el-table-column
:width="column.width"
align="center"
v-for="column in tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template scope="{row}" v-if="column.prop=='welfareUnitName'">
({{row.welfareUnitCode}}){{row.welfareUnitName}}
</template>
<template scope="{row}" v-else-if="column.prop=='unselectedTeacherSum'">
<el-link @click="openUnclaimed(row.welfareUnitCode)" type="primary">
{{row.unselectedTeacherSum}}
</el-link>
</template>
</el-table-column>
<el-table-column header-align="center" label="操作" v-if="tableColumns.length>0"
width="300px">
<template scope="{ row }">
<!-- <el-button plain
@click="shopExport(row.welfareUnitId)"
size="mini"
type="primary">导出蛋糕券签领表
</el-button>-->
<el-button plain
@click="exportReceiveDetailByUnionIdWord(row.welfareUnitId)"
size="mini"
type="primary">导出福利签领表
</el-button>
<el-button @click="openView(row.welfareUnitCode)" size="mini"
type="primary">查看已选人员
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
<template #view>
<el-table :data="receiveTableData" style="width: 100%" row-key="id"
height="100%"
v-loading="tableLoading" class="vi-table" :size="tableSize">
<el-table-column type="index" width="50"></el-table-column>
<el-table-column
align="center"
v-for="column in receive_tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="receivePageSizeChange"
@current-change="receivePageNumberChange"
:current-page="receivePageForm.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="receivePageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="receivePageForm.totalCount">
</el-pagination>
</el-row>
</template>
</guava>
<el-dialog :visible.sync="unclaimedDialog" title="未领取人员" width="65%">
<el-button type="primary"
class="pull-right"
icon="el-icon-printer"
@click="exportReceiveDetailByUnionId(false)">导出未选名单
</el-button>
<el-table :data="unclaimedTableData" style="width: 100%" row-key="id" max-height="650"
v-loading="tableLoading" class="vi-table" :size="tableSize">
<el-table-column type="index" width="50"></el-table-column>
<el-table-column
align="center"
v-for="column in unclaimed_tableColumns"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="unclaimedPageSizeChange"
@current-change="unclaimedPageNumberChange"
:current-page="unclaimedPageForm.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="receivePageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="unclaimedPageForm.totalCount">
</el-pagination>
</el-row>
</el-dialog>
<el-dialog :visible.sync="importExpressExcelDialog" title="导入快递单号" width="65%">
<el-row type="flex" style="justify-content: space-between;align-items: center">
<span>只能导入已选人员名单,导入未选人员名单无效。</span>
<el-button size="small" type="primary" @click="downLoadExpressTemplate">下载模板</el-button>
</el-row>
<el-row type="flex" justify="center">
<el-upload
ref="expressExcelUpload"
:auto-upload="false"
:file-list="importExpressExcelFile"
:limit="1"
:data="{projectId:pageForm.projectId}"
drag
:action="loc()+'/importCourierNumber'"
:on-success="expressExcelHandleSuccess"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传xls,xlsx文件</div>
</el-upload>
</el-row>
<el-row type="flex" justify="end">
<el-button @click="importExpressExcelDialog=false">取消</el-button>
<el-button type="primary" @click="doImportExpressExcel">提交</el-button>
</el-row>
</el-dialog>
<el-dialog :visible.sync="selectByAdminDialogVisible" title="" width="35%"
v-loading="doSelectByAdminLoading">
<el-form label-width="120px" label-position="right">
<el-form-item label="福利选项">
<el-select v-model="noSelectOptionId" style="width: 100%">
<el-option v-for="item in welfareOptions" :key="item.id" :value="item.id"
:label="item.optionName"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-row type="flex" justify="end">
<el-button @click="selectByAdminDialogVisible=false">取消</el-button>
<el-button type="primary" @click="doSelectByAdmin">提交</el-button>
</el-row>
</el-dialog>
</div>
<script>
<!--#include("/platform/welfare/include/common.js"){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
clearable: false,
dgkMonth: "",
isDgk: false,
welfareProjectList: [],
pageForm: {
month: '',
unionGroupId: '',
year: '',
welfareUnitCode: ''
},
unions: [],
tableColumns: [],
receive_tableColumns: [
{label: '工号', prop: 'loginName'},
{label: '姓名', prop: 'userName'},
{label: '身份证', prop: 'idCard'},
{label: '单位', prop: 'unitName'},
{label: '部门', prop: 'threeUnitName'},
{label: '所选福利', prop: 'optionName'},
],
receiveTableData: [],
receivePageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
unclaimedDialog: false,
unclaimedTableData: [],
unclaimedPageForm: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
unclaimed_tableColumns: [
{label: '姓名', prop: 'userName'},
{label: '工号', prop: 'loginName'},
{label: '单位', prop: 'unitName'},
{label: '工会', prop: 'unionName'},
{label: '联系方式', prop: 'mobile'},
],
unionGroupTableData: [],
unionGroupTableColumns: [],
welfare,
welfareUnitCode: null,
importExpressExcelDialog: false,
importExpressExcelFile: [],
selectByAdminDialogVisible: false,
noSelectUsers: [],
welfareOptions: [],
noSelectOptionId: null,
doSelectByAdminLoading: false,
unionGroups: [],
viewTableWrapHeight: 500
}
},
computed: {
provideMode() {
const project = this.welfareProjectList.find(v => v.id === this.pageForm.projectId)
if (project) {
return project.provideMode
}
return null
}
},
methods: {
async unionGroupChange(row, expandedRows) {
if (expandedRows.length) {
this.tableLoading = true
const resp = await $.get(loc() + '/unionGroupPageData', {
projectId: this.pageForm.projectId,
month: this.pageForm.month,
unionGroupId: this.pageForm.unionGroupId,
unionId: row.welfareUnitId,
})
if (resp.code === 0) {
this.$set(row, "unionGroupTableData", resp.data.tableList)
this.$set(row, "unionGroupTableColumns", resp.data.tableColumn)
}
this.tableLoading = false
}
},
async getUnionGroup() {
const un = this.unions.find(v => v.unioncode === this.pageForm.welfareUnitCode)
this.unionGroups = await unionGroupsByUnionId(un.id)
},
async selectOptionByAdmin() {
this.selectByAdminDialogVisible = true
// const resp = await $.get(loc() + '/getNoSelectUsers', {projectId: this.pageForm.projectId})
// this.noSelectUsers = resp.data
},
doSelectByAdmin() {
if (this.noSelectOptionId == null || this.noSelectOptionId === '') {
this.notifyWarning('请选择福利')
return
}
const {optionName} = this.welfareOptions.find(v => v.id === this.noSelectOptionId)
this.$confirm('请确定是否把【' + optionName + '】福利赋给未选择的教职工?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
this.doSelectByAdminLoading = true
const resp = await $.get(loc() + '/doSelectByAdmin', {
optionId: this.noSelectOptionId,
projectId: this.pageForm.projectId
})
this.doSelectByAdminLoading = false
if (resp.code === 0) {
this.pageData()
this.selectByAdminDialogVisible = false
this.notifySuccess(resp.msg)
} else {
this.notifyWarning(resp.msg)
}
})
},
allExportReceiveDetailByUnionIdWord() {
window.open(loc() + '/allExportReceiveDetailByUnionIdWord?projectId=' + this.pageForm.projectId + "&month=" + this.pageForm.month)
},
exportReceiveDetailByUnionIdWord(welfareUnitId) {
window.open(loc() + '/exportReceiveDetailByUnionIdWord?welfareUnitId=' + welfareUnitId +
'&projectId=' + this.pageForm.projectId +
"&month=" + this.pageForm.month +
"&unionGroupId=" + this.pageForm.unionGroupId)
},
downLoadExpressTemplate() {
window.open(loc() + '/downLoadExpressTemplate')
},
openImportExpressExcel() {
this.importExpressExcelDialog = true
if (this.$refs.expressExcelUpload) {
this.$refs.expressExcelUpload.clearFiles()
}
},
expressExcelHandleSuccess(response, file, fileList) {
if (response.code !== 0) {
this.notifyWarning(response.msg)
this.$refs.expressExcelUpload.clearFiles()
} else {
this.notifySuccess(response.msg)
this.$refs.expressExcelUpload.clearFiles()
this.importExpressExcelDialog = false
this.doSearch()
}
},
doImportExpressExcel() {
this.$refs.expressExcelUpload.submit()
},
async init() {
if ("${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')||@shiro.hasRole('club01')}" === 'false' && ("${@shiro.hasRole('H04')}" === 'true' || "${@shiro.hasRole('ghxzzz')}" === 'true')) {
this.unions = await getUnionList("${@shiro.getPrincipalProperty('unit').getUnionid()}")
this.$set(this.pageForm, "welfareUnitCode", this.unions[0].unioncode)
await this.getUnionGroup()
if ("${@shiro.hasRole('ghxzzz')}" === 'true') {
this.$set(this.pageForm, "unionGroupId", this.unionGroups[0].id)
} else {
this.clearable = true
}
} else {
this.unions = await getUnions(null)
this.clearable = true
}
this.pageForm.year = new Date().getFullYear().toString()
await this.getWelfareProjectList()
},
async getWelfareProjectList() {
const resp = await $.get(loc() + '/welfareProjectList', {year: this.pageForm.year})
this.welfareProjectList = resp.data
if (this.welfareProjectList && this.welfareProjectList.length > 0) {
this.$set(this.pageForm, "projectId", this.welfareProjectList[0].id)
await this.pageData()
await this.getWelfareOptions()
} else {
this.tableData = []
this.tableColumns = []
}
},
async yearChange() {
this.$set(this.pageForm, "projectId", null)
this.$set(this.pageForm, "welfareUnitCode", '')
await this.getWelfareProjectList()
},
async pageData() {
const loading = this.$loading({
lock: true,
text: '努力加载中。。。',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
sublime.showLoadingbar()
const resp = await $.post(loc() + '/pageData', this.pageForm)
sublime.closeLoadingbar()
if (resp.code === 0) {
this.tableColumns = [{
width:"200",
prop: 'welfareUnitName',
label: "工会小组"
}].concat(resp.data.tableColumn)
this.tableData = resp.data.tableList
}
loading.close()
},
receivePageSizeChange(val) {
this.receivePageForm.pageSize = val;
this.receivePageData();
},
receivePageNumberChange(val) {
this.receivePageForm.pageNumber = val;
this.receivePageData();
},
async openView(welfareUnitCode) {
this.receivePageForm.pageNumber = 1;
this.receivePageForm.pageSize = 10;
this.welfareUnitCode = welfareUnitCode
await this.receivePageData()
this.$refs.guava.view()
},
async receivePageData() {
this.tableLoading = true
const resp = await $.post(loc() + '/receivePageData', {
welfareUnitCode: this.welfareUnitCode,
projectId: this.pageForm.projectId,
month: this.pageForm.month,
unionGroupId: this.pageForm.unionGroupId,
pageNumber: this.receivePageForm.pageNumber,
pageSize: this.receivePageForm.pageSize,
})
this.receiveTableData = resp.data.list;
this.receivePageForm.totalCount = resp.data.totalCount;
this.tableLoading = false
},
async openUnclaimed(welfareUnitCode) {
this.unclaimedPageForm.pageNumber = 1;
this.unclaimedPageForm.pageSize = 10;
this.welfareUnitCode = welfareUnitCode
await this.unclaimedPageData()
this.unclaimedDialog = true
},
async unclaimedPageData() {
this.tableLoading = true
const resp = await $.post(loc() + '/unclaimedData', {
welfareUnitCode: this.welfareUnitCode,
projectId: this.pageForm.projectId,
month: this.pageForm.month,
unionGroupId: this.pageForm.unionGroupId,
pageNumber: this.unclaimedPageForm.pageNumber,
pageSize: this.unclaimedPageForm.pageSize,
})
this.unclaimedTableData = resp.data.list;
this.unclaimedPageForm.totalCount = resp.data.totalCount;
this.tableLoading = false
},
unclaimedPageSizeChange(val) {
this.unclaimedPageForm.pageSize = val;
this.unclaimedPageData();
},
unclaimedPageNumberChange(val) {
this.unclaimedPageForm.pageNumber = val;
this.unclaimedPageData();
},
exportByUnion() {
const {projectId, welfareUnitCode} = this.pageForm
window.open(loc() + '/exportByUnion?projectId=' + projectId + '&welfareUnitCode=' + (welfareUnitCode ? welfareUnitCode : '') + "&month=" + this.pageForm.month)
},
exportByUnit() {
const {projectId, welfareUnitCode} = this.pageForm
window.open(loc() + '/exportByUnit?projectId=' + projectId + '&welfareUnitCode=' + (welfareUnitCode ? welfareUnitCode : ''))
},
exportByUnionGroup() {
const {projectId, welfareUnitCode} = this.pageForm
window.open(loc() + '/exportByUnionGroup?projectId=' + projectId + '&welfareUnitCode=' + (welfareUnitCode ? welfareUnitCode : ''))
},
exportReceiveDetail(flag) {
const {projectId, welfareUnitCode} = this.pageForm
window.open(loc() + '/exportReceiveDetail?projectId=' + projectId + '&welfareUnitCode=' + (welfareUnitCode ? welfareUnitCode : '') + '&flag=' + flag + "&month=" + this.pageForm.month)
},
exportReceiveDetailByUnionId(flag) {
const {projectId} = this.pageForm
const welfareUnitCode = this.welfareUnitCode ? this.welfareUnitCode : ''
window.open(loc() + '/exportReceiveDetail?projectId=' + projectId + '&welfareUnitCode=' + welfareUnitCode + '&flag=' + flag + "&month=" + this.pageForm.month)
},
shopExport(welfareUnitId) {
window.open(loc() + "/shopExport?projectId=" + this.pageForm.projectId + "&month=" + this.pageForm.month + "&welfareUnitId=" + welfareUnitId)
},
allShopExport() {
window.open(loc() + "/allShopExport?projectId=" + this.pageForm.projectId + "&month=" + this.pageForm.month)
},
welfareProjectGroupExport() {
window.open(loc() + "/welfareProjectGroupExport?projectId=" + this.pageForm.projectId + "&welfareUnitCode=" + this.pageForm.welfareUnitCode)
},
sendMsg() {
this.$confirm('您确定要向未领取人员发送短信提醒吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const resp = await $.post('/sendMsg', {projectId: this.pageForm.projectId})
if (resp.code === 0) {
this.$message.success(resp.msg)
} else {
this.$message.error(resp.msg)
}
}).catch(() => {
});
},
async getWelfareOptions() {
const resp = await $.post('/platform/welfare/list/mange/welfareOptions', {projectId: this.pageForm.projectId})
this.welfareOptions = resp.data
}
},
created() {
this.init()
}
})
</script>
<!--#
}
#-->