This commit is contained in:
2025-06-19 02:44:32 +08:00
parent b67c9577c1
commit ca1875a8a1
2 changed files with 250 additions and 0 deletions
@@ -0,0 +1,30 @@
package io.v.nutz.zhgh.therapyRecuperation.controller.mine;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
/**
* @author zhf
* @date 2025/6/18 22:46
* @description 我的疗休养
*/
@IocBean
@Ok("json:full")
@At("/platform/theRapyRecuperation/mineEnroll")
public class MineTheRapyRecuperationEnrollController {
@Inject
private Dao dao;
@At("")
@Ok("beetl:/platform/theRapyRecuperation/mine/index.html")
@RequiresPermissions("theRapyRecuperation.mineEnroll")
public void index() {
}
}
@@ -0,0 +1,220 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava ref="guava">
<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
v-model="pageForm.year"
type="year"
:clearable="false"
value-format="yyyy" style="width: 100%"
@change="doSearch"
placeholder="选择年">
</el-date-picker>
</div>
</div>
<div class="search-item">
<div class="search-item-label">线路名称:</div>
<div class="search-item-option">
<el-radio-group v-model="pageForm.theRapyRecuperationType" @change="doSearch">
<el-radio-button :label="item.value" v-for="item in chooseButton">{{item.label}}
</el-radio-button>
</el-radio-group>
</div>
</div>
</div>
</el-card>
<el-card class="mt10" shadow="never">
<table-tool :app="this" label="线路列表">
<template #func>
<el-radio-group v-model="pageForm.signUpStateId" @change="doSearch">
<el-radio-button label="1">已报名</el-radio-button>
<el-radio-button label="2">已参加</el-radio-button>
<el-radio-button label="3">未参加</el-radio-button>
</el-radio-group>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize" @sort-change="pageOrder"
align="center"
header-align="center">
<el-table-column :index="indexMethod" align="center" header-align="center" label="序号" type="index"
width="80px"></el-table-column>
<el-table-column align="center" header-align="center" label="年度" type="signingUptime">
<template scope="{row}">
{{moment(row.signingUptime).format('YYYY')}}
</template>
</el-table-column>
<el-table-column align="center" header-align="center"
:label="pageForm.theRapyRecuperationType===3?'名称':'线路名称'">
<template scope="{row}">
{{pageForm.theRapyRecuperationType===3?row.baseName:row.lineName}}
</template>
</el-table-column>
<template v-if="pageForm.theRapyRecuperationType===3">
<el-table-column align="center" header-align="center"
label="联系人" prop="baseContactPerson">
</el-table-column>
<el-table-column align="center" header-align="center"
label="联系方式" prop="baseContactNumber">
</el-table-column>
<el-table-column align="center" header-align="center"
label="已报人数" prop="signUpUserNum">
</el-table-column>
</template>
<template v-if="pageForm.theRapyRecuperationType!==3">
<el-table-column align="center" header-align="center"
label="时间标段" prop="lotName">
</el-table-column>
<el-table-column align="center" header-align="center"
label="组织形式" prop="signUpMode">
<template scope="{row}">
<span>{{row.signUpMode === 1 ? '校工会组织' : '分工会组织'}}</span>
</template>
</el-table-column>
<el-table-column align="center" header-align="center"
label="旅行社" prop="travelAgencyName">
</el-table-column>
<el-table-column align="center" header-align="center"
label="联系方式" prop="contactMobileNumber">
</el-table-column>
<el-table-column align="center" header-align="center"
label="随行家属" prop="companionCount">
</el-table-column>
</template>
<el-table-column label="操作" width="400">
<template scope="{row}">
<el-button @click="openLine(row)" size="mini" type="primary">查看</el-button>
<el-button @click="edit(row)" size="mini" type="primary"
v-if="pageForm.theRapyRecuperationType != '2' && moment().unix() < moment(row.changeEndTime).unix()
&& ![2715,2725,2735].includes(row.stateId)"
:disabled="row.isTakePartIn == true || getDisabled(row)">修改报名信息
</el-button>
<el-button @click="editOther(row)" size="mini" type="primary"
v-if="pageForm.theRapyRecuperationType != '2' && moment().unix() < moment(row.changeEndTime).unix()
&& ![2715,2725,2735].includes(row.stateId)"
:disabled="row.isTakePartIn == true || getDisabled(row)">修改成其他线路
</el-button>
<el-button @click="cancel(row)" size="mini" type="danger" :disabled="getDisabled(row)">
&ensp;
</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</guava>
<el-dialog
title="详情"
:visible.sync="lineDialogVisible"
width="50%">
<info ref="lineRef" :index="pageForm.theRapyRecuperationType"></info>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="lineDialogVisible = false">关 闭</el-button>
</span>
</el-dialog>
</div>
<script>
<!--#include('../signUp/info.js'){}#-->
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
pageForm: {
theRapyRecuperationType: 0,
signUpStateId: 1,
year: new Date().getFullYear() + "",
},
chooseButton: [],
configData: {},
lineDialogVisible: false
}
},
components: {
'info': INFO
},
methods: {
edit(o) {
},
editOther(o) {
},
openLine(row) {
this.lineDialogVisible = true
this.$nextTick(() => {
this.$refs.lineRef.openInit(row.takePartInLineId, row.takePartInBaseManagementId)
})
},
getDisabled(o) {
if (o.regionalNature === '省内') {
return this.configData.isSnLine && o.stateId === 2750
}
if (o.regionalNature === '省外') {
return this.configData.isSwLine && o.stateId === 2750
}
return true
},
async cancel(o) {
if (this.pageForm.theRapyRecuperationType != '2') {
const re = await $.post('/platform/theRapyRecuperation/line/enroll/canDelete/' + o.id)
if (re.code !== 0) {
this.$message.error(re.msg)
return
}
this.$confirm('您确定要撤销此报名吗?', '温馨提醒', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async () => {
const res = await $.post('/platform/theRapyRecuperation/line/enroll/doDeleteMyEnrollInfoById/' + o.id)
if (res.code === 0) {
this.$message.success(res.msg)
this.pageData()
} else {
this.$message.error(res.msg)
}
})
}
},
pageData() {
sublime.showLoadingbar();
this.tableLoading = true
$.post('/platform/theRapyRecuperation/line/enroll/mySignUpPageData', 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 getConfigData() {
const resp = await $.get('/platform/theRapyRecuperation/TheRapyConfig/findOne')
this.configData = resp.data
},
},
async created() {
this.chooseButton = await getEnumOptions('TheRapyRecuperationType')
this.chooseButton = this.chooseButton.filter(o => o.value !== 2)
await this.getConfigData()
this.pageData()
}
})
</script>
<!--#
}
#-->