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
							
								
									1b7ecf953b
								
							
						
					
					
						commit
						3eaf520a37
					
				@ -44,7 +44,9 @@ menus:
 | 
				
			|||||||
  hsmap: Map
 | 
					  hsmap: Map
 | 
				
			||||||
  hsdraggable: Draggable
 | 
					  hsdraggable: Draggable
 | 
				
			||||||
  hssplitPane: Split Pane
 | 
					  hssplitPane: Split Pane
 | 
				
			||||||
  hsbutton: Button
 | 
					  hsElButton: Button
 | 
				
			||||||
 | 
					  hsbutton: Button Animation
 | 
				
			||||||
 | 
					  hsCheckButton: Check Button
 | 
				
			||||||
  hscropping: Picture Cropping
 | 
					  hscropping: Picture Cropping
 | 
				
			||||||
  hsanimatecss: AnimateCss Selector
 | 
					  hsanimatecss: AnimateCss Selector
 | 
				
			||||||
  hscountTo: Digital Animation
 | 
					  hscountTo: Digital Animation
 | 
				
			||||||
@ -102,7 +104,6 @@ menus:
 | 
				
			|||||||
  hsCascader: Area Cascader
 | 
					  hsCascader: Area Cascader
 | 
				
			||||||
  hsSwiper: Swiper Plugin
 | 
					  hsSwiper: Swiper Plugin
 | 
				
			||||||
  hsVirtualList: Virtual List
 | 
					  hsVirtualList: Virtual List
 | 
				
			||||||
  hsCheckButton: Check Button
 | 
					 | 
				
			||||||
  hsPdf: PDF Preview
 | 
					  hsPdf: PDF Preview
 | 
				
			||||||
  hsExcel: Export Excel
 | 
					  hsExcel: Export Excel
 | 
				
			||||||
  hsInfiniteScroll: Table Infinite Scroll
 | 
					  hsInfiniteScroll: Table Infinite Scroll
 | 
				
			||||||
 | 
				
			|||||||
@ -44,7 +44,9 @@ menus:
 | 
				
			|||||||
  hsmap: 地图
 | 
					  hsmap: 地图
 | 
				
			||||||
  hsdraggable: 拖拽
 | 
					  hsdraggable: 拖拽
 | 
				
			||||||
  hssplitPane: 切割面板
 | 
					  hssplitPane: 切割面板
 | 
				
			||||||
  hsbutton: 按钮
 | 
					  hsElButton: 按钮
 | 
				
			||||||
 | 
					  hsCheckButton: 可选按钮
 | 
				
			||||||
 | 
					  hsbutton: 按钮动效
 | 
				
			||||||
  hscropping: 图片裁剪
 | 
					  hscropping: 图片裁剪
 | 
				
			||||||
  hsanimatecss: animate.css选择器
 | 
					  hsanimatecss: animate.css选择器
 | 
				
			||||||
  hscountTo: 数字动画
 | 
					  hscountTo: 数字动画
 | 
				
			||||||
@ -102,7 +104,6 @@ menus:
 | 
				
			|||||||
  hsCascader: 区域级联选择器
 | 
					  hsCascader: 区域级联选择器
 | 
				
			||||||
  hsSwiper: Swiper插件
 | 
					  hsSwiper: Swiper插件
 | 
				
			||||||
  hsVirtualList: 虚拟列表
 | 
					  hsVirtualList: 虚拟列表
 | 
				
			||||||
  hsCheckButton: 可选按钮
 | 
					 | 
				
			||||||
  hsPdf: PDF预览
 | 
					  hsPdf: PDF预览
 | 
				
			||||||
  hsExcel: 导出Excel
 | 
					  hsExcel: 导出Excel
 | 
				
			||||||
  hsInfiniteScroll: 表格无限滚动
 | 
					  hsInfiniteScroll: 表格无限滚动
 | 
				
			||||||
 | 
				
			|||||||
