<template> <div class="container"> <el-tag :color="randomColor()" class="container-tag"> <SvgIcon :name="props.icon" :size="25" color="#ffffff" /> </el-tag> <span class="container-span">{{ $t(props.label) }}</span> </div> </template> <script setup name="shortcut"> const props = defineProps({ icon: { type: String, default: () => 'menu-outlined', required: false, }, label: { type: String, default: () => '快捷方式', required: false, }, color: { type: String, default: () => '', required: false, }, }); // 颜色列表 const colorList = ['#7265E6', '#FFBF00', '#00A2AE', '#F56A00', '#1890FF', '#606D80']; // 获取随机颜色 const randomColor = () => { if (props.color) { return props.color; } return colorList[randomNum(0, colorList.length - 1)]; }; // 获取minNum到maxNum内的随机数 const randomNum = (minNum, maxNum) => { switch (arguments.length) { case 1: return parseInt(Math.random() * minNum + 1, 10); // eslint-disable-next-line no-unreachable break; case 2: return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); // eslint-disable-next-line no-unreachable break; default: return 0; // eslint-disable-next-line no-unreachable break; } }; </script> <style scoped> .container { height: 60px; /*border:1px solid var(--border-color-split);*/ border-radius: 5px; display: flex; align-items: center; cursor: pointer; /*实现渐变(时间变化效果)*/ -webkit-transition: all 0.5s; -moz-transition: all 0.5s; -ms-transition: all 0.5s; -o-transition: all 0.5s; transition: all 0.5s; } .container:hover { background: var(--border-color-split); } .container-tag { width: 42px; height: 42px; border-radius: 10px; display: flex; align-items: center; margin-left: 10px; font-size: 24px; } .container-span { max-width: 60%; font-weight: 500; margin-left: 10px; color: #6d6b6b; } </style>