425 lines
12 KiB
Vue
425 lines
12 KiB
Vue
<template>
|
||
<div class="meeting main-box">
|
||
<div class="title">
|
||
<a-icon type="user"/>
|
||
<span class="my-meeting">我的会议</span>
|
||
</div>
|
||
<div class="content">
|
||
<section class="meeting—status">
|
||
<span>会议分类:</span>
|
||
<span @click="filterMeeting(item.key)" class="inactive-status"
|
||
:class="{'active-status':item.key === meetingKey}" v-for="item of meetingStatusArr"
|
||
:key="item.key">{{ item.value }}</span>
|
||
</section>
|
||
<!--查询区域begin-->
|
||
<div class="table-page-search-wrapper">
|
||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||
<a-row :gutter="24">
|
||
<a-col :xl="7" :lg="8" :md="8" :sm="24">
|
||
<a-form-item label="会议名称">
|
||
<a-input placeholder="请输入会议名称" v-model="queryParam.meetingName"></a-input>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xl="7" :lg="8" :md="8" :sm="24">
|
||
<a-form-item label="会议类型">
|
||
<j-dict-select-tag dict-code="meeting_type" placeholder="请选择会议类型"
|
||
v-model="queryParam.meetingType"></j-dict-select-tag>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xxl="7" :xl="10" :md="10" :sm="24">
|
||
<a-form-item label="会议时间">
|
||
<j-date
|
||
placeholder="请选择开始日期"
|
||
class="query-group-cust"
|
||
v-model="queryParam.meetingStartTime"
|
||
:disabled-date="disabledStartDate">
|
||
</j-date>
|
||
<span class="query-group-split-cust"></span>
|
||
<j-date
|
||
placeholder="请选择结束日期"
|
||
class="query-group-cust"
|
||
v-model="queryParam.meetingEndTime"
|
||
:disabled-date="disabledEndDate">
|
||
</j-date>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xl="7" :lg="8" :md="8" :sm="24">
|
||
<a-form-item label="会议状态">
|
||
<j-dict-select-tag dict-code="meeting_status" placeholder="请选择会议状态"
|
||
v-model="queryParam.meetingStatus"></j-dict-select-tag>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xl="6" :lg="8" :md="8" :sm="24">
|
||
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||
<a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
|
||
<a-button class="reset-button" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
|
||
</span>
|
||
</a-col>
|
||
</a-row>
|
||
</a-form>
|
||
</div>
|
||
<!--查询区域end-->
|
||
<!--列表区域begin-->
|
||
<a-spin :spinning="loading">
|
||
<div class="list" v-if="tableData.length > 0">
|
||
<div class="item-meeting" v-for="(item,index) of tableData" :key="index">
|
||
<p class="item-meeting-meetingName">
|
||
<j-ellipsis class="primary-color" @click="openMeetingDetail(item)" :value="item.meetingName" :length="20"></j-ellipsis>
|
||
</p>
|
||
<!--这里需要修改 会议费用分人显示不同的会议费用 2021-09-29 跟需求沟通说是不显示-->
|
||
<!-- <p class="item-meeting-meetingCost"><span>¥</span>{{ item.meetingCosts }}</p>-->
|
||
<p class="item-meeting-img item-meeting-meetingDirector">
|
||
<img src="../../assets/meetingImgs/meeting-user.png"/>
|
||
负责人:{{ item.directorName }}
|
||
</p>
|
||
<p class="item-meeting-img item-meeting-meetingAddress">
|
||
<img src="../../assets/meetingImgs/meeting-address.png"/>
|
||
召开地点:
|
||
<j-ellipsis :value="item.venue + '/' + item.address " :length="20"></j-ellipsis>
|
||
</p>
|
||
<p class="item-meeting-img item-meeting-meetingTime">
|
||
<img src="../../assets/meetingImgs/meeting-time.png"/>
|
||
召开时间:{{ item.startTime }}~{{ item.endTime }}
|
||
<!-- <j-ellipsis :value="item.startTime + '~' + item.endTime" :length="30"></j-ellipsis>-->
|
||
</p>
|
||
<p class="item-meeting-img item-meeting-meetingPaymode">
|
||
<img src="../../assets/meetingImgs/meeting_paymode.png"/>
|
||
缴费方式:{{ item.payMode_dictText }}
|
||
<!-- 缴费方式为线上缴费或者汇款的,只有在会议召开时间期间才显示”上传凭证“按钮 "-->
|
||
<a-button v-show="item.payMode === 2 || item.payMode === 1" type="primary" @click="uploadPaymentRecord(item)">上传凭证</a-button>
|
||
</p>
|
||
<img v-if="item.meetingStatus === 2 " class="meeting-img-status" src="../../assets/meetingImgs/no-start.png"/>
|
||
<img v-if="item.meetingStatus === 3 " class="meeting-img-status" src="../../assets/meetingImgs/ing.png" />
|
||
<img v-if="item.meetingStatus === 4 " class="meeting-img-status" src="../../assets/meetingImgs/end.png" />
|
||
</div>
|
||
<i></i>
|
||
<i></i>
|
||
<i></i>
|
||
<i></i>
|
||
<i></i>
|
||
</div>
|
||
<section v-else class="list-empty">
|
||
<a-list :data-source="[]"/>
|
||
</section>
|
||
</a-spin>
|
||
<!--列表区域end-->
|
||
<div class="fenye">
|
||
<!--分页-->
|
||
<a-pagination
|
||
v-model="current"
|
||
:page-size.sync="pageSize"
|
||
class="pagination"
|
||
show-size-changer
|
||
:show-total="(total, range) => `${range[0]}-${range[1]} 共 ${total} 条`"
|
||
:pageSizeOptions="['10','20', '30', '50','100']"
|
||
show-quick-jumper
|
||
:total="total"
|
||
@change="changePagination"
|
||
@showSizeChange="onShowSizeChange"
|
||
/>
|
||
</div>
|
||
</div>
|
||
<!--上传凭证-->
|
||
<upload-meeting-certificate-modal ref="upload"></upload-meeting-certificate-modal>
|
||
<!-- 会议详情-->
|
||
<meeting-detail-modal ref="meetingDetail" :is-meeting-bool="true"></meeting-detail-modal>
|
||
</div>
|
||
</template>
|
||
<script>
|
||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||
import {RangeDateMixin} from '@/mixins/RangeDateMixin'
|
||
import JDate from '@comp/tools/JDate'
|
||
import UploadMeetingCertificateModal from '@views/MessagePage/UploadMeetingCertificateModal'
|
||
import {getAction} from '@api/manage'
|
||
import JEllipsis from '@comp/jero/JEllipsis'
|
||
import MeetingDetailModal from '@views/MessagePage/MeetingDetailModal'
|
||
|
||
export default {
|
||
name: 'MeetingActivity',
|
||
mixins: [RangeDateMixin],
|
||
components: {
|
||
MeetingDetailModal,
|
||
JDictSelectTag,
|
||
JDate,
|
||
UploadMeetingCertificateModal,
|
||
JEllipsis
|
||
},
|
||
data() {
|
||
return {
|
||
// 会议分类 全部 0 可报名 1 已报名 2
|
||
meetingStatusArr: [
|
||
{
|
||
key: '0',
|
||
value: '全部'
|
||
},
|
||
{
|
||
key: '1',
|
||
value: '可报名'
|
||
},
|
||
{
|
||
key: '2',
|
||
value: '已报名'
|
||
}
|
||
],
|
||
// 会议的key值 默认是全部
|
||
meetingKey: '1',
|
||
// 禁用时间的key值
|
||
dateKeyObj: {
|
||
beginKey: 'meetingStartTime',
|
||
endKey: 'meetingEndTime'
|
||
},
|
||
url: {
|
||
list: '/meeting/payMeeting/pageContract'
|
||
},
|
||
tableData: [],
|
||
// 查询参数
|
||
queryParam: {},
|
||
lastQueryParam: {},
|
||
filter: {},
|
||
// 分页参数
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
total: 0,
|
||
// 当前页
|
||
current: 1,
|
||
// 加载状态
|
||
loading: false,
|
||
// 会议类型
|
||
meetingType:''
|
||
}
|
||
},
|
||
created() {
|
||
// 会议类型
|
||
if(this.$route.query.meetingType){
|
||
this.meetingType = this.$route.query.meetingType
|
||
this.filter.meetingType = this.$route.query.meetingType
|
||
}
|
||
this.initData(1)
|
||
},
|
||
methods: {
|
||
/*
|
||
* 会议分类筛选
|
||
* */
|
||
filterMeeting(key) {
|
||
this.meetingKey = key
|
||
this.filter.meetingSignUpType = this.meetingKey
|
||
this.initData(1)
|
||
},
|
||
/*
|
||
* 分页
|
||
* */
|
||
onShowSizeChange(current, pageSize) {
|
||
this.pageNo = current
|
||
this.pageSize = pageSize
|
||
console.log(current, pageSize)
|
||
this.initData()
|
||
},
|
||
/*
|
||
* 页码改变后的回调
|
||
* */
|
||
changePagination(pageNo, pageSize) {
|
||
this.pageSize = pageSize
|
||
this.pageNo = pageNo
|
||
this.initData()
|
||
},
|
||
/*
|
||
* 初始化加载数据
|
||
* */
|
||
initData(arg) {
|
||
if (!this.url.list) {
|
||
this.$message.error('请设置url.list属性!')
|
||
return
|
||
}
|
||
//加载数据 若传入参数1则加载第一页的内容
|
||
if (arg === 1) {
|
||
this.pageNo = 1
|
||
}
|
||
var params = Object.assign({}, this.lastQueryParam, this.filter)
|
||
params.pageNo = this.pageNo
|
||
params.pageSize = this.pageSize
|
||
this.loading = true
|
||
getAction(this.url.list, params).then((res) => {
|
||
if (res.success) {
|
||
this.tableData = [...res.result.records] || res.result
|
||
this.current = res.result.current
|
||
if (res.result.total) {
|
||
this.total = res.result.total
|
||
} else {
|
||
this.total = 0
|
||
}
|
||
}
|
||
if (res.code === 510) {
|
||
this.$message.warning(res.message)
|
||
}
|
||
}).finally(() => {
|
||
this.loading = false
|
||
})
|
||
},
|
||
/*
|
||
* 查询
|
||
* */
|
||
searchQuery() {
|
||
this.queryParam.meetingStartTime = this.queryParam.meetingStartTime ? this.queryParam.meetingStartTime + ' ' + '00:00:00' : undefined
|
||
this.queryParam.meetingEndTime = this.queryParam.meetingEndTime ? this.queryParam.meetingEndTime + ' ' + '23:59:59' : undefined
|
||
this.queryParam.createTime_begin = this.queryParam.createTime_begin ? this.queryParam.createTime_begin + ' ' + '00:00:00' : undefined
|
||
this.queryParam.createTime_end = this.queryParam.createTime_end ? this.queryParam.createTime_end + ' ' + '23:59:59' : undefined
|
||
this.lastQueryParam = {...this.queryParam}
|
||
this.initData(1)
|
||
},
|
||
/*
|
||
* 重置
|
||
* */
|
||
searchReset() {
|
||
this.queryParam = {}
|
||
this.lastQueryParam = {}
|
||
this.pageNo = 1
|
||
this.pageSize = 10
|
||
this.initData(1)
|
||
},
|
||
/*
|
||
* 上传凭证
|
||
* */
|
||
uploadPaymentRecord(item) {
|
||
if (item) {
|
||
this.$refs.upload.open(item)
|
||
}
|
||
},
|
||
/*
|
||
* 打开会议详情
|
||
* */
|
||
openMeetingDetail(item){
|
||
this.$refs.meetingDetail.open(item)
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
<style scoped lang="less">
|
||
@import '~@assets/less/common.less';
|
||
|
||
.meeting {
|
||
background: #fff;
|
||
}
|
||
|
||
.title {
|
||
height: 56px;
|
||
line-height: 56px;
|
||
background: #fff;
|
||
border-bottom: 2px solid #f2f2f2;
|
||
padding: 0 20px;
|
||
|
||
.my-meeting {
|
||
margin-left: 6px;
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
|
||
/*内容begin*/
|
||
.content {
|
||
padding: 0 20px 20px 20px;
|
||
}
|
||
|
||
.meeting—status {
|
||
height: 56px;
|
||
box-sizing: border-box;
|
||
line-height: 56px;
|
||
color: #666;
|
||
}
|
||
|
||
.inactive-status {
|
||
user-select: none;
|
||
padding: 0 20px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.active-status {
|
||
background: #069f99;
|
||
padding: 8px 20px;
|
||
border-radius: 4px;
|
||
color: white;
|
||
}
|
||
|
||
.list {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex-wrap: wrap;
|
||
|
||
& > i {
|
||
width: 323px;
|
||
}
|
||
}
|
||
|
||
.item-meeting {
|
||
position: relative;
|
||
margin-bottom: 20px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: space-between;
|
||
font-size: 14px;
|
||
color: #999;
|
||
padding: 10px;
|
||
width: 323px;
|
||
height: 219px;
|
||
opacity: 1;
|
||
background: #ffffff;
|
||
border-radius: 4px;
|
||
box-shadow: -2px 0px 10px 10px rgba(51, 51, 51, 0.10);
|
||
|
||
& > p {
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
&-img > img {
|
||
margin-right: 4px;
|
||
margin-bottom: 2px;
|
||
user-select: none;
|
||
}
|
||
|
||
&-meetingName {
|
||
color: #333;
|
||
font-size: 16px;
|
||
font-weight: 700;
|
||
}
|
||
|
||
&-meetingCost {
|
||
color: #FF5252;
|
||
font-size: 22px;
|
||
font-weight: 700;
|
||
font-family: Acre, Acre-Medium;
|
||
|
||
& > span {
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
|
||
&-meetingPaymode {
|
||
.ant-btn {
|
||
float: right;
|
||
}
|
||
}
|
||
}
|
||
|
||
.meeting-img-status {
|
||
position: absolute;
|
||
right: 0;
|
||
top: 0;
|
||
}
|
||
|
||
/*内容end*/
|
||
|
||
.fenye {
|
||
background: #fff;
|
||
height: 50px;
|
||
}
|
||
|
||
.pagination {
|
||
float: right;
|
||
margin-right: 20px;
|
||
}
|
||
|
||
.list-empty {
|
||
margin: 20px auto !important;
|
||
}
|
||
</style> |