Files
zhxg_app_v1.0/pages/functionRoom/functionRoom.vue
2025-07-16 15:34:34 +08:00

378 lines
8.1 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>
<view class="functionroom">
<view class="pic">
<image src="../../static/functionpic.png" mode="aspectFit"></image>
</view>
<view class="condition">
<text class="title">活动室</text>
<view class="sum">
<view>
<text>40</text>
<text> /</text>
</view>
<text>未使用</text>
</view>
</view>
<view class="btn">
<text>使用事项</text>
<view class="item">
<text>1遵守社区功能房使用规则</text>
</view>
<view class="item">
<text>2不恶意破坏功能房设备</text>
</view>
<view class="item">
<text>3使用完要打扫好环境</text>
</view>
</view>
<view class="bottom-container">
<button @click="showPopup">立即预约</button>
</view>
<zwy-popup :ishide="popupVisible">
<view class="count">
<!-- 主题 -->
<view class="form-item">
<text>主题</text>
<input type="text" placeholder="请输入" v-model="theme" />
</view>
<!-- 参与人员 -->
<view class="form-item">
<text>参与人员</text>
<input type="text" placeholder="请输入" v-model="participants" />
</view>
<!-- 人员类型 -->
<view class="form-item">
<text>人员类型</text>
<view class="type">
<uni-data-select class="type" v-model="selectedType" :localdata="range" @change="change"
placeholder="请选择参与人员类型"></uni-data-select>
</view>
</view>
<!-- 预约用途 -->
<view class="form-item">
<text>预约用途</text>
<view class="type">
<uni-data-select class="type" v-model="selectedPurpose" :localdata="purpose" @change="change"
placeholder="请选择用途"></uni-data-select>
</view>
</view>
<!-- 预约时间段 -->
<view class="form-item">
<text>预约时间段</text>
<view class="times">
<view class="">
开始时间
</view>
<view class="top">
<picker mode="date" :range="startDate" @change="bindDateChange">
<view>{{startDate}}</view>
</picker>
</view>
<view class="">
结束时间
</view>
<view class="botton">
<picker mode="date" :range="endDate" @change="bindEndDateChange">
<view>{{endDate}}</view>
</picker>
</view>
</view>
</view>
<view class="bottom-container">
<button>提交</button>
</view>
</view>
<view class="xclose" :style="closeButtonStyle" @click="closeModal">
<image src="../../static/取消.png" mode=""></image>
</view>
</zwy-popup>
</view>
</template>
<script>
export default {
data() {
return {
popupVisible: false, // 控制弹窗显示隐藏的变量
value: 0,
Type: "", //一开始为空
purposeType: "", //一开始为空
theme: '', // 主题
participants: '', // 参与人员
selectedType: '', // 人员类型
selectedPurpose: '', // 预约用途
selectedStartTime: '', // 开始时间
selectedEndTime: '' ,// 结束时间
startDate: this.getDate(),
endDate: this.getDate(),
range: [{
value: 0,
text: "学生"
},
{
value: 1,
text: "教师"
},
{
value: 2,
text: "领导"
},
],
purpose: [{
value: 0,
text: "会议"
},
{
value: 1,
text: "健身"
},
{
value: 2,
text: "游泳"
}
]
};
},
computed: {
// 关闭按钮样式
closeButtonStyle() {
return `position: absolute; bottom: -50px; left: 50%; transform: translateX(-50%); z-index:${this.zindex + 1};`
}
},
methods: {
closeModal() {
// 触发关闭弹窗事件
this.popupVisible = !this.popupVisible
},
// 控制弹窗显示
showPopup() {
this.popupVisible = true;
},
change(e) {
console.log("e:", e);
},
getDate() {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
},
bindDateChange: function(e) {
this.startDate = e.detail.value;
},
bindEndDateChange: function(e) {
this.endDate = e.detail.value;
}
},
};
</script>
<style lang="scss" scoped>
.functionroom {
background-color: #e2e2e2;
position: relative;
.pic {
background-color: #F8F8F8;
height: 600rpx;
border: 1px solid #d7d7d7;
border-radius: 5px;
display: flex;
justify-content: center;
align-items: center;
image {
// margin-top: 20rpx;
// background-color: red;
width: 300px;
height: 500rpx;
border: 1px solid #d5d5d5;
}
}
.condition {
margin: 25rpx 0;
background-color: #F8F8F8;
padding: 30rpx;
.title {
font-size: 36rpx;
// font-weight: bold;
}
.sum {
margin-top: 10rpx;
display: flex;
justify-content: space-between;
text:first-child {
color: red;
margin-right: 10rpx;
}
}
}
.btn {
// margin-top: 25rpx;
background-color: #F8F8F8;
height: 600rpx;
padding: 30rpx;
.item {
margin-top: 20rpx;
padding: 5rpx;
}
}
.bottom-container {
position: fixed;
width: 100%;
bottom: 0;
button {
display: flex;
justify-content: center;
align-items: center;
height: 120rpx;
width: 100%;
font-size: 45rpx;
background-color: #2893d9;
color: white;
}
}
.popup {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 9999;
.popup-box {
background-color: #fff;
width: 80%;
height: 40%;
margin: 60% auto 0rpx; // 居中显示弹窗内容
padding: 20rpx; // 添加一些内边距,使内容不会紧贴边缘
border-radius: 10rpx; // 添加一些圆角,使内容更美观
box-sizing: border-box; // 确保内边距不会影响内容宽度和高度
overflow: auto; // 添加滚动条,如果内容超出弹窗框的高度
box-shadow: 0 0 10rpx rgba(0, 0, 0, 0.5); // 添加一些阴影,使内容更突出
.btn-box {
display: flex; // 使用flex布局使按钮水平排列
justify-content: space-between; // 使按钮平均分布,两端对齐
align-items: center;
.btn {
margin-top: 80rpx;
width: 200rpx;
height: 80rpx;
line-height: 80rpx;
}
.cancel {
background-color: #fff;
color: #000;
border-radius: 10rpx; // 添加一些圆角,使内容更美观
border: 1rpx solid #ccc; // 添加一些边框,使内容更突出
text-align: center;
}
.confirm {
background-color: #1BA035;
color: #fff; // 添加一些内边距,使内容不会紧贴边缘
border-radius: 10rpx; // 添加一些边框,使内容更突出
text-align: center;
}
}
}
}
.count {
width: 86.5vw;
position: absolute;
padding: 60rpx;
.form-item {
width: 100%;
height: 80rpx;
display: flex;
align-items: center;
margin-bottom: 50rpx;
justify-content: space-between;
// border-bottom: 1px solid #ededee;
input {
border: 1px solid #b1b1b1;
padding: 10rpx 10px 10rpx;
}
.type {
width: 392rpx;
}
.times {
margin-top: 220rpx;
width: 360rpx;
// height: 200rpx;
// display: flex;
// align-items: center;
// justify-content: center;
// background-color: #ffffff;
// text-align: center;
// justify-content: space-between;
margin-bottom: 100rpx;
.top {
border: 1px solid #b1b1b1;
margin: 10rpx 0;
}
.botton {
margin: 10rpx 0;
border: 1px solid #b1b1b1;
}
}
}
.bottom-container {
position: fixed;
width: 95%;
bottom: 100rpx;
left: 50%;
transform: translateX(-50%);
button {
padding: 15rpx;
color: #000;
height: 40px;
font-size: 30rpx;
width: 90%;
// height: 100rpx;
background-color: rgba(0, 0, 0, 0);
border: 1px solid #b1b1b1;
}
}
}
.xclose {
image {
width: 60rpx;
height: 60rpx;
color: white;
}
cursor: pointer;
}
}
</style>