From 67c8044145f0bd3df44cc7b627cff32fed02b63c Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 28 六月 2024 14:01:24 +0800
Subject: [PATCH] ''

---
 h5/pages/staff/meetingSubOrder.vue  |   32 ++++---
 h5/pages/staff/meetingSub.vue       |   11 ++
 h5/pages/staff/meetingSel.vue       |  120 +++++++++++++++++++++--------
 h5/App.vue                          |   26 +++++-
 h5/pages/staff/vehicle/applePeo.vue |   48 +++++++----
 5 files changed, 167 insertions(+), 70 deletions(-)

diff --git a/h5/App.vue b/h5/App.vue
index 31e5e5c..6026277 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -220,24 +220,42 @@
   font-size: 28rpx;
   color: #333333;
 }
+.popupShow {
+	overflow: hidden;
+	position: fixed;
+  width: 100%;
+}
 .placeholder6 {
   color: #666666;
   font-size: 28rpx;
 }
-.primaryColor{
+.primaryColor {
   color: $uni-color-primary;
+}
+.avatar {
+  width: 64rpx;
+  height: 64rpx;
+  border-radius: 50%;
+  overflow: hidden;
+  margin-right: 20rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-color: $uni-color-primary;
+  color: #fff;
+  font-size: 30rpx;
 }
 .placeholder9 {
   color: #999999;
   font-size: 28rpx;
 }
-.fs24{
+.fs24 {
   font-size: 24rpx;
 }
 .mr24 {
   margin-right: 24rpx;
 }
-.mt24{
+.mt24 {
   margin-top: 24rpx;
 }
 
@@ -247,7 +265,7 @@
 .ml12 {
   margin-left: 12rpx;
 }
-.mt6{
+.mt6 {
   margin-top: 6rpx;
 }
 .mr6 {
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
index 22ba2db..64654fa 100644
--- a/h5/pages/staff/meetingSel.vue
+++ b/h5/pages/staff/meetingSel.vue
@@ -1,5 +1,5 @@
 <template>
-  <view class="main_app">
+  <view class="main_app" :class="{ popupShow: isShowSelMem }">
     <view class="search_inp df_ac">
       <image
         class="mr12 search"
@@ -15,20 +15,18 @@
       />
     </view>
     <view class="member_list">
-      <view v-for="item in memberList" :key="item.id" class="line">
+      <view v-for="(item, index) in memberList" :key="item.id" class="line">
         <image
-          :src="
-            item.avatar
-              ? item.prefixUrl + item.avatar
-              : require('@/static/default_avatar.png')
-          "
+          v-if="item.avatar"
+          :src="item.prefixUrl + item.avatar"
           class="avatar"
           mode=""
         ></image>
+        <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
         <view class="content">
           <view class="info">
             <text class="name">{{ item.realname }}</text>
-            <!-- <text class="tag">tag</text> -->
+            <text class="tag" v-if="item.status == '1'">鏈変細璁�</text>
           </view>
           <view class="depart">{{ item.departmentName }}</view>
         </view>
@@ -55,7 +53,9 @@
       <view class="sel_mem">
         <text>宸查�夋嫨锛�</text>
         <view class="members">
-					 <text v-for="(item, i) in selList" :key="i">{{ item.realname }}锛�</text>
+          <text v-for="(item, i) in selList" :key="i"
+            >{{ item.realname }}锛�</text
+          >
         </view>
         <image
           @click="isShowSelMem = true"
@@ -64,38 +64,39 @@
           mode=""
         ></image>
       </view>
-      <view class="btn" @click="onSubmit">纭({{ selList.length }}/20)</view>
+      <view class="btn" @click="onSubmit"
+        >纭({{ selList.length }}/{{ param.limitNum }})</view
+      >
     </view>
     <!--  -->
-     <u-popup
+    <u-popup
+      catchtouchmove
       :show="isShowSelMem"
       :round="12"
       mode="bottom"
-      @close="isShowSelMem = false"
+      @close="closeModal"
     >
       <view class="modal">
         <view class="modal_header">
           <text class="status">宸查�夋嫨锛歿{ selList.length }}浜�</text>
-          <text class="btn" @click="isShowSelMem = false">纭</text>
+          <text class="btn" @click="subSelMem">纭</text>
         </view>
         <view class="modal_mem_list">
           <view class="line" v-for="(item, i) in selList" :key="i">
             <image
-              :src="
-                item.faceImgFull
-                  ? item.faceImgFull
-                  : require('@/static/logo@2x.png')
-              "
+              v-if="item.avatar"
+              :src="item.prefixUrl + item.avatar"
               class="avatar"
               mode=""
             ></image>
+            <view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
             <view class="content">
               <view class="info">
                 <text class="name">{{ item.realname }}</text>
               </view>
               <view class="depart">{{ item.departmentName }}</view>
             </view>
-            <view class="btn" @click="handleRemove(item)">绉婚櫎</view>
+            <view class="btn" @click="handleRemove(i)">绉婚櫎</view>
           </view>
         </view>
       </view>
@@ -105,12 +106,15 @@
 
 <script>
 import { userPagePost } from '@/api'
+import dayjs from 'dayjs'
 export default {
   data() {
     return {
       memberList: [],
       selList: [],
-      param: {},
+      param: {
+        limitNum: ''
+      },
       pagination: {
         page: 1,
         capacity: 20
@@ -120,15 +124,42 @@
     }
   },
   onLoad(option) {
-    this.param = { ...option, keyword: '' }
+    this.param = {
+      limitNum: option.limitNum,
+      keyword: '',
+      startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'),
+      endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'),
+    }
     this.initData()
+  },
+  mounted() {
+    this.$eventBus.$on('meetingPeoDetail', (res) => {
+      setTimeout(() => {
+        res.forEach(item => {
+          this.memberList.forEach(mem => {
+            if (item.id == mem.id) {
+              mem.checked = true
+            }
+          })
+        })
+        this.selList = this.memberList.filter(i => i.checked)
+        this.$nextTick(() => {
+          this.$forceUpdate()
+        })
+      }, 1000)
+    })
   },
   methods: {
     onSubmit() {
-			this.$eventBus.$emit('meetingPeo', this.selList)
+      this.$eventBus.$emit('meetingPeo', this.selList)
       uni.navigateBack()
     },
-		changeMem(item, index) {
+    changeMem(item, index) {
+      const { selList, param } = this
+      if (this.selList.length == param.limitNum && !item.checked) return uni.showToast({
+        title: `璇ヤ細璁彲瀹圭撼${param.limitNum}浜篳,
+        icon: 'none'
+      })
       item.checked = !item.checked
       this.selList = this.memberList.filter(i => i.checked)
       // const arr = e.detail.value
@@ -154,17 +185,31 @@
 
       }).then(res => {
         this.memberList = res.data.records || []
-				this.memberList.map(i => {
-					i.checked = false
-				})
+        this.memberList.map(i => {
+          i.checked = false
+        })
       })
     },
-		handleRemove(item) {
-      this.memberList.forEach(ite => {
-        if (item.id === ite.id) {
-          ite.checked = false
-        }
+    closeModal() {
+      this.selList = this.memberList.filter(i => i.checked)
+      this.isShowSelMem = false
+    },
+    subSelMem() {
+      const { selList, memberList } = this
+      memberList.forEach(ite => {
+        ite.checked = false
+        selList.forEach(item => {
+          if (ite.id === item.id) {
+            ite.checked = true
+          } else { }
+        })
       })
+      this.isShowSelMem = false
+      this.$forceUpdate()
+    },
+    handleRemove(i) {
+      this.selList.splice(i, 1)
+
       // console.log(this.memberList);
       this.$forceUpdate()
     },
@@ -175,10 +220,12 @@
 <style lang="scss">
 .modal {
   padding: 40rpx 30rpx;
+  max-height: 1000rpx;
   .modal_header {
     display: flex;
     justify-content: space-between;
     align-items: center;
+    padding-bottom: 20rpx;
     .status {
       font-weight: 600;
     }
@@ -187,6 +234,8 @@
     }
   }
   .modal_mem_list {
+    max-height: 860rpx;
+    overflow: auto;
     .line {
       display: flex;
       align-items: center;
@@ -198,6 +247,11 @@
         border-radius: 50%;
         overflow: hidden;
         margin-right: 20rpx;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        background-color: $uni-color-primary;
+        color: #fff;
       }
       .content {
         flex: 1;
@@ -229,7 +283,7 @@
 .sub_wrap {
   position: fixed;
   bottom: 0;
-	background-color: #fff;
+  background-color: #fff;
   left: 0;
   width: 100%;
   box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
@@ -296,7 +350,7 @@
         }
       }
     }
-		.checked{
+    .checked {
       width: 48rpx;
     }
   }
diff --git a/h5/pages/staff/meetingSub.vue b/h5/pages/staff/meetingSub.vue
index 34a81db..f06eb43 100644
--- a/h5/pages/staff/meetingSub.vue
+++ b/h5/pages/staff/meetingSub.vue
@@ -146,11 +146,16 @@
         startTime: selTimeList[0].startTime,
         endTime: selTimeList[selTimeList.length - 1].endTime,
         bookingTimeList: selTimeList.map(i => i.id).join(','),
+        yudingDate: activeRoom.yudingDate,
+        roomName: activeRoom.roomName,
+        limitNum: activeRoom.limitNum,
+        roomId: activeRoom.roomId,
       }
+      setTimeout(() => {
+        this.$eventBus.$emit('meetingSub', obj)
+      })
       uni.navigateTo({
-        url: `/pages/staff/meetingSubOrder?yudingDate=${activeRoom.yudingDate}&roomName=${activeRoom.roomName}
-        &roomId=${activeRoom.roomId}&startTime=${obj.startTime}&endTime=${obj.endTime}
-        &bookingTimeList=${obj.bookingTimeList}&limitNum=${activeRoom.limitNum}`
+        url: `/pages/staff/meetingSubOrder`
       })
       // this.$jump('/pages/staff/vehicle/apply')
     },
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index e306e60..400120b 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -140,16 +140,6 @@
         title: '浼氳璇︽儏'
       })
       this.getDetail(option.id)
-    } else {
-      this.param = { ...option }
-      const bookingTimeList = option.bookingTimeList.split(',').map(i => {
-        return {
-          timeId: Number(i)
-        }
-      })
-      this.$set(this.param, 'bookingTimeList', bookingTimeList)
-      this.$set(this.param, 'activeDate', dayjs(option.yudingDate).format('YYYY骞碝鏈圖鏃�'))
-      this.initOption()
     }
   },
   mounted() {
@@ -160,6 +150,17 @@
       }))
       // 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: {
@@ -248,10 +249,15 @@
     },
     selPeople() {
       const { param } = this
-      let startTime = param.yudingDate + ' ' + param.startTime
-      let endTime = param.yudingDate + ' ' + param.endTime
+      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}`
+        url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}&limitNum=${this.param.limitNum}`
       })
     },
     serviceClick(item) {
diff --git a/h5/pages/staff/vehicle/applePeo.vue b/h5/pages/staff/vehicle/applePeo.vue
index a39eada..baf5fe2 100644
--- a/h5/pages/staff/vehicle/applePeo.vue
+++ b/h5/pages/staff/vehicle/applePeo.vue
@@ -1,5 +1,5 @@
 <template>
-  <view class="main_app">
+  <view class="main_app" :class="{ popupShow: isShowSelMem }">
     <view class="search_inp df_ac">
       <image
         class="mr12 search"
@@ -17,14 +17,12 @@
     <view class="member_list">
       <view v-for="(item, index) in memberList" :key="item.id" class="line">
         <image
-          :src="
-            item.faceImgFull
-              ? item.faceImgFull
-              : require('@/static/logo@2x.png')
-          "
+          v-if="item.faceImgFull"
+          :src="item.faceImgFull"
           class="avatar"
           mode=""
         ></image>
+        <view v-else class="avatar">{{ item.name.slice(0, 1) }}</view>
         <view class="content">
           <view class="info">
             <text class="name">{{ item.name }}</text>
@@ -65,19 +63,19 @@
           mode=""
         ></image>
       </view>
-      <view class="btn" @click="onSubmit">纭({{ selList.length }}/20)</view>
+      <view class="btn" @click="onSubmit">纭</view>
     </view>
     <!--  -->
     <u-popup
       :show="isShowSelMem"
       :round="12"
       mode="bottom"
-      @close="isShowSelMem = false"
+      @close="closeModal"
     >
       <view class="modal">
         <view class="modal_header">
           <text class="status">宸查�夋嫨锛歿{ selList.length }}浜�</text>
-          <text class="btn" @click="isShowSelMem = false">纭</text>
+          <text class="btn" @click="subSelMem">纭</text>
         </view>
         <view class="modal_mem_list">
           <view class="line" v-for="(item, i) in selList" :key="i">
@@ -96,7 +94,7 @@
               </view>
               <view class="depart">{{ item.componey }}</view>
             </view>
-            <view class="btn" @click="handleRemove(item)">绉婚櫎</view>
+            <view class="btn" @click="handleRemove(i)">绉婚櫎</view>
           </view>
         </view>
       </view>
@@ -165,6 +163,23 @@
       this.$eventBus.$emit('applePeo', this.selList)
       uni.navigateBack()
     },
+    closeModal() {
+      this.selList = this.memberList.filter(i => i.checked)
+      this.isShowSelMem = false
+    },
+    subSelMem() {
+      const { selList, memberList } = this
+      memberList.forEach(ite => {
+        ite.checked = false
+        selList.forEach(item => {
+          if (ite.id === item.id) {
+            ite.checked = true
+          } else { }
+        })
+      })
+      this.isShowSelMem = false
+      this.$forceUpdate()
+    },
     changeMem(item, index) {
       // this.memberList.forEach(mem => {
       //   if(item.id === mem.id){
@@ -175,13 +190,8 @@
       this.selList = this.memberList.filter(i => i.checked)
       this.$forceUpdate()
     },
-    handleRemove(item) {
-      this.memberList.forEach(ite => {
-        if (item.id === ite.id) {
-          ite.checked = false
-        }
-      })
-      // console.log(this.memberList);
+    handleRemove(i) {
+      this.selList.splice(i, 1)
       this.$forceUpdate()
     },
   }
@@ -191,10 +201,12 @@
 <style lang="scss">
 .modal {
   padding: 40rpx 30rpx;
+  max-height: 1000rpx;
   .modal_header {
     display: flex;
     justify-content: space-between;
     align-items: center;
+    padding-bottom: 20rpx;
     .status {
       font-weight: 600;
     }
@@ -203,6 +215,8 @@
     }
   }
   .modal_mem_list {
+    max-height: 860rpx;
+    overflow: auto;
     .line {
       display: flex;
       align-items: center;

--
Gitblit v1.9.3