@ -0,0 +1,11 @@ |
|||||
|
# 页面标题 |
||||
|
VITE_APP_TITLE = 若依管理系统 |
||||
|
|
||||
|
# 开发环境配置 |
||||
|
VITE_APP_ENV = 'development' |
||||
|
|
||||
|
# 若依管理系统/开发环境 |
||||
|
VITE_APP_BASE_API = '/dev-api' |
||||
|
|
||||
|
# WebSocket地址 |
||||
|
VITE_DEV_SERVER_URL = 'ws://127.0.0.1:8080' |
@ -0,0 +1,14 @@ |
|||||
|
# 页面标题 |
||||
|
VITE_APP_TITLE = 若依管理系统 |
||||
|
|
||||
|
# 生产环境配置 |
||||
|
VITE_APP_ENV = 'production' |
||||
|
|
||||
|
# 若依管理系统/生产环境 |
||||
|
VITE_APP_BASE_API = '/prod-api' |
||||
|
|
||||
|
# 是否在打包时开启压缩,支持 gzip 和 brotli |
||||
|
VITE_BUILD_COMPRESS = gzip |
||||
|
|
||||
|
# WebSocket地址 |
||||
|
VUE_APP_WS_API = 'http://172.28.112.2' |
@ -0,0 +1,12 @@ |
|||||
|
# 页面标题 |
||||
|
VITE_APP_TITLE = 若依管理系统 |
||||
|
|
||||
|
# 生产环境配置 |
||||
|
VITE_APP_ENV = 'staging' |
||||
|
|
||||
|
# 若依管理系统/生产环境 |
||||
|
VITE_APP_BASE_API = '/stage-api' |
||||
|
|
||||
|
# 是否在打包时开启压缩,支持 gzip 和 brotli |
||||
|
VITE_BUILD_COMPRESS = gzip |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
.DS_Store |
||||
|
node_modules/ |
||||
|
dist/ |
||||
|
npm-debug.log* |
||||
|
yarn-debug.log* |
||||
|
yarn-error.log* |
||||
|
**/*.log |
||||
|
|
||||
|
tests/**/coverage/ |
||||
|
tests/e2e/reports |
||||
|
selenium-debug.log |
||||
|
|
||||
|
# Editor directories and files |
||||
|
.idea |
||||
|
.vscode |
||||
|
*.suo |
||||
|
*.ntvs* |
||||
|
*.njsproj |
||||
|
*.sln |
||||
|
*.local |
||||
|
|
||||
|
package-lock.json |
||||
|
yarn.lock |
@ -0,0 +1,5 @@ |
|||||
|
strict-ssl=false |
||||
|
registry=https://registry.npmmirror.com/ |
||||
|
electron_mirror=https://registry.npmmirror.com/-/binary/electron/ |
||||
|
electron_builder_binaries_mirror=https://registry.npmmirror.com/-/binary/electron-builder-binaries/ |
||||
|
# ELECTRON_BUILDER_BINARIES_MIRROR=https://mirrors.huaweicloud.com/electron-builder-binaries/ |
@ -0,0 +1,20 @@ |
|||||
|
The MIT License (MIT) |
||||
|
|
||||
|
Copyright (c) 2018 RuoYi |
||||
|
|
||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
|
this software and associated documentation files (the "Software"), to deal in |
||||
|
the Software without restriction, including without limitation the rights to |
||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
||||
|
the Software, and to permit persons to whom the Software is furnished to do so, |
||||
|
subject to the following conditions: |
||||
|
|
||||
|
The above copyright notice and this permission notice shall be included in all |
||||
|
copies or substantial portions of the Software. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -0,0 +1,109 @@ |
|||||
|
<p align="center"> |
||||
|
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png"> |
||||
|
</p> |
||||
|
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.8</h1> |
||||
|
<h4 align="center">基于SpringBoot+Vue3前后端分离的Java快速开发框架</h4> |
||||
|
<p align="center"> |
||||
|
<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a> |
||||
|
<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.8-brightgreen.svg"></a> |
||||
|
<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a> |
||||
|
</p> |
||||
|
|
||||
|
## 平台简介 |
||||
|
|
||||
|
* 本仓库为前端技术栈 [Vue3](https://v3.cn.vuejs.org) + [Element Plus](https://element-plus.org/zh-CN) + [Vite](https://cn.vitejs.dev) 版本。 |
||||
|
* 配套后端代码仓库地址[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 或 [RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast) 版本。 |
||||
|
* 前端技术栈([Vue2](https://cn.vuejs.org) + [Element](https://github.com/ElemeFE/element) + [Vue CLI](https://cli.vuejs.org/zh)),请移步[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue/tree/master/ruoyi-ui)。 |
||||
|
* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip) |
||||
|
* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) |
||||
|
|
||||
|
## 前端运行 |
||||
|
|
||||
|
```bash |
||||
|
# 克隆项目 |
||||
|
git clone https://github.com/yangzongzhuan/RuoYi-Vue3.git |
||||
|
|
||||
|
# 进入项目目录 |
||||
|
cd RuoYi-Vue3 |
||||
|
|
||||
|
# 安装依赖 |
||||
|
yarn --registry=https://registry.npmmirror.com |
||||
|
|
||||
|
# 启动服务 |
||||
|
yarn dev |
||||
|
|
||||
|
# 构建测试环境 yarn build:stage |
||||
|
# 构建生产环境 yarn build:prod |
||||
|
# 前端访问地址 http://localhost:80 |
||||
|
``` |
||||
|
|
||||
|
## 内置功能 |
||||
|
|
||||
|
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 |
||||
|
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 |
||||
|
3. 岗位管理:配置系统用户所属担任职务。 |
||||
|
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 |
||||
|
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 |
||||
|
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 |
||||
|
7. 参数管理:对系统动态配置常用参数。 |
||||
|
8. 通知公告:系统通知公告信息发布维护。 |
||||
|
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 |
||||
|
10. 登录日志:系统登录日志记录查询包含登录异常。 |
||||
|
11. 在线用户:当前系统中活跃用户状态监控。 |
||||
|
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 |
||||
|
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 |
||||
|
14. 系统接口:根据业务代码自动生成相关的api接口文档。 |
||||
|
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 |
||||
|
16. 缓存监控:对系统的缓存信息查询,命令统计等。 |
||||
|
17. 在线构建器:拖动表单元素生成相应的HTML代码。 |
||||
|
18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 |
||||
|
|
||||
|
## 在线体验 |
||||
|
|
||||
|
- admin/admin123 |
||||
|
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 |
||||
|
|
||||
|
演示地址:http://vue.ruoyi.vip |
||||
|
文档地址:http://doc.ruoyi.vip |
||||
|
|
||||
|
## 演示图 |
||||
|
|
||||
|
<table> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-936ec82d1f4872e1bc980927654b6007307.png"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td> |
||||
|
</tr> |
||||
|
<tr> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/b6115bc8c31de52951982e509930b20684a.jpg"/></td> |
||||
|
<td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td> |
||||
|
</tr> |
||||
|
</table> |
||||
|
|
||||
|
|
||||
|
## 若依前后端分离交流群 |
||||
|
|
||||
|
QQ群: [](https://jq.qq.com/?_wv=1027&k=5bVB1og) [](https://jq.qq.com/?_wv=1027&k=5eiA4DH) [](https://jq.qq.com/?_wv=1027&k=5AxMKlC) [](https://jq.qq.com/?_wv=1027&k=51G72yr) [](https://jq.qq.com/?_wv=1027&k=VvjN2nvu) [](https://jq.qq.com/?_wv=1027&k=5vYAqA05) [](https://jq.qq.com/?_wv=1027&k=kOIINEb5) [](https://jq.qq.com/?_wv=1027&k=UKtX5jhs) [](https://jq.qq.com/?_wv=1027&k=EI9an8lJ) [](https://jq.qq.com/?_wv=1027&k=SWCtLnMz) [](https://jq.qq.com/?_wv=1027&k=96Dkdq0k) [](https://jq.qq.com/?_wv=1027&k=0fsNiYZt) [](https://jq.qq.com/?_wv=1027&k=7xw4xUG1) [](https://jq.qq.com/?_wv=1027&k=eCx8eyoJ) [](https://jq.qq.com/?_wv=1027&k=SpyH2875) [](https://jq.qq.com/?_wv=1027&k=tKEt51dz) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=0vBbSb0ztbBgVtn3kJS-Q4HUNYwip89G&authKey=8irq5PhutrZmWIvsUsklBxhj57l%2F1nOZqjzigkXZVoZE451GG4JHPOqW7AW6cf0T&noverify=0&group_code=143961921) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ZFAPAbp09S2ltvwrJzp7wGlbopsc0rwi&authKey=HB2cxpxP2yspk%2Bo3WKTBfktRCccVkU26cgi5B16u0KcAYrVu7sBaE7XSEqmMdFQp&noverify=0&group_code=174951577) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Fn2aF5IHpwsy8j6VlalNJK6qbwFLFHat&authKey=uyIT%2B97x2AXj3odyXpsSpVaPMC%2Bidw0LxG5MAtEqlrcBcWJUA%2FeS43rsF1Tg7IRJ&noverify=0&group_code=161281055) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=XIzkm_mV2xTsUtFxo63bmicYoDBA6Ifm&authKey=dDW%2F4qsmw3x9govoZY9w%2FoWAoC4wbHqGal%2BbqLzoS6VBarU8EBptIgPKN%2FviyC8j&noverify=0&group_code=138988063) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DkugnCg68PevlycJSKSwjhFqfIgrWWwR&authKey=pR1Pa5lPIeGF%2FFtIk6d%2FGB5qFi0EdvyErtpQXULzo03zbhopBHLWcuqdpwY241R%2F&noverify=0&group_code=151450850) 点击按钮入群。 |
@ -0,0 +1,12 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo [信息] 打包Web工程,生成dist文件。 |
||||
|
echo. |
||||
|
|
||||
|
%~d0 |
||||
|
cd %~dp0 |
||||
|
|
||||
|
cd .. |
||||
|
yarn build:prod |
||||
|
|
||||
|
pause |
@ -0,0 +1,12 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo [信息] 安装Web工程,生成node_modules文件。 |
||||
|
echo. |
||||
|
|
||||
|
%~d0 |
||||
|
cd %~dp0 |
||||
|
|
||||
|
cd .. |
||||
|
yarn --registry=https://registry.npmmirror.com |
||||
|
|
||||
|
pause |
@ -0,0 +1,12 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo [信息] 使用 Vite 命令运行 Web 工程。 |
||||
|
echo. |
||||
|
|
||||
|
%~d0 |
||||
|
cd %~dp0 |
||||
|
|
||||
|
cd .. |
||||
|
yarn dev |
||||
|
|
||||
|
pause |
@ -0,0 +1,40 @@ |
|||||
|
"use strict"; |
||||
|
const { app, BrowserWindow, screen } = require("electron"); |
||||
|
const { join } = require("path"); |
||||
|
process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; |
||||
|
const createWindow = () => { |
||||
|
const win = new BrowserWindow({ |
||||
|
width: 800, |
||||
|
height: 600, |
||||
|
title: "沈阳华翔", |
||||
|
//标题
|
||||
|
icon: join(__dirname, "../public/app.ico"), |
||||
|
//图标
|
||||
|
// frame:false,//Frame是否可见
|
||||
|
autoHideMenuBar: true |
||||
|
//隐藏菜单栏
|
||||
|
}); |
||||
|
const screenRect = screen.getPrimaryDisplay().bounds; |
||||
|
win.setBounds({ |
||||
|
x: 0, |
||||
|
y: 0, |
||||
|
width: screenRect.width, |
||||
|
height: screenRect.height |
||||
|
}); |
||||
|
console.log(process.env.npm_lifecycle_event); |
||||
|
if (process.env.VITE_DEV_SERVER_URL) { |
||||
|
win.loadURL(process.env.VITE_DEV_SERVER_URL); |
||||
|
win.webContents.openDevTools(); |
||||
|
} else { |
||||
|
win.loadFile(join(__dirname, "../dist/index.html")); |
||||
|
} |
||||
|
}; |
||||
|
app.whenReady().then(() => { |
||||
|
createWindow(); |
||||
|
app.on("activate", () => { |
||||
|
if (BrowserWindow.getAllWindows().length === 0) createWindow(); |
||||
|
}); |
||||
|
}); |
||||
|
app.on("window-all-closed", () => { |
||||
|
if (process.platform !== "darwin") app.quit(); |
||||
|
}); |
@ -0,0 +1,219 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
||||
|
<meta name="renderer" content="webkit"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
||||
|
<link rel="icon" href="/favicon.ico"> |
||||
|
<title>华翔</title> |
||||
|
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> |
||||
|
<style> |
||||
|
html, |
||||
|
body, |
||||
|
#app { |
||||
|
height: 100%; |
||||
|
margin: 0px; |
||||
|
padding: 0px; |
||||
|
} |
||||
|
|
||||
|
.chromeframe { |
||||
|
margin: 0.2em 0; |
||||
|
background: #ccc; |
||||
|
color: #000; |
||||
|
padding: 0.2em 0; |
||||
|
} |
||||
|
|
||||
|
#loader-wrapper { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
z-index: 999999; |
||||
|
} |
||||
|
|
||||
|
#loader { |
||||
|
display: block; |
||||
|
position: relative; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
width: 150px; |
||||
|
height: 150px; |
||||
|
margin: -75px 0 0 -75px; |
||||
|
border-radius: 50%; |
||||
|
border: 3px solid transparent; |
||||
|
border-top-color: #FFF; |
||||
|
-webkit-animation: spin 2s linear infinite; |
||||
|
-ms-animation: spin 2s linear infinite; |
||||
|
-moz-animation: spin 2s linear infinite; |
||||
|
-o-animation: spin 2s linear infinite; |
||||
|
animation: spin 2s linear infinite; |
||||
|
z-index: 1001; |
||||
|
} |
||||
|
|
||||
|
#loader:before { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
top: 5px; |
||||
|
left: 5px; |
||||
|
right: 5px; |
||||
|
bottom: 5px; |
||||
|
border-radius: 50%; |
||||
|
border: 3px solid transparent; |
||||
|
border-top-color: #FFF; |
||||
|
-webkit-animation: spin 3s linear infinite; |
||||
|
-moz-animation: spin 3s linear infinite; |
||||
|
-o-animation: spin 3s linear infinite; |
||||
|
-ms-animation: spin 3s linear infinite; |
||||
|
animation: spin 3s linear infinite; |
||||
|
} |
||||
|
|
||||
|
#loader:after { |
||||
|
content: ""; |
||||
|
position: absolute; |
||||
|
top: 15px; |
||||
|
left: 15px; |
||||
|
right: 15px; |
||||
|
bottom: 15px; |
||||
|
border-radius: 50%; |
||||
|
border: 3px solid transparent; |
||||
|
border-top-color: #FFF; |
||||
|
-moz-animation: spin 1.5s linear infinite; |
||||
|
-o-animation: spin 1.5s linear infinite; |
||||
|
-ms-animation: spin 1.5s linear infinite; |
||||
|
-webkit-animation: spin 1.5s linear infinite; |
||||
|
animation: spin 1.5s linear infinite; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@-webkit-keyframes spin { |
||||
|
0% { |
||||
|
-webkit-transform: rotate(0deg); |
||||
|
-ms-transform: rotate(0deg); |
||||
|
transform: rotate(0deg); |
||||
|
} |
||||
|
|
||||
|
100% { |
||||
|
-webkit-transform: rotate(360deg); |
||||
|
-ms-transform: rotate(360deg); |
||||
|
transform: rotate(360deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@keyframes spin { |
||||
|
0% { |
||||
|
-webkit-transform: rotate(0deg); |
||||
|
-ms-transform: rotate(0deg); |
||||
|
transform: rotate(0deg); |
||||
|
} |
||||
|
|
||||
|
100% { |
||||
|
-webkit-transform: rotate(360deg); |
||||
|
-ms-transform: rotate(360deg); |
||||
|
transform: rotate(360deg); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
#loader-wrapper .loader-section { |
||||
|
position: fixed; |
||||
|
top: 0; |
||||
|
width: 51%; |
||||
|
height: 100%; |
||||
|
background: #7171C6; |
||||
|
z-index: 1000; |
||||
|
-webkit-transform: translateX(0); |
||||
|
-ms-transform: translateX(0); |
||||
|
transform: translateX(0); |
||||
|
} |
||||
|
|
||||
|
#loader-wrapper .loader-section.section-left { |
||||
|
left: 0; |
||||
|
} |
||||
|
|
||||
|
#loader-wrapper .loader-section.section-right { |
||||
|
right: 0; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.loaded #loader-wrapper .loader-section.section-left { |
||||
|
-webkit-transform: translateX(-100%); |
||||
|
-ms-transform: translateX(-100%); |
||||
|
transform: translateX(-100%); |
||||
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); |
||||
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); |
||||
|
} |
||||
|
|
||||
|
.loaded #loader-wrapper .loader-section.section-right { |
||||
|
-webkit-transform: translateX(100%); |
||||
|
-ms-transform: translateX(100%); |
||||
|
transform: translateX(100%); |
||||
|
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); |
||||
|
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); |
||||
|
} |
||||
|
|
||||
|
.loaded #loader { |
||||
|
opacity: 0; |
||||
|
-webkit-transition: all 0.3s ease-out; |
||||
|
transition: all 0.3s ease-out; |
||||
|
} |
||||
|
|
||||
|
.loaded #loader-wrapper { |
||||
|
visibility: hidden; |
||||
|
-webkit-transform: translateY(-100%); |
||||
|
-ms-transform: translateY(-100%); |
||||
|
transform: translateY(-100%); |
||||
|
-webkit-transition: all 0.3s 1s ease-out; |
||||
|
transition: all 0.3s 1s ease-out; |
||||
|
} |
||||
|
|
||||
|
.no-js #loader-wrapper { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.no-js h1 { |
||||
|
color: #222222; |
||||
|
} |
||||
|
|
||||
|
#loader-wrapper .load_title { |
||||
|
font-family: 'Open Sans'; |
||||
|
color: #FFF; |
||||
|
font-size: 19px; |
||||
|
width: 100%; |
||||
|
text-align: center; |
||||
|
z-index: 9999999999999; |
||||
|
position: absolute; |
||||
|
top: 60%; |
||||
|
opacity: 1; |
||||
|
line-height: 30px; |
||||
|
} |
||||
|
|
||||
|
#loader-wrapper .load_title span { |
||||
|
font-weight: normal; |
||||
|
font-style: italic; |
||||
|
font-size: 13px; |
||||
|
color: #FFF; |
||||
|
opacity: 0.5; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div id="app"> |
||||
|
<div id="loader-wrapper"> |
||||
|
<div id="loader"></div> |
||||
|
<div class="loader-section section-left"></div> |
||||
|
<div class="loader-section section-right"></div> |
||||
|
<div class="load_title">正在加载系统资源,请耐心等待</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script> |
||||
|
// 注意src路径 %BASE_URL% 即import.meta.env.BASE_URL |
||||
|
document.write('<script type="module" src="%BASE_URL%properties.js?t=' + new Date().getTime() + '"><\/script\>'); |
||||
|
</script> |
||||
|
<script type="module" src="/src/main.js"></script> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,86 @@ |
|||||
|
{ |
||||
|
"name": "ruoyi-vue3-master", |
||||
|
"version": "1.0.0", |
||||
|
"description": "RuoYi", |
||||
|
"author": "RuoYi", |
||||
|
"license": "MIT", |
||||
|
"main": "./src-electron/main.js", |
||||
|
"scripts": { |
||||
|
"dev": "vite", |
||||
|
"build:prod": "vite build", |
||||
|
"build:stage": "vite build --mode staging", |
||||
|
"preview": "vite preview", |
||||
|
"electron:build": "vite build && electron-builder", |
||||
|
"serve": "node server" |
||||
|
}, |
||||
|
"build": { |
||||
|
"productName": "RouyiVue3Master", |
||||
|
"appId": "dyy.dongyuanwai", |
||||
|
"copyright": "dyy.dongyuanwai © 2024", |
||||
|
"compression": "maximum", |
||||
|
"asar": true, |
||||
|
"directories": { |
||||
|
"output": "release/" |
||||
|
}, |
||||
|
"nsis": { |
||||
|
"oneClick": false, |
||||
|
"allowToChangeInstallationDirectory": true, |
||||
|
"perMachine": true, |
||||
|
"deleteAppDataOnUninstall": true, |
||||
|
"createDesktopShortcut": true, |
||||
|
"createStartMenuShortcut": true, |
||||
|
"shortcutName": "RouyiVue3Master" |
||||
|
}, |
||||
|
"win": { |
||||
|
"icon": "public/app.ico", |
||||
|
"artifactName": "${productName}-v${version}-${platform}-setup.${ext}", |
||||
|
"target": [ |
||||
|
{ |
||||
|
"target": "nsis" |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
"mac": { |
||||
|
"icon": "public/app.ico", |
||||
|
"artifactName": "${productName}-v${version}-${platform}-setup.${ext}" |
||||
|
}, |
||||
|
"linux": { |
||||
|
"icon": "public/app.ico", |
||||
|
"artifactName": "${productName}-v${version}-${platform}-setup.${ext}", |
||||
|
"target": [ |
||||
|
"deb" |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"@element-plus/icons-vue": "2.3.1", |
||||
|
"@vueup/vue-quill": "1.2.0", |
||||
|
"@vueuse/core": "10.11.0", |
||||
|
"axios": "0.28.1", |
||||
|
"echarts": "5.5.1", |
||||
|
"element-plus": "2.7.6", |
||||
|
"file-saver": "2.0.5", |
||||
|
"fuse.js": "6.6.2", |
||||
|
"js-cookie": "3.0.5", |
||||
|
"jsencrypt": "3.3.2", |
||||
|
"nprogress": "0.2.0", |
||||
|
"pinia": "2.1.7", |
||||
|
"vue": "3.4.31", |
||||
|
"vue-cropper": "1.1.1", |
||||
|
"vue-router": "4.4.0", |
||||
|
"ws": "^8.18.0" |
||||
|
}, |
||||
|
"devDependencies": { |
||||
|
"@vitejs/plugin-vue": "5.0.5", |
||||
|
"electron": "^32.2.0", |
||||
|
"electron-builder": "^25.1.7", |
||||
|
"electron-devtools-installer": "^3.2.0", |
||||
|
"sass": "1.77.5", |
||||
|
"unplugin-auto-import": "0.17.6", |
||||
|
"unplugin-vue-setup-extend-plus": "1.0.1", |
||||
|
"vite": "5.3.2", |
||||
|
"vite-plugin-compression": "0.5.1", |
||||
|
"vite-plugin-electron": "^0.28.8", |
||||
|
"vite-plugin-svg-icons": "2.0.1" |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 5.5 KiB |
@ -0,0 +1,15 @@ |
|||||
|
'use strict'; |
||||
|
// 定义私有变量和配置
|
||||
|
const privateConfig = { |
||||
|
baseUrl: 'http://dev.ccwin-in.com:29000/api',//测试环境
|
||||
|
socketUrl: 'ws://127.0.0.1:8080',//socket地址
|
||||
|
role:'admin',//角色
|
||||
|
}; |
||||
|
|
||||
|
(()=>{ |
||||
|
if (typeof window !== 'undefined') { |
||||
|
window._properties = privateConfig; |
||||
|
} |
||||
|
})(); |
||||
|
|
||||
|
export const _properties = {...privateConfig}; |
@ -0,0 +1,21 @@ |
|||||
|
const WebSocket = require('ws'); |
||||
|
|
||||
|
// 创建WebSocket服务器实例
|
||||
|
const wss = new WebSocket.Server({ port: 8080 }); |
||||
|
|
||||
|
wss.on('connection', function connection(ws) { |
||||
|
// 当客户端连接时触发
|
||||
|
|
||||
|
ws.on('message', function incoming(message) { |
||||
|
// 当服务器接收到客户端发来的消息时触发
|
||||
|
console.log('received: %s', message); |
||||
|
}); |
||||
|
|
||||
|
// 发送消息到客户端
|
||||
|
ws.send(JSON.stringify({ |
||||
|
type: '2', |
||||
|
message: 'message', |
||||
|
})); |
||||
|
}); |
||||
|
|
||||
|
console.log('WebSocket server is running on ws://localhost:8080'); |
@ -0,0 +1,57 @@ |
|||||
|
const { app, BrowserWindow , screen } = require('electron') |
||||
|
const { join } = require('path') |
||||
|
|
||||
|
// 屏蔽安全警告
|
||||
|
// ectron Security Warning (Insecure Content-Security-Policy)
|
||||
|
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true' |
||||
|
|
||||
|
// 创建浏览器窗口时,调用这个函数。
|
||||
|
const createWindow = () => { |
||||
|
const win = new BrowserWindow({ |
||||
|
width: 800, |
||||
|
height: 600, |
||||
|
title:'沈阳华翔',//标题
|
||||
|
icon: join(__dirname, '../public/app.ico'),//图标
|
||||
|
// frame:false,//Frame是否可见
|
||||
|
autoHideMenuBar:true,//隐藏菜单栏
|
||||
|
}) |
||||
|
// 获取主屏幕的分辨率
|
||||
|
const screenRect = screen.getPrimaryDisplay().bounds; |
||||
|
// 设置窗口大小和位置
|
||||
|
|
||||
|
win.setBounds({ |
||||
|
x: 0, |
||||
|
y: 0, |
||||
|
width: screenRect.width, |
||||
|
height: screenRect.height, |
||||
|
}); |
||||
|
console.log(process.env.npm_lifecycle_event); |
||||
|
// if (process.env.npm_lifecycle_event === "start") {
|
||||
|
// win.loadURL("http://127.0.0.1:3212");
|
||||
|
// win.webContents.openDevTools();
|
||||
|
// //快捷命令shift+ctrl+i
|
||||
|
// } else {
|
||||
|
// win.loadFile("dist/index.html");
|
||||
|
// }
|
||||
|
// development模式
|
||||
|
if(process.env.VITE_DEV_SERVER_URL) { |
||||
|
win.loadURL(process.env.VITE_DEV_SERVER_URL) |
||||
|
// 开启调试台
|
||||
|
win.webContents.openDevTools() |
||||
|
}else { |
||||
|
win.loadFile(join(__dirname, '../dist/index.html')) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// Electron 会在初始化后并准备
|
||||
|
app.whenReady().then(() => { |
||||
|
createWindow() |
||||
|
app.on('activate', () => { |
||||
|
if (BrowserWindow.getAllWindows().length === 0) createWindow() |
||||
|
}) |
||||
|
}) |
||||
|
|
||||
|
app.on('window-all-closed', () => { |
||||
|
if (process.platform !== 'darwin') app.quit() |
||||
|
}) |
@ -0,0 +1,15 @@ |
|||||
|
<template> |
||||
|
<router-view /> |
||||
|
</template> |
||||
|
|
||||
|
<script setup> |
||||
|
import useSettingsStore from '@/store/modules/settings' |
||||
|
import { handleThemeStyle } from '@/utils/theme' |
||||
|
|
||||
|
onMounted(() => { |
||||
|
nextTick(() => { |
||||
|
// 初始化主题样式 |
||||
|
handleThemeStyle(useSettingsStore().theme) |
||||
|
}) |
||||
|
}) |
||||
|
</script> |
@ -0,0 +1,60 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 登录方法
|
||||
|
export function login(username, password, code, uuid) { |
||||
|
const data = { |
||||
|
username, |
||||
|
password, |
||||
|
code, |
||||
|
uuid |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/login', |
||||
|
headers: { |
||||
|
isToken: false, |
||||
|
repeatSubmit: false |
||||
|
}, |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 注册方法
|
||||
|
export function register(data) { |
||||
|
return request({ |
||||
|
url: '/register', |
||||
|
headers: { |
||||
|
isToken: false |
||||
|
}, |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取用户详细信息
|
||||
|
export function getInfo() { |
||||
|
return request({ |
||||
|
url: '/getInfo', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 退出方法
|
||||
|
export function logout() { |
||||
|
return request({ |
||||
|
url: '/logout', |
||||
|
method: 'post' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取验证码
|
||||
|
export function getCodeImg() { |
||||
|
return request({ |
||||
|
url: '/captchaImage', |
||||
|
headers: { |
||||
|
isToken: false |
||||
|
}, |
||||
|
method: 'get', |
||||
|
timeout: 20000 |
||||
|
}) |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 获取路由
|
||||
|
export const getRouters = () => { |
||||
|
return request({ |
||||
|
url: '/getRouters', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,57 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询缓存详细
|
||||
|
export function getCache() { |
||||
|
return request({ |
||||
|
url: '/monitor/cache', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询缓存名称列表
|
||||
|
export function listCacheName() { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/getNames', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询缓存键名列表
|
||||
|
export function listCacheKey(cacheName) { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/getKeys/' + cacheName, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询缓存内容
|
||||
|
export function getCacheValue(cacheName, cacheKey) { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清理指定名称缓存
|
||||
|
export function clearCacheName(cacheName) { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/clearCacheName/' + cacheName, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清理指定键名缓存
|
||||
|
export function clearCacheKey(cacheKey) { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/clearCacheKey/' + cacheKey, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清理全部缓存
|
||||
|
export function clearCacheAll() { |
||||
|
return request({ |
||||
|
url: '/monitor/cache/clearCacheAll', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,71 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询定时任务调度列表
|
||||
|
export function listJob(query) { |
||||
|
return request({ |
||||
|
url: '/monitor/job/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询定时任务调度详细
|
||||
|
export function getJob(jobId) { |
||||
|
return request({ |
||||
|
url: '/monitor/job/' + jobId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增定时任务调度
|
||||
|
export function addJob(data) { |
||||
|
return request({ |
||||
|
url: '/monitor/job', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改定时任务调度
|
||||
|
export function updateJob(data) { |
||||
|
return request({ |
||||
|
url: '/monitor/job', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除定时任务调度
|
||||
|
export function delJob(jobId) { |
||||
|
return request({ |
||||
|
url: '/monitor/job/' + jobId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 任务状态修改
|
||||
|
export function changeJobStatus(jobId, status) { |
||||
|
const data = { |
||||
|
jobId, |
||||
|
status |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/monitor/job/changeStatus', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
// 定时任务立即执行一次
|
||||
|
export function runJob(jobId, jobGroup) { |
||||
|
const data = { |
||||
|
jobId, |
||||
|
jobGroup |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/monitor/job/run', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询调度日志列表
|
||||
|
export function listJobLog(query) { |
||||
|
return request({ |
||||
|
url: '/monitor/jobLog/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除调度日志
|
||||
|
export function delJobLog(jobLogId) { |
||||
|
return request({ |
||||
|
url: '/monitor/jobLog/' + jobLogId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清空调度日志
|
||||
|
export function cleanJobLog() { |
||||
|
return request({ |
||||
|
url: '/monitor/jobLog/clean', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,34 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询登录日志列表
|
||||
|
export function list(query) { |
||||
|
return request({ |
||||
|
url: '/monitor/logininfor/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除登录日志
|
||||
|
export function delLogininfor(infoId) { |
||||
|
return request({ |
||||
|
url: '/monitor/logininfor/' + infoId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 解锁用户登录状态
|
||||
|
export function unlockLogininfor(userName) { |
||||
|
return request({ |
||||
|
url: '/monitor/logininfor/unlock/' + userName, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清空登录日志
|
||||
|
export function cleanLogininfor() { |
||||
|
return request({ |
||||
|
url: '/monitor/logininfor/clean', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,18 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询在线用户列表
|
||||
|
export function list(query) { |
||||
|
return request({ |
||||
|
url: '/monitor/online/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 强退用户
|
||||
|
export function forceLogout(tokenId) { |
||||
|
return request({ |
||||
|
url: '/monitor/online/' + tokenId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询操作日志列表
|
||||
|
export function list(query) { |
||||
|
return request({ |
||||
|
url: '/monitor/operlog/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除操作日志
|
||||
|
export function delOperlog(operId) { |
||||
|
return request({ |
||||
|
url: '/monitor/operlog/' + operId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 清空操作日志
|
||||
|
export function cleanOperlog() { |
||||
|
return request({ |
||||
|
url: '/monitor/operlog/clean', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 获取服务信息
|
||||
|
export function getServer() { |
||||
|
return request({ |
||||
|
url: '/monitor/server', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,60 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询参数列表
|
||||
|
export function listConfig(query) { |
||||
|
return request({ |
||||
|
url: '/system/config/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询参数详细
|
||||
|
export function getConfig(configId) { |
||||
|
return request({ |
||||
|
url: '/system/config/' + configId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 根据参数键名查询参数值
|
||||
|
export function getConfigKey(configKey) { |
||||
|
return request({ |
||||
|
url: '/system/config/configKey/' + configKey, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增参数配置
|
||||
|
export function addConfig(data) { |
||||
|
return request({ |
||||
|
url: '/system/config', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改参数配置
|
||||
|
export function updateConfig(data) { |
||||
|
return request({ |
||||
|
url: '/system/config', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除参数配置
|
||||
|
export function delConfig(configId) { |
||||
|
return request({ |
||||
|
url: '/system/config/' + configId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 刷新参数缓存
|
||||
|
export function refreshCache() { |
||||
|
return request({ |
||||
|
url: '/system/config/refreshCache', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询部门列表
|
||||
|
export function listDept(query) { |
||||
|
return request({ |
||||
|
url: '/system/dept/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询部门列表(排除节点)
|
||||
|
export function listDeptExcludeChild(deptId) { |
||||
|
return request({ |
||||
|
url: '/system/dept/list/exclude/' + deptId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询部门详细
|
||||
|
export function getDept(deptId) { |
||||
|
return request({ |
||||
|
url: '/system/dept/' + deptId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增部门
|
||||
|
export function addDept(data) { |
||||
|
return request({ |
||||
|
url: '/system/dept', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改部门
|
||||
|
export function updateDept(data) { |
||||
|
return request({ |
||||
|
url: '/system/dept', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除部门
|
||||
|
export function delDept(deptId) { |
||||
|
return request({ |
||||
|
url: '/system/dept/' + deptId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询字典数据列表
|
||||
|
export function listData(query) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询字典数据详细
|
||||
|
export function getData(dictCode) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data/' + dictCode, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 根据字典类型查询字典数据信息
|
||||
|
export function getDicts(dictType) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data/type/' + dictType, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增字典数据
|
||||
|
export function addData(data) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改字典数据
|
||||
|
export function updateData(data) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除字典数据
|
||||
|
export function delData(dictCode) { |
||||
|
return request({ |
||||
|
url: '/system/dict/data/' + dictCode, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,60 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询字典类型列表
|
||||
|
export function listType(query) { |
||||
|
return request({ |
||||
|
url: '/system/dict/type/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询字典类型详细
|
||||
|
export function getType(dictId) { |
||||
|
return request({ |
||||
|
url: '/system/dict/type/' + dictId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增字典类型
|
||||
|
export function addType(data) { |
||||
|
return request({ |
||||
|
url: '/system/dict/type', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改字典类型
|
||||
|
export function updateType(data) { |
||||
|
return request({ |
||||
|
url: '/system/dict/type', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除字典类型
|
||||
|
export function delType(dictId) { |
||||
|
return request({ |
||||
|
url: '/system/dict/type/' + dictId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 刷新字典缓存
|
||||
|
export function refreshCache() { |
||||
|
return request({ |
||||
|
url: '/system/dict/type/refreshCache', |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 获取字典选择框列表
|
||||
|
export function optionselect() { |
||||
|
return request({ |
||||
|
url: '/system/dict/type/optionselect', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,60 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询菜单列表
|
||||
|
export function listMenu(query) { |
||||
|
return request({ |
||||
|
url: '/system/menu/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询菜单详细
|
||||
|
export function getMenu(menuId) { |
||||
|
return request({ |
||||
|
url: '/system/menu/' + menuId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询菜单下拉树结构
|
||||
|
export function treeselect() { |
||||
|
return request({ |
||||
|
url: '/system/menu/treeselect', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 根据角色ID查询菜单下拉树结构
|
||||
|
export function roleMenuTreeselect(roleId) { |
||||
|
return request({ |
||||
|
url: '/system/menu/roleMenuTreeselect/' + roleId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增菜单
|
||||
|
export function addMenu(data) { |
||||
|
return request({ |
||||
|
url: '/system/menu', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改菜单
|
||||
|
export function updateMenu(data) { |
||||
|
return request({ |
||||
|
url: '/system/menu', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除菜单
|
||||
|
export function delMenu(menuId) { |
||||
|
return request({ |
||||
|
url: '/system/menu/' + menuId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询公告列表
|
||||
|
export function listNotice(query) { |
||||
|
return request({ |
||||
|
url: '/system/notice/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询公告详细
|
||||
|
export function getNotice(noticeId) { |
||||
|
return request({ |
||||
|
url: '/system/notice/' + noticeId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增公告
|
||||
|
export function addNotice(data) { |
||||
|
return request({ |
||||
|
url: '/system/notice', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改公告
|
||||
|
export function updateNotice(data) { |
||||
|
return request({ |
||||
|
url: '/system/notice', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除公告
|
||||
|
export function delNotice(noticeId) { |
||||
|
return request({ |
||||
|
url: '/system/notice/' + noticeId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询岗位列表
|
||||
|
export function listPost(query) { |
||||
|
return request({ |
||||
|
url: '/system/post/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询岗位详细
|
||||
|
export function getPost(postId) { |
||||
|
return request({ |
||||
|
url: '/system/post/' + postId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增岗位
|
||||
|
export function addPost(data) { |
||||
|
return request({ |
||||
|
url: '/system/post', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改岗位
|
||||
|
export function updatePost(data) { |
||||
|
return request({ |
||||
|
url: '/system/post', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除岗位
|
||||
|
export function delPost(postId) { |
||||
|
return request({ |
||||
|
url: '/system/post/' + postId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询角色列表
|
||||
|
export function listRole(query) { |
||||
|
return request({ |
||||
|
url: '/system/role/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询角色详细
|
||||
|
export function getRole(roleId) { |
||||
|
return request({ |
||||
|
url: '/system/role/' + roleId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增角色
|
||||
|
export function addRole(data) { |
||||
|
return request({ |
||||
|
url: '/system/role', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改角色
|
||||
|
export function updateRole(data) { |
||||
|
return request({ |
||||
|
url: '/system/role', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 角色数据权限
|
||||
|
export function dataScope(data) { |
||||
|
return request({ |
||||
|
url: '/system/role/dataScope', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 角色状态修改
|
||||
|
export function changeRoleStatus(roleId, status) { |
||||
|
const data = { |
||||
|
roleId, |
||||
|
status |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/system/role/changeStatus', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除角色
|
||||
|
export function delRole(roleId) { |
||||
|
return request({ |
||||
|
url: '/system/role/' + roleId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询角色已授权用户列表
|
||||
|
export function allocatedUserList(query) { |
||||
|
return request({ |
||||
|
url: '/system/role/authUser/allocatedList', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询角色未授权用户列表
|
||||
|
export function unallocatedUserList(query) { |
||||
|
return request({ |
||||
|
url: '/system/role/authUser/unallocatedList', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 取消用户授权角色
|
||||
|
export function authUserCancel(data) { |
||||
|
return request({ |
||||
|
url: '/system/role/authUser/cancel', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 批量取消用户授权角色
|
||||
|
export function authUserCancelAll(data) { |
||||
|
return request({ |
||||
|
url: '/system/role/authUser/cancelAll', |
||||
|
method: 'put', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 授权用户选择
|
||||
|
export function authUserSelectAll(data) { |
||||
|
return request({ |
||||
|
url: '/system/role/authUser/selectAll', |
||||
|
method: 'put', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 根据角色ID查询部门树结构
|
||||
|
export function deptTreeSelect(roleId) { |
||||
|
return request({ |
||||
|
url: '/system/role/deptTree/' + roleId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,136 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
import { parseStrEmpty } from "@/utils/ruoyi"; |
||||
|
|
||||
|
// 查询用户列表
|
||||
|
export function listUser(query) { |
||||
|
return request({ |
||||
|
url: '/system/user/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询用户详细
|
||||
|
export function getUser(userId) { |
||||
|
return request({ |
||||
|
url: '/system/user/' + parseStrEmpty(userId), |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 新增用户
|
||||
|
export function addUser(data) { |
||||
|
return request({ |
||||
|
url: '/system/user', |
||||
|
method: 'post', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改用户
|
||||
|
export function updateUser(data) { |
||||
|
return request({ |
||||
|
url: '/system/user', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除用户
|
||||
|
export function delUser(userId) { |
||||
|
return request({ |
||||
|
url: '/system/user/' + userId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 用户密码重置
|
||||
|
export function resetUserPwd(userId, password) { |
||||
|
const data = { |
||||
|
userId, |
||||
|
password |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/system/user/resetPwd', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 用户状态修改
|
||||
|
export function changeUserStatus(userId, status) { |
||||
|
const data = { |
||||
|
userId, |
||||
|
status |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/system/user/changeStatus', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询用户个人信息
|
||||
|
export function getUserProfile() { |
||||
|
return request({ |
||||
|
url: '/system/user/profile', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改用户个人信息
|
||||
|
export function updateUserProfile(data) { |
||||
|
return request({ |
||||
|
url: '/system/user/profile', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 用户密码重置
|
||||
|
export function updateUserPwd(oldPassword, newPassword) { |
||||
|
const data = { |
||||
|
oldPassword, |
||||
|
newPassword |
||||
|
} |
||||
|
return request({ |
||||
|
url: '/system/user/profile/updatePwd', |
||||
|
method: 'put', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 用户头像上传
|
||||
|
export function uploadAvatar(data) { |
||||
|
return request({ |
||||
|
url: '/system/user/profile/avatar', |
||||
|
method: 'post', |
||||
|
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询授权角色
|
||||
|
export function getAuthRole(userId) { |
||||
|
return request({ |
||||
|
url: '/system/user/authRole/' + userId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 保存授权角色
|
||||
|
export function updateAuthRole(data) { |
||||
|
return request({ |
||||
|
url: '/system/user/authRole', |
||||
|
method: 'put', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询部门下拉树结构
|
||||
|
export function deptTreeSelect() { |
||||
|
return request({ |
||||
|
url: '/system/user/deptTree', |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
@ -0,0 +1,85 @@ |
|||||
|
import request from '@/utils/request' |
||||
|
|
||||
|
// 查询生成表数据
|
||||
|
export function listTable(query) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
// 查询db数据库列表
|
||||
|
export function listDbTable(query) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/db/list', |
||||
|
method: 'get', |
||||
|
params: query |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 查询表详细信息
|
||||
|
export function getGenTable(tableId) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/' + tableId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 修改代码生成信息
|
||||
|
export function updateGenTable(data) { |
||||
|
return request({ |
||||
|
url: '/tool/gen', |
||||
|
method: 'put', |
||||
|
data: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 导入表
|
||||
|
export function importTable(data) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/importTable', |
||||
|
method: 'post', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 创建表
|
||||
|
export function createTable(data) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/createTable', |
||||
|
method: 'post', |
||||
|
params: data |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 预览生成代码
|
||||
|
export function previewTable(tableId) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/preview/' + tableId, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 删除表数据
|
||||
|
export function delTable(tableId) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/' + tableId, |
||||
|
method: 'delete' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 生成代码(自定义路径)
|
||||
|
export function genCode(tableName) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/genCode/' + tableName, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
// 同步数据库
|
||||
|
export function synchDb(tableName) { |
||||
|
return request({ |
||||
|
url: '/tool/gen/synchDb/' + tableName, |
||||
|
method: 'get' |
||||
|
}) |
||||
|
} |
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 96 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 954 B |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 179 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 971 B |
After Width: | Height: | Size: 717 B |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 418 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 356 B |
After Width: | Height: | Size: 724 B |
After Width: | Height: | Size: 818 B |
After Width: | Height: | Size: 627 B |
After Width: | Height: | Size: 347 B |
After Width: | Height: | Size: 497 B |
After Width: | Height: | Size: 459 B |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 944 B |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 421 B |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 320 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 744 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 285 B |
After Width: | Height: | Size: 1017 B |
After Width: | Height: | Size: 444 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 669 B |
After Width: | Height: | Size: 335 B |
After Width: | Height: | Size: 883 B |
After Width: | Height: | Size: 821 B |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 731 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.6 KiB |