release:公开仓库
46
README.md
@ -1,24 +1,29 @@
|
||||
# Mini RBAC
|
||||
仅保留核心权限控制的极简后台管理系统。
|
||||
## 进度
|
||||
## 权限控制
|
||||
`Python(FastAPI)`、`VUE3`实现,仅保留核心权限控制的极简后台管理。
|
||||
![index](./imgs/index.png)
|
||||
## 功能
|
||||
### 权限控制
|
||||
- [x] 前端菜单权限控制
|
||||
- [x] 前端路由权限控制
|
||||
- [x] 前端按钮权限控制
|
||||
- [x] 后端接口权限控制
|
||||
### 业务功能
|
||||
- [x] 登录、退出、切换角色
|
||||
- [x] 用户管理 -> 新增、编辑、删除、查询
|
||||
- [x] 角色管理 -> 新增、编辑、删除、查询
|
||||
- [x] 菜单管理 -> 新增、编辑、删除、查询
|
||||
|
||||
## 功能导向
|
||||
- [x] 登录、退出
|
||||
- [ ] 用户管理
|
||||
- [ ] 角色管理
|
||||
- [ ] 菜单管理
|
||||
# 技术实现
|
||||
|
||||
# 使用框架&工具
|
||||
## 前端 `node 16.15 LTS`
|
||||
```json
|
||||
{
|
||||
"@kangc/v-md-editor": "^2.3.15",
|
||||
"ant-design-vue": "^3.2.12",
|
||||
"axios": "^0.27.2",
|
||||
"echarts": "^5.3.3",
|
||||
"moment": "^2.29.4",
|
||||
"normalize.css": "^8.0.1",
|
||||
"pinia": "^2.0.21",
|
||||
"pinia-plugin-persistedstate": "^2.2.0",
|
||||
"vue": "^3.2.38",
|
||||
@ -31,8 +36,27 @@
|
||||
bcrypt==4.0.0
|
||||
fastapi==0.82.0
|
||||
passlib==1.7.4
|
||||
pytest==7.1.3
|
||||
python-jose==3.3.0
|
||||
tomli==2.0.1
|
||||
tortoise-orm==0.19.2
|
||||
requests==2.28.1
|
||||
uvicorn==0.18.3
|
||||
tortoise-orm==0.19.2
|
||||
websockets==10.3
|
||||
```
|
||||
|
||||
|
||||
|
||||
<details>
|
||||
<summary>更多图片</summary>
|
||||
|
||||
### 页面
|
||||
![login](./imgs/login.png)
|
||||
![change](./imgs//select.png)
|
||||
![user](./imgs/useradd.png)
|
||||
![role](./imgs/menuadd.png)
|
||||
![menu](./imgs/roleadd.png)
|
||||
### 接口
|
||||
![user-api](./imgs/user-api.png)
|
||||
![role-menu](./imgs/role-menu-api.png)
|
||||
|
||||
</details>
|
@ -1,2 +1,2 @@
|
||||
VITE_BASE_URL = /api
|
||||
VITE_WEBSOCKET = /socket
|
||||
VITE_WS = ws://localhost:8000/ws
|
||||
|
@ -5,7 +5,7 @@ import EachartView from '@/components/echart/eachart-view.vue'
|
||||
import MarkdownView from '@/components/markdown/preview-view.vue'
|
||||
|
||||
/** websocket */
|
||||
let ws = new WebSocket('ws://localhost:8000/ws')
|
||||
let ws = new WebSocket(import.meta.env.VITE_WS)
|
||||
|
||||
// 响应式数据
|
||||
const data = reactive({
|
||||
|
@ -25,10 +25,6 @@ export default defineConfig({
|
||||
target: 'http://localhost:8000',
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(/^\/api/, '')
|
||||
},
|
||||
'/socket': {
|
||||
target: 'ws://localhost:8000/ws',
|
||||
ws: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
BIN
imgs/index.png
Normal file
After Width: | Height: | Size: 144 KiB |
BIN
imgs/login.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
imgs/menuadd.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
imgs/role-menu-api.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
imgs/roleadd.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
imgs/select.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
imgs/user-api.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
imgs/useradd.png
Normal file
After Width: | Height: | Size: 57 KiB |