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