vue-manage-system 版本更新,让开发更加简单

vue-manage-system 近期进行了一次版本升级,主要是支持了更多功能、升级依赖版本和优化样式,并且上线了官方文档网站,大部分功能都有文档或者使用示例,更加适合新手上手开发,只需要根据实际业务简单修改,就可以完成产品需求。

视觉优化

比较长时间没对视觉做什么改动,多少会有点审美疲劳,所以这次也做了一些改动,至少我觉得比之前好看点了(请轻点喷,哭笑不得)

标签页

之前标签页的样式是自己实现,最多只能支持8个标签页,再多会覆盖之前的页面。现在直接用 el-tabs 组件实现,代码量更少,而且不限制标签数量,超出宽度可以滚动查看。

<el-tabs v-model="activePath" class="tabs" type="card" closable @tab-click="clickTabs" @tab-remove="closeTabs"><el-tab-pane v-for="item in tabs.list" :key="item.path" :label="item.title" :name="item.path" @click="setTags(item)"></el-tab-pane>
</el-tabs>
const activePath = ref(route.fullPath);
watch(() => route.fullPath, (newVal, oldVal) => {activePath.value = newVal;
})

activePath 用当前路由的路径来选中对应的标签页,当路由变化时,通过监听器 watch 来给 activePath 赋值新路由,以确保选中的标签一直是当前页面路由。

const tabs = useTabsStore();
const closeTabs = (name: string) => {const index = tabs.list.findIndex((item) => item.path === name);tabs.delTabsItem(index);const item = tabs.list[index] || tabs.list[index - 1];router.push(item?item.path:'/')
}

关闭标签时会触发 tab-remove 事件,把该标签从 tabs.list 列表中移除。先通过 findIndex 找到该标签的索引,传到 pinia 中的 delTabsItem 方法进行移除标签,移除后路由跳转到下一个标签或者上一个标签,如果标签已清空,则跳到首页。

设置主题

Element plus的默认主题色是#409EFF,CSS变量是--el-color-primary,要改变主题色时,给这个变量赋值即可。

document.documentElement.style.setProperty('--el-color-primary', '#ff0000');

同时要修改它的附属颜色,比如:hover、:active等用到的颜色变量

--el-color-primary-light-3: #79bbff;
--el-color-primary-light-5: #a0cfff;
--el-color-primary-light-7: #c6e2ff;
--el-color-primary-light-8: #d9ecff;
--el-color-primary-light-9: #ecf5ff;
--el-color-primary-dark-2: #337ecc;

修改附属颜色变量

const mix = (color1, color2, weight) => {let color = '#';for (let i = 0; i <= 2; i++) {const c1 = parseInt(color1.substring(1 + i * 2, 3 + i * 2), 16);const c2 = parseInt(color2.substring(1 + i * 2, 3 + i * 2), 16);const c = Math.round(c1 * weight + c2 * (1 - weight));color += c.toString(16).padStart(2, '0');}return color;
};
const setThemeLight (type) => {[3, 5, 7, 8, 9].forEach((v) => {setProperty(`--el-color-${type}-light-${v}`, mix('#ffffff', this[type], v / 10));});setProperty(`--el-color-${type}-dark-2`, mix('#000000', this[type], 0.2));
}

封装表格

表格是后台管理系统中最常见的功能了,会在多个页面中重复使用,所以这里对 element 表格组件做了二次封装,包括了查询、分页、查看详情、添加/编辑/删除等常用功能,在使用表格的时候代码量可以更少,比较方便维护。

  • /src/components/table-custom.vue: 表格组件
  • /src/components/table-edit.vue: 添加/编辑表单
  • /src/components/table-detail.vue: 查看详情组件
  • /src/components/table-search.vue: 查询组件

使用方式如下:

