Files
admin-vben5/apps/web-antd/src/views/property/roomBooking/conferenceReservations/index.vue

176 lines
4.0 KiB
Vue
Raw Normal View History

2025-06-19 16:54:36 +08:00
<template>
2025-07-05 17:47:26 +08:00
<div>
2025-07-07 16:31:20 +08:00
<div>请先填写以下信息查询可用会议室</div>
<a-form
:model="formState"
layout="inline"
@finish="onFinish"
@finishFailed="onFinishFailed"
class="form-box"
>
<a-form-item label="会议日期">
<a-date-picker
v-model:value="formState.username"
show-time
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择"
style="width: 330px; margin-right: 50px"
/>
</a-form-item>
<a-form-item label="参会人数" style="width: 400px;">
<a-input placeholder="请输入" v-model:value="formState.username"/>
</a-form-item>
<a-form-item class="form-button">
2025-07-07 17:24:28 +08:00
<a-button @click="handleClean">重置</a-button>
<a-button type="primary" class="primary-button" @click="handleSearch">搜索</a-button>
2025-07-07 16:31:20 +08:00
</a-form-item>
</a-form>
2025-07-05 17:47:26 +08:00
<div class="card-box">
<div v-for="(item,index) in meetingList" :key="index" class="card-list">
2025-07-07 17:24:28 +08:00
<div><span class="card-title">{{ item.one }}</span><a-button class="card-button" type="primary" @click="handleAdd(item.id)">去预约</a-button></div>
2025-07-05 17:47:26 +08:00
<div>容纳人数: {{ item.two }}</div>
<div>基础费用: {{ item.three }}</div>
2025-07-07 16:31:20 +08:00
<div>基础设备: {{ item.four }}</div>
2025-07-05 17:47:26 +08:00
<div>基础服务: {{ item.five }}</div>
</div>
</div>
2025-07-07 16:31:20 +08:00
<modal/>
2025-07-05 17:47:26 +08:00
</div>
2025-06-19 16:54:36 +08:00
</template>
2025-07-05 17:47:26 +08:00
2025-07-07 16:31:20 +08:00
<script setup lang="ts">
2025-07-05 17:47:26 +08:00
import { ref } from 'vue'
2025-07-07 16:31:20 +08:00
import { reactive } from 'vue';
import { useVbenModal } from '@vben/common-ui';
import {
Form as AForm,
FormItem as AFormItem,
Input as AInput,
Button as AButton,
DatePicker as ADatePicker,
RangePicker as ARangePicker
} from 'ant-design-vue';
import conferenceAddServicesModal from '../conferenceReservations/conferenceReservations-modal.vue';
2025-07-07 17:24:28 +08:00
import {attachInfo} from "#/api/property/roomBooking/conferenceAddServices";
2025-07-07 16:31:20 +08:00
interface FormState {
username: string;
password: string;
}
const formState = reactive<FormState>({
username: '',
password: '',
});
2025-07-07 17:24:28 +08:00
async function handleSearch() {
const obj = {
...formState,
}
const response = await attachInfo(obj);
meetingList.value = response.rows;
}
const handleClean = () =>{
formState.username = '';
formState.password = '';
}
2025-07-07 16:31:20 +08:00
const [modal, modalApi] = useVbenModal({
connectedComponent: conferenceAddServicesModal,
});
2025-07-07 17:24:28 +08:00
2025-07-07 16:31:20 +08:00
function handleAdd() {
2025-07-07 17:24:28 +08:00
modalApi.setData({id: row.id});
2025-07-07 16:31:20 +08:00
modalApi.open();
}
const onFinish = (values: any) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
2025-07-07 17:24:28 +08:00
2025-07-05 17:47:26 +08:00
const meetingList = ref([
{
one: '10楼1002会议室',
two: 50,
three: 300,
four: '话筒、音响、大屏',
five: '开水、基础保洁'
},
{
one: '10楼1002会议室',
two: 50,
three: 300,
four: '话筒、音响、大屏',
five: '开水、基础保洁'
},
{
one: '10楼1002会议室',
two: 50,
three: 300,
four: '话筒、音响、大屏',
five: '开水、基础保洁'
},
{
one: '10楼1002会议室',
two: 50,
three: 300,
four: '话筒、音响、大屏',
five: '开水、基础保洁'
},
])
</script>
<style lang="scss">
2025-07-07 16:31:20 +08:00
.form-box{
width: 100%;
padding: 30px 30px 0 30px;
position: relative;
.form-button{
position: absolute;
right: 30px;
.primary-button{
margin-left: 15px;
}
}
}
2025-07-05 17:47:26 +08:00
.card-box{
width: 100%;
background-color: transparent;
padding: 30px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 30px;
border: none;
.card-list{
padding: 15px;
background-color: white;
border: 1px solid gray;
border-radius: 10px;
position: relative;
.card-title{
2025-07-07 16:31:20 +08:00
font-size: 25px;
2025-07-05 17:47:26 +08:00
font-weight: bold;
}
div{
2025-07-07 16:31:20 +08:00
margin: 0.5vw 0;
2025-07-05 17:47:26 +08:00
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
2025-07-07 16:31:20 +08:00
max-width: 300px;
2025-07-05 17:47:26 +08:00
.card-button{
right: 15px;
position: absolute;
}
}
}
}
</style>