@ -123,7 +123,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/able/videoFrame",
 | 
					      path: "/able/video-frame",
 | 
				
			||||||
      name: "VideoFrame",
 | 
					      name: "VideoFrame",
 | 
				
			||||||
      component: () => import("@/views/able/video-frame/index.vue"),
 | 
					      component: () => import("@/views/able/video-frame/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -139,7 +139,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/able/infiniteScroll",
 | 
					      path: "/able/infinite-scroll",
 | 
				
			||||||
      name: "InfiniteScroll",
 | 
					      name: "InfiniteScroll",
 | 
				
			||||||
      component: () => import("@/views/able/infinite-scroll.vue"),
 | 
					      component: () => import("@/views/able/infinite-scroll.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -147,7 +147,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/able/menuTree",
 | 
					      path: "/able/menu-tree",
 | 
				
			||||||
      name: "MenuTree",
 | 
					      name: "MenuTree",
 | 
				
			||||||
      component: () => import("@/views/able/menu-tree.vue"),
 | 
					      component: () => import("@/views/able/menu-tree.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -155,7 +155,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/able/lineTree",
 | 
					      path: "/able/line-tree",
 | 
				
			||||||
      name: "LineTree",
 | 
					      name: "LineTree",
 | 
				
			||||||
      component: () => import("@/views/able/line-tree.vue"),
 | 
					      component: () => import("@/views/able/line-tree.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/iconSelect",
 | 
					      path: "/components/icon-select",
 | 
				
			||||||
      name: "IconSelect",
 | 
					      name: "IconSelect",
 | 
				
			||||||
      component: () => import("@/views/components/icon-select.vue"),
 | 
					      component: () => import("@/views/components/icon-select.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -51,7 +51,23 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/checkButton",
 | 
					      path: "/components/segmented",
 | 
				
			||||||
 | 
					      name: "Segmented",
 | 
				
			||||||
 | 
					      component: () => import("@/views/components/segmented.vue"),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        title: $t("menus.hssegmented")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: "/components/el-button",
 | 
				
			||||||
 | 
					      name: "PureButton",
 | 
				
			||||||
 | 
					      component: () => import("@/views/components/el-button.vue"),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        title: $t("menus.hsElButton")
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: "/components/check-button",
 | 
				
			||||||
      name: "CheckButton",
 | 
					      name: "CheckButton",
 | 
				
			||||||
      component: () => import("@/views/components/check-button.vue"),
 | 
					      component: () => import("@/views/components/check-button.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -60,11 +76,11 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/segmented",
 | 
					      path: "/components/button",
 | 
				
			||||||
      name: "Segmented",
 | 
					      name: "ButtonPage",
 | 
				
			||||||
      component: () => import("@/views/components/segmented.vue"),
 | 
					      component: () => import("@/views/components/button.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: $t("menus.hssegmented")
 | 
					        title: $t("menus.hsbutton")
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -92,7 +108,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/splitPane",
 | 
					      path: "/components/split-pane",
 | 
				
			||||||
      name: "SplitPane",
 | 
					      name: "SplitPane",
 | 
				
			||||||
      component: () => import("@/views/components/split-pane.vue"),
 | 
					      component: () => import("@/views/components/split-pane.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -116,7 +132,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/countTo",
 | 
					      path: "/components/count-to",
 | 
				
			||||||
      name: "CountTo",
 | 
					      name: "CountTo",
 | 
				
			||||||
      component: () => import("@/views/components/count-to.vue"),
 | 
					      component: () => import("@/views/components/count-to.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -140,7 +156,7 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/seamlessScroll",
 | 
					      path: "/components/seamless-scroll",
 | 
				
			||||||
      name: "SeamlessScroll",
 | 
					      name: "SeamlessScroll",
 | 
				
			||||||
      component: () => import("@/views/components/seamless-scroll.vue"),
 | 
					      component: () => import("@/views/components/seamless-scroll.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
@ -148,20 +164,12 @@ export default {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/components/virtualList",
 | 
					      path: "/components/virtual-list",
 | 
				
			||||||
      name: "VirtualList",
 | 
					      name: "VirtualList",
 | 
				
			||||||
      component: () => import("@/views/components/virtual-list/index.vue"),
 | 
					      component: () => import("@/views/components/virtual-list/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: $t("menus.hsVirtualList")
 | 
					        title: $t("menus.hsVirtualList")
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      path: "/components/button",
 | 
					 | 
				
			||||||
      name: "ButtonPage",
 | 
					 | 
				
			||||||
      component: () => import("@/views/components/button.vue"),
 | 
					 | 
				
			||||||
      meta: {
 | 
					 | 
				
			||||||
        title: $t("menus.hsbutton")
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
} satisfies RouteConfigsTable;
 | 
					} satisfies RouteConfigsTable;
 | 
				
			||||||
 | 
				
			|||||||
@ -2,8 +2,8 @@ import { $t } from "@/plugins/i18n";
 | 
				
			|||||||
import { flowchart } from "@/router/enums";
 | 
					import { flowchart } from "@/router/enums";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  path: "/flowChart",
 | 
					  path: "/flow-chart",
 | 
				
			||||||
  redirect: "/flowChart/index",
 | 
					  redirect: "/flow-chart/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "setUp",
 | 
					    icon: "setUp",
 | 
				
			||||||
    title: $t("menus.hsflowChart"),
 | 
					    title: $t("menus.hsflowChart"),
 | 
				
			||||||
@ -11,7 +11,7 @@ export default {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  children: [
 | 
					  children: [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/flowChart/index",
 | 
					      path: "/flow-chart/index",
 | 
				
			||||||
      name: "FlowChart",
 | 
					      name: "FlowChart",
 | 
				
			||||||
      component: () => import("@/views/flow-chart/index.vue"),
 | 
					      component: () => import("@/views/flow-chart/index.vue"),
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@ import { formdesign } from "@/router/enums";
 | 
				
			|||||||
const IFrame = () => import("@/layout/frameView.vue");
 | 
					const IFrame = () => import("@/layout/frameView.vue");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  path: "/formDesign",
 | 
					  path: "/form-design",
 | 
				
			||||||
  redirect: "/formDesign/index",
 | 
					  redirect: "/form-design/index",
 | 
				
			||||||
  meta: {
 | 
					  meta: {
 | 
				
			||||||
    icon: "terminalWindowLine",
 | 
					    icon: "terminalWindowLine",
 | 
				
			||||||
    title: $t("menus.hsFormDesign"),
 | 
					    title: $t("menus.hsFormDesign"),
 | 
				
			||||||
@ -12,7 +12,7 @@ export default {
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  children: [
 | 
					  children: [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      path: "/formDesign/index",
 | 
					      path: "/form-design/index",
 | 
				
			||||||
      name: "FormDesign",
 | 
					      name: "FormDesign",
 | 
				
			||||||
      component: IFrame,
 | 
					      component: IFrame,
 | 
				
			||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ defineOptions({
 | 
				
			|||||||
const spaceSize = ref(20);
 | 
					const spaceSize = ref(20);
 | 
				
			||||||
const size = ref("default");
 | 
					const size = ref("default");
 | 
				
			||||||
const dynamicSize = ref();
 | 
					const dynamicSize = ref();
 | 
				
			||||||
 | 
					const checked = ref(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const radio = ref("wait");
 | 
					const radio = ref("wait");
 | 
				
			||||||
const radioBox = ref("complete");
 | 
					const radioBox = ref("complete");
 | 
				
			||||||
@ -74,6 +75,11 @@ function onGroupChecked(tag, index) {
 | 
				
			|||||||
  checkGroupTag.value[index].checked = curTagGroupMap.value[index].checked;
 | 
					  checkGroupTag.value[index].checked = curTagGroupMap.value[index].checked;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function onSingleChecked() {
 | 
				
			||||||
 | 
					  if (size.value === "disabled") return;
 | 
				
			||||||
 | 
					  checked.value = !checked.value;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
watch(size, val =>
 | 
					watch(size, val =>
 | 
				
			||||||
  val === "disabled"
 | 
					  val === "disabled"
 | 
				
			||||||
    ? (dynamicSize.value = "default")
 | 
					    ? (dynamicSize.value = "default")
 | 
				
			||||||
@ -89,10 +95,10 @@ watch(size, val =>
 | 
				
			|||||||
          可选按钮
 | 
					          可选按钮
 | 
				
			||||||
          <br />
 | 
					          <br />
 | 
				
			||||||
          <el-radio-group v-model="size" size="small">
 | 
					          <el-radio-group v-model="size" size="small">
 | 
				
			||||||
            <el-radio-button label="large">大尺寸</el-radio-button>
 | 
					            <el-radio label="large">大尺寸</el-radio>
 | 
				
			||||||
            <el-radio-button label="default">默认尺寸</el-radio-button>
 | 
					            <el-radio label="default">默认尺寸</el-radio>
 | 
				
			||||||
            <el-radio-button label="small">小尺寸</el-radio-button>
 | 
					            <el-radio label="small">小尺寸</el-radio>
 | 
				
			||||||
            <el-radio-button label="disabled">禁用</el-radio-button>
 | 
					            <el-radio label="disabled">禁用</el-radio>
 | 
				
			||||||
          </el-radio-group>
 | 
					          </el-radio-group>
 | 
				
			||||||
        </span>
 | 
					        </span>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
@ -253,6 +259,20 @@ watch(size, val =>
 | 
				
			|||||||
        {{ tag.title }}
 | 
					        {{ tag.title }}
 | 
				
			||||||
      </el-check-tag>
 | 
					      </el-check-tag>
 | 
				
			||||||
    </el-space>
 | 
					    </el-space>
 | 
				
			||||||
 | 
					    <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2">单个可选按钮</p>
 | 
				
			||||||
 | 
					    <el-check-tag
 | 
				
			||||||
 | 
					      :class="[
 | 
				
			||||||
 | 
					        'select-none',
 | 
				
			||||||
 | 
					        size === 'disabled' && 'tag-disabled',
 | 
				
			||||||
 | 
					        checked && 'is-active'
 | 
				
			||||||
 | 
					      ]"
 | 
				
			||||||
 | 
					      :checked="checked"
 | 
				
			||||||
 | 
					      @change="onSingleChecked"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      一个人也要努力 😊
 | 
				
			||||||
 | 
					    </el-check-tag>
 | 
				
			||||||
  </el-card>
 | 
					  </el-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										233
									
								
								src/views/components/el-button.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								src/views/components/el-button.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,233 @@
 | 
				
			|||||||
 | 
					<script setup lang="ts">
 | 
				
			||||||
 | 
					import { ref, watch } from "vue";
 | 
				
			||||||
 | 
					import { useDark } from "@pureadmin/utils";
 | 
				
			||||||
 | 
					import { useRenderIcon } from "@/components/ReIcon/src/hooks";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defineOptions({
 | 
				
			||||||
 | 
					  name: "PureButton"
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const { isDark } = useDark();
 | 
				
			||||||
 | 
					const size = ref("default");
 | 
				
			||||||
 | 
					const dynamicSize = ref();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const baseRadio = ref("default");
 | 
				
			||||||
 | 
					const buttonList = [
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "",
 | 
				
			||||||
 | 
					    text: "Default",
 | 
				
			||||||
 | 
					    icon: "ep:search"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "primary",
 | 
				
			||||||
 | 
					    text: "Primary",
 | 
				
			||||||
 | 
					    icon: "ep:edit"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "success",
 | 
				
			||||||
 | 
					    text: "Success",
 | 
				
			||||||
 | 
					    icon: "ep:check"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "info",
 | 
				
			||||||
 | 
					    text: "Info",
 | 
				
			||||||
 | 
					    icon: "ep:message"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "warning",
 | 
				
			||||||
 | 
					    text: "Warning",
 | 
				
			||||||
 | 
					    icon: "ep:star"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    type: "danger",
 | 
				
			||||||
 | 
					    text: "Danger",
 | 
				
			||||||
 | 
					    icon: "ep:delete"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					watch(size, val =>
 | 
				
			||||||
 | 
					  val === "disabled"
 | 
				
			||||||
 | 
					    ? (dynamicSize.value = "default")
 | 
				
			||||||
 | 
					    : (dynamicSize.value = size.value)
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <el-card shadow="never">
 | 
				
			||||||
 | 
					    <template #header>
 | 
				
			||||||
 | 
					      <div class="card-header">
 | 
				
			||||||
 | 
					        <span class="font-medium">
 | 
				
			||||||
 | 
					          <el-link
 | 
				
			||||||
 | 
					            href="https://element-plus.org/zh-CN/component/button.html"
 | 
				
			||||||
 | 
					            target="_blank"
 | 
				
			||||||
 | 
					            style="margin: 0 4px 5px; font-size: 16px"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            Button 按钮
 | 
				
			||||||
 | 
					          </el-link>
 | 
				
			||||||
 | 
					          <br />
 | 
				
			||||||
 | 
					          <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>
 | 
				
			||||||
 | 
					        </span>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-2">基础按钮</p>
 | 
				
			||||||
 | 
					    <el-radio-group v-model="baseRadio" class="mb-3">
 | 
				
			||||||
 | 
					      <el-radio label="default" />
 | 
				
			||||||
 | 
					      <el-radio label="plain" />
 | 
				
			||||||
 | 
					      <el-radio label="round" />
 | 
				
			||||||
 | 
					      <el-radio label="circle" />
 | 
				
			||||||
 | 
					      <el-radio label="link" />
 | 
				
			||||||
 | 
					      <el-radio label="text" />
 | 
				
			||||||
 | 
					      <el-radio label="text-bg" />
 | 
				
			||||||
 | 
					    </el-radio-group>
 | 
				
			||||||
 | 
					    <br />
 | 
				
			||||||
 | 
					    <el-space wrap>
 | 
				
			||||||
 | 
					      <el-button
 | 
				
			||||||
 | 
					        v-for="(button, index) in buttonList"
 | 
				
			||||||
 | 
					        :key="index"
 | 
				
			||||||
 | 
					        :type="button.type"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        :plain="baseRadio === 'plain'"
 | 
				
			||||||
 | 
					        :round="baseRadio === 'round'"
 | 
				
			||||||
 | 
					        :circle="baseRadio === 'circle'"
 | 
				
			||||||
 | 
					        :link="baseRadio === 'link'"
 | 
				
			||||||
 | 
					        :text="baseRadio === 'text' || baseRadio === 'text-bg'"
 | 
				
			||||||
 | 
					        :bg="baseRadio === 'text-bg'"
 | 
				
			||||||
 | 
					        :icon="useRenderIcon(button.icon)"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <template v-if="baseRadio !== 'circle'" #default>
 | 
				
			||||||
 | 
					          <p>{{ button.text }}</p>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </el-button>
 | 
				
			||||||
 | 
					    </el-space>
 | 
				
			||||||
 | 
					    <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-4">加载状态按钮</p>
 | 
				
			||||||
 | 
					    <el-button
 | 
				
			||||||
 | 
					      text
 | 
				
			||||||
 | 
					      bg
 | 
				
			||||||
 | 
					      type="primary"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      :loading="size !== 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      {{ size === "disabled" ? "停止加载" : "加载中" }}
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-button
 | 
				
			||||||
 | 
					      type="primary"
 | 
				
			||||||
 | 
					      plain
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      :loading-icon="useRenderIcon('ep:eleme')"
 | 
				
			||||||
 | 
					      :loading="size !== 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      {{ size === "disabled" ? "停止加载" : "加载中" }}
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-button
 | 
				
			||||||
 | 
					      type="primary"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					      :loading="size !== 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <template #loading>
 | 
				
			||||||
 | 
					        <div class="custom-loading">
 | 
				
			||||||
 | 
					          <svg class="circular" viewBox="-10, -10, 50, 50">
 | 
				
			||||||
 | 
					            <path
 | 
				
			||||||
 | 
					              class="path"
 | 
				
			||||||
 | 
					              d="
 | 
				
			||||||
 | 
					            M 30 15
 | 
				
			||||||
 | 
					            L 28 17
 | 
				
			||||||
 | 
					            M 25.61 25.61
 | 
				
			||||||
 | 
					            A 15 15, 0, 0, 1, 15 30
 | 
				
			||||||
 | 
					            A 15 15, 0, 1, 1, 27.99 7.5
 | 
				
			||||||
 | 
					            L 15 15
 | 
				
			||||||
 | 
					          "
 | 
				
			||||||
 | 
					              style="fill: rgb(0 0 0 / 0%); stroke-width: 4px"
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
 | 
					          </svg>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </template>
 | 
				
			||||||
 | 
					      {{ size === "disabled" ? "停止加载" : "加载中" }}
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-4">自定义元素标签。例如:按钮、div、链接</p>
 | 
				
			||||||
 | 
					    <el-button :size="dynamicSize" :disabled="size === 'disabled'">
 | 
				
			||||||
 | 
					      button 标签
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-button
 | 
				
			||||||
 | 
					      tag="div"
 | 
				
			||||||
 | 
					      role="button"
 | 
				
			||||||
 | 
					      tabindex="0"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      div 标签
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-button
 | 
				
			||||||
 | 
					      type="primary"
 | 
				
			||||||
 | 
					      tag="a"
 | 
				
			||||||
 | 
					      :href="
 | 
				
			||||||
 | 
					        size === 'disabled'
 | 
				
			||||||
 | 
					          ? 'javascript:void(0);'
 | 
				
			||||||
 | 
					          : 'https://element-plus.org/zh-CN/component/button.html#tag'
 | 
				
			||||||
 | 
					      "
 | 
				
			||||||
 | 
					      :target="size === 'disabled' ? '_self' : '_blank'"
 | 
				
			||||||
 | 
					      rel="noopener noreferrer"
 | 
				
			||||||
 | 
					      :size="dynamicSize"
 | 
				
			||||||
 | 
					      :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      a 链接
 | 
				
			||||||
 | 
					    </el-button>
 | 
				
			||||||
 | 
					    <el-divider />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <p class="mb-4">自定义颜色</p>
 | 
				
			||||||
 | 
					    <el-space wrap>
 | 
				
			||||||
 | 
					      <el-button
 | 
				
			||||||
 | 
					        color="#626aef"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        :dark="isDark"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Default
 | 
				
			||||||
 | 
					      </el-button>
 | 
				
			||||||
 | 
					      <el-button
 | 
				
			||||||
 | 
					        color="#626aef"
 | 
				
			||||||
 | 
					        :size="dynamicSize"
 | 
				
			||||||
 | 
					        :disabled="size === 'disabled'"
 | 
				
			||||||
 | 
					        :dark="isDark"
 | 
				
			||||||
 | 
					        plain
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        Plain
 | 
				
			||||||
 | 
					      </el-button>
 | 
				
			||||||
 | 
					    </el-space>
 | 
				
			||||||
 | 
					  </el-card>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
 | 
					:deep(.el-divider--horizontal) {
 | 
				
			||||||
 | 
					  margin: 17px 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.el-button .custom-loading .circular {
 | 
				
			||||||
 | 
					  width: 18px;
 | 
				
			||||||
 | 
					  height: 18px;
 | 
				
			||||||
 | 
					  margin-right: 6px;
 | 
				
			||||||
 | 
					  animation: loading-rotate 2s linear infinite;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.el-button .custom-loading .circular .path {
 | 
				
			||||||
 | 
					  stroke: var(--el-button-text-color);
 | 
				
			||||||
 | 
					  stroke-dasharray: 90, 150;
 | 
				
			||||||
 | 
					  stroke-dashoffset: 0;
 | 
				
			||||||
 | 
					  stroke-linecap: round;
 | 
				
			||||||
 | 
					  stroke-width: 2;
 | 
				
			||||||
 | 
					  animation: loading-dash 1.5s ease-in-out infinite;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user