mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	Merge remote-tracking branch 'origin/main' into gitee
This commit is contained in:
		
						commit
						c9bb37339d
					
				@ -56,6 +56,8 @@ menus:
 | 
				
			|||||||
  hscontextmenu: Context Menu
 | 
					  hscontextmenu: Context Menu
 | 
				
			||||||
  hstypeit: Typeit
 | 
					  hstypeit: Typeit
 | 
				
			||||||
  hsjsoneditor: JSON Editor
 | 
					  hsjsoneditor: JSON Editor
 | 
				
			||||||
 | 
					  hsColorPicker: Color Picker
 | 
				
			||||||
 | 
					  hsDatePicker: Date Picker
 | 
				
			||||||
  hsmenus: MultiLevel Menu
 | 
					  hsmenus: MultiLevel Menu
 | 
				
			||||||
  hsmenu1: Menu1
 | 
					  hsmenu1: Menu1
 | 
				
			||||||
  hsmenu1-1: Menu1-1
 | 
					  hsmenu1-1: Menu1-1
 | 
				
			||||||
 | 
				
			|||||||
@ -56,6 +56,8 @@ menus:
 | 
				
			|||||||
  hscontextmenu: 右键菜单
 | 
					  hscontextmenu: 右键菜单
 | 
				
			||||||
  hstypeit: 打字机
 | 
					  hstypeit: 打字机
 | 
				
			||||||
  hsjsoneditor: JSON编辑器
 | 
					  hsjsoneditor: JSON编辑器
 | 
				
			||||||
 | 
					  hsColorPicker: 颜色选择器
 | 
				
			||||||
 | 
					  hsDatePicker: 日期选择器
 | 
				
			||||||
  hsmenus: 多级菜单
 | 
					  hsmenus: 多级菜单
 | 
				
			||||||
  hsmenu1: 菜单1
 | 
					  hsmenu1: 菜单1
 | 
				
			||||||
  hsmenu1-1: 菜单1-1
 | 
					  hsmenu1-1: 菜单1-1
 | 
				
			||||||
 | 
				
			|||||||
@ -9,7 +9,12 @@ import { handleAliveRoute, getTopMenu } from "@/router/utils";
 | 
				
			|||||||
import { useSettingStoreHook } from "@/store/modules/settings";
 | 
					import { useSettingStoreHook } from "@/store/modules/settings";
 | 
				
			||||||
import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
					import { useMultiTagsStoreHook } from "@/store/modules/multiTags";
 | 
				
			||||||
import { ref, watch, unref, toRaw, nextTick, onBeforeUnmount } from "vue";
 | 
					import { ref, watch, unref, toRaw, nextTick, onBeforeUnmount } from "vue";
 | 
				
			||||||
import { isEqual, isAllEmpty, useResizeObserver } from "@pureadmin/utils";
 | 
					import {
 | 
				
			||||||
 | 
					  delay,
 | 
				
			||||||
 | 
					  isEqual,
 | 
				
			||||||
 | 
					  isAllEmpty,
 | 
				
			||||||
 | 
					  useResizeObserver
 | 
				
			||||||
 | 
					} from "@pureadmin/utils";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import ExitFullscreen from "@iconify-icons/ri/fullscreen-exit-fill";
 | 
					import ExitFullscreen from "@iconify-icons/ri/fullscreen-exit-fill";
 | 
				
			||||||
import Fullscreen from "@iconify-icons/ri/fullscreen-fill";
 | 
					import Fullscreen from "@iconify-icons/ri/fullscreen-fill";
 | 
				
			||||||
