feat: 普惠疗休养优化2

This commit is contained in:
2026-11-09 18:09:05 +08:00
parent 803333feac
commit 933daac134
15 changed files with 315 additions and 57 deletions
@@ -57,7 +57,10 @@ layout("/layouts/platform.html"){
<el-option label="姓名" value="userName"></el-option>
<el-option label="一卡通号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="doSearch">搜索</el-button>
<template slot="append">
<el-button @click="doSearch">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</template>
</el-input>
</el-col>
</el-row>
@@ -636,6 +639,24 @@ layout("/layouts/platform.html"){
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
searchName: 'userName',
searchKeyword: '',
isAudit: '',
lotId: '',
regionalNature: '',
selectId: '',
takePartInLineId: '',
unionId: this.unionDisabled ? this.pageForm.unionId : '',
unitId: this.unitDisabled ? this.pageForm.unitId : '',
pageNumber: 1
}
this.unitOptions = this.pageForm.unionId ? await this.getTherapyUnits(this.pageForm.unionId) : []
this.doSearch()
},
async validateLine() {
const resp = await $.post('/platform/inclusiveTherapyV3/line/enroll/validSignUpInfo'
, {enroll: JSON.stringify(this.editFormData)})
@@ -57,7 +57,10 @@ layout("/layouts/platform.html"){
<el-option label="姓名" value="userName"></el-option>
<el-option label="一卡通号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="doSearch">搜索</el-button>
<template slot="append">
<el-button @click="doSearch">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</template>
</el-input>
</el-col>
</el-row>
@@ -510,6 +513,22 @@ layout("/layouts/platform.html"){
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
searchName: 'userName',
searchKeyword: '',
isAudit: '',
agencyId: '',
unionId: this.unionDisabled ? this.pageForm.unionId : '',
unitId: this.unitDisabled ? this.pageForm.unitId : '',
pageNumber: 1
}
this.unitOptions = this.pageForm.unionId ? await this.getTherapyUnits(this.pageForm.unionId) : []
await this.getAgencyList()
this.doSearch()
},
async getAgencyList() {
const {data} = await $.post("/platform/inclusiveTherapyV3/travelAgency/selectTravelAgencyByYears", {
startYear: this.pageForm.startYear,
@@ -57,7 +57,10 @@ layout("/layouts/platform.html"){
<el-option label="姓名" value="userName"></el-option>
<el-option label="一卡通号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="doSearch">搜索</el-button>
<template slot="append">
<el-button @click="doSearch">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</template>
</el-input>
</el-col>
</el-row>
@@ -631,6 +634,24 @@ layout("/layouts/platform.html"){
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
searchName: 'userName',
searchKeyword: '',
isAudit: '',
lotId: '',
regionalNature: '',
selectId: '',
takePartInLineId: '',
unionId: this.unionDisabled ? this.pageForm.unionId : '',
unitId: this.unitDisabled ? this.pageForm.unitId : '',
pageNumber: 1
}
this.unitOptions = this.pageForm.unionId ? await this.getTherapyUnits(this.pageForm.unionId) : []
this.doSearch()
},
async validateLine() {
const resp = await $.post('/platform/inclusiveTherapyV3/line/enroll/validSignUpInfo'
, {enroll: JSON.stringify(this.editFormData)})
@@ -70,6 +70,7 @@ layout("/layouts/platform.html"){
</search-item>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -531,6 +532,18 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: new Date().getFullYear().toString(),
baseName: '',
travelAgencyId: '',
regionalNature: '',
lotId: '',
pageNumber: 1
}
this.doSearch()
},
async doSearch() {
this.formData.year = this.pageForm.year;
await this.yearChange();
@@ -159,6 +159,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -808,6 +809,23 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
startYear: String(this.modifyConfig.provinceStartYear),
endYear: moment().format('YYYY'),
unionId: null,
lineName: null,
travelAgencyId: null,
signUpMode: null,
lotId: null,
keywords: null,
pageNumber: 1
}
this.yearRangeStart = null
this.yearRangeVisible = false
this.doSearch()
},
isShow(roles) {
if ("${@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('sysadmin')||@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('A06')}" === 'true') {
return true
@@ -42,6 +42,7 @@ layout("/layouts/platform.html"){
</search-item>
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -366,6 +367,15 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
keywords: null,
pageNumber: 1
}
this.doSearch()
},
downloadTemplate() {
window.location.href = '/platform/inclusiveTherapyV3/travelAgency/downloadTemplate';
},
@@ -341,7 +341,10 @@ layout("/layouts/platform.html"){
<el-option label="姓名" value="userName"></el-option>
<el-option label="一卡通号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="doSearch">搜索</el-button>
<template slot="append">
<el-button @click="doSearch">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</template>
</el-input>
</el-col>
</el-row>
@@ -1302,6 +1305,26 @@ layout("/layouts/platform.html"){
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
searchName: 'userName',
searchKeyword: '',
agencyId: '',
takePartInLineId: '',
takePartInBaseManagementId: '',
regionalNature: '',
lotId: '',
selectId: '',
unionId: this.unionDisabled ? this.pageForm.unionId : '',
unitId: this.unitDisabled ? this.pageForm.unitId : '',
pageNumber: 1
}
await this.getAgencyList()
await this.getUnionSelectLine()
this.flushUnits()
},
doModify(row){
this.$confirm("您确定要调整【<span style='color: red'>" + row.userName + "</span>】的此条报名信息吗?", '提示', {
confirmButtonText: '确定',
@@ -71,7 +71,10 @@ layout("/layouts/platform.html"){
<el-option label="姓名" value="userName"></el-option>
<el-option label="一卡通号" value="loginName"></el-option>
</el-select>
<el-button slot="append" @click="doSearch">搜索</el-button>
<template slot="append">
<el-button @click="doSearch">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</template>
</el-input>
</el-col>
</el-row>
@@ -824,6 +827,27 @@ layout("/layouts/platform.html"){
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
startYear: moment().format('YYYY'),
endYear: moment().format('YYYY'),
searchName: 'userName',
searchKeyword: '',
agencyId: '',
takePartInLineId: '',
takePartInBaseManagementId: '',
regionalNature: '',
lotId: '',
isTakePartIn: '',
unionId: '',
unitId: '',
pageNumber: 1
}
await this.getAgencyList()
await this.getUnionSelectLine()
this.flushUnits()
},
/**
* 打开代选路线弹窗,重置报名人员、线路和家属信息,避免沿用上一次代选数据。
*/
@@ -104,6 +104,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -295,6 +296,21 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: new Date().getFullYear().toString(),
lineId: null,
unionId: null,
keywords: null,
regionalNature: null,
lotId: null,
pageNumber: 1
}
await this.findUnionSignUpModeLineList()
this.lotList = this.getLotList()
this.doSearch()
},
async getLotList() {
const {data} = await $.post('/platform/inclusiveTherapyV3/TheRapyConfig/findOne')
this.lotList = data.lots
@@ -89,6 +89,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -385,6 +386,16 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: new Date().getFullYear().toString(),
unionId: null,
keywords: null,
pageNumber: 1
}
this.doSearch()
},
getClusterName(item) {
let count = 0
item.members.forEach(item => {
@@ -99,6 +99,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -459,6 +460,19 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
keywords: null,
travelAgencyId: null,
unionId: null,
lotId: null,
regionalNature: '全部',
pageNumber: 1
}
this.yearChange()
},
doSearch() {
this.$set(this.pageForm, 'pageNumber', 1)
this.pageData()
@@ -186,6 +186,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -736,6 +737,21 @@ layout("/layouts/platform.html"){
}
},
methods: {
async resetSearch() {
this.pageForm = {
...this.pageForm,
year: moment().format('YYYY'),
keywords: null,
travelAgencyId: null,
lotId: null,
regionalNature: '全部',
selectStatus: -1,
pageNumber: 1
}
await this.getLotList()
await this.getTravelAgencyOptions()
this.doSearch()
},
doSearch() {
this.tableData = []
@@ -354,6 +354,7 @@ layout("/layouts/platform.html"){
<div class="search-query">
<el-button @click="getUserDataByLineId" icon="el-icon-search" type="primary">搜索</el-button>
<el-button @click="resetUserSearch" icon="el-icon-refresh-left">重置</el-button>
</div>
</search>
</el-card>
@@ -552,6 +553,17 @@ layout("/layouts/platform.html"){
'line-info': httpVueLoader('/components/staffbenefit/therapyRecuperation/LineInfo.vue')
},
methods: {
resetUserSearch() {
this.userPageForm = {
...this.userPageForm,
searchKeyword: '',
unionId: '',
unitId: '',
pageNumber: 1
}
this.units = []
this.getUserDataByLineId()
},
handleSelectionChange(val) {
this.$set(this, 'multipleSelection', val)
},
@@ -401,15 +401,16 @@ layout("/layouts/platform_h5.html"){
}
#app.therapy-mobile .line-toolbar .van-dropdown-menu__title--active,
#app.therapy-mobile .line-toolbar .van-dropdown-item__option--active {
#app.therapy-mobile .line-toolbar .van-dropdown-item__option--active,
#app.therapy-mobile .line-toolbar .van-dropdown-item__option--active .van-dropdown-item__icon {
color: #1989fa;
}
#app.therapy-mobile .line-toolbar .van-dropdown-item__content {
width: auto;
width: calc(100% - 24px);
max-width: none;
max-height: 50vh;
margin: 0;
margin: 0 12px;
box-sizing: border-box;
overflow-x: hidden;
overflow-y: auto;
@@ -417,39 +418,23 @@ layout("/layouts/platform_h5.html"){
box-shadow: 0 10px 24px rgba(31, 65, 108, .14);
}
#app.therapy-mobile .line-type-selector .van-dropdown-item__content {
left: auto;
right: max(12px, calc((100vw - 640px) / 2 + 12px));
width: 112px;
}
#app.therapy-mobile .line-status-selector .van-dropdown-item__content {
left: max(12px, calc((100vw - 640px) / 2 + 12px));
right: auto;
width: calc(50% - 12px);
max-width: 308px;
}
#app.therapy-mobile .line-source-selector .van-dropdown-item__content {
left: auto;
right: max(12px, calc((100vw - 640px) / 2 + 12px));
width: calc(50% - 12px);
max-width: 308px;
}
#app.therapy-mobile .line-toolbar .van-dropdown-item__option {
display: flex;
align-items: center;
min-height: 48px;
padding: 12px;
padding: 0 16px;
box-sizing: border-box;
color: #46566c;
font-size: 14px;
}
#app.therapy-mobile .line-toolbar .van-dropdown-item__option .van-cell__title {
display: flex;
flex: 1 1 auto;
min-width: 0;
line-height: 22px;
min-height: 20px;
align-items: center;
line-height: 20px;
overflow-wrap: anywhere;
}
@@ -561,9 +546,6 @@ layout("/layouts/platform_h5.html"){
@media (max-width: 350px) {
#app.therapy-mobile .line-type-selector { flex-basis: 100px; }
#app.therapy-mobile .line-type-selector .van-dropdown-item__content { width: 100px; right: 10px; }
#app.therapy-mobile .line-status-selector .van-dropdown-item__content { left: 10px; width: calc(50% - 10px); }
#app.therapy-mobile .line-source-selector .van-dropdown-item__content { right: 10px; width: calc(50% - 10px); }
#app.therapy-mobile .line-search-row { gap: 8px; }
#app.therapy-mobile .line-toolbar { padding-right: 10px; padding-left: 10px; }
#app.therapy-mobile .line-title-row { flex-wrap: wrap; }
@@ -588,15 +570,11 @@ layout("/layouts/platform_h5.html"){
<van-search
v-model="pageForm.lineKeyword"
placeholder="请输入线路名称"
show-action
@clear="doSearch"
@search="doSearch">
<template #action>
<div @click="doSearch">搜索</div>
</template>
</van-search>
</div>
<van-dropdown-menu class="line-type-selector">
<van-dropdown-menu class="line-type-selector" :close-on-click-outside="false" :close-on-click-overlay="false">
<van-dropdown-item
:value="Number(pageForm.theRapyRecuperationType)"
:options="therapyTypeOptions"
@@ -605,6 +583,7 @@ layout("/layouts/platform_h5.html"){
</van-dropdown-menu>
</div>
<van-dropdown-menu class="line-filter-dropdowns" active-color="#1989fa"
:close-on-click-outside="false" :close-on-click-overlay="false"
v-if="['0', 0, '1', 1].includes(pageForm.theRapyRecuperationType)">
<van-dropdown-item class="line-status-selector"
v-model="pageForm.signUpStatus"
@@ -178,6 +178,73 @@ layout("/layouts/platform_h5.html"){
margin-left: 4px;
}
#app.therapy-mobile .van-nav-bar,
#app.therapy-mobile .van-sticky--fixed { background: #fff; }
#app.therapy-mobile .van-nav-bar__title { color: #172033; font-size: 16px; font-weight: 600; }
#app.therapy-mobile .recuperation-toolbar { padding: 22px 12px 10px; }
#app.therapy-mobile .recuperation-type-selector,
#app.therapy-mobile .recuperation-filters {
overflow: hidden;
border-radius: 12px;
background: #fff;
box-shadow: 0 5px 16px rgba(43, 73, 112, .08);
}
#app.therapy-mobile .recuperation-type-selector { margin-bottom: 8px; }
#app.therapy-mobile .recuperation-toolbar .van-dropdown-menu__bar {
height: 44px;
background: #fff;
box-shadow: none;
}
#app.therapy-mobile .recuperation-toolbar .van-dropdown-menu__title {
color: #66758a;
font-size: 14px;
font-weight: 400;
}
#app.therapy-mobile .recuperation-toolbar .van-dropdown-menu__title--active,
#app.therapy-mobile .recuperation-toolbar .van-dropdown-item__option--active,
#app.therapy-mobile .recuperation-toolbar .van-dropdown-item__option--active .van-icon { color: #1989fa; }
#app.therapy-mobile .recuperation-toolbar .van-dropdown-item__content {
width: calc(100% - 24px);
max-height: 50vh;
margin: 0 12px;
box-sizing: border-box;
border-radius: 0 0 12px 12px;
box-shadow: 0 10px 24px rgba(31, 65, 108, .14);
}
#app.therapy-mobile .list-card {
margin: 4px 10px 14px;
border: 0;
border-radius: 16px;
box-shadow: 0 8px 24px rgba(49, 85, 145, .06);
}
#app.therapy-mobile .list-card > .content { padding: 16px 14px; }
#app.therapy-mobile .list-card > .content > .van-image {
flex: 0 0 30%;
width: 30% !important;
height: auto !important;
aspect-ratio: 4 / 3;
overflow: hidden;
border-radius: 12px;
}
#app.therapy-mobile .cr-title {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
white-space: normal;
color: #172033;
font-size: 16px;
line-height: 24px;
}
#app.therapy-mobile .cr-title > span { font-size: 16px !important; }
#app.therapy-mobile .concat,
#app.therapy-mobile .mobile,
#app.therapy-mobile .union { font-size: 13px; line-height: 23px; color: #66758a; }
#app.therapy-mobile .operateDiv { border-top-color: #f2f4f7; }
#app.therapy-mobile .operateDiv .van-button { border-radius: 8px; }
#app.therapy-mobile .van-list__finished-text { font-size: 14px; color: #8c93a3; }
</style>
<div id="app" class="therapy-mobile" v-cloak>
@@ -186,24 +253,19 @@ layout("/layouts/platform_h5.html"){
title="我的疗休养"></van-nav-bar>
</van-sticky>
<van-dropdown-menu>
<div class="recuperation-toolbar">
<van-dropdown-menu class="recuperation-type-selector" active-color="#1989fa">
<van-dropdown-item :value="Number(pageForm.theRapyRecuperationType)"
:options="chooseButton.map(item => ({text: item.label, value: item.value}))"
@change="pageForm.theRapyRecuperationType = $event; doSearch()"></van-dropdown-item>
</van-dropdown-menu>
<van-dropdown-menu class="recuperation-filters" active-color="#1989fa">
<van-dropdown-item v-model="pageForm.year" :options="yearArray"
@change="doSearch"></van-dropdown-item>
<van-dropdown-item v-model="pageForm.signUpStateId" :options="stateArray"
@change="doSearch"></van-dropdown-item>
</van-dropdown-menu>
<!--按钮导航-->
<div class="choose_button van-doc-card">
<van-grid :column-num="chooseButton.length" :border="false">
<van-grid-item @click="pageForm.theRapyRecuperationType = item.value; doSearch()"
v-for="item in chooseButton">
<van-image width="46" height="46" :src="item.imgUrl"></van-image>
<div :style="pageForm.theRapyRecuperationType == item.value ? 'color: #1867b0; font-weight: bold' : 'color: black; font-weight: normal'"
class="button_text">{{item.label}}
</div>
</van-grid-item>
</van-grid>
<!--<van-divider></van-divider>
@@ -212,7 +274,6 @@ layout("/layouts/platform_h5.html"){
<van-button @click="pageForm.signUpStateId = 2; getData()" :class="pageForm.signUpStateId == 2 ? 'active' : 'no_active'">已参加</van-button>
<van-button @click="pageForm.signUpStateId = 3; getData()" :class="pageForm.signUpStateId == 3 ? 'active' : 'no_active'">未参加</van-button>
</div>-->
</div>
<van-list
:finished="finished"