362 lines
12 KiB
Vue
362 lines
12 KiB
Vue
<template>
|
|
<el-tabs tab-position="top" v-model="activeName" v-loading="loading">
|
|
<el-tab-pane label="活动基础信息" name="1">
|
|
<el-form label-suffix=":" style="padding: 20px 0" label-width="120px">
|
|
<el-form-item class="item-center">{{ viewData.name }}</el-form-item>
|
|
|
|
|
|
<el-row gutter="60">
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="联系人">
|
|
<span v-if="viewData.username">
|
|
{{ viewData.username }}
|
|
({{ viewData.loginname }})</span>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="联系方式">
|
|
{{ viewData.mobile }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动编号">
|
|
{{ viewData.activityCode }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动项目类型">
|
|
{{ viewData.projectTypeName }}({{ viewData.projectTypeCode }})
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动类型">
|
|
{{ viewData.type === 1 ? '分工会活动' : viewData.type === 2 ? '社团社团活动' : '校工会活动' }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动计划时间">
|
|
{{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动时间">{{ viewData.startTime }} - {{
|
|
viewData.endTime
|
|
}}
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12" v-if="viewData.applyStartTime">
|
|
<el-form-item label="报名时间">{{ viewData.applyStartTime }} - {{
|
|
viewData.applyEndTime
|
|
}}
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="活动人数">{{ viewData.peopleNum || '暂无' }}</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="24">
|
|
<el-form-item label="活动内容">{{ viewData.activityContent }}</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="24">
|
|
<el-form-item label="活动地点">{{ viewData.address }}</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="报名方式">
|
|
<span v-if="viewData.signUpMethod===1">个人报名</span>
|
|
<span v-else-if="viewData.signUpMethod===2">分工会报名</span>
|
|
<span v-else-if="viewData.signUpMethod===3">组队报名</span>
|
|
<span v-else-if="!viewData.signUpMethod">无需报名</span>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="活动提醒">
|
|
{{ viewData.xlFlag ? '提醒' : '不提醒' }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12">
|
|
<el-form-item label="是否用于报名">
|
|
<span v-if="viewData.isEnrollSystem">活动报名</span>
|
|
<span v-else>活动管理</span>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12" v-if="viewData.signUpMethod!=null">
|
|
<el-form-item label="报名人数限制">
|
|
<span v-if="viewData.userNumberLimit===1">总人数限制({{
|
|
viewData.totalUserNumberLimit
|
|
}}人)</span>
|
|
<span v-else-if="viewData.userNumberLimit===2">分工会人数限制</span>
|
|
<span v-else-if="!viewData.userNumberLimit">不限制</span>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="24" v-if="viewData.userNumberLimit===2">
|
|
<el-form-item label="分工会限制名额">
|
|
<el-table border stripe :data="viewData.unionUserNumberLimit" size="small"
|
|
height="500">
|
|
<el-table-column type="index" label="序号" header-align="center" align="center"
|
|
width="100">
|
|
</el-table-column>
|
|
<el-table-column label="分工会名称" prop="unionName"></el-table-column>
|
|
<el-table-column label="分工会人数" prop="unionNum"></el-table-column>
|
|
<el-table-column label="限制人数" prop="limitNum"></el-table-column>
|
|
</el-table>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="24">
|
|
<el-form-item v-if="viewData.type===1" label="所属工会">
|
|
{{ !viewData.unionname ? '暂无' : viewData.unionname }}
|
|
</el-form-item>
|
|
<el-form-item v-if="viewData.type===2" label="所属社团">
|
|
{{ !viewData.clubName ? '暂无' : viewData.clubName }}
|
|
</el-form-item>
|
|
<el-form-item v-if="viewData.type===3" label="所属组织">
|
|
校工会
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12" v-if="[1,2].includes(viewData.signUpMethod)">
|
|
<el-form-item label="是否需要签到">
|
|
{{ viewData.needSign ? '需要' : '不需要' }}
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="12" v-if="viewData.signUpMethod!=null">
|
|
<el-form-item label="签到半径(m)" v-if="viewData.needSign">
|
|
{{ viewData.rangeMeter + '米' }}
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="封面图" prop="cover">
|
|
<img v-if="viewData.cover"
|
|
:src="FILE_DOMAIN + '/fileStreamPreview?id=' + viewData.cover"
|
|
class="avatar" style="height: 200px;width: auto">
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col :span="24" v-if="viewData.needSign">
|
|
<el-form-item prop="" label="活动签到点位">
|
|
<el-card shadow="never">
|
|
<div style="width: 100%;height: 500px" id="signMap"></div>
|
|
</el-card>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-form>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="活动费用" name="3" v-if="!viewData.isEnrollSystem">
|
|
<el-form label-suffix=":" label-position="left" style="padding: 20px 0" label-width="80px">
|
|
|
|
<el-table border stripe :data="viewData.goods">
|
|
|
|
<el-table-column
|
|
type="index" label="序号" header-align="center" align="center" width="100">
|
|
</el-table-column>
|
|
|
|
<el-table-column
|
|
label="物品名称" header-align="center" align="center" prop="name">
|
|
</el-table-column>
|
|
|
|
<el-table-column
|
|
label="物品价格" header-align="center" align="center" prop="actualPrice">
|
|
</el-table-column>
|
|
</el-table>
|
|
|
|
<el-form-item label="发  票">
|
|
<file-upload v-if="viewData.billFiles&&viewData.billFiles.length"
|
|
:files="viewData.billFiles" :view="true">
|
|
</file-upload>
|
|
<span v-else>暂无</span>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="照  片">
|
|
<file-upload v-if="viewData.photoFiles&&viewData.photoFiles.length"
|
|
:files="viewData.photoFiles" :view="true">
|
|
</file-upload>
|
|
<span v-else>暂无</span>
|
|
</el-form-item>
|
|
|
|
<el-form-item label="其  他">
|
|
<file-upload v-if="viewData.otherFiles&&viewData.otherFiles.length"
|
|
:files="viewData.otherFiles" :view="true">
|
|
</file-upload>
|
|
<span v-else>暂无</span>
|
|
</el-form-item>
|
|
</el-form>
|
|
|
|
</el-tab-pane>
|
|
<el-tab-pane label="活动总结" name="4" v-if="!viewData.isEnrollSystem">
|
|
<el-form ref="form" label-width="120px">
|
|
<el-form-item prop="activitySummary" label="活动总结">
|
|
{{ viewData.activitySummary }}
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-tab-pane>
|
|
<el-tab-pane label="审核信息" name="5" v-if="viewData.auditId">
|
|
<el-form ref="form" label-width="120px">
|
|
|
|
<el-row gutter="20">
|
|
<el-col :span="12">
|
|
<el-form-item label="审核人员:">
|
|
{{ viewData.audit.username }}
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="审核时间:">
|
|
{{ viewData.audit.auditTime }}
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="审核意见:">
|
|
{{ viewData.audit.auditOpinion }}
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</el-tab-pane>
|
|
<el-tab-pane v-if="handle" :label="label" name="999">
|
|
<slot name="handle"></slot>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</template>
|
|
|
|
<script>
|
|
module.exports = {
|
|
props: {
|
|
handle: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
label: {
|
|
type: String,
|
|
default: '审核'
|
|
},
|
|
},
|
|
data() {
|
|
return {
|
|
userData: [],
|
|
viewData: {},
|
|
loading: true,
|
|
search: '',
|
|
tableKey: '',
|
|
activeName: '1',
|
|
userColumns: [],
|
|
}
|
|
},
|
|
components: {
|
|
'file-upload': httpVueLoader('/components/plugins/FileUpload.vue'),
|
|
},
|
|
methods: {
|
|
hasPane(name) {
|
|
if (!this.handle) {
|
|
return true
|
|
}
|
|
return this.panes.includes(name)
|
|
},
|
|
async doExport() {
|
|
window.open("/platform/activity/info/mange/doExportUser?id=" + this.viewData.id)
|
|
},
|
|
async userChange() {
|
|
if (this.search) {
|
|
const {data} = await $.get("/platform/activity/info/mange/searchTissueUser", {
|
|
id: this.viewData.id,
|
|
search: this.search
|
|
})
|
|
this.userData = data
|
|
}
|
|
},
|
|
async getInfo(id) {
|
|
this.userColumns = [{prop: 'userName', label: '姓名'},
|
|
{prop: 'loginName', label: '工号'},
|
|
{prop: 'sex', label: '性别'},
|
|
{prop: 'mobile', label: '联系方式'},
|
|
{prop: 'unitName', label: '所属单位'},
|
|
{prop: 'unionName', label: '所属工会'}]
|
|
this.loading = true
|
|
const {data} = await $.get("/platform/activity/info/mange/findOne", {id})
|
|
this.loading = false
|
|
if (data) {
|
|
if (data.needSign) {
|
|
this.userColumns.push({prop: 'isSign', label: '是否签到'})
|
|
this.userColumns.push({prop: 'signTime', label: '签到时间'})
|
|
}
|
|
data.billFiles = JSON.parse(data.billFiles)
|
|
data.photoFiles = JSON.parse(data.photoFiles)
|
|
data.otherFiles = JSON.parse(data.otherFiles)
|
|
this.userData = clone(data.tissuePersonList)
|
|
data.unionUserNumberLimit = JSON.parse(data.unionUserNumberLimit)
|
|
data.location = JSON.parse(data.location)
|
|
this.viewData = data
|
|
this.tableKey = new Date().getTime()
|
|
this.initMap()
|
|
this.activeName = this.handle ? "999" : "1"
|
|
} else {
|
|
this.viewData = {}
|
|
this.$notify.error({title: '错误', message: '获取信息失败'});
|
|
}
|
|
},
|
|
initMap() {
|
|
let marker = null
|
|
this.$nextTick(() => {
|
|
let map = new AMap.Map("signMap", {
|
|
resizeEnable: true,
|
|
center: [118.640081, 32.082496],
|
|
zoom: 16
|
|
});
|
|
|
|
if (this.viewData.location && Array.isArray(this.viewData.location)) {
|
|
const lng = parseFloat(this.viewData.location[0])
|
|
const lat = parseFloat(this.viewData.location[1])
|
|
marker = new AMap.Marker({
|
|
position: [lng, lat],
|
|
offset: new AMap.Pixel(-13, -30)
|
|
});
|
|
marker.setMap(map);
|
|
map.setZoomAndCenter(18, [lng, lat])
|
|
}
|
|
map.on('click', (e) => {
|
|
console.log(e)
|
|
if (marker) {
|
|
marker.setMap(null)
|
|
marker = null
|
|
}
|
|
marker = new AMap.Marker({
|
|
position: [e.lnglat.getLng(), e.lnglat.getLat()],
|
|
offset: new AMap.Pixel(-13, -30)
|
|
})
|
|
marker.setMap(map)
|
|
this.formData.location = []
|
|
this.formData.location.push(e.lnglat.getLng())
|
|
this.formData.location.push(e.lnglat.getLat())
|
|
});
|
|
})
|
|
}
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.item-center {
|
|
text-align: center;
|
|
font-weight: 700;
|
|
margin-right: 110px;
|
|
}
|
|
|
|
.item-center .el-form-item__content {
|
|
font-size: 18px;
|
|
}
|
|
</style> |