From 44dd2c7c73d5fead948902cad2695ae30d4620e2 Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期四, 24 十月 2024 09:50:29 +0800 Subject: [PATCH] 大屏 --- h5/pages/staff/meetingSubOrder.vue | 706 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 361 insertions(+), 345 deletions(-) diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue index a99b6a1..f8807b0 100644 --- a/h5/pages/staff/meetingSubOrder.vue +++ b/h5/pages/staff/meetingSubOrder.vue @@ -1,345 +1,361 @@ -<template> - <view class="main_app"> - <view class="module_list"> - <view class="item"> - <view class="name">浼氳鏃堕棿</view> - <view class="line" @click="handleBack"> - <view class="label"> - {{ param.activeDate || param.meetingDate }} - <text class="ml12" v-if="!param.id">{{ param.startTime }}-{{ param.endTime }}</text> - <text class="ml12" v-if="param.id">{{ param.meetingTime }}</text> - </view> - <u-icon name="arrow-right" color="#999999" size="14" /> - </view> - </view> - <view class="item"> - <view class="name">浼氳瀹�</view> - <view class="line"> - <view class="label">{{ param.roomName }}(鍙绾硔{ param.limitNum }}浜�)</view> - </view> - </view> - <view class="item"> - <view class="name">棰勭害浜�</view> - <view class="line"> - <view class="label">{{ userInfo.realname }}</view> - </view> - </view> - <view class="empty"></view> - <view class="item"> - <view class="name"> - <text>浼氳涓婚</text> - <text class="star">*</text> - </view> - <view class="line"> - <input - type="text" - v-model="param.name" - placeholder="璇疯緭鍏ヤ細璁富棰�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - <view class="item"> - <view class="name"> - <text>浼氳鍐呭</text> - </view> - <view class="line"> - <u-textarea - border="none" - v-model="param.content" - count - :maxlength="300" - placeholder="璇疯緭鍏ヤ細璁唴瀹�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - <view class="empty"></view> - <view class="item"> - <view class="name"> - 鍙備細浜哄憳 - <text class="star"></text> - </view> - <view class="line" @click="selPeople"> - <view class="label"> - <text v-if="param.sysList && param.sysList.length > 0"> - {{ param.sysList.map((i) => i.realname).join(",") }} - </text> - <text - v-else - class="placeholder9" - >璇烽�夋嫨</text - > - </view> - <u-icon - name="arrow-right" - color="#999999" - size="14" - /> - </view> - </view> - <view class="item" v-if="info.projectList && info.projectList.length > 0"> - <view class="name">閫夋嫨鏈嶅姟椤�</view> - <view class="line"> - <view class="label"> - <view - class="service_item" - :class="{ active: item.checked }" - v-for="(item, index) in info.projectList" - :key="index" - @click="serviceClick(item)" - > - {{ item.projectName }} - </view> - </view> - </view> - </view> - <view class="item"> - <view class="name"> - <text>澶囨敞</text> - </view> - <view class="line"> - <textarea - v-model="param.remark" - :maxlength="-1" - placeholder="璇疯緭鍏�" - placeholder-class="placeholder9" - class="label" - /> - </view> - </view> - - <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view> - <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view> - </view> - </view> -</template> - -<script> -import { - reservationMeeting, - getRoomDetail, - meetingDetail, - updateById, - getAppRoomDetail -} from '@/api' -import dayjs from 'dayjs' -export default { - data() { - return { - param: {}, - userInfo: uni.getStorageSync('userInfo'), - info: {}, - } - }, - onLoad(option) { - if (option.id) { - uni.setNavigationBarTitle({ - title: '浼氳璇︽儏' - }) - this.getDetail(option.id) - } - }, - mounted() { - this.$eventBus.$on('meetingPeo', (res) => { - this.$set(this.param, 'sysList', res.map(i => { - i.userId = i.id - return i - })) - // this.$set(this.param, 'memberIds', res.map(i => i.id).join(',')) - // this.$set(this.param, 'memberNames', res.map(i => i.name).join(',')) - }) - this.$eventBus.$on('meetingSub', (res) => { - this.param = { ...res } - this.$set(this.param, 'activeDate', dayjs(res.yudingDate).format('YYYY骞碝鏈圖鏃�')) - const bookingTimeList = res.bookingTimeList.split(',').map(i => { - return { - timeId: Number(i) - } - }) - this.$set(this.param, 'bookingTimeList', bookingTimeList) - this.initOption() - }) - }, - methods: { - getDetail(id) { - meetingDetail({ id }).then(res => { - this.param = { ...res.data,name: res.data.meetingName, content: res.data.meetingContent, sysList: res.data.userResponseList } - // this.param = { ...res.data } - if(this.param.sysList && this.param.sysList.length > 0){ - this.param.sysList.forEach(i => { - i.userId = i.id - }) - } - getRoomDetail({ roomId: res.data.roomId }).then(ress => { - this.info = ress.data - if (this.info && this.info.projectList) { - this.info.projectList.forEach(i => { - i.checked = false - if(res.data.projectsResponseList && res.data.projectsResponseList.length > 0){ - res.data.projectsResponseList.forEach(item2 => { - if(i.projectId === item2.id){ - i.checked = true - } - }) - } - }) - } - }) - }) - }, - onUpdate() { - const { param, info } = this - if (!param.name) return uni.showToast({ - title: '璇疯緭鍏ヤ細璁富棰�', - icon: 'none' - }) - reservationMeeting({ - ...param, - projectList: info.projectList.filter(i => i.checked), - }).then(res => { - if (res.code === 200) { - setTimeout(() => { - uni.showToast({ - title: '淇敼鎴愬姛', - icon: 'success', - duration: 2000 - }) - }) - uni.redirectTo({ - url: '/pages/staff/index' - }) - } - }) - }, - handleBack() { - if(this.param.id) return - uni.navigateBack( ) - }, - onSubmit() { - const { param, info } = this - if (!param.name) return uni.showToast({ - title: '璇疯緭鍏ヤ細璁富棰�', - icon: 'none' - }) - // if (!param.sysList || param.sysList.length == 0) return uni.showToast({ - // title: '璇烽�夋嫨鍙備細浜哄憳', - // icon: 'none' - // }) - reservationMeeting({ - ...param, - startTime: `${param.yudingDate} ${param.startTime}:00`, - endTime: `${param.yudingDate} ${param.endTime}:00`, - projectList: info.projectList.filter(i => i.checked), - }).then(res => { - if (res.code === 200) { - setTimeout(() => { - uni.showToast({ - title: '棰勭害鎴愬姛', - icon: 'success', - duration: 2000 - }) - }) - uni.redirectTo({ - url: '/pages/staff/index' - }) - } - }) - }, - selPeople() { - const { param } = this - let startTime = new Date(param.yudingDate + ' ' + param.startTime).getTime() - let endTime = new Date(param.yudingDate + ' ' + param.endTime).getTime() - if(this.param.sysList && this.param.sysList.length > 0){ - setTimeout(() => { - this.$eventBus.$emit('meetingPeoDetail', this.param.sysList || []) - }, 500) - } - uni.navigateTo({ - url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}&limitNum=${this.param.limitNum}` - }) - }, - serviceClick(item) { - const { info } = this - info.projectList.forEach(ite => { - if (ite.projectId === item.projectId) { - ite.checked = !ite.checked - } - }) - this.$forceUpdate() - }, - initOption() { - const roomId = Number(this.param.roomId) - getRoomDetail({ roomId }).then(res => { - this.info = res.data - if (this.info && this.info.projectList) { - this.info.projectList.forEach(i => { - i.checked = false - - }) - } - }) - } - } -} -</script> - -<style lang="scss"> -.module_list { - .item { - border-bottom: 1rpx solid #e5e5e5; - padding: 30rpx 0; - .name { - color: #666666; - margin-bottom: 30rpx; - } - .line { - display: flex; - .label { - flex: 1; - display: flex; - flex-wrap: wrap; - align-items: center; - .service_item { - height: 64rpx; - line-height: 64rpx; - background: #f7f7f7; - border-radius: 4rpx; - padding: 0 24rpx; - margin-right: 20rpx; - margin-bottom: 12rpx; - } - .active { - background-color: #4d99a8; - color: #fff; - } - } - } - } - padding-bottom: 100rpx; -} -.empty { - width: 750rpx; - height: 20rpx; - background-color: #f7f7f7; - margin: 0 -30rpx; -} -.sub_btn { - width: 690rpx; - height: 72rpx; - line-height: 72rpx; - text-align: center; - background: $uni-color-primary; - box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee; - border-radius: 36rpx; - font-size: 30rpx; - color: #ffffff; - margin-top: 20rpx; -} -.star { - margin-left: 4rpx; - color: #e42d2d; -} -</style> +<template> + <view class="main_app"> + <view class="module_list"> + <view class="item"> + <view class="name">浼氳鏃堕棿</view> + <view class="line" @click="handleBack"> + <view class="label"> + {{ param.activeDate || param.meetingDate }} + <text class="ml12" v-if="!param.id">{{ param.startTime }}-{{ param.endTime }}</text> + <text class="ml12" v-if="param.id">{{ param.meetingTime }}</text> + </view> + <u-icon name="arrow-right" color="#999999" size="14" /> + </view> + </view> + <view class="item"> + <view class="name">浼氳瀹�</view> + <view class="line"> + <view class="label">{{ param.roomName }}(鍙绾硔{ param.limitNum }}浜�)</view> + </view> + </view> + <view class="item"> + <view class="name">棰勭害浜�</view> + <view class="line"> + <view class="label">{{ userInfo.realname }}</view> + </view> + </view> + <view class="empty"></view> + <view class="item"> + <view class="name"> + <text>浼氳涓婚</text> + <text class="star">*</text> + </view> + <view class="line"> + <input type="text" v-model="param.name" placeholder="璇疯緭鍏ヤ細璁富棰�" placeholder-class="placeholder9" + class="label" /> + </view> + </view> + <view class="item"> + <view class="name"> + <text>浼氳鍐呭</text> + </view> + <view class="line"> + <u-textarea border="none" v-model="param.content" count :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" + placeholder-class="placeholder9" class="label" /> + </view> + </view> + <view class="empty"></view> + <view class="item"> + <view class="name"> + 鍙備細浜哄憳 + <text class="star"></text> + </view> + <view class="line" @click="selPeople"> + <view class="label"> + <text v-if="param.sysList && param.sysList.length > 0"> + {{ param.sysList.map((i) => i.realname).join(",") }} + </text> + <text v-else class="placeholder9">璇烽�夋嫨</text> + </view> + <u-icon name="arrow-right" color="#999999" size="14" /> + </view> + </view> + <view class="item"> + <view class="name">鏄惁閫氱煡鍙備細浜哄憳</view> + <view class="line"> + <view class="label"> + <u-switch v-model="param.joinNotice" activeColor="#4d99a8" :activeValue="0" :inactiveValue="1"></u-switch> + <!-- <u-radio-group v-model="param.joinNotice"> + <u-radio label="涓嶉�氱煡" :name="1" activeColor="#4d99a8" class="mr24" /> + <u-radio label="閫氱煡" :name="0" activeColor="#4d99a8" /> + </u-radio-group> --> + </view> + </view> + </view> + <view class="item" v-if="info.projectList && info.projectList.length > 0"> + <view class="name">閫夋嫨鏈嶅姟椤�</view> + <view class="line"> + <view class="label"> + <view class="service_item" :class="{ active: item.checked }" v-for="(item, index) in info.projectList" + :key="index" @click="serviceClick(item)"> + {{ item.projectName }} + </view> + </view> + </view> + </view> + <view class="item"> + <view class="name"> + <text>澶囨敞</text> + </view> + <view class="line"> + <textarea v-model="param.remark" :maxlength="-1" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" + class="label" /> + </view> + </view> + + <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view> + <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view> + </view> + </view> +</template> + +<script> + import { + reservationMeeting, + getRoomDetail, + meetingDetail, + updateById, + getAppRoomDetail + } from '@/api' + import dayjs from 'dayjs' + export default { + data() { + return { + param: { + joinNotice: 1 + }, + userInfo: uni.getStorageSync('userInfo'), + info: {}, + } + }, + onLoad(option) { + if (option.id) { + uni.setNavigationBarTitle({ + title: '浼氳璇︽儏' + }) + this.getDetail(option.id) + } + }, + mounted() { + this.$eventBus.$on('meetingPeo', (res) => { + this.$set(this.param, 'sysList', res.map(i => { + i.userId = i.id + return i + })) + // this.$set(this.param, 'memberIds', res.map(i => i.id).join(',')) + // this.$set(this.param, 'memberNames', res.map(i => i.name).join(',')) + }) + this.$eventBus.$on('meetingSub', (res) => { + this.param = { + ...res + } + this.$set(this.param, 'activeDate', dayjs(res.yudingDate).format('YYYY骞碝鏈圖鏃�')) + const bookingTimeList = res.bookingTimeList.split(',').map(i => { + return { + timeId: Number(i) + } + }) + this.$set(this.param, 'bookingTimeList', bookingTimeList) + this.initOption() + }) + }, + methods: { + getDetail(id) { + meetingDetail({ + id + }).then(res => { + this.param = { + ...res.data, + name: res.data.meetingName, + content: res.data.meetingContent, + sysList: res.data.userResponseList + } + // this.param = { ...res.data } + if (this.param.sysList && this.param.sysList.length > 0) { + this.param.sysList.forEach(i => { + i.userId = i.id + }) + } + getRoomDetail({ + roomId: res.data.roomId + }).then(ress => { + this.info = ress.data + if (this.info && this.info.projectList) { + this.info.projectList.forEach(i => { + i.checked = false + if (res.data.projectsResponseList && res.data.projectsResponseList.length > 0) { + res.data.projectsResponseList.forEach(item2 => { + if (i.projectId === item2.id) { + i.checked = true + } + }) + } + }) + } + }) + }) + }, + onUpdate() { + const { + param, + info + } = this + if (!param.name) return uni.showToast({ + title: '璇疯緭鍏ヤ細璁富棰�', + icon: 'none' + }) + reservationMeeting({ + ...param, + projectList: info.projectList.filter(i => i.checked), + }).then(res => { + if (res.code === 200) { + setTimeout(() => { + uni.showToast({ + title: '淇敼鎴愬姛', + icon: 'success', + duration: 2000 + }) + }) + uni.redirectTo({ + url: '/pages/staff/index' + }) + } + }) + }, + handleBack() { + if (this.param.id) return + uni.navigateBack() + }, + onSubmit() { + const { + param, + info + } = this + if (!param.name) return uni.showToast({ + title: '璇疯緭鍏ヤ細璁富棰�', + icon: 'none' + }) + // if (!param.sysList || param.sysList.length == 0) return uni.showToast({ + // title: '璇烽�夋嫨鍙備細浜哄憳', + // icon: 'none' + // }) + reservationMeeting({ + ...param, + startTime: `${param.yudingDate} ${param.startTime}:00`, + endTime: `${param.yudingDate} ${param.endTime}:00`, + projectList: info.projectList.filter(i => i.checked), + }).then(res => { + if (res.code === 200) { + setTimeout(() => { + uni.showToast({ + title: '棰勭害鎴愬姛', + icon: 'success', + duration: 2000 + }) + }) + uni.redirectTo({ + url: '/pages/staff/index' + }) + } + }) + }, + selPeople() { + const { + param + } = this + let startTime = new Date(param.yudingDate + ' ' + param.startTime).getTime() + let endTime = new Date(param.yudingDate + ' ' + param.endTime).getTime() + if (this.param.sysList && this.param.sysList.length > 0) { + setTimeout(() => { + this.$eventBus.$emit('meetingPeoDetail', this.param.sysList || []) + }, 500) + } + uni.navigateTo({ + url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}&limitNum=${this.param.limitNum}` + }) + }, + serviceClick(item) { + const { + info + } = this + info.projectList.forEach(ite => { + if (ite.projectId === item.projectId) { + ite.checked = !ite.checked + } + }) + this.$forceUpdate() + }, + initOption() { + const roomId = Number(this.param.roomId) + getRoomDetail({ + roomId + }).then(res => { + this.info = res.data + if (this.info && this.info.projectList) { + this.info.projectList.forEach(i => { + i.checked = false + + }) + } + }) + } + } + } +</script> + +<style lang="scss"> + .module_list { + .item { + border-bottom: 1rpx solid #e5e5e5; + padding: 30rpx 0; + + .name { + color: #666666; + margin-bottom: 30rpx; + } + + .line { + display: flex; + + .label { + flex: 1; + display: flex; + flex-wrap: wrap; + align-items: center; + + .service_item { + height: 64rpx; + line-height: 64rpx; + background: #f7f7f7; + border-radius: 4rpx; + padding: 0 24rpx; + margin-right: 20rpx; + margin-bottom: 12rpx; + } + + .active { + background-color: #4d99a8; + color: #fff; + } + } + } + } + + padding-bottom: 100rpx; + } + + .empty { + width: 750rpx; + height: 20rpx; + background-color: #f7f7f7; + margin: 0 -30rpx; + } + + .sub_btn { + width: 690rpx; + height: 72rpx; + line-height: 72rpx; + text-align: center; + background: $uni-color-primary; + box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee; + border-radius: 36rpx; + font-size: 30rpx; + color: #ffffff; + margin-top: 20rpx; + } + + .star { + margin-left: 4rpx; + color: #e42d2d; + } +</style> \ No newline at end of file -- Gitblit v1.9.3