From 7b64d5337254349b32ce91f30bb36eab6ba8231f Mon Sep 17 00:00:00 2001
From: Tomas <tomasysh@gmail.com>
Date: 星期一, 31 七月 2023 19:30:44 +0800
Subject: [PATCH] Fixed: 調整錯誤的 insert API URL

---
 PAMapp/components/Ui/UiDatePicker.vue |   64 ++++++++++++++++++++++++++++++--
 1 files changed, 60 insertions(+), 4 deletions(-)

diff --git a/PAMapp/components/Ui/UiDatePicker.vue b/PAMapp/components/Ui/UiDatePicker.vue
index 56bdc58..890c5ec 100644
--- a/PAMapp/components/Ui/UiDatePicker.vue
+++ b/PAMapp/components/Ui/UiDatePicker.vue
@@ -5,24 +5,80 @@
         v-model="dateValue"
         :clearable="false"
         type="date"
+        :editable="false"
         format="yyyy/MM/dd"
         placeholder="������"
-        prefix-icon="icon-down"
+        prefix-icon="icon-down down-icon"
+        :picker-options="pickerOptions"
         @change="changeDate"
     >
     </el-date-picker>
 </template>
 
 <script lang="ts">
-import { Component, Emit, Vue } from "nuxt-property-decorator";
+import { Component, Emit, Prop, PropSync, Vue, Watch } from "nuxt-property-decorator";
 
 @Component
 export default class UiDatePicker extends Vue {
-    dateValue = '';
+    dateValue: Date | string = '';
+
+    @Prop()
+    defaultValue!: string;
+
+    @Prop({default: false})
+    isPastDateDisabled!: boolean;
+
+    @Prop({default: false})
+    isFutureDateDisabled!: boolean;
+
+    @Prop()
+    disabledBeforeSpecificDate?: string;
 
     @Emit('changeDate')
     changeDate() {
         return this.dateValue;
     }
+
+    @Watch('defaultValue', {immediate: true})
+    updateDefault() {
+        if (this.defaultValue) {
+            this.dateValue = new Date(this.defaultValue);
+            this.changeDate();
+        }
+    }
+
+    get pickerOptions() {
+        const date = new Date();
+        const currentDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
+
+        if (!!this.disabledBeforeSpecificDate) {
+          const compareDate = new Date(this.disabledBeforeSpecificDate);
+          return {
+              disabledDate(time: Date) {
+                  const pickedDate = `${time.getFullYear()}/${time.getMonth() + 1}/${time.getDate()}`;
+                  return new Date(pickedDate).getTime() < compareDate.getTime();
+              }
+          }
+        }
+
+        if (this.isPastDateDisabled) {
+            return {
+                disabledDate(time: Date) {
+                    const pickedDate = `${time.getFullYear()}/${time.getMonth() + 1}/${time.getDate()}`;
+                    return new Date(pickedDate).getTime() < new Date(currentDate).getTime();
+                }
+            }
+        }
+
+        if (this.isFutureDateDisabled) {
+            return {
+                disabledDate(time: Date) {
+                    const pickedDate = `${time.getFullYear()}/${time.getMonth() + 1}/${time.getDate()}`;
+                    return new Date(pickedDate).getTime() > new Date(currentDate).getTime();
+                }
+            }
+        }
+    }
+
 }
-</script>
\ No newline at end of file
+</script>

--
Gitblit v1.8.0