mirror of
https://gitee.com/elegant_wings/dbd-meeting-wx-small.git
synced 2025-08-08 15:12:43 +08:00
描述:展厅
This commit is contained in:
parent
10a1ed4b0d
commit
0fc58575e1
40
miniprogram/api/meeting/exhibition.js
Normal file
40
miniprogram/api/meeting/exhibition.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import {
|
||||||
|
request
|
||||||
|
} from '../selfRequest';
|
||||||
|
|
||||||
|
|
||||||
|
// 展厅列表
|
||||||
|
export function showroomListRq() {
|
||||||
|
return request({
|
||||||
|
url: '/api/showroom/list',
|
||||||
|
method: "post",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 展厅详情
|
||||||
|
export function showroomDetailRq(id) {
|
||||||
|
return request({
|
||||||
|
url: '/api/showroom/get/' + id,
|
||||||
|
method: "get",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查询展厅能否预约
|
||||||
|
export function selectFreeShowRoomRq(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/showroom/selectFreeShowRoom',
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询展厅已经预约的记录
|
||||||
|
export function appointmentRecordRq(data) {
|
||||||
|
return request({
|
||||||
|
url: '/api/showroom/appointmentRecord',
|
||||||
|
method: "post",
|
||||||
|
data
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
@ -65,7 +65,11 @@
|
|||||||
"pages/meeting/visitorIinvitation/list/list",
|
"pages/meeting/visitorIinvitation/list/list",
|
||||||
"pages/meeting/visitorIinvitation/add/add",
|
"pages/meeting/visitorIinvitation/add/add",
|
||||||
"pages/meeting/visitorIinvitation/detail/detail",
|
"pages/meeting/visitorIinvitation/detail/detail",
|
||||||
"pages/meeting/visitorIinvitation/indexBar/indexBar"
|
"pages/meeting/visitorIinvitation/indexBar/indexBar",
|
||||||
|
"pages/meeting/exhibition/list/list",
|
||||||
|
"pages/meeting/exhibition/detail/detail",
|
||||||
|
"pages/meeting/exhibition/booked/booked",
|
||||||
|
"pages/meeting/exhibition/order/order"
|
||||||
],
|
],
|
||||||
"window": {
|
"window": {
|
||||||
"backgroundTextStyle": "light",
|
"backgroundTextStyle": "light",
|
||||||
|
@ -92,7 +92,7 @@ Page({
|
|||||||
{
|
{
|
||||||
name: "展厅预约",
|
name: "展厅预约",
|
||||||
img: "/profile/static/index/menu-ztyy.png",
|
img: "/profile/static/index/menu-ztyy.png",
|
||||||
path: ""
|
path: "/pages/meeting/exhibition/list/list"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "访客预约",
|
name: "访客预约",
|
||||||
|
222
miniprogram/pages/meeting/exhibition/booked/booked.js
Normal file
222
miniprogram/pages/meeting/exhibition/booked/booked.js
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
const app = getApp()
|
||||||
|
|
||||||
|
import Notify from '@vant/weapp/notify/notify';
|
||||||
|
|
||||||
|
import {
|
||||||
|
appointmentRecordRq,
|
||||||
|
selectFreeShowRoomRq
|
||||||
|
} from "../../../../api/meeting/exhibition.js"
|
||||||
|
|
||||||
|
|
||||||
|
import {
|
||||||
|
selfFormatTimeYMDHMS,
|
||||||
|
selfFormatTimeYMDH
|
||||||
|
} from "../../../../utils/util.js"
|
||||||
|
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
id: null,
|
||||||
|
minTime: null,
|
||||||
|
maxTime: null,
|
||||||
|
endMaxTime: null,
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
showTime: false,
|
||||||
|
dataList: [],
|
||||||
|
filterTime(type, options) {
|
||||||
|
if (type === 'minute') {
|
||||||
|
return options.filter((option) => option == '00');
|
||||||
|
}
|
||||||
|
return options;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
console.log('onLoad', options);
|
||||||
|
// 获取传递参数
|
||||||
|
this.setData({
|
||||||
|
...options
|
||||||
|
})
|
||||||
|
// 初始化时间
|
||||||
|
this.initParamTime()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 初始化时间
|
||||||
|
initParamTime() {
|
||||||
|
let maxTime = new Date();
|
||||||
|
maxTime.setFullYear(maxTime.getFullYear() + 3)
|
||||||
|
this.setData({
|
||||||
|
maxTime: maxTime.getTime()
|
||||||
|
})
|
||||||
|
this.setEndMaxTime(this.data.startTime)
|
||||||
|
// 设置最小时间
|
||||||
|
this.setMinTime()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 设置最小时间
|
||||||
|
setMinTime() {
|
||||||
|
let minTime = new Date(selfFormatTimeYMDH(new Date()) + ':00:00').getTime()
|
||||||
|
this.setData({
|
||||||
|
minTime,
|
||||||
|
startTime: minTime
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 指定天的最后一秒
|
||||||
|
setEndMaxTime(time) {
|
||||||
|
let endMaxTime = new Date(new Date(time).toLocaleDateString()).getTime() + 24 * 60 * 60 * 1000 - 1;
|
||||||
|
this.setData({
|
||||||
|
endMaxTime: endMaxTime
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 选择-开始时间
|
||||||
|
onInputStartTime(event) {
|
||||||
|
this.setData({
|
||||||
|
startTime: event.detail,
|
||||||
|
});
|
||||||
|
this.setEndMaxTime(event.detail)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 选择-结束时间
|
||||||
|
onInputEndTime(event) {
|
||||||
|
let _this = this;
|
||||||
|
this.setData({
|
||||||
|
endTime: event.detail,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 预约时间
|
||||||
|
reservationTime() {
|
||||||
|
this.setData({
|
||||||
|
showTime: true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 确认时间
|
||||||
|
confirmTime() {
|
||||||
|
let _this = this;
|
||||||
|
let id = _this.data.id;
|
||||||
|
let startTime = _this.data.startTime;
|
||||||
|
let endTime = _this.data.endTime;
|
||||||
|
let paramUrl = "?id=" + id + "&startTime=" + selfFormatTimeYMDHMS(startTime) + "&endTime=" + selfFormatTimeYMDHMS(endTime);
|
||||||
|
|
||||||
|
// 预约时间不能小于1小时
|
||||||
|
if ((1000 * 60 * 60) > (endTime - startTime)) {
|
||||||
|
Notify({
|
||||||
|
type: 'danger',
|
||||||
|
message: '预约时间不能小于1小时',
|
||||||
|
duration: 1000,
|
||||||
|
selector: '#notify',
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询展厅能否预约
|
||||||
|
selectFreeShowRoomRq({
|
||||||
|
"id": id,
|
||||||
|
"startTime": selfFormatTimeYMDHMS(startTime),
|
||||||
|
"endDate": selfFormatTimeYMDHMS(endTime)
|
||||||
|
}).then(res => {
|
||||||
|
console.log('selectFreeShowRoomRq', res);
|
||||||
|
// 可以预约
|
||||||
|
if (res.code == 0) {
|
||||||
|
wx.navigateTo({
|
||||||
|
url: "/pages/meeting/exhibition/order/order" + paramUrl,
|
||||||
|
})
|
||||||
|
_this.setData({
|
||||||
|
showTime: false
|
||||||
|
})
|
||||||
|
} else { // 不能预约
|
||||||
|
Notify({
|
||||||
|
type: 'danger',
|
||||||
|
message: res.msg,
|
||||||
|
duration: 1000,
|
||||||
|
selector: '#notify',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 取消时间
|
||||||
|
cancelTime() {
|
||||||
|
this.setData({
|
||||||
|
showTime: false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
console.log('onShow');
|
||||||
|
let _this = this;
|
||||||
|
appointmentRecordRq({
|
||||||
|
"showroomId": _this.data.id
|
||||||
|
}).then(res => {
|
||||||
|
console.log('appointmentRecordRq', res);
|
||||||
|
let dataList = res.data;
|
||||||
|
dataList.map(item => {
|
||||||
|
item.nowDate = item.nowDate.substring(0, 10);
|
||||||
|
item.reservations = item.reservations.map(record => {
|
||||||
|
record.startTime = record.startTime.substring(11)
|
||||||
|
record.endDate = record.endDate.substring(11)
|
||||||
|
return record;
|
||||||
|
})
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
_this.setData({
|
||||||
|
dataList
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
8
miniprogram/pages/meeting/exhibition/booked/booked.json
Normal file
8
miniprogram/pages/meeting/exhibition/booked/booked.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"van-datetime-picker": "@vant/weapp/datetime-picker/index",
|
||||||
|
"van-popup": "@vant/weapp/popup/index",
|
||||||
|
"van-notify": "@vant/weapp/notify/index"
|
||||||
|
},
|
||||||
|
"navigationBarTitleText": "展厅预约"
|
||||||
|
}
|
38
miniprogram/pages/meeting/exhibition/booked/booked.wxml
Normal file
38
miniprogram/pages/meeting/exhibition/booked/booked.wxml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
<view class="containerView public">
|
||||||
|
|
||||||
|
<view class="dataView">
|
||||||
|
<!-- 标题 -->
|
||||||
|
<view class="leftLineTitle">展厅预约情况</view>
|
||||||
|
<!-- 预约列表 -->
|
||||||
|
<view class="itemVIew" wx:for="{{dataList}}" wx:for-item="item" wx:key="*this">
|
||||||
|
<view class="item">{{item.nowDate}}</view>
|
||||||
|
<view class="itemTimeView" wx:for="{{item.reservations}}" wx:for-item="record" wx:key="*this">
|
||||||
|
<view class="time">{{record.startTime}}~{{record.endDate}}</view>
|
||||||
|
<view class="status">已预约</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 预约时间 -->
|
||||||
|
<view class="submitBtn" bind:tap="reservationTime">预约时间</view>
|
||||||
|
|
||||||
|
<!-- 选择时间 -->
|
||||||
|
<view class="selfPop" wx:if="{{showTime}}">
|
||||||
|
<view class="labelView">
|
||||||
|
<view class="leftLineTitle">请选择开始时间</view>
|
||||||
|
</view>
|
||||||
|
<van-datetime-picker type="datetime" value="{{ startTime }}" min-date="{{ minTime }}" max-date="{{ maxTime }}" bind:input="onInputStartTime" bind:confirm="confirmTime" bind:cancel="cancelTime" confirm-button-text="" cancel-button-text=""
|
||||||
|
filter="{{ filterTime }}"/>
|
||||||
|
|
||||||
|
<view class="labelView">
|
||||||
|
<view class="leftLineTitle">请选择结束时间</view>
|
||||||
|
<view class="enter" bind:tap="confirmTime">确定</view>
|
||||||
|
</view>
|
||||||
|
<van-datetime-picker type="datetime" value="{{ endTime }}" min-date="{{ startTime }}" max-date="{{ endMaxTime }}" bind:input="onInputEndTime" bind:confirm="confirmTime"
|
||||||
|
confirm-button-text="" cancel-button-text="" bind:cancel="cancelTime" filter="{{ filterTime }}"/>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 消息提示 -->
|
||||||
|
<van-notify id="notify" />
|
||||||
|
|
||||||
|
</view>
|
66
miniprogram/pages/meeting/exhibition/booked/booked.wxss
Normal file
66
miniprogram/pages/meeting/exhibition/booked/booked.wxss
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
.containerView.public {
|
||||||
|
padding-bottom: 300rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dataView {
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemVIew {
|
||||||
|
box-shadow: rgba(153,134,134,0.2) 0px 0px 4px 0px;
|
||||||
|
padding: 0 20rpx;
|
||||||
|
margin-top: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemVIew .item,
|
||||||
|
.itemVIew .itemTimeView {
|
||||||
|
padding: 30rpx 0;
|
||||||
|
background-image: linear-gradient(to right, rgb(126, 126, 126, 0.1), rgb(126, 126, 126, 0.1), transparent 100%);
|
||||||
|
background-size: 20rpx 2rpx;
|
||||||
|
background-repeat: repeat-x;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemVIew .item {
|
||||||
|
color: #f1bb6b;
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemVIew .itemTimeView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemVIew .itemTimeView .status {
|
||||||
|
color: #b3b3b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.submitBtn {
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selfPop{
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background: #ffffff;
|
||||||
|
transition: 1s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selfPop .labelView{
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 20rpx 34rpx 20rpx 20rpx;
|
||||||
|
background: #f5f7fa;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.selfPop .labelView .enter{
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #4e96f8;
|
||||||
|
}
|
131
miniprogram/pages/meeting/exhibition/detail/detail.js
Normal file
131
miniprogram/pages/meeting/exhibition/detail/detail.js
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
const app = getApp()
|
||||||
|
|
||||||
|
import {
|
||||||
|
selectCoordinateRq
|
||||||
|
} from "../../../../api/meeting/meetingRoom.js"
|
||||||
|
import {
|
||||||
|
showroomDetailRq
|
||||||
|
} from "../../../../api/meeting/exhibition.js"
|
||||||
|
|
||||||
|
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
IMG_NAME: app.IMG_NAME,
|
||||||
|
id: null,
|
||||||
|
detail: {},
|
||||||
|
bannerList: [],
|
||||||
|
mapData: {}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
let _this = this;
|
||||||
|
console.log('onLoad', options);
|
||||||
|
_this.setData({
|
||||||
|
...options
|
||||||
|
})
|
||||||
|
showroomDetailRq(_this.data.id).then(res => {
|
||||||
|
console.log('showroomDetailRq', res);
|
||||||
|
_this.setData({
|
||||||
|
detail: res,
|
||||||
|
bannerList: [res.indoorPicUrl]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
// 获取地址信息
|
||||||
|
_this.getAddress()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取地址信息
|
||||||
|
getAddress() {
|
||||||
|
let _this = this;
|
||||||
|
selectCoordinateRq().then(res => {
|
||||||
|
_this.setData({
|
||||||
|
address: res,
|
||||||
|
mapData: {
|
||||||
|
latitude: res.lat,
|
||||||
|
longitude: res.lng,
|
||||||
|
markers: [{
|
||||||
|
id: 1,
|
||||||
|
latitude: res.lat,
|
||||||
|
longitude: res.lng,
|
||||||
|
title: res.address,
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 打开地图
|
||||||
|
openMap(e) {
|
||||||
|
console.log('openMap', e);
|
||||||
|
let _this = this;
|
||||||
|
wx.openLocation({
|
||||||
|
name: _this.data.address.address,
|
||||||
|
latitude: _this.data.address.lat,
|
||||||
|
longitude: _this.data.address.lng,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 跳转-预约
|
||||||
|
jumpBooked() {
|
||||||
|
let id = this.data.id;
|
||||||
|
wx.navigateTo({
|
||||||
|
url: "/pages/meeting/exhibition/booked/booked?id=" + id,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
6
miniprogram/pages/meeting/exhibition/detail/detail.json
Normal file
6
miniprogram/pages/meeting/exhibition/detail/detail.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "@vant/weapp/icon/index"
|
||||||
|
},
|
||||||
|
"navigationBarTitleText": "展厅"
|
||||||
|
}
|
47
miniprogram/pages/meeting/exhibition/detail/detail.wxml
Normal file
47
miniprogram/pages/meeting/exhibition/detail/detail.wxml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<view class="containerView public">
|
||||||
|
<!-- 轮播图 -->
|
||||||
|
<swiper class='swiper-box' indicator-dots autoplay interval="3000" duration="1000" circular='true'>
|
||||||
|
<swiper-item wx:for="{{bannerList}}" wx:key="index">
|
||||||
|
<image class="img" src="{{IMG_NAME + item}}" mode="aspectFill"></image>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
|
||||||
|
<!-- 会议室详细信息 -->
|
||||||
|
<view class="roomView">
|
||||||
|
<!-- 类型信息 -->
|
||||||
|
<view class="typeView">
|
||||||
|
<view class="typeItem">
|
||||||
|
<view class="name">所在楼层</view>
|
||||||
|
<view class="value">{{detail.buildingName}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="typeItem">
|
||||||
|
<view class="name">空间面积</view>
|
||||||
|
<view class="value">{{detail.renArea}}m</view>
|
||||||
|
</view>
|
||||||
|
<view class="typeItem">
|
||||||
|
<view class="name">办公面积</view>
|
||||||
|
<view class="value">{{detail.area}}m</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 文字内容 -->
|
||||||
|
<view class="content">{{detail.content ? detail.content : ''}}</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 价格 -->
|
||||||
|
<view class="priceView">
|
||||||
|
<view class="leftLineTitle">价格</view>
|
||||||
|
<view class="content">¥免费</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 地图 -->
|
||||||
|
<view class="mapView">
|
||||||
|
<view class="leftLineTitle">空间周边</view>
|
||||||
|
<map class="myMap" latitude="{{mapData.latitude}}" longitude="{{mapData.longitude}}" markers="{{mapData.markers}}" show-location bindtap="openMap"></map>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 预约 -->
|
||||||
|
<view class="submitBtn" bind:tap="jumpBooked">展厅预约</view>
|
||||||
|
|
||||||
|
</view>
|
142
miniprogram/pages/meeting/exhibition/detail/detail.wxss
Normal file
142
miniprogram/pages/meeting/exhibition/detail/detail.wxss
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
.containerView.public {
|
||||||
|
padding-bottom: 200rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box {
|
||||||
|
border-radius: 14rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 358rpx;
|
||||||
|
margin: 0 22rpx;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 轮播小点点 */
|
||||||
|
.swiper-box .wx-swiper-dots.wx-swiper-dots-horizontal {
|
||||||
|
margin-left: 36%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot {
|
||||||
|
width: 20rpx;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 5rpx;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot::before {
|
||||||
|
content: '';
|
||||||
|
flex-grow: 1;
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
border-radius: 0rpx
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot-active::before {
|
||||||
|
background: #ff3333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot-active {
|
||||||
|
width: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .typeView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .typeView .typeItem {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .typeView .typeItem .name {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .typeView .typeItem .value {
|
||||||
|
margin-top: 10rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .content {
|
||||||
|
margin: 40rpx 20rpx 0;
|
||||||
|
font-size: 26rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.roomView .contentSwichBtn {
|
||||||
|
border: 1px solid rgb(202, 202, 202);
|
||||||
|
border-radius: 6rpx;
|
||||||
|
margin: 20rpx;
|
||||||
|
padding: 14rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facilitiesView {
|
||||||
|
margin: 50rpx 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facilitiesView .itemView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facilitiesView .itemView .singleItem {
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 25%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facilitiesView .itemView .singleItem .img {
|
||||||
|
width: 70rpx;
|
||||||
|
height: 70rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.facilitiesView .itemView .singleItem .name {
|
||||||
|
margin-top: 16rpx;
|
||||||
|
width: 150rpx;
|
||||||
|
text-align: center;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.priceView {
|
||||||
|
margin: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.priceView .content {
|
||||||
|
margin: 30rpx 20rpx;
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #c3c3c3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mapView {
|
||||||
|
margin: 50rpx 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mapView .myMap {
|
||||||
|
margin-top: 30rpx;
|
||||||
|
width: 100%;
|
||||||
|
height: 500rpx;
|
||||||
|
}
|
||||||
|
|
103
miniprogram/pages/meeting/exhibition/list/list.js
Normal file
103
miniprogram/pages/meeting/exhibition/list/list.js
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
const app = getApp()
|
||||||
|
import {
|
||||||
|
showroomListRq
|
||||||
|
} from "../../../../api/meeting/exhibition.js"
|
||||||
|
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
IMG_NAME: app.IMG_NAME,
|
||||||
|
dataList: [],
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
// 页面初始化 options为页面跳转所带来的参数
|
||||||
|
wx.setNavigationBarTitle({
|
||||||
|
title: options.name
|
||||||
|
})
|
||||||
|
// 初始化数据
|
||||||
|
this.initData();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 初始化数据
|
||||||
|
initData() {
|
||||||
|
let _this = this;
|
||||||
|
// 获取数据
|
||||||
|
this.getDateList()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 获取数据
|
||||||
|
getDateList() {
|
||||||
|
let _this = this;
|
||||||
|
// 列表数据
|
||||||
|
showroomListRq().then(res => {
|
||||||
|
console.log('showroomListRq', res);
|
||||||
|
_this.setData({
|
||||||
|
dataList: res.data
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 跳转-详情
|
||||||
|
jumpDetail(e) {
|
||||||
|
console.log('jumpDetail', e);
|
||||||
|
wx.navigateTo({
|
||||||
|
url: "/pages/meeting/exhibition/detail/detail?id=" + e.currentTarget.dataset.id,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
9
miniprogram/pages/meeting/exhibition/list/list.json
Normal file
9
miniprogram/pages/meeting/exhibition/list/list.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"van-dropdown-menu": "@vant/weapp/dropdown-menu/index",
|
||||||
|
"van-dropdown-item": "@vant/weapp/dropdown-item/index",
|
||||||
|
"van-cell": "@vant/weapp/cell/index",
|
||||||
|
"van-switch": "@vant/weapp/switch/index",
|
||||||
|
"van-button": "@vant/weapp/button/index"
|
||||||
|
}
|
||||||
|
}
|
22
miniprogram/pages/meeting/exhibition/list/list.wxml
Normal file
22
miniprogram/pages/meeting/exhibition/list/list.wxml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<view class="containerView public">
|
||||||
|
|
||||||
|
<!-- 会议室列表 -->
|
||||||
|
<view class="meetingRoomView">
|
||||||
|
<view class="meetingRoomItem" bind:tap="jumpDetail" wx:for="{{dataList}}" wx:for-item="item" wx:key="*this" data-id="{{item.id}}">
|
||||||
|
<view class="content">
|
||||||
|
<view class="title">{{item.capacityNum}}人间 | {{item.roomName}} | {{item.buildingName}}</view>
|
||||||
|
<view class="propOpen"></view>
|
||||||
|
<view class="priceView">
|
||||||
|
<view class="price">¥免费</view>
|
||||||
|
<!-- <text decode> </text> -->
|
||||||
|
<!-- <view class="unit"> {{room.duration}}小时 起</view> -->
|
||||||
|
</view>
|
||||||
|
<view class="propOpen"></view>
|
||||||
|
</view>
|
||||||
|
<view class="imgView">
|
||||||
|
<view class="title">展厅</view>
|
||||||
|
<image class="img" src="{{IMG_NAME + item.indoorPicUrl}}" mode="aspectFill" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
97
miniprogram/pages/meeting/exhibition/list/list.wxss
Normal file
97
miniprogram/pages/meeting/exhibition/list/list.wxss
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
.queryView {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 999;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView {
|
||||||
|
padding: 30rpx 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
padding-bottom: 30rpx;
|
||||||
|
border-bottom: 1px solid rgb(126, 126, 126, 0.3);
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: flex-start;
|
||||||
|
height: 180rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .title {
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .articleView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 18rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .articleView .article {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: gray;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .articleView .article:first-child {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .propOpen {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .priceView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .priceView .price {
|
||||||
|
font-size: 32rpx;
|
||||||
|
color: #c3c3c3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .content .priceView .unit {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .imgView {
|
||||||
|
position: relative;
|
||||||
|
width: 320rpx;
|
||||||
|
height: 180rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .imgView .title {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 16rpx;
|
||||||
|
background: #76aef9;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 8rpx 30rpx;
|
||||||
|
border-top-right-radius: 6rpx;
|
||||||
|
border-bottom-right-radius: 6rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingRoomView .meetingRoomItem .imgView .img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
}
|
189
miniprogram/pages/meeting/exhibition/order/order.js
Normal file
189
miniprogram/pages/meeting/exhibition/order/order.js
Normal file
@ -0,0 +1,189 @@
|
|||||||
|
const app = getApp()
|
||||||
|
|
||||||
|
import Dialog from '@vant/weapp/dialog/dialog';
|
||||||
|
import Notify from '@vant/weapp/notify/notify';
|
||||||
|
|
||||||
|
import {
|
||||||
|
showroomDetailRq
|
||||||
|
} from "../../../../api/meeting/exhibition.js"
|
||||||
|
|
||||||
|
import {
|
||||||
|
meetingRoomDetailRq,
|
||||||
|
getCustomerTicketRq,
|
||||||
|
calculateMeetingRoomAmountRq,
|
||||||
|
saveMeetingRecordRq
|
||||||
|
} from "../../../../api/meeting/meetingRoom.js"
|
||||||
|
|
||||||
|
import {
|
||||||
|
selfFormatTimeYMD,
|
||||||
|
selfFormatTimeHM,
|
||||||
|
twoTimeInterval
|
||||||
|
} from "../../../../utils/util.js"
|
||||||
|
|
||||||
|
|
||||||
|
Page({
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面的初始数据
|
||||||
|
*/
|
||||||
|
data: {
|
||||||
|
IMG_NAME: app.IMG_NAME,
|
||||||
|
protocolFlag: true,
|
||||||
|
protocolTitle: '《展厅服务协议》',
|
||||||
|
id: null,
|
||||||
|
bannerList: [],
|
||||||
|
detail: {},
|
||||||
|
userData: {},
|
||||||
|
startTime: null,
|
||||||
|
endTime: null,
|
||||||
|
selectDay: null,
|
||||||
|
selectCountTime: null,
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面加载
|
||||||
|
*/
|
||||||
|
onLoad(options) {
|
||||||
|
console.log('onLoad', options);
|
||||||
|
let selectCountTime = selfFormatTimeHM(options.startTime) + "-" + selfFormatTimeHM(options.endTime) + ' 共计' + twoTimeInterval(options.startTime, options.endTime)
|
||||||
|
this.setData({
|
||||||
|
...options,
|
||||||
|
userData: wx.getStorageSync('user'),
|
||||||
|
selectDay: selfFormatTimeYMD(options.startTime),
|
||||||
|
selectCountTime
|
||||||
|
})
|
||||||
|
// 详细信息
|
||||||
|
this.getDetail();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 详细信息
|
||||||
|
getDetail() {
|
||||||
|
let _this = this;
|
||||||
|
showroomDetailRq(this.data.id).then(res => {
|
||||||
|
_this.setData({
|
||||||
|
detail: res,
|
||||||
|
bannerList: [res.indoorPicUrl]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 主题修改监听
|
||||||
|
titleChange(event) {
|
||||||
|
this.setData({
|
||||||
|
title: event.detail
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 协议点击
|
||||||
|
protocolChange() {
|
||||||
|
let _this = this;
|
||||||
|
_this.setData({
|
||||||
|
protocolFlag: !_this.data.protocolFlag
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 跳转协议
|
||||||
|
jumpProtocol() {
|
||||||
|
let _this = this;
|
||||||
|
wx.navigateTo({
|
||||||
|
url: "/pages/meeting/meetingRoom/meetingProtocol/meetingProtocol?title=" + _this.data.protocolTitle,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 提交订单
|
||||||
|
submitCase() {
|
||||||
|
let _this = this
|
||||||
|
// 参数校验
|
||||||
|
if (!_this.data.title) {
|
||||||
|
// 错误提示
|
||||||
|
Notify({
|
||||||
|
type: 'danger',
|
||||||
|
message: '请输入会议主题!'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!_this.data.protocolFlag) {
|
||||||
|
// 错误提示
|
||||||
|
Notify({
|
||||||
|
type: 'danger',
|
||||||
|
message: `请同意${_this.data.protocolTitle}!`
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
saveMeetingRecordRq({
|
||||||
|
"roomContentId": _this.data.meetingRoomId,
|
||||||
|
"userId": _this.data.userData.id,
|
||||||
|
"ticketId": _this.data.couponId,
|
||||||
|
"customerId": _this.data.userData.icsCustomerId,
|
||||||
|
"title": _this.data.title,
|
||||||
|
"startTime": _this.data.startTime,
|
||||||
|
"endDate": _this.data.endTime,
|
||||||
|
"orderMoney": _this.data.totalAmount,
|
||||||
|
}).then(res => {
|
||||||
|
console.log('saveMeetingRecordRq', res);
|
||||||
|
if (res.code == 0) {
|
||||||
|
wx.redirectTo({
|
||||||
|
url: "/pages/meeting/pay/waitPay/waitPay?id=" + res.reservationId,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
// 错误提示
|
||||||
|
Notify({
|
||||||
|
type: 'danger',
|
||||||
|
message: res.msg
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面初次渲染完成
|
||||||
|
*/
|
||||||
|
onReady() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面显示
|
||||||
|
*/
|
||||||
|
onShow() {
|
||||||
|
console.log('onShow');
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面隐藏
|
||||||
|
*/
|
||||||
|
onHide() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生命周期函数--监听页面卸载
|
||||||
|
*/
|
||||||
|
onUnload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||||||
|
*/
|
||||||
|
onPullDownRefresh() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 页面上拉触底事件的处理函数
|
||||||
|
*/
|
||||||
|
onReachBottom() {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户点击右上角分享
|
||||||
|
*/
|
||||||
|
onShareAppMessage() {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
10
miniprogram/pages/meeting/exhibition/order/order.json
Normal file
10
miniprogram/pages/meeting/exhibition/order/order.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"usingComponents": {
|
||||||
|
"van-icon": "@vant/weapp/icon/index",
|
||||||
|
"van-field": "@vant/weapp/field/index",
|
||||||
|
"van-dialog": "@vant/weapp/dialog/index",
|
||||||
|
"van-notify": "@vant/weapp/notify/index",
|
||||||
|
"van-checkbox": "@vant/weapp/checkbox/index"
|
||||||
|
},
|
||||||
|
"navigationBarTitleText": "预约信息"
|
||||||
|
}
|
62
miniprogram/pages/meeting/exhibition/order/order.wxml
Normal file
62
miniprogram/pages/meeting/exhibition/order/order.wxml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
<view class="containerView">
|
||||||
|
<!-- 轮播图 -->
|
||||||
|
<view class="swiperView">
|
||||||
|
<view class="tag">展厅</view>
|
||||||
|
<swiper class='swiper-box' indicator-dots autoplay interval="3000" duration="1000" circular='true'>
|
||||||
|
<swiper-item wx:for="{{bannerList}}" wx:key="index">
|
||||||
|
<image class="img" src="{{IMG_NAME + item}}" mode="aspectFill"></image>
|
||||||
|
</swiper-item>
|
||||||
|
</swiper>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 详细信息 -->
|
||||||
|
<view class="meetingDetailView">
|
||||||
|
<view class="detailView">
|
||||||
|
<view class="title">{{detail.capacityNum}}人间 | {{detail.roomName}} | {{detail.buildingName}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="priceView">
|
||||||
|
<view class="price">¥免费</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 内容 -->
|
||||||
|
<view class="contentView">
|
||||||
|
<view class="item">
|
||||||
|
<van-icon name="calendar-o" size="54rpx" />
|
||||||
|
<view class="time">{{selectDay}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="item">
|
||||||
|
<van-icon name="clock-o" size="54rpx" />
|
||||||
|
<view class="time">{{selectCountTime}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="item">
|
||||||
|
<van-icon name="contact-o" size="54rpx" />
|
||||||
|
<view class="time">{{userData.username}} {{userData.mobile}}</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 填写信息 -->
|
||||||
|
<view class="fillMsgView">
|
||||||
|
<view class="itemView">
|
||||||
|
<view class="label">会议主题</view>
|
||||||
|
<view class="content">
|
||||||
|
<van-field value="{{ title }}" placeholder="请输入会议主题" input-align="right" border="{{ false }}" bind:change="titleChange"/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 协议 -->
|
||||||
|
<view class="protocolView">
|
||||||
|
<van-checkbox value="{{ protocolFlag }}" bind:tap="protocolChange" icon-size="26rpx"></van-checkbox>
|
||||||
|
<view bind:tap="protocolChange">我已阅读并同意</view>
|
||||||
|
<view class="protocolTitle" bind:tap="jumpProtocol">{{protocolTitle}}</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 合计 -->
|
||||||
|
<view class="submitBtn">立即预约</view>
|
||||||
|
|
||||||
|
<!-- 提示 -->
|
||||||
|
<van-dialog id="van-dialog" />
|
||||||
|
<!-- 提示 -->
|
||||||
|
<van-notify id="van-notify" />
|
||||||
|
</view>
|
223
miniprogram/pages/meeting/exhibition/order/order.wxss
Normal file
223
miniprogram/pages/meeting/exhibition/order/order.wxss
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
.containerView {
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
overflow: auto;
|
||||||
|
padding-bottom: 100rpx;
|
||||||
|
background: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiperView {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiperView .tag {
|
||||||
|
position: absolute;
|
||||||
|
left: 22rpx;
|
||||||
|
top: 20rpx;
|
||||||
|
background: #76aef9;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 10rpx 40rpx;
|
||||||
|
border-top-right-radius: 6rpx;
|
||||||
|
border-bottom-right-radius: 6rpx;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box {
|
||||||
|
border-radius: 14rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
height: 358rpx;
|
||||||
|
margin: 0 22rpx;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 轮播小点点 */
|
||||||
|
.swiper-box .wx-swiper-dots.wx-swiper-dots-horizontal {
|
||||||
|
margin-left: 36%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot {
|
||||||
|
width: 20rpx;
|
||||||
|
display: inline-flex;
|
||||||
|
height: 5rpx;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot::before {
|
||||||
|
content: '';
|
||||||
|
flex-grow: 1;
|
||||||
|
background: rgba(255, 255, 255, 0.8);
|
||||||
|
border-radius: 0rpx
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot-active::before {
|
||||||
|
background: #ff3333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-box .wx-swiper-dot-active {
|
||||||
|
width: 40rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin: 30rpx 22rpx;
|
||||||
|
padding: 0 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .detailView {
|
||||||
|
flex: 1;
|
||||||
|
word-break: break-all;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .detailView .title {
|
||||||
|
font-size: 32rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .detailView .itemList {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 14rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .detailView .itemList .item {
|
||||||
|
margin-right: 12rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .priceView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: flex-end;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .priceView .price {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #c3c3c3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.meetingDetailView .priceView .unit {
|
||||||
|
font-size: 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentView {
|
||||||
|
border-top: 1px solid rgb(126, 126, 126, 0.2);
|
||||||
|
border-bottom: 1px solid rgb(126, 126, 126, 0.2);
|
||||||
|
margin: 30rpx 22rpx 0;
|
||||||
|
padding: 20rpx 16rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentView .item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: start;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentView .item:first-of-type {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contentView .item .time {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView {}
|
||||||
|
|
||||||
|
.fillMsgView .itemView {
|
||||||
|
border-bottom: 1px solid rgb(126, 126, 126, 0.2);
|
||||||
|
padding: 0 38rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
height: 100rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView .itemView .label {
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView .itemView .content {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView .itemView .content .coupon {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView .itemView .content .coupon.select {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fillMsgView .itemView .content .price {
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.protocolView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
margin: 40rpx 0 50rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.protocolTitle {
|
||||||
|
color: #76aef9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 38rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView .priceView {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-start;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView .priceView .title {
|
||||||
|
font-size: 32rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView .priceView .price {
|
||||||
|
color: red;
|
||||||
|
font-size: 34rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView .priceView .describe {
|
||||||
|
color: red;
|
||||||
|
font-size: 28rpx;
|
||||||
|
margin-left: 6rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.amountView .caseBtn {
|
||||||
|
border-radius: 10rpx;
|
||||||
|
padding: 16rpx 60rpx;
|
||||||
|
color: white;
|
||||||
|
font-size: 30rpx;
|
||||||
|
background: #4e96f8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user