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