Files
UNION_NSI/target/classes/views/platform/theRapyRecuperation/process/TheRapyQuery.html
T
2026-09-08 19:49:21 +08:00

1322 lines
62 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--#
layout("/layouts/platform.html"){
#-->
<style>
.query-row {
height: 80px;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
}
.query-row .el-col {
overflow: hidden;
}
.query-row:not(:last-child) {
border-bottom: 1px dashed rgb(230, 230, 230);
}
.query-row-title {
width: 120px;
}
.el-table-container {
padding-top: 0;
}
</style>
<div id="app" v-cloak>
<guava ref="guava">
<template>
<el-card shadow="never">
<el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>&emsp;&emsp;度:</span>
<el-date-picker
v-model="pageForm.year"
type="year"
value-format="yyyy"
placeholder="选择年"
style="width: 80%" @change="pageData">
</el-date-picker>
</el-col>
<el-col :span="12" v-if="pageForm.lb==='ry'||pageForm.lb===''">
<span>查询类型:</span>
<el-input placeholder="请输入内容" clearable
v-model="pageForm.searchKeyword"
style="width: 80%" @keyup.enter.native="pageData">
<el-select v-model="pageForm.searchName" slot="prepend"
placeholder="查询类型"
style="width: 110px;">
<el-option label="姓名" value="userName"></el-option>
<el-option label="工号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="pageData">搜索</el-button>
</el-input>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<el-row>
<el-col :span="12">
<span>所属工会:</span>
<el-select v-model="pageForm.unionId" placeholder="请选择所属工会"
@change="flushUnits"
@clear="flushUnits" :disabled="unionDisabled"
filterable clearable style="width: 80%">
<el-option
v-for="item in unionOptions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12">
<span>所属单位:</span>
<el-select v-model="pageForm.unitId" placeholder="请选择所属单位"
@change="pageData"
filterable clearable :disabled="unitDisabled"
style="width: 80%">
<el-option
v-for="item in unitOptions"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<span>查询条件:</span>
<el-tag :effect="pageForm.state===item.value?'dark':'plain'"
:key="item.value"
:type="item.label"
@click="checkState(item.value)"
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;"
v-for="item in options">
{{ item.label }}
</el-tag>
<el-link :underline="false" @click="pageForm.state='';
pageForm.lb='';
pageData();
unionDisabled = false;
unitDisabled = false"
type="danger" v-if="options.length&&pageForm.state">清空
</el-link>
</el-col>
</el-row>
<!--#if(@shiro.hasRole('H04')){#-->
<el-row align="middle" class="query-row" type="flex"
v-if="pageForm.state==='1'&&pageForm.lb==='ry'">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<span>报名路线:</span>
<el-tag :effect="pageForm.state2===item.value?'dark':'plain'"
:key="item.value"
:type="item.label"
@click="checkState2(item.value)"
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;font-size: 15px"
v-for="item in options2">
{{ item.label }}
</el-tag>
<el-link :underline="false"
@click="pageForm.state2='';doSearch();getBmUserUnion();pageForm.takePartInLineId='';getXlByUnion()"
style="color: red" v-if="options2.length&&pageForm.state">清空
</el-link>
</el-col>
</el-row>
<!--#}#-->
<el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<el-row>
<el-col :span="12" v-if="pageForm.state=='1'">
<span>选择路线:</span>
<el-select v-model="pageForm.takePartInLineId" filterable clearable
placeholder="请选择线路"
style="width: 80%" @change="pageData()">
<el-option v-for="item in takePartInLines"
:key="item.id"
:label="item.lineName+''+item.playStartTime1+''+''+item.unionname+''"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12" v-if="pageForm.state=='1'"
style="color: red;margin-top: 10px">
<sapn>【本工会报名线路】和【本工会人员选择其他工会的线路】</sapn>
</el-col>
<el-col :span="12" v-if="pageForm.state=='2'">
<span>选择旅行社:</span>
<el-select v-model="pageForm.agencyId" filterable clearable
placeholder="请选择旅行社"
style="width: 80%" @change="pageData()">
<el-option v-for="item in agencyLists"
:key="item.id"
:label="item.travelAgencyName"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12" v-if="pageForm.state=='3'">
<span>选择酒店:</span>
<el-select v-model="pageForm.takePartInBaseManagementId" filterable
clearable
placeholder="请选择酒店"
style="width: 80%" @change="pageData()">
<el-option v-for="item in jdList"
:key="item.id"
:label="item.baseName"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-row>
<el-row v-if="!pageForm.state">
<el-col :span="24" style="color: red;margin-top: 10px">
<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】和【其他工会选择本工会线路的疗休养人员】</span>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row align="middle" class="query-row" type="flex"
v-if="pageForm.state=='1'||pageForm.state=='3'">
<el-col class="query-row-title"></el-col>
<el-col class="query-row-content">
<el-col :span="12">
<span>选择标段:</span>
<el-select v-model="pageForm.lotId" filterable clearable
placeholder="请选择标段"
style="width: 80%" @change="doSearch()">
<el-option v-for="item in modifyConfig.lots"
:key="item.id"
:label="item.lotName"
:value="item.id">
</el-option>
</el-select>
</el-col>
</el-col>
</el-row>
</el-card>
<el-card shadow="never" class="mt10">
<table-tool label="" :app="this" ref="table_tool">
<template #label_end>
<el-radio-group size="medium" v-model="pageForm.lb" class="ml10"
@change="pageData()"
v-if="pageForm.state=='1'">
<el-radio-button label="xl">线路列表</el-radio-button>
<el-radio-button label="ry">人员列表</el-radio-button>
</el-radio-group>
<el-radio-group size="medium" v-model="pageForm.lb" class="ml10"
@change="pageData()"
v-if="pageForm.state=='2'">
<el-radio-button label="lxs">旅行社列表</el-radio-button>
<el-radio-button label="ry">人员列表</el-radio-button>
</el-radio-group>
<el-radio-group size="medium" v-model="pageForm.lb" class="ml10"
@change="pageData()"
v-if="pageForm.state=='3'">
<el-radio-button label="jd">酒店列表</el-radio-button>
<el-radio-button label="ry">人员列表</el-radio-button>
</el-radio-group>
<span class="ml10"
style="color: red">当前报名人数有教职工{{applyNum.count1}}人,家属有{{applyNum.count2}}人</span>
</template>
<template #func>
<el-button icon="el-icon-s-promotion" @click="openImport" size="medium"
type="primary">参加人员导入
</el-button>
<!--# if(@shiro.hasRole('H04')){ #-->
<template>
<el-button icon="el-icon-s-promotion"
@click="location.href='/platform/theRapyRecuperation/query/exportDeclareForm'"
size="medium" type="primary">申报表导出
</el-button>
<el-button icon="el-icon-s-promotion"
@click="location.href='/platform/theRapyRecuperation/query/exportTravelers'"
size="medium" type="primary">出行人员导出
</el-button>
</template>
<!--# } #-->
<el-button icon="el-icon-s-promotion" size="medium" type="primary"
@click="userDrawer = true"
:disabled="multipleSelection.length==0"
class="mr10" v-if="pageForm.lb=='ry'||!pageForm.lb">设置参加人员
</el-button>
<el-button icon="el-icon-s-promotion" size="medium" type="primary"
@click="doExport"
class="mr10" v-if="pageForm.state">导出
</el-button>
<el-radio-group @change="pageData()" size="medium"
v-model="pageForm.regionalNature"
v-if="pageForm.state=='1'">
<el-radio-button label="">全部</el-radio-button>
<el-radio-button label="省内">省内</el-radio-button>
<el-radio-button label="省外">省外</el-radio-button>
</el-radio-group>
</template>
</table-tool>
<el-table :data="tableData" style="width: 100%"
ref="table"
@selection-change="handleSelectionChange"
row-key="id" @sort-change="pageOrder1"
v-loading="tableLoading">
<el-table-column
:selectable="checkboxT"
reserve-selection
type="selection"
width="55">
</el-table-column>
<el-table-column align="center" header-align="center" type="index" label="序号"
width="80px" key="#index">
<template scope="scope">
<span>{{scope.$index+(pageForm.pageNumber - 1) * pageForm.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center"
header-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=='lineName'">
<el-link type="primary" @click="openLine(row)">{{row.lineName}}
</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='isFamily'">
<el-link type="primary" @click="openUser(row)">
{{row.isFamily?'携带':'未携带'}}{{row.isFamily}}
</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='lineNum'">
<el-link type="primary" @click="openApplyUser(row)">
{{row.lineNum}}{{row.signUpUserFamilyNum}}
</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='signUpMode'">
{{signUpModeName(row.signUpMode)}}
</template>
<template scope="{row}" v-else-if="column.prop=='agencyNum'">
<el-link type="primary" @click="openApplyUser(row)">{{row.agencyNum}}
</el-link>
</template>
<template scope="{row}" v-else-if="column.prop=='times'">
<div v-if="row.playStartTime">{{row.playStartTime}}</div>
<div v-else>{{row.playStartTime1}}</div>
</template>
<template scope="{row}" v-else-if="column.prop=='isTakePartIn'">
{{row.isTakePartIn?'已参加':'未参加'}}
</template>
<template scope="{row}" v-else-if="column.prop=='stateId'">
<span v-if="row.stateId">
<vi-table-state :state="row"></vi-table-state>
</span>-->
<sapn v-else style="color: #67C23A">暂无</sapn>
</template>
<!--<template scope="{row}" v-else-if="column.prop=='travelAgencyName'">
<el-link type="primary" @click="openAgency(row)">
{{row.travelAgencyName}}
</el-link>
</template>-->
<template scope="{row}" v-else-if="column.prop=='lineOrMaName'">
{{row.lineName?row.lineName:row.baseName?row.baseName:row.travelAgencyName}}
</template>
<template scope="{row:{officialWebsite}}"
v-else-if="column.prop==='officialWebsite'">
<a :href="officialWebsite" class="text-primary" target="_blank">
{{officialWebsite}}
</a>
</template>
</el-table-column>
<!-- <el-table-column label="家属信息" type="expand" width="100px"
v-if="pageForm.lb==='ry'">
<template scope="{row}">
<el-card shadow="never">
<h4 slot="header" style="color: #1867b0">
家属信息
</h4>
<el-table :data="row.companionList">
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="身份证号" prop="idCard"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
<el-table-column label="床型" prop="bedType">
<template scope="{row}">
{{ row.bedInfo.bedType }}
</template>
</el-table-column>
<el-table-column label="床位" prop="bedNum">
<template scope="{row}">
{{ row.bedInfo.bedNum }}
</template>
</el-table-column>
<el-table-column label="意向拼床人" prop="otherSleepUser">
<template scope="{row}">
{{ row.bedInfo.otherSleepUser ?
row.bedInfo.otherSleepUser : '暂无' }}
</template>
</el-table-column>
<el-table-column label="关系" prop="relation"></el-table-column>
</el-table>
</el-card>
</template>
</el-table-column>-->
<el-table-column v-if="pageForm.state=='1'||pageForm.state=='3'" align="center"
prop="lotName"
show-overflow-tooltip
header-align="center"
label="标段"
sortable>
<template scope="{row}">
{{row.lotName}}
</template>
</el-table-column>
<el-table-column label="操作" width="150px"
v-if="pageForm.lb==='ry'||pageForm.lb===''||pageForm.lb==='xl'">
<template scope="{row}">
<template v-if="pageForm.lb==='xl'">
<el-button @click="openApplyUser(row)" size="mini" type="primary">
查看
</el-button>
<el-button @click="doRemind(row)" size="mini" type="primary">
提醒
</el-button>
</template>
<template v-else>
<el-button @click="openView(row)" size="mini" type="primary"
plain="">查看
</el-button>
</template>
</template>
</el-table-column>
<el-table-column label="操作" width="250px" v-if="pageForm.lb==='lxs'">
<template scope="{row}">
<el-button @click="doEmail(row)" size="mini" type="primary">发送
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="pageSizeChange"
@current-change="pageNumberChange"
:current-page="pageForm.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="pageForm.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageForm.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #view>
<el-card shadow="never">
<el-table :data="userTableData" style="width: 100%"
row-key="id" @sort-change="pageOrder"
v-loading="tableLoading">
<el-table-column label="家属信息" type="expand" width="150px">
<template scope="{row}">
<el-card shadow="never">
<h4 slot="header" style="color: #1867b0">
家属信息
</h4>
<el-table :data="row.companionList">
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="身份证号" prop="idCard"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
<el-table-column label="床型" prop="bedType">
<template scope="{row}">
{{ row.bedInfo.bedType }}
</template>
</el-table-column>
<el-table-column label="床位" prop="bedNum">
<template scope="{row}">
{{ row.bedInfo.bedNum }}
</template>
</el-table-column>
<el-table-column label="意向拼床人" prop="otherSleepUser">
<template scope="{row}">
{{ row.bedInfo.otherSleepUser ?
row.bedInfo.otherSleepUser : '暂无' }}
</template>
</el-table-column>
<el-table-column label="关系" prop="relation"></el-table-column>
</el-table>
</el-card>
</template>
</el-table-column>
<el-table-column align="center" header-align="center" type="index" label="序号"
width="80px">
<template scope="scope">
<span>{{scope.$index+(pageFormUser.pageNumber - 1) * pageFormUser.pageSize + 1}} </span>
</template>
</el-table-column>
<el-table-column
align="center"
header-align="center"
v-for="column in tableColumnUsers"
show-overflow-tooltip
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
>
<template scope="{row}" v-if="column.prop=='isFamily'">
{{row.isFamily?'携带':'未携带'}}
</template>
</el-table-column>
<el-table-column label="操作" width="250px">
<template scope="{row}">
<el-button @click="openView(row)" size="mini" type="primary">查看
</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px">
<el-pagination
@size-change="pageSizeChangeUser"
@current-change="pageNumberChangeUser"
:current-page="pageFormUser.pageNumber"
:page-sizes="[5,10, 20, 30, 50]"
:page-size="pageFormUser.pageSize"
layout="total, sizes, prev, pager, next"
:total="pageFormUser.totalCount">
</el-pagination>
</el-row>
</el-card>
</template>
<template #edit>
<el-descriptions :column="2" border class="viewTable">
<el-descriptions-item label="旅行社编号">{{viewData.serialNumber}}</el-descriptions-item>
<el-descriptions-item label="旅行社名称">{{viewData.travelAgencyName}}
</el-descriptions-item>
<el-descriptions-item label="联系人">{{viewData.contact}}</el-descriptions-item>
<el-descriptions-item label="备注">{{viewData.contactMobileNumber}}
</el-descriptions-item>
<el-descriptions-item label="邮箱">{{viewData.email}}</el-descriptions-item>
<el-descriptions-item label="官网">
<a :href="viewData.officialWebsite" target="_blank">
{{viewData.officialWebsite}}
<span class="text-primary">立即访问</span>
</a>
</el-descriptions-item>
<el-descriptions-item :span="2" label="备注">{{viewData.note}}</el-descriptions-item>
</el-descriptions>
</template>
<template #public>
<line-info ref="viewLineInfo"></line-info>
</template>
</guava>
<el-dialog
title="查看个人信息"
:visible.sync="userFindDialogVisible"
width="80%">
<enroll-info ref="viewEnrollInfo" :union_id="unionId"></enroll-info>
<span slot="footer" class="dialog-footer">
<el-button @click="userFindDialogVisible = false" type="primary">关闭</el-button>
</span>
</el-dialog>
<el-drawer
size="70%"
title="批量设置参加人员"
:visible.sync="userDrawer"
direction="rtl"
:before-close="handleClose">
<el-row class="text-primary p20">
选择标段/参加时间(设置前请先勾选需要设置的用户)
</el-row>
<el-row type="flex" :gutter="20" class="pl20 pr20">
<el-col :span="12">
<el-select v-model="lotId" filterable clearable
placeholder="请选择标段"
style="width: 80%" @change="setLot">
<el-option v-for="item in modifyConfig.lots"
:key="item.id"
:label="item.lotName"
:value="item.id">
</el-option>
</el-select>
</el-col>
<el-col :span="12">
<el-date-picker
v-model="takePartInTime"
type="date"
style="width: 80%"
@change="setTakePartInTime"
value-format="yyyy-MM-dd"
placeholder="请选择参加时间">
</el-date-picker>
</el-col>
</el-row>
<el-row class="mt10">
<el-table
:data="multipleSelection"
style="width: 100%;padding: 20px" class="vi-table"
border
height="70vh"
ref="table2"
@selection-change="(val)=>{multipleSelection2 = val}"
row-key="id">
<el-table-column
type="selection"
width="55">
</el-table-column>
<el-table-column type="index" label="序号" width="80"></el-table-column>
<el-table-column prop="loginName" label="工号"></el-table-column>
<el-table-column prop="userName" label="姓名"></el-table-column>
<el-table-column prop="unitName" label="单位"></el-table-column>
<el-table-column prop="unionName" label="工会"></el-table-column>
<el-table-column prop="signingUptime" label="报名时间"></el-table-column>
<el-table-column prop="takePartInTime" label="参加时间"></el-table-column>
<el-table-column prop="lotName" label="标段"></el-table-column>
</el-table>
</el-row>
<span style="position: absolute;bottom: 20px;right: 20px">
<el-button @click="userDrawer = false">取 消</el-button>
<el-button type="primary" @click="doAttend">确定</el-button>
</span>
</el-drawer>
<el-dialog
title="参加人员导入"
:visible.sync="importVisible"
:close-on-click-modal="false"
width="50%"
>
<el-timeline>
<el-timeline-item timestamp="下载模板" placement="top">
<el-card>
<el-button size="medium" type=""
@click="location.href='/platform/basics/downloadTemplate?filePath=travel/TravelEnrollImport.xlsx&fileName=参加人员导入模板.xls'"
icon="el-icon-download">下载模板
</el-button>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="上传文件" placement="top">
<el-card>
<el-form>
<el-upload
name="file"
ref="upload"
:on-remove="(file, fileList) => {
importData.fileList = fileHandleRemove(file, fileList)
}"
:on-change="(file, fileList) => {
importData.fileList = fileHandleChange(file, fileList,{type:['xls','xlsx']})
}"
:auto-upload="false"
:limit="1"
:file-list="importData.fileList">
<el-button size="medium" type="" icon="el-icon-upload"
style="width: 200px">选择文件
</el-button>
<div class="el-upload__tip" slot="tip" style="color: #F56C6C">
只能上传 xls/xlsx 文件,时间格式请书写为2008-10-1
</div>
</el-upload>
</el-form>
</el-card>
</el-timeline-item>
</el-timeline>
<span slot="footer" class="dialog-footer">
<el-button @click="importVisibleClose" :disabled="importLoading">取 消</el-button>
<el-button type="primary" @click="doImport" :loading="importLoading">确定</el-button>
</span>
</el-dialog>
<el-drawer
size="70%"
title="家属信息"
:visible.sync="familyDrawer"
direction="rtl">
<h4 slot="header" style="color: #1867b0">
家属信息
</h4>
<el-table :data="companionList">
<el-table-column label="姓名" prop="userName"></el-table-column>
<el-table-column label="性别" prop="sex"></el-table-column>
<el-table-column label="身份证号" prop="idCard"></el-table-column>
<el-table-column label="年龄" prop="age"></el-table-column>
<el-table-column label="床型" prop="bedType">
<template scope="{row}">
{{ row.bedInfo.bedType }}
</template>
</el-table-column>
<el-table-column label="床位" prop="bedNum">
<template scope="{row}">
{{ row.bedInfo.bedNum }}
</template>
</el-table-column>
<el-table-column label="意向拼床人" prop="otherSleepUser">
<template scope="{row}">
{{ row.bedInfo.otherSleepUser ?
row.bedInfo.otherSleepUser : '暂无' }}
</template>
</el-table-column>
<el-table-column label="关系" prop="relation"></el-table-column>
</el-table>
</el-card>
</el-drawer>
</div>
<script>
var vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
lotId: "",
takePartInTime: "",
userDrawer: false,
familyDrawer: false,
companionList: [],
options2: [
{label: "本工会人员(自己线路)", value: "1"},
{label: "本工会人员(其他路线)", value: "2"},
{label: "其他工会人员(选我线路)", value: "3"},
{label: "选择校工会线路人员", value: "4"}
],
jdList: [],
applyNum: {},
signUpModeList: [],
viewData: {},
agencyLists: [],
unionId: "${@shiro.getPrincipalProperty('unit').getUnionid()}",
userFindDialogVisible: false,
userTableData: [],
unionOptions: [],
unitOptions: [],
takePartInLines: [],
pageFormUser: {
searchName: "",
searchKeyword: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
pageForm: {
mode: "query",
regionalNature: '',
year: moment().format('YYYY'),
searchName: "userName",
searchKeyword: '',
unionId: '',
unitId: '',
agencyId: '',
takePartInLineId: '',
state: '',
lb: '',
lotId: ''
},
tableColumnUsers: [
{prop: 'loginName', label: '工号'},
{prop: 'userName', label: '姓名'},
{prop: 'unitName', label: '单位', sortable: true},
{prop: 'unionName', label: '工会', sortable: true},
// {prop: 'lineName', label: '线路'},
{prop: 'isFamily', label: '是否携带家属'},
],
tableColumns: [
/* {prop: 'year', label: '年度'},
{prop: 'lineName', label: '线路'},
{prop: 'travelAgencyName', label: '旅行社'},
{prop: 'contact', label: '联系人'},
{prop: 'contactMobileNumber', label: '联系方式'},
{prop: 'unionname', label: '所属分工会'},
{prop: 'lineNum', label: '报名人数'}*/
],
options: [
{label: "线路", value: "1"},
// {label: "旅行社", value: "2"},
{label: "酒店", value: "3"},
],
unionDisabled: false,
unitDisabled: false,
modifyConfig: {},
multipleSelection: [],
multipleSelection2: [],
//人员导入
importVisible: false,
importLoading: false,
importData: {},
}
},
components: {
'enroll-info': httpVueLoader('/components/theRapyRecuperation/Enrollinfo.vue'),
'line-info': httpVueLoader('/components/theRapyRecuperation/LineInfo.vue')
},
methods: {
openUser(row) {
this.companionList = row.companionList
this.familyDrawer = true
},
setLot(val) {
if (this.multipleSelection2 && this.multipleSelection2.length === 0) {
this.notifyWarning("设置前请先勾选需要设置的用户")
this.lotId = null
return;
}
if (!val) {
this.$refs.table2.clearSelection();
return
}
const lot = this.modifyConfig.lots.find(v => v.id === val)
this.multipleSelection2.map((v, index) => {
this.$set(this.multipleSelection2[index], "lotId", val)
this.$set(this.multipleSelection2[index], "lotName", lot.lotName)
})
},
setTakePartInTime(val) {
if (this.multipleSelection2 && this.multipleSelection2.length === 0) {
this.notifyWarning("设置前请先勾选需要设置的用户")
this.takePartInTime = null
return;
}
if (!val) {
this.$refs.table2.clearSelection();
return
}
this.multipleSelection2.map((v, index) => {
this.$set(this.multipleSelection2[index], "takePartInTime", val)
})
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done();
this.multipleSelection = []
this.$refs.table.clearSelection();
})
.catch(_ => {
});
},
checkboxT(v) {
if (v.isTakePartIn) {
return false
}
if (this.pageForm.lb === 'ry' || !this.pageForm.lb) {
return true
} else {
return false
}
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
async doAttend() {
let arr = []
this.multipleSelection.forEach((v, index) => {
if (!v.lotId || !v.takePartInTime) {
arr.push(index + 1)
}
})
if (arr && arr.length > 0) {
this.notifyWarning("请检查【" + arr.toString() + "】条数据后在提交")
return
}
const refs = await $.post(loc() + "/doAttend", {data: JSON.stringify(this.multipleSelection)})
if (refs.code == 0) {
this.notifySuccess(refs.msg);
this.doSearch()
this.$refs.table2.clearSelection();
this.userDrawer = false
} else {
this.notifyWarning(refs.msg)
}
},
async checkState2(type) {
this.pageForm.state2 = type
this.$set(this.pageForm, "unionId", null)
this.$set(this.pageForm, "takePartInLineId", null)
await this.getBmUserUnion()
if (type === "1") {
this.$set(this.pageForm, "unionId", this.unionId)
this.unionDisabled = true
} else if (type === "2") {
this.unionDisabled = true
this.unitDisabled = true
} else if (type === "3") {
this.unionDisabled = false
this.unitDisabled = false
this.unionOptions = this.unionOptions.filter(v => v.id !== this.unionId)
} else {
this.unionDisabled = false
this.unitDisabled = false
}
await this.getXlByUnion()
await this.pageData()
},
async doEmail(row) {
const confirm = await this.$confirm('您将发送文件到旅行社邮箱!, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const refs = await $.post(loc() + "/doEmail", {id: row.id})
if (refs.code == 0) {
this.notifySuccess(refs.msg);
} else {
this.notifyWarning(refs.msg)
}
}
},
async doRemind(row) {
const confirm = await this.$confirm('您将发送提醒!, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
if (confirm === "confirm") {
const refs = await $.post(loc() + "/doRemind", {id: row.id})
if (refs.code == 0) {
this.notifySuccess(refs.msg);
} else {
this.notifyWarning(refs.msg)
}
}
},
doExport() {
const {
year,
searchName,
searchKeyword,
unionId,
unitId,
agencyId,
takePartInLineId,
state,
lotId,
} = this.pageForm
window.open(loc() + "/doExport?year=" + year +
"&searchName=" + searchName +
"&searchKeyword" + searchKeyword +
"&unionId=" + unionId +
"&unitId=" + unitId +
"&agencyId=" + agencyId +
"&takePartInLineId=" + takePartInLineId +
"&state=" + state +
"&lotId=" + lotId)
},
pageSizeChange(val) {
this.pageForm.pageNumber = val;
this.pageData();
},
pageNumberChange(val) {
this.pageForm.pageNumber = val;
this.pageData();
},
checkState(type) {
this.$refs.table.clearSelection();
this.pageForm.state = type
if (type === "1") {
this.pageForm.lb = 'xl'
} else if (type === "2") {
this.pageForm.lb = 'lxs'
} else {
this.pageForm.lb = "jd"
}
this.unionDisabled = true
this.unitDisabled = true
this.getXlByUnion()
this.pageData()
},
async openView(row) {
this.userFindDialogVisible = true
this.$nextTick(() => {
this.$refs.viewEnrollInfo.openView(row.id)
})
},
pageSizeChangeUser(val) {
this.pageFormUser.pageSize = val;
this.openApplyUser();
},
pageNumberChangeUser(val) {
this.pageFormUser.pageNumber = val;
this.openApplyUser();
},
async openApplyUser(row) {
sublime.showLoadingbar();
const pageForm = clone(this.pageFormUser)
pageForm.id = row.id
pageForm.unionId = this.unionId
let url = this.pageForm.state === '1' ? '/platform/theRapyRecuperation/line/selectLineUser' : '/platform/theRapyRecuperation/query/selectAgencyUser'
$.post(url, pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code == 0) {
this.userTableData = data.data.list;
this.pageFormUser.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
this.$refs.guava.view()
},
openAgency(row) {
this.viewData = row
this.$refs.guava.edit()
},
openLine(row) {
this.$refs.guava.public()
if (row.regionalNature === "省内") {
this.$refs.viewLineInfo.findOne(row.lineId, null)
} else {
this.$refs.viewLineInfo.findOne(row.lineId, row.usUnionId)
}
},
pageOrder1(column) {
this.pageForm.pageOrderName = column.prop;
this.pageForm.pageOrderBy = column.order;
this.getSelfUnionUser();
},
getSelfUnionUser() {
this.tableLoading = true
this.tableData = []
$.post(loc() + "/getSelfUnionUser", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
async pageData() {
if (this.pageForm.lb === "") {
this.tableColumns = [
{prop: 'loginName', label: '工号'},
{prop: 'userName', label: '姓名'},
{prop: 'unitName', label: '单位', sortable: true},
{prop: 'unionName', label: '工会', sortable: true},
{prop: 'lineOrMaName', label: '线路/酒店', sortable: true},
{prop: 'times', label: '出行时间'},
{prop: 'regionalNature', label: '线路类型', sortable: true},
{prop: 'isFamily', label: '是否携带家属'},
{prop: 'isTakePartIn', label: '是否参加'},
{prop: 'stateId', label: '审核状态'},
]
this.getSelfUnionUser()
} else if (this.pageForm.lb === "xl") {
this.tableColumns = [
{prop: 'year', label: '年度'},
{prop: 'lineName', label: '线路名称', sortable: true},
{prop: 'times', label: '出行时间'},
{prop: 'travelAgencyName', label: '承担旅行社', sortable: true},
{prop: 'unionname', label: '创建工会', sortable: true},
{prop: 'regionalNature', label: '线路类型', sortable: true},
{prop: 'signUpMode', label: '组织形式', sortable: true},
{prop: 'contact', label: '联系人', sortable: true},
{prop: 'contactMobileNumber', label: '联系方式'},
{prop: 'lineNum', label: '报名人数(家属)'}
]
await this.getXlData()
} else if (this.pageForm.lb === "lxs") {
this.tableColumns = [
{label: '年度', prop: 'year'},
{label: '旅行社名称', prop: 'travelAgencyName', sortable: true},
{label: '旅行社编号', prop: 'serialNumber', sortable: true},
{label: '联系人', prop: 'contact'},
{label: '联系人手机', prop: 'contactMobileNumber'},
{label: '邮箱', prop: 'email'},
{label: '官网', prop: 'officialWebsite'},
{label: '报名人数', prop: 'agencyNum', sortable: true},
]
this.getLxsData()
await this.getAgencyList()
} else if (this.pageForm.lb === "jd") {
this.tableColumns = [
{label: '年度', prop: 'year'},
{label: '酒店名称', prop: 'baseName', sortable: true},
// {label: '酒店编号', prop: 'serialNumber', sortable: true},
{label: '联系人', prop: 'baseContactPerson'},
{label: '联系人手机', prop: 'baseContactNumber'},
{label: '承担旅行社', prop: 'travelAgencyName', sortable: true},
{label: '邮箱', prop: 'email'},
{label: '官网', prop: 'officialWebsite'},
{label: '报名人数', prop: 'agencyNum', sortable: true},
]
this.getJdData()
await this.getJdList()
} else {
this.tableColumns = [
{prop: 'loginName', label: '工号'},
{prop: 'userName', label: '姓名'},
{prop: 'unitName', label: '单位', sortable: true},
{prop: 'unionName', label: '工会', sortable: true},
{prop: 'lineOrMaName', label: '线路/酒店'},
{prop: 'times', label: '出行时间'},
{prop: 'isFamily', label: '是否携带家属'},
{prop: 'isTakePartIn', label: '是否参加'},
{prop: 'stateId', label: '审核状态'},
]
await this.getRyData()
}
await this.getApplyNum()
this.$refs.table_tool.getColumns()
},
async flushUnits() {
if (this.pageForm.unionId) {
this.unitOptions = await getUnits(this.pageForm.unionId)
} else {
this.unitOptions = []
this.$set(this.pageForm, "unitId", "")
}
await this.pageData()
},
async getXlByUnion() {
const {data} = await $.post("/platform/theRapyRecuperation/TheRapyAudit/getXlByUnion", {
unionId: this.pageForm.unionId,
year: this.pageForm.year,
state: this.pageForm.state2
})
data.forEach(v => {
if (!v.unionname) {
v.unionname = '校工会'
}
})
this.takePartInLines = data
},
async getAgencyList() {
const {data} = await $.post("/platform/theRapyRecuperation/travelAgency/selectTravelAgency", {
year: this.pageForm.year
})
this.agencyLists = data
},
async getJdList() {
const {data} = await $.post("/platform/theRapyRecuperation/baseManagement/listAllBase", this.pageForm.year)
this.jdList = data
},
getLxsData() {
this.tableLoading = true
this.tableData = []
$.post(loc() + "/getLxsData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
getJdData() {
this.tableLoading = true
this.tableData = []
$.post(loc() + "/getJdData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
async getXlData() {
this.tableLoading = true
this.tableData = []
$.post(loc() + "/getXlData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
async getRyData() {
this.tableLoading = true
this.tableData = []
$.post(loc() + "/getRyData", this.pageForm, (data) => {
sublime.closeLoadingbar();
this.tableLoading = false
if (data.code === 0) {
this.tableData = data.data.list;
this.pageForm.totalCount = data.data.totalCount;
} else {
this.$message.error(data.msg);
}
}, "json");
},
/**
* 查询所有报名人员的工会
* @returns {Promise<void>}
*/
async getBmUserUnion() {
const {data} = await $.post("/platform/theRapyRecuperation/TheRapyAudit/getBmUserUnion")
this.unionOptions = data
},
/**
* 查询现在有多少个人报名
* @returns {Promise<void>}
*/
async getApplyNum() {
const {data} = await $.post(loc() + "/getApplyNum", {
unionId: this.pageForm.unionId,
state: this.pageForm.state,
state2: this.pageForm.state2,
regionalNature: this.pageForm.regionalNature,
takePartInLineId: this.pageForm.takePartInLineId,
year: this.pageForm.year
})
this.applyNum = data
},
signUpModeName(val) {
const d = this.signUpModeList.find(v => v.value === val)
return d ? d.label : null
},
async getApplyNumAudit() {
const {data} = await $.post("/platform/theRapyRecuperation/TheRapyAudit/getApplyNumAudit", this.pageForm)
this.options2 = [
{label: "本工会人员(自己线路)" + data.count1 + "人", value: "1"},
{label: "本工会人员(其他路线)" + data.count2 + "人", value: "2"},
{label: "其他工会人员(选我线路)" + data.count3 + "人", value: "3"},
{label: "选择校工会线路人员" + data.count4 + "人", value: "4"}
]
},
async getModifyConfig() {
const res = await $.post('/platform/theRapyRecuperation/TheRapyConfig/findOne')
if (res.code === 0) {
this.modifyConfig = res.data
}
},
openImport() {
this.importData = {
fileList: []
}
this.importVisible = true;
},
async doImport() {
if (this.importData.fileList.length === 0) {
this.notifyWarning("请选择文件!")
return
}
const data = new FormData();
this.importData.fileList.forEach((val) => {
data.append("file", val.raw, val.raw.name);
});
this.importLoading = true
const resp = await $.post('/platform/theRapyRecuperation/user/query/enrollImport',data)
if (resp.code === 0){
await this.pageData();
this.importVisible = false
}else {
this.notifyWarning("导入失败")
this.importLoading = false
}
},
importVisibleClose() {
this.importVisible = false;
this.pageData();
},
},
async created() {
await this.getModifyConfig()
this.signUpModeList = await getEnumOptions('TheRapyRecuperationSignUpMode')
this.unionOptions = await getUnions()
await this.getApplyNumAudit()
if ("${@shiro.hasRole('H04')}" === 'true' && "${@shiro.hasRole('sysadmin')||@shiro.hasRole('A06')}" === 'false') {
await this.getBmUserUnion()
if (this.unionOptions && this.unionOptions.length > 0) {
const union = this.unionOptions.find(v => v.id === this.unionId)
if (union) {
//this.$set(this.pageForm, "unionId", this.unionId)
this.$set(this.pageForm, "unionName", union.unionname)
} else {
const unionId = this.unionOptions[0].id
const union = this.unionOptions.find(v => v.id === unionId)
//this.$set(this.pageForm, "unionId", unionId)
this.$set(this.pageForm, "unionName", union.unionname)
}
}
}
this.flushUnits()
}
})
</script>
<!--#
}
#-->