修改会议

会议功能调试,加入首页,修改列表页
This commit is contained in:
unknown 2024-09-13 17:09:25 +08:00
parent 9ed8798786
commit 96629fa202
9 changed files with 475 additions and 102 deletions

View File

@ -47,6 +47,7 @@
"pages/my/serviceApply/serviceApply", "pages/my/serviceApply/serviceApply",
"pages/complaint/complaintDetail/complaintDetail", "pages/complaint/complaintDetail/complaintDetail",
"pages/outer/outer", "pages/outer/outer",
"pages/meeting/index/index",
"pages/meeting/accessControl/accessControl", "pages/meeting/accessControl/accessControl",
"pages/meeting/accessControl/accessControlRecord/accessControlRecord", "pages/meeting/accessControl/accessControlRecord/accessControlRecord",
"pages/meeting/meetingReservation/meetingReservation", "pages/meeting/meetingReservation/meetingReservation",

View File

@ -113,11 +113,11 @@ Page({
img: "/profile/static/index/menu-bxfw.png", img: "/profile/static/index/menu-bxfw.png",
path: "/pages/reportRepair/index/index" path: "/pages/reportRepair/index/index"
}, },
// { {
// name: "会议预约", name: "会议预约",
// img: "/profile/static/index/menu-hyyy.png", img: "/profile/static/index/menu-hyyy.png",
// // path: "/pages/meeting/meetingReservation/meetingReservation" path: "/pages/meeting/index/index"
// }, },
// { // {
// name: "展厅预约", // name: "展厅预约",
// img: "/profile/static/index/menu-ztyy.png", // img: "/profile/static/index/menu-ztyy.png",

View File

