mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-22 13:05:18 +00:00
- 添加日语、中文、泰语等多语言支持文件 - 更新静态资源文件包括图片和样式表 - 重构菜单权限树组件,修复父子节点联动问题 - 优化在线用户管理功能,使用会话ID替代用户名 - 更新数据库配置,默认使用MySQL - 重构文档系统,将mkdocs迁移至backend目录 - 修复Redis哈希操作接口 - 更新前端工具函数,优化列表转树形结构逻辑 - 调整端口配置和环境变量 - 添加开发运维文档和部署脚本 本次提交主要实现了多语言支持、资源文件更新和多个功能优化,同时改进了系统文档结构和部署配置。
1003 lines
30 KiB
Python
1003 lines
30 KiB
Python
|
||
<!doctype html>
|
||
<html lang="zh" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
<meta name="description" content="这里是网站描述">
|
||
|
||
|
||
<meta name="author" content="948080782x@qq.com">
|
||
|
||
|
||
<link rel="canonical" href="http://127.0.0.1:8888/index.html">
|
||
|
||
|
||
|
||
|
||
<link rel="icon" href="assets/images/favicon.png">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.7">
|
||
|
||
|
||
|
||
<title>Fastapi_Vue3_Admin在线文档</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="assets/stylesheets/main.8608ea7d.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#github-1014taotao" class="md-skip">
|
||
跳转至
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="页眉">
|
||
<a href="index.html" title="Fastapi_Vue3_Admin在线文档" class="md-header__button md-logo" aria-label="Fastapi_Vue3_Admin在线文档" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Fastapi_Vue3_Admin在线文档
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
帮助文档
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="查找">
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
正在初始化搜索引擎
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://gitee.com/tao__tao/fastapi_vue3_admin.git" title="前往仓库" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
fastapi_vue_admin
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
<nav class="md-tabs" aria-label="标签" data-md-component="tabs">
|
||
<div class="md-grid">
|
||
<ul class="md-tabs__list">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item md-tabs__item--active">
|
||
<a href="index.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
帮助文档
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="导航栏" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href="index.html" title="Fastapi_Vue3_Admin在线文档" class="md-nav__button md-logo" aria-label="Fastapi_Vue3_Admin在线文档" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
|
||
|
||
</a>
|
||
Fastapi_Vue3_Admin在线文档
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://gitee.com/tao__tao/fastapi_vue3_admin.git" title="前往仓库" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
fastapi_vue_admin
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
帮助文档
|
||
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="index.html" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
帮助文档
|
||
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="目录">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
目录
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_1" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
📘 项目介绍
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_2" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
✨ 核心亮点
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_3" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
🛠️ 技术栈概览
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_4" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
📌 内置模块
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_5" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
🍪 演示环境
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_6" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
👷 安装和使用
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="👷 安装和使用">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_7" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
版本说明
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_8" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
获取代码
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_9" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
本地后端启动
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_10" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
本地前端启动
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_11" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
本地小程序启动
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_12" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
本地访问地址
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker 部署
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_13" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
🔧 模块展示
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_14" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
🙏 特别鸣谢
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_15" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
🎨 社区
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#star" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
❤️ Star 支持我
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#_16" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
👀 访问统计
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
|
||
<p align="center">
|
||
<img src="https://capsule-render.vercel.app/api?type=waving&color=timeGradient&height=256&§ion=header&text=Fastapi%20Vue3%20Admin&fontSize=90&fontAlign=50&fontAlignY=28&desc=一套现代、开源、全栈融合的中后台快速开发平台,给个⭐️支持一下%F0%9F%98%81&descAlign=50&descSize=0&descAlignY=56&animation=twinkling" />
|
||
</p>
|
||
<p align="center">
|
||
<img src="https://media.giphy.com/media/WUlplcMpOCEmTGBtBW/giphy.gif" width="200"/>
|
||
</p>
|
||
<p align="center">
|
||
<img width="700" src="https://readme-typing-svg.demolab.com?font=LXGW+WenKai+TC&size=25&pause=1000¢er=true&vCenter=true&random=false&width=600&lines=欢迎来到我的GitHub主页!"/>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://gitee.com/tao__tao/fastapi_vue3_admin.git" target="_blank">
|
||
<img src="https://gitee.com/tao__tao/fastapi_vue3_admin/badge/star.svg?theme=dark" alt="Gitee Stars">
|
||
</a>
|
||
<a href="https://github.com/1014TaoTao/fastapi_vue3_admin.git" target="_blank">
|
||
<img src="https://img.shields.io/github/stars/1014TaoTao/fastapi_vue3_admin?style=social" alt="GitHub Stars">
|
||
</a>
|
||
<a href="https://gitee.com/tao__tao/fastapi_vue3_admin/blob/master/LICENSE" target="_blank">
|
||
<img src="https://img.shields.io/badge/License-MIT-orange" alt="License">
|
||
</a>
|
||
<img src="https://img.shields.io/badge/Python-≥3.10-blue">
|
||
<img src="https://img.shields.io/badge/NodeJS-≥20.0-blue">
|
||
<img src="https://img.shields.io/badge/MySQL-≥8.0-blue">
|
||
<img src="https://img.shields.io/badge/Redis-≥7.0-blue">
|
||
<img src="https://img.shields.io/badge/-HTML5-E34F26?style=flat-square&logo=html5&logoColor=white"/>
|
||
<img src="https://img.shields.io/badge/-CSS3-1572B6?style=flat-square&logo=css3"/>
|
||
<img src="https://img.shields.io/badge/-JavaScript-563D7C?style=flat-square&logo=bootstrap"/>
|
||
</p>
|
||
|
||
<h1 id="github-1014taotao">📊 GitHub 数据统计(作者:@1014TaoTao)</h1>
|
||
<table align="center">
|
||
<tr>
|
||
<td>
|
||
<img height="200px" width="auto" src="https://github-readme-stats.vercel.app/api?username=1014TaoTao&show_icons=true&theme=dracula">
|
||
</td>
|
||
<td>
|
||
<img height="200px" width="auto" src="https://github-readme-stats.vercel.app/api/top-langs/?username=1014TaoTao&layout=compact&theme=dracula">
|
||
</td>
|
||
<td>
|
||
<img height="200px" width="auto" src="https://github-readme-streak-stats.herokuapp.com/?user=1014TaoTao&theme=dracula">
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<p align="center">
|
||
<img src="https://github-readme-activity-graph.vercel.app/graph?username=1014TaoTao&theme=dracula&hide_border=true&area=true&custom_title=Activity%20Graph" alt="Activity Graph" title="Activity Graph" />
|
||
</p>
|
||
|
||
<hr />
|
||
<h2 id="_1">📘 项目介绍</h2>
|
||
<p><strong>Fastapi-Vue3-Admin</strong> 是一套 <strong>完全开源、高度模块化、技术先进的现代化快速开发平台</strong>,旨在帮助开发者高效搭建高质量的企业级中后台系统。该项目采用 <strong>前后端分离架构</strong>,融合 Python 后端框架 <code>FastAPI</code> 和前端主流框架 <code>Vue3</code>,结合 <code>UniApp</code> 实现多端统一开发,提供了一站式开箱即用的开发体验。</p>
|
||
<blockquote>
|
||
<p><strong>设计初心</strong>: 以模块化、松耦合为核心,追求丰富的功能模块、简洁易用的接口、详尽的开发文档和便捷的维护方式。通过统一框架和组件,降低技术选型成本,遵循开发规范和设计模式,构建强大的代码分层模型,搭配完善的本地中文化支持,专为团队和企业开发场景量身定制。</p>
|
||
</blockquote>
|
||
<pre><code class="language-sh">fastapi_vue3_admin
|
||
├─ backend # 后端工程
|
||
├─ frontend # 前端工程
|
||
├─ devops # 部署工程
|
||
├─ mkdocs # 文档工程
|
||
├─ uni-app # 移动端工程
|
||
├─ docker-compose.yaml # 部署文件
|
||
├─ start.sh # 一键部署脚本
|
||
├─ LICENSE # 许可协议
|
||
|─ README.en.md # 英文文档
|
||
└─ README.md # 中文文档
|
||
</code></pre>
|
||
<hr />
|
||
<h2 id="_2">✨ 核心亮点</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>特性</th>
|
||
<th>描述</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>🔭 快速开发</td>
|
||
<td>一套完全开源的现代化快速开发平台,旨在帮助开发者高效搭建高质量的中后台系统。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>🌐 全栈整合</td>
|
||
<td>前后端分离,融合 Python (FastAPI) + Vue3 + UniApp 多端开发</td>
|
||
</tr>
|
||
<tr>
|
||
<td>🧱 模块化设计</td>
|
||
<td>系统功能高度解耦,便于扩展和维护</td>
|
||
</tr>
|
||
<tr>
|
||
<td>⚡️ 高性能异步</td>
|
||
<td>使用 FastAPI 异步框架 + Redis 缓存优化接口响应速度</td>
|
||
</tr>
|
||
<tr>
|
||
<td>🔒 安全认证</td>
|
||
<td>支持 JWT OAuth2 认证机制,保障系统安全</td>
|
||
</tr>
|
||
<tr>
|
||
<td>📊 权限管理</td>
|
||
<td>RBAC 模型实现菜单、按钮、数据级别的细粒度权限控制</td>
|
||
</tr>
|
||
<tr>
|
||
<td>🚀 快速部署</td>
|
||
<td>支持 Docker/Docker Compose/Nginx 一键部署</td>
|
||
</tr>
|
||
<tr>
|
||
<td>📄 开发友好</td>
|
||
<td>提供完善的中文文档 + 中文化界面 + 可视化工具链,降低学习成本</td>
|
||
</tr>
|
||
<tr>
|
||
<td>📫 跨平台支持</td>
|
||
<td>通过 UniApp 支持多端开发,包括 H5、小程序等。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>🚀 快速接入</td>
|
||
<td>基于 Vue3、Vite5、Pinia、UniApp、Ant Design Vue、uView-plus 等主流前端技术栈,开箱即用。</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr />
|
||
<h2 id="_3">🛠️ 技术栈概览</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>类型</th>
|
||
<th>技术选型</th>
|
||
<th>描述</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>后端框架</td>
|
||
<td>FastAPI / Uvicorn / Pydantic 2.0 / Alembic</td>
|
||
<td>现代、高性能的异步框架,强制类型约束,数据迁移。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>ORM</td>
|
||
<td>SQLAlchemy 2.0</td>
|
||
<td>强大的 ORM 库。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>定时任务</td>
|
||
<td>APScheduler</td>
|
||
<td>轻松实现定时任务。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>权限认证</td>
|
||
<td>PyJWT</td>
|
||
<td>实现 JWT 认证。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>前端框架</td>
|
||
<td>Vue3 / Vite5 / Pinia / TypeScript</td>
|
||
<td>快速开发 Vue3 应用。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>UI 库</td>
|
||
<td>Ant Design Vue / uView-plus</td>
|
||
<td>快速开发美观的 UI 组件。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>移动端</td>
|
||
<td>UniApp</td>
|
||
<td>快速开发移动端应用。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>数据库</td>
|
||
<td>MySQL / MongoDB</td>
|
||
<td>强大的数据库。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>缓存</td>
|
||
<td>Redis</td>
|
||
<td>强大的缓存数据库。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>文档</td>
|
||
<td>Swagger / Redoc</td>
|
||
<td>自动生成 API 文档。</td>
|
||
</tr>
|
||
<tr>
|
||
<td>部署</td>
|
||
<td>Docker / Nginx / Docker Compose</td>
|
||
<td>快速部署项目。</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr />
|
||
<h2 id="_4">📌 内置模块</h2>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>模块名</th>
|
||
<th>子模块名</th>
|
||
<th>描述</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>仪表盘</td>
|
||
<td>工作台 、分析页</td>
|
||
<td>常用功能入口</td>
|
||
</tr>
|
||
<tr>
|
||
<td>系统管理</td>
|
||
<td>包含菜单、部门、岗位、角色、用户、日志、配置、公告、字典、任务等子模块</td>
|
||
<td>系统主功能</td>
|
||
</tr>
|
||
<tr>
|
||
<td>监控管理</td>
|
||
<td>在线用户、服务器监控、缓存监控</td>
|
||
<td>系统监控管理功能</td>
|
||
</tr>
|
||
<tr>
|
||
<td>公共管理</td>
|
||
<td>接口管理、文档管理</td>
|
||
<td>项目接口文档</td>
|
||
</tr>
|
||
<tr>
|
||
<td>App 端</td>
|
||
<td>首页、工作台、个人中心</td>
|
||
<td>移动端应用管理</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr />
|
||
<h2 id="_5">🍪 演示环境</h2>
|
||
<ul>
|
||
<li>演示地址:<a href="http://8.137.99.5">http://8.137.99.5</a></li>
|
||
<li>管理员账号:<code>admin</code> 密码:<code>123456</code></li>
|
||
<li>演示账号:<code>demo</code> 密码:<code>123456</code></li>
|
||
</ul>
|
||
<hr />
|
||
<h2 id="_6">👷 安装和使用</h2>
|
||
<h3 id="_7">版本说明</h3>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>类型</th>
|
||
<th>技术栈</th>
|
||
<th>版本</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>后端</td>
|
||
<td>Python</td>
|
||
<td>3.10(大于3.10的版本, 会有兼容问题, 将来升级,暂时不考虑升级)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>后端</td>
|
||
<td>FastAPI</td>
|
||
<td>0.109</td>
|
||
</tr>
|
||
<tr>
|
||
<td>前端</td>
|
||
<td>Node.js</td>
|
||
<td>>= 20.0(推荐使用最新版)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>前端</td>
|
||
<td>npm</td>
|
||
<td>16.14</td>
|
||
</tr>
|
||
<tr>
|
||
<td>前端</td>
|
||
<td>Vue3</td>
|
||
<td>3.3</td>
|
||
</tr>
|
||
<tr>
|
||
<td>数据库</td>
|
||
<td>MySQL</td>
|
||
<td>8.0 (推荐使用最新版)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>中间件</td>
|
||
<td>Redis</td>
|
||
<td>7.0 (推荐使用最新版)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>小程序</td>
|
||
<td>uni-app</td>
|
||
<td>3.0.0</td>
|
||
</tr>
|
||
<tr>
|
||
<td>小程序</td>
|
||
<td>uview-plus</td>
|
||
<td>^3.3.74</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<hr />
|
||
<h3 id="_8">获取代码</h3>
|
||
<pre><code class="language-sh"># 克隆代码到本地
|
||
git clone https://gitee.com/tao__tao/fastapi_vue3_admin.git
|
||
或
|
||
git clone https://github.com/1014TaoTao/fastapi_vue3_admin.git
|
||
</code></pre>
|
||
<h3 id="_9">本地后端启动</h3>
|
||
<pre><code class="language-sh"># 进入后端工程目录
|
||
cd backend
|
||
# 安装依赖
|
||
pip3 install -r requirements.txt
|
||
# 启动后端服务
|
||
python3 main.py run
|
||
或
|
||
python3 main.py run--env=dev
|
||
# 生成迁移文件
|
||
python3 main.py revision "初始化迁移" --env=dev(不加默认为dev)
|
||
# 应用迁移
|
||
python3 main.py upgrade --env=dev(不加默认为dev)
|
||
</code></pre>
|
||
<hr />
|
||
<h3 id="_10">本地前端启动</h3>
|
||
<pre><code class="language-sh"># 进入前端工程目录
|
||
cd frontend
|
||
# 安装依赖
|
||
npm install
|
||
# 启动前端服务
|
||
npm run dev
|
||
# 构建前端, 生成 `frontend/dist` 目录
|
||
npm run build
|
||
</code></pre>
|
||
<hr />
|
||
<h3 id="_11">本地小程序启动</h3>
|
||
<pre><code class="language-sh"># 进入移动工程目录
|
||
cd uni-app
|
||
# 安装依赖
|
||
npm install
|
||
# 启动小程序
|
||
npm run dev:h5
|
||
# 构建, 生成 `uni-app/dist` 目录
|
||
npm run build
|
||
</code></pre>
|
||
<hr />
|
||
<h3 id="_12">本地访问地址</h3>
|
||
<ul>
|
||
<li>前端地址: <a href="http://127.0.0.1:5180">http://127.0.0.1:5180</a></li>
|
||
<li>小程序地址: <a href="http://127.0.0.1:5181">http://127.0.0.1:5181</a></li>
|
||
<li>接口地址: <a href="http://127.0.0.1:8080/api/v1/docs">http://127.0.0.1:8080/api/v1/docs</a></li>
|
||
<li>管理员账号:<code>admin</code> 密码:<code>123456</code></li>
|
||
<li>演示账号:<code>demo</code> 密码:<code>123456</code></li>
|
||
</ul>
|
||
<hr />
|
||
<h3 id="docker">docker 部署</h3>
|
||
<pre><code class="language-sh"># 复制脚本 `fastapi_vue3_amdin/start.sh` 脚本文件到服务器, 并赋予执行权限
|
||
chmod +x start.sh
|
||
# 执行脚本
|
||
./start.sh
|
||
# 访问地址
|
||
# 前端访问: `http://公网地址:80`,
|
||
# 接口访问: `http://公网地址:8001/api/v1/docs`,
|
||
# 登录 `admin/123456` 或 `demo/123456`
|
||
# 查看镜像:
|
||
docsker images -a
|
||
# 查看容器:
|
||
docsker compose ps
|
||
# 查看日志
|
||
docker logs -f <容器名>
|
||
# 服务停止
|
||
docsker compose down
|
||
# 删除镜像
|
||
docker rmi <镜像名>
|
||
# 删除容器
|
||
docker rm <容器名>
|
||
</code></pre>
|
||
<ul>
|
||
<li><strong>部署问题排查</strong>:</li>
|
||
<li>后端配置文件 <code>fastapi_vue3_amdin/backend/env/.env.prod.py</code></li>
|
||
<li>前端配置文件 <code>fastapi_vue3_amdin/frontend/vite.config.ts</code> 和 <code>fastapi_vue3_amdin/frontend/.env.production</code></li>
|
||
<li>部署文件 <code>fastapi_vue3_amdin/docker-compose.yaml</code> 和 <code>fastapi_vue3_amdin/devops/devops/nginx/nginx.conf</code></li>
|
||
</ul>
|
||
<hr />
|
||
<h2 id="_13">🔧 模块展示</h2>
|
||
<table>
|
||
<tr>
|
||
<td><img src="./resources/login.png"/>登陆</td>
|
||
<td><img src="./resources/dashboard.png"/>仪表盘</td>
|
||
<td><img src="./resources/menu.png"/>菜单管理</td>
|
||
<td><img src="./resources/dept.png"/>部门管理</td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="./resources/position.png"/>岗位管理</td>
|
||
<td><img src="./resources/role.png"/>角色管理</td>
|
||
<td><img src="./resources/user.png"/>用户管理</td>
|
||
<td><img src="./resources/log.png"/>日志管理</td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="./resources/config.png"/>配置管理</td>
|
||
<td><img src="./resources/online.png"/>在线用户管理</td>
|
||
<td><img src="./resources/service.png"/>服务器监控</td>
|
||
<td><img src="./resources/cache.png"/>缓存监控</td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="./resources/job.png"/>任务管理</td>
|
||
<td><img src="./resources/docs.png"/>接口管理</td>
|
||
<td><img src="./resources/redoc.png"/>文档管理</td>
|
||
<td><img src="./resources/info.png"/>个人信息</td>
|
||
</tr>
|
||
</tr>
|
||
<td><img src="./resources/help.png"/>在线文档</td>
|
||
<td><img src="./resources/dict.png"/>字典管理</td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="./resources/app-login.png"/>app登陆</td>
|
||
<td><img src="./resources/app-home.png"/>app首页</td>
|
||
<td><img src="./resources/app-work.png"/>app工作台</td>
|
||
<td><img src="./resources/app-me.png"/>app个人中心</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<hr />
|
||
<h2 id="_14">🙏 特别鸣谢</h2>
|
||
<p>感谢以下项目的贡献和支持,使本项目得以顺利完成:</p>
|
||
<ul>
|
||
<li><a href="https://fastapi.tiangolo.com/">FastAPI 项目</a></li>
|
||
<li><a href="https://v3.cn.vuejs.org/">Vue3 项目</a></li>
|
||
<li><a href="https://gitee.com/ktianc/kinit">KInit 项目</a></li>
|
||
<li><a href="https://gitee.com/senqi666/fastapi-vue-admin">Fastapi-Vue3-Admin 项目</a></li>
|
||
<li><a href="https://gitee.com/mizhexiaoxiao/vue-fastapi-admin">Vue-FastAPI-Admin 项目</a></li>
|
||
<li><a href="https://gitee.com/insistence2022/RuoYi-Vue3-FastAPI">RuoYi-Vue3-FastAPI 项目</a></li>
|
||
<li><a href="https://github.com/agronholm/apscheduler">APScheduler 项目</a></li>
|
||
<li><a href="https://github.com/vitejs/vite">Vite 项目</a></li>
|
||
<li><a href="https://github.com/dcloudio/uni-app">UniApp 项目</a></li>
|
||
<li><a href="https://uiadmin.net/uview-plus">uView-plus 项目</a></li>
|
||
</ul>
|
||
<hr />
|
||
<h2 id="_15">🎨 社区</h2>
|
||
<table>
|
||
<tr>
|
||
<td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/docs/resources/wechat.jpg"/></td>
|
||
<td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/docs/resources/group.jpg"/></td>
|
||
<td><img src="https://gitee.com/tao__tao/fastapi_vue3_admin/raw/master/backend/docs/resources/wechatPay.jpg"/></td>
|
||
</tr>
|
||
</table>
|
||
<hr />
|
||
<h2 id="star">❤️ Star 支持我</h2>
|
||
<p>如果你喜欢这个项目,请给我一个 ⭐️ Star 支持一下吧!非常感谢!</p>
|
||
<hr />
|
||
<h2 id="_16">👀 访问统计</h2>
|
||
<p><img alt="Visitor Count" src="https://profile-counter.glitch.me/1014TaoTao/count.svg" /></p>
|
||
<hr />
|
||
<p align="center">
|
||
<img src="https://capsule-render.vercel.app/api?type=waving&color=timeGradient&height=260&§ion=footer&text=感谢&fontSize=90&fontAlign=50&fontAlignY=78&desc=给个%20star ⭐️ %20不过分吧&descAlign=50&descSize=30&descAlignY=46&animation=twinkling" />
|
||
</p>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
</main>
|
||
|
||
<footer class="md-footer">
|
||
|
||
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
<div class="md-copyright__highlight">
|
||
Copyright © 2022 <a href="http://127.0.0.1:8888">Powered by xxxxx@qq.com 版权所有</a>
|
||
</div>
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": ".", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.instant", "search.highlight", "search.suggest", "navigation.footer", "toc.integrate"], "search": "assets/javascripts/workers/search.f8cc74c7.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
|
||
|
||
|
||
<script src="assets/javascripts/bundle.c8b220af.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |