Files
income_payments_enterprise_…/src/views/meetingActivity/MeetingActivity.vue
T
2021-10-14 18:47:16 +08:00

425 lines
12 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>
<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"/>
召开时间:
<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>