903 lines
33 KiB
Vue
903 lines
33 KiB
Vue
<template>
|
||
<div>
|
||
<page-header-title :is-level-one="false" :level-two-title="$route.query.meetingName"></page-header-title>
|
||
<a-card :bordered="false">
|
||
<div class="part-title">
|
||
<div class="part-title-text">会议信息</div>
|
||
</div>
|
||
<a-row class="meeting-info flex-col">
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label class="label">会议名称:</label><span>{{ currentMeetingInfo.meetingName }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>会议类型:</label><span>{{ meetingType }}</span>
|
||
</a-col>
|
||
<!--标协会议类型-->
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
||
<label>标协会议类型:</label><span>{{ tbMeetingType }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>负责人:</label><span>{{ currentMeetingInfo.directorName }}</span>
|
||
</a-col>
|
||
<!--工作组会议-->
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '1' ">
|
||
<label>工作组:</label><span>{{ currentMeetingInfo.workingGroupName }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>手机号:</label><span>{{ currentMeetingInfo.directorPhone }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>召开时间:</label><span>{{ currentMeetingInfo.startTime + '~' + currentMeetingInfo.endTime }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>年份:</label><span>{{ currentMeetingInfo.particularYear }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>报名截止时间:</label><span>{{ currentMeetingInfo.registerDeadline }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>召开地点:</label><span>{{ currentMeetingInfo.venue + '/' + currentMeetingInfo.address }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>会议费用:</label><span>{{ currentMeetingInfo.meetingCosts }} 元/人</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
||
<label>会议费用(标协会员):</label><span>{{ currentMeetingInfo.meetingCostsVip }} 元/人</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>预计参加人数:</label><span>{{ currentMeetingInfo.estimatedNumber }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
||
<label>酒店名称:</label><span>{{ currentMeetingInfo.hotelName }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType === '2' ">
|
||
<label>酒店地址:</label><span>{{ currentMeetingInfo.hotelAddress }}</span>
|
||
</a-col>
|
||
<!-- 国际研讨会的邀请码-->
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
||
<label>VIP邀请码:</label><span>{{ currentMeetingInfo.vipInvitationCode }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
||
<label>演讲嘉宾邀请码:</label><span>{{ currentMeetingInfo.speakerInvitationCode }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
||
<label>特邀嘉宾邀请码:</label><span>{{ currentMeetingInfo.guestInvitationCode }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" v-show="currentMeetingInfo.meetingType ==='3' ">
|
||
<label>合作伙伴邀请码:</label><span>{{ currentMeetingInfo.cooperativeInvitationCode }}</span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row class="flex-col">
|
||
<a-col>
|
||
<label class="label">会议通知:</label><span v-if="currentMeetingInfo.meetingFiles"><preview-file
|
||
:file-id="currentMeetingInfo.meetingFiles"></preview-file></span>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row class="meeting-textarea flex-col">
|
||
<label class="label">会议内容:</label><span class="content">{{ currentMeetingInfo.meetingContent }}</span>
|
||
</a-row>
|
||
<a-row class="meeting-textarea flex-col">
|
||
<label class="label">备注:</label><span class="content">{{ currentMeetingInfo.remark }}</span>
|
||
</a-row>
|
||
|
||
<div class="part-title">
|
||
<div class="part-title-text">报名信息</div>
|
||
</div>
|
||
<a-row class="flex-col">
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>报名链接:</label><span>{{ signUpHerfUrl }}</span>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>报名二维码:</label><img class="qr-code" :src="signUpQRCode" alt="报名二维码"/><i class="copy primary-color"
|
||
@click="copy(signUpHerfUrl)">复制</i>
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24">
|
||
<label>签到二维码:</label><img class="qr-code" :src="signInQRCode" alt="签到二维码"/>
|
||
<!-- <i class="copy primary-color" @click="copy(signUpHerfUrl)">复制</i>-->
|
||
</a-col>
|
||
<a-col :xxl="8" :xl="12" :sm="24" style="display:flex;">
|
||
<label>收款二维码:</label>
|
||
<j-image-upload :return-id="true" v-if="currentMeetingInfo.paymentQrCode"
|
||
v-model="currentMeetingInfo.paymentQrCode" disabled></j-image-upload>
|
||
</a-col>
|
||
</a-row>
|
||
<a-row v-show="currentMeetingInfo.meetingType === '2' " class="flex-col">
|
||
<label class="label">酒店联系人及手机号:</label>
|
||
<span class="content"
|
||
v-for="(item,index) of currentMeetingInfo.hotelContactsList"
|
||
:key="index">
|
||
{{ item.hotelContacts + ':' + item.hotelContactsPhone + ' ' }}</span>
|
||
</a-row>
|
||
<div class="part-title">
|
||
<div class="part-title-text">参会人员信息</div>
|
||
</div>
|
||
<!-- 查询区域 -->
|
||
<div class="table-page-search-wrapper">
|
||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||
<a-row :gutter="24">
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="参会单位">
|
||
<a-input placeholder="请输入参会单位" v-model="queryParam.companyName" :maxLength='50'></a-input>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="参会人">
|
||
<a-input placeholder="请输入参会人" v-model="queryParam.companyContactName" :maxLength='50'></a-input>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="审核">
|
||
<j-dict-select-tag v-model="queryParam.checkResult" placeholder="请选择"
|
||
dictCode="signup_status"/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<!-- 只有工作组会议与分标委会议才有审核信息-->
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24"
|
||
v-show="currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5' ">
|
||
<a-form-item label="审核报名信息">
|
||
<j-dict-select-tag v-model="queryParam.checkSingInResult" placeholder="请选择"
|
||
dictCode="signup_status"/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="签到">
|
||
<j-dict-select-tag v-model="queryParam.checkIn" placeholder="请选择"
|
||
dictCode="signin_status"/>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="来款年份">
|
||
<j-year-date style="width:100%" placeholder="请选择来款年份" v-model="queryParam.particularYear"></j-year-date>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<a-form-item label="身份">
|
||
<j-dict-select-tag v-model="queryParam.identity" placeholder="请选择身份" @input="selectIdentity"
|
||
dictCode="meet_identify_type"/>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24"
|
||
v-if="queryParam.identity === '1' && currentMeetingInfo.meetingType === '3' ">
|
||
<a-form-item label="嘉宾类型">
|
||
<j-dict-select-tag v-model="queryParam.guestType" placeholder="请选择嘉宾类型"
|
||
dictCode="guest_type"/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
|
||
<a-button type="primary" @click="searchQuery" icon="search"
|
||
v-has:[authorCode.search]="'attendance:search'">查询</a-button>
|
||
<a-button @click="searchReset" icon="reload" class="reset-button" style="margin-left: 8px">重置</a-button>
|
||
</span>
|
||
</a-col>
|
||
</a-row>
|
||
</a-form>
|
||
</div>
|
||
<!-- 查询区域-END -->
|
||
|
||
<!-- 操作按钮区域 -->
|
||
<div class="table-operator">
|
||
<!-- 变更去掉了此功能 暂时注释 2021-09-16 -->
|
||
<!-- <a-button type="primary" icon="import" @click="importParticipant">导入参会人</a-button>-->
|
||
<a-button type="primary" icon="plus" @click="addParticipant" v-has:[authorCode.add]="'attendance:add'">添加参会人
|
||
</a-button>
|
||
<a-button type="primary" icon="download" @click="handleExportXls('会员项目')"
|
||
v-has:[authorCode.export]="'attendance:export'">导出
|
||
</a-button>
|
||
<a-button type="danger" icon="delete" @click="batchDel" v-has:[authorCode.batchDel]="'attendance:batchDel'">
|
||
批量删除
|
||
</a-button>
|
||
<!--当会议费用为0不需要合并开票 -->
|
||
<!-- 变更将此功能添加到到账开票了 暂时注释 2021-09-16 -->
|
||
<!-- <a-button type="primary" @click="batchInvoice" v-show="currentMeetingInfo.meetingCosts !== 0">合并开票</a-button>-->
|
||
<!--只有国际研讨会才会有设置对接人-->
|
||
<a-button type="primary" @click="batchSetDocker" v-if="currentMeetingInfo.meetingType === '3' "
|
||
v-has="'internalMeetingSituation:batchSetDocker'">设置对接人
|
||
</a-button>
|
||
</div>
|
||
|
||
<!-- table区域-begin -->
|
||
<div>
|
||
<a-table
|
||
ref="table"
|
||
size="middle"
|
||
bordered
|
||
rowKey="id"
|
||
:scroll="{x:true}"
|
||
:columns="columns"
|
||
:dataSource="dataSource"
|
||
:pagination="ipagination"
|
||
:loading="loading"
|
||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||
class="j-table-force-nowrap"
|
||
@change="handleTableChange">
|
||
|
||
<template slot="htmlSlot" slot-scope="text,record">
|
||
<div class="primary-color" @click="openDetailModal(record)">{{ text }}</div>
|
||
</template>
|
||
|
||
<template slot="person" slot-scope="text,record">
|
||
<!--缴费方式为付款 可以先签到后付款 需要添加标识-->
|
||
<div
|
||
v-if="record.payMode === 1 && record.checkIn === 1 && (record.paymentMethod !== '' || record.paymentMethod !== null)"
|
||
class="primary-color" @click="toSignUpDetail(record)">{{ text }}<span style="color: red">(参会未付款)</span>
|
||
</div>
|
||
<div v-else class="primary-color" @click="toSignUpDetail(record)">{{ text }}</div>
|
||
</template>
|
||
|
||
<template slot="text" slot-scope="text">
|
||
<j-ellipsis v-if="text" :value="text" :length="20"></j-ellipsis>
|
||
<span v-else></span>
|
||
</template>
|
||
|
||
<!-- 打包、需要发票、到账、开票、邮寄状态-->
|
||
<template slot="status" slot-scope="text,record">
|
||
<status-slot :statu-obj="record" :status-no="text" :status-type="true"></status-slot>
|
||
</template>
|
||
|
||
<template slot="status-pack" slot-scope="text,record">
|
||
<status-slot :statu-obj="record" :status-no="text"></status-slot>
|
||
</template>
|
||
|
||
<!-- 开票-->
|
||
<template slot="status-bill" slot-scope="text,record">
|
||
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="bill"></status-slot>
|
||
</template>
|
||
|
||
<!-- 邮寄-->
|
||
<template slot="status-mail" slot-scope="text,record">
|
||
<status-slot :statu-obj="record" :status-no="text" :status-type="true" status-key="mail"></status-slot>
|
||
</template>
|
||
|
||
<span slot="action" slot-scope="text, record" class="action-span-cell">
|
||
<!-- 只有缴费方式为汇款并且上传了汇款凭证的的才会有审核按钮 审核通过后不显示 审核凭证按钮 -->
|
||
<a @click="handleAudit(record)" v-if="(record.payMode === 1 || record.payMode === 2 ) && record.paymentRecord && record.checkResult !== 1"
|
||
v-has:[authorCode.auditRecord]="'attendance:auditCredentials'">审核凭证</a>
|
||
<!-- 只有工作组会议与分标委会议才有审核报名信息-->
|
||
<a @click="handleAuditSignUp(record)"
|
||
v-show="(currentMeetingInfo.meetingType === '1' || currentMeetingInfo.meetingType === '5') && record.registerCheckResult !== 1 "
|
||
v-has:[authorCode.auditSignUpInfo]="'attendance:auditSignUp'">审核报名信息</a>
|
||
<a @click="handleEdit(record)" v-has:[authorCode.edit]="'attendance:edit'">编辑</a>
|
||
<!--删除参会人需要判断改参会人是否与合同关联-->
|
||
<a @click="handleDelete(record.id)" v-has:[authorCode.delete]="'attendance:delete'">删除</a>
|
||
</span>
|
||
</a-table>
|
||
</div>
|
||
<!-- 导入参会人-->
|
||
<import-participant-modal ref="importParticipantModal" @ok="modalFormOk"></import-participant-modal>
|
||
<!-- 批量开票-->
|
||
<batch-invocie-modal ref="batchInvoiceModal" @ok="modalFormOk"></batch-invocie-modal>
|
||
<!--设置对接人-->
|
||
<batch-set-docker-modal ref="batchSetDockerModal" @ok="modalFormOk"></batch-set-docker-modal>
|
||
<!--详情-->
|
||
<project-detail-modal ref="projectDetailModal"></project-detail-modal>
|
||
<!--审核-->
|
||
<audit-modal ref="auditModal" @ok="modalFormOk"></audit-modal>
|
||
</a-card>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { JeroListMixin } from '@/mixins/JeroListMixin'
|
||
import { mixinDevice } from '@/utils/mixin'
|
||
import { getMeetInfoById, createQcCode } from '@api/incomeMeetingApi'
|
||
import JYearDate from '@comp/jero/JYearDate'
|
||
import JDictSelectTag from '@comp/dict/JDictSelectTag'
|
||
import ImportParticipantModal from '@views/incomePayments/meetManage/modules/ImportParticipantModal'
|
||
import BatchInvocieModal from '@views/incomePayments/meetManage/modules/BatchInvocieModal'
|
||
import BatchSetDockerModal from '@views/incomePayments/meetManage/modules/BatchSetDockerModal'
|
||
import ProjectDetailModal from '@comp/ProjectDetailModal'
|
||
import AuditModal from '@views/incomePayments/meetManage/modules/AuditModal'
|
||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||
import StatusSlot from '@comp/tools/StatusSlot'
|
||
import PreviewFile from '@comp/jero/PreviewFile'
|
||
import JImageUpload from '@comp/jero/JImageUpload'
|
||
|
||
|
||
export default {
|
||
name: 'Attendance',
|
||
mixins: [JeroListMixin, mixinDevice],
|
||
components: {
|
||
JYearDate,
|
||
JDictSelectTag,
|
||
ImportParticipantModal,
|
||
BatchInvocieModal,
|
||
BatchSetDockerModal,
|
||
ProjectDetailModal,
|
||
AuditModal,
|
||
PageHeaderTitle,
|
||
StatusSlot,
|
||
PreviewFile,
|
||
JImageUpload
|
||
},
|
||
data() {
|
||
return {
|
||
description: '参会情况',
|
||
columns: [
|
||
{
|
||
title: '序号',
|
||
dataIndex: '',
|
||
key: 'rowIndex',
|
||
width: 60,
|
||
align: 'center',
|
||
customRender: function (t, r, index) {
|
||
return parseInt(index) + 1
|
||
}
|
||
},
|
||
{
|
||
title: '参会单位',
|
||
align: 'center',
|
||
dataIndex: 'companyName',
|
||
scopedSlots: { customRender: 'htmlSlot' },
|
||
width: 180
|
||
},
|
||
{
|
||
title: '参会人员',
|
||
align: 'center',
|
||
dataIndex: 'companyContactName',
|
||
width: 160,
|
||
scopedSlots: { customRender: 'person' }
|
||
},
|
||
{
|
||
title: '应收金额',
|
||
align: 'center',
|
||
dataIndex: 'amountReceivable',
|
||
width: 100
|
||
},
|
||
{
|
||
title: '实收金额',
|
||
align: 'center',
|
||
dataIndex: 'paidAmount',
|
||
width: 120
|
||
},
|
||
{
|
||
title: '缴费方式',
|
||
align: 'center',
|
||
dataIndex: 'payMode_dictText',
|
||
width: 120
|
||
},
|
||
{
|
||
title: '是否签到',
|
||
align: 'center',
|
||
dataIndex: 'checkIn_dictText',
|
||
width: 100
|
||
},
|
||
{
|
||
title: '打包',
|
||
align: 'center',
|
||
dataIndex: 'pack',
|
||
width: 100,
|
||
scopedSlots: { customRender: 'status-pack' }
|
||
},
|
||
{
|
||
title: '需要发票',
|
||
align: 'center',
|
||
dataIndex: 'needInvoice',
|
||
width: 100,
|
||
scopedSlots: { customRender: 'status-pack' }
|
||
},
|
||
{
|
||
title: '到账',
|
||
align: 'center',
|
||
width: 100,
|
||
dataIndex: 'inAccount',
|
||
scopedSlots: { customRender: 'status' }
|
||
},
|
||
{
|
||
title: '开票',
|
||
align: 'center',
|
||
width: 100,
|
||
dataIndex: 'makeInvoice',
|
||
scopedSlots: { customRender: 'status-bill' }
|
||
},
|
||
{
|
||
title: '邮寄',
|
||
align: 'center',
|
||
width: 100,
|
||
dataIndex: 'mail',
|
||
scopedSlots: { customRender: 'status-mail' }
|
||
},
|
||
{
|
||
title: '对接人',
|
||
align: 'center',
|
||
dataIndex: 'dockName'
|
||
},
|
||
{
|
||
title: '操作',
|
||
align: 'center',
|
||
fixed: 'right',
|
||
width: 300,
|
||
scopedSlots: { customRender: 'action' }
|
||
}
|
||
],
|
||
// 权限编码
|
||
authorCode: {},
|
||
// 其他会议的参会情况的权限编码
|
||
otherMeetingCode: {
|
||
search: 'otherMeetingSituation:search',
|
||
add: 'otherMeetingSituation:add',
|
||
export: 'otherMeetingSituation:export',
|
||
batchDel: 'otherMeetingSituation:batchDel',
|
||
edit: 'otherMeetingSituation:edit',
|
||
delete: 'otherMeetingSituation:delete',
|
||
auditRecord: 'otherMeetingSituation:auditCredentials',
|
||
auditSignUpInfo: 'otherMeetingSituation:auditSignUp'
|
||
},
|
||
// 分标委会议的参会情况权限编码
|
||
committeeMeetingCode: {
|
||
search: 'committeeMeetingSituation:search',
|
||
add: 'committeeMeetingSituation:add',
|
||
export: 'committeeMeetingSituation:export',
|
||
batchDel: 'committeeMeetingSituation:batchDel',
|
||
edit: 'committeeMeetingSituation:edit',
|
||
delete: 'committeeMeetingSituation:delete',
|
||
auditRecord: 'committeeMeetingSituation:auditCredentials',
|
||
auditSignUpInfo: 'committeeMeetingSituation:auditSignUp'
|
||
},
|
||
// 工作组会议的参会情况的权限编码
|
||
workGroupMeetingCode: {
|
||
search: 'workGroupMeetingSituation:search',
|
||
add: 'workGroupMeetingSituation:add',
|
||
export: 'workGroupMeetingSituation:export',
|
||
batchDel: 'workGroupMeetingSituation:batchDel',
|
||
edit: 'workGroupMeetingSituation:edit',
|
||
delete: 'workGroupMeetingSituationS:delete',
|
||
auditRecord: 'workGroupMeetingSituation:auditCredentials',
|
||
auditSignUpInfo: 'workGroupMeetingSituation:auditSignUp'
|
||
},
|
||
// 国际研讨会的参会情况的权限编码
|
||
internalMeetingCode: {
|
||
search: 'internalMeetingSituation:search',
|
||
add: 'internalMeetingSituation:add',
|
||
export: 'internalMeetingSituation:export',
|
||
batchDel: 'internalMeetingSituation:batchDel',
|
||
edit: 'internalMeetingSituation:edit',
|
||
delete: 'internalMeetingSituation:delete',
|
||
auditRecord: 'internalMeetingSituation:auditCredentials',
|
||
auditSignUpInfo: 'internalMeetingSituation:auditSignUp'
|
||
},
|
||
// 标协会议的参会情况的权限编码
|
||
standardsMeetingCode: {
|
||
search: 'standardsMeetingSituation:search',
|
||
add: 'standardsMeetingSituation:add',
|
||
export: 'standardsMeetingSituation:export',
|
||
batchDel: 'standardsMeetingSituation:batchDel',
|
||
edit: 'standardsMeetingSituation:edit',
|
||
delete: 'standardsMeetingSituation:delete',
|
||
auditRecord: 'standardsMeetingSituation:auditCredentials',
|
||
auditSignUpInfo: 'standardsMeetingSituation:auditSignUp'
|
||
},
|
||
disableMixinCreated: true,
|
||
// url: {
|
||
// list: '/meeting/payMeetingSituation/page',
|
||
// delete: '/meeting/payMeetingSituation/delete',
|
||
// deleteBatch: '/meeting/payMeetingSituation/deleteBatch',
|
||
// exportXlsUrl: '/meeting/payMeetingSituation/exportXls',
|
||
// importExcelUrl: '/meeting/payMeetingSituation/importExcel'
|
||
// },
|
||
// 其他会议的url
|
||
otherMeetingUrl: {
|
||
list: '/meeting/ohterMeetingSituation/page',
|
||
delete: '/meeting/ohterMeetingSituation/delete',
|
||
deleteBatch: '/meeting/ohterMeetingSituation/deleteBatch',
|
||
exportXlsUrl: '/meeting/ohterMeetingSituation/exportXls',
|
||
importExcelUrl: '/meeting/ohterMeetingSituation/importExcel'
|
||
},
|
||
// 分标委会议的url
|
||
committeeMeetingUrl: {
|
||
list: '/meeting/committeeMeetingSituation/page',
|
||
delete: '/meeting/committeeMeetingSituation/delete',
|
||
deleteBatch: '/meeting/committeeMeetingSituation/deleteBatch',
|
||
exportXlsUrl: '/meeting/committeeMeetingSituation/exportXls',
|
||
importExcelUrl: '/meeting/committeeMeetingSituation/importExcel'
|
||
},
|
||
// 国际研讨会的url
|
||
internalMeetingUrl: {
|
||
list: '/meeting/internalMeetingSituation/page',
|
||
delete: '/meeting/internalMeetingSituation/delete',
|
||
deleteBatch: '/meeting/internalMeetingSituation/deleteBatch',
|
||
exportXlsUrl: '/meeting/internalMeetingSituation/exportXls',
|
||
importExcelUrl: '/meeting/internalMeetingSituation/importExcel'
|
||
},
|
||
// 标协会议的url
|
||
standardsMeetingUrl: {
|
||
list: '/meeting/standardsMeetingSituation/page',
|
||
delete: '/meeting/standardsMeetingSituation/delete',
|
||
deleteBatch: '/meeting/standardsMeetingSituation/deleteBatch',
|
||
exportXlsUrl: '/meeting/standardsMeetingSituation/exportXls',
|
||
importExcelUrl: '/meeting/standardsMeetingSituation/importExcel'
|
||
},
|
||
// 工作组会议的url
|
||
workGroupMeetingUrl: {
|
||
list: '/meeting/workGroupMeetingSituation/page',
|
||
delete: '/meeting/workGroupMeetingSituation/delete',
|
||
deleteBatch: '/meeting/workGroupMeetingSituation/deleteBatch',
|
||
exportXlsUrl: '/meeting/workGroupMeetingSituation/exportXls',
|
||
importExcelUrl: '/meeting/workGroupMeetingSituation/importExcel'
|
||
},
|
||
// 当前的会议信息详情
|
||
currentMeetingInfo: {},
|
||
meetingType: '',
|
||
// 报名二维码
|
||
signUpQRCode: '',
|
||
// 签到二维码
|
||
signInQRCode: '',
|
||
// 收款二维码
|
||
payMentQRCode: '',
|
||
// 会议费用
|
||
meetingCostBool: false
|
||
}
|
||
},
|
||
created() {
|
||
// console.log(this.$route,'this.$route this.$route')
|
||
// 为不同会议的参会情况去设置不同的权限编码
|
||
this.setCodeByMeetingType(this.$route.query.meetingType)
|
||
// 获取会议详情
|
||
const param = {
|
||
id: this.$route.query.id
|
||
}
|
||
getMeetInfoById(param).then(res => {
|
||
if (res.success) {
|
||
this.currentMeetingInfo = Object.assign({}, res.result)
|
||
// 转化会议类型
|
||
this.meetingType = this.generateMeetingType(this.currentMeetingInfo.meetingType)
|
||
// 列表表头只有国际研讨会有对接人字段
|
||
if (this.currentMeetingInfo.meetingType !== '3') {
|
||
let index = this.columns.findIndex(item => item.dataIndex === 'dockName')
|
||
this.columns.splice(index, 1)
|
||
}
|
||
// 计算会议费用 会议费用为0 添加参会人不显示邮寄信息与缴费信息 标协会议
|
||
if (this.currentMeetingInfo.meetingType === '2' && this.currentMeetingInfo.meetingCostsVip) {
|
||
// 标协会员的费用
|
||
let vipCost = this.currentMeetingInfo.meetingCostsVip
|
||
// 判断标协会员的费用是否是0
|
||
let flagVip = vipCost === 0 || vipCost === '0.00'
|
||
let cost = this.currentMeetingInfo.meetingCosts
|
||
// 判断普通会员的费用是否是0
|
||
let flag = cost === 0 || cost === '0.00'
|
||
if (flag && flagVip) {
|
||
// 说明会议费用为0
|
||
this.meetingCostBool = true
|
||
} else {
|
||
this.meetingCostBool = false
|
||
}
|
||
// 其他会议值判断一个费用
|
||
} else if (this.currentMeetingInfo.meetingCosts) {
|
||
// 判断其他会议
|
||
let cost = this.currentMeetingInfo.meetingCosts
|
||
// 判断普通会员的费用是否是0
|
||
let flag = cost === 0 || cost === '0.00'
|
||
if (flag) {
|
||
this.meetingCostBool = true
|
||
} else {
|
||
this.meetingCostBool = false
|
||
}
|
||
}
|
||
}
|
||
})
|
||
this.filters.meetingId = this.$route.query.id
|
||
this.loadData(1)
|
||
},
|
||
async mounted() {
|
||
// 生成会议报名二维码
|
||
this.signUpQRCode = await this.generateQRCode(this.signUpHerfUrl)
|
||
// 生成签到二维码
|
||
this.signInQRCode = await this.generateQRCode(this.signInUrl)
|
||
},
|
||
computed: {
|
||
// 标协会议类型
|
||
tbMeetingType() {
|
||
if (this.currentMeetingInfo.tbMeetingType === '1') {
|
||
return '标准宣贯'
|
||
}
|
||
if (this.currentMeetingInfo.tbMeetingType === '2') {
|
||
return '学习培训'
|
||
} else {
|
||
return ''
|
||
}
|
||
},
|
||
// eslint-disable-next-line
|
||
url() {
|
||
switch (this.$route.query.meetingType) {
|
||
case '1':
|
||
return this.workGroupMeetingUrl
|
||
case '2':
|
||
return this.standardsMeetingUrl
|
||
case '3':
|
||
return this.internalMeetingUrl
|
||
case '4':
|
||
return this.otherMeetingUrl
|
||
case '5':
|
||
return this.committeeMeetingUrl
|
||
}
|
||
},
|
||
// 报名链接
|
||
signUpHerfUrl() {
|
||
return `${ window._CONFIG['singUpQRCodeURL'] }?id=${ this.$route.query.id }`
|
||
},
|
||
// 签到地址 只给一个会议id
|
||
signInUrl() {
|
||
return this.$route.query.id
|
||
}
|
||
},
|
||
methods: {
|
||
selectIdentity(){
|
||
console.log(this.queryParam.identity)
|
||
if(this.queryParam.identity !== '1'){
|
||
delete this.queryParam.guestType
|
||
}
|
||
},
|
||
/*
|
||
* 审核
|
||
* */
|
||
handleAudit(record) {
|
||
this.$refs.auditModal.title = '审核凭证'
|
||
this.$refs.auditModal.open(record, false)
|
||
},
|
||
/*
|
||
* 审核报名信息
|
||
* */
|
||
handleAuditSignUp(record) {
|
||
this.$refs.auditModal.title = '审核报名信息'
|
||
this.$refs.auditModal.open(record, true)
|
||
},
|
||
/*
|
||
* 导入参会人
|
||
* */
|
||
importParticipant() {
|
||
this.$refs.importParticipantModal.open()
|
||
this.$refs.importParticipantModal.title = '导入参会人'
|
||
},
|
||
/*
|
||
* 添加参会人
|
||
* */
|
||
addParticipant() {
|
||
this.$router.push({
|
||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
||
query: {
|
||
meetingType: this.currentMeetingInfo.meetingType,
|
||
meetingId: this.$route.query.id,
|
||
costBool: this.meetingCostBool
|
||
}
|
||
})
|
||
},
|
||
/*
|
||
* 编辑参会人
|
||
* */
|
||
handleEdit(record) {
|
||
this.$router.push({
|
||
path: '/incomePayments/meetManage/SignUpInfoEdit',
|
||
query: {
|
||
id: record.id,
|
||
meetingId: this.$route.query.id,
|
||
meetingType: this.currentMeetingInfo.meetingType,
|
||
costBool: this.meetingCostBool
|
||
}
|
||
})
|
||
},
|
||
/*
|
||
* 合并开票
|
||
* */
|
||
batchInvoice() {
|
||
let meetingId = this.$route.query.id
|
||
if (this.selectionRows.length === 0) {
|
||
this.$message.warn('请选择一条记录')
|
||
return
|
||
}
|
||
// 应收金额为0 不需要发票 打包 都不可以开发票
|
||
console.log(this.selectionRows)
|
||
// 只能选择相同的单位进行合并开票
|
||
if (this.selectionRows.length > 0) {
|
||
let initName = this.selectionRows[0].companyId
|
||
// 单位判重
|
||
let flag = this.selectionRows.some(item => {
|
||
return item.companyId !== initName
|
||
})
|
||
// 身份为嘉宾、内部企业和缴费方式为打包和不需要发票的不支持开票
|
||
let moneyFlag = this.selectionRows.some(item => {
|
||
return item.amountReceivable === '0.00' || item.needInvoice === 0 || item.payMode === 3
|
||
})
|
||
if (flag) {
|
||
// flag为true 说明有单位不一样
|
||
this.$message.warn('请选择同一企业的参会人进行开票')
|
||
return
|
||
} else if (moneyFlag) {
|
||
this.$message.warn('身份为嘉宾、内部企业和缴费方式为打包和不需要发票的不支持开票')
|
||
return
|
||
} else {
|
||
// 打开模态框
|
||
this.$refs.batchInvoiceModal.open(this.selectionRows, meetingId, this.selectedRowKeys)
|
||
}
|
||
|
||
}
|
||
},
|
||
/*
|
||
* 设置对接人 只有研讨会 会议才可以设置
|
||
* */
|
||
batchSetDocker() {
|
||
if (this.selectionRows.length === 0) {
|
||
this.$message.warn('请选择一条记录')
|
||
return
|
||
}
|
||
// let flag = this.selectionRows.some(item => {
|
||
// return item.meetingType !== 3
|
||
// })
|
||
let flag = this.currentMeetingInfo.meetingType !== '3'
|
||
if (flag) {
|
||
this.$message.warn('只有研讨会议才可设置对接人')
|
||
return
|
||
} else {
|
||
// 打开模态框
|
||
this.$refs.batchSetDockerModal.open(this.selectedRowKeys)
|
||
}
|
||
},
|
||
/*
|
||
* 打开项目详情
|
||
* */
|
||
openDetailModal(record) {
|
||
this.$refs.projectDetailModal.open(record)
|
||
},
|
||
/*
|
||
* 会议类型 1 工作组会议 2 标协会议 3国际研讨会 4 其他会议
|
||
* */
|
||
generateMeetingType(val) {
|
||
switch (val) {
|
||
case '1':
|
||
return '工作组会议'
|
||
case '2':
|
||
return '标协会议'
|
||
case '3':
|
||
return '国际研讨会'
|
||
case '4':
|
||
return '其他会议'
|
||
case '5':
|
||
return '分标委会议'
|
||
default:
|
||
return '其他会议'
|
||
}
|
||
},
|
||
/*
|
||
* 生成二维码
|
||
* */
|
||
generateQRCode(params) {
|
||
return new Promise(resolve => {
|
||
let code = ''
|
||
createQcCode({ contact: params }).then(res => {
|
||
if (res.success) {
|
||
code = res.result
|
||
} else {
|
||
console.error('生成二维码失败')
|
||
}
|
||
}).finally(() => {
|
||
resolve(code)
|
||
})
|
||
})
|
||
},
|
||
/*
|
||
* 去报名详情
|
||
* */
|
||
toSignUpDetail(record) {
|
||
this.$router.push({
|
||
path: '/incomePayments/meetManage/SignUpInfoDetail',
|
||
query: { id: record.id, meetingType: this.currentMeetingInfo.meetingType }
|
||
})
|
||
},
|
||
/*
|
||
* 复制地址
|
||
* */
|
||
copy(data) {
|
||
// 存储传递过来的数据
|
||
let OrderNumber = data
|
||
// 创建一个input 元素
|
||
// createElement() 方法通过指定名称创建一个元素
|
||
let newInput = document.createElement('input')
|
||
// 讲存储的数据赋值给input的value值
|
||
newInput.value = OrderNumber
|
||
// appendChild() 方法向节点添加最后一个子节点。
|
||
document.body.appendChild(newInput)
|
||
// 选中input元素中的文本
|
||
// select() 方法用于选择该元素中的文本。
|
||
newInput.select()
|
||
// 执行浏览器复制命令
|
||
// execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令
|
||
document.execCommand('Copy')
|
||
// 清空输入框
|
||
newInput.remove()
|
||
this.$message.success('复制成功')
|
||
},
|
||
/*
|
||
* 通过会议类型设置权限编码
|
||
* type 会议类型
|
||
* */
|
||
setCodeByMeetingType(type) {
|
||
switch (type) {
|
||
case '1':
|
||
this.authorCode = Object.assign({}, this.workGroupMeetingCode)
|
||
break
|
||
case '2':
|
||
this.authorCode = Object.assign({}, this.standardsMeetingCode)
|
||
break
|
||
case '3':
|
||
this.authorCode = Object.assign({}, this.internalMeetingCode)
|
||
break
|
||
case '4':
|
||
this.authorCode = Object.assign({}, this.otherMeetingCode)
|
||
break
|
||
case '5':
|
||
this.authorCode = Object.assign({}, this.committeeMeetingCode)
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="less">
|
||
@import '~@assets/less/common.less';
|
||
|
||
.meeting-info {
|
||
.ant-col {
|
||
span {
|
||
display: inline-block;
|
||
word-break: keep-all;
|
||
white-space: nowrap;
|
||
max-width: calc(100% - 100px);
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
}
|
||
}
|
||
|
||
//会议内容、备注的样式
|
||
.meeting-textarea {
|
||
display: flex;
|
||
|
||
label {
|
||
flex-shrink: 0;
|
||
}
|
||
}
|
||
|
||
.flex-col {
|
||
.ant-col {
|
||
display: flex;
|
||
}
|
||
}
|
||
|
||
.ant-row {
|
||
line-height: 3;
|
||
|
||
.ant-col {
|
||
|
||
label {
|
||
color: #999;
|
||
}
|
||
|
||
span {
|
||
color: black;
|
||
}
|
||
}
|
||
}
|
||
|
||
.label {
|
||
color: #999999;
|
||
}
|
||
|
||
.content {
|
||
color: black;
|
||
}
|
||
|
||
.qr-code {
|
||
width: 100px;
|
||
height: 100px;
|
||
}
|
||
|
||
.copy {
|
||
font-style: normal;
|
||
cursor: pointer;
|
||
}
|
||
</style>
|