From 356fbaf0baa43b22113ddcf40345e459bee0c2fb Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 04 六月 2024 17:42:50 +0800
Subject: [PATCH] ''

---
 h5/pages/staff/task/index.vue             |   27 
 h5/pages/staff/meetingCalendar.vue        |  806 ++++++++++++---------
 h5/pages/staff/meetingSubOrder.vue        |  193 +++-
 h5/pages/staff/meetingDetail.vue          |  404 ++++++----
 h5/pages/staff/snapshot.vue               |   85 +-
 h5/api/staff.js                           |   24 
 h5/pages/staff/vehicle/sendACar.vue       |   22 
 h5/pages/staff/memberSel.vue              |    6 
 h5/pages/staff/vehicle/sendACarDetail.vue |  267 +++++-
 h5/pages/staff/meetingManager.vue         |  301 +++++---
 h5/api/meeting.js                         |   31 
 11 files changed, 1,347 insertions(+), 819 deletions(-)

diff --git a/h5/api/meeting.js b/h5/api/meeting.js
index 4f7a800..29ba261 100644
--- a/h5/api/meeting.js
+++ b/h5/api/meeting.js
@@ -48,6 +48,13 @@
     data
   })
 }
+// 浼氳瀹� h5璇︽儏
+export const getAppRoomDetail = (id) => {
+  return http({
+    url: 'meetingAdmin/cloudService/business/bookings/'+id,
+    method: 'get'
+  })
+}
 // 浼氳瀹� 绠$悊
 export const myMeetingPage = (data) => {
   return http({
@@ -56,3 +63,27 @@
     data
   })
 }
+// 浼氳瀹� 褰撴湀
+export const monthMeetingPage = (data) => {
+  return http({
+    url: 'meetingAdmin/cloudService/web/meeting/monthMeeting',
+    method: 'get',
+    data
+  })
+}
+// 浼氳瀹� 淇敼
+export const updateById = (data) => {
+  return http({
+    url: 'meetingAdmin/cloudService/business/rooms/updateById',
+    method: 'post',
+    data
+  })
+}
+// 浼氳瀹� 鎾ゅ洖
+export const cancelById = (data) => {
+  return http({
+    url: 'meetingAdmin/cloudService/business/meeting/reservationCancel',
+    method: 'get',
+    data
+  })
+}
diff --git a/h5/api/staff.js b/h5/api/staff.js
index 456d6f8..093a0b4 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -149,4 +149,28 @@
     url: 'visitsAdmin/cloudService/business/carUseBook/'+id,
     method: 'get'
   })
+}
+// 鏌ヨ杞﹁締 娲捐溅璁板綍 瀹℃壒
+export const carUseBookAppr = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/approve/approved',
+    method: 'post',
+    data
+  })
+}
+// 鏌ヨ杞﹁締 娲捐溅璁板綍 鎾ら攢鐢宠
+export const carUseBookBack = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/carUseBook/revoke',
+    method: 'get',
+    data
+  })
+}
+// 鏌ヨ杞﹁締 鍙告満鍒楄〃
+export const driveListPost = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/member/driveList',
+    method: 'post',
+    data
+  })
 }
\ No newline at end of file
diff --git a/h5/pages/staff/meetingCalendar.vue b/h5/pages/staff/meetingCalendar.vue
index 6f1fd57..346a6b3 100644
--- a/h5/pages/staff/meetingCalendar.vue
+++ b/h5/pages/staff/meetingCalendar.vue
@@ -1,379 +1,489 @@
 <template>
