Skip to content

vue3+element-plus+ TypeScript开发后台管理系统,集合了表格、地图、卡片列表等常用功能。

License

Notifications You must be signed in to change notification settings

peewee92/vue3-element-admin-template

Repository files navigation

中文 | English

项目简介

vue3-element-admin-template 是基于 Vue3 + Vite5+ TypeScript5 + Element-Plus + Pinia 等主流技术栈构建的免费开源的后台管理前端模板。

项目特色

  • 简洁易用:基于 vue-element-admin 升级的 Vue3 版本,无过渡封装 ,易上手。

  • 数据交互:同时支持本地 Mock 和线上接口

  • 权限管理:用户、角色、菜单、字典、部门等完善的权限系统功能。

  • 基础设施:动态路由、按钮权限、国际化、代码规范、Git 提交规范、常用组件封装。

  • 持续更新:项目持续开源更新,实时更新工具和依赖。

项目预览

明亮模式

暗黑模式

接口文档

项目地址

环境准备

环境 名称版本 下载地址
开发工具 VSCode 下载
运行环境 Node ≥18 (其中 20.6.0 版本不可用, 推荐统一18.18.0保证一致) 下载

项目启动

# 克隆代码
git clone http://59.172.94.146:96/businessplatform/frontendtemplate.git

# 切换目录
cd frontendtemplate

# 安装 pnpm
npm install pnpm -g

# 安装依赖
pnpm install

# 启动运行
pnpm run dev

项目部署

# 项目打包
pnpm run build

# 上传文件至远程服务器
将打包生成在 `dist` 目录下的文件拷贝至 `/usr/share/nginx/html` 目录

# nginx.cofig 配置
server {
 listen     80;
 server_name  localhost;
 location / {
   root /usr/share/nginx/html;
   index index.html index.htm;
 }
 # 反向代理配置
 location /prod-api/ {
            # vapi.youlai.tech 替换后端API地址,注意保留后面的斜杠 /
            proxy_pass http://vapi.youlai.tech/; 
 }
}

本地Mock

项目同时支持在线和本地 Mock 接口,默认使用线上接口,如需替换为 Mock 接口,修改文件 .env.developmentVITE_MOCK_DEV_SERVERtrue 即可

后端接口

如果您具备Java开发基础,按照以下步骤将在线接口转为本地后端接口

  1. 修改 .env.development 文件中的 VITE_APP_API_URL 的值,将其从 http://vapi.youlai.tech 更改为 后端服务器地址

注意事项

  • 自动导入插件自动生成默认关闭

    模板项目的组件类型声明已自动生成。如果添加和使用新的组件,请按照图示方法开启自动生成。在自动生成完成后,记得将其设置为 false,避免重复执行引发冲突。

  • 项目启动浏览器访问空白

    请升级浏览器尝试,低版本浏览器内核可能不支持某些新的 JavaScript 语法,比如可选链操作符 ?.

  • 项目同步仓库更新升级

    项目同步仓库更新升级之后,建议 pnpm install 安装更新依赖之后启动 。

  • 项目组件、函数和引用爆红

重启 VSCode 尝试

  • 其他问题

    如果有其他问题或者建议,建议 ISSUE

项目文档

提交规范

执行 pnpm run commit 唤起 git commit 交互,根据提示完成信息的输入和选择。

菜单修改

  1. 菜单路由获取 src\store\modules\permission.ts中getRoutes接口获取

  2. 菜单中嵌入外部iframe (这种实现方式的好处是菜单、面包屑样式统一)

// 前端路由配置
{
      "path": "internal-doc",
      "component": "demo/internal-doc",
      "name": "InternalDoc",
      "meta": {
          "title": "平台文档(内嵌)",
          "icon": "document",
          "hidden": false,
          "alwaysShow": false,
          "params": null
      }
}
// 组件配置
<template>
  <div class="app-container">
    <iframe
      src="https://juejin.cn/post/7228990409909108793"
      frameborder="0"
    ></iframe>
  </div>
</template>
<style lang="scss" scoped>
/** 关闭tag标签  */
.app-container {
  /* 50px = navbar = 50px */
  height: calc(100vh - 50px);
}

/** 开启tag标签  */
.hasTagsView {
  .app-container {
    /* 84px = navbar + tags-view = 50px + 34px */
    height: calc(100vh - 84px);
  }
}

iframe {
  width: 100%;
  height: 100%;
}
</style>

组件封装

增删改查(table)
卡片列表
多表单验证
动态复杂表单
富文本编辑器
文件上传、图片上传
字典组件
Echarts图表
GIS地图

本项目GIS地图使用的openlayers,详细代码在components\DeviceMap\index.vue中

权限管理

按钮权限
// 编辑按钮, pageName页面名称,如'sys:user'(系统管理,用户页)
v-hasPerm="[`${contentConfig.pageName}:edit`]"
// 具体实现: src\directive\permission\index.js
用户按钮权限配置、管理
// src\store\modules\user.js 中的perms => UserAPI.getInfo返回
perms: ['add', 'edit', 'delete']

问题记录

  1. 修改文件 .env.developmentVITE_MOCK_DEV_SERVERtrue仍然走的dev-api接口而不是本地mock 解决:升级 vite-plugin-mock-dev-server 版本至 1.7.1

About

vue3+element-plus+ TypeScript开发后台管理系统,集合了表格、地图、卡片列表等常用功能。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published