Files
UNION_HUTB/target/classes/static/components/activity/school/Info.vue
T
2026-09-09 09:14:28 +08:00

520 lines
19 KiB
Vue
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.
<template>
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="activity_view">
<el-tab-pane label="活动信息" name="1">
<el-form label-suffix="" label-position="left" style="padding: 20px 0">
<el-row gutter="20">
<el-col :span="24">
<vi-title title="基本信息"></vi-title>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="活动计划">
{{ viewData.plan | str }}
</el-form-item>
</el-col>-->
<el-col :span="8">
<el-form-item label="活动名称">
{{ viewData.name | str }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="活动地址">
{{ viewData.address | str }}
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="活动级别">
{{ activity.school.gameStyle[viewData.activityLevel] | str }}
</el-form-item>
</el-col>-->
<el-col :span="8">
<el-form-item label="报名日期">
{{ viewData.applyStartTime }} - {{ viewData.applyEndTime }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="主办单位">
{{ viewData.unitSponsorName | str }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="协办单位">
{{ viewData.unitJointlyName | str }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="活动时间">
{{ viewData.startTime }} - {{ viewData.endTime }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="竞赛方式">
<span v-if="viewData.gameStyle===1">竞赛类</span>
<span v-if="viewData.gameStyle===2">非竞赛类</span>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="经费预算">
{{ viewData.funding | money }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报名方式">
<span>{{ viewData.applyWay.map(v => activity.school.applyWay[v]).join('、') }}</span>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="报名人员类型">
<span v-if="viewData.personType===1">会员</span>
<span v-if="viewData.personType===2">普通教职工</span>
</el-form-item>
</el-col>-->
<el-col :span="24">
<vi-title title="活动说明"></vi-title>
</el-col>
<template v-if="viewData.gameStyle===1&&!viewData.applyWay.includes(3)">
<el-col :span="24">
<el-form-item label="运动员资格 ">
<div v-html="viewData.athleteQualification"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="报名方法 ">
<div v-html="viewData.registrationMethod"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="竞赛方法 ">
<div v-html="viewData.competitionMethod"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="奖励方法 ">
<div v-html="viewData.rewardMethod"></div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="注意事项 ">
<div v-html="viewData.precautions"></div>
</el-form-item>
</el-col>
</template>
<template v-if="viewData.applyWay.includes(3)">
<el-col :span="24">
<el-form-item label="活动通知 ">
<div v-html="viewData.eventNotification"></div>
</el-form-item>
</el-col>
</template>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane label="项目信息" name="2" v-if="!viewData.applyWay.includes(3)">
<el-form style="margin-top: 20px">
<el-card class="box-card mb10" v-for="app in viewData.events" shadow="hover">
<div slot="header" class="clearfix">
<span>{{ app.allName }}</span>
<el-button style="float: right; padding: 3px 5px" @click="$set(app,'show',!app.show)"
type="text">{{ app.show ? '折叠' : '展开' }}
</el-button>
</div>
<transition name="el-fade-in-linear">
<div v-show="app.show" class="text item transition-box" style="padding: 20px 20px">
<el-form label-suffix="" label-position="left" style="padding: 20px 0">
<el-row>
<el-col :span="12">
<el-form-item label="比赛模式">
<span v-if="app.projectType==1">单项</span>
<span v-else-if="app.projectType==2">团体</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24" v-if="app.projectType==2">
<vi-title title="团体报名人数"></vi-title>
</el-col>
<!-- <el-col :span="8" v-if="app.projectType==2">
<el-form-item label="每队最少人数">
{{ app.restrictMinNum | money }}
</el-form-item>
</el-col>-->
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="每队最多人数">
{{
app.athletesMaxNum + app.leanderNum + app.coachNum + app.substituteNum | money
}}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2">
<el-form-item label="最多创建几队 ">
{{ app.restrictTotalTeam | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="运动员最多人数 ">
{{ app.athletesMaxNum | money }}
</el-form-item>
</el-col>
<!-- <el-col :span="8" v-if="app.projectType==2">
<el-form-item label="运动员最少人数 ">
{{ app.athletesMinNum | money }}
</el-form-item>
</el-col>-->
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="领队人数 ">
{{ app.leanderNum | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="教练人数">
{{ app.coachNum | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="副处长(级)以上最少人数">
{{ app.deputyDirectorNum | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2">
<el-form-item label="男队人数 ">
{{ app.restrictBoyNum | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2">
<el-form-item label="女队人数 ">
{{ app.restrictGirlNum | money }}
</el-form-item>
</el-col>
<el-col :span="8" v-if="app.projectType==2&&app.applyType==1">
<el-form-item label="替补人员最少人数 ">
{{ app.substituteNum | money }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</transition>
</el-card>
</el-form>
</el-tab-pane>
<el-tab-pane label="报名信息" name="3" v-if="viewData.applyWay.includes(2)">
<el-form style="margin-top: 20px">
<el-form-item label="分工会报名信息&emsp;" label-width="150px" class="view-header"
v-if="union_filter">
<el-select v-model="unionid" placeholder="分工会筛选" filterable clearable
style="width: 200px;float: right" size="small" @change="changeUnion"
@clear="changeUnion">
<el-option
v-for="item in unions"
:key="item.id"
:label="item.unionname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<el-card class="box-card mb10" v-for="app in viewData.apply" shadow="hover">
<div slot="header" class="clearfix">
<span>{{ isDisPlayCode ? '' + app.unioncode + '' : null }}{{
app.unionname
}}{{ app.num |money }} </span>
<el-button style="float: right; padding: 3px 5px" @click="$set(app,'show',!app.show)"
type="text">{{ app.show ? '折叠' : '展开' }}
</el-button>
</div>
<transition name="el-fade-in-linear">
<div v-show="app.show" class="text item transition-box" style="padding: 20px 20px">
<el-timeline>
<el-timeline-item timestamp="领队信息" placement="top">
<el-card shadow="never">
<el-form label-suffix="" label-position="right" label-width="80px"
style="margin-top: 30px">
<el-row gutter="20">
<el-col :span="4">
<el-form-item label="姓名">
{{ app.leader.username | str }}
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="性别">
{{ app.leader.sex | str }}
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="工号">
{{ app.leader.loginname | str }}
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="电话">
{{ app.leader.mobile | str }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单位">
{{ app.leader.unitname | str }}
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="运动员信息" placement="top">
<el-table border stripe :data="app.apply" size="mini" :key="tableKey">
<el-table-column
type="index" label="序号" header-align="center" align="center" sortable
width="100">
</el-table-column>
<el-table-column
prop="team" header-align="center" align="center" sortable
label="所属队">
<template scope="{row}">
<span v-if="row.team">{{ row.team }}</span>
<span v-if="!row.team">单项比赛暂无小队</span>
</template>
</el-table-column>
<el-table-column
prop="username" header-align="center" align="center"
label="姓名">
</el-table-column>
<el-table-column
prop="loginname" header-align="center" align="center"
label="教工号">
</el-table-column>
<!-- <el-table-column
prop="division_level_leadership" header-align="center" align="center" sortable
label="是否处级领导">
<template scope="{row:{division_level_leadership}}">
<span v-if="division_level_leadership" class="text-primary"></span>
<span v-else class="text-danger"></span>
</template>
</el-table-column>-->
<el-table-column
prop="unitname" header-align="center" align="center" sortable
label="单位">
</el-table-column>
<el-table-column
prop="mobile" header-align="center" align="center"
label="电话">
</el-table-column>
<el-table-column
prop="sex" header-align="center" align="center" sortable
label="性别">
</el-table-column>
<el-table-column
prop="identity" header-align="center" align="center"
label="身份">
<template scope="{row}">
<el-tag v-if="row.identity.includes('4')" type="info"
effect="light">处级领导
</el-tag>
<el-tag v-if="row.identity.includes('3')" type="warning"
effect="light">领队
</el-tag>
<el-tag v-if="row.identity.includes('2')" type="success"
effect="light">教练
</el-tag>
<el-tag v-if="row.identity.includes('1')" effect="light">运动员
</el-tag>
<el-tag v-if="row.identity.includes('5')" type="danger"
effect="light">替补
</el-tag>
<el-tag v-if="row.identity.includes('6')" effect="info">团长
</el-tag>
<el-tag v-if="row.identity.includes('7')" type="warning"
effect="light">工作人员
</el-tag>
</template>
</el-table-column>
</el-table>
</el-timeline-item>
</el-timeline>
</div>
</transition>
</el-card>
</el-tab-pane>
</el-tabs>
</template>
<script>
module.exports = {
props: {
union_filter: {
type: Boolean,
default: true,
},
label: {
type: String,
default: '审核'
},
panes: {
type: Array,
default: []
},
},
filters: {
money(val) {
return val ? val : 0
},
str(val) {
return val ? val : '暂无'
}
},
data() {
return {
activeName: "1",
viewData: {awardsMode: [], applyWay: [], combinationMethod: []},
rootData: {},
loading: true,
units: [],
unions: [],
unionid: '',
tableKey: '',
}
},
methods: {
changeUnion() {
if (this.unionid) {
this.viewData.apply = this.rootData.apply.filter(v => {
return v.id === this.unionid
})
} else {
this.viewData.apply = JSON.parse(JSON.stringify(this.rootData.apply))
}
this.tableKey = new Date().getTime()
},
hasPane(name) {
return this.panes.includes(name)
},
async getUnitName(arr) {
const clubs = await getClubs()
const unitClubs = this.units.concat(clubs)
let brr = []
arr.forEach(a => {
const unit = unitClubs.find(v => {
return v.id === a
})
if (unit) {
brr.push(unit.name)
}
})
return brr.join("")
},
async getInfo(id) {
this.loading = true
const {data} = await $.get("/platform/activity/common/findOne", {id})
this.loading = false
if (data) {
data.unitSponsorName = await this.getUnitName(JSON.parse(data.unitSponsor))
data.unitJointly = JSON.parse(data.unitJointly)
data.unitJointlyName = await this.getUnitName(data.unitJointly)
data.applyWay = JSON.parse(data.applyWay)
if (!data.applyWay.includes(3) && data.events.length > 0) {
data.events.forEach(v => {
v.awardsMode = v.awardsMode
v.combinationMethod = v.combinationMethod
})
}
if (data.applyWay.includes(2)) {
data.apply.forEach(v => {
const leaders = v.apply.filter(x => {
return x.identity === 3
})
v.leader = {}
if (leaders.length) {
v.leader = leaders[0]
}
v.apply = v.apply.filter(x => {
return x.identity !== 3
})
})
data.apply.sort((a, b) => {
return b.num - a.num
})
if (data.apply.length === 1) {
data.apply[0].show = true
}
this.unions = data.apply.map(v => {
return {id: v.id, unionname: v.unionname}
})
}
this.rootData = clone(data)
this.viewData = data
this.tableKey = new Date().getTime()
} else {
this.viewData = {}
this.$message({message: "获取信息失败", type: 'error'});
}
}
},
async created() {
this.units = await getUnits(null)
}
}
</script>
<style>
.mb10 {
margin-bottom: 10px;
}
.activity_view .el-card__header {
padding: 10px 20px;
}
.activity_view .el-card__body {
padding: 0;
}
.activity_view .el-timeline {
padding-left: 0;
}
</style>