@ -0,0 +1,148 @@
const app = getApp()
import Notify from '@vant/weapp/notify/notify';
Page({
/**
* 页面的初始数据
*/
data: {
IMG_NAME: app.IMG_NAME,
userDetail: {},
menuList: [{
type: "report",
name: "会议预约",
img: "/profile/static/repair/index/my.png",
path: "/pages/meeting/meetingReservation/meetingReservation",
visible: true
}, {
type: "query",
name: "预约记录",
img: "/profile/static/repair/index/query.png",
path: "/pages/meeting/reservationRecord/meetingRecord/meetingRecord",
visible: true
}, {
type: "assign",
name: "会议审核",
img: "/profile/static/repair/index/case.png",
path: "/pages/meeting/visitorIinvitation/list/list",
visible: false
}, {
type: "repair",
name: "会务服务",
img: "/profile/static/repair/index/repair.png",
path: "/pages/reportRepair/repair/index/index",
visible: false
}]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
let _this = this
let userDetail = wx.getStorageSync('user')
_this.setData({
userDetail
})
// 展示模块
_this.visibleBlock()
},
// 跳转菜单
jumpMenu(e) {
console.log('jumpMenu', e);
let obj = e.currentTarget.dataset.obj
console.log(obj.path)
if (obj.visible) {
wx.navigateTo({
url: obj.path,
})
} else {
app.vantNotifyErrTop(Notify, `"${obj.name}"无权限访问!`)
return
}
},
// 展示模块
visibleBlock() {
let _this = this
let userDetail = _this.data.userDetail
let dataType = userDetail.dataType
let menuList = _this.data.menuList
// 角色类型 1.普通用户3派单员5维修工7管理员 , 9楼层
// if (dataType == 3 || dataType == 7) { // 展示-派单入口,仅有派单员、管理员能进
// menuList = menuList.map(item => {
// if (item.type == 'assign') {
// item.visible = true
// }
// return item
// })
// }
// if (dataType == 5) { // 展示-维修入口
// menuList = menuList.map(item => {
// if (item.type == 'repair') {
// item.visible = true
// }
// return item
// })
// }
// _this.setData({
// menuList
// })
},
back() {
wx.navigateBack()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,7 @@
{
"navigationStyle": "custom",
"usingComponents": {
"van-icon": "@vant/weapp/icon/index",
"van-notify": "@vant/weapp/notify/index"
}
}

View File

@ -0,0 +1,32 @@
<view class="containerView public">
<view class="topHead">
<view class="maskView1"></view>
<view class="maskView2" style="background: no-repeat center/cover url({{IMG_NAME + '/profile/static/repair/index/person.png'}});"></view>
<view class="maskView3"></view>
<view class="homeView" bind:tap="back">
<van-icon name="wap-home-o" size="30rpx" color="#ffffff"/>
</view>
<view class="title">会议系统</view>
<view class="contentView">
<view class="label1">欢迎进入</view>
<view class="label2">淮安市行政中心会议管理系统</view>
</view>
<view class="logo" style="background: no-repeat center/cover url({{IMG_NAME + '/profile/static/repair/index/logo.png'}});"></view>
</view>
<view class="menuContainerView">
<view class="menuView" wx:for="{{menuList}}" wx:key="*this" bind:tap="jumpMenu" data-obj="{{item}}">
<view class="menuImg" style="background: no-repeat center/cover url({{IMG_NAME + item.img}});"></view>
<view class="menuTitle">{{item.name}}</view>
</view>
</view>
<!-- <view class="ownership">{{ownership}}</view> -->
</view>
<!-- 消息通知 -->
<van-notify id="van-notify" />

View File

@ -0,0 +1,146 @@
.topHead {
position: relative;
height: 639rpx;
}
.topHead .maskView1 {
position: absolute;
z-index: 1;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: #4c81e5;
opacity: 87%;
border-bottom-left-radius: 96rpx;
border-bottom-right-radius: 96rpx;
}
.topHead .maskView2 {
position: absolute;
z-index: 2;
right: 0;
top: 187rpx;
width: 446rpx;
height: 452rpx;
}
.topHead .maskView3 {
position: absolute;
z-index: 3;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: #4c81e5;
opacity: 85%;
border-bottom-left-radius: 96rpx;
border-bottom-right-radius: 96rpx;
}
.topHead .homeView{
position: absolute;
z-index: 4;
left: 40rpx;
top: 100rpx;
border-radius: 50rpx;
width: 50rpx;
height: 50rpx;
display: flex;
justify-content: center;
align-items: center;
background: #4b71be;
}
.topHead .title {
position: absolute;
z-index: 4;
left: 50%;
top: 120rpx;
transform: translateX(-50%);
font-size: 32rpx;
color: #FFFFFF;
line-height: 1rpx;
text-align: left;
}
.topHead .contentView {
position: absolute;
z-index: 4;
left: 0;
top: 280rpx;
padding-left: 58rpx;
}
.topHead .contentView .label1 {
font-size: 57rpx;
color: #FFFFFF;
line-height: 1;
font-weight: 700;
}
.topHead .contentView .label2 {
font-size: 33rpx;
color: #FFFFFF;
line-height: 1;
margin-top: 40rpx;
font-weight: 700;
}
.topHead .logo {
position: absolute;
z-index: 4;
left: 50%;
bottom: -140rpx;
transform: translateX(-50%);
width: 250rpx;
height: 250rpx;
}
.menuContainerView {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
padding: 150rpx 80rpx 0;
}
.menuContainerView .menuView {
width: 260rpx;
height: 260rpx;
border-radius: 10rpx;
box-shadow: -2px 2px 10px 0 rgba(102, 116, 166, 0.2);
flex-shrink: 0;
margin-bottom: 80rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.menuContainerView .menuView .menuImg {
width: 140rpx;
height: 140rpx;
}
.menuContainerView .menuView .menuTitle {
font-size: 32rpx;
color: #4B6291;
font-weight: 600;
line-height: 1;
margin-top: 20rpx;
}
.ownership {
position: absolute;
left: 0;
bottom: 34rpx;
width: 100%;
word-break: break-all;
text-align: center;
font-size: 22rpx;
color: #878787;
}

View File

@ -15,6 +15,7 @@ Page({
data: { data: {
IMG_NAME: app.IMG_NAME, IMG_NAME: app.IMG_NAME,
roomDataList: [], roomDataList: [],
roomDataNew: {},
queryParam: { queryParam: {
meetingTypeDict: { meetingTypeDict: {
list: [], list: [],
@ -65,7 +66,7 @@ Page({
} }
}) })
list = [{ list = [{
text: "类型", text: "楼层",
value: null value: null
}, ...list] }, ...list]
// 赋值参数 // 赋值参数
@ -203,6 +204,19 @@ Page({
// 会议室列表数据 // 会议室列表数据
meetingRoomListRq(param).then(res => { meetingRoomListRq(param).then(res => {
console.log('meetingRoomListRq', res); console.log('meetingRoomListRq', res);
let roomArr = {}
let valueObj = res.rows
for(let key in valueObj) {
let eachObj = valueObj[key]
if (eachObj['type'] in roomArr) {
} else {
roomArr[eachObj['type']] = {
name: eachObj['typeName'],
list: []
}
}
roomArr[eachObj['type']]['list'].push(eachObj)
}
let roomDataList = res.rows.map(item => { let roomDataList = res.rows.map(item => {
if (item.indoorPicUrl) { if (item.indoorPicUrl) {
try { try {
@ -214,7 +228,8 @@ Page({
return item return item
}) })
_this.setData({ _this.setData({
roomDataList roomDataList,
roomDataNew: roomArr
}) })
}) })
}, },

View File

@ -1,46 +1,43 @@
<view class="containerView public"> <view class="containerView public">
<!-- 筛选条件 --> <!-- 筛选条件 -->
<view class="queryView"> <view class="queryView">
<van-dropdown-menu active-color="#4e96f8"> <van-dropdown-menu active-color="#4e96f8">
<!-- 字典-会议室 --> <!-- 字典-会议室 -->
<van-dropdown-item value="{{ queryParam.meetingTypeDict.value }}" options="{{ queryParam.meetingTypeDict.list }}" bind:change="dictChange" data-type="meetingTypeDict" /> <van-dropdown-item value="{{ queryParam.meetingTypeDict.value }}" options="{{ queryParam.meetingTypeDict.list }}" bind:change="dictChange" data-type="meetingTypeDict" />
<!-- 字典-人数 --> <!-- 字典-人数 -->
<van-dropdown-item value="{{ queryParam.personDict.value }}" options="{{ queryParam.personDict.list }}" bind:change="dictChange" data-type="personDict" /> <van-dropdown-item value="{{ queryParam.personDict.value }}" options="{{ queryParam.personDict.list }}" bind:change="dictChange" data-type="personDict" />
<!-- 字典-设备 --> <!-- 字典-设备 -->
<van-dropdown-item id="itemSelect" title="{{ queryParam.itemDict.title }}"> <van-dropdown-item id="itemSelect" title="{{ queryParam.itemDict.title }}">
<van-cell title="{{ item.text }}" wx:for="{{queryParam.itemDict.list}}" wx:key="*this"> <van-cell title="{{ item.text }}" wx:for="{{queryParam.itemDict.list}}" wx:key="*this">
<van-switch slot="right-icon" size="24px" style="height: 26px" checked="{{ item.select }}" active-color="#3c8bf2" bind:change="dictSwitchChange" data-name="{{item.text}}" data-id="{{item.value}}" /> <van-switch slot="right-icon" size="24px" style="height: 26px" checked="{{ item.select }}" active-color="#3c8bf2" bind:change="dictSwitchChange" data-name="{{item.text}}" data-id="{{item.value}}" />
</van-cell> </van-cell>
<view style="padding:30rpx;"> <view style="padding:30rpx;">
<van-button type="danger" block round bind:click="itemDictConfirm" color="#3c8bf2">收起</van-button> <van-button type="danger" block round bind:click="itemDictConfirm" color="#3c8bf2">收起</van-button>
</view> </view>
</van-dropdown-item> </van-dropdown-item>
<!-- 字典-形式 --> <!-- 字典-形式 -->
<van-dropdown-item value="{{ queryParam.shapeDict.value }}" options="{{ queryParam.shapeDict.list }}" bind:change="dictChange" data-type="shapeDict" /> <van-dropdown-item value="{{ queryParam.shapeDict.value }}" options="{{ queryParam.shapeDict.list }}" bind:change="dictChange" data-type="shapeDict" />
</van-dropdown-menu> </van-dropdown-menu>
</view> </view>
<view class="meetingRoomView">
<!-- 会议室列表 --> <view wx:for="{{roomDataNew}}">
<view class="meetingRoomView"> <view class="roomType">{{item.name}}</view>
<view class="meetingRoomItem" bind:tap="jumpMeetingRoom" wx:for="{{roomDataList}}" wx:for-item="room" wx:key="*this" data-id="{{room.id}}"> <view class="meetingRoomItem" bind:tap="jumpMeetingRoom" wx:for="{{item.list}}" wx:for-item="room" wx:key="*this" data-id="{{room.id}}">
<view class="content"> <view class="content">
<view class="title">{{room.capacityNum}}人间 | {{room.roomName}} | {{room.buildingName}}</view> <view class="title">{{room.roomName}}</view>
<view class="articleView"> <view class="priceView">
<view class="article" wx:for="{{room.roomItemList}}" wx:for-item="roomItem" wx:key="*this">#{{roomItem.name}}</view> <view class="unit">{{room.capacityNum}}人 {{room.shape}}</view>
</view> </view>
<view class="propOpen"></view> </view>
<view class="priceView"> <!-- <view class="imgView">
<view class="unit">{{room.shape}}</view>
</view>
</view>
<view class="imgView">
<view class="title">{{room.meetingName}}</view> <view class="title">{{room.meetingName}}</view>
<image class="img" src="{{IMG_NAME + room.indoorPicUrlFirst}}" mode="aspectFill" /> <image class="img" src="{{IMG_NAME + room.indoorPicUrlFirst}}" mode="aspectFill" />
</view> </view> -->
</view> </view>
<view style="clear: both;"></view>
</view> </view>
</view>
<van-notify id="van-notify" /> <van-notify id="van-notify" />
</view> </view>

View File

@ -1,102 +1,129 @@
.queryView {
.queryView{ position: fixed;
position: fixed; left: 0;
left: 0; top: 0;
top: 0; z-index: 1;
z-index: 1; width: 100%;
width: 100%;
} }
.meetingRoomView { .meetingRoomView {
margin-top: 100rpx; margin-top: 100rpx;
padding: 30rpx 30rpx; padding: 30rpx 30rpx;
} }
.meetingRoomView .meetingRoomItem { .meetingRoomView .meetingRoomItem {
display: flex; /* display: inline-block; */
justify-content: space-between; width: 33%;
align-items: center; float: left;
margin-top: 30rpx; justify-content: space-between;
padding-bottom: 30rpx; align-items: center;
border-bottom: 1px solid rgb(126, 126, 126, 0.3); margin-top: 30rpx;
padding-bottom: 30rpx;
/* border-bottom: 1px solid rgb(126, 126, 126, 0.3); */
} }
.meetingRoomView .meetingRoomItem .content { .meetingRoomView .meetingRoomItem .content {
display: flex; position: relative;
flex-direction: column; width: 85%;
justify-content: start; margin: 0px auto;
align-items: flex-start; height: 180rpx;
height: 180rpx; border: 1px solid #A3CDFF;
background-color: #A3CDFF;
}
.meetingRoomView .meetingRoomItem .disabled {
border: 1px solid #F2F2F2;
background-color: #F2F2F2;
} }
.meetingRoomView .meetingRoomItem .content .title { .meetingRoomView .meetingRoomItem .content .title {
font-size: 32rpx; font-size: 40rpx;
color: black; font-weight: 700;
color: black;
text-align: center;
margin-top: 40rpx;
} }
.meetingRoomView .meetingRoomItem .content .articleView { .meetingRoomView .meetingRoomItem .content .articleView {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: start; justify-content: start;
align-items: center; align-items: center;
margin-top: 18rpx; margin-top: 18rpx;
} }
.meetingRoomView .meetingRoomItem .content .articleView .article { .meetingRoomView .meetingRoomItem .content .articleView .article {
font-size: 28rpx; font-size: 28rpx;
color: gray; color: gray;
margin-left: 10rpx; margin-left: 10rpx;
} }
.meetingRoomView .meetingRoomItem .content .articleView .article:first-child { .meetingRoomView .meetingRoomItem .content .articleView .article:first-child {
margin-left: 0; margin-left: 0;
} }
.meetingRoomView .meetingRoomItem .content .propOpen { .meetingRoomView .meetingRoomItem .content .propOpen {
flex: 1; flex: 1;
} }
.meetingRoomView .meetingRoomItem .content .priceView { .meetingRoomView .meetingRoomItem .content .priceView {
display: flex; position: absolute;
justify-content: start; bottom: 0;
align-items: center; left: 0;
right: 0;
height: 50rpx;
line-height: 50rpx;
text-align: center;
background-color: #D8E9FC;
color: #000;
}
.meetingRoomView .meetingRoomItem .disabled .priceView {
background-color: #F2F2F2 !important;
} }
.meetingRoomView .meetingRoomItem .content .priceView .price { .meetingRoomView .meetingRoomItem .content .priceView .price {
font-size: 32rpx; font-size: 32rpx;
color: red; color: red;
font-weight: bold; font-weight: bold;
} }
.meetingRoomView .meetingRoomItem .content .priceView .unit { .meetingRoomView .meetingRoomItem .content .priceView .unit {
font-size: 24rpx; font-size: 24rpx;
color: gray; color: #333;
} }
.meetingRoomView .meetingRoomItem .imgView { .meetingRoomView .meetingRoomItem .imgView {
position: relative; position: relative;
width: 320rpx; width: 320rpx;
height: 180rpx; height: 180rpx;
} }
.meetingRoomView .meetingRoomItem .imgView .title { .meetingRoomView .meetingRoomItem .imgView .title {
position: absolute; position: absolute;
left: 0; left: 0;
top: 16rpx; top: 16rpx;
background: #76aef9; background: #76aef9;
font-size: 24rpx; font-size: 24rpx;
color: white; color: white;
font-weight: bold; font-weight: bold;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
border-top-right-radius: 6rpx; border-top-right-radius: 6rpx;
border-bottom-right-radius: 6rpx; border-bottom-right-radius: 6rpx;
} }
.meetingRoomView .meetingRoomItem .imgView .img { .meetingRoomView .meetingRoomItem .imgView .img {
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 10rpx; border-radius: 10rpx;
}
.roomType {
width: 100%;
padding: 15rpx 30rpx;
font-weight: 700;
font-size: 32rpx;
} }