From e2525e1ed686dc305e562757c3a00b37ac3beec4 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 21 六月 2024 16:24:32 +0800
Subject: [PATCH] time
---
admin/src/components/business/operaVisitsWindow.vue | 68 +++++++++++++
admin/src/components/operation/OperCarUseBookParamWindow.vue | 87 ++++++++++++++---
admin/src/components/operation/HiddenDangerParam.vue | 2
admin/src/components/business/operaVisitsReportWindow.vue | 114 +++++++++++++++++++---
4 files changed, 239 insertions(+), 32 deletions(-)
diff --git a/admin/src/components/business/operaVisitsReportWindow.vue b/admin/src/components/business/operaVisitsReportWindow.vue
index f31ef28..c0976eb 100644
--- a/admin/src/components/business/operaVisitsReportWindow.vue
+++ b/admin/src/components/business/operaVisitsReportWindow.vue
@@ -1,12 +1,12 @@
<template>
<GlobalWindow
- title="鏂板璁垮鎶ュ"
- width="600px"
- :visible.sync="isShowModal"
- :confirm-working="isWorking"
- @confirm="confirm"
+ title="鏂板璁垮鎶ュ"
+ width="600px"
+ :visible.sync="isShowModal"
+ :confirm-working="isWorking"
+ @confirm="confirm"
>
- <el-form :model="param" ref="paramRef" :rules="rules" >
+ <el-form :model="param" ref="paramRef" :rules="rules">
<div class="title_tip">璁垮棰勭害</div>
<el-form-item label="琚浜�" prop="startTime">
{{ userInfo.realname }} {{ userInfo.company.companyNamePath }}
@@ -18,6 +18,8 @@
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
default-time="08:00:00"
+ :picker-options="startPickerOptions"
+ @change="changeStarttime"
/>
</el-form-item>
<el-form-item label="绂诲洯鏃堕棿" prop="endtime">
@@ -27,28 +29,46 @@
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
default-time="08:00:00"
+ :picker-options="endPickerOptions"
/>
</el-form-item>
<div class="title_tip">璁垮淇℃伅</div>
<el-form-item label="鑱旂郴浜�" prop="name">
- <el-input v-model="param.name" placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勫鍚�"></el-input>
+ <el-input
+ v-model="param.name"
+ placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勫鍚�"
+ ></el-input>
</el-form-item>
<el-form-item label="鎵嬫満鍙�" prop="phone">
- <el-input v-model="param.phone" placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勬墜鏈哄彿"></el-input>
+ <el-input
+ v-model="param.phone"
+ placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勬墜鏈哄彿"
+ ></el-input>
</el-form-item>
<el-form-item label="鏉ヨ鍗曚綅" prop="companyName">
- <el-input v-model="param.companyName" placeholder="璇疯緭鍏ユ潵璁跨殑鍗曚綅鍏ㄧО"></el-input>
+ <el-input
+ v-model="param.companyName"
+ placeholder="璇疯緭鍏ユ潵璁跨殑鍗曚綅鍏ㄧО"
+ ></el-input>
</el-form-item>
<el-form-item label="鍏ュ洯杞﹁締" prop="carNos">
<el-input v-model="param.carNos" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
</el-form-item>
<el-form-item label="闅忚溅浜烘暟" prop="memberNum">
- <el-input v-model="param.memberNum" placeholder="璇疯緭鍏ラ殢杞︿汉鍛樻�绘暟"></el-input>
+ <el-input
+ v-model="param.memberNum"
+ placeholder="璇疯緭鍏ラ殢杞︿汉鍛樻�绘暟"
+ ></el-input>
</el-form-item>
<el-form-item label="鏉ヨ浜嬬敱" prop="reason">
<el-select v-model="param.reason" placeholder="璇烽�夋嫨">
- <el-option v-for="item in VisitReason" :key="item.id" :label="item.title" :value="item.title" />
+ <el-option
+ v-for="item in VisitReason"
+ :key="item.id"
+ :label="item.title"
+ :value="item.title"
+ />
</el-select>
</el-form-item>
</el-form>
@@ -59,6 +79,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
+import dayjs from 'dayjs'
import { createVisit, getVisitedVisitReason } from '@/api/business/visits'
export default {
name: 'OperaVisitsHkWindow',
@@ -71,13 +92,29 @@
return {
isShowModal: false,
param: {
- type: 2
+ type: 2,
+ starttime: '',
+ endtime: ''
},
userInfo: this.$store.state.userInfo,
-
+
VisitReason: [],
uploadData: {
folder: 'member'
+ },
+ startPickerOptions: {
+ disabledDate (time) {
+ return time.getTime() < Date.now() - 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ },
+ selectableRange: '00:00:00 - 23:59:59' // 杩欎釜鍔犱笂涔嬪悗锛屾椂鍒嗙涓婇潰鎵嶆湁绂佹閫夋嫨鍙樼伆锛屽鏋滀笉鍔狅紝涔熷彲浠ョ姝㈤�夋嫨锛屼絾鏄笉浼氬彉鐏�
+ },
+ endPickerOptions: {
+ disabledDate: (time) => {
+ if (this.param.starttime) {
+ return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ }
+ },
+ selectableRange: '00:00:00 - 23:59:59'
},
rules: {
starttime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
@@ -92,18 +129,65 @@
companyName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
phone: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
carNos: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
- constructionReason: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+ constructionReason: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
}
}
},
created () {
this.initData()
+ this.$set(this.param, 'starttime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ },
+ watch: {
+ 'param.starttime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const date = new Date()
+ // const min = date.getMinutes()
+ // date.setMinutes(min) // 杩欓噷鍔�1鍒嗛挓锛屾槸涓轰簡瑙e喅鍊兼敼鍙樺悗锛岀郴缁熺鏁板氨杩囨湡闄愬埗浜嗭紝鏃犳硶鐐瑰嚮鈥滄鍒烩�濇寜閽紝 濡傛灉鐩戝惉 鈥滅郴缁熸椂闂粹�濈殑鏀瑰彉锛屽垯浼氬奖鍝嶆�ц兘銆�
+ const nowDate = dayjs(date).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ const hh1 = dayjs(newValue).format('HH:mm:ss')
+ // if (hh1 < nowDate) {
+ // this.param.starttime = new Date()
+ // }
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ 'param.endtime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ }
},
methods: {
initData () {
getVisitedVisitReason({}).then(res => {
this.VisitReason = res || []
})
+ },
+ changeStarttime (e) {
+ this.$set(this.param, 'endtime', this.param.starttime)
},
uploadAvatarSuccess (file) {
this.$set(this.param, 'faceImg', file.imgurl)
@@ -140,7 +224,7 @@
}
</script>
<style lang="scss" scoped>
-.title_tip{
+.title_tip {
font-size: 18px;
font-weight: 600;
margin-bottom: 10px;
diff --git a/admin/src/components/business/operaVisitsWindow.vue b/admin/src/components/business/operaVisitsWindow.vue
index a772e6e..72c3919 100644
--- a/admin/src/components/business/operaVisitsWindow.vue
+++ b/admin/src/components/business/operaVisitsWindow.vue
@@ -50,6 +50,8 @@
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
default-time="08:00:00"
+ :picker-options="startPickerOptions"
+ @change="changeStarttime"
/>
</el-form-item>
<el-form-item label="绂诲洯鏃堕棿" prop="endtime">
@@ -58,6 +60,7 @@
format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
+ :picker-options="endPickerOptions"
default-time="08:00:00"
/>
</el-form-item>
@@ -88,6 +91,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
+import dayjs from 'dayjs'
import { createFk, getVisitedVisitReason, getVisitedMember } from '@/api/business/visits'
export default {
name: 'OperaVisitsHkWindow',
@@ -101,13 +105,29 @@
isShowModal: false,
param: {
type: 0,
- idcardType: 0
+ idcardType: 0,
+ starttime: '',
+ endtime: ''
},
VisitReason: [],
memberList: [],
uploadData: {
folder: 'member'
+ },
+ startPickerOptions: {
+ disabledDate (time) {
+ return time.getTime() < Date.now() - 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ },
+ selectableRange: '00:00:00 - 23:59:59' // 杩欎釜鍔犱笂涔嬪悗锛屾椂鍒嗙涓婇潰鎵嶆湁绂佹閫夋嫨鍙樼伆锛屽鏋滀笉鍔狅紝涔熷彲浠ョ姝㈤�夋嫨锛屼絾鏄笉浼氬彉鐏�
+ },
+ endPickerOptions: {
+ disabledDate: (time) => {
+ if (this.param.starttime) {
+ return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+ }
+ },
+ selectableRange: '00:00:00 - 23:59:59'
},
rules: {
starttime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
@@ -130,6 +150,49 @@
this.$set(this.param, 'receptMemberId', this.$store.state.userInfo.memberId)
this.initData()
},
+ watch: {
+ 'param.starttime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const date = new Date()
+ // const min = date.getMinutes()
+ // date.setMinutes(min) // 杩欓噷鍔�1鍒嗛挓锛屾槸涓轰簡瑙e喅鍊兼敼鍙樺悗锛岀郴缁熺鏁板氨杩囨湡闄愬埗浜嗭紝鏃犳硶鐐瑰嚮鈥滄鍒烩�濇寜閽紝 濡傛灉鐩戝惉 鈥滅郴缁熸椂闂粹�濈殑鏀瑰彉锛屽垯浼氬奖鍝嶆�ц兘銆�
+ const nowDate = dayjs(date).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ const hh1 = dayjs(newValue).format('HH:mm:ss')
+ // if (hh1 < nowDate) {
+ // this.param.starttime = new Date()
+ // }
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ },
+ 'param.endtime': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
+ let st = ''
+ if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+ st = nowDate
+ } else {
+ st = '00:00:00'
+ }
+ this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
+ }
+ },
methods: {
initData () {
getVisitedVisitReason({}).then(res => {
@@ -143,6 +206,9 @@
this.$set(this.param, 'faceImg', file.imgurl)
this.$set(this.param, 'faceImgUrl', file.imgurlfull)
},
+ changeStarttime (e) {
+ this.$set(this.param, 'endtime', this.param.starttime)
+ },
// 鍚屾淇℃伅
confirm () {
this.$refs.paramRef.validate((valid) => {
diff --git a/admin/src/components/operation/HiddenDangerParam.vue b/admin/src/components/operation/HiddenDangerParam.vue
index c8bfb1a..c0de303 100644
--- a/admin/src/components/operation/HiddenDangerParam.vue
+++ b/admin/src/components/operation/HiddenDangerParam.vue
@@ -101,6 +101,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
+import dayjs from 'dayjs'
import { allList, memberList } from '@/api/business/hiddenDangerParam'
import { create } from '@/api/business/hiddenDanger'
export default {
@@ -135,6 +136,7 @@
}
},
created () {
+ this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
this.initData()
},
methods: {
diff --git a/admin/src/components/operation/OperCarUseBookParamWindow.vue b/admin/src/components/operation/OperCarUseBookParamWindow.vue
index 4aeb788..4aa942d 100644
--- a/admin/src/components/operation/OperCarUseBookParamWindow.vue
+++ b/admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -9,8 +9,12 @@
<div class="modal_wrap">
<el-form :model="form" ref="formRef" class="el_form" :rules="rules">
<el-form-item label="鐢ㄨ溅鑼冨洿" prop="type">
- <el-radio v-model="form.type" style="width: 80px;" :label="0">甯傚唴鐢ㄨ溅</el-radio>
- <el-radio v-model="form.type" style="width: 80px;" :label="1">甯傚鐢ㄨ溅</el-radio>
+ <el-radio v-model="form.type" style="width: 80px" :label="0"
+ >甯傚唴鐢ㄨ溅</el-radio
+ >
+ <el-radio v-model="form.type" style="width: 80px" :label="1"
+ >甯傚鐢ㄨ溅</el-radio
+ >
</el-form-item>
<el-form-item label="閫夋嫨杞﹁締" prop="carId">
<el-select v-model="form.carId" placeholder="閫夋嫨杞﹁締">
@@ -35,16 +39,27 @@
</el-form-item>
<el-form-item label="棰勮鍑哄彂鏃堕棿" prop="planUseDate">
<el-date-picker
+ v-if="form.type == '0'"
:disabled="!form.startTime"
v-model="form.planUseDate"
- format="yyyy-MM-dd HH:mm:ss"
+ format="yyyy-MM-dd HH:mm"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions"
default-time="08:00:00"
type="datetime"
placeholder="閫夋嫨鏃ユ湡鏃堕棿"
- >
- </el-date-picker>
+ />
+ <el-date-picker
+ v-if="form.type == '1'"
+ :disabled="!form.startTime"
+ v-model="form.planUseDate"
+ format="yyyy-MM-dd HH:mm"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ :picker-options="pickerOptions2"
+ default-time="08:00:00"
+ type="datetime"
+ placeholder="閫夋嫨鏃ユ湡鏃堕棿"
+ />
</el-form-item>
<el-form-item label="鐩殑鍦�" prop="addr">
<el-input v-model="form.addr" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
@@ -78,8 +93,12 @@
<h1>娉ㄦ剰浜嬮」锛�</h1>
<div>1銆佸叕鍙歌溅杈嗗鍑洪渶鍔炵悊鐢ㄨ溅鐢宠琛紝缁忔壒鍑嗗悗鏂瑰彲澶栧嚭锛堝�熷嚭锛夈��</div>
<div>2銆佸競澶栫敤杞﹂渶棰嗗瀹℃牳銆�</div>
- <div>3銆佸�熷嚭杞﹁締蹇呴』閬靛畧浜ら�氳鍒欙紝瀹夊叏琛岄┒銆傚浜庤溅杈嗗彂鐢熶氦閫氭剰澶栵紝瀵瑰綋浜嬩汉鍙婄涓夋柟閫犳垚浜鸿韩浼ゅ鍙婃崯澶憋紝鍏徃鍙互鍗忓姪澶勭悊淇濋櫓鍏徃璧斿伩鐩稿叧浜嬪疁锛屼絾涓嶆壙鎷呬换浣曡矗浠诲拰璐圭敤銆�</div>
- <div>4銆佸叕鍙稿�熺粰鐢宠浜虹敤杞︼紝鐢宠鍊熻溅浜轰负绗竴璐d换浜猴紝涓嶅厑璁歌浆鍊熺粰鍏朵粬浜轰娇鐢紝鑻ヨ鍊熺粰浠栦汉浣跨敤銆傝矗浠讳汉瑕佹壙鎷呭叏閮ㄨ矗浠汇��</div>
+ <div>
+ 3銆佸�熷嚭杞﹁締蹇呴』閬靛畧浜ら�氳鍒欙紝瀹夊叏琛岄┒銆傚浜庤溅杈嗗彂鐢熶氦閫氭剰澶栵紝瀵瑰綋浜嬩汉鍙婄涓夋柟閫犳垚浜鸿韩浼ゅ鍙婃崯澶憋紝鍏徃鍙互鍗忓姪澶勭悊淇濋櫓鍏徃璧斿伩鐩稿叧浜嬪疁锛屼絾涓嶆壙鎷呬换浣曡矗浠诲拰璐圭敤銆�
+ </div>
+ <div>
+ 4銆佸叕鍙稿�熺粰鐢宠浜虹敤杞︼紝鐢宠鍊熻溅浜轰负绗竴璐d换浜猴紝涓嶅厑璁歌浆鍊熺粰鍏朵粬浜轰娇鐢紝鑻ヨ鍊熺粰浠栦汉浣跨敤銆傝矗浠讳汉瑕佹壙鎷呭叏閮ㄨ矗浠汇��
+ </div>
</div>
</div>
@@ -97,6 +116,11 @@
value-format="yyyy-MM-dd"
type="date"
placeholder="閫夋嫨鏃ユ湡"
+ :picker-options="{
+ disabledDate(time) {
+ return time.getTime() < Date.now() - 8.64e7;
+ }
+ }"
@change="seletedDate"
>
</el-date-picker>
@@ -185,8 +209,8 @@
<span>{{ item.memberIds.split(",").length }}浜�</span>
</div>
<div class="line">
- <text>鐢ㄨ溅浜嬬敱</text>
- <text>{{ item.content }}</text>
+ <span>鐢ㄨ溅浜嬬敱</span>
+ <span>{{ item.content }}</span>
</div>
<div class="line">
<span>鐢宠浜�</span>
@@ -210,6 +234,7 @@
import { allList as getCarList } from '@/api/business/cars'
import { carCanReservationDate, carUseBookCraete, carUseBookList } from '@/api/business/carUseBook'
import { findTypeMemberInfo } from '@/api/business/memberCard'
+import dayjs from 'dayjs'
export default {
name: 'OperCarUseBookParamWindow',
extends: BaseOpera,
@@ -233,19 +258,37 @@
carsList: [],
form: {
type: 0,
+ startTime: '',
+ endTime: '',
memberIds: []
},
pickerOptions: {
disabledDate: (time) => {
if (this.form.startTime && this.form.endTime) {
const minTime = new Date(this.form.startTime).getTime() - 8.64e7
+ const maxTime = new Date(this.form.endTime).getTime()
return (
- time.getTime() < minTime
+ time.getTime() < minTime || time.getTime() > maxTime
)
} else {
return time.getTime() < Date.now() - 8.64e7
}
- }
+ },
+ selectableRange: '00:00:00 - 23:59:59'
+ },
+ pickerOptions2: {
+ disabledDate: (time) => {
+ if (this.form.startTime && this.form.endTime) {
+ const minTime = new Date(this.form.startTime).getTime()
+ const maxTime = new Date(this.form.endTime).getTime()
+ return (
+ time.getTime() < minTime || time.getTime() > maxTime
+ )
+ } else {
+ return time.getTime() < Date.now() - 8.64e7
+ }
+ },
+ selectableRange: '00:00:00 - 23:59:59'
},
// 楠岃瘉瑙勫垯
rules: {
@@ -258,6 +301,18 @@
memberIds: [{ type: 'array', required: true, message: '璇烽�夋嫨', trigger: 'change' }],
content: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
}
+ }
+ },
+ watch: {
+ 'form.planUseDate': {
+ handler (newValue, oldValue) {
+ if (newValue) {
+ this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + this.form.endTime.slice(11, 19))
+ // this.startPickerOptions = this.startPickerOptions
+ }
+ },
+ deep: true,
+ immediate: true
}
},
created () {
@@ -415,7 +470,7 @@
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
-div{
+div {
box-sizing: border-box;
}
.modal_wrap {
@@ -444,10 +499,10 @@
flex: 1;
margin-left: 30px;
padding: 0 30px;
- h1{
+ h1 {
margin-bottom: 20px;
}
- div{
+ div {
line-height: 28px;
}
}
@@ -501,7 +556,7 @@
}
}
.have_info {
- padding: 0 0 120px;
+ padding: 0 0 60px;
.tit {
color: #ed4545;
margin: 20px 0 12px;
@@ -522,7 +577,7 @@
.line {
display: flex;
margin-bottom: 10px;
- text {
+ span {
&:nth-of-type(1) {
width: 80px;
color: #888888;
--
Gitblit v1.9.3