From 9e47e0ece28c6145638aecca5bdf86857c049cf9 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 31 五月 2024 18:23:34 +0800
Subject: [PATCH] ‘’
---
h5/pages.json | 18
h5/api/index.js | 1
h5/pages/staff/meetingSubOrder.vue | 368 +++++--
h5/pages/staff/meetingSub.vue | 619 ++++++++-----
h5/pages/staff/meetingSel.vue | 322 ++++++
h5/pages/staff/vehicle/sendACar.vue | 6
h5/utils/service.js | 20
h5/pages/staff/vehicle/shinei.vue | 3
/dev/null | 232 ----
h5/api/staff.js | 20
h5/App.vue | 11
h5/pages/staff/vehicle/sendACarDetail.vue | 407 ++++++++
h5/pages/staff/vehicle/applePeo.vue | 107 +
h5/pages/staff/meetingManager.vue | 576 ++++++-----
h5/api/meeting.js | 58 +
h5/pages/staff/vehicle/apply.vue | 8
16 files changed, 1,831 insertions(+), 945 deletions(-)
diff --git a/h5/App.vue b/h5/App.vue
index 28cf67f..7306882 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -1,5 +1,5 @@
<script>
-import { wxAuthorize } from '@/api'
+import { wxAuthorize, refreshToken } from '@/api'
export default {
onLaunch: function () {
var that = this
@@ -27,6 +27,15 @@
})
}
}
+ // 鍒锋柊token
+ const token = uni.getStorageSync('token')
+ if(token){
+ // refreshToken().then(res => {
+ // if(res.code && res.code === 200){
+ // this.$store.commit('setToken', res.data)
+ // }
+ // })
+ }
},
onShow: function () {
console.log('App Show')
diff --git a/h5/api/index.js b/h5/api/index.js
index a398f63..6c90980 100644
--- a/h5/api/index.js
+++ b/h5/api/index.js
@@ -2,6 +2,7 @@
export * from '@/utils/config.js'
export * from './visitor'
export * from './staff'
+export * from './meeting'
// 鏌ヨ瀛楀吀鍊兼暟鎹�
export const getSystemDictData = (data) => {
diff --git a/h5/api/meeting.js b/h5/api/meeting.js
new file mode 100644
index 0000000..4f7a800
--- /dev/null
+++ b/h5/api/meeting.js
@@ -0,0 +1,58 @@
+import { http } from '@/utils/service.js'
+
+// 浼氳瀹ゅ垪琛�
+export const roomsListPost = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/rooms/roomsList',
+ method: 'get',
+ data
+ })
+}
+// 浼氳瀹ゆ椂闂存
+export const getRoomUseTime = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/rooms/getRoomUseTime',
+ method: 'post',
+ data
+ })
+}
+// 浼氳瀹ゆ椂闂存 棰勫畾浼氳瀹�
+export const reservationMeeting = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/meeting/reservationMeeting',
+ method: 'post',
+ data
+ })
+}
+// 浼氳瀹ゆ椂闂存 璇︽儏
+export const meetingDetail = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/meeting/meetingDetail',
+ method: 'get',
+ data
+ })
+}
+// 浼氳瀹� 浜哄憳
+export const userPagePost = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/meeting/userPage',
+ method: 'post',
+ data
+ })
+}
+// 浼氳瀹� 璇︽儏
+export const getRoomDetail = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/rooms/getRoomDetail',
+ method: 'get',
+ data
+ })
+}
+// 浼氳瀹� 绠$悊
+export const myMeetingPage = (data) => {
+ return http({
+ url: 'meetingAdmin/cloudService/web/meeting/myMeetingPage',
+ method: 'post',
+ data
+ })
+}
diff --git a/h5/api/staff.js b/h5/api/staff.js
index 69a4543..456d6f8 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -3,20 +3,27 @@
// login
export const loginPost = (data) => {
return http({
- url: '/loginH5',
+ url: 'loginH5',
method: 'post',
data
})
}
export const loginCaptcha = () => {
return http({
- url: '/captcha',
+ url: 'captcha',
method: 'get'
+ })
+}
+// 鍒锋柊token
+export const refreshToken = () => {
+ return http({
+ url: 'refreshtoken',
+ method: 'post'
})
}
export const getUserInfo = () => {
return http({
- url: '/getUserInfo',
+ url: 'getUserInfo',
method: 'get'
})
}
@@ -135,4 +142,11 @@
method: 'post',
data
})
+}
+// 鏌ヨ杞﹁締 娲捐溅璁板綍 璇︽儏
+export const carUseBookDetail = (id) => {
+ return http({
+ url: 'visitsAdmin/cloudService/business/carUseBook/'+id,
+ method: 'get'
+ })
}
\ No newline at end of file
diff --git a/h5/pages.json b/h5/pages.json
index 0c91e34..0afcd34 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -391,6 +391,24 @@
}
}
+ ,{
+ "path" : "pages/staff/vehicle/sendACarDetail",
+ "style" :
+ {
+ "navigationBarTitleText": "鐢ㄨ溅瀹℃壒",
+ "enablePullDownRefresh": false
+ }
+
+ }
+ ,{
+ "path" : "pages/staff/meetingSel",
+ "style" :
+ {
+ "navigationBarTitleText": "閫夋嫨浜哄憳",
+ "enablePullDownRefresh": false
+ }
+
+ }
],
"subPackages": [{
"root": "n_pages",
diff --git a/h5/pages/staff/meetingManager.vue b/h5/pages/staff/meetingManager.vue
index df785c4..7a18ed1 100644
--- a/h5/pages/staff/meetingManager.vue
+++ b/h5/pages/staff/meetingManager.vue
@@ -1,303 +1,321 @@
<template>
- <view class="main_app">
- <!-- -->
- <!-- <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>
+ <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>
+ </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>
- <!-- -->
- </view>
+ <!-- -->
+ <u-picker
+ keyName="name"
+ :show="isShowStatus"
+ :columns="statusList"
+ @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';
-function getDate(date, AddDayCount = 0) {
- if (!date) {
- date = new Date();
- }
- if (typeof date !== 'object') {
- date = date.replace(/-/g, '/');
- }
- const dd = new Date(date);
+import Calendar from '@/components/Li-Calendar/Li-Calendar.vue'
+import dayjs from 'dayjs'
+import { myMeetingPage } from '@/api'
- 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',
- currentTime1: '',
- dateStart: '1999-05-01',
- dateEnd: '2999-06-15',
- mark: [],
- selected: [
+ components: {
+ Calendar
+ },
+ data() {
+ return {
+ currentDate: '',
+ dateStart: '2024-01-01',
+ dateEnd: '2999-06-15',
+ mark: [
{
- date: getDate(new Date(), -3).fullDate
- // info: '鎵撳崱'
+ time: '2024-05-30'
},
{
- date: getDate(new Date(), -2).fullDate,
- // info: '绛惧埌',
- data: {
- custom: '鑷畾涔変俊鎭�',
- name: '鑷畾涔夋秷鎭ご'
- }
+ time: '2024-05-22',
+ pointText: 'aaa',
+ pointTextColor: '#fff'
},
{
- date: getDate(new Date(), -1).fullDate,
- info: '宸叉墦鍗�'
+ time: '2024-05-28',
+ text: ['111','222'],
+ pointTextColor: '#fff'
}
- ]
- };
- },
- methods: {
- tabClick(val) {
- this.activeTab = val;
+ ],
+ activeStatus: {
+ name: '鍏ㄩ儴浼氳瀹�'
+ },
+ isShowStatus: false,
+ statusList: [[
+ { name: '鍏ㄩ儴浼氳瀹�', key: '' },
+ { name: '鏈紑濮�', key: '1' },
+ { name: '宸茬粨鏉�', key: '2' },
+ ]],
+ dataList: [],
+ page: 1
+ }
+ },
+ onLoad() {
+ this.currentDate = dayjs().format('YYYY-MM-DD')
+ this.getList()
+ },
+ methods: {
+ getList() {
+ const { activeStatus } = this
+ myMeetingPage({
+ capacity: 10,
+ page: this.page,
+ model: {
+ queryDate: this.currentDate,
+ status: activeStatus.key || null,
+ // roomsId: this.roomId,
+ queryType: 1
+ }
+ }).then(res => {
+ this.dataList = res.data.records
+ })
+ },
+ handleDetail(item) {
+ uni.navigateTo({
+ // url: `/pages/staff/meetingDetail?id=${item.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()
+ },
+ seletedStatus(e) {
+ this.activeStatus = { ...e.value[0] }
+ this.isShowStatus = false
+ this.getList()
},
- handleDetail(item) {
- uni.navigateTo({
- // url: `/pages/staff/meetingDetail?id=${item.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()
- }
- }
+ }
};
</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: #279baa;
- border-radius: 8rpx;
- }
- ::v-deep .uni-calendar-item--isDay-text {
- color: #279baa;
- }
- ::v-deep .uni-calendar-item--isDay {
- background-color: #279baa;
- 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: #279baa;
- }
- }
- }
- //
- .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: #279baa;
- 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;
- .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;
- }
- }
- .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: #279baa;
+ border-radius: 8rpx;
+ }
+ ::v-deep .uni-calendar-item--isDay-text {
+ color: #279baa;
+ }
+ ::v-deep .calendar-point {
+ /* background-color: #279baa; */
+ }
+
+ ::v-deep .uni-calendar-item--isDay {
+ background-color: #279baa;
+ 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: #279baa;
+ }
+ }
+ }
+ //
+ .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: #279baa;
+ 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;
+ .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;
+ }
+ }
+ .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>
+</style>
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
new file mode 100644
index 0000000..bec4d8a
--- /dev/null
+++ b/h5/pages/staff/meetingSel.vue
@@ -0,0 +1,322 @@
+<template>
+ <view class="main_app">
+ <view class="search_inp df_ac">
+ <image
+ class="mr12 search"
+ src="../../static/ic_search@2x.png"
+ mode="widthFix"
+ ></image>
+ <input
+ v-model="param.keyword"
+ @blur="initData()"
+ type="text"
+ placeholder="鎼滅储"
+ placeholder-style="color: #999999;"
+ />
+ </view>
+ <view class="member_list">
+ <view v-for="item in memberList" :key="item.id" class="line">
+ <image
+ :src="
+ item.prefixUrl
+ ? item.prefixUrl
+ : require('@/static/logo@2x.png')
+ "
+ class="avatar"
+ mode=""
+ ></image>
+ <view class="content">
+ <view class="info">
+ <text class="name">{{ item.realname }}</text>
+ <!-- <text class="tag">tag</text> -->
+ </view>
+ <view class="depart">{{ item.departmentName }}</view>
+ </view>
+ <image
+ @click="changeMem(item, index)"
+ v-if="item.checked"
+ src="@/static/meeting/icon/ic_choose_sel@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <image
+ @click="changeMem(item, index)"
+ v-if="!item.checked"
+ src="@/static/meeting/icon/ic_choose@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <text></text>
+ </view>
+ <view class="empty"></view>
+ </view>
+ <!-- -->
+ <view class="sub_wrap">
+ <view class="sel_mem">
+ <text>宸查�夋嫨锛�</text>
+ <view class="members">
+ <text v-for="(item, i) in selList" :key="i">{{ item.realname }}锛�</text>
+ </view>
+ <image
+ @click="isShowSelMem = true"
+ class="open_icon"
+ src="../../static/staff/renyuan_ic_open.png"
+ mode=""
+ ></image>
+ </view>
+ <view class="btn" @click="onSubmit">纭({{ selList.length }}/20)</view>
+ </view>
+ <!-- -->
+ <u-popup
+ :show="isShowSelMem"
+ :round="12"
+ mode="bottom"
+ @close="isShowSelMem = false"
+ >
+ <view class="modal">
+ <view class="modal_header">
+ <text class="status">宸查�夋嫨锛歿{ selList.length }}浜�</text>
+ <text class="btn" @click="isShowSelMem = false">纭</text>
+ </view>
+ <view class="modal_mem_list">
+ <view class="line" v-for="(item, i) in selList" :key="i">
+ <image
+ :src="
+ item.faceImgFull
+ ? item.faceImgFull
+ : require('@/static/logo@2x.png')
+ "
+ class="avatar"
+ mode=""
+ ></image>
+ <view class="content">
+ <view class="info">
+ <text class="name">{{ item.realname }}</text>
+ </view>
+ <view class="depart">{{ item.departmentName }}</view>
+ </view>
+ <view class="btn" @click="handleRemove(item)">绉婚櫎</view>
+ </view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+import { userPagePost } from '@/api'
+export default {
+ data() {
+ return {
+ memberList: [],
+ selList: [],
+ param: {},
+ pagination: {
+ page: 1,
+ capacity: 20
+ },
+
+ isShowSelMem: false
+ }
+ },
+ onLoad(option) {
+ this.param = { ...option, keyword: '' }
+ this.initData()
+ },
+ methods: {
+ onSubmit() {
+ this.$eventBus.$emit('meetingPeo', this.selList)
+ uni.navigateBack()
+ },
+ changeMem(item, index) {
+ item.checked = !item.checked
+ this.selList = this.memberList.filter(i => i.checked)
+ // const arr = e.detail.value
+ // let arrTemp = arr.map(item => {
+ // let obj = {}
+ // this.memberList.forEach(ite => {
+ // if (item == ite.id) {
+ // obj.name = ite.name.split('-')[0]
+ // obj.componey = ite.name.split('-')[1] || ''
+ // obj.id = ite.id
+ // }
+ // })
+ // return obj
+ // })
+ // this.selList = arrTemp
+ this.$forceUpdate()
+ },
+ initData() {
+ const { param, pagination } = this
+ userPagePost({
+ model: { ...param },
+ ...pagination,
+
+ }).then(res => {
+ this.memberList = res.data.records || []
+ this.memberList.map(i => {
+ i.checked = false
+ })
+ })
+ },
+ handleRemove(item) {
+ this.memberList.forEach(ite => {
+ if (item.id === ite.id) {
+ ite.checked = false
+ }
+ })
+ // console.log(this.memberList);
+ this.$forceUpdate()
+ },
+ }
+};
+</script>
+
+<style lang="scss">
+.modal {
+ padding: 40rpx 30rpx;
+ .modal_header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .status {
+ font-weight: 600;
+ }
+ .btn {
+ color: #279baa;
+ }
+ }
+ .modal_mem_list {
+ .line {
+ display: flex;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+ .avatar {
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 20rpx;
+ }
+ .content {
+ flex: 1;
+ .depart {
+ font-size: 24rpx;
+ color: #666666;
+ }
+ .info {
+ display: flex;
+ margin-bottom: 16rpx;
+ .name {
+ font-size: 30rpx;
+ }
+ }
+ }
+ .btn {
+ width: 80rpx;
+ height: 48rpx;
+ line-height: 48rpx;
+ text-align: center;
+ font-size: 24rpx;
+ color: #333333;
+ border-radius: 4rpx;
+ border: 1rpx solid #999999;
+ }
+ }
+ }
+}
+.sub_wrap {
+ position: fixed;
+ bottom: 0;
+ background-color: #fff;
+ left: 0;
+ width: 100%;
+ box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
+ padding: 30rpx 30rpx 64rpx;
+ .sel_mem {
+ display: flex;
+ align-items: center;
+ .members {
+ width: 500rpx;
+ color: #4d98a7;
+ white-space: nowrap;
+ overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌
+ text-overflow: ellipsis;
+ margin-right: 20rpx;
+ }
+ .open_icon {
+ width: 44rpx;
+ height: 44rpx;
+ }
+ }
+ .btn {
+ width: 690rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ background: #279baa;
+ border-radius: 44rpx;
+ color: #fff;
+ text-align: center;
+ margin-top: 22rpx;
+ }
+}
+.member_list {
+ .line {
+ display: flex;
+ align-items: center;
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+ .avatar {
+ width: 64rpx;
+ height: 64rpx;
+ border-radius: 50%;
+ overflow: hidden;
+ margin-right: 20rpx;
+ }
+ .content {
+ flex: 1;
+ .depart {
+ font-size: 24rpx;
+ color: #666666;
+ }
+ .info {
+ display: flex;
+ margin-bottom: 16rpx;
+ .name {
+ font-size: 30rpx;
+ }
+ .tag {
+ font-size: 24rpx;
+ border-radius: 4rpx;
+ border: 1rpx solid #f62710;
+ color: #f62710;
+ padding: 0rpx 6rpx;
+ margin-left: 8rpx;
+ }
+ }
+ }
+ .checked{
+ width: 48rpx;
+ }
+ }
+ .empty {
+ width: 100%;
+ height: 280rpx;
+ }
+}
+.search_inp {
+ height: 72rpx;
+ background: #f7f7f7;
+ border-radius: 4rpx;
+ padding-left: 16rpx;
+ .search {
+ width: 28rpx;
+ }
+ input {
+ flex: 1;
+ font-size: 28rpx;
+ color: #333333;
+ }
+}
+</style>
diff --git a/h5/pages/staff/meetingSub.vue b/h5/pages/staff/meetingSub.vue
index 5dfd91e..c31b0cb 100644
--- a/h5/pages/staff/meetingSub.vue
+++ b/h5/pages/staff/meetingSub.vue
@@ -1,254 +1,387 @@
<template>
- <view class="main_app">
- <view class="heade_title">
- <image class="icon" src="../../static/staff/ar_left@2x.png" @click="changeDate(-1)" mode="widthFix"></image>
- <text class="date">{{ activeDateCum }}</text>
- <image class="icon" src="../../static/staff/ar_right@2x.png" @click="changeDate(1)" mode="widthFix"></image>
- </view>
- <!-- -->
- <view class="meeting_list">
- <view class="item" :class="{active: i === 0}" v-for="item,i in meetingList" :key="i">
- <view class="name">{{ item.name }}</view>
- <view class="line"></view>
- </view>
- </view>
- <!-- -->
- <view class="time_list">
- <view class="item" v-for="item,i in timeList" :key="i">{{ item.time }}</view>
- </view>
- <!-- -->
- <view class="main_footer">
- <view class="df_ac">
- <view>宸查�夋嫨锛�</view>
- <view class="sel_time">xxxxxx</view>
- </view>
- <view class="btns">
- <view class="left">
- <view class="item" v-for="item in colorOptions" :key="item.name">
- <view class="box" :style="{ background: item.color }"></view>
- <view class="">{{ item.name }}</view>
- </view>
- </view>
- <view class="sub" @click="$jump('/pages/staff/meetingSubOrder')">纭棰勭害</view>
- </view>
- </view>
- <!-- -->
- <u-popup :show="isShowDetail" :round="12" mode="bottom" @close="isShowDetail = false">
- <view class="detail_modal">
- <view class="title">浼氳瀹ら绾︽儏鍐�</view>
- <view class="h1">璁ㄨxxxxx閫夊瀷</view>
- <view class="line">
- <view class="label">浼氳鏃堕棿</view>
- <view class="value">00000</view>
- </view>
- <view class="line">
- <view class="label">浼氳瀹�</view>
- <view class="value">00000</view>
- </view>
- <view class="line">
- <view class="label">棰勭害浜�</view>
- <view class="value">00000</view>
- </view>
- <view class="btn" @click="isShowDetail = false">鍏抽棴</view>
- </view>
- </u-popup>
- </view>
+ <view class="main_app">
+ <view class="heade_title">
+ <image
+ class="icon"
+ src="../../static/staff/ar_left@2x.png"
+ @click="changeDate(-1)"
+ mode="widthFix"
+ ></image>
+ <text class="date">{{ activeDateCum }}</text>
+ <image
+ class="icon"
+ src="../../static/staff/ar_right@2x.png"
+ @click="changeDate(1)"
+ mode="widthFix"
+ ></image>
+ </view>
+ <!-- -->
+ <view class="meeting_list">
+ <view
+ @click="roomClick(item)"
+ class="item"
+ :class="{ active: activeRoom.roomId === item.id }"
+ v-for="(item, i) in meetingList"
+ :key="i"
+ >
+ <view class="name">{{ item.name }}</view>
+ <view class="line"></view>
+ </view>
+ </view>
+ <!-- -->
+ <view class="time_list">
+ <view
+ @click="datetimeClick(item, i)"
+ class="item"
+ :class="{ disable: item.isUse, active: item.checked == '1' }"
+ v-for="(item, i) in timeList"
+ :key="i"
+ >
+ {{ item.startTime }}-{{ item.endTime }}
+ </view>
+ </view>
+ <!-- -->
+ <view class="main_footer">
+ <view class="df_ac">
+ <view>宸查�夋嫨锛�</view>
+ <view class="sel_time">{{ selDatetime }}</view>
+ </view>
+ <view class="btns">
+ <view class="left">
+ <view class="item" v-for="item in colorOptions" :key="item.name">
+ <view class="box" :style="{ background: item.color }"></view>
+ <view class="">{{ item.name }}</view>
+ </view>
+ </view>
+ <view class="sub" @click="onSubmit"
+ >纭棰勭害</view
+ >
+ </view>
+ </view>
+ <!-- -->
+ <u-popup
+ :show="isShowDetail"
+ :round="12"
+ mode="bottom"
+ @close="isShowDetail = false"
+ >
+ <view class="detail_modal">
+ <view class="title">浼氳瀹ら绾︽儏鍐�</view>
+ <view class="h1">璁ㄨxxxxx閫夊瀷</view>
+ <view class="line">
+ <view class="label">浼氳鏃堕棿</view>
+ <view class="value">00000</view>
+ </view>
+ <view class="line">
+ <view class="label">浼氳瀹�</view>
+ <view class="value">00000</view>
+ </view>
+ <view class="line">
+ <view class="label">棰勭害浜�</view>
+ <view class="value">00000</view>
+ </view>
+ <view class="btn" @click="isShowDetail = false">鍏抽棴</view>
+ </view>
+ </u-popup>
+ </view>
</template>
<script>
- import dayjs from 'dayjs'
- export default {
- data() {
- return {
- activeDate: '',
- isShowDetail: false,
- meetingList: [
- { name: '201浼氳瀹�' },
- { name: '201浼氳瀹�' },
- { name: '201浼氳瀹�' },
- { name: '201浼氳瀹�' },
- ],
- timeList: [
- { time: '08:30-09:00' },
- { time: '08:30-09:00' },
- { time: '08:30-09:00' },
- { time: '08:30-09:00' },
- ],
-
- colorOptions: [
- { color: '#279BAA', name: '宸查�夋嫨' },
- { color: '#F7F7F7', name: '鍙绾�' },
- { color: '#cccccc', name: '涓嶅彲棰勭害' },
- ]
-
- };
- },
- computed: {
- activeDateCum(){
- const { activeDate } = this
- let weeks = ['鍛ㄦ棩', '鍛ㄤ竴','鍛ㄤ簩','鍛ㄤ笁','鍛ㄥ洓','鍛ㄤ簲','鍛ㄥ叚']
- return dayjs(activeDate).format('YYYY骞碝鏈圖鏃�') + ' ' + weeks[dayjs(activeDate).day()]
+import dayjs from 'dayjs'
+import {
+ roomsListPost,
+ getRoomUseTime,
+ meetingDetail
+} from '@/api'
+export default {
+ data() {
+ return {
+ activeRoom: {
+ yudingDate: ''
+ },
+ selDatetime: '',
+ isShowDetail: false,
+ meetingList: [],
+ timeList: [],
+
+ colorOptions: [
+ { color: '#279BAA', name: '宸查�夋嫨' },
+ { color: '#F7F7F7', name: '鍙绾�' },
+ { color: '#cccccc', name: '涓嶅彲棰勭害' },
+ ]
+
+ }
+ },
+ computed: {
+ activeDateCum() {
+ const yudingDate = this.activeRoom.yudingDate
+ let weeks = ['鍛ㄦ棩', '鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚']
+ return dayjs(yudingDate).format('YYYY骞碝鏈圖鏃�') + ' ' + weeks[dayjs(yudingDate).day()]
+ }
+ },
+ onLoad() {
+ this.activeRoom.yudingDate = dayjs().format('YYYY-MM-DD')
+ this.getRoomList()
+ },
+ methods: {
+ roomClick(item) {
+ this.$set(this.activeRoom, 'roomId', item.id)
+ this.$set(this.activeRoom, 'roomName', item.name)
+ },
+ onSubmit() {
+ const { activeRoom } = this
+ const selTimeList = this.timeList.filter(i => i.checked == '1')
+ if (selTimeList.length == -1) {
+ return uni.showToast({
+ title: '璇峰厛閫夋嫨浼氳鏃舵',
+ icon: 'none'
+ })
+ }
+ const obj = {
+ startTime: selTimeList[0].startTime,
+ endTime: selTimeList[selTimeList.length - 1].endTime,
}
- },
- created() {
- this.activeDate = dayjs().format('YYYY-MM-DD')
- },
- methods: {
- changeDate(num){
- const { activeDate } = this
- let fn = num > 0 ? 'add' : 'subtract'
- this.activeDate = dayjs(activeDate)[fn](1, 'days').format('YYYY-MM-DD')
+ uni.navigateTo({
+ url: `/pages/staff/meetingSubOrder?yudingDate=${activeRoom.yudingDate}&roomName=${activeRoom.roomName}&roomId=${activeRoom.roomId}&startTime=${obj.startTime}&endTime=${obj.endTime}`
+ })
+ // this.$jump('/pages/staff/vehicle/apply')
+ },
+ getRoomList() {
+ roomsListPost({}).then(res => {
+ this.meetingList = res.data || []
+ if (this.meetingList.length > 0) {
+ this.$set(this.activeRoom, 'roomId', this.meetingList[0].id)
+ this.$set(this.activeRoom, 'roomName', this.meetingList[0].name)
+ this.getRoomTime()
+ }
+ })
+ },
+ getRoomTime() {
+ const { activeRoom } = this
+ getRoomUseTime({
+ ...activeRoom
+ }).then(res => {
+ this.timeList = res.data || []
+ this.timeList.forEach((i, j) => {
+ i.checked = '0',
+ i.index = j
+ })
+ })
+ },
+ datetimeClick(item, index) {
+ if (item.isUse == '1') return
+ if(item.isChoose){
+ this.getDetail(item.id)
+ return
}
- }
- }
+ const { timeList } = this
+ const selTimeList = timeList.filter(i => i.checked == '1')
+ if (selTimeList.length === 0) {
+ this.timeList.forEach((ite, i) => {
+ if (i === index) {
+ ite.checked = '1'
+ this.$forceUpdate()
+ }
+ })
+ } else {
+ const findIndex = selTimeList.findIndex(i => i.index === index)
+ console.log('findIndex', findIndex)
+ if (findIndex === -1) {
+ const startNum = index - selTimeList[0].index
+ const endNum = index - selTimeList[selTimeList.length - 1].index
+ if (startNum == 1 || startNum == -1 || endNum == 1 || endNum == -1) {
+ console.log('鐩搁偦')
+ item.checked = true
+ this.$forceUpdate()
+ } else {
+ return uni.showToast({
+ title: '璇烽�夋嫨鐩搁偦鐨勬椂闂存',
+ icon: 'none'
+ })
+ }
+ } else {
+ if (index === selTimeList[0].index || index === selTimeList[selTimeList.length - 1].index) {
+ item.checked = false
+ this.$forceUpdate()
+ } else {
+ return uni.showToast({
+ title: '璇峰厛鍙栨秷鏈�澶栧眰鐨勬椂闂存',
+ icon: 'none'
+ })
+ }
+
+ }
+ }
+ const selTimeLists = this.timeList.filter(i => i.checked == '1')
+ // console.log('selTimeList', selTimeList);
+ if (selTimeLists.length === 0) {
+ this.selDatetime = ''
+ } else {
+ this.selDatetime = this.activeRoom.roomName + ' | ' + selTimeLists[0].startTime + '-' + selTimeLists[selTimeLists.length - 1].endTime
+ }
+ },
+ changeDate(num) {
+ const yudingDate = this.activeRoom.yudingDate
+ let fn = num > 0 ? 'add' : 'subtract'
+ this.yudingDate = dayjs(yudingDate)[fn](1, 'days').format('YYYY-MM-DD')
+ this.getRoomList()
+ },
+ getDetail(id) {
+ meetingDetail({
+ id
+ })
+ },
+ }
+}
</script>
<style lang="scss">
- .detail_modal{
- padding: 40rpx 30rpx;
- .title{
- text-align: center;
- font-weight: 500;
- font-size: 32rpx;
- margin-bottom: 40rpx;
- }
- .h1{
- font-weight: 500;
- font-size: 32rpx;
- margin-bottom: 30rpx;
- }
- .line{
- display: flex;
- margin-bottom: 20rpx;
- .label{
- width: 140rpx;
- color: #888888;
- }
- .value{
- color: #333333;
- }
- }
- .btn{
- margin-top: 230rpx;
- width: 690rpx;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: #279BAA;
- border-radius: 44rpx;
- font-weight: 500;
- font-size: 32rpx;
- color: #FFFFFF;
- }
- }
- .main_footer{
- position: absolute;
- width: 100%;
- left: 0;
- bottom: 0;
- padding: 20rpx 30rpx 84rpx;
- box-shadow: 0rpx -3rpx 6rpx 0rpx #EEEEEE;
- .sel_time{
- color: #279BAA;
- }
- .btns{
- margin-top: 10rpx;
- display: flex;
- justify-content: space-between;
- align-items: center;
- .left{
- display: flex;
- .item{
- display: flex;
- align-items: center;
- margin-right: 20rpx;
- .box{
- margin-right: 10rpx;
- width: 32rpx;
- height: 32rpx;
- }
- }
- }
- .sub{
- width: 184rpx;
- height: 72rpx;
- line-height: 72rpx;
- text-align: center;
- background: #279BAA;
- box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
- border-radius: 36rpx;
- font-size: 30rpx;
- color: #FFFFFF;
- }
- }
- }
- .time_list{
- display: flex;
- justify-content: space-between;
- padding: 30rpx;
- flex-wrap: wrap;
- .item{
- width: 220rpx;
- height: 80rpx;
- line-height: 80rpx;
- text-align: center;
- background: #F7F7F7;
- border-radius: 4rpx;
- margin-bottom: 24rpx;
- font-size: 30rpx;
- }
- .active{
- background-color: #279BAA;
- color: #fff;
- }
- .disable{
- background-color: #cccccc;
- color: #999999;
- }
- }
- .meeting_list{
- display: flex;
- padding-left: 30rpx;
- width: 720rpx;
- overflow-x: auto;
- border-bottom: 1rpx solid #E5E5E5;
- .item{
- flex-shrink: 0;
- margin-right: 60rpx;
- padding: 30rpx 0 0;
- .line{
- width: 60rpx;
- height: 4rpx;
- background-color: #fff;
- margin: 26rpx auto 0;
- }
- }
- .active{
- color: #279BAA;
- font-weight: 600;
- font-size: 30rpx;
- .line{
- width: 60rpx;
- height: 4rpx;
- background-color: #279BAA;
- margin: 26rpx auto 0;
- }
- }
- }
- .main_app{
- padding: 0;
- }
-.heade_title{
- display: flex;
- justify-content: center;
- align-items: center;
- .date{
- margin: 0 24rpx;
- font-weight: 600;
- font-size: 32rpx;
- }
- .icon{
- width: 30rpx;
- }
+.detail_modal {
+ padding: 40rpx 30rpx;
+ .title {
+ text-align: center;
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 40rpx;
+ }
+ .h1 {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 30rpx;
+ }
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
+ .label {
+ width: 140rpx;
+ color: #888888;
+ }
+ .value {
+ color: #333333;
+ }
+ }
+ .btn {
+ margin-top: 230rpx;
+ width: 690rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: #279baa;
+ border-radius: 44rpx;
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #ffffff;
+ }
+}
+.main_footer {
+ position: fixed;
+ width: 100%;
+ left: 0;
+ bottom: 0;
+ background-color: #fff;
+ padding: 20rpx 30rpx 84rpx;
+ box-shadow: 0rpx -3rpx 6rpx 0rpx #eeeeee;
+ .sel_time {
+ color: #279baa;
+ }
+ .btns {
+ margin-top: 10rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .left {
+ display: flex;
+ .item {
+ display: flex;
+ align-items: center;
+ margin-right: 20rpx;
+ .box {
+ margin-right: 10rpx;
+ width: 32rpx;
+ height: 32rpx;
+ }
+ }
+ }
+ .sub {
+ width: 184rpx;
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ background: #279baa;
+ box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee;
+ border-radius: 36rpx;
+ font-size: 30rpx;
+ color: #ffffff;
+ }
+ }
+}
+.time_list {
+ display: flex;
+ justify-content: space-between;
+ padding: 30rpx;
+ flex-wrap: wrap;
+ .item {
+ width: 220rpx;
+ height: 80rpx;
+ line-height: 80rpx;
+ text-align: center;
+ background: #f7f7f7;
+ border-radius: 4rpx;
+ margin-bottom: 24rpx;
+ font-size: 30rpx;
+ }
+ .active {
+ background-color: #279baa;
+ color: #fff;
+ }
+ .disable {
+ background-color: #cccccc;
+ color: #999999;
+ }
+}
+.meeting_list {
+ display: flex;
+ padding-left: 30rpx;
+ width: 720rpx;
+ overflow-x: auto;
+ border-bottom: 1rpx solid #e5e5e5;
+ .item {
+ flex-shrink: 0;
+ margin-right: 60rpx;
+ padding: 30rpx 0 0;
+ .line {
+ width: 60rpx;
+ height: 4rpx;
+ background-color: #fff;
+ margin: 26rpx auto 0;
+ }
+ }
+ .active {
+ color: #279baa;
+ font-weight: 600;
+ font-size: 30rpx;
+ .line {
+ width: 60rpx;
+ height: 4rpx;
+ background-color: #279baa;
+ margin: 26rpx auto 0;
+ }
+ }
+}
+.main_app {
+ padding: 0;
+}
+.heade_title {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .date {
+ margin: 0 24rpx;
+ font-weight: 600;
+ font-size: 32rpx;
+ }
+ .icon {
+ width: 30rpx;
+ }
}
</style>
diff --git a/h5/pages/staff/meetingSubOrder.vue b/h5/pages/staff/meetingSubOrder.vue
index a452d63..031a92e 100644
--- a/h5/pages/staff/meetingSubOrder.vue
+++ b/h5/pages/staff/meetingSubOrder.vue
@@ -1,145 +1,249 @@
<template>
- <view class="main_app">
- <view class="module_list">
- <view class="item">
- <view class="name">浼氳鏃堕棿</view>
- <view class="line">
- <view class="label">2022骞�22鏈�2鏃� 1000000000</view>
- <u-icon name="arrow-right" color="#999999" size="14" />
- </view>
- </view>
- <view class="item">
- <view class="name">浼氳瀹�</view>
- <view class="line">
- <view class="label">aaaaaaaa</view>
- </view>
- </view>
- <view class="item">
- <view class="name">棰勭害浜�</view>
- <view class="line">
- <view class="label">aaaaaaaa</view>
- </view>
- </view>
- <view class="empty"></view>
- <view class="item">
- <view class="name">
- <text>浼氳涓婚</text>
- <text class="star">*</text>
- </view>
- <view class="line">
- <input type="text" v-model="param.aaa" placeholder="璇疯緭鍏ヤ細璁富棰�" placeholder-class="placeholder9" class="label">
- </view>
- </view>
- <view class="item">
- <view class="name">
- <text>浼氳鍐呭</text>
- </view>
- <view class="line">
- <u-textarea border="none" v-model="param.aaa" count :maxlength="300" placeholder="璇疯緭鍏ヤ細璁唴瀹�" placeholder-class="placeholder9" class="label" />
- </view>
- </view>
- <view class="empty"></view>
- <view class="item">
- <view class="name">鍙備細浜哄憳</view>
- <view class="line">
- <view class="label">
- <text v-if="false">moumoumou</text>
- <text v-else class="placeholder9" @click="$jump('/pages/staff/memberSel')">璇烽�夋嫨</text>
- </view>
- <u-icon name="arrow-right" color="#999999" size="14" @click="$jump('/pages/staff/memberSel')" />
- </view>
- </view>
- <view class="item">
- <view class="name">閫夋嫨鏈嶅姟椤�</view>
- <view class="line">
- <view class="label">
- <view class="service_item" v-for="(item,index) in serviceOps" :key="index">
- {{ item.value }}
- </view>
- </view>
- </view>
- </view>
- <view class="item">
- <view class="name">
- <text>澶囨敞</text>
- </view>
- <view class="line">
- <textarea v-model="param.as" :maxlength="-1" placeholder="璇疯緭鍏�" placeholder-class="placeholder9" class="label" />
- </view>
- </view>
-
- <view class="sub_btn">
- 纭棰勭害
- </view>
-
- </view>
- </view>
+ <view class="main_app">
+ <view class="module_list">
+ <view class="item">
+ <view class="name">浼氳鏃堕棿</view>
+ <view class="line">
+ <view class="label">
+ {{ param.activeDate }} {{ param.startTime }}-{{ param.endTime }}
+ </view>
+ <u-icon name="arrow-right" color="#999999" size="14" />
+ </view>
+ </view>
+ <view class="item">
+ <view class="name">浼氳瀹�</view>
+ <view class="line">
+ <view class="label">{{ param.roomName }}</view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="name">棰勭害浜�</view>
+ <view class="line">
+ <view class="label">{{ userInfo.realname }}</view>
+ </view>
+ </view>
+ <view class="empty"></view>
+ <view class="item">
+ <view class="name">
+ <text>浼氳涓婚</text>
+ <text class="star">*</text>
+ </view>
+ <view class="line">
+ <input
+ type="text"
+ v-model="param.name"
+ placeholder="璇疯緭鍏ヤ細璁富棰�"
+ placeholder-class="placeholder9"
+ class="label"
+ />
+ </view>
+ </view>
+ <view class="item">
+ <view class="name">
+ <text>浼氳鍐呭</text>
+ </view>
+ <view class="line">
+ <u-textarea
+ border="none"
+ v-model="param.content"
+ count
+ :maxlength="300"
+ placeholder="璇疯緭鍏ヤ細璁唴瀹�"
+ placeholder-class="placeholder9"
+ class="label"
+ />
+ </view>
+ </view>
+ <view class="empty"></view>
+ <view class="item">
+ <view class="name">鍙備細浜哄憳</view>
+ <view class="line" @click="selPeople">
+ <view class="label">
+ <text v-if="param.sysList && param.sysList.length > 0">
+ {{ param.sysList.map(i=>i.realname).join(',') }}
+ </text>
+ <text
+ v-else
+ class="placeholder9"
+ @click="$jump('/pages/staff/memberSel')"
+ >璇烽�夋嫨</text
+ >
+ </view>
+ <u-icon
+ name="arrow-right"
+ color="#999999"
+ size="14"
+ @click="$jump('/pages/staff/memberSel')"
+ />
+ </view>
+ </view>
+ <view class="item">
+ <view class="name">閫夋嫨鏈嶅姟椤�</view>
+ <view class="line">
+ <view class="label">
+ <view
+ class="service_item"
+ :class="{active: item.checked}"
+ v-for="(item, index) in info.projectList"
+ :key="index"
+ @click="serviceClick(item)"
+ >
+ {{ item.projectName }}
+ </view>
+ </view>
+ </view>
+ </view>
+ <view class="item">
+ <view class="name">
+ <text>澶囨敞</text>
+ </view>
+ <view class="line">
+ <textarea
+ v-model="param.remark"
+ :maxlength="-1"
+ placeholder="璇疯緭鍏�"
+ placeholder-class="placeholder9"
+ class="label"
+ />
+ </view>
+ </view>
+
+ <view class="sub_btn" @click="onSubmit"> 纭棰勭害 </view>
+ </view>
+ </view>
</template>
<script>
- export default {
- data() {
- return {
- param: {},
- serviceOps: [
- { key: '0', value: '甯崱' },
- { key: '1', value: '鎶曞奖浠�' },
- { key: '2', value: '绗旇鏈數鑴�' },
- ]
- };
- }
- }
+import {
+ reservationMeeting,
+ getRoomDetail
+} from '@/api'
+import dayjs from 'dayjs'
+export default {
+ data() {
+ return {
+ param: {},
+ userInfo: uni.getStorageSync('userInfo'),
+ info: {},
+ }
+ },
+ onLoad(option) {
+ this.param = { ...option }
+ this.$set(this.param, 'activeDate', dayjs(option.yudingDate).format('YYYY骞碝鏈圖鏃�'))
+ this.initOption()
+ },
+ mounted() {
+ this.$eventBus.$on('meetingPeo', (res) => {
+ this.$set(this.param, 'sysList', res)
+ // this.$set(this.param, 'memberIds', res.map(i => i.id).join(','))
+ // this.$set(this.param, 'memberNames', res.map(i => i.name).join(','))
+ })
+ },
+ methods: {
+ 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){
+
+ }
+ })
+ },
+ selPeople() {
+ 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()
+ },
+ initOption() {
+ 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
+ })
+ }
+ })
+ }
+ }
+}
</script>
<style lang="scss">
-.module_list{
- .item{
- border-bottom: 1rpx solid #E5E5E5;
- padding: 30rpx 0;
- .name{
- color: #666666;
- margin-bottom: 30rpx;
- }
- .line{
- display: flex;
- .label{
- flex: 1;
- display: flex;
- align-items: center;
- .service_item{
- height: 64rpx;
- line-height: 64rpx;
- background: #F7F7F7;
- border-radius: 4rpx;
- padding: 0 24rpx;
- margin-right: 20rpx;
+.module_list {
+ .item {
+ border-bottom: 1rpx solid #e5e5e5;
+ padding: 30rpx 0;
+ .name {
+ color: #666666;
+ margin-bottom: 30rpx;
+ }
+ .line {
+ display: flex;
+ .label {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ .service_item {
+ height: 64rpx;
+ line-height: 64rpx;
+ background: #f7f7f7;
+ border-radius: 4rpx;
+ padding: 0 24rpx;
+ margin-right: 20rpx;
+ }
+ .active{
+ background-color: #4d99a8;
+ color: #fff;
}
- }
-
- }
- }
- padding-bottom: 100rpx;
+ }
+ }
+ }
+ padding-bottom: 100rpx;
}
.empty {
- width: 750rpx;
- height: 20rpx;
- background-color: #f7f7f7;
- margin: 0 -30rpx;
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
}
-.sub_btn{
- width: 690rpx;
- height: 72rpx;
- line-height: 72rpx;
- text-align: center;
- background: #279BAA;
- box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
- border-radius: 36rpx;
- font-size: 30rpx;
- color: #FFFFFF;
- margin-top: 20rpx;
- }
-.star{
- margin-left: 4rpx;
- color: #e42d2d;
+.sub_btn {
+ width: 690rpx;
+ height: 72rpx;
+ line-height: 72rpx;
+ text-align: center;
+ background: #279baa;
+ box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee;
+ border-radius: 36rpx;
+ font-size: 30rpx;
+ color: #ffffff;
+ margin-top: 20rpx;
+}
+.star {
+ margin-left: 4rpx;
+ color: #e42d2d;
}
</style>
diff --git a/h5/pages/staff/memberSel copy.vue b/h5/pages/staff/memberSel copy.vue
deleted file mode 100644
index b468860..0000000
--- a/h5/pages/staff/memberSel copy.vue
+++ /dev/null
@@ -1,232 +0,0 @@
-<template>
- <view class="main_app">
- <view class="search_inp df_ac">
- <image class="mr12 search" src="../../static/ic_search@2x.png" mode="widthFix"></image>
- <input v-model="param.name" @blur="initData()" type="text" placeholder="鎼滅储" placeholder-style="color: #999999;" />
- </view>
- <view class="member_list">
- <view v-for="item in memberList" :key="item.id" class="line">
- <image :src="item.faceImgFull ? item.faceImgFull : require('@/static/logo@2x.png')" class="avatar" mode=""></image>
- <view class="content">
- <view class="info">
- <text class="name">{{ item.name }}</text>
- <!-- <text class="tag">tag</text> -->
- </view>
- <view class="depart">{{ item.companyName }}</view>
- </view>
- <checkbox class="checkbox" />
- <text></text>
- </view>
- <view class="empty"></view>
- </view>
- <!-- -->
- <view class="sub_wrap">
- <view class="sel_mem">
- <text>宸查�夋嫨锛�</text>
- <view class="members">
- <text v-for="(item, i) in 100" :key="i">{{ item }}</text>
- </view>
- <image @click="isShowSelMem = true" class="open_icon" src="../../static/staff/renyuan_ic_open.png" mode=""></image>
- </view>
- <view class="btn" @click="onSubmit">纭(00/20)</view>
- </view>
- <!-- -->
- <u-popup :show="isShowSelMem" :round="12" mode="bottom" @close="isShowSelMem = false">
- <view class="modal">
- <view class="modal_header">
- <text class="status">宸查�夋嫨锛歺x浜�</text>
- <text class="btn" @click="isShowSelMem = false">纭</text>
- </view>
- <view class="modal_mem_list">
- <view class="line">
- <image src="../../static/logo@2x.png" class="avatar" mode=""></image>
- <view class="content">
- <view class="info">
- <text class="name">name</text>
- </view>
- <view class="depart">xx绉戝</view>
- </view>
- <view class="btn">绉婚櫎</view>
- </view>
- </view>
- </view>
- </u-popup>
-
- </view>
-</template>
-
-<script>
-import { findHiddenAreaMemberList } from '@/api'
-export default {
- data() {
- return {
- memberList: [],
- selList: [],
- param: {},
-
- isShowSelMem: false
- }
- },
- onLoad() {
- this.initData()
- },
- methods: {
- onSubmit() {
- uni.navigateBack()
- },
- initData() {
- const { param } = this
- findHiddenAreaMemberList({
- name: param.name
- }).then(res => {
- this.memberList = res.data || []
- })
- }
- }
-};
-</script>
-
-<style lang="scss">
-.modal {
- padding: 40rpx 30rpx;
- .modal_header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- .status {
- font-weight: 600;
- }
- .btn {
- color: #279baa;
- }
- }
- .modal_mem_list {
- .line {
- display: flex;
- align-items: center;
- border-bottom: 1rpx solid #e5e5e5;
- padding: 30rpx 0;
- .avatar {
- width: 64rpx;
- height: 64rpx;
- border-radius: 50%;
- overflow: hidden;
- margin-right: 20rpx;
- }
- .content {
- flex: 1;
- .depart {
- font-size: 24rpx;
- color: #666666;
- }
- .info {
- display: flex;
- margin-bottom: 16rpx;
- .name {
- font-size: 30rpx;
- }
- }
- }
- .btn{
- width: 80rpx;
- height: 48rpx;
- line-height: 48rpx;
- text-align: center;
- font-size: 24rpx;
- color: #333333;
- border-radius: 4rpx;
- border: 1rpx solid #999999;
- }
- }
- }
-}
-.sub_wrap {
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- box-shadow: 0rpx 0rpx 6rpx 0rpx #b2b2b2;
- padding: 30rpx 30rpx 64rpx;
- .sel_mem {
- display: flex;
- align-items: center;
- .members {
- width: 500rpx;
- color: #4d98a7;
- white-space: nowrap;
- overflow: hidden; //鏂囨湰瓒呭嚭闅愯棌
- text-overflow: ellipsis;
- margin-right: 20rpx;
- }
- .open_icon {
- width: 44rpx;
- height: 44rpx;
- }
- }
- .btn {
- width: 690rpx;
- height: 88rpx;
- line-height: 88rpx;
- background: #279baa;
- border-radius: 44rpx;
- color: #fff;
- text-align: center;
- margin-top: 22rpx;
- }
-}
-.member_list {
- .line {
- display: flex;
- align-items: center;
- border-bottom: 1rpx solid #e5e5e5;
- padding: 30rpx 0;
- .avatar {
- width: 64rpx;
- height: 64rpx;
- border-radius: 50%;
- overflow: hidden;
- margin-right: 20rpx;
- }
- .content {
- flex: 1;
- .depart {
- font-size: 24rpx;
- color: #666666;
- }
- .info {
- display: flex;
- margin-bottom: 16rpx;
- .name {
- font-size: 30rpx;
- }
- .tag {
- font-size: 24rpx;
- border-radius: 4rpx;
- border: 1rpx solid #f62710;
- color: #f62710;
- padding: 0rpx 6rpx;
- margin-left: 8rpx;
- }
- }
- }
- }
- .empty {
- width: 100%;
- height: 280rpx;
- }
-}
-.search_inp {
- height: 72rpx;
- background: #f7f7f7;
- border-radius: 4rpx;
- padding-left: 16rpx;
- .search{
- width: 28rpx;
- }
- input {
- flex: 1;
- font-size: 28rpx;
- color: #333333;
- }
-}
-</style>
diff --git a/h5/pages/staff/vehicle/applePeo.vue b/h5/pages/staff/vehicle/applePeo.vue
index 2f62cce..54e7a5d 100644
--- a/h5/pages/staff/vehicle/applePeo.vue
+++ b/h5/pages/staff/vehicle/applePeo.vue
@@ -15,30 +15,40 @@
/>
</view>
<view class="member_list">
- <checkbox-group v-model="selList" @change="changeMem">
- <view v-for="item in memberList" :key="item.id" class="line">
- <image
- :src="
- item.faceImgFull
- ? item.faceImgFull
- : require('@/static/logo@2x.png')
- "
- class="avatar"
- mode=""
- ></image>
- <view class="content">
- <view class="info">
- <text class="name">{{ item.name }}</text>
- <!-- <text class="tag">tag</text> -->
- </view>
- <view class="depart">{{ item.companyName }}</view>
+ <view v-for="(item, index) in memberList" :key="item.id" class="line">
+ <image
+ :src="
+ item.faceImgFull
+ ? item.faceImgFull
+ : require('@/static/logo@2x.png')
+ "
+ class="avatar"
+ mode=""
+ ></image>
+ <view class="content">
+ <view class="info">
+ <text class="name">{{ item.name }}</text>
+ <!-- <text class="tag">tag</text> -->
</view>
- <label>
- <checkbox :checked="item.checked" :value="String(item.id)" class="checkbox" />
- </label>
- <text></text>
+ <view class="depart">{{ item.companyName }}</view>
</view>
- </checkbox-group>
+ <image
+ @click="changeMem(item, index)"
+ v-if="item.checked"
+ src="@/static/meeting/icon/ic_choose_sel@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <image
+ @click="changeMem(item, index)"
+ v-if="!item.checked"
+ src="@/static/meeting/icon/ic_choose@2x.png"
+ mode="widthFix"
+ class="checked"
+ ></image>
+ <text></text>
+ </view>
+
<view class="empty"></view>
</view>
<!-- -->
@@ -55,7 +65,7 @@
mode=""
></image>
</view>
- <view class="btn" @click="onSubmit">纭({{selList.length}}/20)</view>
+ <view class="btn" @click="onSubmit">纭({{ selList.length }}/20)</view>
</view>
<!-- -->
<u-popup
@@ -100,8 +110,8 @@
data() {
return {
memberList: [],
- selList: [],
param: {},
+ selList: [],
isShowSelMem: false
}
@@ -109,32 +119,42 @@
onLoad() {
this.initData()
},
+ mounted() {
+ this.$eventBus.$on('applePeoDetail', (res)=>{
+ res.forEach(item => {
+ this.changeMem(item)
+ })
+ this.$nextnick(() => {
+ this.$forceUpdate()
+ })
+ })
+ },
methods: {
onSubmit() {
this.$eventBus.$emit('applePeo', this.selList)
uni.navigateBack()
},
- changeMem(e) {
- const arr = e.detail.value
- let arrTemp = arr.map(item => {
- let obj = {}
- this.memberList.forEach(ite => {
- if (item == ite.id) {
- obj.name = ite.name.split('-')[0]
- obj.componey = ite.name.split('-')[1] || ''
- obj.id = ite.id
- }
- })
- return obj
- })
- this.selList = arrTemp
- // this.$forceUpdate()
+ changeMem(item, index) {
+ item.checked = !item.checked
+ this.selList = this.memberList.filter(i => i.checked)
+ // const arr = e.detail.value
+ // let arrTemp = arr.map(item => {
+ // let obj = {}
+ // this.memberList.forEach(ite => {
+ // if (item == ite.id) {
+ // obj.name = ite.name.split('-')[0]
+ // obj.componey = ite.name.split('-')[1] || ''
+ // obj.id = ite.id
+ // }
+ // })
+ // return obj
+ // })
+ // this.selList = arrTemp
+ this.$forceUpdate()
},
handleRemove(item) {
- const selIndex = this.selList.findIndex(i => i.id === item.id)
- this.selList.splice(selIndex, 1)
this.memberList.forEach(ite => {
- if(item.id === ite.id){
+ if (item.id === ite.id) {
ite.checked = false
}
})
@@ -282,6 +302,9 @@
}
}
}
+ .checked{
+ width: 48rpx;
+ }
}
.empty {
width: 100%;
diff --git a/h5/pages/staff/vehicle/apply.vue b/h5/pages/staff/vehicle/apply.vue
index 174c512..d6436b5 100644
--- a/h5/pages/staff/vehicle/apply.vue
+++ b/h5/pages/staff/vehicle/apply.vue
@@ -80,7 +80,7 @@
<text>*</text>
<text>涔樿溅浜哄憳</text>
</view>
- <view class="value" @click="$jump('/pages/staff/vehicle/applePeo')">
+ <view class="value" @click="selPeople">
<text
class="mr6"
:style="{
@@ -200,6 +200,12 @@
}
})
},
+ selPeople() {
+ if(this.param.memberList && this.param.memberList.length > 0){
+ this.$eventBus.$emit('applePeoDetail', this.param.memberList)
+ }
+ this.$jump('/pages/staff/vehicle/applePeo')
+ },
confirmDate(e) {
this.param.planUseDate = dayjs(e.value).format('YYYY-MM-DD HH:mm')
diff --git a/h5/pages/staff/vehicle/sendACar.vue b/h5/pages/staff/vehicle/sendACar.vue
index 96c407a..f11605d 100644
--- a/h5/pages/staff/vehicle/sendACar.vue
+++ b/h5/pages/staff/vehicle/sendACar.vue
@@ -18,6 +18,7 @@
class="box_list_item"
v-for="(item, index) in dataList"
:key="index"
+ @click="itemDetail(item)"
>
<view class="box_list_item_head">
<text>{{ item.carCode }}</text>
@@ -118,6 +119,11 @@
this.total = res.data.total
})
},
+ itemDetail(item) {
+ uni.navigateTo({
+ url: "/pages/staff/vehicle/sendACarDetail?id=" + item.id
+ })
+ },
seletedCar(e) {
const item = e.value[0]
this.$set(this.param, 'carCode', item.code)
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
new file mode 100644
index 0000000..9cd3da5
--- /dev/null
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -0,0 +1,407 @@
+<template>
+ <view class="main_app">
+ <view class="status_wrap">
+ <view class="name">{{ info.memberName }}鐨勭敤杞︾敵璇�</view>
+ <view class="placeholder9">{{ info.companyName }}</view>
+ <view class="status">
+ <text class="loading" v-if="info.status == '0'">鐢宠涓�</text>
+ <text class="grr" v-if="info.status == '1'">瀹℃壒涓�</text>
+ <text class="grr" v-if="info.status == '2'">瀹℃壒閫氳繃</text>
+ <text class="error" v-if="info.status == '3'">瀹℃壒涓嶉�氳繃</text>
+ <text class="grr" v-if="info.status == '4'">宸插彇娑�</text>
+ </view>
+ </view>
+ <!-- -->
+ <view class="emyty"></view>
+ <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>
+ <view class="item">
+ <view class="label">棰勮鍑哄彂鏃堕棿</view>
+ <view class="value">{{ info.planUseDate }}</view>
+ </view>
+ <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>
+ <view class="item">
+ <view class="label">鐢ㄨ溅浜嬬敱</view>
+ <view class="value">{{ info.content }}</view>
+ </view>
+ <view class="item">
+ <view class="label">杞﹁締淇℃伅</view>
+ <view class="value">{{ info.carCode }}</view>
+ </view>
+ <view class="item">
+ <view class="label">鍙告満淇℃伅</view>
+ <view class="value">{{ info.driverName }} {{ info.driverPhone }}</view>
+ </view>
+ </view>
+ <!-- 娴佺▼ -->
+ <view class="flow_wrap">
+ <view class="flow_title">娴佺▼</view>
+ <view class="list">
+ <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"
+ mode="widthFix"
+ />
+ <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"
+ mode="widthFix"
+ />
+ </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="carbon">
+ <view class="carbon_item" v-for="i in 12">
+ <image
+ src="../../../static/logo@2x.png"
+ mode="widthFix"
+ ></image>
+ <view class="text">name</view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </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>
+
+ <!-- -->
+ <u-popup
+ :show="showApprModal"
+ :round="10"
+ :safeAreaInsetBottom="true"
+ mode="bottom"
+ @close="showApprModal = false"
+ >
+ <view class="appr_modal">
+ <view class="title">鍚屾剰</view>
+ <textarea
+ placeholder="鍚屾剰璇存槑锛岄潪蹇呭~"
+ placeholder-class="placeholder9"
+ />
+ <view class="main_footer">
+ <view class="btn" @click="showApprModal = false">鍙栨秷</view>
+ <view class="btn agree">鎻愪氦</view>
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+import { carUseBookDetail } from '@/api'
+export default {
+ data() {
+ return {
+ showApprModal: false,
+ id: '',
+ info: {},
+ param: {},
+
+ }
+ },
+ onLoad(option) {
+ this.id = option.id
+ this.getDetail()
+ },
+ methods: {
+ getDetail() {
+ const { id } = this
+ carUseBookDetail(id).then(res => {
+ this.info = { ...res.data }
+ })
+ },
+ handleSub(flag) {
+ // this.param.flag =
+ if (flag === '1') {
+
+ } else {
+
+ }
+ this.showApprModal = true
+ }
+ },
+}
+</script>
+<style>
+page {
+ background-color: #f7f7f7;
+}
+</style>
+<style lang="scss">
+.main_app {
+ background-color: #fff;
+ padding-bottom: 0;
+
+ .flow_wrap {
+ padding: 30rpx 0;
+
+ .flow_title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 24rpx;
+ }
+
+ .list {
+ .item {
+ display: flex;
+ margin-bottom: 48rpx;
+
+ .avatar {
+ width: 80rpx;
+ height: 80rpx;
+ position: relative;
+ margin-right: 20rpx;
+
+ .img {
+ width: 80rpx;
+ height: 80rpx;
+ border-radius: 50%;
+ }
+
+ .status {
+ width: 28rpx;
+ height: 28rpx;
+ border-radius: 50%;
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ }
+
+ .separate {
+ position: absolute;
+ width: 4rpx;
+ height: 100%;
+ background-color: #eeeeee;
+ left: 50%;
+ transform: translate(-50%, 0);
+ bottom: -80rpx;
+ }
+ }
+
+ .content {
+ flex: 1;
+
+ .head {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 4rpx;
+
+ .event {
+ font-size: 30rpx;
+ }
+
+ .time {
+ font-size: 26rpx;
+ color: #999999;
+ }
+ }
+
+ .name_wrap {
+ font-size: 26rpx;
+ color: #777777;
+
+ .status {
+ color: #279baa;
+ }
+ }
+
+ .remark {
+ margin-top: 12rpx;
+ background-color: #f7f7f7;
+ padding: 14rpx 20rpx;
+ border-radius: 8rpx;
+ font-size: 26rpx;
+ color: #666666;
+ line-height: 36rpx;
+ }
+ }
+ .carbon {
+ display: flex;
+ width: 590rpx;
+ overflow-x: auto;
+ margin-top: 12rpx;
+ .carbon_item {
+ text-align: center;
+ flex-shrink: 0;
+ width: 100rpx;
+ image {
+ width: 60rpx;
+ height: 60rpx;
+ margin: 0 auto;
+ }
+ view {
+ font-size: 26rpx;
+ color: #777777;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ .module_list {
+ .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;
+
+ .avatar {
+ margin-right: 20rpx;
+ width: 120rpx;
+ height: 120rpx;
+ border-radius: 8rpx;
+ border: 2rpx solid #e5e5e5;
+ }
+
+ .info {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ font-size: 26rpx;
+ color: #666666;
+
+ .name {
+ font-size: 30rpx;
+ color: #333333;
+ }
+ }
+ }
+ }
+ }
+
+ .status_wrap {
+ position: relative;
+ padding: 30rpx 0;
+
+ .name {
+ font-weight: 500;
+ font-size: 32rpx;
+ margin-bottom: 20rpx;
+ color: #222222;
+ }
+
+ .desc {
+ font-size: 26rpx;
+ color: #ed4545;
+ }
+
+ .status {
+ position: absolute;
+ right: -30rpx;
+ top: 0;
+ height: 60rpx;
+ line-height: 60rpx;
+ padding: 0 32rpx;
+ border-radius: 0rpx 0rpx 0rpx 30rpx;
+ background-color: #e9edff;
+ color: #279baa;
+ }
+ }
+
+ .main_footer {
+ padding-bottom: 64rpx;
+ display: flex;
+ justify-content: space-between;
+
+ .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: #279baa;
+ color: #fff;
+ border: 1rpx solid #279baa;
+ }
+ }
+
+ .appr_modal {
+ padding: 36rpx 30rpx 0;
+
+ .title {
+ font-weight: 500;
+ font-size: 32rpx;
+ color: #222222;
+ margin-bottom: 40rpx;
+ text-align: center;
+ }
+
+ textarea {
+ box-sizing: border-box;
+ width: 690rpx;
+ background-color: #f7f7f7;
+ font-size: 28rpx;
+ color: #333333;
+ padding: 24rpx;
+ border-radius: 8rpx;
+ margin-bottom: 30rpx;
+ }
+ }
+
+ .emyty {
+ width: 750rpx;
+ height: 20rpx;
+ background-color: #f7f7f7;
+ margin: 0 -30rpx;
+ }
+}
+</style>
diff --git a/h5/pages/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue
index 63ea472..71b1bb4 100644
--- a/h5/pages/staff/vehicle/shinei.vue
+++ b/h5/pages/staff/vehicle/shinei.vue
@@ -155,9 +155,6 @@
} else {
this.selDatetime = this.param.queryDate.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours
}
- // if(true){
- // this.selDatetime.push(item)
- // }
},
confirmDate(e) {
this.param.queryDate = dayjs(e.value).format('YYYY-MM-DD')
diff --git a/h5/utils/service.js b/h5/utils/service.js
index b26180f..4131187 100644
--- a/h5/utils/service.js
+++ b/h5/utils/service.js
@@ -26,16 +26,18 @@
// 鎺у埗鍙版樉绀烘暟鎹俊鎭�
uni.hideLoading()
// 鐧诲綍杩囨湡
- if (data.code === 401) {
+ if (data.code !== 200) {
+ setTimeout(() => {
+ uni.showToast({
+ title: data.message,
+ icon: "none",
+ duration: 2000
+ })
+ })
+ }
+ if (data.code === 5112) {
uni.navigateTo({
url: '/pages/staffLogin/login'
- });
- }
- if (data.code !== 200) {
- uni.showToast({
- title: data.message,
- icon: "none",
- duration: 2000
})
}
resolve(data)
@@ -46,7 +48,7 @@
uni.showToast({
title: '璇锋眰鎺ュ彛澶辫触'
})
-
+
// 杩斿洖閿欒娑堟伅
reject(err)
uni.hideLoading()
--
Gitblit v1.9.3