@ -504,6 +509,7 @@ onMounted(() => {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useResizeObserver(scrollbarDom, dynamicTagView);
 | 
					  useResizeObserver(scrollbarDom, dynamicTagView);
 | 
				
			||||||
 | 
					  delay().then(() => dynamicTagView());
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
onBeforeUnmount(() => {
 | 
					onBeforeUnmount(() => {
 | 
				
			||||||
 | 
				
			|||||||
@ -26,6 +26,14 @@ export default {
 | 
				
			|||||||
        title: $t("menus.hsmessage")
 | 
					        title: $t("menus.hsmessage")
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: "/components/date-picker",
 | 
				
			||||||
 | 
					      name: "DatePicker",
 | 
				
			||||||
 | 
					      component: () => import("@/views/components/date-picker.vue"),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        title: $t("menus.hsDatePicker")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/icon-select",
 | 
					      path: "/components/icon-select",
 | 
				
			||||||
      name: "IconSelect",
 | 
					      name: "IconSelect",
 | 
				
			||||||
@ -91,6 +99,14 @@ export default {
 | 
				
			|||||||
        title: $t("menus.hsCascader")
 | 
					        title: $t("menus.hsCascader")
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: "/components/color-picker",
 | 
				
			||||||
 | 
					      name: "ColorPicker",
 | 
				
			||||||
 | 
					      component: () => import("@/views/components/color-picker.vue"),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        title: $t("menus.hsColorPicker")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/selector",
 | 
					      path: "/components/selector",
 | 
				
			||||||
      name: "Selector",
 | 
					      name: "Selector",
 | 
				
			||||||
 | 
				
			|||||||
@ -91,16 +91,15 @@ watch(size, val =>
 | 
				
			|||||||
  <el-card shadow="never">
 | 
					  <el-card shadow="never">
 | 
				
			||||||
    <template #header>
 | 
					    <template #header>
 | 
				
			||||||
      <div class="card-header">
 | 
					      <div class="card-header">
 | 
				
			||||||
        <span class="font-medium">
 | 
					        <el-space wrap :size="40">
 | 
				
			||||||
          可选按钮
 | 
					          <span style="font-size: 16px; font-weight: 800"> 可选按钮 </span>
 | 
				
			||||||
          <br />
 | 
					 | 
				
			||||||
          <el-radio-group v-model="size" size="small">
 | 
					          <el-radio-group v-model="size" size="small">
 | 
				
			||||||
            <el-radio label="large">大尺寸</el-radio>
 | 
					            <el-radio label="large">大尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="default">默认尺寸</el-radio>
 | 
					            <el-radio label="default">默认尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="small">小尺寸</el-radio>
 | 
					            <el-radio label="small">小尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="disabled">禁用</el-radio>
 | 
					            <el-radio label="disabled">禁用</el-radio>
 | 
				
			||||||
          </el-radio-group>
 | 
					          </el-radio-group>
 | 
				
			||||||
        </span>
 | 
					        </el-space>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
    <p class="mb-2">单选(紧凑风格的按钮样式)</p>
 | 
					    <p class="mb-2">单选(紧凑风格的按钮样式)</p>
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										95
									
								
								src/views/components/color-picker.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										95
									
								
								src/views/components/color-picker.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,95 @@
 | 
				
			|||||||
 | 
					<script setup lang="ts">
 | 
				
			||||||
 | 
					import { ref, watch } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defineOptions({
 | 
				
			||||||
 | 
					  name: "ColorPicker"
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const size = ref("default");
 | 
				
			||||||
 | 
					const dynamicSize = ref();
 | 
				
			||||||
 | 
					const isOpen = ref(false);
 | 
				
			||||||
 | 
					const colorPickerRef = ref();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const color = ref("rgba(255, 69, 0, 0.68)");
 | 
				
			||||||
 | 
					const otherColor = ref("hsla(209, 100%, 56%, 0.73)");
 | 
				
			||||||
 | 
					const predefineColors = ref([
 | 
				
			||||||
 | 
					  "#ff4500",
 | 
				
			||||||
 | 
					  "#ff8c00",
 | 
				
			||||||
 | 
					  "#ffd700",
 | 
				
			||||||
 | 
					  "#90ee90",
 | 
				
			||||||
 | 
					  "#00ced1",
 | 
				
			||||||
 | 
					  "#1e90ff",
 | 
				
			||||||
 | 
					  "#c71585",
 | 
				
			||||||
 | 
					  "rgba(255, 69, 0, 0.68)",
 | 
				
			||||||
 | 
					  "rgb(255, 120, 0)",
 | 
				
			||||||
 | 
					  "hsv(51, 100, 98)",
 | 
				
			||||||
 | 
					  "hsva(120, 40, 94, 0.5)",
 | 
				
			||||||
 | 
					  "hsl(181, 100%, 37%)",
 | 
				
			||||||
 | 
					  "hsla(209, 100%, 56%, 0.73)",
 | 
				
			||||||
 | 
					  "#c7158577"
 | 
				
			||||||
 | 
					]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(size, val =>
 | 
				
			||||||
 | 
					  val === "disabled"
 | 
				
			||||||
 | 
					    ? (dynamicSize.value = "default")
 | 
				
			||||||
 | 
					    : (dynamicSize.value = size.value)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function onClick() {
 | 
				
			||||||
 | 
					  isOpen.value ? colorPickerRef.value.hide() : colorPickerRef.value.show();
 | 
				
			||||||
 | 
					  isOpen.value = !isOpen.value;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <el-card shadow="never">
 | 
				
			||||||
 | 
					    <template #header>
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <el-space wrap :size="40">
 | 
				
			||||||
 | 
					          <el-link
 | 
				
			||||||
 | 
					            href="https://element-plus.org/zh-CN/component/color-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-color-picker
 | 
				
			||||||
 | 
					      v-model="color"
 | 
				
			||||||
 | 
					      show-alpha
 | 
				
			||||||
 | 
					      :predefine="predefineColors"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					    <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2">外部触发器</p>
 | 
				
			||||||
 | 
					    <el-space wrap>
 | 
				
			||||||
 | 
					      <el-color-picker
 | 
				
			||||||
 | 
					        ref="colorPickerRef"
 | 
				
			||||||
 | 
					        v-model="otherColor"
 | 
				
			||||||
 | 
					        show-alpha
 | 
				
			||||||
 | 
					        :predefine="predefineColors"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <el-button
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        @click="onClick"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        {{ isOpen ? "关闭" : "打开" }}
 | 
				
			||||||
 | 
					      </el-button>
 | 
				
			||||||
 | 
					    </el-space>
 | 
				
			||||||
 | 
					  </el-card>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
							
								
								
									
										329
									
								
								src/views/components/date-picker.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										329
									
								
								src/views/components/date-picker.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,329 @@
 | 
				
			|||||||
 | 
					<script setup lang="ts">
 | 
				
			||||||
 | 
					import { ref, watch } from "vue";
 | 
				
			||||||
 | 
					import { useRenderIcon } from "@/components/ReIcon/src/hooks";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defineOptions({
 | 
				
			||||||
 | 
					  name: "DatePicker"
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const size = ref("default");
 | 
				
			||||||
 | 
					const dynamicSize = ref();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value = ref("");
 | 
				
			||||||
 | 
					const shortcuts = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "今天",
 | 
				
			||||||
 | 
					    value: new Date()
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "昨天",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const date = new Date();
 | 
				
			||||||
 | 
					      date.setTime(date.getTime() - 3600 * 1000 * 24);
 | 
				
			||||||
 | 
					      return date;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "一周前",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const date = new Date();
 | 
				
			||||||
 | 
					      date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
 | 
				
			||||||
 | 
					      return date;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const disabledDate = (time: Date) => {
 | 
				
			||||||
 | 
					  return time.getTime() > Date.now();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value1 = ref("");
 | 
				
			||||||
 | 
					const value2 = ref("");
 | 
				
			||||||
 | 
					const value3 = ref("");
 | 
				
			||||||
 | 
					const value4 = ref("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value5 = ref("");
 | 
				
			||||||
 | 
					const shortcuts1 = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "上周",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const end = new Date();
 | 
				
			||||||
 | 
					      const start = new Date();
 | 
				
			||||||
 | 
					      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
 | 
				
			||||||
 | 
					      return [start, end];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "上个月",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const end = new Date();
 | 
				
			||||||
 | 
					      const start = new Date();
 | 
				
			||||||
 | 
					      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
 | 
				
			||||||
 | 
					      return [start, end];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "三个月前",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const end = new Date();
 | 
				
			||||||
 | 
					      const start = new Date();
 | 
				
			||||||
 | 
					      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
 | 
				
			||||||
 | 
					      return [start, end];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value6 = ref("");
 | 
				
			||||||
 | 
					const shortcuts2 = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "本月",
 | 
				
			||||||
 | 
					    value: [new Date(), new Date()]
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "今年",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const end = new Date();
 | 
				
			||||||
 | 
					      const start = new Date(new Date().getFullYear(), 0);
 | 
				
			||||||
 | 
					      return [start, end];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    text: "六个月前",
 | 
				
			||||||
 | 
					    value: () => {
 | 
				
			||||||
 | 
					      const end = new Date();
 | 
				
			||||||
 | 
					      const start = new Date();
 | 
				
			||||||
 | 
					      start.setMonth(start.getMonth() - 6);
 | 
				
			||||||
 | 
					      return [start, end];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value7 = ref("");
 | 
				
			||||||
 | 
					const dateFormat = ref("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value8 = ref("");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const value9 = ref("2023-10-30");
 | 
				
			||||||
 | 
					const holidays = [
 | 
				
			||||||
 | 
					  "2023-10-22",
 | 
				
			||||||
 | 
					  "2023-10-23",
 | 
				
			||||||
 | 
					  "2023-10-24",
 | 
				
			||||||
 | 
					  "2023-10-25",
 | 
				
			||||||
 | 
					  "2023-10-26",
 | 
				
			||||||
 | 
					  "2023-10-27",
 | 
				
			||||||
 | 
					  "2023-10-28",
 | 
				
			||||||
 | 
					  "2023-10-29",
 | 
				
			||||||
 | 
					  "2023-10-30",
 | 
				
			||||||
 | 
					  "2023-10-31"
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const isHoliday = ({ dayjs }) => {
 | 
				
			||||||
 | 
					  return holidays.includes(dayjs.format("YYYY-MM-DD"));
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(size, val =>
 | 
				
			||||||
 | 
					  val === "disabled"
 | 
				
			||||||
 | 
					    ? (dynamicSize.value = "default")
 | 
				
			||||||
 | 
					    : (dynamicSize.value = size.value)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <el-card shadow="never">
 | 
				
			||||||
 | 
					    <template #header>
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <el-space wrap :size="40">
 | 
				
			||||||
 | 
					          <el-link
 | 
				
			||||||
 | 
					            href="https://element-plus.org/zh-CN/component/date-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-date-picker
 | 
				
			||||||
 | 
					      v-model="value"
 | 
				
			||||||
 | 
					      type="date"
 | 
				
			||||||
 | 
					      class="!w-[160px]"
 | 
				
			||||||
 | 
					      placeholder="请选择"
 | 
				
			||||||
 | 
					      :disabled-date="disabledDate"
 | 
				
			||||||
 | 
					      :shortcuts="shortcuts"
 | 
				
			||||||
 | 
					      :popper-options="{
 | 
				
			||||||
 | 
					        placement: 'bottom-start'
 | 
				
			||||||
 | 
					      }"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">选择周、月、年或多个日期</p>
 | 
				
			||||||
 | 
					    <el-space wrap>
 | 
				
			||||||
 | 
					      <el-date-picker
 | 
				
			||||||
 | 
					        v-model="value1"
 | 
				
			||||||
 | 
					        type="week"
 | 
				
			||||||
 | 
					        class="!w-[160px]"
 | 
				
			||||||
 | 
					        format="YYYY年第ww周"
 | 
				
			||||||
 | 
					        placeholder="选择某年中的某周"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <el-date-picker
 | 
				
			||||||
 | 
					        v-model="value2"
 | 
				
			||||||
 | 
					        type="month"
 | 
				
			||||||
 | 
					        class="!w-[160px]"
 | 
				
			||||||
 | 
					        placeholder="选择某月"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <el-date-picker
 | 
				
			||||||
 | 
					        v-model="value3"
 | 
				
			||||||
 | 
					        type="year"
 | 
				
			||||||
 | 
					        class="!w-[160px]"
 | 
				
			||||||
 | 
					        placeholder="选择某年"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <el-date-picker
 | 
				
			||||||
 | 
					        v-model="value4"
 | 
				
			||||||
 | 
					        type="dates"
 | 
				
			||||||
 | 
					        class="!w-[160px]"
 | 
				
			||||||
 | 
					        placeholder="选择多个日期"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					    </el-space>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">选择一段时间</p>
 | 
				
			||||||
 | 
					    <el-date-picker
 | 
				
			||||||
 | 
					      v-model="value5"
 | 
				
			||||||
 | 
					      type="daterange"
 | 
				
			||||||
 | 
					      class="!w-[240px]"
 | 
				
			||||||
 | 
					      unlink-panels
 | 
				
			||||||
 | 
					      range-separator="至"
 | 
				
			||||||
 | 
					      start-placeholder="开始时间"
 | 
				
			||||||
 | 
					      end-placeholder="结束时间"
 | 
				
			||||||
 | 
					      :shortcuts="shortcuts1"
 | 
				
			||||||
 | 
					      :popper-options="{
 | 
				
			||||||
 | 
					        placement: 'bottom-start' // 下拉面板出现的位置,或 'top-start'、'bottom-end'、'top-end' 等,具体看 https://popper.js.org/docs/v2/constructors/#options
 | 
				
			||||||
 | 
					      }"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">选择月份范围</p>
 | 
				
			||||||
 | 
					    <el-date-picker
 | 
				
			||||||
 | 
					      v-model="value6"
 | 
				
			||||||
 | 
					      type="monthrange"
 | 
				
			||||||
 | 
					      unlink-panels
 | 
				
			||||||
 | 
					      range-separator="至"
 | 
				
			||||||
 | 
					      start-placeholder="开始月份"
 | 
				
			||||||
 | 
					      end-placeholder="结束月份"
 | 
				
			||||||
 | 
					      :shortcuts="shortcuts2"
 | 
				
			||||||
 | 
					      :popper-options="{
 | 
				
			||||||
 | 
					        placement: 'bottom-start'
 | 
				
			||||||
 | 
					      }"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">日期格式</p>
 | 
				
			||||||
 | 
					    <el-radio-group
 | 
				
			||||||
 | 
					      v-model="dateFormat"
 | 
				
			||||||
 | 
					      class="mb-2"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      @change="value7 = ''"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <el-radio label="">Date</el-radio>
 | 
				
			||||||
 | 
					      <el-radio label="YYYY-MM-DD">年月日</el-radio>
 | 
				
			||||||
 | 
					      <el-radio label="x">时间戳</el-radio>
 | 
				
			||||||
 | 
					    </el-radio-group>
 | 
				
			||||||
 | 
					    <br />
 | 
				
			||||||
 | 
					    <el-space wrap>
 | 
				
			||||||
 | 
					      <el-date-picker
 | 
				
			||||||
 | 
					        v-model="value7"
 | 
				
			||||||
 | 
					        type="date"
 | 
				
			||||||
 | 
					        class="!w-[160px]"
 | 
				
			||||||
 | 
					        placeholder="请选择日期"
 | 
				
			||||||
 | 
					        format="YYYY/MM/DD"
 | 
				
			||||||
 | 
					        :value-format="dateFormat"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      />
 | 
				
			||||||
 | 
					      <span class="ml-2">{{ value7 }}</span>
 | 
				
			||||||
 | 
					    </el-space>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">自定义前缀</p>
 | 
				
			||||||
 | 
					    <el-date-picker
 | 
				
			||||||
 | 
					      v-model="value8"
 | 
				
			||||||
 | 
					      type="date"
 | 
				
			||||||
 | 
					      class="!w-[160px]"
 | 
				
			||||||
 | 
					      placeholder="请选择日期"
 | 
				
			||||||
 | 
					      :prefix-icon="useRenderIcon('twemoji:spiral-calendar')"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2 mt-4">自定义内容</p>
 | 
				
			||||||
 | 
					    <el-date-picker
 | 
				
			||||||
 | 
					      v-model="value9"
 | 
				
			||||||
 | 
					      type="date"
 | 
				
			||||||
 | 
					      placeholder="请选择日期"
 | 
				
			||||||
 | 
					      format="YYYY/MM/DD"
 | 
				
			||||||
 | 
					      value-format="YYYY-MM-DD"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <template #default="cell">
 | 
				
			||||||
 | 
					        <div class="cell" :class="{ current: cell.isCurrent }">
 | 
				
			||||||
 | 
					          <span class="text">{{ cell.text }}</span>
 | 
				
			||||||
 | 
					          <span v-if="isHoliday(cell)" class="holiday" />
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </template>
 | 
				
			||||||
 | 
					    </el-date-picker>
 | 
				
			||||||
 | 
					  </el-card>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped>
 | 
				
			||||||
 | 
					.cell {
 | 
				
			||||||
 | 
					  box-sizing: border-box;
 | 
				
			||||||
 | 
					  height: 30px;
 | 
				
			||||||
 | 
					  padding: 3px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.cell .text {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  left: 50%;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  width: 24px;
 | 
				
			||||||
 | 
					  height: 24px;
 | 
				
			||||||
 | 
					  margin: 0 auto;
 | 
				
			||||||
 | 
					  line-height: 24px;
 | 
				
			||||||
 | 
					  border-radius: 50%;
 | 
				
			||||||
 | 
					  transform: translateX(-50%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.cell.current .text {
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  background: #626aef;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.cell .holiday {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  bottom: 0;
 | 
				
			||||||
 | 
					  left: 50%;
 | 
				
			||||||
 | 
					  width: 6px;
 | 
				
			||||||
 | 
					  height: 6px;
 | 
				
			||||||
 | 
					  background: var(--el-color-danger);
 | 
				
			||||||
 | 
					  border-radius: 50%;
 | 
				
			||||||
 | 
					  transform: translateX(-50%);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
@ -56,22 +56,21 @@ watch(size, val =>
 | 
				
			|||||||
  <el-card shadow="never">
 | 
					  <el-card shadow="never">
 | 
				
			||||||
    <template #header>
 | 
					    <template #header>
 | 
				
			||||||
      <div class="card-header">
 | 
					      <div class="card-header">
 | 
				
			||||||
        <span class="font-medium">
 | 
					        <el-space wrap :size="40">
 | 
				
			||||||
          <el-link
 | 
					          <el-link
 | 
				
			||||||
            href="https://element-plus.org/zh-CN/component/button.html"
 | 
					            href="https://element-plus.org/zh-CN/component/button.html"
 | 
				
			||||||
            target="_blank"
 | 
					            target="_blank"
 | 
				
			||||||
            style="margin: 0 4px 5px; font-size: 16px"
 | 
					            style="font-size: 16px; font-weight: 800"
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
            Button 按钮
 | 
					            Button 按钮
 | 
				
			||||||
          </el-link>
 | 
					          </el-link>
 | 
				
			||||||
          <br />
 | 
					 | 
				
			||||||
          <el-radio-group v-model="size" size="small">
 | 
					          <el-radio-group v-model="size" size="small">
 | 
				
			||||||
            <el-radio label="large">大尺寸</el-radio>
 | 
					            <el-radio label="large">大尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="default">默认尺寸</el-radio>
 | 
					            <el-radio label="default">默认尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="small">小尺寸</el-radio>
 | 
					            <el-radio label="small">小尺寸</el-radio>
 | 
				
			||||||
            <el-radio label="disabled">禁用</el-radio>
 | 
					            <el-radio label="disabled">禁用</el-radio>
 | 
				
			||||||
          </el-radio-group>
 | 
					          </el-radio-group>
 | 
				
			||||||
        </span>
 | 
					        </el-space>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user