feat: 疗休养优化2

This commit is contained in:
2026-11-04 18:12:51 +08:00
parent 060e8d5bc7
commit fd117b4fc3
7 changed files with 353 additions and 126 deletions
@@ -0,0 +1,55 @@
;(function (a) {
;(jQuery.browser = jQuery.browser || {}).mobile =
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(
a
) ||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
a.substr(0, 4)
)
})(navigator.userAgent || navigator.vendor || window.opera)
$.ajaxSetup({
contentType: "application/x-www-form-urlencoded;charset=utf-8",
success: function (response, textStatus, jqXHR) {
if (response && typeof response === "object" && response.code !== undefined && response.code !== 0) {
Vue.prototype.$message.error(response.msg)
} else {
return response
}
},
error: function (v1) {
Vue.prototype.$message.error(v1.status + " " + v1.statusText)
},
complete: function (XMLHttpRequest, textStatus) {
var sessionstatus = XMLHttpRequest.getResponseHeader("loginStatus") //通过XMLHttpRequest取得响应头,sessionstatus,
if (sessionstatus == "accessDenied") {
Vue.prototype.$message({
message: "\u767b\u5f55\u5931\u6548\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u91cd\u65b0\u767b\u5f55",
type: "error"
})
}
if (sessionstatus == "unauthorized") {
Vue.prototype.$message({
message: "\u6ca1\u6709\u6743\u9650",
type: "error"
})
}
}
})
function pjaxReplace(url, data = {}) {
const { pathname, search } = location
if (url === pathname + search) {
return
}
$.pjax({
url: url,
container: "#sub-app-container-main-content-body",
maxCacheLength: 0,
push: false,
replace: true,
fragment: "#sub-app-container-main-content-body",
timeout: 8000,
data
})
}
@@ -15,32 +15,40 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
margin-right: 0; margin-right: 0;
} }
#app .search .line-year-filter { #app .search .line-year-range-input {
grid-column: span 2; width: 230px;
max-width: 100%;
} }
#app .search .line-year-range { .line-year-range-panel .year-range-header {
display: grid; display: flex;
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); justify-content: space-between;
align-items: center; align-items: center;
gap: 10px; margin-bottom: 12px;
} }
#app .search .line-year-range > .picker-year { .line-year-range-panel .year-range-grid {
width: 100%; display: grid;
min-width: 0; grid-template-columns: repeat(3, 1fr);
gap: 8px;
} }
#app .search .line-year-range > span { .line-year-range-panel .year-range-grid .el-button {
width: auto; margin: 0;
}
.line-year-range-panel .year-range-grid .in-range {
color: var(--color-primary, #409eff);
background: #ecf5ff;
}
.line-year-range-panel .year-range-footer {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
color: #909399; color: #909399;
font-weight: 400; font-size: 12px;
}
@media (max-width: 767px) {
#app .search .line-year-filter {
grid-column: span 1;
}
} }
</style> </style>
@@ -48,39 +56,34 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<guava ref="guava"> <guava ref="guava">
<el-card shadow="never"> <el-card shadow="never">
<div class="search"> <div class="search">
<div class="search-item line-year-filter"> <div class="search-item">
<div class="search-item-label">年度范围:</div> <div class="search-item-label">年度范围:</div>
<div class="search-item-option line-year-range"> <div class="search-item-option">
<el-date-picker <el-popover v-model="yearRangeVisible" placement="bottom-start" trigger="click"
v-model="pageForm.startYear" width="320" popper-class="line-year-range-panel" @show="openYearRange">
type="year" <div class="year-range-header">
class="picker-year" <el-button type="text" icon="el-icon-d-arrow-left" aria-label="前十年"
format="yyyy" @click="yearRangeDecade -= 10"></el-button>
placeholder="开始年份" <span>{{yearRangeDecade}} - {{yearRangeDecade + 11}}</span>
value-format="yyyy" <el-button type="text" icon="el-icon-d-arrow-right" aria-label="后十年"
@change="handleChangeYear" @click="yearRangeDecade += 10"></el-button>
> </div>
</el-date-picker> <div class="year-range-grid">
<span>至</span> <el-button v-for="offset in 12" :key="yearRangeDecade + offset - 1" size="small"
<el-date-picker :type="yearRangeStart === yearRangeDecade + offset - 1 ? 'primary' : 'default'"
v-model="pageForm.endYear" :class="{'in-range': !yearRangeStart && pageForm.startYear && pageForm.endYear && yearRangeDecade + offset - 1 >= Number(pageForm.startYear) && yearRangeDecade + offset - 1 <= Number(pageForm.endYear)}"
type="year" @click="selectRangeYear(yearRangeDecade + offset - 1)">
class="picker-year" {{yearRangeDecade + offset - 1}}
format="yyyy" </el-button>
placeholder="结束年份" </div>
value-format="yyyy" <div class="year-range-footer">
@change="handleChangeYear" <span>{{yearRangeStart ? '已选 ' + yearRangeStart + ',请选择结束年份' : '请选择开始年份'}}</span>
> <el-button type="text" @click="clearYearRange">清空</el-button>
</el-date-picker> </div>
<el-input slot="reference" class="line-year-range-input" readonly
<!--<el-date-picker prefix-icon="el-icon-date" placeholder="开始年份 至 结束年份"
style="width: 100%" :value="pageForm.startYear || pageForm.endYear ? (pageForm.startYear || '开始年份') + ' 至 ' + (pageForm.endYear || '结束年份') : ''"></el-input>
@change="doSearch" </el-popover>
placeholder="选择年度"
type="year"
v-model="pageForm.year"
value-format="yyyy">
</el-date-picker>-->
</div> </div>
</div> </div>
<div class="search-item"> <div class="search-item">
@@ -686,6 +689,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
} }
return { return {
yearRangeVisible: false,
yearRangeStart: null,
yearRangeDecade: Math.floor(new Date().getFullYear() / 10) * 10,
tableColumns: [ tableColumns: [
{label: '年度', prop: 'year', sortable: true}, {label: '年度', prop: 'year', sortable: true},
{label: '线路名称', prop: 'lineName', sortable: true, width: '200'}, {label: '线路名称', prop: 'lineName', sortable: true, width: '200'},
@@ -1093,6 +1099,28 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
this.lineImportLoading = false this.lineImportLoading = false
} }
}, },
openYearRange() {
this.yearRangeStart = null
const year = Number(this.pageForm.startYear) || new Date().getFullYear()
this.yearRangeDecade = Math.floor(year / 10) * 10
},
selectRangeYear(year) {
if (this.yearRangeStart === null) {
this.yearRangeStart = year
return
}
this.pageForm.startYear = String(Math.min(this.yearRangeStart, year))
this.pageForm.endYear = String(Math.max(this.yearRangeStart, year))
this.yearRangeStart = null
this.yearRangeVisible = false
this.handleChangeYear()
},
clearYearRange() {
this.pageForm.startYear = ''
this.pageForm.endYear = ''
this.yearRangeStart = null
this.yearRangeVisible = false
},
handleChangeYear() { handleChangeYear() {
if (this.pageForm.startYear && this.pageForm.endYear) { if (this.pageForm.startYear && this.pageForm.endYear) {
if (this.pageForm.startYear > this.pageForm.endYear) { if (this.pageForm.startYear > this.pageForm.endYear) {
@@ -26,6 +26,95 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
.el-table-container { .el-table-container {
padding-top: 0; padding-top: 0;
} }
#app .branch-query-filters .query-condition-row {
display: flex;
align-items: flex-start;
gap: 12px;
}
#app .branch-query-filters .query-condition-label {
flex: 0 0 90px;
color: #606266;
text-align: right;
line-height: 32px;
}
#app .branch-query-filters .query-condition-options {
display: flex;
flex: 1;
min-width: 0;
flex-wrap: wrap;
align-items: center;
gap: 10px;
}
#app .branch-query-filters .query-condition-options .el-tag {
margin: 0;
cursor: pointer;
}
#app .branch-query-filters .query-row-content > .el-row:empty {
display: none;
}
#app .branch-query-filters .query-row-content > .el-row > .query-hint {
display: block;
padding: 10px 14px;
margin: 0;
border-radius: 4px;
background: #fdf6ec;
color: #b36b13;
line-height: 24px;
overflow-wrap: anywhere;
}
#app .branch-query-filters .query-row-content > .el-row > .query-hint > span {
display: inline;
color: inherit;
text-align: left;
}
#app .branch-query-filters .query-hint-row {
margin-left: 0;
margin-top: 12px;
}
#app .branch-query-filters .query-extra-fields {
display: flex;
flex-wrap: wrap;
gap: 12px 0;
}
#app .branch-query-filters .query-extra-fields > .el-col {
display: flex;
align-items: center;
gap: 12px;
padding-right: 24px;
}
#app .branch-query-filters .query-extra-fields > .el-col > span {
flex: 0 0 90px;
color: #606266;
text-align: right;
}
#app .branch-query-filters .query-extra-fields > .el-col > .el-select {
flex: 1;
width: 0 !important;
min-width: 0;
}
@media (max-width: 767px) {
#app .branch-query-filters .query-hint-row {
margin-left: 0;
}
#app .branch-query-filters .query-extra-fields > .el-col {
width: 100%;
padding-right: 0;
}
}
</style> </style>
@@ -33,7 +122,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<guava ref="guava"> <guava ref="guava">
<template> <template>
<el-card shadow="never"> <el-card shadow="never" class="branch-query-filters">
<el-row align="middle" class="query-row" type="flex"> <el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col> <el-col class="query-row-title"></el-col>
<el-col class="query-row-content"> <el-col class="query-row-content">
@@ -103,13 +192,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-row> </el-row>
<el-row align="middle" class="query-row" type="flex"> <el-row align="middle" class="query-row" type="flex">
<el-col class="query-row-title"></el-col> <el-col class="query-row-title"></el-col>
<el-col class="query-row-content"> <el-col class="query-row-content query-condition-row">
<span>查询条件:</span> <span class="query-condition-label">查询条件:</span>
<div class="query-condition-options">
<el-tag :effect="pageForm.state===item.value?'dark':'plain'" <el-tag :effect="pageForm.state===item.value?'dark':'plain'"
:key="item.value" :key="item.value"
:type="item.label" :type="item.label"
@click="checkState(item.value)" @click="checkState(item.value)"
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;"
v-for="item in options"> v-for="item in options">
{{ item.label }} {{ item.label }}
</el-tag> </el-tag>
@@ -120,19 +209,20 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
unitDisabled = false" unitDisabled = false"
type="danger" v-if="options.length&&pageForm.state">清空 type="danger" v-if="options.length&&pageForm.state">清空
</el-link> </el-link>
</div>
</el-col> </el-col>
</el-row> </el-row>
<!--#if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('H04')){#--> <!--#if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('H04')){#-->
<el-row align="middle" class="query-row" type="flex" <el-row align="middle" class="query-row" type="flex"
v-if="pageForm.state==='1'&&pageForm.lb==='ry'"> v-if="pageForm.state==='1'&&pageForm.lb==='ry'">
<el-col class="query-row-title"></el-col> <el-col class="query-row-title"></el-col>
<el-col class="query-row-content"> <el-col class="query-row-content query-condition-row">
<span>报名路线:</span> <span class="query-condition-label">报名路线:</span>
<div class="query-condition-options">
<el-tag :effect="pageForm.state2===item.value?'dark':'plain'" <el-tag :effect="pageForm.state2===item.value?'dark':'plain'"
:key="item.value" :key="item.value"
:type="item.label" :type="item.label"
@click="checkState2(item.value)" @click="checkState2(item.value)"
style="margin-right: 10px;cursor: pointer;margin-bottom: 5px;font-size: 15px"
v-for="item in options2"> v-for="item in options2">
{{ item.label }} {{ item.label }}
</el-tag> </el-tag>
@@ -140,6 +230,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
@click="pageForm.state2='';doSearch();getBmUserUnion();pageForm.takePartInLineId='';getXlByUnion()" @click="pageForm.state2='';doSearch();getBmUserUnion();pageForm.takePartInLineId='';getXlByUnion()"
style="color: red" v-if="options2.length&&pageForm.state">清空 style="color: red" v-if="options2.length&&pageForm.state">清空
</el-link> </el-link>
</div>
</el-col> </el-col>
</el-row> </el-row>
<!--#}#--> <!--#}#-->
@@ -161,10 +252,6 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-select> </el-select>
</el-col> </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'"> <el-col :span="12" v-if="pageForm.state=='2'">
<span>选择旅行社:</span> <span>选择旅行社:</span>
<el-select v-model="pageForm.agencyId" filterable clearable <el-select v-model="pageForm.agencyId" filterable clearable
@@ -195,8 +282,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-row> </el-row>
<el-row v-if="!pageForm.state"> <el-row v-if="pageForm.state=='1'" class="query-hint-row">
<el-col :span="24" style="color: red;margin-top: 10px"> <el-col :span="24" class="query-hint">
<span>【本工会报名线路】和【本工会人员选择其他工会的线路】</span>
</el-col>
</el-row>
<el-row v-if="!pageForm.state" class="query-hint-row">
<el-col :span="24" class="query-hint">
<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】和【其他工会选择本工会线路的疗休养人员】</span> <span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】和【其他工会选择本工会线路的疗休养人员】</span>
<!--<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】</span>--> <!--<span>温馨提醒:当前操作查询是【本工会当年参加疗休养的人员(包含校工会线路)】</span>-->
@@ -208,7 +300,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<el-row align="middle" class="query-row" type="flex" <el-row align="middle" class="query-row" type="flex"
v-if="pageForm.state=='1'||pageForm.state=='3'"> v-if="pageForm.state=='1'||pageForm.state=='3'">
<el-col class="query-row-title"></el-col> <el-col class="query-row-title"></el-col>
<el-col class="query-row-content"> <el-col class="query-row-content query-extra-fields">
<el-col :span="8"> <el-col :span="8">
<span>出行时间:</span> <span>出行时间:</span>
<el-select v-model="pageForm.selectId" filterable clearable <el-select v-model="pageForm.selectId" filterable clearable
@@ -280,7 +372,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<!-- <el-button icon="el-icon-s-promotion" @click="openImport" size="small" <!-- <el-button icon="el-icon-s-promotion" @click="openImport" size="small"
type="primary">参加人员导入 type="primary">参加人员导入
</el-button>--> </el-button>-->
<!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasAnyRoles('H04,superadmin')){ #--> <!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasAnyRoles('H04,sysadmin')){ #-->
<template> <template>
<el-button icon="el-icon-s-promotion" <el-button icon="el-icon-s-promotion"
@click="$downloadFile('/platform/inclusiveTherapyV3/query/exportDeclareForm')" @click="$downloadFile('/platform/inclusiveTherapyV3/query/exportDeclareForm')"
@@ -360,11 +452,12 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
:prop="column.prop" :prop="column.prop"
:sortable="column.sortable" :sortable="column.sortable"
> >
<template slot-scope="{row}" v-if="column.prop=='lineName'"> <template slot-scope="{row}">
<template v-if="column.prop=='lineName'">
<el-link type="primary" @click="openLine(row)">{{row.lineName}} <el-link type="primary" @click="openLine(row)">{{row.lineName}}
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='isFamily'"> <template v-else-if="column.prop=='isFamily'">
<el-link v-if="!row.familyNumber" type="primary" @click="openView(row)"> <el-link v-if="!row.familyNumber" type="primary" @click="openView(row)">
{{row.isFamily?'携带':'未携带'}}({{row.isFamily}}) {{row.isFamily?'携带':'未携带'}}({{row.isFamily}})
</el-link> </el-link>
@@ -372,7 +465,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}}) {{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}})
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='lineNum'"> <template v-else-if="column.prop=='lineNum'">
<span v-if="!row.familyNumber" > <span v-if="!row.familyNumber" >
{{row.lineNum}}({{row.signUpUserFamilyNum}}) {{row.lineNum}}({{row.signUpUserFamilyNum}})
@@ -383,25 +476,25 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='signUpMode'"> <template v-else-if="column.prop=='signUpMode'">
{{signUpModeName(row.signUpMode)}} {{signUpModeName(row.signUpMode)}}
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='agencyNum'"> <template v-else-if="column.prop=='agencyNum'">
<el-link type="primary" @click="openApplyUser(row)">{{row.agencyNum}} <el-link type="primary" @click="openApplyUser(row)">{{row.agencyNum}}
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='times'"> <template v-else-if="column.prop=='times'">
<div v-if="row.playStartTime">{{row.playStartTime}}</div> <div v-if="row.playStartTime">{{row.playStartTime}}</div>
<div v-else>{{row.playStartTime1}}</div> <div v-else>{{row.playStartTime1}}</div>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='isTakePartIn'"> <template v-else-if="column.prop=='isTakePartIn'">
{{row.isTakePartIn?'已参加':'未参加'}} {{row.isTakePartIn?'已参加':'未参加'}}
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='stateId'"> <template v-else-if="column.prop=='stateId'">
<span v-if="row.stateId"> <span v-if="row.stateId">
<vi-table-state :state="row"></vi-table-state> <vi-table-state :state="row"></vi-table-state>
</span>--> </span>
<sapn v-else style="color: #67C23A">暂无</sapn> <span v-else style="color: #67C23A">暂无</span>
</template> </template>
<!--<template scope="{row}" v-else-if="column.prop=='travelAgencyName'"> <!--<template scope="{row}" v-else-if="column.prop=='travelAgencyName'">
@@ -409,16 +502,17 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{row.travelAgencyName}} {{row.travelAgencyName}}
</el-link> </el-link>
</template>--> </template>-->
<template slot-scope="{row}" v-else-if="column.prop=='lineOrMaName'"> <template v-else-if="column.prop=='lineOrMaName'">
{{row.lineName?row.lineName:row.baseName?row.baseName:row.travelAgencyName}} {{row.lineName?row.lineName:row.baseName?row.baseName:row.travelAgencyName}}
</template> </template>
<template slot-scope="{row:{officialWebsite}}" <template
v-else-if="column.prop==='officialWebsite'"> v-else-if="column.prop==='officialWebsite'">
<a :href="officialWebsite" class="text-primary" target="_blank"> <a :href="row.officialWebsite" class="text-primary" target="_blank">
{{officialWebsite}} {{row.officialWebsite}}
</a> </a>
</template> </template>
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template> <template v-else>{{row[column.prop]}}</template>
</template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="家属信息" type="expand" width="100px" <!-- <el-table-column label="家属信息" type="expand" width="100px"
v-if="pageForm.lb==='ry'"> v-if="pageForm.lb==='ry'">
@@ -266,12 +266,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
:prop="column.prop" :prop="column.prop"
:sortable="column.sortable" :sortable="column.sortable"
> >
<template slot-scope="{row}" v-if="column.prop=='lineName'"> <template slot-scope="{row}">
<template v-if="column.prop=='lineName'">
{{row.baseName?row.baseName:row.lineName}} {{row.baseName?row.baseName:row.lineName}}
<!-- <el-link type="primary" @click="openLine(row)">{{row.lineName}} <!-- <el-link type="primary" @click="openLine(row)">{{row.lineName}}
</el-link>--> </el-link>-->
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='isFamily'"> <template v-else-if="column.prop=='isFamily'">
<el-link v-if="!row.familyNumber" type="primary" @click="openView(row)"> <el-link v-if="!row.familyNumber" type="primary" @click="openView(row)">
{{row.isFamily?'携带':'未携带'}}({{row.isFamily}}) {{row.isFamily?'携带':'未携带'}}({{row.isFamily}})
</el-link> </el-link>
@@ -279,15 +280,16 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}}) {{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}})
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='isTakePartIn'"> <template v-else-if="column.prop=='isTakePartIn'">
{{row.isTakePartIn?'已参加':'未参加'}} {{row.isTakePartIn?'已参加':'未参加'}}
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='lotName'"> <template v-else-if="column.prop=='lotName'">
<span v-if="row.lotName"> {{row.lotName}}</span> <span v-if="row.lotName"> {{row.lotName}}</span>
<span v-else>暂无</span> <span v-else>暂无</span>
</template> </template>
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template> <template v-else>{{row[column.prop]}}</template>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="250px"> <el-table-column label="操作" width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
@@ -131,7 +131,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
header-align="center" header-align="center"
show-overflow-tooltip show-overflow-tooltip
v-for="column in tableColumns"> v-for="column in tableColumns">
<template slot-scope="{row}" v-if="column.prop === 'playTimes' || column.prop === 'signUpTimes'"> <template slot-scope="{row}">
<template v-if="column.prop === 'playTimes' || column.prop === 'signUpTimes'">
<template v-if="row[column.prop]"> <template v-if="row[column.prop]">
<template slot="content"> <template slot="content">
<div :class="[index === row[column.prop].split(',').length - 1 ? '' : 'mb10']" <div :class="[index === row[column.prop].split(',').length - 1 ? '' : 'mb10']"
@@ -146,15 +147,16 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</template> </template>
<span v-else>暂未设置</span> <span v-else>暂未设置</span>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop === 'signUpMode'"> <template v-else-if="column.prop === 'signUpMode'">
{{signUpModeName(row.signUpMode)}} {{signUpModeName(row.signUpMode)}}
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop === 'isOpen'"> <template v-else-if="column.prop === 'isOpen'">
{{row.isOpen ? '是' : '否'}} {{row.isOpen ? '是' : '否'}}
</template> </template>
<template slot-scope="{row}" v-else> <template v-else>
{{row[column.prop]}} {{row[column.prop]}}
</template> </template>
</template>
</el-table-column> </el-table-column>
<el-table-column align="center" header-align="center" label="操作" width="120px"> <el-table-column align="center" header-align="center" label="操作" width="120px">
<template slot-scope="{row}"> <template slot-scope="{row}">
@@ -215,19 +215,21 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
:fixed="column.fixed" :fixed="column.fixed"
:sortable="column.sortable" :sortable="column.sortable"
> >
<template slot-scope="{row}" v-if="column.prop=='lineName'"> <template slot-scope="{row}">
<template v-if="column.prop=='lineName'">
<el-link type="primary" @click="openLine(row)">{{row.lineName}} <el-link type="primary" @click="openLine(row)">{{row.lineName}}
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='signUpMode'"> <template v-else-if="column.prop=='signUpMode'">
<span>{{row.signUpMode == '1' ? '校工会组织' : '分工会组织'}}</span> <span>{{row.signUpMode == '1' ? '校工会组织' : '分工会组织'}}</span>
</template> </template>
<template slot-scope="{row}" v-else-if="column.prop=='groupCount'"> <template v-else-if="column.prop=='groupCount'">
<el-link type="primary" @click="openUserData(row)"> <el-link type="primary" @click="openUserData(row)">
{{Number(row.lineNum || 0) + Number(row.adultFamilyNum || 0)}} {{Number(row.lineNum || 0) + Number(row.adultFamilyNum || 0)}}
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template> <template v-else>{{row[column.prop]}}</template>
</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="380px" fixed="right"> <el-table-column label="操作" width="380px" fixed="right">
<template slot-scope="{row}"> <template slot-scope="{row}">
@@ -305,7 +307,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
:prop="column.prop" :prop="column.prop"
:sortable="column.sortable" :sortable="column.sortable"
:key="column.id || column.code || therapyIndex"> :key="column.id || column.code || therapyIndex">
<template slot-scope="{row}" v-if="column.prop=='isFamily'"> <template slot-scope="{row}">
<template v-if="column.prop=='isFamily'">
<el-link v-if="!row.familyNumber" type="primary"> <el-link v-if="!row.familyNumber" type="primary">
{{row.isFamily?'携带':'未携带'}}({{row.isFamily}}) {{row.isFamily?'携带':'未携带'}}({{row.isFamily}})
</el-link> </el-link>
@@ -313,7 +316,8 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}}) {{row.familyNumber?'携带':'未携带'}}({{row.familyNumber}})
</el-link> </el-link>
</template> </template>
<template slot-scope="{row}" v-else>{{row[column.prop]}}</template> <template v-else>{{row[column.prop]}}</template>
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-row class="el-pagination-container" style="margin-bottom: 0px"> <el-row class="el-pagination-container" style="margin-bottom: 0px">
@@ -15,38 +15,78 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
margin-bottom: 24px; margin-bottom: 24px;
} }
#app .therapy-config .el-card__body {
padding: 20px 24px 0;
}
#app .therapy-config .el-tabs__item {
height: 46px;
line-height: 46px;
}
#app .config-base { #app .config-base {
width: 100%;
}
#app .config-section {
display: grid; display: grid;
grid-template-columns: minmax(0, 1fr); grid-template-columns: minmax(0, 1fr);
max-width: 860px; gap: 0 28px;
margin-bottom: 20px;
padding: 20px 24px 4px;
border: 1px solid #ebeef5;
border-radius: 6px;
background: #fff;
} }
#app .config-section-title { #app .config-section-title {
grid-column: 1 / -1; grid-column: 1 / -1;
margin: 4px 0 18px; margin: 0 0 20px;
padding: 8px 12px; padding: 0 0 0 10px;
border-left: 3px solid var(--color-primary, #409eff); border-left: 3px solid var(--color-primary, #409eff);
color: #303133; color: #303133;
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
line-height: 20px; line-height: 20px;
background: #f5f7fa; background: transparent;
} }
#app .config-base .el-form-item { #app .config-base .el-form-item {
min-width: 0; min-width: 0;
margin-bottom: 18px; margin-bottom: 22px;
} }
#app .config-base .el-form-item__label { #app .config-base .el-form-item__label {
line-height: 20px; float: none;
padding-top: 10px; display: block;
padding-bottom: 10px; width: auto !important;
padding: 0 0 8px;
line-height: 22px;
text-align: left;
color: #606266;
}
#app .config-base .el-form-item__content {
margin-left: 0 !important;
}
#app .config-base .el-input,
#app .config-base .el-select {
width: 100%;
}
#app .config-base .el-radio-group {
display: inline-flex;
flex-wrap: wrap;
}
#app .therapy-config .el-table th {
background: #f5f7fa;
} }
#app .config-wide { #app .config-wide {
grid-column: 1 / -1; grid-column: 1 / -1;
max-width: 860px; min-width: 0;
} }
#app .config-scope, #app .config-scope,
@@ -54,6 +94,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 12px;
width: 100%;
} }
#app .config-scope .el-select { #app .config-scope .el-select {
@@ -85,6 +126,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
z-index: 20; z-index: 20;
margin: 20px 0 0; margin: 20px 0 0;
padding: 16px 0; padding: 16px 0;
box-shadow: 0 -6px 16px rgba(0, 0, 0, 0.03);
background: #fff; background: #fff;
border-top: 1px solid #ebeef5; border-top: 1px solid #ebeef5;
text-align: right; text-align: right;
@@ -98,24 +140,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
padding: 12px 25px; padding: 12px 25px;
} }
@media (min-width: 1280px) {
#app .config-base {
max-width: 1120px;
grid-template-columns: repeat(2, minmax(0, 1fr));
column-gap: 24px;
}
}
@media (max-width: 767px) { @media (max-width: 767px) {
#app .config-base > .el-form-item > .el-form-item__label { #app .therapy-config .el-card__body {
float: none; padding: 12px 12px 0;
display: block;
width: auto !important;
text-align: left;
} }
#app .config-base > .el-form-item > .el-form-item__content { #app .config-section {
margin-left: 0 !important; padding: 16px 14px 0;
} }
#app .config-time-range { #app .config-time-range {
@@ -146,6 +177,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
<el-form ref="addForm" :model="formData" :rules="formRules" label-width="200px"> <el-form ref="addForm" :model="formData" :rules="formRules" label-width="200px">
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab">
<el-tab-pane label="基本配置" name="baseConfig" class="config-base"> <el-tab-pane label="基本配置" name="baseConfig" class="config-base">
<div class="config-section">
<div class="config-section-title">基本信息</div> <div class="config-section-title">基本信息</div>
<el-form-item label="配置名称" prop="configName"> <el-form-item label="配置名称" prop="configName">
<el-input v-model="formData.configName" placeholder="请输入配置名称"></el-input> <el-input v-model="formData.configName" placeholder="请输入配置名称"></el-input>
@@ -205,6 +237,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</div> </div>
</el-form-item> </el-form-item>
</div>
<div class="config-section">
<div class="config-section-title">报名与出行规则</div> <div class="config-section-title">报名与出行规则</div>
<el-form-item label="省外最少成团人数(包括家属)" prop="outsideQuota"> <el-form-item label="省外最少成团人数(包括家属)" prop="outsideQuota">
<el-input v-model.number="formData.outsideQuota" <el-input v-model.number="formData.outsideQuota"
@@ -249,6 +284,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
v-model.number="formData.modifyNumber"></el-input> v-model.number="formData.modifyNumber"></el-input>
</el-form-item> </el-form-item>
</div>
<div class="config-section">
<div class="config-section-title">审核规则</div> <div class="config-section-title">审核规则</div>
<el-form-item label="省内线路是否需要审核" prop="isSnLine"> <el-form-item label="省内线路是否需要审核" prop="isSnLine">
<el-radio-group v-model="formData.isSnLine"> <el-radio-group v-model="formData.isSnLine">
@@ -271,6 +309,9 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div>
<div class="config-section">
<div class="config-section-title">名额与报名信息</div> <div class="config-section-title">名额与报名信息</div>
<el-form-item label="全批次最多报名人数" prop="allLineSignUpNumber"> <el-form-item label="全批次最多报名人数" prop="allLineSignUpNumber">
<el-input max="100" <el-input max="100"
@@ -298,6 +339,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="标段管理" name="lotManage"> <el-tab-pane label="标段管理" name="lotManage">
<el-form-item label-width="0"> <el-form-item label-width="0">
@@ -312,23 +354,23 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{scope.$index+1}} {{scope.$index+1}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="lotName" label="标段名称"> <el-table-column prop="lotName" label="标段名称" min-width="200">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.lotName" placeholder="请输入标段名称"></el-input> <el-input v-model="row.lotName" placeholder="请输入标段名称"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="lotValue" label="标段值"> <el-table-column prop="lotValue" label="标段值" min-width="160">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.lotValue" placeholder="请输入标段值"></el-input> <el-input v-model="row.lotValue" placeholder="请输入标段值"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="activityCost" label="标段费用"> <el-table-column prop="activityCost" label="标段费用" min-width="160">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.activityCost" placeholder="请输入标段费用"></el-input> <el-input v-model="row.activityCost" placeholder="请输入标段费用"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('sysadmin')){ #--> <!--# if(@com.budwk.app.zhgh.staffbenefit.therapyRecuperation.support.TherapyContext.hasRole('sysadmin')){ #-->
<el-table-column prop="index" label="操作"> <el-table-column prop="index" label="操作" width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" <el-button type="danger" icon="el-icon-delete"
@click="deleteLotsRow(scope)"></el-button> @click="deleteLotsRow(scope)"></el-button>
@@ -348,7 +390,7 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
{{scope.$index+1}} {{scope.$index+1}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="unionId" label="分工会"> <el-table-column prop="unionId" label="分工会" min-width="240">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-select v-model="row.unionId" placeholder="请选择分工会" filterable clearable <el-select v-model="row.unionId" placeholder="请选择分工会" filterable clearable
style="width: 100%"> style="width: 100%">
@@ -360,13 +402,13 @@ layout("/platform/zhgh/staffbenefit/therapyRecuperation/layouts/platform.html"){
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="minProvinceOutNumber" label="最少省外数量"> <el-table-column prop="minProvinceOutNumber" label="最少省外数量" min-width="180">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model.number="row.minProvinceOutNumber" <el-input v-model.number="row.minProvinceOutNumber"
placeholder="请输入最少省外数量"></el-input> placeholder="请输入最少省外数量"></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="minProvinceInNumber" label="最少省内数量"> <el-table-column prop="minProvinceInNumber" label="最少省内数量" min-width="180">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model.number="row.minProvinceInNumber" <el-input v-model.number="row.minProvinceInNumber"
placeholder="请输入最少省内数量"></el-input> placeholder="请输入最少省内数量"></el-input>