Merge remote-tracking branch 'origin/master'

This commit is contained in:
姚亚男
2021-10-18 17:39:35 +08:00
10 changed files with 639 additions and 85 deletions
+2
View File
@@ -19,6 +19,8 @@ const signUpApi = {
addPersonNoLimit: (params) => http.post(`${URL_CONFIG}company/payContactsManagement/addMeeting`, params),
// 会议报名接口
signUpMeeting:(params) => http.post(`${URL_CONFIG}meeting/payMeetingSituation/signUp`, params),
// 上传汇款凭证
uploadPayRecord:(params) =>http.post(`${URL_CONFIG}meeting/payMeetingSituation/editTerminal`, params),
}
export default signUpApi
+4
View File
@@ -97,6 +97,10 @@ Page({
wx.navigateTo({
url: `../meetingDetailSigned/meetingDetailSigned?meetingInfo=${meetingInfo}`, // (已报名)
})
}else{
wx.navigateTo({
url: `../meetingDetailSigned/meetingDetailSigned?meetingInfo=${meetingInfo}`, // (已报名)
})
}
},
@@ -1,7 +1,10 @@
// pages/meeting/meeting.js
import {previewFile} from '../../assets/js/preview'
import {
previewFile
} from '../../assets/js/preview'
import MeetingApi from '../../assets/js/http/meetingApi'
import signUpApi from '../../assets/js/http/signUp'
Page({
/**
@@ -10,44 +13,64 @@ Page({
data: {
payProveImage: '',
// 会议详情
meetingInfo:{},
meetingInfo: {},
// 参会人信息
singInPersonInfo:{},
singInPersonInfo: {},
// 会议通知文件资料数组
meetingFilesList:[],
meetingFilesList: [],
// 会议资料文件数组
meetingDataList:[]
meetingDataList: [],
// 缴费凭证id
imageIds:[],
// 订单后四位
ordeCode:''
},
// 上传缴费凭证
uploadImage(){
const that = this
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success (res) {
// tempFilePath可以作为img标签的src属性显示图片
that.setData({
payProveImage: res.tempFilePaths
})
console.log(that.data.payProveImage)
// 获取图片的id
getImagesId(e) {
this.setData({
imageIds: e.detail.join(',')
})
},
// 订单后四位
setOrdeCode(e){
this.setData({
ordeCode:e.detail.value
})
},
// 上传汇款凭证
editPayRecord(){
const param = {
id:this.data.meetingInfo.situationId,
orderCode:this.data.ordeCode,
paymentRecord:this.data.imageIds
}
signUpApi.uploadPayRecord(param).then(res => {
console.log(res);
if(res.success){
wx.showToast({
title:res.message,
icon: "success",
duration: 800,
});
}else{
wx.showToast({
title:res.message,
icon: "error",
duration: 800,
});
}
})
},
// 删除缴费凭证
delete(){
this.setData({
payProveImage: ''
})
},
//参会人信息
queryPeronInfo(id){
MeetingApi.queryPersongInfoById({id:id}).then(res => {
if(res.success){
queryPeronInfo(id) {
MeetingApi.queryPersongInfoById({
id: id
}).then(res => {
if (res.success) {
this.setData({
singInPersonInfo:res.result
singInPersonInfo: res.result
})
}
})
@@ -56,7 +79,9 @@ Page({
getFileInfo(id) {
return new Promise(resolve => {
let result = {}
MeetingApi.queryFileInfoById({ id: id }).then(res => {
MeetingApi.queryFileInfoById({
id: id
}).then(res => {
if (res.success) {
result = res.result
}
@@ -66,14 +91,17 @@ Page({
})
},
// 获取文件信息
async initFileList(fileIds) {
async initFileList(fileIds) {
if (fileIds) {
const fileList = []
let arr = fileIds.split(',')
for (let i = 0; i < arr.length; i++) {
let fileObj = {}
fileObj = await this.getFileInfo(arr[i])
fileList.push({ id: fileObj.id, name: fileObj.fileName })
fileList.push({
id: fileObj.id,
name: fileObj.fileName
})
}
return fileList
}
@@ -81,7 +109,7 @@ Page({
// 预览
previewFile(e) {
const fileObj = e.currentTarget.dataset.file
previewFile(fileObj.id,fileObj.name)
previewFile(fileObj.id, fileObj.name)
},
/**
* 生命周期函数--监听页面加载
@@ -92,26 +120,29 @@ Page({
console.log(meetingInfo);
const that = this
this.setData({
meetingInfo:meetingInfo
meetingInfo: meetingInfo
})
//
let {meetingFiles,meetingData} = meetingInfo
let {
meetingFiles,
meetingData
} = meetingInfo
// 获取参会人信息
this.queryPeronInfo(meetingInfo.id)
this.queryPeronInfo(meetingInfo.situationId)
// this.queryFileInfo(meetingFiles)
// 获取会议资料文件
this.initFileList(meetingData).then(res => {
that.setData({
meetingDataList:res
})
that.setData({
meetingDataList: res
})
})
// 会议通知文件
this.initFileList(meetingFiles).then(res => {
that.setData({
meetingFilesList:res
meetingFilesList: res
})
})
})
},
@@ -163,4 +194,4 @@ Page({
onShareAppMessage: function () {
}
})
})
@@ -1,4 +1,6 @@
{
"navigationBarTitleText": "会议详情",
"usingComponents": {}
"usingComponents": {
"image-upload":"../../components/imageUpload/imageUpload"
}
}
@@ -12,13 +12,13 @@
<text>负责人</text>
<text>{{meetingInfo.directorName}}</text>
</view>
<view>
<view class="sign-in">
<text>召开时间</text>
<text>{{meetingInfo.startTime + '至' + meetingInfo.endTime}}</text>
<text class="sign-in-text">{{meetingInfo.startTime + '至' + meetingInfo.endTime}}</text>
</view>
<view>
<view class="sign-in">
<text>召开地点</text>
<text>{{meetingInfo.venue + '/' + meetingInfo.address}}</text>
<text class="sign-in-text">{{meetingInfo.venue + '/' + meetingInfo.address}}</text>
</view>
<view>
<text>报名截止时间</text>
@@ -33,13 +33,13 @@
<text>{{meetingInfo.particularYear}}</text>
</view>
<!-- 标协会议才有 -->
<view>
<view wx:if="{{meetingInfo.meetType === '2' }}">
<text>会议费用(VIP</text>
<text>{{meetingInfo.meetingCostsVip}}</text>
</view>
<view>
<view class="sign-in">
<text>会议内容</text>
<text>{{meetingInfo.meetingContent}}</text>
<text class="sign-in-text">{{meetingInfo.meetingContent}}</text>
</view>
<view class="meeting-files">
<text>会议通知</text>
@@ -48,7 +48,7 @@
<image src="../../assets/images/pdf.png"></image>
<text>{{item.name}}</text>
</view>
<text class="look-file" bindtap="previewFile" data-file ='{{item}}'>查看</text>
<text class="look-file" bindtap="previewFile" data-file='{{item}}'>查看</text>
</view>
</view>
<view class="meeting-files" style="margin-top: 0;">
@@ -58,14 +58,14 @@
<image src="../../assets/images/warn.png"></image>
<text>单个账号会议文件只可发送五次</text>
</view>
<view class="file-name" wx:for="{{meetingDataList}}" wx:key="item">
<view class="file-name" wx:for="{{meetingDataList}}" wx:key="item">
<view>
<image src="../../assets/images/pdf.png"></image>
<text>{{item.name}}</text>
</view>
<text class="look-file" bindtap="previewFile" data-file ='{{item}}'>查看</text>
<text class="look-file" bindtap="previewFile" data-file='{{item}}'>查看</text>
</view>
<view class="center"> <text wx:if="{{meetingDataList.length === 0 }}">暂无</text></view>
<view class="center"> <text wx:if="{{meetingDataList.length === 0 }}" style="color:#999">暂无</text></view>
</view>
</view>
<!-- 报名信息begin -->
@@ -87,45 +87,50 @@
</view>
<view>
<text>抵达时间</text>
<text>{{singInPersonInfo.arrivalTime}}</text>
<text>{{singInPersonInfo.arrivalTime === null ? '' : singInPersonInfo.arrivalTime}}</text>
</view>
<view>
<text>离开时间</text>
<text>{{singInPersonInfo.departureTime}}</text>
<text>{{singInPersonInfo.departureTime === null ? '' : singInPersonInfo.departureTime}}</text>
</view>
<view>
<text>邮寄联系人</text>
<text>{{singInPersonInfo.postContactName}}</text>
<text>{{singInPersonInfo.postContactName === null ? '' :singInPersonInfo.postContactName}}</text>
</view>
<view>
<text>缴费方式</text>
<text>{{singInPersonInfo.payMode_dictText}}</text>
<text>{{singInPersonInfo.payMode_dictText === null ? '':singInPersonInfo.payMode_dictText }}</text>
</view>
<view>
<text>是否需要发票</text>
<text>{{singInPersonInfo.needInvoice_dictText}}</text>
<text>{{singInPersonInfo.needInvoice_dictText === null ? '': singInPersonInfo.needInvoice_dictText}}</text>
</view>
<view>
<view class="sign-in">
<text>邮寄地址</text>
<text>{{singInPersonInfo.postContactAddress}}</text>
<text class="sign-in-text">{{singInPersonInfo.postContactAddress === null ? '' : singInPersonInfo.postContactAddress}}</text>
</view>
<view>
<text>邮编</text>
<text>{{singInPersonInfo.postCode}}</text>
</view>
<view class="pay-prove-box">
<text>缴费凭证</text>
<view class="pay-prove-content">
<view class="pay-prove" wx:if="{{payProveImage}}">
<image src="{{payProveImage}}" mode="aspectFill"></image>
<text class="delete-image" bindtap="delete">×</text>
</view>
<view class="pay-prove" bindtap="uploadImage">
<image src="../../assets/images/uploadImage.png" mode="aspectFill" style="width: 40px; height: 40px;"></image>
</view>
</view>
<text>{{singInPersonInfo.postCode === null ? '' :singInPersonInfo.postCode}}</text>
</view>
</view>
<!-- 缴费凭证 begin -->
<view class="payment-record" wx:if="{{singInPersonInfo.payMode === 2 || singInPersonInfo.payMode === 1}}">
<view class="p-20">
<text>缴费凭证</text>
<view class="payment-text">
<image-upload bindgetIds='getImagesId' maxLength='1'></image-upload>
</view>
</view>
<view class="line"></view>
<!-- 缴费方式为线上的显示 -->
<view class="p-20" wx:if="{{singInPersonInfo.payMode === 2 }}">
<text>缴费订单号后四位数</text>
<input class="input" placeholder="请输入订单号后四位数" bindblur="setOrdeCode" />
</view>
<view class="tip" wx:if="{{singInPersonInfo.payMOde === 2 }}">请在会议期间内上传缴费凭证和缴费订单号后四位</view>
</view>
<!-- 缴费凭证 end -->
<!-- 报名信息end -->
<!-- 签到信息begin -->
<view class="basic-info" style="margin-top: 10px;">
@@ -138,16 +143,18 @@
</view>
</view>
<!-- 签到信息end -->
<!-- 会议状态begin -->
<!-- 进行中 -->
<image wx:if="{{meetingInfo.meetingStatus === 3}}" class="img" src="../../assets/images/ing.png"></image>
<!-- 未开始 -->
<image wx:if="{{meetingInfo.meetingStatus === 2}}" class="img" src="../../assets/images/no-start.png"></image>
<!-- 已结束 -->
<image wx:if="{{meetingInfo.meetingStatus === 4}}" class="img" src="../../assets/images/end.png"></image>
<!-- 进行中 -->
<image wx:if="{{meetingInfo.meetingStatus === 3}}" class="img" src="../../assets/images/ing.png"></image>
<!-- 未开始 -->
<image wx:if="{{meetingInfo.meetingStatus === 2}}" class="img" src="../../assets/images/no-start.png"></image>
<!-- 已结束 -->
<image wx:if="{{meetingInfo.meetingStatus === 4}}" class="img" src="../../assets/images/end.png"></image>
<!-- 会议状态end -->
<view class="sign-up-empty"></view>
<view class="sign-up">
<text>确定</text>
<text bindtap="editPayRecord">确定</text>
</view>
</view>
</view>
@@ -92,7 +92,7 @@ page{
justify-content: flex-start;
align-items: center;
padding: 0;
height: 80px;
height: 200px;
}
.pay-prove-box .pay-prove-content .pay-prove{
width: 80px;
@@ -106,10 +106,10 @@ page{
justify-content: center;
align-items: center;
}
.pay-prove-box .pay-prove-content .pay-prove image{
/* .pay-prove-box .pay-prove-content .pay-prove image{
width: 80px;
height: 80px;
}
} */
.pay-prove-box .pay-prove-content .pay-prove .delete-image{
width: 12px;
height: 12px;
@@ -159,3 +159,43 @@ page{
bottom: 0;
margin: auto;
}
.basic-info view.sign-in {
display: flex!important;
flex-direction: column!important;
align-items: start;
justify-content: start;
height: auto!important;
}
.sign-in-text {
margin-top: 15px;
}
.payment-record {
background: #fff;
margin-top: 20rpx;
}
.p-20 {
padding: 10px 20px;
box-sizing: border-box;
}
.payment-text {
margin-top: 10px;
}
.input {
margin: 10px 0;
border: 1px solid #eee;
padding-left: 10rpx;
height: 30px;
line-height: 30px;
}
.line {
border-top: 1px solid #eee;
}
.tip {
padding-left: 20px;
padding-bottom: 10px;
color: #333;
font-size: 14px;
}
+155
View File
@@ -0,0 +1,155 @@
// pages/signUpEntrance/signUpEntrance.js
import MeetingApi from '../../assets/js/http/meetingApi'
import {
initFileList,
previewFile,
getFileInfo
} from '../../assets/js/preview'
import {
baseUrl,
URL_CONFIG
} from '../../assets/js/http/api'
Page({
/**
* 页面的初始数据
*/
data: {
// 会议详情信息
meetingDetailIngfo: {},
// 会议类型
meetingType: '',
// 标协会议类型 1标准宣贯 2学习培训
tbMeetingType:'',
// 会议通知文件资料数组
meetingFilesList: [],
// 缴费二维码的图片路径
payOrCode: '',
// 标协会议酒店信息
hotelContactsList:[]
},
// 获取会议详情
queryMeetingDetail(id) {
const that = this
MeetingApi.meetingDetail({
id
}).then(res => {
if (res.success) {
that.setData({
meetingDetailIngfo: res.result,
meetingType: that.generateMeetingType(res.result.meetingType),
payOrCode: baseUrl + URL_CONFIG + 'sys/common/download/' + res.result.paymentQrCode,
tbMeetingType:that.generateTbMeetingType(res.result.tbMeetingType),
hotelContactsList:res.result.hotelContactsList
})
console.log(that.data.hotelContactsList);
initFileList(res.result.meetingFiles).then(res => {
that.setData({
meetingFilesList: res,
})
})
}
})
},
// 报名
signUp() {
// 不同的会议通跳转不同的会议页面
let meetingType = this.data.meetingDetailIngfo.meetingType
if (meetingType !== '3') {
wx.navigateTo({
url: '../signUpPage/signUpPage',
})
} else {
wx.navigateTo({
url: '../signUpPageGuoji/signUpPageGuoji',
})
}
},
// 会议类型
generateMeetingType(meetingType) {
switch (meetingType) {
case "1":
return "工作组会议"
case "2":
return "标协会议"
case "3":
return "国际研讨会议"
case "4":
return "其他会议"
case "5":
return "分标委会议"
}
},
// 标协会议类型
generateTbMeetingType(type) {
switch (type) {
case "1":
return "标准宣贯"
case "2":
return "学习培训"
}
},
// 预览文件
preview(e) {
console.log(e);
const fileObj = e.currentTarget.dataset.file;
previewFile(fileObj.id, fileObj.name)
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.queryMeetingDetail('1448568227696041986')
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})
+3
View File
@@ -0,0 +1,3 @@
{
"usingComponents": {}
}
+124
View File
@@ -0,0 +1,124 @@
<!--pages/signUpEntrance/signUpEntrance.wxml-->
<view>
<view class="basic-info">
<view class="meeting-name">
<text>会议名称</text>
<text>{{meetingDetailIngfo.meetingName}}</text>
</view>
<view>
<text>会议类型</text>
<text>{{meetingType}}</text>
</view>
<view wx:if="{{meetingDetailIngfo.meetingType === '2'}}">
<text>标协会议类型</text>
<text>{{tbMeetingType}}</text>
</view>
<view>
<text>负责人</text>
<text>{{meetingDetailIngfo.directorName}}</text>
</view>
<view wx:if="{{meetingDetailIngfo.meetingType === '1'}}">
<text>所属工作组</text>
<text>{{meetingDetailIngfo.workingGroupName}}</text>
</view>
<view wx:if="{{meetingDetailIngfo.meetingType === '5'}}">
<text>所属分标委</text>
<text>{{meetingDetailIngfo.caseCommitteeName}}</text>
</view>
<view class="sign-in">
<text>召开时间</text>
<text class="sign-in-text">{{meetingDetailIngfo.startTime + '~' + meetingDetailIngfo.endTime }}</text>
</view>
<view class="sign-in">
<text>召开地点</text>
<text class="sign-in-text">{{meetingDetailIngfo.venue + '/' + meetingDetailIngfo.address}}</text>
</view>
<view>
<text>年份</text>
<text>{{meetingDetailIngfo.particularYear}}</text>
</view>
<view>
<text>报名截止时间</text>
<text>{{meetingDetailIngfo.registerDeadline}}</text>
</view>
<view>
<text>会议费用</text>
<text>{{meetingDetailIngfo.meetingCosts}}</text>
</view>
<view wx:if="{{meetingDetailIngfo.meetingType === '2' }}">
<text>会议费用(VIP</text>
<text>{{meetingDetailIngfo.meetingCostsVip}}</text>
</view>
<view wx:if="{{meetingDetailIngfo.meetingType === '2' }}" class="sign-in">
<text>注册签到时间</text>
<text class="sign-in-text">{{meetingDetailIngfo.startSignInTime + '~'+ meetingDetailIngfo.endSignInTime}}</text>
</view>
<view class="sign-in">
<text>会议内容</text>
<text class="sign-in-text">{{meetingDetailIngfo.meetingContent}}</text>
</view>
<view class="meeting-files" wx:if="{{meetingFilesList.length > 0}}">
<text>会议通知</text>
<view class="file-name" wx:for="{{meetingFilesList}}" wx:key="item">
<view>
<image src="../../assets/images/pdf.png"></image>
<text>{{item.name}}</text>
</view>
<text class="look-file" bindtap='preview' data-file="{{item}}">查看</text>
</view>
</view>
<view class="meeting-files" wx:if="{{meetingFilesList.length === 0}}">
<text>会议通知</text>
<view class="file-name">
<view>
<image src="../../assets/images/pdf.png"></image>
<text>{{item.name}}</text>
</view>
<text style="color:#999" bindtap='preview' data-file="{{item}}">暂无</text>
</view>
</view>
<view class="form-payQrCode">
<text style="padding-left:15px">缴费二维码</text>
<view>
<image class="payQrCode" src='{{payOrCode}}'></image>
</view>
</view>
<view class="sign-in">
<text>备注</text>
<text class="sign-in-text">{{meetingDetailIngfo.remark === null ? '' : meetingDetailIngfo.remark}}</text>
</view>
<view wx:if="{{hotelContactsList.length > 0}}">
<text>酒店名称</text>
<text>{{meetingDetailIngfo.hotelName}}</text>
</view>
<view wx:if="{{hotelContactsList.length > 0}}" wx:for="{{hotelContactsList}}">
<text>酒店联系人</text>
<text>{{item.hotelContacts}} - {{item.hotelContactsPhone}}</text>
</view>
<view wx:if="{{hotelContactsList.length > 0}}">
<text>酒店地址</text>
<text class="hotel-text">{{meetingDetailIngfo.hotelAddress}}</text>
</view>
</view>
<view class="sign-up-empty"></view>
<view class="sign-up">
<button class="sign-up-btn" bindtap='signUp'>报名</button>
</view>
</view>
+186
View File
@@ -0,0 +1,186 @@
/* pages/signUpEntrance/signUpEntrance.wxss */
page{
box-sizing: border-box;
background-color: #F5F5F5;
}
.basic-info .title{
height: 40px;
}
.basic-info .title text{
display: block;
border-left: 3px solid #069F99;
height: 14px;
padding-left: 10px;
border-radius: 2px;
display: flex;
justify-content: center;
align-items: center;
color: #333;
font-size: 15px;
font-weight: 500;
}
.basic-info view{
background-color: #FFF;
padding: 15px;
height: 40px;
display: flex;
justify-content: space-between;
align-items: center;
color: #333;
font-size: 14px;
border-bottom: 0.5px solid #f5f5f5;
position: relative;
}
.basic-info view:last-child{
border-bottom: 0;
}
.meeting-name{
margin-bottom: 10px;
}
.meeting-files{
margin-top: 10px;
flex-direction: column;
align-items: flex-start !important;
height: auto !important;
}
.basic-info .meeting-files .file-name{
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
box-sizing: border-box;
padding: 0;
height: 40px;
margin-top: 10px;
}
.file-name view{
padding: 0;
height: 30px;
line-height: 30px;
border-bottom: 0;
}
.file-name view image{
width: 30px;
height: 30px;
margin-right: 10px;
}
.basic-info .meeting-files .file-name .look-file{
color: #069F99;
}
.warning-text{
position: absolute !important;
top: 5px;
left: 75px;
color: #FF5E60 !important;
font-size: 10px !important;
padding: 0 !important;
}
.warning-text image{
width: 10px;
height: 10px;
}
.pay-prove-box{
display: flex !important;
flex-direction: column !important;
justify-content: flex-start !important;
align-items: flex-start !important;
padding: 0;
height: 120px !important;
}
.pay-prove-box .pay-prove-content{
margin-top: 20px;
display: flex;
justify-content: flex-start;
align-items: center;
padding: 0;
height: 80px;
}
.pay-prove-box .pay-prove-content .pay-prove{
width: 80px;
height: 80px;
margin-right: 10px;
position: relative !important;
background-color: #D1D1D1;
padding: 0;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
}
.pay-prove-box .pay-prove-content .pay-prove image{
width: 80px;
height: 80px;
}
.pay-prove-box .pay-prove-content .pay-prove .delete-image{
width: 12px;
height: 12px;
color: #fff;
background-color: #FF5E60;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-size: 7px;
position: absolute;
top: -3px;
right: -3px;
}
.sign-up-empty{
height: 60px;
width: 100%;
display: block;
margin-top: 10px;
}
.sign-up{
width: 100%;
padding: 10px 15px;
box-sizing: border-box;
background-color: #fff;
position: fixed;
bottom: 0;
}
.sign-up text{
background-color: #069F99;
height: 40px;
border-radius: 10px;
color: #fff;
font-size: 16px;
font-weight: 600;
display: block;
text-align: center;
line-height: 40px;
}
.form-payQrCode {
height: 140px!important;
padding: 5rpx!important;
}
.payQrCode {
width: 120px;
height: 120px;
padding: 2px;
box-sizing: border-box;
border-radius: 4px;
}
.sign-up-btn {
background-color: #069F99;
font-weight: 500;
color:#fff
}
.basic-info view.sign-in {
display: flex!important;
flex-direction: column!important;
align-items: start;
justify-content: start;
height: auto!important;
}
.sign-in-text {
margin-top: 15px;
}
.hotel {
width: 100%;
}
.hotel .hotel-text {
text-align: right;
}