mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	feat: 添加时间选择(器)示例
This commit is contained in:
		
							parent
							
								
									3a42d6d6c6
								
							
						
					
					
						commit
						26f53deb9f
					
				@ -59,6 +59,7 @@ menus:
 | 
				
			|||||||
  hsColorPicker: Color Picker
 | 
					  hsColorPicker: Color Picker
 | 
				
			||||||
  hsDatePicker: Date Picker
 | 
					  hsDatePicker: Date Picker
 | 
				
			||||||
  hsDateTimePicker: DateTimePicker
 | 
					  hsDateTimePicker: DateTimePicker
 | 
				
			||||||
 | 
					  hsTimePicker: TimePicker
 | 
				
			||||||
  hsmenus: MultiLevel Menu
 | 
					  hsmenus: MultiLevel Menu
 | 
				
			||||||
  hsmenu1: Menu1
 | 
					  hsmenu1: Menu1
 | 
				
			||||||
  hsmenu1-1: Menu1-1
 | 
					  hsmenu1-1: Menu1-1
 | 
				
			||||||
 | 
				
			|||||||
@ -59,6 +59,7 @@ menus:
 | 
				
			|||||||
  hsColorPicker: 颜色选择器
 | 
					  hsColorPicker: 颜色选择器
 | 
				
			||||||
  hsDatePicker: 日期选择器
 | 
					  hsDatePicker: 日期选择器
 | 
				
			||||||
  hsDateTimePicker: 日期时间选择器
 | 
					  hsDateTimePicker: 日期时间选择器
 | 
				
			||||||
 | 
					  hsTimePicker: 时间选择器
 | 
				
			||||||
  hsmenus: 多级菜单
 | 
					  hsmenus: 多级菜单
 | 
				
			||||||
  hsmenu1: 菜单1
 | 
					  hsmenu1: 菜单1
 | 
				
			||||||
  hsmenu1-1: 菜单1-1
 | 
					  hsmenu1-1: 菜单1-1
 | 
				
			||||||
 | 
				
			|||||||