-	<view class="main_app">
-		<view class="tabs">
-			<view class="tab" :class="{ active: activeTab === '0' }" @click="tabClick('0')">
-				<text class="name">浼氳鏃ュ巻</text>
-				<view class="line"></view>
-			</view>
-			<view class="tab" :class="{ active: activeTab === '1' }" @click="tabClick('1')">
-				<text class="name">棰勭害璁板綍</text>
-				<view class="line"></view>
-			</view>
-		</view>
-		<!--  -->
-		<template v-if="activeTab == '0'">
-			<!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
-			<!-- 鏃ュ巻 -->
-			<view class="container_b">
-				<Calendar
-					ref="Calendar"
-					:currentTime="currentTime1"
-					:mark="mark"
-					:showLunar="false"
-					@dayChange="dayChange"
-					@monthChange="monthChange"
-					:rangeMode="false"
-					:maskColor="'#ffffff'"
-					:dateStart="dateStart"
-					:dateEnd="dateEnd"
-					:canDrag="false"
-				></Calendar>
-			</view>
-			<!--  -->
-			<view class="card_list">
-				<view class="card_title">
-					<view class="name">
-						<view class="icon"></view>
-						<view class="text">浠婃棩浼氳</view>
-					</view>
-					<view class="meeting">
-						<view class="text mr24">鍏ㄩ儴浼氳瀹�</view>
-						<u-icon name="arrow-down" size="12" color="#999999" />
-					</view>
-				</view>
-				<view class="list">
-					<view class="item">
-						<view class="head">
-							<view class="name">aaaaa閫夊瀷</view>
-							<view class="status">鍗冲皢寮�濮�</view>
-						</view>
-						<view class="line">
-							<view class="label">浼氳鏃堕棿锛�</view>
-							<view class="value">12:00-12</view>
-						</view>
-						<view class="line">
-							<view class="label">浼氳瀹わ細</view>
-							<view class="value">202浼氳瀹�</view>
-						</view>
-						<view class="line">
-							<view class="label">棰勭害浜猴細</view>
-							<view class="value">鏉ㄦ煇鏌�</view>
-						</view>
-						<view class="line">
-							<view class="label">澶囨敞锛�</view>
-							<view class="value">--</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</template>
-		<!--  -->
-		<template v-if="activeTab === '1'">
-			<view class="card_list">
-				<view class="list">
-					<view class="item" v-for="item in recordList" :key="item.id" @click="handleDetail(item.id)">
-						<view class="head">
-							<view class="name">{{ item.meetingName }}</view>
-							<view class="status" v-if="item.meetingStatus == '1'">鏈紑濮�</view>
-							<view class="status red" v-if="item.meetingStatus == '2'">杩涜涓�</view>
-							<view class="status" v-if="item.meetingStatus == '3'">宸茬粨鏉�</view>
-							<view class="status padding" v-if="item.meetingStatus == '4'">鍗冲皢寮�濮�</view>
-							<view class="status" v-if="item.meetingStatus == '5'">宸叉挙閿�</view>
-						</view>
-						<view class="line">
-							<view class="label">浼氳鏃堕棿锛�</view>
-							<view class="value">{{ item.meetingTime	 }}</view>
-						</view>
-						<view class="line">
-							<view class="label">浼氳瀹わ細</view>
-							<view class="value">{{ item.roomName }}</view>
-						</view>
-						<view class="line">
-							<view class="label">棰勭害浜猴細</view>
-							<view class="value">{{ item.bookingUser }}</view>
-						</view>
-						<view class="line">
-							<view class="label">澶囨敞锛�</view>
-							<view class="value">{{ item.remark }}</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</template>
-	</view>
+  <view class="main_app">
+    <view class="tabs">
+      <view
+        class="tab"
+        :class="{ active: activeTab === '0' }"
+        @click="tabClick('0')"
+      >
+        <text class="name">浼氳鏃ュ巻</text>
+        <view class="line"></view>
+      </view>
+      <view
+        class="tab"
+        :class="{ active: activeTab === '1' }"
+        @click="tabClick('1')"
+      >
+        <text class="name">棰勭害璁板綍</text>
+        <view class="line"></view>
+      </view>
+    </view>
+    <!--  -->
+    <template v-if="activeTab == '0'">
+      <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
+      <!-- 鏃ュ巻 -->
+      <view class="container_b">
+        <Calendar
+          ref="Calendar"
+          :currentTime="currentDate"
+          :mark="monthMark"
+          :showLunar="false"
+          @dayChange="dayChange"
+          @monthChange="monthChange"
+          :rangeMode="false"
+          :maskColor="'#ffffff'"
+          :dateStart="dateStart"
+          :dateEnd="dateEnd"
+          :canDrag="false"
+        ></Calendar>
+      </view>
+      <!--  -->
+      <view class="card_list">
+        <view class="card_title">
+          <view class="name">
+            <view class="icon"></view>
+            <view class="text">浠婃棩浼氳</view>
+          </view>
+          <view class="meeting">
+            <view class="text mr24" @click="isShowStatus = true">{{
+              activeRoom.name
+            }}</view>
+            <u-icon name="arrow-down" size="12" color="#999999" />
+          </view>
+        </view>
+        <view class="list">
+          <view
+            @click="handleDetail(item.id)"
+            class="item"
+            v-for="item in myMeetingList"
+            :key="item.id"
+          >
+            <view class="head">
+              <view class="name">{{ item.meetingName }}</view>
+              <view class="status" v-if="item.meetingStatus == '1'"
+                >鏈紑濮�</view
+              >
+              <view class="status red" v-if="item.meetingStatus == '2'"
+                >杩涜涓�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '3'"
+                >宸茬粨鏉�</view
+              >
+              <view class="status padding" v-if="item.meetingStatus == '4'"
+                >鍗冲皢寮�濮�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '5'"
+                >宸叉挙閿�</view
+              >
+            </view>
+            <view class="line">
+              <view class="label">浼氳鏃堕棿锛�</view>
+              <view class="value">{{ item.meetingTime }}</view>
+            </view>
+            <view class="line">
+              <view class="label">浼氳瀹わ細</view>
+              <view class="value">{{ item.roomName }}</view>
+            </view>
+            <view class="line">
+              <view class="label">棰勭害浜猴細</view>
+              <view class="value">{{ item.bookingUser }}</view>
+            </view>
+            <view class="line">
+              <view class="label">澶囨敞锛�</view>
+              <view class="value">{{ item.remark || item.meetingRemark }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </template>
+    <!--  -->
+    <template v-if="activeTab === '1'">
+      <view class="card_list">
+        <view class="list">
+          <view
+            class="item"
+            v-for="item in recordList"
+            :key="item.id"
+            @click="handleDetail(item.id)"
+          >
+            <view class="head">
+              <view class="name">{{ item.meetingName }}</view>
+              <view class="status" v-if="item.meetingStatus == '1'"
+                >鏈紑濮�</view
+              >
+              <view class="status red" v-if="item.meetingStatus == '2'"
+                >杩涜涓�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '3'"
+                >宸茬粨鏉�</view
+              >
+              <view class="status padding" v-if="item.meetingStatus == '4'"
+                >鍗冲皢寮�濮�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '5'"
+                >宸叉挙閿�</view
+              >
+            </view>
+            <view class="line">
+              <view class="label">浼氳鏃堕棿锛�</view>
+              <view class="value">{{ item.meetingTime }}</view>
+            </view>
+            <view class="line">
+              <view class="label">浼氳瀹わ細</view>
+              <view class="value">{{ item.roomName }}</view>
+            </view>
+            <view class="line">
+              <view class="label">棰勭害浜猴細</view>
+              <view class="value">{{ item.bookingUser }}</view>
+            </view>
+            <view class="line">
+              <view class="label">澶囨敞锛�</view>
+              <view class="value">{{ item.remark || item.meetingRemark }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </template>
+
+    <u-picker
+      keyName="name"
+      :show="isShowStatus"
+      :columns="meetingList"
+      @confirm="seletedStatus"
+      @cancel="isShowStatus = false"
+    ></u-picker>
+  </view>
 </template>
 
 <script>
-import Calendar from '@/components/Li-Calendar/Li-Calendar.vue';
-import { getDay } from '@/utils/utils.js';
-import { myMeetingPage } from '@/api'
+import Calendar from '@/components/Li-Calendar/Li-Calendar.vue'
+import dayja from 'dayjs'
+import { myMeetingPage, monthMeetingPage, roomsListPost } from '@/api'
 function getDate(date, AddDayCount = 0) {
-	if (!date) {
-		date = new Date();
-	}
-	if (typeof date !== 'object') {
-		date = date.replace(/-/g, '/');
-	}
-	const dd = new Date(date);
+  if (!date) {
+    date = new Date()
+  }
+  if (typeof date !== 'object') {
+    date = date.replace(/-/g, '/')
+  }
+  const dd = new Date(date)
 
-	dd.setDate(dd.getDate() + AddDayCount); // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
+  dd.setDate(dd.getDate() + AddDayCount) // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
 
-	const y = dd.getFullYear();
-	const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1; // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
-	const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate(); // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
-	return {
-		fullDate: y + '-' + m + '-' + d,
-		year: y,
-		month: m,
-		date: d,
-		day: dd.getDay()
-	};
+  const y = dd.getFullYear()
+  const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
+  const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
+  return {
+    fullDate: y + '-' + m + '-' + d,
+    year: y,
+    month: m,
+    date: d,
+    day: dd.getDay()
+  }
 }
 export default {
-	components: {
-		Calendar
-	},
-	data() {
-		return {
-			activeTab: '0',
-			recordList: [],
-			recordPage: 1,
-			currentTime1: '',
-			dateStart: '1999-05-01',
-			dateEnd: '2999-06-15',
-			mark: [],
-			selected: [
-				{
-					date: getDate(new Date(), -3).fullDate
-					// info: '鎵撳崱'
-				},
-				{
-					date: getDate(new Date(), -2).fullDate,
-					// info: '绛惧埌',
-					data: {
-						custom: '鑷畾涔変俊鎭�',
-						name: '鑷畾涔夋秷鎭ご'
-					}
-				},
-				{
-					date: getDate(new Date(), -1).fullDate,
-					info: '宸叉墦鍗�'
-				}
-			],
+  components: {
+    Calendar
+  },
+  data() {
+    return {
+      activeTab: '0',
+      recordList: [],
+      recordPage: 1,
+      myPage: 1,
+      myMeetingList: [],
+      currentDate: '',
+      dateStart: '1999-05-01',
+      dateEnd: '2999-06-15',
+      monthMark: [],
 
-		};
+      isShowStatus: false,
+      activeRoom: {
+        name: '鍏ㄩ儴浼氳瀹�',
+        id: ''
+      },
+      meetingList: [],
+
+    }
+  },
+  onLoad() {
+    this.currentDate = dayja().format('YYYY-MM-DD')
+    this.initData()
+    this.getRoomList()
+  },
+	onShow() {
+		this.tabClick('0')
 	},
-	methods: {
-		tabClick(val) {
-			this.activeTab = val;
-			if(val === '1'){
-				this.getRecordList()
-			}else{
-				this.getList()
-			}
-		},
-		handleDetail(id) {
-			uni.navigateTo({
-				url: `/pages/staff/meetingDetail?id=${id}`,
-				// url: `/pages/staff/meetingDetail`
-			});
-		},
-		changeCalendar(e) {
-			console.log(e);
-		},
-		// 鐐瑰嚮鏌愬ぉ
-		dayChange(data) {
-			console.log(data);
-			let date = data.time;
-			let yyyy = data.time.substring(0, 4);
-			let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')));
-			let dd = Number(data.time.substring(data.time.lastIndexOf('-') + 1, data.time.length));
-			mm = mm < 10 ? `0${mm}` : mm;
-			dd = dd < 10 ? `0${dd}` : dd;
-			let riqi = `${yyyy}-${mm}-${dd}`;
-			this.currentTime = riqi;
-			this.list = [];
-			this.next = false;
-			this.page = 0;
-			// this.getRoomList()
-		},
-		// 涓嬩竴鏈�
-		monthChange(data) {
-			let date = data.date.replace(/[/]/g, '-');
-			let yyyy = date.substring(0, 4);
-			let mm = Number(date.substring(date.indexOf('-') + 1, date.lastIndexOf('-')));
-			let dd = Number(date.substring(date.lastIndexOf('-') + 1, date.length));
-			mm = mm < 10 ? `0${mm}` : mm;
-			dd = dd < 10 ? `0${dd}` : dd;
-			let riqi = `${yyyy}-${mm}-${dd}`;
-			console.log('鏃ユ湡', riqi);
-			this.currentTime1 = riqi;
-			// this.getDateNum()
-		},
-		getList(){},
-		getRecordList() {
-			const { activeStatus } = this
+  onReachBottom() {
+    const { activeTab } = this
+    if (activeTab == '0') {
+      this.myPage = this.myPage + 1
+      this.getDayMeeting()
+    } else {
+      this.recordPage = this.recordPage + 1
+      this.getRecordList()
+    }
+  },
+  methods: {
+    initData() {
+      // 褰撴湀鏁版嵁
+      monthMeetingPage({
+        yearMonth: this.currentDate.slice(0, 7)
+      }).then(res => {
+        this.monthMark = res.data.filter(i => i.meetingNum > 0).map(j => {
+          return {
+            time: j.monthDate,
+            pointText: j.meetingNum,
+            pointTextColor: 'red'
+          }
+        })
+      })
+    },
+		getRoomList() {
+      roomsListPost({}).then(res => {
+        this.meetingList = [[{ id: '', name: '鍏ㄩ儴浼氳瀹�' }, ...res.data]]
+				console.log('meetingList', this.meetingList);
+      })
+    },
+    tabClick(val) {
+      this.activeTab = val
+      if (val === '1') {
+        this.recordPage = 1
+        this.getRecordList()
+      } else {
+        this.myMeetingList = []
+        this.activeRoom = {
+          name: '鍏ㄩ儴浼氳瀹�',
+          id: ''
+        }
+        this.myPage = 1
+        this.getDayMeeting()
+      }
+    },
+    seletedStatus(e) {
+			this.myMeetingList = []
+      this.activeRoom = { ...e.value[0] }
+      this.isShowStatus = false
+      this.getDayMeeting()
+    },
+    handleDetail(id) {
+      uni.navigateTo({
+        url: `/pages/staff/meetingDetail?id=${id}`,
+        // url: `/pages/staff/meetingDetail`
+      })
+    },
+    changeCalendar(e) {
+      console.log(e)
+    },
+    // 鐐瑰嚮鏌愬ぉ
+    dayChange(data) {
+      let date = data.time
+      let yyyy = data.time.substring(0, 4)
+      let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')))
+      let dd = Number(data.time.substring(data.time.lastIndexOf('-') + 1, data.time.length))
+      mm = mm < 10 ? `0${mm}` : mm
+      dd = dd < 10 ? `0${dd}` : dd
+      let riqi = `${yyyy}-${mm}-${dd}`
+      this.currentDate = riqi
+      this.myMeetingList = []
+      this.activeStatus = {
+        name: '鍏ㄩ儴浼氳瀹�',
+        key: ''
+      }
+      this.myPage = 1
+      this.getDayMeeting()
+    },
+    // 涓嬩竴鏈�
+    monthChange(data) {
+      let date = data.date.replace(/[/]/g, '-')
+      let yyyy = date.substring(0, 4)
+      let mm = Number(date.substring(date.indexOf('-') + 1, date.lastIndexOf('-')))
+      let dd = Number(date.substring(date.lastIndexOf('-') + 1, date.length))
+      mm = mm < 10 ? `0${mm}` : mm
+      dd = dd < 10 ? `0${dd}` : dd
+      let riqi = `${yyyy}-${mm}-${dd}`
+      console.log('鏃ユ湡', riqi)
+      this.currentDate = riqi
+      this.initData()
+    },
+    getRecordList() {
+      const { activeStatus } = this
       myMeetingPage({
         capacity: 10,
         page: this.recordPage,
         model: {
-					// status: activeStatus.key || null,
+          // status: activeStatus.key || null,
           // roomsId: this.roomId,
           queryType: 2
         }
       }).then(res => {
-				this.recordList = res.data.records
-			})
+        this.recordList = [...this.recordList, ...res.data.records]
+      })
     },
-	}
+    getDayMeeting() {
+      const { myPage, activeRoom, currentDate } = this
+      // 褰撳ぉ鎴戝弬涓庣殑浼氳
+      myMeetingPage({
+        model: {
+          queryType: '1',
+          roomsId: activeRoom.id,
+          queryDate: currentDate
+        },
+        page: myPage,
+        capacity: 10
+      }).then(res => {
+        this.myMeetingList = [ ...this.myMeetingList, ...res.data.records ]
+      })
+    },
+  }
 };
 </script>
 
 <style lang="scss">
 page {
-	background-color: #f7f7f7;
+  background-color: #f7f7f7;
 }
 .main_app {
-	padding: 0;
-	background-color: #f7f7f7;
-	::v-deep .uni-calendar-item--checked {
-		background-color: $uni-color-primary;
-		border-radius: 8rpx;
-	}
-	::v-deep .uni-calendar-item--isDay-text {
-		color: $uni-color-primary;
-	}
-	::v-deep .uni-calendar-item--isDay {
-		background-color: $uni-color-primary;
-		color: #fff;
-		border-radius: 8rpx;
-	}
-	.tabs {
-		display: flex;
-		background-color: #fff;
-		.tab {
-			flex: 1;
-			height: 88rpx;
-			display: flex;
-			justify-content: center;
-			align-items: center;
-			font-size: 28rpx;
-			color: #666666;
-			position: relative;
-			.line {
-				width: 60rpx;
-				height: 4rpx;
-				background: #fff;
-				border-radius: 3rpx;
-				position: absolute;
-				bottom: 0;
-				left: 50%;
-				transform: translate(-50%, 0);
-			}
-		}
-		.active {
-			font-weight: 500;
-			font-size: 30rpx;
-			color: #222222;
-			.line {
-				background-color: $uni-color-primary;
-			}
-		}
-	}
-	//
-	.card_list {
-		padding: 30rpx;
-		.card_title {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			margin-bottom: 22rpx;
-			.name {
-				display: flex;
-				align-items: center;
-				.icon {
-					width: 6rpx;
-					height: 32rpx;
-					background: $uni-color-primary;
-					border-radius: 4rpx;
-					margin-right: 16rpx;
-				}
-				.text {
-					font-weight: 600;
-					font-size: 32rpx;
-					color: #222222;
-				}
-			}
-			.meeting {
-				display: flex;
-				height: 52rpx;
-				line-height: 52rpx;
-				background: #ffffff;
-				border-radius: 26rpx;
-				border: 2rpx solid #eeeeee;
-				padding: 0 24rpx;
-				.text {
-					font-size: 24rpx;
-					color: #333333;
-				}
-			}
-		}
-		.list {
-			.item {
-				padding: 0rpx 30rpx 30rpx;
-				background: #ffffff;
-				border-radius: 8rpx;
-				margin-bottom: 24rpx;
-				.head {
-					display: flex;
-					justify-content: space-between;
-					align-items: center;
-					border-bottom: 1rpx solid #e5e5e5;
-					padding: 22rpx 0;
-					margin-bottom: 22rpx;
-					.name {
-						font-weight: 600;
-						font-size: 32rpx;
-						color: #222222;
-					}
-					.status {
-						height: 38rpx;
-						line-height: 38rpx;
-						padding: 0 16rpx;
-						border-radius: 4rpx;
-						border: 1rpx solid #999999;
-						font-size: 22rpx;
-						color: #999999;
-					}
-					.padding{
-						color: $uni-color-primary;
-						border: 1rpx solid $uni-color-primary;
-					}
-					.red{
-						color: #e23f29;
-						border: 1rpx solid #e23f29;
-					}
-				}
-				.line {
-					display: flex;
-					margin-bottom: 12rpx;
-					.label {
-						width: 140rpx;
-						color: #666666;
-					}
-					.value {
-						flex: 1;
-					}
-				}
-			}
-		}
-	}
+  padding: 0;
+  background-color: #f7f7f7;
+  ::v-deep .uni-calendar-item--checked {
+    background-color: $uni-color-primary;
+    border-radius: 8rpx;
+  }
+  ::v-deep .uni-calendar-item--isDay-text {
+    color: $uni-color-primary;
+  }
+  ::v-deep .uni-calendar-item--isDay {
+    background-color: $uni-color-primary;
+    color: #fff;
+    border-radius: 8rpx;
+  }
+  .tabs {
+    display: flex;
+    background-color: #fff;
+    .tab {
+      flex: 1;
+      height: 88rpx;
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      font-size: 28rpx;
+      color: #666666;
+      position: relative;
+      .line {
+        width: 60rpx;
+        height: 4rpx;
+        background: #fff;
+        border-radius: 3rpx;
+        position: absolute;
+        bottom: 0;
+        left: 50%;
+        transform: translate(-50%, 0);
+      }
+    }
+    .active {
+      font-weight: 500;
+      font-size: 30rpx;
+      color: #222222;
+      .line {
+        background-color: $uni-color-primary;
+      }
+    }
+  }
+  //
+  .card_list {
+    padding: 30rpx;
+    .card_title {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      margin-bottom: 22rpx;
+      .name {
+        display: flex;
+        align-items: center;
+        .icon {
+          width: 6rpx;
+          height: 32rpx;
+          background: $uni-color-primary;
+          border-radius: 4rpx;
+          margin-right: 16rpx;
+        }
+        .text {
+          font-weight: 600;
+          font-size: 32rpx;
+          color: #222222;
+        }
+      }
+      .meeting {
+        display: flex;
+        height: 52rpx;
+        line-height: 52rpx;
+        background: #ffffff;
+        border-radius: 26rpx;
+        border: 2rpx solid #eeeeee;
+        padding: 0 24rpx;
+        .text {
+          font-size: 24rpx;
+          color: #333333;
+        }
+      }
+    }
+    .list {
+      .item {
+        padding: 0rpx 30rpx 30rpx;
+        background: #ffffff;
+        border-radius: 8rpx;
+        margin-bottom: 24rpx;
+        .head {
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+          border-bottom: 1rpx solid #e5e5e5;
+          padding: 22rpx 0;
+          margin-bottom: 22rpx;
+          .name {
+            font-weight: 600;
+            font-size: 32rpx;
+            color: #222222;
+          }
+          .status {
+            height: 38rpx;
+            line-height: 38rpx;
+            padding: 0 16rpx;
+            border-radius: 4rpx;
+            border: 1rpx solid #999999;
+            font-size: 22rpx;
+            color: #999999;
+          }
+          .padding {
+            color: $uni-color-primary;
+            border: 1rpx solid $uni-color-primary;
+          }
+          .red {
+            color: #e23f29;
+            border: 1rpx solid #e23f29;
+          }
+        }
+        .line {
+          display: flex;
+          margin-bottom: 12rpx;
+          .label {
+            width: 140rpx;
+            color: #666666;
+          }
+          .value {
+            flex: 1;
+          }
+        }
+      }
+    }
+  }
 }
 .container_b {
-	width: 100%;
-	padding: 30rpx;
-	background: #ffffff;
-	padding-top: 20rpx;
-	box-sizing: border-box;
+  width: 100%;
+  padding: 30rpx;
+  background: #ffffff;
+  padding-top: 20rpx;
+  box-sizing: border-box;
 }
 </style>
diff --git a/h5/pages/staff/meetingDetail.vue b/h5/pages/staff/meetingDetail.vue
index cda2876..d5a05e9 100644
--- a/h5/pages/staff/meetingDetail.vue
+++ b/h5/pages/staff/meetingDetail.vue
@@ -1,180 +1,244 @@
 <template>
-	<view class="main_app">
-		<view class="head_app">
-			<view class="title">璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷</view>
-			<view class="text">201浼氳瀹わ綔2023骞�5鏈�4鏃� 10:00-12:00</view>
-		</view>
-		<!--  -->
-		<view class="empty"></view>
-		<view class="module_list">
-			<view class="item">
-				<view class="label">浼氳鍐呭</view>
-				<view class="value">
-					<!-- <text>涓昏璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷锛岃澶у涓�瀹氳鎸夋椂鏉ュ紑浼氾紝鏃堕棿瀹濊吹銆傛劅璋㈠ぇ瀹讹紒</text> -->
-					<u-textarea border="none" v-model="param.aaa" count :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" placeholder-class="placeholder9"	 />
-				</view>
-			</view>
-			<view class="item">
-				<view class="label">鍙備細浜哄憳</view>
-				<view class="value">
-					<view class="personnel">
-						<view class="per_item" v-for="i in 10">
-							<image src="../../static/logo@2x.png" class="avatar" mode=""></image>
-							<view class="name">鑳″叓涓�</view>
-						</view>
-					</view>
-				</view>
-			</view>
-			<view class="item">
-				<view class="label">鏈嶅姟椤�</view>
-				<view class="value">甯崱 |  鎶曞奖浠� |  绗旇鏈數鑴�</view>
-			</view>
-			<view class="item">
-				<view class="label">澶囨敞</view>
-				<view class="value">浠婂ぉ浜哄锛岃鎸夋椂鍙傚姞</view>
-			</view>
-			<view class="item">
-				<view class="label">棰勭害浜�</view>
-				<view class="value">琛屾斂閮� 璧靛己 18832319899</view>
-			</view>
-		</view>
-		<view class="empty empty2"></view>
-		<view class="main_footer">
-			<view class="btn" @click="handleSub('0')">鎾ゅ洖</view>
-			<view class="btn agree" @click="handleSub('1')">淇敼</view>
-		</view>
-	</view>
+  <view class="main_app">
+    <view class="head_app">
+      <view class="title">{{ detail.meetingName }}</view>
+      <view class="text"
+        >{{ detail.roomName }}锝渰{ detail.meetingDate }}
+        {{ detail.meetingTime }}</view
+      >
+    </view>
+    <!--  -->
+    <view class="empty"></view>
+    <view class="module_list">
+      <view class="item">
+        <view class="label">浼氳鍐呭</view>
+        <view class="value">
+          <!-- <text>涓昏璁ㄨ鏅鸿兘浼氳瀹ょ郴缁熼�夊瀷锛岃澶у涓�瀹氳鎸夋椂鏉ュ紑浼氾紝鏃堕棿瀹濊吹銆傛劅璋㈠ぇ瀹讹紒</text> -->
+          <u-textarea
+            border="none"
+            v-model="detail.meetingContent"
+            disabled
+            :maxlength="300"
+            placeholder="璇疯緭鍏ヤ細璁唴瀹�"
+            placeholder-class="placeholder9"
+          />
+        </view>
+      </view>
+      <view class="item">
+        <view class="label">鍙備細浜哄憳</view>
+        <view class="value">
+          <view class="personnel">
+            <view
+              class="per_item"
+              v-for="mem in detail.userResponseList"
+              :key="mem.id"
+            >
+              <image :src="mem.avatar" class="avatar" mode=""></image>
+              <view class="name">{{ mem.realname }}</view>
+            </view>
+          </view>
+        </view>
+      </view>
+      <view class="item">
+        <view class="label">鏈嶅姟椤�</view>
+        <view class="value">
+          <template v-for="(ser, serI) in detail.projectsResponseList">
+            <text :key="ser.id">{{ ser.name }}</text>
+            <text
+              :key="ser.id"
+              class="mr12 ml12"
+              v-if="serI != detail.projectsResponseList.length - 1"
+            >
+              |
+            </text>
+          </template>
+        </view>
+      </view>
+      <view class="item">
+        <view class="label">澶囨敞</view>
+        <view class="value">{{ detail.remark || detail.meetingRemark }}</view>
+      </view>
+      <view class="item">
+        <view class="label">棰勭害浜�</view>
+        <view class="value"
+          >{{ detail.bookingUser.companyName || "" }}
+          {{ detail.bookingUser.realname }}
+          {{ detail.bookingUser.mobile }}</view
+        >
+      </view>
+    </view>
+    <view class="empty empty2"></view>
+    <view class="main_footer" v-if="detail.meetingStatus == '1'">
+      <view class="btn" @click="handleCancel(detail.id)">鎾ゅ洖</view>
+      <view class="btn agree" @click="handleEdit">淇敼</view>
+    </view>
+    <view class="main_footer" v-if="detail.meetingStatus == '2'">
+      <view class="btn agree" @click="handleSub('2')">缁撴潫</view>
+    </view>
+  </view>
 </template>
 
 <script>
-import { meetingDetail } from '@/api'
-	export default {
-		data() {
-			return {
-				param: {},
-				detail: {}
-			};
-		},
-		onLoad(option) {
-			this.id = option.id
-			this.getDetail()
-		},
-		methods: {
-			getDetail() {
-				const { id } = this
-				meetingDetail({id}).then(res => {
-					this.detail = res.data
-				})
-			},
-			handleSub() {
-				
-			}
-		}
-	}
+import { meetingDetail, cancelById } from '@/api'
+export default {
+  data() {
+    return {
+      param: {},
+      detail: {},
+      id: ''
+    }
+  },
+  onLoad(option) {
+    this.id = option.id
+    this.getDetail()
+  },
+  methods: {
+    getDetail() {
+      const { id } = this
+      meetingDetail({ id }).then(res => {
+        this.detail = res.data
+      })
+    },
+    handleCancel(id) {
+      uni.showModal({
+        title: '鎻愮ず',
+        // confirmText: '纭',
+        content: '纭鎾ゅ洖璇ヤ細璁悧',
+        success: function (res) {
+          if (res.confirm) {
+            cancelById({ id }).then(res => {
+              if (res.code === 200) {
+                setTimeout(() => {
+                  uni.showToast({
+                    title: '鎾ゅ洖鎴愬姛',
+                    icon: 'success'
+                  })
+                })
+                setTimeout(() => {
+                  uni.navigateBack()
+                })
+              }
+            })
+          }
+        }
+      })
+
+    },
+    handleEdit() {
+      const { id } = this
+      uni.navigateTo({
+        url: `/pages/staff/meetingSubOrder?id=${id}`
+      })
+    },
+    handleSub() {
+
+    }
+  }
+}
 </script>
 
 <style lang="scss">
-	page{
-		background-color: #f7f7f7;
-	}
-	.main_app{
-		padding: 0 ;
-		.head_app{
-			padding: 30rpx;
-			background-color: #fff;
-			.title{
-				font-weight: 600;
-				font-size: 36rpx;
-				color: #222222;
-				margin-bottom: 30rpx;
-			}
-			.text{
-				font-size: 28rpx;
-				color: #666666;
-			}
-		}
-	}
-	.module_list {
-		background-color: #fff;
-		padding: 0 30rpx;
-		.item {
-			padding: 30rpx 0;
-			border-bottom: 1rpx solid #E5E5E5;
-	
-			.label {
-				font-size: 26rpx;
-				color: #666666;
-				margin-bottom: 20rpx;
-			}
-	
-			.value {
-				font-size: 30rpx;
-				display: flex;
-				align-items: center;
-				::v-deep textarea{
-					padding: 0;
-					background-color: #fff !important;
-				}
-				.personnel{
-					display: flex;
-					width: 100%;
-					overflow-x: auto;
-					.per_item{
-						flex-shrink: 0;
-							display: flex;
-							flex-direction: column;
-							justify-content: center;
-							align-items: center;
-							margin-right: 24rpx;
-							.avatar{
-								width: 72rpx;
-								height: 72rpx;
-								border-radius: 50%;
-							}
-							.name{
-								font-size: 26rpx;
-								color: #777777;
-							}
-					}
-				}
-			}
-		}
-	}
-	.main_footer {
-		padding-bottom: 64rpx;
-		display: flex;
-		justify-content: space-between;
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		width: 100%;
-		background-color: #fff;
-		padding: 0 30rpx;
-		.btn {
-			width: 336rpx;
-			height: 88rpx;
-			line-height: 88rpx;
-			background: #FFFFFF;
-			border-radius: 44rpx;
-			border: 1rpx solid #999999;
-			font-size: 32rpx;
-			text-align: center;
-			margin: 16rpx 0;
-		}
-
-		.agree {
-			background: $uni-color-primary;
-			color: #fff;
-			border: 1rpx solid $uni-color-primary;
-		}
-	}
-.empty{
-	width: 750rpx;
-		height: 20rpx;
-		background-color: #f7f7f7;
-		margin: 0 -30rpx;
+page {
+  background-color: #f7f7f7;
 }
-.empty2{
-	height: 280rpx !important;
+.main_app {
+  padding: 0;
+  .head_app {
+    padding: 30rpx;
+    background-color: #fff;
+    .title {
+      font-weight: 600;
+      font-size: 36rpx;
+      color: #222222;
+      margin-bottom: 30rpx;
+    }
+    .text {
+      font-size: 28rpx;
+      color: #666666;
+    }
+  }
+}
+.module_list {
+  background-color: #fff;
+  padding: 0 30rpx;
+  .item {
+    padding: 30rpx 0;
+    border-bottom: 1rpx solid #e5e5e5;
+
+    .label {
+      font-size: 26rpx;
+      color: #666666;
+      margin-bottom: 20rpx;
+    }
+
+    .value {
+      font-size: 30rpx;
+      display: flex;
+      align-items: center;
+      ::v-deep textarea {
+        padding: 0;
+        background-color: #fff !important;
+      }
+      .personnel {
+        display: flex;
+        width: 100%;
+        overflow-x: auto;
+        .per_item {
+          flex-shrink: 0;
+          display: flex;
+          flex-direction: column;
+          justify-content: center;
+          align-items: center;
+          margin-right: 24rpx;
+          .avatar {
+            width: 72rpx;
+            height: 72rpx;
+            border-radius: 50%;
+          }
+          .name {
+            font-size: 26rpx;
+            color: #777777;
+          }
+        }
+      }
+    }
+  }
+}
+.main_footer {
+  padding-bottom: 64rpx;
+  display: flex;
+  justify-content: space-between;
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  background-color: #fff;
+  padding: 0 30rpx;
+  .btn {
+    flex: 1;
+    height: 88rpx;
+    line-height: 88rpx;
+    background: #ffffff;
+    border-radius: 44rpx;
+    border: 1rpx solid #999999;
+    font-size: 32rpx;
+    text-align: center;
+    margin: 16rpx 8rpx;
+  }
+
+  .agree {
+    background: $uni-color-primary;
+    color: #fff;
+    border: 1rpx solid $uni-color-primary;
+  }
+}
+.empty {
+  width: 750rpx;
+  height: 20rpx;
+  background-color: #f7f7f7;
+  margin: 0 -30rpx;
+}
+.empty2 {
+  height: 280rpx !important;
 }
 </style>
diff --git a/h5/pages/staff/meetingManager.vue b/h5/pages/staff/meetingManager.vue
index f55bb51..3a75d64 100644
--- a/h5/pages/staff/meetingManager.vue
+++ b/h5/pages/staff/meetingManager.vue
@@ -1,66 +1,87 @@
 <template>
   <view class="main_app">
-    <!--  -->
-    <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
-    <!-- 鏃ュ巻 -->
-    <view class="container_b">
-      <Calendar
-        ref="Calendar"
-        :currentTime="currentDate"
-        :mark="mark"
-        :showLunar="false"
-        @dayChange="dayChange"
-        @monthChange="monthChange"
-        :rangeMode="false"
-        :maskColor="'#ffffff'"
-        :dateStart="dateStart"
-        :dateEnd="dateEnd"
-        :canDrag="false"
-      ></Calendar>
-    </view>
-    <!--  -->
-    <view class="card_list">
-      <view class="card_title">
-        <view class="name">
-          <view class="icon"></view>
-          <view class="text">浠婃棩浼氳</view>
-        </view>
-        <view class="meeting" @click="isShowStatus = true">
-          <view class="text mr24">{{ activeStatus.name }}</view>
-          <u-icon name="arrow-down" size="12" color="#999999" />
-        </view>
+    <template>
+      <!-- <uni-calendar @change="changeCalendar" :selected="selected" /> -->
+      <!-- 鏃ュ巻 -->
+      <view class="container_b">
+        <Calendar
+          ref="Calendar"
+          :currentTime="currentDate"
+          :mark="monthMark"
+          :showLunar="false"
+          @dayChange="dayChange"
+          @monthChange="monthChange"
+          :rangeMode="false"
+          :maskColor="'#ffffff'"
+          :dateStart="dateStart"
+          :dateEnd="dateEnd"
+          :canDrag="false"
+        ></Calendar>
       </view>
-      <view class="list">
-        <view class="item">
-          <view class="head">
-            <view class="name">aaaaa閫夊瀷</view>
-            <view class="status">鍗冲皢寮�濮�</view>
+      <!--  -->
+      <view class="card_list">
+        <view class="card_title">
+          <view class="name">
+            <view class="icon"></view>
+            <view class="text">浠婃棩浼氳</view>
           </view>
-          <view class="line">
-            <view class="label">浼氳鏃堕棿锛�</view>
-            <view class="value">12:00-12</view>
+          <view class="meeting">
+            <view class="text mr24" @click="isShowStatus = true">{{
+              activeRoom.name
+            }}</view>
+            <u-icon name="arrow-down" size="12" color="#999999" />
           </view>
-          <view class="line">
-            <view class="label">浼氳瀹わ細</view>
-            <view class="value">202浼氳瀹�</view>
-          </view>
-          <view class="line">
-            <view class="label">棰勭害浜猴細</view>
-            <view class="value">鏉ㄦ煇鏌�</view>
-          </view>
-          <view class="line">
-            <view class="label">澶囨敞锛�</view>
-            <view class="value">--</view>
+        </view>
+        <view class="list">
+          <view
+            @click="handleDetail(item.id)"
+            class="item"
+            v-for="item in myMeetingList"
+            :key="item.id"
+          >
+            <view class="head">
+              <view class="name">{{ item.meetingName }}</view>
+              <view class="status" v-if="item.meetingStatus == '1'"
+                >鏈紑濮�</view
+              >
+              <view class="status red" v-if="item.meetingStatus == '2'"
+                >杩涜涓�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '3'"
+                >宸茬粨鏉�</view
+              >
+              <view class="status padding" v-if="item.meetingStatus == '4'"
+                >鍗冲皢寮�濮�</view
+              >
+              <view class="status" v-if="item.meetingStatus == '5'"
+                >宸叉挙閿�</view
+              >
+            </view>
+            <view class="line">
+              <view class="label">浼氳鏃堕棿锛�</view>
+              <view class="value">{{ item.meetingTime }}</view>
+            </view>
+            <view class="line">
+              <view class="label">浼氳瀹わ細</view>
+              <view class="value">{{ item.roomName }}</view>
+            </view>
+            <view class="line">
+              <view class="label">棰勭害浜猴細</view>
+              <view class="value">{{ item.bookingUser }}</view>
+            </view>
+            <view class="line">
+              <view class="label">澶囨敞锛�</view>
+              <view class="value">{{ item.remark || item.meetingRemark }}</view>
+            </view>
           </view>
         </view>
       </view>
-    </view>
-
+    </template>
     <!--  -->
-		<u-picker
+    <u-picker
       keyName="name"
       :show="isShowStatus"
-      :columns="statusList"
+      :columns="meetingList"
       @confirm="seletedStatus"
       @cancel="isShowStatus = false"
     ></u-picker>
@@ -69,70 +90,100 @@
 
 <script>
 import Calendar from '@/components/Li-Calendar/Li-Calendar.vue'
-import dayjs from 'dayjs'
-import { myMeetingPage } from '@/api'
+import dayja from 'dayjs'
+import { myMeetingPage, monthMeetingPage, roomsListPost } from '@/api'
+function getDate(date, AddDayCount = 0) {
+  if (!date) {
+    date = new Date()
+  }
+  if (typeof date !== 'object') {
+    date = date.replace(/-/g, '/')
+  }
+  const dd = new Date(date)
 
+  dd.setDate(dd.getDate() + AddDayCount) // 鑾峰彇AddDayCount澶╁悗鐨勬棩鏈�
+
+  const y = dd.getFullYear()
+  const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 鑾峰彇褰撳墠鏈堜唤鐨勬棩鏈燂紝涓嶈冻10琛�0
+  const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 鑾峰彇褰撳墠鍑犲彿锛屼笉瓒�10琛�0
+  return {
+    fullDate: y + '-' + m + '-' + d,
+    year: y,
+    month: m,
+    date: d,
+    day: dd.getDay()
+  }
+}
 export default {
   components: {
     Calendar
   },
   data() {
     return {
+      activeTab: '0',
+      recordList: [],
+      recordPage: 1,
+      myPage: 1,
+      myMeetingList: [],
       currentDate: '',
-      dateStart: '2024-01-01',
+      dateStart: '1999-05-01',
       dateEnd: '2999-06-15',
-			mark: [
-				{
-					time: '2024-05-30'
-				},
-				{
-					time: '2024-05-22',
-					pointText: 'aaa',
-					pointTextColor: '#fff'
-				},
-				{
-					time: '2024-05-28',
-					text: ['111','222'],
-					pointTextColor: '#fff'
-				}
-			],
-			activeStatus: {
-				name: '鍏ㄩ儴浼氳瀹�'
-			},
-			isShowStatus: false,
-			statusList: [[
-				{ name: '鍏ㄩ儴浼氳瀹�', key: '' },
-				{ name: '鏈紑濮�', key: '1' },
-				{ name: '宸茬粨鏉�', key: '2' },
-			]],
-			dataList: [],
-			page: 1
+      monthMark: [],
+
+      isShowStatus: false,
+      activeRoom: {
+        name: '鍏ㄩ儴浼氳瀹�',
+        id: ''
+      },
+      meetingList: [],
+
     }
   },
   onLoad() {
-		this.currentDate = dayjs().format('YYYY-MM-DD')
-		this.getList()
+    this.currentDate = dayja().format('YYYY-MM-DD')
+    this.initData()
+    this.getRoomList()
+  },
+	onShow() {
+		this.myPage = 1
+    this.myMeetingList = []
+    this.getDayMeeting()
+	},
+  onReachBottom() {
+    this.myPage = this.myPage + 1
+      this.getDayMeeting()
   },
   methods: {
-    getList() {
-			const { activeStatus } = this
-      myMeetingPage({
-        capacity: 10,
-        page: this.page,
-        model: {
-          queryDate: this.currentDate,
-					status: activeStatus.key || null,
-          // roomsId: this.roomId,
-          queryType: 2
-        }
+    initData() {
+      // 褰撴湀鏁版嵁
+      monthMeetingPage({
+        yearMonth: this.currentDate.slice(0, 7)
       }).then(res => {
-				this.dataList = res.data.records
-			})
+        this.monthMark = res.data.filter(i => i.meetingNum > 0).map(j => {
+          return {
+            time: j.monthDate,
+            pointText: j.meetingNum,
+            pointTextColor: 'red'
+          }
+        })
+      })
     },
-    handleDetail(item) {
+		getRoomList() {
+      roomsListPost({}).then(res => {
+        this.meetingList = [[{ id: '', name: '鍏ㄩ儴浼氳瀹�' }, ...res.data]]
+				console.log('meetingList', this.meetingList);
+      })
+    },
+    seletedStatus(e) {
+			this.myMeetingList = []
+      this.activeRoom = { ...e.value[0] }
+      this.isShowStatus = false
+      this.getDayMeeting()
+    },
+    handleDetail(id) {
       uni.navigateTo({
-        // url: `/pages/staff/meetingDetail?id=${item.id}`,
-        url: `/pages/staff/meetingDetail`
+        url: `/pages/staff/meetingDetail?id=${id}`,
+        // url: `/pages/staff/meetingDetail`
       })
     },
     changeCalendar(e) {
@@ -140,7 +191,6 @@
     },
     // 鐐瑰嚮鏌愬ぉ
     dayChange(data) {
-      console.log(data)
       let date = data.time
       let yyyy = data.time.substring(0, 4)
       let mm = Number(data.time.substring(data.time.indexOf('-') + 1, data.time.lastIndexOf('-')))
@@ -148,11 +198,14 @@
       mm = mm < 10 ? `0${mm}` : mm
       dd = dd < 10 ? `0${dd}` : dd
       let riqi = `${yyyy}-${mm}-${dd}`
-      this.currentTime = riqi
-      this.list = []
-      this.next = false
-      this.page = 0
-      // this.getRoomList()
+      this.currentDate = riqi
+      this.myMeetingList = []
+      this.activeStatus = {
+        name: '鍏ㄩ儴浼氳瀹�',
+        key: ''
+      }
+      this.myPage = 1
+      this.getDayMeeting()
     },
     // 涓嬩竴鏈�
     monthChange(data) {
@@ -164,14 +217,25 @@
       dd = dd < 10 ? `0${dd}` : dd
       let riqi = `${yyyy}-${mm}-${dd}`
       console.log('鏃ユ湡', riqi)
-      this.currentTime1 = riqi
-      // this.getDateNum()
+      this.currentDate = riqi
+      this.initData()
     },
-		seletedStatus(e) {
-			this.activeStatus = { ...e.value[0] }
-			this.isShowStatus = false
-			this.getList()
-		},
+
+    getDayMeeting() {
+      const { myPage, activeRoom, currentDate } = this
+      // 褰撳ぉ鎴戝弬涓庣殑浼氳
+      myMeetingPage({
+        model: {
+          queryType: '1',
+          roomsId: activeRoom.id,
+          queryDate: currentDate
+        },
+        page: myPage,
+        capacity: 10
+      }).then(res => {
+        this.myMeetingList = [ ...this.myMeetingList, ...res.data.records ]
+      })
+    },
   }
 };
 </script>
@@ -190,10 +254,6 @@
   ::v-deep .uni-calendar-item--isDay-text {
     color: $uni-color-primary;
   }
-	::v-deep .calendar-point {
-    /* background-color: $uni-color-primary; */
-  }
-	
   ::v-deep .uni-calendar-item--isDay {
     background-color: $uni-color-primary;
     color: #fff;
@@ -274,6 +334,7 @@
         padding: 0rpx 30rpx 30rpx;
         background: #ffffff;
         border-radius: 8rpx;
+        margin-bottom: 24rpx;
         .head {
           display: flex;
           justify-content: space-between;
@@ -295,6 +356,14 @@
             font-size: 22rpx;
             color: #999999;
           }
+          .padding {
+            color: $uni-color-primary;
+            border: 1rpx solid $uni-color-primary;
+          }
+          .red {
+            color: #e23f29;
+            border: 1rpx solid #e23f29;
+          }
         }
         .line {
           display: flex;
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index 5e07b7b..18d5a41 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -5,7 +5,9 @@
         <view class="name">浼氳鏃堕棿</view>
         <view class="line">
           <view class="label">
-            {{ param.activeDate }} {{ param.startTime }}-{{ param.endTime }}
+            {{ 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>
@@ -60,8 +62,8 @@
         <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>
+              {{ param.sysList.map((i) => i.realname).join(",") }}
+            </text>
             <text
               v-else
               class="placeholder9"
@@ -83,10 +85,10 @@
           <view class="label">
             <view
               class="service_item"
-							:class="{active: item.checked}"
+              :class="{ active: item.checked }"
               v-for="(item, index) in info.projectList"
               :key="index"
-							@click="serviceClick(item)"
+              @click="serviceClick(item)"
             >
               {{ item.projectName }}
             </view>
@@ -108,7 +110,8 @@
         </view>
       </view>
 
-      <view class="sub_btn" @click="onSubmit"> 纭棰勭害 </view>
+      <view v-if="param.id" class="sub_btn" @click="onUpdate">纭淇敼</view>
+      <view v-else class="sub_btn" @click="onSubmit"> 纭棰勭害 </view>
     </view>
   </view>
 </template>
@@ -116,7 +119,10 @@
 <script>
 import {
   reservationMeeting,
-  getRoomDetail
+  getRoomDetail,
+  meetingDetail,
+  updateById,
+  getAppRoomDetail
 } from '@/api'
 import dayjs from 'dayjs'
 export default {
@@ -124,23 +130,30 @@
     return {
       param: {},
       userInfo: uni.getStorageSync('userInfo'),
-			info: {},
+      info: {},
     }
   },
   onLoad(option) {
-    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()
+    if (option.id) {
+      uni.setNavigationBarTitle({
+        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() {
+  mounted() {
     this.$eventBus.$on('meetingPeo', (res) => {
-      this.$set(this.param, 'sysList', res.map(i=>{
+      this.$set(this.param, 'sysList', res.map(i => {
         i.userId = i.id
         return i
       }))
@@ -149,61 +162,109 @@
     })
   },
   methods: {
-		onSubmit() {
-			const { param, info } = this
-			if (!param.name) return uni.showToast({
+    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,
-				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'
+      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'
+          })
+        }
+      })
+    },
+    onSubmit() {
+      const { param, info } = this
+      if (!param.name) 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 = param.yudingDate + ' ' + param.startTime
-			let endTime = param.yudingDate + ' ' + param.endTime
+      const { param } = this
+      let startTime = param.yudingDate + ' ' + param.startTime
+      let endTime = param.yudingDate + ' ' + param.endTime
       uni.navigateTo({
         url: `/pages/staff/meetingSel?startTime=${startTime}&endTime=${endTime}`
       })
     },
-		serviceClick(item) {
-			const { info } = this
-			info.projectList.forEach(ite => {
-				if(ite.projectId === item.projectId){
-					ite.checked = !ite.checked
-				}
-			})
-			this.$forceUpdate()
-		},
+    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)
+      const roomId = Number(this.param.roomId)
       getRoomDetail({ roomId }).then(res => {
-        res.data.projectList.forEach(item => {
-          item.active = false
-        })
         this.info = res.data
-				if(this.info && this.info.projectList){
-					this.info.projectList.forEach(i => {
-						i.checked = false
-					})
-				}
+        if (this.info && this.info.projectList) {
+          this.info.projectList.forEach(i => {
+            i.checked = false
+
+          })
+        }
       })
     }
   }
@@ -233,10 +294,10 @@
           padding: 0 24rpx;
           margin-right: 20rpx;
         }
-				.active{
-					background-color: #4d99a8;
-					color: #fff;
-				}
+        .active {
+          background-color: #4d99a8;
+          color: #fff;
+        }
       }
     }
   }
diff --git a/h5/pages/staff/memberSel.vue b/h5/pages/staff/memberSel.vue
index ee96a16..2e2dc60 100644
--- a/h5/pages/staff/memberSel.vue
+++ b/h5/pages/staff/memberSel.vue
@@ -116,10 +116,8 @@
 			console.log( e.detail.value[0]);
 			const id = Number(e.detail.value[0])
 			const item = this.memberList.find(i => i.id === id)
-			console.log('item', item);
-			uni.navigateTo({
-				url: `/pages/staff/snapshot?id=${item.id}&name=${item.name}`
-			})
+      this.$eventBus.$emit('snapshotSel', item)
+			uni.navigateBack()
     },
     initData() {
       const { param } = this
diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue
index 9b8a315..a72a86b 100644
--- a/h5/pages/staff/snapshot.vue
+++ b/h5/pages/staff/snapshot.vue
@@ -55,23 +55,32 @@
             class="adduser_list_item_ipt1_upload"
             v-for="(item, i) in submitFileList"
             :key="i"
-            ><image :src="item.fileurlFull" mode="widthFix"></image
+            ><image
+              v-if="item.type == 0"
+              :src="item.fileurlFull"
+              mode="widthFix"
+            ></image
+            ><video
+              v-if="item.type == 1"
+              :src="item.fileurlFull"
+            ></video
           ></view>
         </view>
       </view>
       <view class="empty"></view>
-       <view class="upload_line" style="padding: 15px 0 0;">
-        <view class="name" style="margin-bottom: 10rpx;">
-          <text style="color: #e42d2d;">*</text>
+      <view class="upload_line" style="padding: 15px 0 0">
+        <view class="name" style="margin-bottom: 10rpx">
+          <text style="color: #e42d2d">*</text>
           <text>鎯呭喌璇存槑</text>
         </view>
-        <view class="value"
-          ><textarea
+        <view class="value">
+          <textarea
             placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
             minlength="10"
             v-model="param.content"
             placeholder-style="color: #999999;"
-        /></view>
+          />
+        </view>
       </view>
       <view class="empty"></view>
       <view class="line">
@@ -184,17 +193,19 @@
     }
   },
   onLoad(option) {
-    if (option && option.id) {
-      this.$set(this.param, 'checkUserId', option.id)
-      this.$set(this.param, 'applyCheckUserId', option.id)
-      this.$set(this.param, 'checkorName', option.name)
-    }
     this.initConfig()
     const userInfo = uni.getStorageSync('userInfo') || {}
     this.$set(this.param, 'memberName', userInfo.realname)
     this.$set(this.param, 'memberPhone', userInfo.mobile)
     this.$set(this.param, 'memberId', userInfo.id)
     this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+  },
+  mounted() {
+    this.$eventBus.$on('snapshotSel', (option) => {
+      this.$set(this.param, 'checkUserId', option.id)
+      this.$set(this.param, 'applyCheckUserId', option.id)
+      this.$set(this.param, 'checkorName', option.name)
+    })
   },
   methods: {
     onSubmit() {
@@ -258,7 +269,7 @@
     uploadImage() {
       this.showUpload = false
       uni.chooseImage({
-        count: 6,
+        count: 1,
         success: (chooseImageRes) => {
           console.log('chooseImageRes.tempFilePaths', chooseImageRes.tempFilePaths)
           uni.showLoading({ title: '涓婁紶涓�', mask: true })
@@ -296,30 +307,27 @@
       uni.chooseVideo({
         success: (chooseImageRes) => {
           uni.showLoading({ title: '涓婁紶涓�', mask: true })
-          for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
-            uni.uploadFile({
-              url: `${uploadUrl}`,
-              filePath: chooseImageRes.tempFilePaths[i],
-              name: 'file',
-              formData: {
-                folderCode: 'HIDDEN_DANGER_FILE'
-              },
-              success: (uploadFileRes) => {
-                let res = JSON.parse(uploadFileRes.data)
-                console.log('uploadFileRes', res)
-                let obj = { type: '1' }
-                obj.fileurl = res.data.halfPath
-                obj.fileurlFull = res.data.addr
-                that.submitFileList.push(obj)
-                console.log(that.submitFileList)
-              },
-              complete() {
-                if (i === chooseImageRes.tempFilePaths.length - 1) {
-                  uni.hideLoading()
-                }
+          uni.uploadFile({
+            url: `${uploadUrl}`,
+            filePath: chooseImageRes.tempFilePath,
+            name: 'file',
+            formData: {
+              folderCode: 'HIDDEN_DANGER_FILE'
+            },
+            success: (uploadFileRes) => {
+              let res = JSON.parse(uploadFileRes.data)
+              console.log('res', res)
+              let obj = {
+                type: '1'
               }
-            })
-          }
+              obj.fileurl = res.data.halfPath
+              obj.fileurlFull = res.data.addr
+              this.submitFileList.push(obj)
+            },
+            complete() {
+              uni.hideLoading()
+            }
+          })
         }
       })
     },
@@ -366,7 +374,7 @@
   }
   .upload_line {
     padding: 30rpx 0;
-    .wrap{
+    .wrap {
       display: flex;
       flex-wrap: wrap;
     }
@@ -387,6 +395,9 @@
         width: 100%;
         height: 100%;
       }
+      video {
+        width: 100%;
+      }
     }
   }
 }
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index b9ed742..febd30f 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -12,10 +12,10 @@
         </view>
       </view>
       <view class="box_head_list">
-        <view class="box_head_item active">寰呭鐞� 12</view>
-        <view class="box_head_item">宸插鐞�</view>
-        <view class="box_head_item">鎴戝彂璧风殑</view>
-        <view class="box_head_item">鎶勯�佹垜鐨�</view>
+        <view @click="statusClick()" class="box_head_item active">寰呭鐞�</view>
+        <view @click="statusClick()" class="box_head_item">宸插鐞�</view>
+        <view @click="statusClick()" class="box_head_item">鎴戝彂璧风殑</view>
+        <view @click="statusClick()" class="box_head_item">鎶勯�佹垜鐨�</view>
       </view>
     </scroll-view>
     <view class="box_list">
@@ -139,7 +139,10 @@
         startTime: '',
         endTime: ''
       },
-      pagination: {},
+      pagination: {
+        capacity: 10,
+        page: 1
+      },
       dataList: [],
       cate: [
         { name: '璁垮鐢宠', id: 1 },
@@ -152,12 +155,20 @@
     this.getList()
   },
   methods: {
+    statusClick(val) {
+      this.pagination.page = 1
+      this.getList()
+    },
     getList() {
-      const { pagination } = this
+      const { pagination, search } = this
+      pagination.page++
       taskCenter({
-        model: {}
+        ...pagination,
+        model: {
+          ...search
+        }
       }).then(res => {
-        this.dataList = res.data.records
+        this.dataList = [...this.dataList, ...res.data.records]
       })
     },
     handleAppr(item) {
diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue
index f11605d..3df0a80 100644
--- a/h5/pages/staff/vehicle/sendACar.vue
+++ b/h5/pages/staff/vehicle/sendACar.vue
@@ -61,10 +61,11 @@
     <!-- 鏃ユ湡 -->
     <u-datetime-picker
       mode="date"
+      v-model="param.queryDate"
       :show="isShowDate"
       :minDate="minDate"
+      closeOnClickOverlay
       @close="isShowDate = false"
-      :closeOnClickOverlay="true"
       @confirm="seletedDate"
       @cancel="isShowDate = false"
     />
@@ -81,6 +82,7 @@
       isShowDate: false,
       carsList: [],
       param: {
+        queryDate: dayjs().format('YYYY-MM-DD'),
         memberId: uni.getStorageSync('userInfo').memberId
       },
       minDate: '',
@@ -89,7 +91,7 @@
         capacity: 10
       },
       total: 0,
-      dataList: []
+      dataList: [],
     }
   },
   onLoad() {
@@ -107,6 +109,10 @@
     getList() {
       const { param, pagination } = this
       pagination.page = pagination.page + 1
+      if(param.queryDate){
+        param.queryStartTime = param.queryDate + ' 00:00:00'
+        param.queryEndTime = param.queryDate + ' 23:59:59'
+      }
       carUseBookPaiche({
         ...pagination,
         model: { ...param }
@@ -126,21 +132,17 @@
 		},
     seletedCar(e) {
       const item = e.value[0]
+      this.pagination.page = 0
       this.$set(this.param, 'carCode', item.code)
       this.$set(this.param, 'carId', item.id)
       this.isShowCar = false
-      if (this.param.carId && this.param.queryDate) {
-        this.pagination.page = 0
-        this.getList()
-      }
+      this.getList()
     },
     seletedDate(e) {
       this.param.queryDate = dayjs(e.value).format('YYYY-MM-DD')
+      this.pagination.page = 0
       this.isShowDate = false
-      if (this.param.carId && this.param.queryDate) {
-        this.pagination.page = 0
-        this.getList()
-      }
+      this.getList()
     },
     endtimeClose() {
       this.param.endTime = ''
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index af0f3ec..8ffdd4c 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -16,19 +16,25 @@
     <view class="module_list">
       <view class="item">
         <view class="label">棰勮鐢ㄨ溅鏃舵</view>
-        <view class="value">{{ info.startTime.slice(0, 16) }}鑷硔{ info.endTime.slice(0, 16) }}</view>
+        <view class="value" v-if="info.startTime"
+          >{{ info.startTime.slice(0, 16) }}鑷硔{
+            info.endTime.slice(0, 16)
+          }}</view
+        >
       </view>
-			<view class="item">
+      <view class="item">
         <view class="label">棰勮鍑哄彂鏃堕棿</view>
         <view class="value">{{ info.planUseDate }}</view>
       </view>
-			<view class="item">
+      <view class="item">
         <view class="label">涔樿溅浜哄憳</view>
         <view class="value">{{ info.memberNames }}</view>
       </view>
       <view class="item">
         <view class="label">鐩殑鍦�</view>
-        <view class="value">{{ info.type == '1' ? '甯傚' : '瀹ゅ唴' }}锛歿{ info.addr }}</view>
+        <view class="value"
+          >{{ info.type == "1" ? "甯傚" : "瀹ゅ唴" }}锛歿{ info.addr }}</view
+        >
       </view>
       <view class="item">
         <view class="label">鐢ㄨ溅浜嬬敱</view>
@@ -46,31 +52,27 @@
     <!-- 娴佺▼ -->
     <view class="flow_wrap">
       <view class="flow_title">娴佺▼</view>
-      <view class="list">
-        <view class="item">
+      <view
+        class="list"
+        v-if="
+          info.approveDateVO != null && info.approveDateVO.approveList != null
+        "
+      >
+        <view
+          class="item"
+          v-for="(item, index) in info.approveDateVO.approveList"
+          :key="item.id"
+        >
+          <view class="separate"></view>
           <view class="avatar">
-            <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
             <image
-              class="status"
-              src="@/static/staff/liucheng_success@2x.png"
-              mode="widthFix"
+              class="img"
+              :src="
+                item.faceImg
+                  ? item.faceImg
+                  : require('@/static/meeting/common/default_user@2x.png')
+              "
             />
-            <view class="separate"></view>
-          </view>
-          <view class="content">
-            <view class="head">
-              <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
-              <view class="time">time</view>
-            </view>
-            <view class="name_wrap">
-              <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
-            </view>
-            <view class="remark">鍚屾剰鏀捐</view>
-          </view>
-        </view>
-        <view class="item">
-          <view class="avatar">
-            <image class="img" src="@/static/logo@2x.png" mode="widthFix" />
             <image
               class="status"
               src="@/static/staff/liucheng_success@2x.png"
@@ -79,19 +81,36 @@
           </view>
           <view class="content">
             <view class="head">
-              <view class="event">鏌愭煇鎻愪氦鐨勬嫓璁跨敵璇�</view>
-              <view class="time">time</view>
+              <view class="event">{{ item.title }}</view>
+              <view class="time">{{ item.checkDate }}</view>
             </view>
             <view class="name_wrap">
-              <text>鏉庝笢(<text class="status">澶勭悊涓�</text>)</text>
+              <text
+                >{{ item.memberName
+                }}<text class="status" v-if="item.statusInfo"
+                  >({{ item.statusInfo }})</text
+                ></text
+              >
             </view>
-            <view class="carbon">
-              <view class="carbon_item" v-for="i in 12">
+            <view v-if="item.checkInfo" class="remark">{{
+              item.checkInfo
+            }}</view>
+            <!-- 鎶勯�佷汉 -->
+            <view v-if="item.approveType == 1" class="children">
+              <view
+                class="child"
+                v-for="child in item.approveList"
+                :key="child.id"
+              >
                 <image
-                  src="../../../static/logo@2x.png"
-                  mode="widthFix"
-                ></image>
-                <view class="text">name</view>
+                  class="child_img"
+                  :src="
+                    child.faceImg
+                      ? child.faceImg
+                      : require('@/static/meeting/common/default_user@2x.png')
+                  "
+                />
+                <view>{{ child.memberName }}</view>
               </view>
             </view>
           </view>
@@ -100,10 +119,32 @@
     </view>
     <view class="emyty"></view>
     <view class="main_footer">
-      <view class="btn" @click="handleSub('0')">鎷掔粷</view>
-      <view class="btn agree" @click="handleSub('1')">鍚屾剰</view>
+      <!-- <view class="btn" @click="handleSub(3)">鎷掔粷</view>
+      <view class="btn agree" @click="handleSub(2)">鍚屾剰</view> -->
+      <view class="btn agree" @click="isShowBack = true">鎾ら攢鐢ㄨ溅</view>
     </view>
 
+    <!-- 鎾ら攢 -->
+    <u-popup
+      :show="isShowBack"
+      :round="10"
+      :safeAreaInsetBottom="true"
+      mode="bottom"
+      @close="isShowBack = false"
+    >
+      <view class="appr_modal">
+        <view class="title">鎾ら攢鐢ㄨ溅</view>
+        <view class="line"> 鎾ら攢璇存槑 </view>
+        <textarea
+          v-model="backParam.info"
+          placeholder="闈炲繀濉�"
+          placeholder-class="placeholder9"
+        />
+        <view class="main_footer">
+          <view class="btn agree" @click="onSubBack">鎻愪氦</view>
+        </view>
+      </view>
+    </u-popup>
     <!--  -->
     <u-popup
       :show="showApprModal"
@@ -113,29 +154,53 @@
       @close="showApprModal = false"
     >
       <view class="appr_modal">
-        <view class="title">鍚屾剰</view>
+        <view class="title">{{ param.status == 2 ? "鍚屾剰" : "鎷掔粷" }}</view>
+        <view class="line" @click="isShowDrive = true">
+          <text v-if="param.driverName">{{ param.driverName }}</text>
+          <text v-else class="placeholder9">娲捐溅鍙告満</text>
+          <u-icon class="ml12" name="arrow-right" color="#999999" />
+        </view>
         <textarea
-          placeholder="鍚屾剰璇存槑锛岄潪蹇呭~"
+          v-model="param.checkInfo"
+          :placeholder="
+            param.status == 2 ? '鍚屾剰璇存槑锛岄潪蹇呭~' : '鎷掔粷璇存槑锛岄潪蹇呭~'
+          "
           placeholder-class="placeholder9"
         />
         <view class="main_footer">
           <view class="btn" @click="showApprModal = false">鍙栨秷</view>
-          <view class="btn agree">鎻愪氦</view>
+          <view class="btn agree" @click="onSubmit">鎻愪氦</view>
         </view>
       </view>
     </u-popup>
+    <!-- 鍙告満 -->
+    <u-picker
+      keyName="name"
+      :show="isShowDrive"
+      @close="isShowDrive = false"
+      :closeOnClickOverlay="true"
+      :columns="driveList"
+      @confirm="seletedDrive"
+      @cancel="isShowDrive = false"
+    ></u-picker>
   </view>
 </template>
 
 <script>
-import { carUseBookDetail } from '@/api'
+import { carUseBookDetail, carUseBookAppr, driveListPos, carUseBookBack } from '@/api'
 export default {
   data() {
     return {
       showApprModal: false,
+      isShowBack: false,
+      backParam: {},
+      isShowDrive: false,
       id: '',
       info: {},
-      param: {},
+      param: {
+        status: ''
+      },
+      driveList: []
 
     }
   },
@@ -150,15 +215,69 @@
         this.info = { ...res.data }
       })
     },
-    handleSub(flag) {
+    onSubBack() {
+      carUseBookBack({
+        id: this.id,
+        info: this.backParam.info
+      }).then(res => {
+        if (res.code === 200) {
+          uni.showToast({
+            title: '鎾ら攢鎴愬姛',
+            icon: 'success',
+            duration: 2000
+          })
+          this.isShowBack = false
+          setTimeout(() => {
+            uni.navigateBack()
+          }, 1000)
+        }
+      })
+    },
+    onSubmit() {
+      const { param, info } = this
+      carUseBookAppr({
+        status: param.status,
+        objType: info.type == 1 ? 4 : 3,
+        objId: this.id,
+        driverId: param.driverId,
+        checkInfo: param.checkInfo
+      }).then(res => {
+        if (res.code === 200) {
+          this.showApprModal = false
+          setTimeout(() => {
+            uni.showToast({
+              title: '鎿嶄綔鎴愬姛',
+              icon: 'success'
+            })
+          })
+          uni.navigateBack()
+        }
+      })
+    },
+    handleSub(status) {
       // this.param.flag = 
-      if (flag === '1') {
-
+      this.param = {
+        status
+      }
+      this.showApprModal = true
+      if (status === 2) { // 鍚屾剰
+        this.getDriveList()
       } else {
 
       }
       this.showApprModal = true
-    }
+    },
+    getDriveList() {
+      driveListPost({}).then(res => {
+        this.driveList = [res.data]
+      })
+    },
+    seletedDrive(e) {
+      console.log(e.value[0])
+      this.$set(this.param, 'driverId', e.value[0].id)
+      this.$set(this.param, 'driverName', e.value[0].name)
+      this.isShowDrive = false
+    },
   },
 }
 </script>
@@ -186,7 +305,16 @@
       .item {
         display: flex;
         margin-bottom: 48rpx;
-
+        position: relative;
+        .separate {
+          position: absolute;
+          width: 4rpx;
+          height: 100%;
+          background-color: #eeeeee;
+          left: 40rpx;
+          transform: translate(-50%, 0);
+          top: 80rpx;
+        }
         .avatar {
           width: 80rpx;
           height: 80rpx;
@@ -206,16 +334,6 @@
             position: absolute;
             right: 0;
             bottom: 0;
-          }
-
-          .separate {
-            position: absolute;
-            width: 4rpx;
-            height: 100%;
-            background-color: #eeeeee;
-            left: 50%;
-            transform: translate(-50%, 0);
-            bottom: -80rpx;
           }
         }
 
@@ -243,6 +361,23 @@
 
             .status {
               color: $uni-color-primary;
+            }
+          }
+          .children {
+            display: flex;
+            flex-wrap: wrap;
+            margin-top: 12rpx;
+            .child {
+              display: flex;
+              flex-direction: column;
+              justify-content: center;
+              align-items: center;
+              margin-right: 12rpx;
+              .child_img {
+                width: 48rpx;
+                height: 48rpx;
+                border-radius: 50%;
+              }
             }
           }
 
@@ -274,6 +409,11 @@
               font-size: 26rpx;
               color: #777777;
             }
+          }
+        }
+        &:nth-last-child(1) {
+          .separate {
+            height: 0;
           }
         }
       }
@@ -356,7 +496,7 @@
     justify-content: space-between;
 
     .btn {
-      width: 336rpx;
+      flex: 1;
       height: 88rpx;
       line-height: 88rpx;
       background: #ffffff;
@@ -364,7 +504,7 @@
       border: 1rpx solid #999999;
       font-size: 32rpx;
       text-align: center;
-      margin: 16rpx 0;
+      margin: 16rpx;
     }
 
     .agree {
@@ -376,7 +516,14 @@
 
   .appr_modal {
     padding: 36rpx 30rpx 0;
-
+    .line {
+      height: 90rpx;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      border-bottom: 1rpx solid #e4e4e4;
+      margin-bottom: 20rpx;
+    }
     .title {
       font-weight: 500;
       font-size: 32rpx;

--
Gitblit v1.9.3