<template><div><!-- 查询组件 --><TableSearch :query="query" :options="searchOpt" :search="handleSearch" /><!-- 表格组件 --><TableCustom :columns="columns" :tableData="tableData" :total="page.total" :viewFunc="handleView" :delFunc="handleDelete" :editFunc="handleEdit" :refresh="getData" :currentPage="page.index" :changePage="changePage"><!-- 自定义内容 --><template #toolbarBtn><el-button type="warning" :icon="CirclePlusFilled" @click="visible = true">新增</el-button></template><template #money="{ rows }">¥{{ rows.money }}</template><template #thumb="{ rows }"><el-image class="table-td-thumb" :src="rows.thumb" :z-index="10" :preview-src-list="[rows.thumb]" preview-teleported></el-image></template><template #state="{ rows }"><el-tag :type="rows.state ? 'success' : 'danger'">{{ rows.state ? '正常' : '异常' }}</el-tag></template></TableCustom><!-- 新增/编辑 --><el-dialog :title="isEdit ? '编辑' : '新增'" v-model="visible" width="700px" destroy-on-close :close-on-click-modal="false" @close="closeDialog"><TableEdit :form-data="rowData" :options="options" :edit="isEdit" :update="updateData"><template #thumb="{ rows }"><img class="table-td-thumb" :src="rows.thumb" /></template></TableEdit></el-dialog><!-- 表格详情 --><el-dialog title="查看详情" v-model="visible1" width="700px" destroy-on-close><TableDetail :data="viewData"><template #thumb="{ rows }"><el-image :src="rows.thumb" /></template></TableDetail></el-dialog></div>
</template>

具体组件的传参可以参考文档:vuems-doc

词云图

echarts 没有词云图,需要引入第三方库 echarts-wordcloud

<template><v-chart class="schart" :option="wordOptions" />
</template>
<script setup>
import VChart from 'vue-echarts';
import 'echarts-wordcloud';
const wordOptions = {series: [{type: 'wordCloud',rotationRange: [0, 0],autoSize: { enable: true, minSize: 14,},textStyle: {fontFamily: '微软雅黑,sans-serif',color: () => ('rgb(' +[Math.round(Math.random() * 160),Math.round(Math.random() * 160),Math.round(Math.random() * 160),].join(',') +')')},data: [{name: 'Vue',value: 10000},{name: 'React',value: 9000},{name: '图表',value: 4000},{name: 'vue-manage-system',value: 2000},],},],
};
</script>

数字滚动

数字展示时带有滚动动画,能给视觉上带来一点冲击。Element Plus 的统计组件也可以实现这个效果,但是需要结合 vueuse 实现,比较麻烦。所以引入了第三方库 countup.js,封装成小组件,使用方便。

// countup.vue
<template><span ref="countRef"></span>
</template><script setup lang="ts">
import { onMounted, ref, watch } from 'vue';
import { CountUp } from 'countup.js';const props = defineProps({end: { type: Number, required: true, },options: { type: Object, default: () => ({}), required: false, },
});
const countRef = ref<any>(null);
let countUp: any;
onMounted(() => {countUp = new CountUp(countRef.value, props.end, props.options);if (countUp.error) return;countUp.start();
});watch(() => props.end, (newVal) => {countUp && countUp.update(newVal);
});
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/641118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟着Datawhale重学数据结构与算法(3)---排序算法

开源链接&#xff1a;【 教程地址 】【电子网站】 【写博客的目的是记录自己学习过程&#xff0c;方便自己复盘&#xff0c;专业课复习】 数组排序&#xff1a; #mermaid-svg-F3iLcKsVv8gcmqqC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16p…

Centos 5 的yum源

背景 有使用较老的Centos 5 系统内部安装软件无法正常报错&#xff0c;是由于系统叫老yum源存在问题 处理方法 更换下述yum源&#xff0c;可以将其他repo源文件备份移动到其他目录&#xff0c;添加下述源后重新测试 [C5.11-base] nameCentOS-5.11 baseurlhttp://vault.c…