@ -42,6 +42,14 @@ export default {
 | 
				
			|||||||
        title: $t("menus.hsDateTimePicker")
 | 
					        title: $t("menus.hsDateTimePicker")
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: "/components/time-picker",
 | 
				
			||||||
 | 
					      name: "TimePicker",
 | 
				
			||||||
 | 
					      component: () => import("@/views/components/time-picker.vue"),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        title: $t("menus.hsTimePicker")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/icon-select",
 | 
					      path: "/components/icon-select",
 | 
				
			||||||
      name: "IconSelect",
 | 
					      name: "IconSelect",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										197
									
								
								src/views/components/time-picker.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										197
									
								
								src/views/components/time-picker.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,197 @@
 | 
				
			|||||||
 | 
					<script setup lang="ts">
 | 
				
			||||||
 | 
					import { ref, watch } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defineOptions({
 | 
				
			||||||
 | 
					  name: "TimePicker"
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const size = ref("default");
 | 
				
			||||||
 | 
					const dynamicSize = ref();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 时间选择器 */
 | 
				
			||||||
 | 
					const value = ref("");
 | 
				
			||||||
 | 
					const value1 = ref("");
 | 
				
			||||||
 | 
					const value3 = ref();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value2 = ref(new Date(2016, 9, 10, 18, 30));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const makeRange = (start: number, end: number) => {
 | 
				
			||||||
 | 
					  const result: number[] = [];
 | 
				
			||||||
 | 
					  for (let i = start; i <= end; i++) {
 | 
				
			||||||
 | 
					    result.push(i);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return result;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					const disabledHours = () => {
 | 
				
			||||||
 | 
					  return makeRange(0, 16).concat(makeRange(19, 23));
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					const disabledMinutes = (hour: number) => {
 | 
				
			||||||
 | 
					  if (hour === 17) {
 | 
				
			||||||
 | 
					    return makeRange(0, 29);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  if (hour === 18) {
 | 
				
			||||||
 | 
					    return makeRange(31, 59);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					const disabledSeconds = (hour: number, minute: number) => {
 | 
				
			||||||
 | 
					  if (hour === 18 && minute === 30) {
 | 
				
			||||||
 | 
					    return makeRange(1, 59);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(size, val =>
 | 
				
			||||||
 | 
					  val === "disabled"
 | 
				
			||||||
 | 
					    ? (dynamicSize.value = "default")
 | 
				
			||||||
 | 
					    : (dynamicSize.value = size.value)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 时间选择 */
 | 
				
			||||||
 | 
					const value4 = ref("");
 | 
				
			||||||
 | 
					const value5 = ref("");
 | 
				
			||||||
 | 
					const startTime = ref("");
 | 
				
			||||||
 | 
					const endTime = ref("");
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div>
 | 
				
			||||||
 | 
					    <el-card shadow="never">
 | 
				
			||||||
 | 
					      <template #header>
 | 
				
			||||||
 | 
					        <div class="card-header">
 | 
				
			||||||
 | 
					          <el-space wrap :size="40">
 | 
				
			||||||
 | 
					            <el-link
 | 
				
			||||||
 | 
					              v-tippy="{
 | 
				
			||||||
 | 
					                content: '点击查看详细文档'
 | 
				
			||||||
 | 
					              }"
 | 
				
			||||||
 | 
					              href="https://element-plus.org/zh-CN/component/time-picker.html"
 | 
				
			||||||
 | 
					              target="_blank"
 | 
				
			||||||
 | 
					              style="font-size: 16px; font-weight: 800"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              时间选择器
 | 
				
			||||||
 | 
					            </el-link>
 | 
				
			||||||
 | 
					            <el-radio-group v-model="size" size="small">
 | 
				
			||||||
 | 
					              <el-radio label="large">大尺寸</el-radio>
 | 
				
			||||||
 | 
					              <el-radio label="default">默认尺寸</el-radio>
 | 
				
			||||||
 | 
					              <el-radio label="small">小尺寸</el-radio>
 | 
				
			||||||
 | 
					              <el-radio label="disabled">禁用</el-radio>
 | 
				
			||||||
 | 
					            </el-radio-group>
 | 
				
			||||||
 | 
					          </el-space>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2">日期和时间点</p>
 | 
				
			||||||
 | 
					      <el-space wrap>
 | 
				
			||||||
 | 
					        <p class="text-[15px]">鼠标滚轮进行选择</p>
 | 
				
			||||||
 | 
					        <el-time-picker
 | 
				
			||||||
 | 
					          v-model="value"
 | 
				
			||||||
 | 
					          placeholder="请选择时间"
 | 
				
			||||||
 | 
					          class="!w-[140px]"
 | 
				
			||||||
 | 
					          :size="dynamicSize"
 | 
				
			||||||
 | 
					          :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					        <p class="text-[15px]">箭头进行选择</p>
 | 
				
			||||||
 | 
					        <el-time-picker
 | 
				
			||||||
 | 
					          v-model="value1"
 | 
				
			||||||
 | 
					          arrow-control
 | 
				
			||||||
 | 
					          placeholder="请选择时间"
 | 
				
			||||||
 | 
					          class="!w-[140px]"
 | 
				
			||||||
 | 
					          :size="dynamicSize"
 | 
				
			||||||
 | 
					          :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-space>
 | 
				
			||||||
 | 
					      <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2">限制时间选择范围</p>
 | 
				
			||||||
 | 
					      <el-time-picker
 | 
				
			||||||
 | 
					        v-model="value2"
 | 
				
			||||||
 | 
					        class="!w-[140px]"
 | 
				
			||||||
 | 
					        :disabled-hours="disabledHours"
 | 
				
			||||||
 | 
					        :disabled-minutes="disabledMinutes"
 | 
				
			||||||
 | 
					        :disabled-seconds="disabledSeconds"
 | 
				
			||||||
 | 
					        placeholder="Arbitrary time"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2">任意时间范围</p>
 | 
				
			||||||
 | 
					      <el-time-picker
 | 
				
			||||||
 | 
					        v-model="value3"
 | 
				
			||||||
 | 
					        class="!w-[220px]"
 | 
				
			||||||
 | 
					        is-range
 | 
				
			||||||
 | 
					        range-separator="至"
 | 
				
			||||||
 | 
					        start-placeholder="开始时间"
 | 
				
			||||||
 | 
					        end-placeholder="结束时间"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    </el-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <el-card shadow="never" class="mt-4">
 | 
				
			||||||
 | 
					      <template #header>
 | 
				
			||||||
 | 
					        <div class="card-header">
 | 
				
			||||||
 | 
					          <el-link
 | 
				
			||||||
 | 
					            v-tippy="{
 | 
				
			||||||
 | 
					              content: '点击查看详细文档'
 | 
				
			||||||
 | 
					            }"
 | 
				
			||||||
 | 
					            href="https://element-plus.org/zh-CN/component/time-select.html"
 | 
				
			||||||
 | 
					            target="_blank"
 | 
				
			||||||
 | 
					            style="font-size: 16px; font-weight: 800"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            时间选择
 | 
				
			||||||
 | 
					          </el-link>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2">固定时间点</p>
 | 
				
			||||||
 | 
					      <el-time-select
 | 
				
			||||||
 | 
					        v-model="value4"
 | 
				
			||||||
 | 
					        placeholder="请选择时间"
 | 
				
			||||||
 | 
					        class="!w-[140px]"
 | 
				
			||||||
 | 
					        start="08:30"
 | 
				
			||||||
 | 
					        step="00:15"
 | 
				
			||||||
 | 
					        end="18:30"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2 mt-4">时间格式</p>
 | 
				
			||||||
 | 
					      <el-time-select
 | 
				
			||||||
 | 
					        v-model="value5"
 | 
				
			||||||
 | 
					        placeholder="请选择时间"
 | 
				
			||||||
 | 
					        class="!w-[140px]"
 | 
				
			||||||
 | 
					        start="00:00"
 | 
				
			||||||
 | 
					        step="00:30"
 | 
				
			||||||
 | 
					        end="23:59"
 | 
				
			||||||
 | 
					        format="hh:mm A"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <p class="mb-2 mt-4">固定时间范围</p>
 | 
				
			||||||
 | 
					      <el-space wrap>
 | 
				
			||||||
 | 
					        <el-time-select
 | 
				
			||||||
 | 
					          v-model="startTime"
 | 
				
			||||||
 | 
					          placeholder="开始时间"
 | 
				
			||||||
 | 
					          class="!w-[140px]"
 | 
				
			||||||
 | 
					          :max-time="endTime"
 | 
				
			||||||
 | 
					          start="08:30"
 | 
				
			||||||
 | 
					          step="00:15"
 | 
				
			||||||
 | 
					          end="18:30"
 | 
				
			||||||
 | 
					          :size="dynamicSize"
 | 
				
			||||||
 | 
					          :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					        <el-time-select
 | 
				
			||||||
 | 
					          v-model="endTime"
 | 
				
			||||||
 | 
					          placeholder="结束时间"
 | 
				
			||||||
 | 
					          class="!w-[140px]"
 | 
				
			||||||
 | 
					          :min-time="startTime"
 | 
				
			||||||
 | 
					          start="08:30"
 | 
				
			||||||
 | 
					          step="00:15"
 | 
				
			||||||
 | 
					          end="18:30"
 | 
				
			||||||
 | 
					          :size="dynamicSize"
 | 
				
			||||||
 | 
					          :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </el-space>
 | 
				
			||||||
 | 
					    </el-card>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user