519 lines
19 KiB
Vue
519 lines
19 KiB
Vue
<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="分工会报名信息 " 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> |