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/operaVisitsReportWindow.vue |  114 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 99 insertions(+), 15 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;

--
Gitblit v1.9.3