A Neural Span-Based Continual Named Entity Recognition Model

《A Neural Span-Based Continual Named Entity Recognition Model》------------AAAI’23 论文链接&#xff1a;https://arxiv.org/abs/2302.12200 代码&#xff1a;https://github.com/Qznan/SpanKL 当前问题&#xff1a; 1.现有的NER模型在适应新的实体类型时往往表现不佳…

网站被SmartScreen标记为不安全怎么办?

在互联网时代&#xff0c;网站的安全性和可信度是用户选择是否继续访问的重要因素之一&#xff0c;然而&#xff0c;网站运营者偶尔会发现使用Edge浏览器访问网站时&#xff0c;会出现Microsoft Defender SmartScreen&#xff08;以下简称SmartScreen&#xff09;提示网站不安全…

element plus:tree强制更新

使用element plus的tree组件&#xff0c;做大屏设计器的图层列表&#xff0c;在左边的tree里和中间的编辑器里都可以右键上下移动图层&#xff0c;但是我遇到一个问题&#xff0c;往编辑器里增加组件&#xff0c;这种较大的变动&#xff0c;tree的渲染可以立马同步更新&#xf…

活动报名 | 如何进行全增量一体的异构数据库实时同步

伴随着新技术的不断涌现&#xff0c;市场竞争也在不断开辟新的角斗场——新的业务需求&#xff0c;新的应用设想都在这里迸发。 面对如此日新月异的竞争环境&#xff0c;企业的当务之急&#xff0c;是为新应用扎根准备好随时可取、准确一致的高质量数据土壤。在这样的背景下&a…

python基础语法--列表

一、列表的概念 列表&#xff08;List&#xff09;是一种有序、可变、允许重复元素的数据结构。列表用于存储一组相关的元素&#xff0c;并且可以根据需要动态地进行增加、删除、修改和访问。以下是列表的主要特点和操作&#xff1a; 有序性&#xff1a; 列表中的元素是按照它…

ROS 2边学边练(32)-- 初识tf2

前言 在上一篇文章当中我们已经用到了tf2&#xff0c;虽然有点懵&#xff0c;但所幸我们从这篇起将正式开始学习tf2&#xff0c;让它没有秘密可言。 动动手 我们依然是拿小海龟作为案例&#xff0c;简简单单走一遍流程&#xff0c;熟悉一下。 安装例子 安装例子及其依赖项。 …

如何使用 ArcGIS Pro 快速为黑白地图配色

对于某些拍摄时间比较久远的地图&#xff0c;限于当时的技术水平只有黑白的地图&#xff0c;针对这种情况&#xff0c;我们可以通过现在的地图为该地图进行配色&#xff0c;这里为大家讲解一下操作方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微…

Git | 分支管理

Git | 分支管理 文章目录 Git | 分支管理1、理解分支2、创建分支&&切换分支3、合并分支4、删除分支5、合并冲突6、分支管理策略合并分支模式实际工作中分支策略bug分支删除临时分支 1、理解分支 分支就类似分身。 在版本回退中&#xff0c;每次提交Git都会将修改以git…

【记录】Pandoc|Linux安装最新Pandoc

参考&#xff1a;官方文档&#xff0c;https://pandoc.org/installing.html 系统&#xff1a;Ubuntu 注意&#xff01;Pandoc 不能接受 PDF 作为输入&#xff01;&#xff01;&#xff01;如果是想下载 Pandoc 做 PDF 格式转换请放弃&#xff01;&#xff01; Linux 是 amd64 版…

使用PlantUML绘制活动图、泳道图

最近在学PlantUML 太漂亮了 给大家欣赏一下 我也记录一下 startuml |使用前| start :用户打开旅游App; |#LightSkyBlue|使用后| :用户浏览旅游信息; |#AntiqueWhite|登机前| :用户办理登机手续; :系统生成登机牌; |使用前| :用户到达机场; |登机前| :用户通过安检; |#Light…