diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development index 302ecd1a..c1482767 100644 --- a/ruoyi-ui/.env.development +++ b/ruoyi-ui/.env.development @@ -1,10 +1,10 @@ # 页面标题 -VUE_APP_TITLE = 若依管理系统 +VUE_APP_TITLE = 智能作业系统 # 开发环境配置 ENV = 'development' -# 若依管理系统/开发环境 +# 智能作业系统/开发环境 VUE_APP_BASE_API = '/dev-api' # 路由懒加载 diff --git a/ruoyi-ui/.env.production b/ruoyi-ui/.env.production index cb064ec8..55776496 100644 --- a/ruoyi-ui/.env.production +++ b/ruoyi-ui/.env.production @@ -1,8 +1,8 @@ -# 页面标题 -VUE_APP_TITLE = 若依管理系统 - -# 生产环境配置 -ENV = 'production' - -# 若依管理系统/生产环境 -VUE_APP_BASE_API = '/prod-api' +# 页面标题 +VUE_APP_TITLE = 智能作业系统 + +# 生产环境配置 +ENV = 'production' + +# 智能作业系统/生产环境 +VUE_APP_BASE_API = '/prod-api' diff --git a/ruoyi-ui/.env.staging b/ruoyi-ui/.env.staging index a47af9a2..b4042af9 100644 --- a/ruoyi-ui/.env.staging +++ b/ruoyi-ui/.env.staging @@ -1,10 +1,10 @@ -# 页面标题 -VUE_APP_TITLE = 若依管理系统 - -NODE_ENV = production - -# 测试环境配置 -ENV = 'staging' - -# 若依管理系统/测试环境 -VUE_APP_BASE_API = '/stage-api' +# 页面标题 +VUE_APP_TITLE = 智能作业系统 + +NODE_ENV = production + +# 测试环境配置 +ENV = 'staging' + +# 智能作业系统/测试环境 +VUE_APP_BASE_API = '/stage-api' diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 0e77a613..1664dd20 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,7 +1,7 @@ { "name": "ruoyi", "version": "3.6.1", - "description": "若依管理系统", + "description": "智能作业系统", "author": "若依", "license": "MIT", "scripts": { diff --git a/ruoyi-ui/src/App.vue b/ruoyi-ui/src/App.vue index a2c4b872..ba498506 100644 --- a/ruoyi-ui/src/App.vue +++ b/ruoyi-ui/src/App.vue @@ -1,28 +1,112 @@ - - - - + + + + diff --git a/ruoyi-ui/src/api/login.js b/ruoyi-ui/src/api/login.js index 6b0cda03..c23e7fb2 100644 --- a/ruoyi-ui/src/api/login.js +++ b/ruoyi-ui/src/api/login.js @@ -1,61 +1,61 @@ -import request from '@/utils/request' - -// 登录方法 -export function login(username, password, code, uuid) { - return request({ - url: '/auth/login', - headers: { - isToken: false - }, - method: 'post', - data: { username, password, code, uuid } - }) -} - -// 注册方法 -export function register(data) { - return request({ - url: '/auth/register', - headers: { - isToken: false - }, - method: 'post', - data: data - }) -} - -// 刷新方法 -export function refreshToken() { - return request({ - url: '/auth/refresh', - method: 'post' - }) -} - -// 获取用户详细信息 -export function getInfo() { - return request({ - url: '/system/user/getInfo', - method: 'get' - }) -} - -// 退出方法 -export function logout() { - return request({ - url: '/auth/logout', - method: 'delete' - }) -} - -// 获取验证码 -export function getCodeImg() { - return request({ - url: '/code', - headers: { - isToken: false - }, - method: 'get', - timeout: 20000 - }) -} \ No newline at end of file +import request from '@/utils/request' + +// 登录方法 +export function login(username, password, code, uuid) { + return request({ + url: '/system/login', + headers: { + isToken: false + }, + method: 'post', + data: { username, password, code, uuid } + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: '/system/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 刷新方法 +export function refreshToken() { + return request({ + url: '/system/refresh', + method: 'post' + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/system/user/getInfo', + method: 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + url: '/system/logout', + method: 'delete' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/code', + headers: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} diff --git a/ruoyi-ui/src/api/system/menu.js b/ruoyi-ui/src/api/system/menu.js index 97258ee6..ece5e81c 100644 --- a/ruoyi-ui/src/api/system/menu.js +++ b/ruoyi-ui/src/api/system/menu.js @@ -1,60 +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' - }) -} \ No newline at end of file + 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' + }) +} diff --git a/ruoyi-ui/src/assets/img/banner/bg.png b/ruoyi-ui/src/assets/img/banner/bg.png new file mode 100644 index 00000000..2a34a0dc Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/bg.png differ diff --git a/ruoyi-ui/src/assets/img/banner/head_avatar.png b/ruoyi-ui/src/assets/img/banner/head_avatar.png new file mode 100644 index 00000000..7854a979 Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/head_avatar.png differ diff --git a/ruoyi-ui/src/assets/img/banner/head_bank_logo.png b/ruoyi-ui/src/assets/img/banner/head_bank_logo.png new file mode 100644 index 00000000..2a2dd33c Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/head_bank_logo.png differ diff --git a/ruoyi-ui/src/assets/img/banner/header_bg.png b/ruoyi-ui/src/assets/img/banner/header_bg.png new file mode 100644 index 00000000..6f50cd0b Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/header_bg.png differ diff --git a/ruoyi-ui/src/assets/img/banner/new_pro.png b/ruoyi-ui/src/assets/img/banner/new_pro.png new file mode 100644 index 00000000..ec54678a Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/new_pro.png differ diff --git a/ruoyi-ui/src/assets/img/banner/newpro.png b/ruoyi-ui/src/assets/img/banner/newpro.png new file mode 100644 index 00000000..df89d2f8 Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/newpro.png differ diff --git a/ruoyi-ui/src/assets/img/banner/pro_hot.png b/ruoyi-ui/src/assets/img/banner/pro_hot.png new file mode 100644 index 00000000..fa19d82f Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/pro_hot.png differ diff --git a/ruoyi-ui/src/assets/img/banner/red_black.png b/ruoyi-ui/src/assets/img/banner/red_black.png new file mode 100644 index 00000000..fbf01723 Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/red_black.png differ diff --git a/ruoyi-ui/src/assets/img/banner/user.png b/ruoyi-ui/src/assets/img/banner/user.png new file mode 100644 index 00000000..bba9f171 Binary files /dev/null and b/ruoyi-ui/src/assets/img/banner/user.png differ diff --git a/ruoyi-ui/src/assets/img/home/head_bg_logo.png b/ruoyi-ui/src/assets/img/home/head_bg_logo.png new file mode 100644 index 00000000..8a250cb4 Binary files /dev/null and b/ruoyi-ui/src/assets/img/home/head_bg_logo.png differ diff --git a/ruoyi-ui/src/assets/logo-imgs/安全退出icon@2x.png b/ruoyi-ui/src/assets/logo-imgs/安全退出icon@2x.png new file mode 100644 index 00000000..1b5bd754 Binary files /dev/null and b/ruoyi-ui/src/assets/logo-imgs/安全退出icon@2x.png differ diff --git a/ruoyi-ui/src/assets/styles/sidebar.scss b/ruoyi-ui/src/assets/styles/sidebar.scss index 43d5f9a9..7358c58c 100644 --- a/ruoyi-ui/src/assets/styles/sidebar.scss +++ b/ruoyi-ui/src/assets/styles/sidebar.scss @@ -1,227 +1,228 @@ -#app { - - .main-container { - min-height: 100%; - transition: margin-left .28s; - margin-left: $base-sidebar-width; - position: relative; - } - - .sidebarHide { - margin-left: 0!important; - } - - .sidebar-container { - -webkit-transition: width .28s; - transition: width 0.28s; - width: $base-sidebar-width !important; - background-color: $base-menu-background; - height: 100%; - position: fixed; - font-size: 0px; - top: 0; - bottom: 0; - left: 0; - z-index: 1001; - overflow: hidden; - -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); - box-shadow: 2px 0 6px rgba(0,21,41,.35); - - // reset element-ui css - .horizontal-collapse-transition { - transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; - } - - .scrollbar-wrapper { - overflow-x: hidden !important; - } - - .el-scrollbar__bar.is-vertical { - right: 0px; - } - - .el-scrollbar { - height: 100%; - } - - &.has-logo { - .el-scrollbar { - height: calc(100% - 50px); - } - } - - .is-horizontal { - display: none; - } - - a { - display: inline-block; - width: 100%; - overflow: hidden; - } - - .svg-icon { - margin-right: 16px; - } - - .el-menu { - border: none; - height: 100%; - width: 100% !important; - } - - .el-menu-item, .el-submenu__title { - overflow: hidden !important; - text-overflow: ellipsis !important; - white-space: nowrap !important; - } - - // menu hover - .submenu-title-noDropdown, - .el-submenu__title { - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .theme-dark .is-active > .el-submenu__title { - color: $base-menu-color-active !important; - } - - & .nest-menu .el-submenu>.el-submenu__title, - & .el-submenu .el-menu-item { - min-width: $base-sidebar-width !important; - - &:hover { - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - & .theme-dark .nest-menu .el-submenu>.el-submenu__title, - & .theme-dark .el-submenu .el-menu-item { - background-color: $base-sub-menu-background !important; - - &:hover { - background-color: $base-sub-menu-hover !important; - } - } - } - - .hideSidebar { - .sidebar-container { - width: 54px !important; - } - - .main-container { - margin-left: 54px; - } - - .submenu-title-noDropdown { - padding: 0 !important; - position: relative; - - .el-tooltip { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - } - } - - .el-submenu { - overflow: hidden; - - &>.el-submenu__title { - padding: 0 !important; - - .svg-icon { - margin-left: 20px; - } - - } - } - - .el-menu--collapse { - .el-submenu { - &>.el-submenu__title { - &>span { - height: 0; - width: 0; - overflow: hidden; - visibility: hidden; - display: inline-block; - } - } - } - } - } - - .el-menu--collapse .el-menu .el-submenu { - min-width: $base-sidebar-width !important; - } - - // mobile responsive - .mobile { - .main-container { - margin-left: 0px; - } - - .sidebar-container { - transition: transform .28s; - width: $base-sidebar-width !important; - } - - &.hideSidebar { - .sidebar-container { - pointer-events: none; - transition-duration: 0.3s; - transform: translate3d(-$base-sidebar-width, 0, 0); - } - } - } - - .withoutAnimation { - - .main-container, - .sidebar-container { - transition: none; - } - } -} - -// when menu collapsed -.el-menu--vertical { - &>.el-menu { - .svg-icon { - margin-right: 16px; - } - } - - .nest-menu .el-submenu>.el-submenu__title, - .el-menu-item { - &:hover { - // you can use $subMenuHover - background-color: rgba(0, 0, 0, 0.06) !important; - } - } - - // the scroll bar appears when the subMenu is too long - >.el-menu--popup { - max-height: 100vh; - overflow-y: auto; - - &::-webkit-scrollbar-track-piece { - background: #d3dce6; - } - - &::-webkit-scrollbar { - width: 6px; - } - - &::-webkit-scrollbar-thumb { - background: #99a9bf; - border-radius: 20px; - } - } -} +#app { + + .main-container { + transition: margin-left .28s; + margin-left: $base-sidebar-width; + position: relative; + overflow-y: hidden; + top: 80px; + } + + .sidebarHide { + margin-left: 0!important; + } + + .sidebar-container { + -webkit-transition: width .28s; + transition: width 0.28s; + width: $base-sidebar-width !important; + background-color: $base-menu-background; + height: calc(100vh - 80px); + position: fixed; + font-size: 0px; + top: 80px; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); + box-shadow: 2px 0 6px rgba(0,21,41,.35); + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + .el-menu-item, .el-submenu__title { + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + & .theme-dark .is-active > .el-submenu__title { + color: $base-menu-color-active !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $base-sidebar-width !important; + + &:hover { + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + & .theme-dark .nest-menu .el-submenu>.el-submenu__title, + & .theme-dark .el-submenu .el-menu-item { + background-color: $base-sub-menu-background !important; + + &:hover { + background-color: $base-sub-menu-hover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $base-sidebar-width !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform .28s; + width: $base-sidebar-width !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$base-sidebar-width, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/ruoyi-ui/src/components/Header.vue b/ruoyi-ui/src/components/Header.vue new file mode 100644 index 00000000..d91fedfd --- /dev/null +++ b/ruoyi-ui/src/components/Header.vue @@ -0,0 +1,528 @@ + + + + + + diff --git a/ruoyi-ui/src/components/PageTabs.vue b/ruoyi-ui/src/components/PageTabs.vue index 133daff8..9a5842b0 100644 --- a/ruoyi-ui/src/components/PageTabs.vue +++ b/ruoyi-ui/src/components/PageTabs.vue @@ -35,7 +35,7 @@ export default { return this.tabList.length > 0 }, ...mapGetters({ - isCollapse: 'getCollapseStatus', + }), }, created(){ diff --git a/ruoyi-ui/src/components/RightFence.vue b/ruoyi-ui/src/components/RightFence.vue new file mode 100644 index 00000000..24146ba0 --- /dev/null +++ b/ruoyi-ui/src/components/RightFence.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/ruoyi-ui/src/layout/components/AppMain.vue b/ruoyi-ui/src/layout/components/AppMain.vue index 7316d900..53cf6871 100644 --- a/ruoyi-ui/src/layout/components/AppMain.vue +++ b/ruoyi-ui/src/layout/components/AppMain.vue @@ -1,20 +1,24 @@ - - + + + + + diff --git a/ruoyi-ui/src/layout/components/Sidebar/index.vue b/ruoyi-ui/src/layout/components/Sidebar/index.vue index 24fb533b..51d0839f 100644 --- a/ruoyi-ui/src/layout/components/Sidebar/index.vue +++ b/ruoyi-ui/src/layout/components/Sidebar/index.vue @@ -1,57 +1,57 @@ - - - + + + diff --git a/ruoyi-ui/src/layout/index.vue b/ruoyi-ui/src/layout/index.vue index 16366a88..39cc9743 100644 --- a/ruoyi-ui/src/layout/index.vue +++ b/ruoyi-ui/src/layout/index.vue @@ -1,5 +1,10 @@