From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 16 十月 2024 15:59:38 +0800
Subject: [PATCH] 代码初始化

---
 h5/pages/staff/meetingSubOrder.vue |  405 +++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 333 insertions(+), 72 deletions(-)

diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index 3a25438..1d82d33 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -1,84 +1,345 @@
 <template>
-	<view class="main_app">
-		<view class="module_list">
-			<view class="item">
-				<view class="name">浼氳鏃堕棿</view>
-				<view class="line">
-					<view class="label">2022骞�22鏈�2鏃� 1000000000</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">aaaaaaaa</view>
-				</view>
-			</view>
-			<view class="item">
-				<view class="name">棰勭害浜�</view>
-				<view class="line">
-					<view class="label">aaaaaaaa</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.aaa" placeholder="璇疯緭鍏ヤ細璁富棰�" placeholder-class="placeholder9" class="label">
-				</view>
-			</view>
-			<view class="item">
-				<view class="name">
-					<text>浼氳鍐呭</text>
-				</view>
-				<view class="line">
-					<textarea v-model="param.aaa" :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" placeholder-class="placeholder9" class="label" />
-				</view>
-			</view>
-			
-		</view>
-	</view>
+  <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">
+            <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>
-	export default {
-		data() {
-			return {
-				param: {}
-			};
-		}
-	}
+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;
-			}
-			
-		}
-	}
+.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;
+  width: 750rpx;
+  height: 20rpx;
+  background-color: #f7f7f7;
+  margin: 0 -30rpx;
 }
-.star{
-	margin-left: 4rpx;
-	color: #e42d2d;
+.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>

--
Gitblit v1.9.3