From 3e84978d39cf6399e2335f9a5b10ca144ee9f606 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 07 十一月 2024 14:28:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
h5/pages/staff/vehicle/shiwai.vue | 44 +
admin/src/views/vehicle/category.vue | 18
h5/utils/service.js | 2
h5/pages/staff/vehicle/shinei.vue | 835 +++++++++++++++++++++++++-----------------------
screen/src/views/SecurityControl.vue | 1
admin/src/api/business/category.js | 8
admin/src/components/operation/OperCarUseBookParamWindow.vue | 14
screen/src/assets/base.css | 13
admin/src/views/vehicle/cars.vue | 2
screen/src/views/LogisticsCenter.vue | 4
admin/public/template/cars.xlsx | 0
admin/src/components/business/OperaCarUseBookWindow.vue | 4
admin/src/views/operation/serviceCar/apprRecord.vue | 10
h5/pages/staff/vehicle/apply.vue | 2
screen/src/views/FireFighting.vue | 9
15 files changed, 530 insertions(+), 436 deletions(-)
diff --git a/admin/public/template/cars.xlsx b/admin/public/template/cars.xlsx
index 96713fd..1b3c485 100644
--- a/admin/public/template/cars.xlsx
+++ b/admin/public/template/cars.xlsx
Binary files differ
diff --git a/admin/src/api/business/category.js b/admin/src/api/business/category.js
index 76cddde..8582179 100644
--- a/admin/src/api/business/category.js
+++ b/admin/src/api/business/category.js
@@ -12,7 +12,13 @@
trim: true
})
}
-
+// 瀵煎嚭Excel
+export function exportExcel (data) {
+ return request.post('/visitsAdmin/cloudService/business/category/exportChildExcel', data, {
+ trim: true,
+ download: true
+ })
+}
// 鍒涘缓
export function create (data) {
return request.post('/visitsAdmin/cloudService/business/category/create', data)
diff --git a/admin/src/components/business/OperaCarUseBookWindow.vue b/admin/src/components/business/OperaCarUseBookWindow.vue
index 41c721b..fe82ece 100644
--- a/admin/src/components/business/OperaCarUseBookWindow.vue
+++ b/admin/src/components/business/OperaCarUseBookWindow.vue
@@ -52,11 +52,11 @@
</div>
<div class="item">
<div class="label">棰勮鍑哄彂鏃堕棿</div>
- <div class="value">{{ model.planUseDate || '' }}</div>
+ <div class="value" v-if="model.planUseDate">{{ model.planUseDate.slice(0,16) }}</div>
</div>
<div class="item">
<div class="label">鐢ㄨ溅鏃舵</div>
- <div class="value">濮�:{{ model.startTime || '' }}<br>姝�:{{ model.endTime || '' }}</div>
+ <div class="value">濮�:<span v-if="model.startTime">{{ model.startTime.slice(0,16) }}</span><br>姝�:<span v-if="model.endTime">{{ model.endTime.slice(0,16) }}</span></div>
</div>
</div>
</div>
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index 5e67444..f4120a7 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -139,7 +139,10 @@
</div>
<span slot="footer" class="dialog-footer">
- <div>宸查�夋嫨锛歿{ selDatetime }}</div>
+ <div style="text-align: left;">
+ <div>宸查�夋嫨锛歿{ selDatetime }}</div>
+ <div class="red">{{ selPastDatetime }}</div>
+ </div>
<div class="btn" :class="{ disable: info && info.length > 0 }" @click="subTime">纭鏃堕棿</div>
</span>
</el-dialog>
@@ -376,7 +379,6 @@
})
}
console.log('form', this.form)
-
},
datetimeClick(item, index) {
if (item.carUseBookId) {
@@ -443,8 +445,14 @@
if (str && str == 1) {
this.$set(this.form, 'endTime', '')
}
+
if (form.startTime && form.endTime) {
this.selDatetime = form.startTime + ' - ' + form.endTime
+ if(new Date(form.startTime).getTime() < new Date().getTime()){
+ this.selPastDatetime = '褰撳墠閫夋嫨鍖呭惈宸茬粡杩囧幓鏃堕棿锛岃纭鍚庡啀鎻愪氦锛�'
+ }else{
+ this.selPastDatetime = ''
+ }
carUseBookList({
carId: form.carId,
startTime: form.startTime + ':00',
@@ -452,6 +460,8 @@
}).then(res => {
this.info = res || []
})
+ }else{
+ this.selPastDatetime = ''
}
},
gettimes() {
diff --git a/admin/src/views/operation/serviceCar/apprRecord.vue b/admin/src/views/operation/serviceCar/apprRecord.vue
index f8099c4..3700bac 100644
--- a/admin/src/views/operation/serviceCar/apprRecord.vue
+++ b/admin/src/views/operation/serviceCar/apprRecord.vue
@@ -136,16 +136,20 @@
></el-table-column>
<el-table-column label="鐢ㄨ溅鏃堕棿" min-width="170px">
<template slot-scope="{ row }">
- <span>璧�:{{ row.startTime || "" }}</span
+ <span v-if="row.startTime">璧�:{{ row.startTime.slice(0,16) }}</span
><br />
- <span>姝�:{{ row.endTime || "" }}</span>
+ <span v-if="row.endTime">姝�:{{ row.endTime.slice(0,16) }}</span>
</template>
</el-table-column>
<el-table-column
prop="planUseDate"
label="鍑哄彂鏃堕棿"
min-width="150px"
- ></el-table-column>
+ >
+ <template slot-scope="{ row }">
+ <span v-if="row.planUseDate">{{ row.planUseDate.slice(0,16) }}</span>
+ </template>
+ </el-table-column>
<el-table-column label="鐩殑鍦�" min-width="200px">
<template slot-scope="{ row }">
<span class="status-green" v-if="row.type === 0">銆愬競鍐呫��</span>
diff --git a/admin/src/views/vehicle/cars.vue b/admin/src/views/vehicle/cars.vue
index 415f184..cddc4f7 100644
--- a/admin/src/views/vehicle/cars.vue
+++ b/admin/src/views/vehicle/cars.vue
@@ -10,7 +10,7 @@
@keypress.enter.native="search"></el-input>
</el-form-item>
<el-form-item label="" prop="catePName" title="鍒嗙被鍚嶇О">
- <el-cascader v-model="searchForm.cateIds" @change="changeSel" clearable :options="cateList" :props="{
+ <el-cascader v-model="searchForm.cateIds" @change="changeSel" placeholder="璇烽�夋嫨鍒嗙被" clearable :options="cateList" :props="{
label: 'name',
value: 'id',
children: 'childCategoryList',
diff --git a/admin/src/views/vehicle/category.vue b/admin/src/views/vehicle/category.vue
index 73b3540..ecf4b97 100644
--- a/admin/src/views/vehicle/category.vue
+++ b/admin/src/views/vehicle/category.vue
@@ -18,8 +18,11 @@
<ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
<li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
v-permissions="['business:category:create']">鏂板缓</el-button></li>
+ <li v-permissions="['business:category:exportExcel']"><el-button type="primary" @click="exportExcel"
+ >瀵煎嚭</el-button></li>
</ul>
- <el-table row-key="id" :tree-props="{children: 'childCategoryList'}" v-loading="isWorking.search" :data="dataList" stripe @selection-change="handleSelectionChange">
+ <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search"
+ :data="dataList" stripe @selection-change="handleSelectionChange">
<el-table-column prop="name" label="鍒嗙被鍚嶇О" min-width="100px"></el-table-column>
<el-table-column prop="remark" label="澶囨敞" min-width="100px"></el-table-column>
<!-- <el-table-column prop="status" label="鐘舵��" min-width="100px">
@@ -27,7 +30,7 @@
<span v-if="row.status === 0">鍚敤</span>
<span v-if="row.status === 1">绂佺敤</span>
</template>
- </el-table-column> -->
+</el-table-column> -->
<el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
<el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])"
label="鎿嶄綔" min-width="120" fixed="right">
@@ -43,7 +46,8 @@
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
+ <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow"
+ @success="getList" />
</TableLayout>
</template>
@@ -74,6 +78,12 @@
}
},
created() {
+ this.config({
+ module: '杞﹁締淇℃伅琛�',
+ api: '/business/category',
+ 'field.id': 'id',
+ 'field.main': 'id'
+ })
this.getList()
},
methods: {
@@ -83,7 +93,7 @@
this.$nextTick(() => {
this.$refs.operaCategoryWindow.open(str)
this.$refs.operaCategoryWindow.getList()
- if(row && row.id){
+ if (row && row.id) {
this.$refs.operaCategoryWindow.getDetail(row.id)
}
})
diff --git a/h5/pages/staff/vehicle/apply.vue b/h5/pages/staff/vehicle/apply.vue
index 87d9c52..2007cfa 100644
--- a/h5/pages/staff/vehicle/apply.vue
+++ b/h5/pages/staff/vehicle/apply.vue
@@ -172,7 +172,7 @@
console.log(option)
this.param = { ...option }
this.minDate = new Date().getTime()
-
+ this.param.planUseDate = dayjs(this.param.startTime).format('YYYY-MM-DD HH:mm')
},
methods: {
handleSub() {
diff --git a/h5/pages/staff/vehicle/shinei.vue b/h5/pages/staff/vehicle/shinei.vue
index 35e29fe..35d1c20 100644
--- a/h5/pages/staff/vehicle/shinei.vue
+++ b/h5/pages/staff/vehicle/shinei.vue
@@ -1,398 +1,437 @@
-<template>
- <view class="main_app">
- <view class="app_header">
- <view class="item" @click="isShowCar = true">
- <text v-if="param.carCode">{{ param.carCode }}</text>
- <text v-else class="placeholder9">閫夋嫨杞﹁締</text>
- <u-icon name="arrow-down" color="#999999" />
- </view>
- <view class="item" @click="isShowDate = true">
- <text v-if="param.queryDate">{{ param.queryDate }}</text>
- <text v-else class="placeholder9">閫夋嫨鏃ユ湡</text>
- <u-icon name="arrow-down" color="#999999" />
- </view>
- </view>
- <!-- -->
- <view class="time_list">
- <view
- class="item"
- :class="{
- disable: item.isUse == 1,
- active: item.checked == '1',
- hasSub: item.carUseBookId,
- }"
- @click="datetimeClick(item, i)"
- v-for="(item, i) in timeList"
- :key="i"
- >{{ item.startHours }}-{{ item.endHours }}</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-picker
- keyName="code"
- :show="isShowCar"
- :columns="carsList"
- @confirm="seletedCar"
- @cancel="isShowCar = false"
- ></u-picker>
- <!-- 鏃ユ湡 -->
- <u-datetime-picker
- :show="isShowDate"
- :minDate="minDate"
- @confirm="confirmDate"
- @cancel="isShowDate = false"
- mode="date"
- ></u-datetime-picker>
- <!-- 璇︽儏 -->
- <u-popup
- :show="isShowDetail"
- :round="12"
- mode="bottom"
- @close="isShowDetail = false"
- >
- <view class="detail_modal">
- <view class="title">杞﹁締棰勭害鎯呭喌</view>
- <view class="h1">{{ activeInfo.carCode }}</view>
- <view class="line">
- <view class="label">棰勮鐢ㄨ溅鏃舵</view>
- <view class="value" v-if="activeInfo.startTime"
- >{{ activeInfo.startTime.slice(5, 16) }} -
- {{ activeInfo.endTime.slice(5, 16) }}</view
- >
- </view>
- <view class="line">
- <view class="label">鐩殑鍦�</view>
- <view class="value">{{ activeInfo.addr }}</view>
- </view>
- <view class="line">
- <view class="label">涔樿溅浜烘暟</view>
- <view class="value" v-if="activeInfo.memberIds"
- >{{ activeInfo.memberIds.split(",").length }}浜�</view
- >
- </view>
- <view class="line">
- <view class="label">鐢ㄨ溅浜嬬敱</view>
- <view class="value">{{ activeInfo.content || "" }}</view>
- </view>
- <view class="line">
- <view class="label">鐢宠浜�</view>
- <view class="value"
- >{{ activeInfo.memberName }}
- <text class="primaryColor ml12">{{
- activeInfo.memberPhone
- }}</text></view
- >
- </view>
- <view class="btn" @click="isShowDetail = false">鍏抽棴</view>
- </view>
- </u-popup>
- </view>
-</template>
-
-<script>
-import dayjs from 'dayjs'
-import { getCarsList, carCanReservationDate, carUseBookDetail } from '@/api'
-export default {
- data() {
- return {
- isShowCar: false,
- isShowDate: false,
- param: {},
- isShowDetail: false,
- activeInfo: {},
-
- minDate: '',
- carsList: [[{ name: 'aa', value: '11' }]],
- timeList: [],
- selDatetime: '',
-
- colorOptions: [
- { color: this.$store.state.primaryColor, name: '宸查�夋嫨' },
- { color: '#F7F7F7', name: '鍙绾�' },
- { color: '#cccccc', name: '涓嶅彲棰勭害' },
- ]
- }
- },
- onLoad() {
- this.minDate = new Date().getTime()
- this.initData()
- },
- methods: {
- onSubmit() {
- const { param } = this
- const selTimeList = this.timeList.filter(i => i.checked == '1')
- if (selTimeList.length == 0) {
- return uni.showToast({
- title: '璇峰厛閫夋嫨鐢ㄨ溅鏃堕棿娈�',
- icon: 'none'
- })
- }
- const obj = {
- carCode: param.carCode,
- carId: param.carId,
- startTime: selTimeList[0].startTime,
- endTime: selTimeList[selTimeList.length - 1].endTime,
- dateDay: param.queryDate,
- type: '0'
- }
- uni.navigateTo({
- url: `/pages/staff/vehicle/apply?carCode=${obj.carCode}&carId=${obj.carId}&startTime=${obj.startTime}&endTime=${obj.endTime}&dateDay=${obj.dateDay}&type=${obj.type}`
- })
- // this.$jump('/pages/staff/vehicle/apply')
- },
- datetimeClick(item, index) {
- if (item.carUseBookId) {
- this.getDetail(item.carUseBookId)
- return
- }
- if (item.isUse == '1') 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.param.queryDate.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours
- }
- },
- getDetail(id) {
- carUseBookDetail(
- id
- ).then(res => {
- this.activeInfo = res.data
- this.isShowDetail = true
- })
- },
- confirmDate(e) {
- this.param.queryDate = dayjs(e.value).format('YYYY-MM-DD')
- this.isShowDate = false
- if (this.param.carId && this.param.queryDate) {
- this.gettimes()
- }
- },
- initData() {
- getCarsList({
- type: 0
- }).then(res => {
- this.carsList = [res.data]
- })
- },
- gettimes() {
- const { param } = this
- carCanReservationDate({
- dateDay: param.queryDate,
- carId: param.carId
- }).then(res => {
- if (res.code === 200) {
- this.timeList = res.data || []
- this.timeList.forEach((i, j) => {
- i.checked = '0',
- i.index = j
- if (dayjs().format('YYYY-MM-DD') == param.queryDate) {
- let endTime = new Date(i.endTime).getTime()
- let nowTime = new Date().getTime()
- if (endTime < nowTime) {
- i.isUse = 1
- }
- }
- })
- }
- })
- },
- seletedCar(e) {
- const item = e.value[0]
- this.$set(this.param, 'carCode', item.code)
- this.$set(this.param, 'carId', item.id)
- if (this.param.carId && this.param.queryDate) {
- this.gettimes()
- }
- this.isShowCar = false
- }
- }
-};
-</script>
-
-<style lang="scss">
-.main_app {
- .app_header {
- display: flex;
- align-items: center;
- margin: 0 -15rpx;
- .item {
- width: 330rpx;
- height: 72rpx;
- margin: 15rpx;
- padding: 0 30rpx;
- border-radius: 36rpx;
- border: 1rpx solid #e5e5e5;
- display: flex;
- align-items: center;
- justify-content: space-between;
- align-items: center;
- }
- }
- .main_footer {
- position: absolute;
- width: 100%;
- left: 0;
- bottom: 0;
- padding: 20rpx 30rpx 84rpx;
- box-shadow: 0rpx -3rpx 6rpx 0rpx #eeeeee;
- .sel_time {
- color: $uni-color-primary;
- }
- .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: $uni-color-primary;
- box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee;
- border-radius: 36rpx;
- font-size: 30rpx;
- color: #ffffff;
- }
- }
- }
- .time_list {
- display: flex;
- padding: 30rpx 0 240rpx;
- 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;
- margin-right: 15rpx;
- &:nth-of-type(3n) {
- margin-right: 0;
- }
- }
- .active {
- background-color: $uni-color-primary;
- color: #fff;
- }
- .disable {
- background: #f7f7f7;
- color: #cccccc;
- }
- .hasSub {
- color: #fff;
- background: #cccccc;
- }
- }
-}
-.detail_modal {
- padding: 40rpx 30rpx;
- .title {
- text-align: center;
- font-weight: 600;
- font-size: 32rpx;
- margin-bottom: 40rpx;
- }
- .h1 {
- font-weight: 600;
- font-size: 32rpx;
- margin-bottom: 30rpx;
- }
- .line {
- display: flex;
- margin-bottom: 20rpx;
- .label {
- width: 180rpx;
- color: #888888;
- }
- .value {
- color: #333333;
- }
- }
- .btn {
- margin-top: 230rpx;
- width: 690rpx;
- height: 88rpx;
- line-height: 88rpx;
- text-align: center;
- background: $uni-color-primary;
- border-radius: 44rpx;
- font-weight: 600;
- font-size: 32rpx;
- color: #ffffff;
- }
-}
-</style>
+<template>
+ <view class="main_app">
+ <view class="app_header">
+ <view class="item" @click="isShowCar = true">
+ <text v-if="param.carCode">{{ param.carCode }}</text>
+ <text v-else class="placeholder9">閫夋嫨杞﹁締</text>
+ <u-icon name="arrow-down" color="#999999" />
+ </view>
+ <view class="item" @click="showDate">
+ <text v-if="param.queryDate">{{ param.queryDate }}</text>
+ <text v-else class="placeholder9">閫夋嫨鏃ユ湡</text>
+ <u-icon name="arrow-down" color="#999999" />
+ </view>
+ </view>
+ <!-- pastFlag -->
+ <view class="time_list">
+ <view class="item" :class="{
+ disable: item.pastFlag,
+ active: item.checked == '1',
+ hasSub: item.carUseBookId,
+ }" @click="datetimeClick(item, i)" v-for="(item, i) in timeList" :key="i">
+ {{ item.startHours }}-{{ item.endHours }}
+ </view>
+ </view>
+ <!-- -->
+ <view class="main_footer">
+ <view class="df_ac">
+ <view>宸查�夋嫨锛�</view>
+ <view class="sel_time">{{ selDatetime }}</view>
+ </view>
+ <view class="df_ac red">
+ {{selPastDatetime}}
+ </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-picker keyName="code" :show="isShowCar" :columns="carsList" @confirm="seletedCar"
+ @cancel="isShowCar = false"></u-picker>
+ <!-- 鏃ユ湡 -->
+ <u-datetime-picker ref="startPick" :show="isShowDate" :minDate="minDate" @confirm="confirmDate"
+ @cancel="isShowDate = false" mode="date"></u-datetime-picker>
+ <!-- 璇︽儏 -->
+ <u-popup :show="isShowDetail" :round="12" mode="bottom" @close="isShowDetail = false">
+ <view class="detail_modal">
+ <view class="title">杞﹁締棰勭害鎯呭喌</view>
+ <view class="h1">{{ activeInfo.carCode }}</view>
+ <view class="line">
+ <view class="label">棰勮鐢ㄨ溅鏃舵</view>
+ <view class="value" v-if="activeInfo.startTime">{{ activeInfo.startTime.slice(5, 16) }} -
+ {{ activeInfo.endTime.slice(5, 16) }}
+ </view>
+ </view>
+ <view class="line">
+ <view class="label">鐩殑鍦�</view>
+ <view class="value">{{ activeInfo.addr }}</view>
+ </view>
+ <view class="line">
+ <view class="label">涔樿溅浜烘暟</view>
+ <view class="value" v-if="activeInfo.memberIds">{{ activeInfo.memberIds.split(",").length }}浜�</view>
+ </view>
+ <view class="line">
+ <view class="label">鐢ㄨ溅浜嬬敱</view>
+ <view class="value">{{ activeInfo.content || "" }}</view>
+ </view>
+ <view class="line">
+ <view class="label">鐢宠浜�</view>
+ <view class="value">{{ activeInfo.memberName }}
+ <text class="primaryColor ml12">{{
+ activeInfo.memberPhone
+ }}</text>
+ </view>
+ </view>
+ <view class="btn" @click="isShowDetail = false">鍏抽棴</view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import dayjs from 'dayjs'
+ import {
+ getCarsList,
+ carCanReservationDate,
+ carUseBookDetail
+ } from '@/api'
+ export default {
+ data() {
+ return {
+ isShowCar: false,
+ isShowDate: false,
+ param: {},
+ isShowDetail: false,
+ activeInfo: {},
+
+ minDate: '',
+ carsList: [
+ [{
+ name: 'aa',
+ value: '11'
+ }]
+ ],
+ timeList: [],
+ selDatetime: '',
+ selPastDatetime: '',
+
+ colorOptions: [{
+ color: this.$store.state.primaryColor,
+ name: '宸查�夋嫨'
+ },
+ {
+ color: '#F7F7F7',
+ name: '鍙绾�'
+ },
+ {
+ color: '#cccccc',
+ name: '涓嶅彲棰勭害'
+ },
+ ]
+ }
+ },
+ onLoad() {
+ this.minDate = new Date().getTime() - (6 * 24 * 60 * 60 * 1000)
+ this.initData()
+ },
+ methods: {
+ onSubmit() {
+ const {
+ param
+ } = this
+ const selTimeList = this.timeList.filter(i => i.checked == '1')
+ if (selTimeList.length == 0) {
+ return uni.showToast({
+ title: '璇峰厛閫夋嫨鐢ㄨ溅鏃堕棿娈�',
+ icon: 'none'
+ })
+ }
+ const obj = {
+ carCode: param.carCode,
+ carId: param.carId,
+ startTime: selTimeList[0].startTime,
+ endTime: selTimeList[selTimeList.length - 1].endTime,
+ dateDay: param.queryDate,
+ type: '0'
+ }
+ uni.navigateTo({
+ url: `/pages/staff/vehicle/apply?carCode=${obj.carCode}&carId=${obj.carId}&startTime=${obj.startTime}&endTime=${obj.endTime}&dateDay=${obj.dateDay}&type=${obj.type}`
+ })
+ // this.$jump('/pages/staff/vehicle/apply')
+ },
+ showDate() {
+ this.isShowDate = true
+ if (!this.param.queryDate) {
+ this.$refs.startPick.innerValue = new Date().getTime()
+ }
+ },
+ datetimeClick(item, index) {
+ if (item.carUseBookId) {
+ this.getDetail(item.carUseBookId)
+ return
+ }
+ if (item.isUse == '1') 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 = ''
+ this.selPastDatetime = ''
+ } else {
+ let pastList = selTimeLists.filter(i => i.pastFlag)
+ if (pastList.length > 0) {
+ this.selPastDatetime = '褰撳墠閫夋嫨鍖呭惈宸茬粡杩囧幓鏃堕棿锛岃纭鍚庡啀鎻愪氦锛�'
+ } else {
+ this.selPastDatetime = ''
+ }
+ this.selDatetime = this.param.queryDate.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[
+ selTimeLists.length - 1].endHours
+ }
+ },
+ getDetail(id) {
+ carUseBookDetail(
+ id
+ ).then(res => {
+ this.activeInfo = res.data
+ this.isShowDetail = true
+ })
+ },
+ confirmDate(e) {
+ this.param.queryDate = dayjs(e.value).format('YYYY-MM-DD')
+ this.isShowDate = false
+ if (this.param.carId && this.param.queryDate) {
+ this.gettimes()
+ }
+ },
+ initData() {
+ getCarsList({
+ type: 0
+ }).then(res => {
+ this.carsList = [res.data]
+ })
+ },
+ gettimes() {
+ const {
+ param
+ } = this
+ carCanReservationDate({
+ dateDay: param.queryDate,
+ carId: param.carId
+ }).then(res => {
+ if (res.code === 200) {
+ this.timeList = res.data || []
+ this.timeList.forEach((i, j) => {
+ i.checked = '0',
+ i.index = j
+ // if (dayjs().format('YYYY-MM-DD') == param.queryDate) {
+ // let endTime = new Date(i.endTime).getTime()
+ // let nowTime = new Date().getTime()
+ i.pastFlag = new Date().getTime() > new Date(i.startTime).getTime()
+ // if (endTime < nowTime) {
+ // i.isUse = 1
+ // }
+ // }
+ })
+ }
+ })
+ },
+ seletedCar(e) {
+ const item = e.value[0]
+ this.$set(this.param, 'carCode', item.code)
+ this.$set(this.param, 'carId', item.id)
+ if (this.param.carId && this.param.queryDate) {
+ this.gettimes()
+ }
+ this.isShowCar = false
+ }
+ }
+ };
+</script>
+
+<style lang="scss">
+ .main_app {
+ .app_header {
+ display: flex;
+ align-items: center;
+ margin: 0 -15rpx;
+
+ .item {
+ width: 330rpx;
+ height: 72rpx;
+ margin: 15rpx;
+ padding: 0 30rpx;
+ border-radius: 36rpx;
+ border: 1rpx solid #e5e5e5;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ align-items: center;
+ }
+ }
+
+ .main_footer {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ bottom: 0;
+ padding: 20rpx 30rpx 84rpx;
+ box-shadow: 0rpx -3rpx 6rpx 0rpx #eeeeee;
+
+ .sel_time {
+ color: $uni-color-primary;
+ }
+
+ .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: $uni-color-primary;
+ box-shadow: 0rpx -1rpx 0rpx 0rpx #eeeeee;
+ border-radius: 36rpx;
+ font-size: 30rpx;
+ color: #ffffff;
+ }
+ }
+ }
+
+ .time_list {
+ display: flex;
+ padding: 30rpx 0 240rpx;
+ 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;
+ margin-right: 15rpx;
+
+ &:nth-of-type(3n) {
+ margin-right: 0;
+ }
+ }
+
+ .disable {
+ background: #f7f7f7;
+ color: #cccccc;
+ }
+
+ .active {
+ background-color: $uni-color-primary;
+ color: #fff;
+ }
+
+ .hasSub {
+ color: #999999;
+ background: #cccccc;
+ }
+ }
+ }
+
+ .detail_modal {
+ padding: 40rpx 30rpx;
+
+ .title {
+ text-align: center;
+ font-weight: 600;
+ font-size: 32rpx;
+ margin-bottom: 40rpx;
+ }
+
+ .h1 {
+ font-weight: 600;
+ font-size: 32rpx;
+ margin-bottom: 30rpx;
+ }
+
+ .line {
+ display: flex;
+ margin-bottom: 20rpx;
+
+ .label {
+ width: 180rpx;
+ color: #888888;
+ }
+
+ .value {
+ color: #333333;
+ }
+ }
+
+ .btn {
+ margin-top: 230rpx;
+ width: 690rpx;
+ height: 88rpx;
+ line-height: 88rpx;
+ text-align: center;
+ background: $uni-color-primary;
+ border-radius: 44rpx;
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #ffffff;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/staff/vehicle/shiwai.vue b/h5/pages/staff/vehicle/shiwai.vue
index 8470ad9..6eb83c4 100644
--- a/h5/pages/staff/vehicle/shiwai.vue
+++ b/h5/pages/staff/vehicle/shiwai.vue
@@ -21,7 +21,7 @@
<text>*</text>
<text>棰勮鐢ㄨ溅鏃舵</text>
</view>
- <view class="value" @click="isShowDate = true">
+ <view class="value" @click="showDate">
<text
class="mr6"
:style="{ color: param.startTime ? '#000000' : '#999999' }"
@@ -66,11 +66,14 @@
</view>
</view>
<view class="main_footer">
- <text>宸查�夋嫨锛�</text>
- <text class="sel" v-if="param.startTime"
- >{{ param.startHours }}鑷硔{ param.endHours }}</text
- >
- <text class="btn" :class="{disable: info && info.length > 0}" @click="onSubmit">纭棰勭害</text>
+ <view class="df_sb">
+ <text>宸查�夋嫨锛�</text>
+ <text class="sel" v-if="param.startTime"
+ >{{ param.startHours }}鑷硔{ param.endHours }}</text
+ >
+ <text class="btn" :class="{disable: info && info.length > 0}" @click="onSubmit">纭棰勭害</text>
+ </view>
+ <view class="red">{{placeStr}}</view>
</view>
<!-- -->
<!-- 閫夋嫨杞﹁締 -->
@@ -97,6 +100,7 @@
<u-datetime-picker
mode="datetime"
:show="isShowDate"
+ ref="startPick"
title="寮�濮嬫椂闂�"
:minDate="minDate"
@close="isShowDate = false"
@@ -130,15 +134,22 @@
carsList: [],
info: [],
- minDate: ''
+ minDate: '',
+ placeStr: ''
}
},
onLoad() {
- this.minDate = new Date(dayjs().format('YYYY-MM-DD HH:mm') + ':00').getTime()
- console.log('minDate', this.minDate);
+ // this.minDate = new Date(dayjs().format('YYYY-MM-DD HH:mm') + ':00').getTime()
+ this.minDate = new Date().getTime() - (6 * 24 * 60 * 60 * 1000)
this.initData()
},
methods: {
+ showDate() {
+ this.isShowDate = true
+ if (!this.param.startTime) {
+ this.$refs.startPick.innerValue = new Date().getTime()
+ }
+ },
onSubmit() {
const { param, info } = this
if (info.length > 0) return
@@ -198,6 +209,12 @@
if (this.param.carId && this.param.startTime) {
this.getInfo()
}
+ console.log(e);
+ if(new Date(this.param.startTime).getTime() < new Date().getTime() - 60 * 1000){
+ this.placeStr = '褰撳墠閫夋嫨鍖呭惈宸茬粡杩囧幓鏃堕棿锛岃纭鍚庡啀鎻愪氦锛�'
+ }else{
+ this.placeStr = ''
+ }
this.$forceUpdate()
},
endtimeClose() {
@@ -328,9 +345,12 @@
bottom: 0;
padding: 20rpx 30rpx 84rpx;
box-shadow: 0rpx -3rpx 6rpx 0rpx #eeeeee;
- display: flex;
- align-items: center;
- justify-content: space-between;
+
+ .df_sb{
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
.btn {
width: 184rpx;
height: 72rpx;
diff --git a/h5/utils/service.js b/h5/utils/service.js
index a6791d1..70e1617 100644
--- a/h5/utils/service.js
+++ b/h5/utils/service.js
@@ -34,7 +34,7 @@
duration: 2000
})
})
- if (data.code === 500) {
+ if (data.code === 500 || data.code === 5112) {
uni.clearStorageSync()
return uni.navigateTo({
url: '/pages/login/login'
diff --git a/screen/src/assets/base.css b/screen/src/assets/base.css
index f0b43dd..da3c493 100644
--- a/screen/src/assets/base.css
+++ b/screen/src/assets/base.css
@@ -5,6 +5,19 @@
background-color 0.5s;
margin: 0;
}
+html {
+ -ms-overflow-style: none;
+ overflow: -moz-scrollbars-none;
+}
+
+html::-webkit-scrollbar {
+ width: 0px
+}
+
+::-webkit-scrollbar {
+ display: none;
+}
+
p{
padding: 0;
margin: 0;
diff --git a/screen/src/views/FireFighting.vue b/screen/src/views/FireFighting.vue
index 25fd46a..c403ab2 100644
--- a/screen/src/views/FireFighting.vue
+++ b/screen/src/views/FireFighting.vue
@@ -3,7 +3,7 @@
<div class="main_app">
<img src="@/assets/images/FireFighting/bg@2x.png" class="main_bg" alt="" />
<div class="main_header">
- <img src="@/assets/images/maintitle@2x.png" class="main_header_bg" alt="" />
+ <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
<div class="title">瀹夋嘲鏅烘収鐗╂祦鍥尯-娑堥槻鎬佸娍鐩戞帶</div>
<div class="time_wrap">
<span class="date">{{ date }}</span>
@@ -913,7 +913,6 @@
.left_box_one {
width: 100%;
margin-bottom: 20px;
- border: 1px solid;
.list_wrap {
padding: 10px 0;
@@ -977,7 +976,6 @@
.police_wrap {
padding: 15px 20px 0;
height: 225px;
- border: 1px solid;
.item {
margin-bottom: 5px;
@@ -996,7 +994,6 @@
.left_box_three {
.dispose_wrap {
- border: 1px solid;
height: 210px;
width: 100%;
@@ -1176,7 +1173,7 @@
font-weight: 500;
span {
- font-style: 14px;
+ font-size: 14px;
font-weight: 400;
}
}
@@ -1404,7 +1401,7 @@
overflow: auto;
margin-top: 15px;
scrollbar-width: none;
-
+
.item {
display: flex;
font-size: 13px;
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 101762b..b29190e 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -1497,7 +1497,6 @@
width: 100%;
flex: 1;
- /* border: 1px solid; */
.echart_map {
width: 100%;
height: 100%;
@@ -1512,7 +1511,6 @@
.right_box_one {
margin-top: 20px;
padding: 0px 10px 30px 20px;
- border: 1px solid;
.content_wrap {
display: flex;
@@ -1609,7 +1607,6 @@
}
.right_box_two {
- border: 1px solid;
padding: 10px 15px;
.echart4_wrap {
@@ -1624,7 +1621,6 @@
}
.right_box_three {
- border: 1px solid;
.echart5_wrap {
height: 240px;
diff --git a/screen/src/views/SecurityControl.vue b/screen/src/views/SecurityControl.vue
index beec715..8afd905 100644
--- a/screen/src/views/SecurityControl.vue
+++ b/screen/src/views/SecurityControl.vue
@@ -775,7 +775,6 @@
.main_content {
display: flex;
padding: 20px 25px 0;
- border: 1px solid;
.left_box {
width: 360px;
--
Gitblit v1.9.3