wangmengwei 8 månader sedan
förälder
incheckning
41088b67a1
74 ändrade filer med 4159 tillägg och 1885 borttagningar
  1. 10 7
      ruoyi-ui/src/App.vue
  2. 1 2
      ruoyi-ui/src/api/login.js
  3. 5 5
      ruoyi-ui/src/api/system/config.js
  4. 4 4
      ruoyi-ui/src/api/system/dept.js
  5. 4 4
      ruoyi-ui/src/api/system/dict/data.js
  6. 6 6
      ruoyi-ui/src/api/system/dict/type.js
  7. 4 4
      ruoyi-ui/src/api/system/menu.js
  8. 4 4
      ruoyi-ui/src/api/system/notice.js
  9. 4 4
      ruoyi-ui/src/api/system/post.js
  10. 14 14
      ruoyi-ui/src/api/system/role.js
  11. 11 11
      ruoyi-ui/src/api/system/user.js
  12. BIN
      ruoyi-ui/src/assets/images/login-background.jpg
  13. BIN
      ruoyi-ui/src/assets/logo/logo.png
  14. 109 123
      ruoyi-ui/src/assets/styles/ruoyi.scss
  15. 19 6
      ruoyi-ui/src/assets/styles/sidebar.scss
  16. 18 21
      ruoyi-ui/src/assets/styles/variables.scss
  17. 26 23
      ruoyi-ui/src/components/DictTag/index.vue
  18. 4 5
      ruoyi-ui/src/components/FileUpload/index.vue
  19. 4 2
      ruoyi-ui/src/components/Hamburger/index.vue
  20. 2 2
      ruoyi-ui/src/components/HeaderSearch/index.vue
  21. 1 1
      ruoyi-ui/src/components/ImagePreview/index.vue
  22. 6 6
      ruoyi-ui/src/components/ImageUpload/index.vue
  23. 1 1
      ruoyi-ui/src/components/RightPanel/index.vue
  24. 5 30
      ruoyi-ui/src/components/RightToolbar/index.vue
  25. 14 15
      ruoyi-ui/src/components/TopNav/index.vue
  26. 31 31
      ruoyi-ui/src/directive/dialog/dragHeight.js
  27. 27 27
      ruoyi-ui/src/directive/dialog/dragWidth.js
  28. 1 1
      ruoyi-ui/src/directive/permission/hasPermi.js
  29. 1 1
      ruoyi-ui/src/directive/permission/hasRole.js
  30. 3 12
      ruoyi-ui/src/layout/components/IframeToggle/index.vue
  31. 54 24
      ruoyi-ui/src/layout/components/Navbar.vue
  32. 1 1
      ruoyi-ui/src/layout/components/Settings/index.vue
  33. 68 9
      ruoyi-ui/src/layout/components/Sidebar/Logo.vue
  34. 2 2
      ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
  35. 9 8
      ruoyi-ui/src/layout/components/TagsView/index.vue
  36. 1 1
      ruoyi-ui/src/layout/index.vue
  37. 28 0
      ruoyi-ui/src/main.js
  38. 0 2
      ruoyi-ui/src/permission.js
  39. 1 8
      ruoyi-ui/src/plugins/download.js
  40. 2 2
      ruoyi-ui/src/plugins/tab.js
  41. 4 3
      ruoyi-ui/src/settings.js
  42. 3 0
      ruoyi-ui/src/store/getters.js
  43. 0 4
      ruoyi-ui/src/store/modules/permission.js
  44. 16 1
      ruoyi-ui/src/store/modules/user.js
  45. 6 6
      ruoyi-ui/src/utils/index.js
  46. 8 4
      ruoyi-ui/src/utils/permission.js
  47. 4 1
      ruoyi-ui/src/utils/validate.js
  48. 57 53
      ruoyi-ui/src/views/dashboard/BarChart.vue
  49. 2 2
      ruoyi-ui/src/views/dashboard/LineChart.vue
  50. 1 1
      ruoyi-ui/src/views/dashboard/PieChart.vue
  51. 1 1
      ruoyi-ui/src/views/dashboard/RaddarChart.vue
  52. 2359 980
      ruoyi-ui/src/views/index.vue
  53. 216 20
      ruoyi-ui/src/views/login.vue
  54. 23 4
      ruoyi-ui/src/views/monitor/cache/index.vue
  55. 22 0
      ruoyi-ui/src/views/monitor/cache/list.vue
  56. 57 5
      ruoyi-ui/src/views/monitor/job/index.vue
  57. 26 2
      ruoyi-ui/src/views/monitor/logininfor/index.vue
  58. 55 3
      ruoyi-ui/src/views/monitor/online/index.vue
  59. 28 5
      ruoyi-ui/src/views/monitor/operlog/index.vue
  60. 1 1
      ruoyi-ui/src/views/register.vue
  61. 27 3
      ruoyi-ui/src/views/system/config/index.vue
  62. 26 3
      ruoyi-ui/src/views/system/dept/index.vue
  63. 1 1
      ruoyi-ui/src/views/system/dict/data.vue
  64. 31 5
      ruoyi-ui/src/views/system/dict/index.vue
  65. 57 4
      ruoyi-ui/src/views/system/menu/index.vue
  66. 191 38
      ruoyi-ui/src/views/system/notice/index.vue
  67. 56 5
      ruoyi-ui/src/views/system/post/index.vue
  68. 162 108
      ruoyi-ui/src/views/system/role/index.vue
  69. 1 1
      ruoyi-ui/src/views/system/user/authRole.vue
  70. 184 135
      ruoyi-ui/src/views/system/user/index.vue
  71. 7 9
      ruoyi-ui/src/views/system/user/profile/userAvatar.vue
  72. 6 19
      ruoyi-ui/src/views/system/user/profile/userInfo.vue
  73. 2 2
      ruoyi-ui/src/views/tool/build/index.vue
  74. 14 27
      ruoyi-ui/src/views/tool/gen/genInfoForm.vue

+ 10 - 7
ruoyi-ui/src/App.vue

@@ -5,20 +5,23 @@
   </div>
 </template>
 
+
+
+
 <script>
 import ThemePicker from "@/components/ThemePicker";
 
 export default {
   name: "App",
   components: { ThemePicker },
-  metaInfo() {
-    return {
-      title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
-      titleTemplate: title => {
-        return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
-      }
+    metaInfo() {
+        return {
+            title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
+            titleTemplate: title => {
+                return title ? `${title} - ${process.env.VUE_APP_TITLE}` : process.env.VUE_APP_TITLE
+            }
+        }
     }
-  }
 };
 </script>
 <style scoped>

+ 1 - 2
ruoyi-ui/src/api/login.js

@@ -11,8 +11,7 @@ export function login(username, password, code, uuid) {
   return request({
     url: '/login',
     headers: {
-      isToken: false,
-      repeatSubmit: false
+      isToken: false
     },
     method: 'post',
     data: data

+ 5 - 5
ruoyi-ui/src/api/system/config.js

@@ -37,8 +37,8 @@ export function addConfig(data) {
 // 修改参数配置
 export function updateConfig(data) {
   return request({
-    url: '/system/config',
-    method: 'put',
+    url: '/system/config/put',
+    method: 'post',
     data: data
   })
 }
@@ -46,8 +46,8 @@ export function updateConfig(data) {
 // 删除参数配置
 export function delConfig(configId) {
   return request({
-    url: '/system/config/' + configId,
-    method: 'delete'
+    url: '/system/config/delete/' + configId,
+    method: 'get'
   })
 }
 
@@ -55,6 +55,6 @@ export function delConfig(configId) {
 export function refreshCache() {
   return request({
     url: '/system/config/refreshCache',
-    method: 'delete'
+    method: 'get'
   })
 }

+ 4 - 4
ruoyi-ui/src/api/system/dept.js

@@ -37,8 +37,8 @@ export function addDept(data) {
 // 修改部门
 export function updateDept(data) {
   return request({
-    url: '/system/dept',
-    method: 'put',
+    url: '/system/dept/put',
+    method: 'post',
     data: data
   })
 }
@@ -46,7 +46,7 @@ export function updateDept(data) {
 // 删除部门
 export function delDept(deptId) {
   return request({
-    url: '/system/dept/' + deptId,
-    method: 'delete'
+    url: '/system/dept/delete/' + deptId,
+    method: 'get'
   })
 }

+ 4 - 4
ruoyi-ui/src/api/system/dict/data.js

@@ -37,8 +37,8 @@ export function addData(data) {
 // 修改字典数据
 export function updateData(data) {
   return request({
-    url: '/system/dict/data',
-    method: 'put',
+    url: '/system/dict/data/put',
+    method: 'post',
     data: data
   })
 }
@@ -46,7 +46,7 @@ export function updateData(data) {
 // 删除字典数据
 export function delData(dictCode) {
   return request({
-    url: '/system/dict/data/' + dictCode,
-    method: 'delete'
+    url: '/system/dict/data/delete/' + dictCode,
+    method: 'get'
   })
 }

+ 6 - 6
ruoyi-ui/src/api/system/dict/type.js

@@ -29,8 +29,8 @@ export function addType(data) {
 // 修改字典类型
 export function updateType(data) {
   return request({
-    url: '/system/dict/type',
-    method: 'put',
+    url: '/system/dict/type/put',
+    method: 'post',
     data: data
   })
 }
@@ -38,16 +38,16 @@ export function updateType(data) {
 // 删除字典类型
 export function delType(dictId) {
   return request({
-    url: '/system/dict/type/' + dictId,
-    method: 'delete'
+    url: '/system/dict/type/delete/' + dictId,
+    method: 'get'
   })
 }
 
 // 刷新字典缓存
 export function refreshCache() {
   return request({
-    url: '/system/dict/type/refreshCache',
-    method: 'delete'
+    url: '/system/dict/type/refreshCache/delete',
+    method: 'get'
   })
 }
 

+ 4 - 4
ruoyi-ui/src/api/system/menu.js

@@ -45,8 +45,8 @@ export function addMenu(data) {
 // 修改菜单
 export function updateMenu(data) {
   return request({
-    url: '/system/menu',
-    method: 'put',
+    url: '/system/menu/put',
+    method: 'post',
     data: data
   })
 }
@@ -54,7 +54,7 @@ export function updateMenu(data) {
 // 删除菜单
 export function delMenu(menuId) {
   return request({
-    url: '/system/menu/' + menuId,
-    method: 'delete'
+    url: '/system/menu/delete/' + menuId,
+    method: 'get'
   })
 }

+ 4 - 4
ruoyi-ui/src/api/system/notice.js

@@ -29,8 +29,8 @@ export function addNotice(data) {
 // 修改公告
 export function updateNotice(data) {
   return request({
-    url: '/system/notice',
-    method: 'put',
+    url: '/system/notice/put',
+    method: 'post',
     data: data
   })
 }
@@ -38,7 +38,7 @@ export function updateNotice(data) {
 // 删除公告
 export function delNotice(noticeId) {
   return request({
-    url: '/system/notice/' + noticeId,
-    method: 'delete'
+    url: '/system/notice/delete/' + noticeId,
+    method: 'get'
   })
 }

+ 4 - 4
ruoyi-ui/src/api/system/post.js

@@ -29,8 +29,8 @@ export function addPost(data) {
 // 修改岗位
 export function updatePost(data) {
   return request({
-    url: '/system/post',
-    method: 'put',
+    url: '/system/post/put',
+    method: 'post',
     data: data
   })
 }
@@ -38,7 +38,7 @@ export function updatePost(data) {
 // 删除岗位
 export function delPost(postId) {
   return request({
-    url: '/system/post/' + postId,
-    method: 'delete'
+    url: '/system/post/delete/' + postId,
+    method: 'get'
   })
 }

+ 14 - 14
ruoyi-ui/src/api/system/role.js

@@ -29,8 +29,8 @@ export function addRole(data) {
 // 修改角色
 export function updateRole(data) {
   return request({
-    url: '/system/role',
-    method: 'put',
+    url: '/system/role/put',
+    method: 'post',
     data: data
   })
 }
@@ -38,8 +38,8 @@ export function updateRole(data) {
 // 角色数据权限
 export function dataScope(data) {
   return request({
-    url: '/system/role/dataScope',
-    method: 'put',
+    url: '/system/role/dataScope/put',
+    method: 'post',
     data: data
   })
 }
@@ -51,8 +51,8 @@ export function changeRoleStatus(roleId, status) {
     status
   }
   return request({
-    url: '/system/role/changeStatus',
-    method: 'put',
+    url: '/system/role/changeStatus/put',
+    method: 'post',
     data: data
   })
 }
@@ -60,8 +60,8 @@ export function changeRoleStatus(roleId, status) {
 // 删除角色
 export function delRole(roleId) {
   return request({
-    url: '/system/role/' + roleId,
-    method: 'delete'
+    url: '/system/role/delete/' + roleId,
+    method: 'get'
   })
 }
 
@@ -86,8 +86,8 @@ export function unallocatedUserList(query) {
 // 取消用户授权角色
 export function authUserCancel(data) {
   return request({
-    url: '/system/role/authUser/cancel',
-    method: 'put',
+    url: '/system/role/authUser/cancel/put',
+    method: 'post',
     data: data
   })
 }
@@ -95,8 +95,8 @@ export function authUserCancel(data) {
 // 批量取消用户授权角色
 export function authUserCancelAll(data) {
   return request({
-    url: '/system/role/authUser/cancelAll',
-    method: 'put',
+    url: '/system/role/authUser/cancelAll/put',
+    method: 'post',
     params: data
   })
 }
@@ -104,8 +104,8 @@ export function authUserCancelAll(data) {
 // 授权用户选择
 export function authUserSelectAll(data) {
   return request({
-    url: '/system/role/authUser/selectAll',
-    method: 'put',
+    url: '/system/role/authUser/selectAll/put',
+    method: 'post',
     params: data
   })
 }

+ 11 - 11
ruoyi-ui/src/api/system/user.js

@@ -30,8 +30,8 @@ export function addUser(data) {
 // 修改用户
 export function updateUser(data) {
   return request({
-    url: '/system/user',
-    method: 'put',
+    url: '/system/user/put',
+    method: 'post',
     data: data
   })
 }
@@ -39,8 +39,8 @@ export function updateUser(data) {
 // 删除用户
 export function delUser(userId) {
   return request({
-    url: '/system/user/' + userId,
-    method: 'delete'
+    url: '/system/user/delete/' + userId,
+    method: 'get'
   })
 }
 
@@ -52,7 +52,7 @@ export function resetUserPwd(userId, password) {
   }
   return request({
     url: '/system/user/resetPwd',
-    method: 'put',
+    method: 'post',
     data: data
   })
 }
@@ -65,7 +65,7 @@ export function changeUserStatus(userId, status) {
   }
   return request({
     url: '/system/user/changeStatus',
-    method: 'put',
+    method: 'post',
     data: data
   })
 }
@@ -81,8 +81,8 @@ export function getUserProfile() {
 // 修改用户个人信息
 export function updateUserProfile(data) {
   return request({
-    url: '/system/user/profile',
-    method: 'put',
+    url: '/system/user/profile/put',
+    method: 'post',
     data: data
   })
 }
@@ -95,7 +95,7 @@ export function updateUserPwd(oldPassword, newPassword) {
   }
   return request({
     url: '/system/user/profile/updatePwd',
-    method: 'put',
+    method: 'post',
     params: data
   })
 }
@@ -120,8 +120,8 @@ export function getAuthRole(userId) {
 // 保存授权角色
 export function updateAuthRole(data) {
   return request({
-    url: '/system/user/authRole',
-    method: 'put',
+    url: '/system/user/authRole/put',
+    method: 'post',
     params: data
   })
 }

BIN
ruoyi-ui/src/assets/images/login-background.jpg


BIN
ruoyi-ui/src/assets/logo/logo.png


+ 109 - 123
ruoyi-ui/src/assets/styles/ruoyi.scss

@@ -1,143 +1,129 @@
-/**
-* 通用css样式布局处理
-* Copyright (c) 2019 ruoyi
-*/
+ /**
+ * 通用css样式布局处理
+ * Copyright (c) 2019 ruoyi
+ */
 
-/** 基础通用 **/
+ /** 基础通用 **/
 .pt5 {
-  padding-top: 5px;
+	padding-top: 5px;
 }
-
 .pr5 {
-  padding-right: 5px;
+	padding-right: 5px;
 }
-
 .pb5 {
-  padding-bottom: 5px;
+	padding-bottom: 5px;
 }
-
 .mt5 {
-  margin-top: 5px;
+	margin-top: 5px;
 }
-
 .mr5 {
-  margin-right: 5px;
+	margin-right: 5px;
 }
-
 .mb5 {
-  margin-bottom: 5px;
+	margin-bottom: 5px;
 }
-
 .mb8 {
-  margin-bottom: 8px;
+	margin-bottom: 8px;
 }
-
 .ml5 {
-  margin-left: 5px;
+	margin-left: 5px;
 }
-
 .mt10 {
-  margin-top: 10px;
+	margin-top: 10px;
 }
-
 .mr10 {
-  margin-right: 10px;
+	margin-right: 10px;
 }
-
 .mb10 {
-  margin-bottom: 10px;
+	margin-bottom: 10px;
 }
 .ml10 {
 	margin-left: 10px;
 }
-
 .mt20 {
-  margin-top: 20px;
+	margin-top: 20px;
 }
-
 .mr20 {
-  margin-right: 20px;
+	margin-right: 20px;
 }
-
 .mb20 {
-  margin-bottom: 20px;
+	margin-bottom: 20px;
 }
 .ml20 {
 	margin-left: 20px;
 }
 
 .h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 {
-  font-family: inherit;
-  font-weight: 500;
-  line-height: 1.1;
-  color: inherit;
+	font-family: inherit;
+	font-weight: 500;
+	line-height: 1.1;
+	color: inherit;
 }
 
 .el-message-box__status + .el-message-box__message{
-  word-break: break-word;
+    word-break: break-word;
 }
 
 .el-dialog:not(.is-fullscreen) {
-  margin-top: 6vh !important;
+	margin-top: 6vh !important;
 }
 
 .el-dialog__wrapper.scrollbar .el-dialog .el-dialog__body {
-  overflow: auto;
-  overflow-x: hidden;
-  max-height: 70vh;
-  padding: 10px 20px 0;
+    overflow: auto;
+	overflow-x: hidden;
+	max-height: 70vh;
+	padding: 10px 20px 0;
 }
 
 .el-table {
-  .el-table__header-wrapper, .el-table__fixed-header-wrapper {
-    th {
-      word-break: break-word;
-      background-color: #f8f8f9;
-      color: #515a6e;
-      height: 40px;
-      font-size: 13px;
-    }
-  }
-
-  .el-table__body-wrapper {
-    .el-button [class*="el-icon-"] + span {
-      margin-left: 1px;
-    }
-  }
+	.el-table__header-wrapper, .el-table__fixed-header-wrapper {
+		th {
+			word-break: break-word;
+			background-color: #f8f8f9;
+			color: #515a6e;
+			height: 40px;
+			font-size: 13px;
+		}
+	}
+	.el-table__body-wrapper {
+		.el-button [class*="el-icon-"] + span {
+			margin-left: 1px;
+		}
+	}
 }
 
 /** 表单布局 **/
 .form-header {
-  font-size: 15px;
-  color: #6379bb;
-  border-bottom: 1px solid #ddd;
-  margin: 8px 10px 25px 10px;
-  padding-bottom: 5px
+    font-size:15px;
+	color:#6379bb;
+	border-bottom:1px solid #ddd;
+	margin:8px 10px 25px 10px;
+	padding-bottom:5px
 }
 
 /** 表格布局 **/
 .pagination-container {
-  position: relative;
-  height: 25px;
-  margin-bottom: 10px;
-  margin-top: 15px;
-  padding: 10px 20px !important;
+	position: relative;
+	height: 25px;
+	margin-bottom: 10px;
+	margin-top: 15px;
+	padding: 10px 20px !important;
 }
 
 /* tree border */
 .tree-border {
-  margin-top: 5px;
-  border: 1px solid #e5e6e7;
-  background: #FFFFFF none;
-  border-radius: 4px;
+    margin-top: 5px;
+    border: 1px solid #e5e6e7;
+    background: #FFFFFF none;
+    border-radius:4px;
 }
 
 .pagination-container .el-pagination {
-  right: 0;
-  position: absolute;
+	right: 0;
+	position: absolute;
 }
 
-@media (max-width: 768px) {
+@media ( max-width : 768px) {
   .pagination-container .el-pagination > .el-pagination__jump {
     display: none !important;
   }
@@ -147,9 +133,9 @@
 }
 
 .el-table .fixed-width .el-button--mini {
-  padding-left: 0;
-  padding-right: 0;
-  width: inherit;
+	padding-left: 0;
+	padding-right: 0;
+	width: inherit;
 }
 
 /** 表格更多操作下拉样式 */
@@ -159,51 +145,51 @@
 }
 
 .el-table .el-dropdown, .el-icon-arrow-down {
-  font-size: 12px;
+	font-size: 12px;
 }
 
 .el-tree-node__content > .el-checkbox {
-  margin-right: 8px;
+	margin-right: 8px;
 }
 
 .list-group-striped > .list-group-item {
-  border-left: 0;
-  border-right: 0;
-  border-radius: 0;
-  padding-left: 0;
-  padding-right: 0;
+	border-left: 0;
+	border-right: 0;
+	border-radius: 0;
+	padding-left: 0;
+	padding-right: 0;
 }
 
 .list-group {
-  padding-left: 0px;
-  list-style: none;
+	padding-left: 0px;
+	list-style: none;
 }
 
 .list-group-item {
-  border-bottom: 1px solid #e7eaec;
-  border-top: 1px solid #e7eaec;
-  margin-bottom: -1px;
-  padding: 11px 0px;
-  font-size: 13px;
+	border-bottom: 1px solid #e7eaec;
+	border-top: 1px solid #e7eaec;
+	margin-bottom: -1px;
+	padding: 11px 0px;
+	font-size: 13px;
 }
 
 .pull-right {
-  float: right !important;
+	float: right !important;
 }
 
 .el-card__header {
-  padding: 14px 15px 7px;
-  min-height: 40px;
+	padding: 14px 15px 7px;
+	min-height: 40px;
 }
 
 .el-card__body {
-  padding: 15px 20px 20px 20px;
+	padding: 15px 20px 20px 20px;
 }
 
 .card-box {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-bottom: 10px;
+	padding-right: 15px;
+	padding-left: 15px;
+	margin-bottom: 10px;
 }
 
 /* button color */
@@ -229,63 +215,63 @@
 
 /* text color */
 .text-navy {
-  color: #1ab394;
+	color: #1ab394;
 }
 
 .text-primary {
-  color: inherit;
+	color: inherit;
 }
 
 .text-success {
-  color: #1c84c6;
+	color: #1c84c6;
 }
 
 .text-info {
-  color: #23c6c8;
+	color: #23c6c8;
 }
 
 .text-warning {
-  color: #f8ac59;
+	color: #f8ac59;
 }
 
 .text-danger {
-  color: #ed5565;
+	color: #ed5565;
 }
 
 .text-muted {
-  color: #888888;
+	color: #888888;
 }
 
 /* image */
 .img-circle {
-  border-radius: 50%;
+	border-radius: 50%;
 }
 
 .img-lg {
-  width: 120px;
-  height: 120px;
+	width: 120px;
+	height: 120px;
 }
 
 .avatar-upload-preview {
-  position: relative;
-  top: 50%;
-  left: 50%;
-  transform: translate(-50%, -50%);
-  width: 200px;
-  height: 200px;
-  border-radius: 50%;
-  box-shadow: 0 0 4px #ccc;
-  overflow: hidden;
+	position: relative;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%, -50%);
+	width: 200px;
+	height: 200px;
+	border-radius: 50%;
+	box-shadow: 0 0 4px #ccc;
+	overflow: hidden;
 }
 
 /* 拖拽列样式 */
-.sortable-ghost {
-  opacity: .8;
-  color: #fff !important;
-  background: #42b983 !important;
+.sortable-ghost{
+	opacity: .8;
+	color: #fff!important;
+	background: #42b983!important;
 }
 
 .top-right-btn {
-  position: relative;
-  float: right;
+	position: relative;
+	float: right;
 }

+ 19 - 6
ruoyi-ui/src/assets/styles/sidebar.scss

@@ -46,7 +46,7 @@
 
     &.has-logo {
       .el-scrollbar {
-        height: calc(100% - 50px);
+        height: calc(100% - 230px);
       }
     }
 
@@ -75,17 +75,29 @@
       text-overflow: ellipsis !important;
       white-space: nowrap !important;
     }
-
+   .el-menu-item.is-active{
+     color: #fff !important;
+     background-color: #6086EF!important;
+     // background: linear-gradient(90deg, #2B51E0, #627DE4) !important;
+     opacity: 0.7;
+     // margin: 0 20px;
+     // border-radius: 4px;
+   }
     // menu hover
     .submenu-title-noDropdown,
     .el-submenu__title {
       &:hover {
-        background-color: rgba(0, 0, 0, 0.06) !important;
+        background-color: #f3f4f6 !important;
+		    color:#627DE4 !important;
       }
     }
 
     & .theme-dark .is-active > .el-submenu__title {
       color: $base-menu-color-active !important;
+	  // border-left: 2px solid #04BFA1;
+	  // background-color: #dbefed !important;
+	  // border-radius: 5px;s
+	  // margin: 0 5px;
     }
 
     & .nest-menu .el-submenu>.el-submenu__title,
@@ -93,7 +105,7 @@
       min-width: $base-sidebar-width !important;
 
       &:hover {
-        background-color: rgba(0, 0, 0, 0.06) !important;
+        // background-color: #f3f4f6 !important;
       }
     }
 
@@ -102,7 +114,8 @@
       background-color: $base-sub-menu-background !important;
 
       &:hover {
-        background-color: $base-sub-menu-hover !important;
+        // background-color: rgba(255,255,255,0.5)!important;
+		color: #627DE4 !important;
       }
     }
   }
@@ -208,7 +221,7 @@
 
   // the scroll bar appears when the subMenu is too long
   >.el-menu--popup {
-    max-height: 100vh;
+     max-height: 100vh;
     overflow-y: auto;
 
     &::-webkit-scrollbar-track-piece {

+ 18 - 21
ruoyi-ui/src/assets/styles/variables.scss

@@ -9,32 +9,29 @@ $yellow:#FEC171;
 $panGreen: #30B08F;
 
 // 默认菜单主题风格
-$base-menu-color:#bfcbd9;
-$base-menu-color-active:#f4f4f5;
-$base-menu-background:#304156;
-$base-logo-title-color: #ffffff;
+// $base-menu-color:#bfcbd9;
+// $base-menu-color-active:#f4f4f5;
+// $base-menu-background:#304156;
+// $base-logo-title-color: #ffffff;
 
-$base-menu-light-color:rgba(0,0,0,.70);
-$base-menu-light-background:#ffffff;
-$base-logo-light-title-color: #001529;
+// $base-menu-light-color:rgba(0,0,0,.70);
+// $base-menu-light-background:#ffffff;
+// $base-logo-light-title-color: #001529;
 
-$base-sub-menu-background:#1f2d3d;
-$base-sub-menu-hover:#001528;
+// $base-sub-menu-background:#1f2d3d;
+// $base-sub-menu-hover:#001528;
 
 // 自定义暗色菜单风格
-/**
-$base-menu-color:hsla(0,0%,100%,.65);
-$base-menu-color-active:#fff;
-$base-menu-background:#001529;
-$base-logo-title-color: #ffffff;
-
+// *
+$base-menu-color:#fff;
+$base-menu-color-active:#627DE4;
+$base-menu-background:#3464EB;
+$base-logo-title-color: #fff;
 $base-menu-light-color:rgba(0,0,0,.70);
-$base-menu-light-background:#ffffff;
-$base-logo-light-title-color: #001529;
-
-$base-sub-menu-background:#000c17;
-$base-sub-menu-hover:#001528;
-*/
+$base-menu-light-background:#3464EB;
+$base-logo-light-title-color: #fff;
+$base-sub-menu-background:#3464EB;
+$base-sub-menu-hover:#6086EF;
 
 $base-sidebar-width: 200px;
 

+ 26 - 23
ruoyi-ui/src/components/DictTag/index.vue

@@ -7,7 +7,7 @@
           :key="item.value"
           :index="index"
           :class="item.raw.cssClass"
-          >{{ item.label + ' ' }}</span
+          >{{ item.label + " " }}</span
         >
         <el-tag
           v-else
@@ -17,7 +17,7 @@
           :type="item.raw.listClass == 'primary' ? '' : item.raw.listClass"
           :class="item.raw.cssClass"
         >
-          {{ item.label + ' ' }}
+          {{ item.label + " " }}
         </el-tag>
       </template>
     </template>
@@ -40,10 +40,6 @@ export default {
     showValue: {
       type: Boolean,
       default: true,
-    },
-    separator: {
-      type: String,
-      default: ","
     }
   },
   data() {
@@ -53,32 +49,39 @@ export default {
   },
   computed: {
     values() {
-      if (this.value === null || typeof this.value === 'undefined' || this.value === '') return []
-      return Array.isArray(this.value) ? this.value.map(item => '' + item) : String(this.value).split(this.separator)
+      if (this.value !== null && typeof this.value !== "undefined") {
+        return Array.isArray(this.value) ? this.value : [String(this.value)];
+      } else {
+        return [];
+      }
     },
     unmatch() {
-      this.unmatchArray = []
-      // 没有value不显示
-      if (this.value === null || typeof this.value === 'undefined' || this.value === '' || this.options.length === 0) return false
-      // 传入值为数组
-      let unmatch = false // 添加一个标志来判断是否有未匹配项
-      this.values.forEach(item => {
-        if (!this.options.some(v => v.value === item)) {
-          this.unmatchArray.push(item)
-          unmatch = true // 如果有未匹配项,将标志设置为true
+      this.unmatchArray = [];
+      if (this.value !== null && typeof this.value !== "undefined") {
+        // 传入值为非数组
+        if (!Array.isArray(this.value)) {
+          if (this.options.some((v) => v.value == this.value)) return false;
+          this.unmatchArray.push(this.value);
+          return true;
         }
-      })
-      return unmatch // 返回标志的值
+        // 传入值为Array
+        this.value.forEach((item) => {
+          if (!this.options.some((v) => v.value == item))
+            this.unmatchArray.push(item);
+        });
+        return true;
+      }
+      // 没有value不显示
+      return false;
     },
-
   },
   filters: {
     handleArray(array) {
-      if (array.length === 0) return '';
+      if (array.length === 0) return "";
       return array.reduce((pre, cur) => {
-        return pre + ' ' + cur;
+        return pre + " " + cur;
       })
-    },
+    }
   }
 };
 </script>

+ 4 - 5
ruoyi-ui/src/components/FileUpload/index.vue

@@ -55,12 +55,12 @@ export default {
     // 大小限制(MB)
     fileSize: {
       type: Number,
-      default: 5,
+      default: 200,
     },
     // 文件类型, 例如['png', 'jpg', 'jpeg']
     fileType: {
       type: Array,
-      default: () => ["doc", "xls", "ppt", "txt", "pdf"],
+      default: () => ["doc", "xls", "ppt", "txt", "pdf","wgt",'apk'],
     },
     // 是否显示提示
     isShowTip: {
@@ -142,7 +142,7 @@ export default {
     // 上传失败
     handleUploadError(err) {
       this.$modal.msgError("上传文件失败,请重试");
-      this.$modal.closeLoading();
+      this.$modal.closeLoading()
     },
     // 上传成功回调
     handleUploadSuccess(res, file) {
@@ -174,11 +174,10 @@ export default {
     },
     // 获取文件名称
     getFileName(name) {
-      // 如果是url那么取最后的名字 如果不是直接返回
       if (name.lastIndexOf("/") > -1) {
         return name.slice(name.lastIndexOf("/") + 1);
       } else {
-        return name;
+        return "";
       }
     },
     // 对象转成指定字符串分隔

+ 4 - 2
ruoyi-ui/src/components/Hamburger/index.vue

@@ -1,6 +1,8 @@
 <template>
   <div style="padding: 0 15px;" @click="toggleClick">
-    <svg
+    <img  src="../../assets/images/icon_htgl_lbtb.png" alt="" style="width: 15px;height: 15px;" >
+
+   <!-- <svg
       :class="{'is-active':isActive}"
       class="hamburger"
       viewBox="0 0 1024 1024"
@@ -9,7 +11,7 @@
       height="64"
     >
       <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" />
-    </svg>
+    </svg> -->
   </div>
 </template>
 

+ 2 - 2
ruoyi-ui/src/components/HeaderSearch/index.vue

@@ -107,7 +107,7 @@ export default {
     },
     // Filter out the routes that can be displayed in the sidebar
     // And generate the internationalized title
-    generateRoutes(routes, basePath = '/', prefixTitle = []) {
+    generateRoutes(routes, basePath = '/', prefixTitle = [], query = {}) {
       let res = []
 
       for (const router of routes) {
@@ -135,7 +135,7 @@ export default {
 
         // recursive child routes
         if (router.children) {
-          const tempRoutes = this.generateRoutes(router.children, data.path, data.title)
+          const tempRoutes = this.generateRoutes(router.children, data.path, data.title, data.query)
           if (tempRoutes.length >= 1) {
             res = [...res, ...tempRoutes]
           }

+ 1 - 1
ruoyi-ui/src/components/ImagePreview/index.vue

@@ -39,7 +39,7 @@ export default {
       if (isExternal(real_src)) {
         return real_src;
       }
-      return process.env.VUE_APP_BASE_API + real_src;
+      return  process.env.VUE_APP_BASE_API + real_src;
     },
     realSrcList() {
       if (!this.src) {

+ 6 - 6
ruoyi-ui/src/components/ImageUpload/index.vue

@@ -19,7 +19,7 @@
     >
       <i class="el-icon-plus"></i>
     </el-upload>
-
+    
     <!-- 上传提示 -->
     <div class="el-upload__tip" slot="tip" v-if="showTip">
       请上传
@@ -51,12 +51,12 @@ export default {
     // 图片数量限制
     limit: {
       type: Number,
-      default: 5,
+      default:20,
     },
     // 大小限制(MB)
     fileSize: {
        type: Number,
-      default: 5,
+      default: 900,
     },
     // 文件类型, 例如['png', 'jpg', 'jpeg']
     fileType: {
@@ -168,7 +168,7 @@ export default {
     // 删除图片
     handleDelete(file) {
       const findex = this.fileList.map(f => f.name).indexOf(file.name);
-      if (findex > -1) {
+      if(findex > -1) {
         this.fileList.splice(findex, 1);
         this.$emit("input", this.listToString(this.fileList));
       }
@@ -219,8 +219,8 @@ export default {
 }
 
 ::v-deep .el-list-enter, .el-list-leave-active {
-  opacity: 0;
-  transform: translateY(0);
+    opacity: 0;
+    transform: translateY(0);
 }
 </style>
 

+ 1 - 1
ruoyi-ui/src/components/RightPanel/index.vue

@@ -74,7 +74,7 @@ export default {
 .rightPanel {
   width: 100%;
   max-width: 260px;
-  height: 100vh;
+  
   position: fixed;
   top: 0;
   right: 0;

+ 5 - 30
ruoyi-ui/src/components/RightToolbar/index.vue

@@ -8,17 +8,7 @@
         <el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
       </el-tooltip>
       <el-tooltip class="item" effect="dark" content="显隐列" placement="top" v-if="columns">
-        <el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" v-if="showColumnsType == 'transfer'"/>
-        <el-dropdown trigger="click" :hide-on-click="false" style="padding-left: 12px" v-if="showColumnsType == 'checkbox'">
-          <el-button size="mini" circle icon="el-icon-menu" />
-          <el-dropdown-menu slot="dropdown">
-            <template v-for="item in columns">
-              <el-dropdown-item :key="item.key">
-                <el-checkbox :checked="item.visible" @change="checkboxChange($event, item.label)" :label="item.label" />
-              </el-dropdown-item>
-            </template>
-          </el-dropdown-menu>
-        </el-dropdown>
+        <el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
       </el-tooltip>
     </el-row>
     <el-dialog :title="title" :visible.sync="open" append-to-body>
@@ -45,26 +35,17 @@ export default {
     };
   },
   props: {
-    /* 是否显示检索条件 */
     showSearch: {
       type: Boolean,
       default: true,
     },
-    /* 显隐列信息 */
     columns: {
       type: Array,
     },
-    /* 是否显示检索图标 */
     search: {
       type: Boolean,
       default: true,
     },
-    /* 显隐列类型(transfer穿梭框、checkbox复选框) */
-    showColumnsType: {
-      type: String,
-      default: "checkbox",
-    },
-    /* 右外边距 */
     gutter: {
       type: Number,
       default: 10,
@@ -80,12 +61,10 @@ export default {
     }
   },
   created() {
-    if (this.showColumnsType == 'transfer') {
-      // 显隐列初始默认隐藏列
-      for (let item in this.columns) {
-        if (this.columns[item].visible === false) {
-          this.value.push(parseInt(item));
-        }
+    // 显隐列初始默认隐藏列
+    for (let item in this.columns) {
+      if (this.columns[item].visible === false) {
+        this.value.push(parseInt(item));
       }
     }
   },
@@ -109,10 +88,6 @@ export default {
     showColumn() {
       this.open = true;
     },
-    // 勾选
-    checkboxChange(event, label) {
-      this.columns.filter(item => item.label == label)[0].visible = event;
-    }
   },
 };
 </script>

+ 14 - 15
ruoyi-ui/src/components/TopNav/index.vue

@@ -5,12 +5,13 @@
     @select="handleSelect"
   >
     <template v-for="(item, index) in topMenus">
-      <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber">
-        <svg-icon
-        v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
-        :icon-class="item.meta.icon"/>
-        {{ item.meta.title }}
-      </el-menu-item>
+      <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber"
+        ><svg-icon
+          v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
+          :icon-class="item.meta.icon"
+        />
+        {{ item.meta.title }}</el-menu-item
+      >
     </template>
 
     <!-- 顶部菜单超出数量折叠 -->
@@ -20,12 +21,10 @@
         <el-menu-item
           :index="item.path"
           :key="index"
-          v-if="index >= visibleNumber">
-          <svg-icon
-            v-if="item.meta && item.meta.icon && item.meta.icon !== '#'"
-            :icon-class="item.meta.icon"/>
-          {{ item.meta.title }}
-        </el-menu-item>
+          v-if="index >= visibleNumber"
+          ><svg-icon :icon-class="item.meta.icon" />
+          {{ item.meta.title }}</el-menu-item
+        >
       </template>
     </el-submenu>
   </el-menu>
@@ -35,7 +34,7 @@
 import { constantRoutes } from "@/router";
 
 // 隐藏侧边栏路由
-const hideList = ['/index', '/user/profile'];
+const hideList = ['/user/profile'];
 
 export default {
   data() {
@@ -57,9 +56,9 @@ export default {
         if (menu.hidden !== true) {
           // 兼容顶部栏一级菜单内部跳转
           if (menu.path === "/") {
-            topMenus.push(menu.children[0]);
+              topMenus.push(menu.children[0]);
           } else {
-            topMenus.push(menu);
+              topMenus.push(menu);
           }
         }
       });

+ 31 - 31
ruoyi-ui/src/directive/dialog/dragHeight.js

@@ -1,34 +1,34 @@
 /**
- * v-dialogDragWidth 可拖动弹窗高度(右下角)
- * Copyright (c) 2019 ruoyi
- */
+* v-dialogDragWidth 可拖动弹窗高度(右下角)
+* Copyright (c) 2019 ruoyi
+*/
 
 export default {
-  bind(el) {
-    const dragDom = el.querySelector('.el-dialog');
-    const lineEl = document.createElement('div');
-    lineEl.style = 'width: 6px; background: inherit; height: 10px; position: absolute; right: 0; bottom: 0; margin: auto; z-index: 1; cursor: nwse-resize;';
-    lineEl.addEventListener('mousedown',
-      function(e) {
-        // 鼠标按下,计算当前元素距离可视区的距离
-        const disX = e.clientX - el.offsetLeft;
-        const disY = e.clientY - el.offsetTop;
-        // 当前宽度 高度
-        const curWidth = dragDom.offsetWidth;
-        const curHeight = dragDom.offsetHeight;
-        document.onmousemove = function(e) {
-          e.preventDefault(); // 移动时禁用默认事件
-          // 通过事件委托,计算移动的距离
-          const xl = e.clientX - disX;
-          const yl = e.clientY - disY
-          dragDom.style.width = `${curWidth + xl}px`;
-          dragDom.style.height = `${curHeight + yl}px`;
-        };
-        document.onmouseup = function(e) {
-          document.onmousemove = null;
-          document.onmouseup = null;
-        };
-      }, false);
-    dragDom.appendChild(lineEl);
-  }
-}
+    bind(el) {
+        const dragDom = el.querySelector('.el-dialog');
+        const lineEl = document.createElement('div');
+        lineEl.style = 'width: 6px; background: inherit; height: 10px; position: absolute; right: 0; bottom: 0; margin: auto; z-index: 1; cursor: nwse-resize;';
+        lineEl.addEventListener('mousedown',
+            function(e) {
+                // 鼠标按下,计算当前元素距离可视区的距离
+                const disX = e.clientX - el.offsetLeft;
+                const disY = e.clientY - el.offsetTop;
+                // 当前宽度 高度
+                const curWidth = dragDom.offsetWidth;
+                const curHeight = dragDom.offsetHeight;
+                document.onmousemove = function(e) {
+                    e.preventDefault(); // 移动时禁用默认事件
+                    // 通过事件委托,计算移动的距离
+                    const xl = e.clientX - disX;
+                    const yl = e.clientY - disY
+                    dragDom.style.width = `${curWidth + xl}px`;
+                    dragDom.style.height = `${curHeight + yl}px`;
+                };
+                document.onmouseup = function(e) {
+                    document.onmousemove = null;
+                    document.onmouseup = null;
+                };
+            }, false);
+        dragDom.appendChild(lineEl);
+    }
+}

+ 27 - 27
ruoyi-ui/src/directive/dialog/dragWidth.js

@@ -1,30 +1,30 @@
 /**
- * v-dialogDragWidth 可拖动弹窗宽度(右侧边)
- * Copyright (c) 2019 ruoyi
- */
+* v-dialogDragWidth 可拖动弹窗宽度(右侧边)
+* Copyright (c) 2019 ruoyi
+*/
 
 export default {
-  bind(el) {
-    const dragDom = el.querySelector('.el-dialog');
-    const lineEl = document.createElement('div');
-    lineEl.style = 'width: 5px; background: inherit; height: 80%; position: absolute; right: 0; top: 0; bottom: 0; margin: auto; z-index: 1; cursor: w-resize;';
-    lineEl.addEventListener('mousedown',
-      function (e) {
-        // 鼠标按下,计算当前元素距离可视区的距离
-        const disX = e.clientX - el.offsetLeft;
-        // 当前宽度
-        const curWidth = dragDom.offsetWidth;
-        document.onmousemove = function (e) {
-          e.preventDefault(); // 移动时禁用默认事件
-          // 通过事件委托,计算移动的距离
-          const l = e.clientX - disX;
-          dragDom.style.width = `${curWidth + l}px`;
-        };
-        document.onmouseup = function (e) {
-          document.onmousemove = null;
-          document.onmouseup = null;
-        };
-      }, false);
-    dragDom.appendChild(lineEl);
-  }
-}
+    bind(el) {
+        const dragDom = el.querySelector('.el-dialog');
+        const lineEl = document.createElement('div');
+        lineEl.style = 'width: 5px; background: inherit; height: 80%; position: absolute; right: 0; top: 0; bottom: 0; margin: auto; z-index: 1; cursor: w-resize;';
+        lineEl.addEventListener('mousedown',
+            function (e) {
+                // 鼠标按下,计算当前元素距离可视区的距离
+                const disX = e.clientX - el.offsetLeft;
+                // 当前宽度
+                const curWidth = dragDom.offsetWidth;
+                document.onmousemove = function (e) {
+                    e.preventDefault(); // 移动时禁用默认事件
+                    // 通过事件委托,计算移动的距离
+                    const l = e.clientX - disX;
+                    dragDom.style.width = `${curWidth + l}px`;
+                };
+                document.onmouseup = function (e) {
+                    document.onmousemove = null;
+                    document.onmouseup = null;
+                };
+            }, false);
+        dragDom.appendChild(lineEl);
+    }
+}

+ 1 - 1
ruoyi-ui/src/directive/permission/hasPermi.js

@@ -2,7 +2,7 @@
  * v-hasPermi 操作权限处理
  * Copyright (c) 2019 ruoyi
  */
-
+ 
 import store from '@/store'
 
 export default {

+ 1 - 1
ruoyi-ui/src/directive/permission/hasRole.js

@@ -2,7 +2,7 @@
  * v-hasRole 角色权限处理
  * Copyright (c) 2019 ruoyi
  */
-
+ 
 import store from '@/store'
 
 export default {

+ 3 - 12
ruoyi-ui/src/layout/components/IframeToggle/index.vue

@@ -5,28 +5,19 @@
       :key="item.path"
       :iframeId="'iframe' + index"
       v-show="$route.path === item.path"
-      :src="iframeUrl(item.meta.link, item.query)"
+      :src="item.meta.link"
     ></inner-link>
   </transition-group>
 </template>
 
 <script>
-import InnerLink from "../InnerLink/index";
+import InnerLink from "../InnerLink/index"
 
 export default {
   components: { InnerLink },
   computed: {
     iframeViews() {
-      return this.$store.state.tagsView.iframeViews;
-    }
-  },
-  methods: {
-    iframeUrl(url, query) {
-      if (Object.keys(query).length > 0) {
-        let params = Object.keys(query).map((key) => key + "=" + query[key]).join("&");
-        return url + "?" + params;
-      }
-      return url;
+      return this.$store.state.tagsView.iframeViews
     }
   }
 }

+ 54 - 24
ruoyi-ui/src/layout/components/Navbar.vue

@@ -2,34 +2,34 @@
   <div class="navbar">
     <hamburger id="hamburger-container" :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />
 
-    <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
-    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
-
+    <!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" v-if="!topNav"/>
+    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/> -->
+       <tags-view v-if="needTagsView"/>
     <div class="right-menu">
       <template v-if="device!=='mobile'">
-        <search id="header-search" class="right-menu-item" />
+        <!-- <search id="header-search" class="right-menu-item" /> -->
 
-        <el-tooltip content="源码地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
 
-        <el-tooltip content="文档地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">
           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
-        <screenfull id="screenfull" class="right-menu-item hover-effect" />
-
+        </el-tooltip> -->
+        <!-- <screenfull id="screenfull" class="right-menu-item hover-effect" />
         <el-tooltip content="布局大小" effect="dark" placement="bottom">
           <size-select id="size-select" class="right-menu-item hover-effect" />
-        </el-tooltip>
-
+        </el-tooltip> -->
       </template>
 
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
-        <div class="avatar-wrapper">
-          <img :src="avatar" class="user-avatar">
-          <i class="el-icon-caret-bottom" />
-        </div>
+       <div class="avatar-container right-menu-item hover-effect">
+         <div class="avatar-wrapper">
+           <img src="../../../src/assets/images/icon_httb_tc.png" alt="">
+          <span @click="logout">退出登录</span>
+         </div>
+       </div>
+
         <el-dropdown-menu slot="dropdown">
           <router-link to="/user/profile">
             <el-dropdown-item>个人中心</el-dropdown-item>
@@ -56,7 +56,7 @@ import SizeSelect from '@/components/SizeSelect'
 import Search from '@/components/HeaderSearch'
 import RuoYiGit from '@/components/RuoYi/Git'
 import RuoYiDoc from '@/components/RuoYi/Doc'
-
+import TagsView from '../../layout/components/TagsView'
 export default {
   components: {
     Breadcrumb,
@@ -66,13 +66,16 @@ export default {
     SizeSelect,
     Search,
     RuoYiGit,
-    RuoYiDoc
+    RuoYiDoc,
+    TagsView
   },
   computed: {
     ...mapGetters([
       'sidebar',
       'avatar',
-      'device'
+      'device',
+	     'name',
+	     'dept',
     ]),
     setting: {
       get() {
@@ -89,6 +92,11 @@ export default {
       get() {
         return this.$store.state.settings.topNav
       }
+    },
+    needTagsView:{
+      get() {
+        return this.$store.state.settings.tagsView
+      }
     }
   },
   methods: {
@@ -116,6 +124,8 @@ export default {
   overflow: hidden;
   position: relative;
   background: #fff;
+  display: flex;
+  align-items: center;
   box-shadow: 0 1px 4px rgba(0,21,41,.08);
 
   .hamburger-container {
@@ -161,6 +171,7 @@ export default {
       font-size: 18px;
       color: #5a5e66;
       vertical-align: text-bottom;
+      width:120px;
 
       &.hover-effect {
         cursor: pointer;
@@ -174,16 +185,35 @@ export default {
 
     .avatar-container {
       margin-right: 30px;
-
+      display: flex;
+      align-items: center;
       .avatar-wrapper {
-        margin-top: 5px;
+        // margin-top: 5px;
         position: relative;
-
+        width:100px;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        height: 30px;
+        background: linear-gradient(90deg, #3464EB, #3464EB);
+        opacity: 0.7;
+        border-radius: 4px;
+        padding: 0  5px;
+        span{
+       color:#fff;
+        font-size: 14px;
+        }
+        img{
+          width: 15px;
+          height: 15px;
+          margin-right: 5px;
+        }
         .user-avatar {
           cursor: pointer;
           width: 40px;
           height: 40px;
-          border-radius: 10px;
+          border-radius: 20px;
+		  margin-right: 10px;
         }
 
         .el-icon-caret-bottom {

+ 1 - 1
ruoyi-ui/src/layout/components/Settings/index.vue

@@ -38,7 +38,7 @@
         <el-divider/>
 
         <h3 class="drawer-title">系统布局配置</h3>
-
+      
         <div class="drawer-item">
           <span>开启 TopNav</span>
           <el-switch v-model="topNav" class="drawer-switch" />

+ 68 - 9
ruoyi-ui/src/layout/components/Sidebar/Logo.vue

@@ -2,19 +2,31 @@
   <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
     <transition name="sidebarLogoFade">
       <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
+       <!-- <img v-if="logo" :src="logo" class="sidebar-logo" />
+        <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1> -->
+        <img src="../../../assets/images/icon_htgl_ahl.png" class="sidebar-logo"  alt="">
+       <!-- <img src="../../../assets/images/pic_topbg_jh.png" alt="" class="ingems"> -->
       </router-link>
       <router-link v-else key="expand" class="sidebar-logo-link" to="/">
-        <img v-if="logo" :src="logo" class="sidebar-logo" />
-        <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
+        <!-- <img v-if="logo" :src="logo" class="sidebar-logo" /> -->
+		    <img src="../../../assets/images/icon_yq_htgl_logos.png" class="sidebar-logo"  alt="">
+        <img src="../../../assets/images/pic_yq_htgl_cblbg.png" alt="" class="ingems">
+        <!-- <div class="loginhou">
+          <img :src="avatar" class="user-avatar">
+          <p>{{name}}</p>
+          <p v-if="dept != null">{{dept.deptName}}</p>
+          <p v-if="dept == null">{{'暂无数据'}}</p>
+        </div> -->
+        <!-- <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1> -->
       </router-link>
     </transition>
   </div>
 </template>
 
 <script>
+  import { mapGetters } from 'vuex'
 import logoImg from '@/assets/logo/logo.png'
+
 import variables from '@/assets/styles/variables.scss'
 
 export default {
@@ -26,6 +38,13 @@ export default {
     }
   },
   computed: {
+    ...mapGetters([
+      'sidebar',
+      'avatar',
+      'device',
+       'name',
+       'dept',
+    ]),
     variables() {
       return variables;
     },
@@ -51,23 +70,63 @@ export default {
 .sidebarLogoFade-leave-to {
   opacity: 0;
 }
-
+.ingems{
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  width:100%;
+  z-index: 2;
+}
+.loginhou{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  margin-top: 25px;
+  p{
+    height: 40px;
+    margin: 0;
+    font-size: 17px;
+    font-family: PingFang SC;
+    font-weight: 800;
+    color: #FFFFFF;
+    line-height: 40px;
+  }
+  p:nth-child(3){
+    background: #5974E0;
+    opacity: 0.8;
+    border-radius: 4px;
+    font-size: 14px;
+    font-weight: 400;
+    height: 20px;
+    line-height: 20px;
+    padding: 0 10px;
+  }
+}
+.user-avatar {
+          cursor: pointer;
+          width: 50px;
+          height: 50px;
+          border-radius: 30px;
+		      // margin-right: 10px;
+        }
 .sidebar-logo-container {
   position: relative;
   width: 100%;
-  height: 50px;
+  height: 220px;
   line-height: 50px;
-  background: #2b2f3a;
+  background: #3464EB !important;
   text-align: center;
   overflow: hidden;
 
+
   & .sidebar-logo-link {
     height: 100%;
     width: 100%;
 
     & .sidebar-logo {
-      width: 32px;
-      height: 32px;
+      width: 85%;
+      height: 30px;
       vertical-align: middle;
       margin-right: 12px;
     }

+ 2 - 2
ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue

@@ -13,8 +13,8 @@
         <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
       </template>
       <sidebar-item
-        v-for="(child, index) in item.children"
-        :key="child.path + index"
+        v-for="child in item.children"
+        :key="child.path"
         :is-nest="true"
         :item="child"
         :base-path="resolvePath(child.path)"

+ 9 - 8
ruoyi-ui/src/layout/components/TagsView/index.vue

@@ -241,9 +241,9 @@ export default {
 .tags-view-container {
   height: 34px;
   width: 100%;
-  background: #fff;
-  border-bottom: 1px solid #d8dce5;
-  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
+  // background: #fff;
+  // border-bottom: 1px solid #d8dce5;
+  // box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);
   .tags-view-wrapper {
     .tags-view-item {
       display: inline-block;
@@ -252,7 +252,7 @@ export default {
       height: 26px;
       line-height: 26px;
       border: 1px solid #d8dce5;
-      color: #495060;
+      color: #333;
       background: #fff;
       padding: 0 8px;
       font-size: 12px;
@@ -265,9 +265,10 @@ export default {
         margin-right: 15px;
       }
       &.active {
-        background-color: #42b983;
+        // background: #1F2745 !important;
+        border-radius: 4px;
         color: #fff;
-        border-color: #42b983;
+        // border-color: #1F2745 !important;
         &::before {
           content: '';
           background: #fff;
@@ -323,8 +324,8 @@ export default {
         vertical-align: -3px;
       }
       &:hover {
-        background-color: #b4bccc;
-        color: #fff;
+        background-color: #b4bccc !important;
+        color: #fff !important;
       }
     }
   }

+ 1 - 1
ruoyi-ui/src/layout/index.vue

@@ -5,7 +5,7 @@
     <div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container">
       <div :class="{'fixed-header':fixedHeader}">
         <navbar/>
-        <tags-view v-if="needTagsView"/>
+        
       </div>
       <app-main/>
       <right-panel>

+ 28 - 0
ruoyi-ui/src/main.js

@@ -1,9 +1,15 @@
 import Vue from 'vue'
 
 import Cookies from 'js-cookie'
+import VueUeditorWrap from 'vue-ueditor-wrap'
+import VueJsonp from 'vue-jsonp'
+import Print from 'vue-print-nb'
 
 import Element from 'element-ui'
 import './assets/styles/element-variables.scss'
+import VideoPlayer from 'vue-video-player'
+import 'vue-video-player/src/custom-theme.css'
+import 'video.js/dist/video-js.css'
 
 import '@/assets/styles/index.scss' // global css
 import '@/assets/styles/ruoyi.scss' // ruoyi css
@@ -16,6 +22,9 @@ import { download } from '@/utils/request'
 
 import './assets/icons' // icon
 import './permission' // permission control
+
+// import '../public/ueditor/xiumi-ue-dialog-v5.js'
+import '../public/ueditor/xiumi-ue-v5.css'
 import { getDicts } from "@/api/system/dict/data";
 import { getConfigKey } from "@/api/system/config";
 import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
@@ -27,8 +36,16 @@ import RightToolbar from "@/components/RightToolbar"
 import Editor from "@/components/Editor"
 // 文件上传组件
 import FileUpload from "@/components/FileUpload"
+import FileUploads from "@/components/FileUploads"
+import FileUploadss from "@/components/FileUploadss"
+import FileUploadsss from "@/components/FileUploadsss"
+import FileUploadssss from "@/components/FileUploadssss"
+import FileUploadsssss from "@/components/FileUploadsssss"
+
+
 // 图片上传组件
 import ImageUpload from "@/components/ImageUpload"
+import ImageUploads from "@/components/ImageUploads"
 // 图片预览组件
 import ImagePreview from "@/components/ImagePreview"
 // 字典标签组件
@@ -55,12 +72,23 @@ Vue.component('Pagination', Pagination)
 Vue.component('RightToolbar', RightToolbar)
 Vue.component('Editor', Editor)
 Vue.component('FileUpload', FileUpload)
+Vue.component('FileUploads', FileUploads)
+Vue.component('FileUploadss', FileUploadss)
+Vue.component('FileUploadsss', FileUploadsss)
+Vue.component('FileUploadssss', FileUploadssss)
+Vue.component('FileUploadsssss', FileUploadsssss)
+
 Vue.component('ImageUpload', ImageUpload)
+Vue.component('ImageUploads', ImageUploads)
 Vue.component('ImagePreview', ImagePreview)
+ Vue.component('vue-ueditor-wrap', VueUeditorWrap)
 
 Vue.use(directive)
 Vue.use(plugins)
 Vue.use(VueMeta)
+Vue.use(Print)
+Vue.use(VideoPlayer)
+
 DictData.install()
 
 /**

+ 0 - 2
ruoyi-ui/src/permission.js

@@ -18,8 +18,6 @@ router.beforeEach((to, from, next) => {
     if (to.path === '/login') {
       next({ path: '/' })
       NProgress.done()
-    } else if (whiteList.indexOf(to.path) !== -1) {
-      next()
     } else {
       if (store.getters.roles.length === 0) {
         isRelogin.show = true

+ 1 - 8
ruoyi-ui/src/plugins/download.js

@@ -1,12 +1,11 @@
 import axios from 'axios'
-import {Loading, Message} from 'element-ui'
+import { Message } from 'element-ui'
 import { saveAs } from 'file-saver'
 import { getToken } from '@/utils/auth'
 import errorCode from '@/utils/errorCode'
 import { blobValidate } from "@/utils/ruoyi";
 
 const baseURL = process.env.VUE_APP_BASE_API
-let downloadLoadingInstance;
 
 export default {
   name(name, isDelete = true) {
@@ -45,7 +44,6 @@ export default {
   },
   zip(url, name) {
     var url = baseURL + url
-    downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
     axios({
       method: 'get',
       url: url,
@@ -59,11 +57,6 @@ export default {
       } else {
         this.printErrMsg(res.data);
       }
-      downloadLoadingInstance.close();
-    }).catch((r) => {
-      console.error(r)
-      Message.error('下载文件出现错误,请联系管理员!')
-      downloadLoadingInstance.close();
     })
   },
   saveAs(text, name, opts) {

+ 2 - 2
ruoyi-ui/src/plugins/tab.js

@@ -35,7 +35,7 @@ export default {
       return store.dispatch('tagsView/delView', router.currentRoute).then(({ visitedViews }) => {
         const latestView = visitedViews.slice(-1)[0]
         if (latestView) {
-          return router.push(latestView.fullPath)
+            return router.push(latestView.fullPath)
         }
         return router.push('/');
       });
@@ -60,7 +60,7 @@ export default {
   },
   // 添加tab页签
   openPage(title, url, params) {
-    const obj = { path: url, meta: { title: title } }
+    var obj = { path: url, meta: { title: title } }
     store.dispatch('tagsView/addView', obj);
     return router.push({ path: url, query: params });
   },

+ 4 - 3
ruoyi-ui/src/settings.js

@@ -1,7 +1,8 @@
 module.exports = {
-	urls:`http://192.168.101.168:8089`,
-	
-	
+	// urls: `https://zxyyq.qs163.cn`,
+  // http://47.99.82.249:5010
+	urls:`http://192.168.101.245:8065`,
+  // http://192.168.101.168:8065
   /**
    * 侧边栏主题 深色主题theme-dark,浅色主题theme-light
    */

+ 3 - 0
ruoyi-ui/src/store/getters.js

@@ -7,7 +7,10 @@ const getters = {
   cachedViews: state => state.tagsView.cachedViews,
   token: state => state.user.token,
   avatar: state => state.user.avatar,
+  dept: state => state.user.dept,
   name: state => state.user.name,
+  rolesName: state => state.user.rolesName,
+  nickName: state => state.user.nickName,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,

+ 0 - 4
ruoyi-ui/src/store/modules/permission.js

@@ -98,10 +98,6 @@ function filterChildren(childrenMap, lastRouter = false) {
     }
     if (lastRouter) {
       el.path = lastRouter.path + '/' + el.path
-      if (el.children && el.children.length) {
-        children = children.concat(filterChildren(el.children, el))
-        return
-      }
     }
     children = children.concat(el)
   })

+ 16 - 1
ruoyi-ui/src/store/modules/user.js

@@ -8,7 +8,10 @@ const user = {
     name: '',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+	rolesName:[],
+	nickName:'',
+	dept:{},
   },
 
   mutations: {
@@ -27,6 +30,15 @@ const user = {
     SET_ROLES: (state, roles) => {
       state.roles = roles
     },
+	SET_ROLES_NAME: (state, rolesName) => {
+	  state.rolesName = rolesName
+	},
+	SET_NIKE_NAME: (state, nickName) => {
+	  state.nickName = nickName
+	},
+	SET_DEPT: (state, dept) => {
+	  state.dept = dept
+	},
     SET_PERMISSIONS: (state, permissions) => {
       state.permissions = permissions
     }
@@ -64,7 +76,10 @@ const user = {
           }
           commit('SET_ID', user.userId)
           commit('SET_NAME', user.userName)
+		  commit('SET_ROLES_NAME', user.roles)
+		  commit('SET_NIKE_NAME', user.nickName)
           commit('SET_AVATAR', avatar)
+		  commit('SET_DEPT', user.dept)
           resolve(res)
         }).catch(error => {
           reject(error)

+ 6 - 6
ruoyi-ui/src/utils/index.js

@@ -5,12 +5,12 @@ import { parseTime } from './ruoyi'
  */
 export function formatDate(cellValue) {
   if (cellValue == null || cellValue == "") return "";
-  var date = new Date(cellValue)
+  var date = new Date(cellValue) 
   var year = date.getFullYear()
   var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
-  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
-  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
-  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
+  var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() 
+  var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() 
+  var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() 
   var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
   return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
 }
@@ -330,7 +330,7 @@ export function makeMap(str, expectsLowerCase) {
     ? val => map[val.toLowerCase()]
     : val => map[val]
 }
-
+ 
 export const exportDefault = 'export default '
 
 export const beautifierConf = {
@@ -387,4 +387,4 @@ export function camelCase(str) {
 export function isNumberStr(str) {
   return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
 }
-
+ 

+ 8 - 4
ruoyi-ui/src/utils/permission.js

@@ -15,8 +15,10 @@ export function checkPermi(value) {
       return all_permission === permission || permissionDatas.includes(permission)
     })
 
-    return hasPermission;
-
+    if (!hasPermission) {
+      return false
+    }
+    return true
   } else {
     console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
     return false
@@ -38,8 +40,10 @@ export function checkRole(value) {
       return super_admin === role || permissionRoles.includes(role)
     })
 
-    return hasRole;
-
+    if (!hasRole) {
+      return false
+    }
+    return true
   } else {
     console.error(`need roles! Like checkRole="['admin','editor']"`)
     return false

+ 4 - 1
ruoyi-ui/src/utils/validate.js

@@ -65,7 +65,10 @@ export function validEmail(email) {
  * @returns {Boolean}
  */
 export function isString(str) {
-  return typeof str === 'string' || str instanceof String;
+  if (typeof str === 'string' || str instanceof String) {
+    return true
+  }
+  return false
 }
 
 /**

+ 57 - 53
ruoyi-ui/src/views/dashboard/BarChart.vue

@@ -3,7 +3,7 @@
 </template>
 
 <script>
-import * as echarts from 'echarts'
+import * as echarts from 'echarts';
 require('echarts/theme/macarons') // echarts theme
 import resize from './mixins/resize'
 
@@ -45,58 +45,62 @@ export default {
   methods: {
     initChart() {
       this.chart = echarts.init(this.$el, 'macarons')
-
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
-        },
-        grid: {
-          top: 10,
-          left: '2%',
-          right: '2%',
-          bottom: '3%',
-          containLabel: true
-        },
-        xAxis: [{
-          type: 'category',
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
-          axisTick: {
-            alignWithLabel: true
-          }
-        }],
-        yAxis: [{
-          type: 'value',
-          axisTick: {
-            show: false
-          }
-        }],
-        series: [{
-          name: 'pageA',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [79, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageB',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [80, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageC',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [30, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }]
-      })
-    }
+      this.setOptions(this.chartData)
+    },
+			
+			setOptions({ expectedData, actualData,linedata } = {}) {
+			  this.chart.setOption({
+			    tooltip: {
+			      trigger: 'axis',
+			      axisPointer: { // 坐标轴指示器,坐标轴触发有效
+			        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+			      }
+			    },
+			    grid: {
+			      top: 10,
+			      left: '2%',
+			      right: '2%',
+			      bottom: '3%',
+			      containLabel: true
+			    },
+			    xAxis: [{
+			      type: 'category',
+			      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+			      axisTick: {
+			        alignWithLabel: true
+			      }
+			    }],
+			    yAxis: [{
+			      type: 'value',
+			      axisTick: {
+			        show: false
+			      }
+			    }],
+			    series: [{
+			      name: 'pageA',
+			      type: 'bar',
+			      stack: 'vistors',
+			      barWidth: '60%',
+			      data: [79, 52, 200, 334, 390, 330, 220],
+			      animationDuration
+			    }, {
+			      name: 'pageB',
+			      type: 'bar',
+			      stack: 'vistors',
+			      barWidth: '60%',
+			      data: [80, 52, 200, 334, 390, 330, 220],
+			      animationDuration
+			    }, {
+			      name: 'pageC',
+			      type: 'bar',
+			      stack: 'vistors',
+			      barWidth: '60%',
+			      data: [30, 52, 200, 334, 390, 330, 220],
+			      animationDuration
+			    }]
+			  })
+			}
+    // }
   }
 }
 </script>

+ 2 - 2
ruoyi-ui/src/views/dashboard/LineChart.vue

@@ -3,7 +3,7 @@
 </template>
 
 <script>
-import * as echarts from 'echarts'
+import * as echarts from 'echarts';
 require('echarts/theme/macarons') // echarts theme
 import resize from './mixins/resize'
 
@@ -20,7 +20,7 @@ export default {
     },
     height: {
       type: String,
-      default: '350px'
+      default: '250px'
     },
     autoResize: {
       type: Boolean,

+ 1 - 1
ruoyi-ui/src/views/dashboard/PieChart.vue

@@ -3,7 +3,7 @@
 </template>
 
 <script>
-import * as echarts from 'echarts'
+import * as echarts from 'echarts';
 require('echarts/theme/macarons') // echarts theme
 import resize from './mixins/resize'
 

+ 1 - 1
ruoyi-ui/src/views/dashboard/RaddarChart.vue

@@ -3,7 +3,7 @@
 </template>
 
 <script>
-import * as echarts from 'echarts'
+import * as echarts from 'echarts';
 require('echarts/theme/macarons') // echarts theme
 import resize from './mixins/resize'
 

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 2359 - 980
ruoyi-ui/src/views/index.vue


+ 216 - 20
ruoyi-ui/src/views/login.vue

@@ -1,8 +1,12 @@
 <template>
   <div class="login">
+    <!-- <div>
+      <img style="width: 500px; position: relative;top:0; left:0;" src="../assets/images/pic_dl_srkbg.png" alt="">
+    </div> -->
+	<!-- <img src="../assets/images/pic_htdl_bt.png" alt="" style="margin-bottom: 10px;"> -->
     <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">若依后台管理系统</h3>
-      <el-form-item prop="username">
+      <h3 class="title">园区安防监控数据管理平台</h3>
+      <el-form-item prop="username" v-if='!xgmemberMe'>
         <el-input
           v-model="loginForm.username"
           type="text"
@@ -12,7 +16,7 @@
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
         </el-input>
       </el-form-item>
-      <el-form-item prop="password">
+      <el-form-item prop="password" v-if='!xgmemberMe'>
         <el-input
           v-model="loginForm.password"
           type="password"
@@ -23,7 +27,8 @@
           <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
         </el-input>
       </el-form-item>
-      <el-form-item prop="code" v-if="captchaEnabled">
+      <!-- v-if='!xgmemberMe' -->
+      <el-form-item prop="code"  v-if="captchaEnabled"   >
         <el-input
           v-model="loginForm.code"
           auto-complete="off"
@@ -37,26 +42,64 @@
           <img :src="codeUrl" @click="getCode" class="login-code-img"/>
         </div>
       </el-form-item>
-      <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
-      <el-form-item style="width:100%;">
+      <el-form-item  prop="oldPassword" v-if='xgmemberMe'>
+        <el-input v-model="loginForm.oldPassword"  type="password"
+          auto-complete="off"
+          placeholder="学校名称"
+          @keyup.enter.native="handleLogins" >
+            <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+       </el-input>
+      </el-form-item>
+      <el-form-item  prop="newPassword" v-if='xgmemberMe'>
+        <el-input v-model="loginForm.newPassword"  placeholder="联系方式" type="password" >
+          <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+        </el-input>
+      </el-form-item>
+      <!-- v-if='xgmemberMe' -->
+      <el-form-item  prop="confirmPassword"  class="njhyter" v-if="xgmemberMe">
+        <fileUpload :limit="5"  />
+      </el-form-item>
+      <div class="njuyehaf">
+        <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
+        <!-- <p  v-if="!xgmemberMe">还没有账号?去 <span @click="zhuc">注册</span></p>
+        <p v-if="xgmemberMe">已有账号?去 <span @click="zhucs" >登录</span></p> -->
+      </div>
+      <!-- <el-checkbox v-model="xgmemberMe"  @change=" xgmes " style="margin:0px 0px 25px 25px;">修改密码</el-checkbox> -->
+      <el-form-item style="width:100%;margin-bottom: 0;" v-if='!xgmemberMe' >
         <el-button
           :loading="loading"
           size="medium"
           type="primary"
-          style="width:100%;"
+          style="width: 100%;background: linear-gradient(180deg, #68BEFF 0%, #0391FD 100%);height: 45px; border-color: #0391FD ;color: #fff; border-radius: 30px;"
           @click.native.prevent="handleLogin"
         >
           <span v-if="!loading">登 录</span>
           <span v-else>登 录 中...</span>
         </el-button>
-        <div style="float: right;" v-if="register">
-          <router-link class="link-type" :to="'/register'">立即注册</router-link>
-        </div>
+       <!-- <p class="div_p">
+          * 使用快捷登录,请先绑定第三方账号
+        </p> -->
+      </el-form-item>
+      <el-form-item  style="width:100%;margin-bottom: 0;" v-if='xgmemberMe'>
+        <el-button
+          :loading="loading"
+          size="medium"
+
+          type="primary"
+          style="width: 100%;background-color: #A6A1EB;height: 45px; border-color: #A6A1EB;"
+          @click.native.prevent="handleLogins"
+        >
+          <span v-if="!loading">确认修改</span>
+          <span v-else>修 改 中...</span>
+        </el-button>
+        <!-- <p class="div_p">
+          * 使用快捷登录,请先绑定第三方账号
+        </p> -->
       </el-form-item>
     </el-form>
     <!--  底部  -->
     <div class="el-login-footer">
-      <span>Copyright © 2018-2023 ruoyi.vip All Rights Reserved.</span>
+      <!-- <span>版本号:ZXY_tj_1.2</span> -->
     </div>
   </div>
 </template>
@@ -65,6 +108,9 @@
 import { getCodeImg } from "@/api/login";
 import Cookies from "js-cookie";
 import { encrypt, decrypt } from '@/utils/jsencrypt'
+ import {setToken} from '@/utils/auth'
+  import resetPwd from "./system/user/profile/resetPwd.vue";
+  import { updateUserPwds } from "@/api/system/user";
 
 export default {
   name: "Login",
@@ -72,8 +118,8 @@ export default {
     return {
       codeUrl: "",
       loginForm: {
-        username: "admin",
-        password: "admin123",
+        username: "",
+        password: "",
         rememberMe: false,
         code: "",
         uuid: ""
@@ -92,7 +138,8 @@ export default {
       captchaEnabled: true,
       // 注册开关
       register: false,
-      redirect: undefined
+      redirect: undefined,
+      xgmemberMe:false  //修改密码
     };
   },
   watch: {
@@ -111,6 +158,7 @@ export default {
     getCode() {
       getCodeImg().then(res => {
         this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+
         if (this.captchaEnabled) {
           this.codeUrl = "data:image/gif;base64," + res.img;
           this.loginForm.uuid = res.uuid;
@@ -150,6 +198,81 @@ export default {
           });
         }
       });
+    },
+    // 修改密码
+    handleLogins(){
+     if(this.loginForm.username == ""){
+       this.$message.error('请输入账号');
+       return
+     }
+     if(this.loginForm.oldPassword == undefined){
+       this.$message.error('请输入旧密码');
+       return
+     }
+     if(this.loginForm.newPassword == undefined){
+       this.$message.error('请输入新密码');
+       return
+     }
+
+     if(this.loginForm.confirmPassword == undefined){
+       this.$message.error('请输入确认密码');
+       return
+     }
+     this.loading = true;
+     let nhse={
+       userName:''
+     }
+     nhse.userName = this.loginForm.username
+     updateUserPwds(this.loginForm.oldPassword, this.loginForm.newPassword,this.loginForm.username).then(
+       response => {
+         console.log(response.msg,36)
+         if(response.msg == '操作成功'){
+            this.$modal.msgSuccess(response.msg);
+            this.xgmemberMe = false
+            this.getCode();
+            this.$set(this.loginForm,'password','')
+            this.$set(this.loginForm,'uuid','')
+            this.$set(this.loginForm,'rememberMe',false)
+            this.$set(this.loginForm,'code','')
+            this.$set(this.loginForm,'confirmPassword',undefined)
+            this.$set(this.loginForm,'oldPassword',undefined)
+            this.$set(this.loginForm,'newPassword',undefined)
+            // this.$set(this.loginForm,'username','')
+         }else{
+           this.$message.error(response.msg);
+         }
+
+         this.loading = false;
+
+       }
+     );
+    },
+    // 确认密码失去焦点
+    cpass(){
+     if(this.loginForm.confirmPassword !== this.loginForm.newPassword){
+       this.$message.error('两次密码不一致');
+     }
+    },
+    // 复选框选择修改密码
+    xgmes(){
+      if(this.xgmemberMe == false){
+        this.$set(this.loginForm,'confirmPassword',undefined)
+        this.$set(this.loginForm,'oldPassword',undefined)
+        this.$set(this.loginForm,'newPassword',undefined)
+        this.$set(this.loginForm,'username','')
+      }else{
+        this.$set(this.loginForm,'username','')
+        this.$set(this.loginForm,'password','')
+        this.$set(this.loginForm,'uuid','')
+        this.$set(this.loginForm,'rememberMe',false)
+        this.$set(this.loginForm,'code','')
+      }
+    },
+    zhuc(){
+     this.xgmemberMe = true
+    },
+    zhucs(){
+      this.xgmemberMe = false
     }
   }
 };
@@ -160,32 +283,63 @@ export default {
   display: flex;
   justify-content: center;
   align-items: center;
+  flex-direction: column;
   height: 100%;
   background-image: url("../assets/images/login-background.jpg");
   background-size: cover;
+  .el-input__prefix{
+    color: #5974E0;
+    top:2px;
+  }
+  // margin-left: 300px;
 }
 .title {
-  margin: 0px auto 30px auto;
+  margin: 0 auto 20px auto;
   text-align: center;
-  color: #707070;
+  font-size: 23px;
+  font-family: PingFang SC;
+  font-weight: 800;
+  color: #343434;
 }
 
 .login-form {
   border-radius: 6px;
-  background: #ffffff;
+  background: #000a48;
+  background-color:#fff;
   width: 400px;
-  padding: 25px 25px 5px 25px;
+  // margin-left: -3.2%;
+  // margin-right: 50%;
+  // margin-left: 10px;
+  padding: 25px 35px 5px 35px;
   .el-input {
-    height: 38px;
+    height: 45px;
     input {
-      height: 38px;
+      height: 45px;
+      border: 1px solid #0391FD;
+      border-radius: 21px;
+      background-color: #0391FD;
+      // border-color: #F7F6FC;s
+      background-color:#fff
     }
   }
+  .el-checkbox__inner{
+    background-color: #2174f3;
+    border-color: rgba(1, 152, 221,0.2);
+    background-color:rgba(0,0,0,0.3)
+  }
   .input-icon {
     height: 39px;
     width: 14px;
     margin-left: 2px;
   }
+  .el-button--primary{
+    margin-bottom: 20px;
+    // background-color: #A6A1EB !important;
+
+  }
+  .el-form-item{
+    margin-bottom: 25px;
+  }
 }
 .login-tip {
   font-size: 13px;
@@ -216,4 +370,46 @@ export default {
 .login-code-img {
   height: 38px;
 }
+.nli{
+  .el-button--primary{
+    background-color: #A6A1EB;
+    border-color: #A6A1EB !important;
+  }
+}
+.njuyehaf{
+  display: flex;
+  p{
+    flex: 1;
+    font-size: 14px;
+    font-family: PingFang SC;
+    font-weight: 400;
+    color: #C8C8C8;
+    margin: 0;
+    text-align: right;
+    span{
+      color: #FFB339;
+      font-weight: 700;
+      cursor:pointer;
+    }
+  }
+}
+.njhyter{
+  .el-upload{
+    width: 100%;
+  }
+  .el-button--mini{
+    width: 100% !important;
+    padding: 11px 15px;
+    // text-align: left;
+    margin: 0;
+  }
+  .el-button--primary{
+    background-color: #F7F6FC;
+    border-color: #F7F6FC;
+    color: #A6A1EB;
+  }
+  .el-upload__tip{
+    font-size: 12px;
+  }
+}
 </style>

+ 23 - 4
ruoyi-ui/src/views/monitor/cache/index.vue

@@ -133,10 +133,6 @@ export default {
             }
           ]
         });
-        window.addEventListener("resize", () => {
-          this.commandstats.resize();
-          this.usedmemory.resize();
-        });
       });
     },
     // 打开加载层
@@ -146,3 +142,26 @@ export default {
   }
 };
 </script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 22 - 0
ruoyi-ui/src/views/monitor/cache/list.vue

@@ -239,3 +239,25 @@ export default {
   },
 };
 </script>
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 57 - 5
ruoyi-ui/src/views/monitor/job/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form class="nghf" :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="任务名称" prop="jobName">
         <el-input
           v-model="queryParams.jobName"
@@ -34,7 +34,9 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+   
+	 
+	<div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -91,7 +93,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="jobList" @selection-change="handleSelectionChange">
+    <el-table :max-height="tableMaxHeight" v-loading="loading" :data="jobList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="任务编号" width="100" align="center" prop="jobId" />
       <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
@@ -150,6 +152,7 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+		</div>
 
     <!-- 添加或修改定时任务对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
@@ -345,11 +348,22 @@ export default {
         cronExpression: [
           { required: true, message: "cron执行表达式不能为空", trigger: "blur" }
         ]
-      }
+      },
+			tableMaxHeight:'200'
     };
   },
   created() {
     this.getList();
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询定时任务列表 */
@@ -507,7 +521,45 @@ export default {
       this.download('monitor/job/export', {
         ...this.queryParams
       }, `job_${new Date().getTime()}.xlsx`)
-    }
+    },
+		// 获取屏幕高度
+		showFilterForm () {
+		      this.filterActive = !this.filterActive
+		      this.changeTableMaxHeight()
+		    },
+		
+		    changeTableMaxHeight () {
+		      let height = document.body.offsetHeight // 网页可视区域高度
+		      // if (this.filterActive) {
+		      //   this.tableMaxHeight = height - 320
+		      // } else {
+		        this.tableMaxHeight = height - 150
+		      // }
+		      console.log(height)
+		    }
   }
 };
 </script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 26 - 2
ruoyi-ui/src/views/monitor/logininfor/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form class="nghf" :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="登录地址" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"
@@ -51,7 +51,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+  <div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -126,6 +126,7 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+		</div>
   </div>
 </template>
 
@@ -244,3 +245,26 @@ export default {
 };
 </script>
 
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>
+

+ 55 - 3
ruoyi-ui/src/views/monitor/online/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
+    <el-form class="nghf" :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px" >
       <el-form-item label="登录地址" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"
@@ -23,10 +23,12 @@
       </el-form-item>
 
     </el-form>
+		<div class="ntg">
     <el-table
       v-loading="loading"
       :data="list.slice((pageNum-1)*pageSize,pageNum*pageSize)"
       style="width: 100%;"
+	  :max-height="tableMaxHeight"
     >
       <el-table-column label="序号" type="index" align="center">
         <template slot-scope="scope">
@@ -59,6 +61,7 @@
     </el-table>
 
     <pagination v-show="total>0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
+		</div>
   </div>
 </template>
 
@@ -81,11 +84,22 @@ export default {
       queryParams: {
         ipaddr: undefined,
         userName: undefined
-      }
+      },
+	  tableMaxHeight:'200'
     };
   },
   created() {
     this.getList();
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询登录日志列表 */
@@ -115,8 +129,46 @@ export default {
         this.getList();
         this.$modal.msgSuccess("强退成功");
       }).catch(() => {});
-    }
+    },
+	// 获取屏幕高度
+	showFilterForm () {
+	      this.filterActive = !this.filterActive
+	      this.changeTableMaxHeight()
+	    },
+	
+	    changeTableMaxHeight () {
+	      let height = document.body.offsetHeight // 网页可视区域高度
+	      // if (this.filterActive) {
+	      //   this.tableMaxHeight = height - 320
+	      // } else {
+	        this.tableMaxHeight = height - 150
+	      // }
+	      console.log(height)
+	    }
   }
 };
 </script>
 
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>
+

+ 28 - 5
ruoyi-ui/src/views/monitor/operlog/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="nghf">
       <el-form-item label="操作地址" prop="operIp">
         <el-input
           v-model="queryParams.operIp"
@@ -75,7 +75,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+  <div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -158,9 +158,10 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+	</div>
 
     <!-- 操作日志详细 -->
-    <el-dialog title="操作日志详细" :visible.sync="open" width="800px" append-to-body>
+    <el-dialog title="操作日志详细" :visible.sync="open" width="700px" append-to-body>
       <el-form ref="form" :model="form" label-width="100px" size="mini">
         <el-row>
           <el-col :span="12">
@@ -182,7 +183,7 @@
           <el-col :span="24">
             <el-form-item label="返回参数:">{{ form.jsonResult }}</el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="6">
             <el-form-item label="操作状态:">
               <div v-if="form.status === 0">正常</div>
               <div v-else-if="form.status === 1">失败</div>
@@ -191,7 +192,7 @@
           <el-col :span="8">
             <el-form-item label="消耗时间:">{{ form.costTime }}毫秒</el-form-item>
           </el-col>
-          <el-col :span="8">
+          <el-col :span="10">
             <el-form-item label="操作时间:">{{ parseTime(form.operTime) }}</el-form-item>
           </el-col>
           <el-col :span="24">
@@ -320,4 +321,26 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 0;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>
 

+ 1 - 1
ruoyi-ui/src/views/register.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="register">
     <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
-      <h3 class="title">若依后台管理系统</h3>
+      <h3 class="title">园区安防监控数据管理平台</h3>
       <el-form-item prop="username">
         <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
           <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />

+ 27 - 3
ruoyi-ui/src/views/system/config/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="nghf">
       <el-form-item label="参数名称" prop="configName">
         <el-input
           v-model="queryParams.configName"
@@ -45,7 +45,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+  <div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -146,7 +146,7 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-
+  </div>
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -341,3 +341,27 @@ export default {
   }
 };
 </script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		padding-top: 25px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 26 - 3
ruoyi-ui/src/views/system/dept/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" class="nghf">
       <el-form-item label="部门名称" prop="deptName">
         <el-input
           v-model="queryParams.deptName"
@@ -24,7 +24,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+<div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -95,7 +95,7 @@
         </template>
       </el-table-column>
     </el-table>
-
+</div>
     <!-- 添加或修改部门对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -338,3 +338,26 @@ export default {
   }
 };
 </script>
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 1 - 1
ruoyi-ui/src/views/system/dict/data.vue

@@ -251,8 +251,8 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        dictName: undefined,
         dictType: undefined,
-        dictLabel: undefined,
         status: undefined
       },
       // 表单参数

+ 31 - 5
ruoyi-ui/src/views/system/dict/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="nghf">
       <el-form-item label="字典名称" prop="dictName">
         <el-input
           v-model="queryParams.dictName"
@@ -50,7 +50,9 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+   
+	 
+	 <div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -156,7 +158,7 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-
+  </div>
     <!-- 添加或修改参数配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -192,7 +194,7 @@ import { listType, getType, delType, addType, updateType, refreshCache } from "@
 
 export default {
   name: "Dict",
-  dicts: ['sys_normal_disable'],
+  dicts: ['sys_normal_disable','usertype'],
   data() {
     return {
       // 遮罩层
@@ -344,4 +346,28 @@ export default {
     }
   }
 };
-</script>
+</script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 57 - 4
ruoyi-ui/src/views/system/menu/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" class="nghf">
       <el-form-item label="菜单名称" prop="menuName">
         <el-input
           v-model="queryParams.menuName"
@@ -24,6 +24,8 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
+		
+		<div class="ntg">
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
@@ -53,7 +55,7 @@
       v-loading="loading"
       :data="menuList"
       row-key="menuId"
-      :default-expand-all="isExpandAll"
+	  :max-height="tableMaxHeight"   :default-expand-all="isExpandAll"
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
     >
       <el-table-column prop="menuName" label="菜单名称" :show-overflow-tooltip="true" width="160"></el-table-column>
@@ -101,6 +103,7 @@
         </template>
       </el-table-column>
     </el-table>
+		</div>
 
     <!-- 添加或修改菜单对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
@@ -319,11 +322,22 @@ export default {
         path: [
           { required: true, message: "路由地址不能为空", trigger: "blur" }
         ]
-      }
+      },
+	  tableMaxHeight:'200'
     };
   },
   created() {
     this.getList();
+	window.onresize = () => {
+	      this.changeTableMaxHeight()
+	    }
+	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
   },
   methods: {
     // 选择图标
@@ -446,7 +460,46 @@ export default {
         this.getList();
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
-    }
+    },
+	// 获取屏幕高度
+	showFilterForm () {
+	      this.filterActive = !this.filterActive
+	      this.changeTableMaxHeight()
+	    },
+	
+	    changeTableMaxHeight () {
+	      let height = document.body.offsetHeight // 网页可视区域高度
+	      // if (this.filterActive) {
+	      //   this.tableMaxHeight = height - 320
+	      // } else {
+	        this.tableMaxHeight = height - 150
+	      // }
+	      console.log(height)
+	    }
   }
 };
 </script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 191 - 38
ruoyi-ui/src/views/system/notice/index.vue

@@ -1,38 +1,43 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="公告标题" prop="noticeTitle">
-        <el-input
-          v-model="queryParams.noticeTitle"
-          placeholder="请输入公告标题"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="操作人员" prop="createBy">
-        <el-input
-          v-model="queryParams.createBy"
-          placeholder="请输入操作人员"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="类型" prop="noticeType">
-        <el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable>
-          <el-option
-            v-for="dict in dict.type.sys_notice_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
+	<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="140px" class="nghfs">
+	    <p class="lqw" style="font-weight: 700;font-size: 15px;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;"> 搜索条件</p>
+	     <el-row>
+	       <!-- <el-col :span="24"> -->
+	         <el-col :span="8">
+	         <el-form-item label="公告标题" prop="noticeTitle">
+	           <el-input
+	             v-model="queryParams.noticeTitle"
+	             placeholder="请输入公告标题"
+	             clearable
+	             @keyup.enter.native="handleQuery"
+	           />
+	         </el-form-item>
+	         </el-col>
+					 <el-col :span="8">
+					   <el-form-item label="类型" prop="noticeType">
+					     <el-select v-model="queryParams.noticeType" placeholder="公告类型" clearable>
+					       <el-option
+					         v-for="dict in dict.type.sys_notice_type"
+					         :key="dict.value"
+					         :label="dict.label"
+					         :value="dict.value"
+					       />
+					     </el-select>
+					   </el-form-item>
+					 </el-col>
+	
+	         <el-col :span="4"  style="margin-top: 3px;">
+	           <el-button type="primary" style="background-color: #5974E0; border-color: #5974E0;" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+	          <el-button style="background-color: #fff; border-color: #3464EB; color: #3464EB;" icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+	         </el-col>
+	     </el-row>
+	    </el-form>
 
+
+ <div class="ntgs" >
+    <div style="display: flex;align-items: center; margin-bottom: 10px;">
+      <p class="lqw" style="font-weight: 700;font-size: 15px; margin: 0; margin-bottom: 0;"> <img src="../../../assets/images/icon_yq_htgl_btzs.png" alt="" style="width:10px;height: 10px;margin-right: 10px;">  通知公告</p>
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -68,8 +73,9 @@
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
+	</div>
 
-    <el-table v-loading="loading" :data="noticeList" @selection-change="handleSelectionChange">
+    <el-table stripe v-loading="loading" :data="noticeList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="序号" align="center" prop="noticeId" width="100" />
       <el-table-column
@@ -100,14 +106,18 @@
             size="mini"
             type="text"
             icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
+			class="hyr"
+			@click="handleUpdate(scope.row)"
+			style="color: 28C529;"
             v-hasPermi="['system:notice:edit']"
           >修改</el-button>
           <el-button
             size="mini"
             type="text"
             icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
+           class="hyr"
+           @click="handleDelete(scope.row)"
+           style="color: red;"
             v-hasPermi="['system:notice:remove']"
           >删除</el-button>
         </template>
@@ -121,7 +131,12 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-
+	</div>
+	<!-- <vue-ueditor-wrap   v-model="form.noticeContent" :config="myConfig"></vue-ueditor-wrap> -->
+  
+  
+  
+  
     <!-- 添加或修改公告对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
@@ -155,10 +170,19 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
+			  
             <el-form-item label="内容">
+				<!-- <vue-ueditor-wrap   v-model="form.noticeContent" :config="myConfig"></vue-ueditor-wrap> -->
               <editor v-model="form.noticeContent" :min-height="192"/>
             </el-form-item>
           </el-col>
+					<el-col :span="24">
+						<el-form-item label="图片">
+							<!-- <vue-ueditor-wrap   v-model="form.noticeContent" :config="myConfig"></vue-ueditor-wrap> -->
+						  <image-upload v-model="form.noticeImage"/>
+						</el-form-item>
+						
+					</el-col>
         </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -171,10 +195,13 @@
 
 <script>
 import { listNotice, getNotice, delNotice, addNotice, updateNotice } from "@/api/system/notice";
+// import VueUeditorWrap from "vue-ueditor-wrap";
+import VueUeditorWrap from '../../../components/vue-ueditor-wrap.vue';
 
 export default {
   name: "Notice",
   dicts: ['sys_notice_status', 'sys_notice_type'],
+  components: { VueUeditorWrap },
   data() {
     return {
       // 遮罩层
@@ -213,7 +240,42 @@ export default {
         noticeType: [
           { required: true, message: "公告类型不能为空", trigger: "change" }
         ]
-      }
+      },
+			myConfig: {
+													// serverUrl: 'http://192.168.101.168:8070/dev-api/', // 上传功能的后端服务器接口地址
+													UEDITOR_HOME_URL: "/ueditor/", // 你的UEditor资源存放的路径,相对于打包后的index.html
+													autoHeightEnabled: true, // 编辑器是否自动被内容撑高
+													autoFloatEnabled: false, // 工具栏是否可以浮动
+													initialFrameHeight: 340, // 初始容器高度
+													initialFrameWidth: "100%", // 初始容器高度
+													enableAutoSave: true, // 关闭自动保存
+													toolbars: [
+													            [
+													             '135editor',// 135编辑
+													              'undo', //撤销
+													              'bold', //加粗
+													              'indent', //首行缩进
+													              'italic', //斜体
+													              'underline', //下划线
+													              'strikethrough', //删除线
+													              'subscript', //下标
+													              'fontborder', //字符边框
+													              'superscript', //上标
+													              'formatmatch', //格式刷
+													              'fontfamily', //字体
+													              'fontsize', //字号
+													              'justifyleft', //居左对齐
+													              'justifycenter', //居中对齐
+													              'justifyright', //居右对齐
+													              'justifyjustify', //两端对齐
+													              'insertorderedlist', //有序列表
+													              'insertunorderedlist', //无序列表
+													              'lineheight',//行间距
+																  'imagenone', 'imageleft', 'imageright', 'imagecenter',
+																  'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background',
+													            ]
+													]
+					}
     };
   },
   created() {
@@ -241,7 +303,8 @@ export default {
         noticeTitle: undefined,
         noticeType: undefined,
         noticeContent: undefined,
-        status: "0"
+        status: "0",
+		noticeImage:undefined
       };
       this.resetForm("form");
     },
@@ -280,6 +343,7 @@ export default {
     /** 提交按钮 */
     submitForm: function() {
       this.$refs["form"].validate(valid => {
+		  console.log(this.form.noticeContent)
         if (valid) {
           if (this.form.noticeId != undefined) {
             updateNotice(this.form).then(response => {
@@ -310,3 +374,92 @@ export default {
   }
 };
 </script>
+
+<style lang="scss">
+	.nhgrls{
+		.el-dialog__body{
+			padding: 0;
+		}
+	}
+  .hyr{
+    span{
+      text-decoration:underline;
+    }
+  }
+</style>
+<style scoped lang="scss">
+  .iuer{
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    .ite{
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      p{
+        margin: 0;
+        font-size: 15px;
+        font-family: PingFang SC;
+        font-weight: 500;
+        color: #AAAAAA;
+        padding: 4px 12px;
+        background: #F7F8FA;
+        border-radius: 4px;
+        margin-right: 20px;
+      }
+      .actt{
+        background: #E6EBFF;
+        border: 1px solid #5974E0;
+        border-radius: 4px;
+        color: #5974E0;
+      }
+
+    }
+  }
+  .lqw{
+    padding: 0 10px;
+    margin: 0;
+    margin-bottom: 20px;
+  }
+.nhgel{
+  height: 170px;
+  background-color: #313b61;
+  width: 100%;
+  position: absolute;
+  top:0;
+  left:0;
+  z-index: 0;
+}
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   height: 100vh;
+	}
+	.ntgs{
+	position: relative;
+		background-color: #fff;
+		padding: 5px;
+		// border-radius: 5px;
+		padding-top: 10px;
+	     padding: 10px 20px;
+		 padding-left: 10px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghfs{
+	position: relative;
+		background-color: #fff;
+		padding-top: 18px !important;
+		padding: 5px;
+		// border-radius: 5px;
+		// margin-bottom: 20px;
+	}
+	.ksf{
+		img{
+			width:100%;
+			height: 100%;
+		}
+	}
+
+</style>

+ 56 - 5
ruoyi-ui/src/views/system/post/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px" class="nghf">
       <el-form-item label="岗位编码" prop="postCode">
         <el-input
           v-model="queryParams.postCode"
@@ -32,7 +32,7 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
+    <div class="ntg">
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -79,7 +79,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
+    <el-table :max-height="tableMaxHeight" v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="岗位编号" align="center" prop="postId" />
       <el-table-column label="岗位编码" align="center" prop="postCode" />
@@ -122,6 +122,7 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
+	</div>
 
     <!-- 添加或修改岗位对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -203,11 +204,22 @@ export default {
         postSort: [
           { required: true, message: "岗位顺序不能为空", trigger: "blur" }
         ]
-      }
+      },
+			tableMaxHeight:'200'
     };
   },
   created() {
     this.getList();
+  window.onresize = () => {
+  	      this.changeTableMaxHeight()
+  	    }
+  	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询岗位列表 */
@@ -303,7 +315,46 @@ export default {
       this.download('system/post/export', {
         ...this.queryParams
       }, `post_${new Date().getTime()}.xlsx`)
-    }
+    },
+		// 获取屏幕高度
+		showFilterForm () {
+		      this.filterActive = !this.filterActive
+		      this.changeTableMaxHeight()
+		    },
+		
+		    changeTableMaxHeight () {
+		      let height = document.body.offsetHeight // 网页可视区域高度
+		      // if (this.filterActive) {
+		      //   this.tableMaxHeight = height - 320
+		      // } else {
+		        this.tableMaxHeight = height - 350
+		      // }
+		      console.log(height)
+		    }
   }
 };
 </script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 162 - 108
ruoyi-ui/src/views/system/role/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" class="nghf">
       <el-form-item label="角色名称" prop="roleName">
         <el-input
           v-model="queryParams.roleName"
@@ -50,110 +50,114 @@
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
       </el-form-item>
     </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:role:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:role:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:role:remove']"
-        >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['system:role:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="角色编号" prop="roleId" width="120" />
-      <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" />
-      <el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" />
-      <el-table-column label="显示顺序" prop="roleSort" width="100" />
-      <el-table-column label="状态" align="center" width="100">
-        <template slot-scope="scope">
-          <el-switch
-            v-model="scope.row.status"
-            active-value="0"
-            inactive-value="1"
-            @change="handleStatusChange(scope.row)"
-          ></el-switch>
-        </template>
-      </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope" v-if="scope.row.roleId !== 1">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:role:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:role:remove']"
-          >删除</el-button>
-          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']">
-            <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
-            <el-dropdown-menu slot="dropdown">
-              <el-dropdown-item command="handleDataScope" icon="el-icon-circle-check"
-                v-hasPermi="['system:role:edit']">数据权限</el-dropdown-item>
-              <el-dropdown-item command="handleAuthUser" icon="el-icon-user"
-                v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item>
-            </el-dropdown-menu>
-          </el-dropdown>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+   
+    <div class="ntg">
+		<el-row :gutter="10" class="mb8">
+		  <el-col :span="1.5">
+		    <el-button
+		      type="primary"
+		      plain
+		      icon="el-icon-plus"
+		      size="mini"
+		      @click="handleAdd"
+		      v-hasPermi="['system:role:add']"
+		    >新增</el-button>
+		  </el-col>
+		  <el-col :span="1.5">
+		    <el-button
+		      type="success"
+		      plain
+		      icon="el-icon-edit"
+		      size="mini"
+		      :disabled="single"
+		      @click="handleUpdate"
+		      v-hasPermi="['system:role:edit']"
+		    >修改</el-button>
+		  </el-col>
+		  <el-col :span="1.5">
+		    <el-button
+		      type="danger"
+		      plain
+		      icon="el-icon-delete"
+		      size="mini"
+		      :disabled="multiple"
+		      @click="handleDelete"
+		      v-hasPermi="['system:role:remove']"
+		    >删除</el-button>
+		  </el-col>
+		  <el-col :span="1.5">
+		    <el-button
+		      type="warning"
+		      plain
+		      icon="el-icon-download"
+		      size="mini"
+		      @click="handleExport"
+		      v-hasPermi="['system:role:export']"
+		    >导出</el-button>
+		  </el-col>
+		  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+		</el-row>
+		
+		<el-table :height="tableMaxHeight"   v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">
+		  <el-table-column type="selection" width="55" align="center" />
+		  <el-table-column label="角色编号" prop="roleId" width="120" />
+		  <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" />
+		  <el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" />
+		  <el-table-column label="显示顺序" prop="roleSort" width="100" />
+		  <el-table-column label="状态" align="center" width="100">
+		    <template slot-scope="scope">
+		      <el-switch
+		        v-model="scope.row.status"
+		        active-value="0"
+		        inactive-value="1"
+		        @change="handleStatusChange(scope.row)"
+		      ></el-switch>
+		    </template>
+		  </el-table-column>
+		  <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+		    <template slot-scope="scope">
+		      <span>{{ parseTime(scope.row.createTime) }}</span>
+		    </template>
+		  </el-table-column>
+		  <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+		    <template slot-scope="scope" v-if="scope.row.roleId !== 1">
+		      <el-button
+		        size="mini"
+		        type="text"
+		        icon="el-icon-edit"
+		        @click="handleUpdate(scope.row)"
+		        v-hasPermi="['system:role:edit']"
+		      >修改</el-button>
+		      <el-button
+		        size="mini"
+		        type="text"
+		        icon="el-icon-delete"
+		        @click="handleDelete(scope.row)"
+		        v-hasPermi="['system:role:remove']"
+		      >删除</el-button>
+		      <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']">
+		        <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
+		        <el-dropdown-menu slot="dropdown">
+		          <el-dropdown-item command="handleDataScope" icon="el-icon-circle-check"
+		            v-hasPermi="['system:role:edit']">数据权限</el-dropdown-item>
+		          <el-dropdown-item command="handleAuthUser" icon="el-icon-user"
+		            v-hasPermi="['system:role:edit']">分配用户</el-dropdown-item>
+		        </el-dropdown-menu>
+		      </el-dropdown>
+		    </template>
+		  </el-table-column>
+		</el-table>
+		
+		<pagination
+		  v-show="total>0"
+		  :total="total"
+		  :page.sync="queryParams.pageNum"
+		  :limit.sync="queryParams.pageSize"
+		  @pagination="getList"
+		/>
+	</div>
+   
+    
 
     <!-- 添加或修改角色配置对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
@@ -338,11 +342,22 @@ export default {
         roleSort: [
           { required: true, message: "角色顺序不能为空", trigger: "blur" }
         ]
-      }
+      },
+	  tableMaxHeight:'200'
     };
   },
   created() {
     this.getList();
+	window.onresize = () => {
+	      this.changeTableMaxHeight()
+	    }
+	    this.changeTableMaxHeight()
+  },
+  mounted() {
+  	window.onresize = () => {
+  	          this.changeTableMaxHeight()
+  	        }
+  	        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询角色列表 */
@@ -599,7 +614,46 @@ export default {
       this.download('system/role/export', {
         ...this.queryParams
       }, `role_${new Date().getTime()}.xlsx`)
-    }
+    },
+	// 获取屏幕高度
+	showFilterForm () {
+	      this.filterActive = !this.filterActive
+	      this.changeTableMaxHeight()
+	    },
+	
+	    changeTableMaxHeight () {
+	      let height = document.body.offsetHeight // 网页可视区域高度
+	      // if (this.filterActive) {
+	      //   this.tableMaxHeight = height - 320
+	      // } else {
+	        this.tableMaxHeight = height - 350
+	      // }
+	      console.log(height)
+	    }
   }
 };
-</script>
+</script>
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+		padding-top: 10px;
+	   // 
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+	
+</style>

+ 1 - 1
ruoyi-ui/src/views/system/user/authRole.vue

@@ -33,7 +33,7 @@
         </template>
       </el-table-column>
     </el-table>
-
+    
     <pagination v-show="total>0" :total="total" :page.sync="pageNum" :limit.sync="pageSize" />
 
     <el-form label-width="100px">

+ 184 - 135
ruoyi-ui/src/views/system/user/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="20">
+    <el-row :gutter="20" >
       <!--部门数据-->
-      <el-col :span="4" :xs="24">
+      <!-- <el-col :span="4" :xs="24" style="background-color: #fff; padding-top: 5px; border-radius: 5px;">
         <div class="head-container">
           <el-input
             v-model="deptName"
@@ -26,14 +26,14 @@
             @node-click="handleNodeClick"
           />
         </div>
-      </el-col>
+      </el-col> -->
       <!--用户数据-->
-      <el-col :span="20" :xs="24">
-        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-          <el-form-item label="用户名称" prop="userName">
+      <el-col :span="24" :xs="24">
+        <el-form style="background-color: #fff; padding-top: 25px; margin-bottom: 20px; border-radius: 5px; padding:5px;" :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="账号" prop="userName">
             <el-input
               v-model="queryParams.userName"
-              placeholder="请输入用户名称"
+              placeholder="请输入账号"
               clearable
               style="width: 240px"
               @keyup.enter.native="handleQuery"
@@ -80,125 +80,130 @@
           </el-form-item>
         </el-form>
 
-        <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button
-              type="primary"
-              plain
-              icon="el-icon-plus"
-              size="mini"
-              @click="handleAdd"
-              v-hasPermi="['system:user:add']"
-            >新增</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="success"
-              plain
-              icon="el-icon-edit"
-              size="mini"
-              :disabled="single"
-              @click="handleUpdate"
-              v-hasPermi="['system:user:edit']"
-            >修改</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="danger"
-              plain
-              icon="el-icon-delete"
-              size="mini"
-              :disabled="multiple"
-              @click="handleDelete"
-              v-hasPermi="['system:user:remove']"
-            >删除</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="info"
-              plain
-              icon="el-icon-upload2"
-              size="mini"
-              @click="handleImport"
-              v-hasPermi="['system:user:import']"
-            >导入</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              type="warning"
-              plain
-              icon="el-icon-download"
-              size="mini"
-              @click="handleExport"
-              v-hasPermi="['system:user:export']"
-            >导出</el-button>
-          </el-col>
-          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
-        </el-row>
 
-        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="50" align="center" />
-          <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
-          <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
-          <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
-          <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
-            <template slot-scope="scope">
-              <el-switch
-                v-model="scope.row.status"
-                active-value="0"
-                inactive-value="1"
-                @change="handleStatusChange(scope.row)"
-              ></el-switch>
-            </template>
-          </el-table-column>
-          <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
-            <template slot-scope="scope">
-              <span>{{ parseTime(scope.row.createTime) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column
-            label="操作"
-            align="center"
-            width="160"
-            class-name="small-padding fixed-width"
-          >
-            <template slot-scope="scope" v-if="scope.row.userId !== 1">
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-edit"
-                @click="handleUpdate(scope.row)"
-                v-hasPermi="['system:user:edit']"
-              >修改</el-button>
-              <el-button
-                size="mini"
-                type="text"
-                icon="el-icon-delete"
-                @click="handleDelete(scope.row)"
-                v-hasPermi="['system:user:remove']"
-              >删除</el-button>
-              <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
-                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
-                <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item command="handleResetPwd" icon="el-icon-key"
-                    v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
-                  <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
-                    v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
-                </el-dropdown-menu>
-              </el-dropdown>
-            </template>
-          </el-table-column>
-        </el-table>
+	   <div class="ntg">
+		  <el-row :gutter="10" class="mb8">
+		    <el-col :span="1.5">
+		      <el-button
+		        type="primary"
+		        plain
+		        icon="el-icon-plus"
+		        size="mini"
+		        @click="handleAdd"
+		        v-hasPermi="['system:user:add']"
+		      >新增</el-button>
+		    </el-col>
+		    <el-col :span="1.5">
+		      <el-button
+		        type="success"
+		        plain
+		        icon="el-icon-edit"
+		        size="mini"
+		        :disabled="single"
+		        @click="handleUpdate"
+		        v-hasPermi="['system:user:edit']"
+		      >修改</el-button>
+		    </el-col>
+		    <el-col :span="1.5">
+		      <el-button
+		        type="danger"
+		        plain
+		        icon="el-icon-delete"
+		        size="mini"
+		        :disabled="multiple"
+		        @click="handleDelete"
+		        v-hasPermi="['system:user:remove']"
+		      >删除</el-button>
+		    </el-col>
+		    <el-col :span="1.5">
+		      <el-button
+		        type="info"
+		        plain
+		        icon="el-icon-upload2"
+		        size="mini"
+		        @click="handleImport"
+		        v-hasPermi="['system:user:import']"
+		      >导入</el-button>
+		    </el-col>
+		    <el-col :span="1.5">
+		      <el-button
+		        type="warning"
+		        plain
+		        icon="el-icon-download"
+		        size="mini"
+		        @click="handleExport"
+		        v-hasPermi="['system:user:export']"
+		      >导出</el-button>
+		    </el-col>
+		    <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
+		  </el-row>
+
+		  <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
+		    <el-table-column type="selection" width="50" align="center" />
+		    <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
+		    <el-table-column label="账号" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
+		    <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+		    <!-- <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" /> -->
+		    <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
+		    <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
+		      <template slot-scope="scope">
+		        <el-switch
+		          v-model="scope.row.status"
+		          active-value="0"
+		          inactive-value="1"
+		          @change="handleStatusChange(scope.row)"
+		        ></el-switch>
+		      </template>
+		    </el-table-column>
+		    <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
+		      <template slot-scope="scope">
+		        <span>{{ parseTime(scope.row.createTime) }}</span>
+		      </template>
+		    </el-table-column>
+		    <el-table-column
+		      label="操作"
+		      align="center"
+		      width="160"
+		      class-name="small-padding fixed-width"
+		    >
+        <!-- v-if="scope.row.userId !== 1" -->
+		      <template slot-scope="scope">
+		        <el-button
+		          size="mini"
+		          type="text"
+		          icon="el-icon-edit"
+		          @click="handleUpdate(scope.row)"
+		          v-hasPermi="['system:user:edit']"
+		        >修改</el-button>
+		        <el-button
+		          size="mini"
+		          type="text"
+		          icon="el-icon-delete"
+		          @click="handleDelete(scope.row)"
+		          v-hasPermi="['system:user:remove']"
+		        >删除</el-button>
+		        <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
+		          <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
+		          <el-dropdown-menu slot="dropdown">
+		            <el-dropdown-item command="handleResetPwd" icon="el-icon-key"
+		              v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
+		            <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check"
+		              v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
+		          </el-dropdown-menu>
+		        </el-dropdown>
+		      </template>
+		    </el-table-column>
+		  </el-table>
+
+		  <pagination
+		    v-show="total>0"
+		    :total="total"
+		    :page.sync="queryParams.pageNum"
+		    :limit.sync="queryParams.pageSize"
+		    @pagination="getList"
+		  />
+	   </div>
 
-        <pagination
-          v-show="total>0"
-          :total="total"
-          :page.sync="queryParams.pageNum"
-          :limit.sync="queryParams.pageSize"
-          @pagination="getList"
-        />
       </el-col>
     </el-row>
 
@@ -206,16 +211,28 @@
     <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-row>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="用户昵称" prop="nickName">
               <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="24">
             <el-form-item label="归属部门" prop="deptId">
               <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" placeholder="请选择归属部门" />
             </el-form-item>
           </el-col>
+          <!-- <el-col :span="12">
+            <el-form-item label="用户类型" prop="userType">
+              <el-select v-model="form.userType" placeholder="请选择用户类型">
+                <el-option
+                  v-for="dict in dict.type.usertype"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col> -->
         </el-row>
         <el-row>
           <el-col :span="12">
@@ -231,8 +248,8 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName">
-              <el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" />
+            <el-form-item v-if="form.userId == undefined" label="账号" prop="userName">
+              <el-input v-model="form.userName" placeholder="请输入账号" maxlength="30" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -348,7 +365,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "User",
-  dicts: ['sys_normal_disable', 'sys_user_sex'],
+  dicts: ['sys_normal_disable', 'sys_user_sex','usertype'],
   components: { Treeselect },
   data() {
     return {
@@ -415,7 +432,7 @@ export default {
       // 列信息
       columns: [
         { key: 0, label: `用户编号`, visible: true },
-        { key: 1, label: `用户名称`, visible: true },
+        { key: 1, label: `账号`, visible: true },
         { key: 2, label: `用户昵称`, visible: true },
         { key: 3, label: `部门`, visible: true },
         { key: 4, label: `手机号码`, visible: true },
@@ -425,8 +442,8 @@ export default {
       // 表单校验
       rules: {
         userName: [
-          { required: true, message: "用户名称不能为空", trigger: "blur" },
-          { min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' }
+          { required: true, message: "账号不能为空", trigger: "blur" },
+          { min: 2, max: 20, message: '账号长度必须介于 2 和 20 之间', trigger: 'blur' }
         ],
         nickName: [
           { required: true, message: "用户昵称不能为空", trigger: "blur" }
@@ -435,6 +452,9 @@ export default {
           { required: true, message: "用户密码不能为空", trigger: "blur" },
           { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
         ],
+        // userType: [
+        //   { required: true, message: "不能为空", trigger: "blur" },
+        // ],
         email: [
           {
             type: "email",
@@ -443,12 +463,14 @@ export default {
           }
         ],
         phonenumber: [
+          { required: true, message: "不能为空", trigger: "blur" },
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
             message: "请输入正确的手机号码",
             trigger: "blur"
           }
-        ]
+        ],
+
       }
     };
   },
@@ -522,7 +544,8 @@ export default {
         status: "0",
         remark: undefined,
         postIds: [],
-        roleIds: []
+        roleIds: [],
+        userType:'00'
       };
       this.resetForm("form");
     },
@@ -667,4 +690,30 @@ export default {
     }
   }
 };
-</script>
+</script>
+
+
+<style scoped lang="scss">
+	.app-container{
+		background-color: #f3f4f6;
+	   height: 100vh;
+	}
+	.ntg{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		.pagination-container{
+			height: 50px;
+		}
+	}
+	
+	.nghf{
+		background-color: #fff;
+		padding: 5px;
+		padding-top: 25px;
+		border-radius: 5px;
+		margin-bottom: 20px;
+	}
+
+</style>

+ 7 - 9
ruoyi-ui/src/views/system/user/profile/userAvatar.vue

@@ -70,13 +70,12 @@ export default {
       // 弹出层标题
       title: "修改头像",
       options: {
-        img: store.getters.avatar,  //裁剪图片的地址
-        autoCrop: true,             // 是否默认生成截图框
-        autoCropWidth: 200,         // 默认生成截图框宽度
-        autoCropHeight: 200,        // 默认生成截图框高度
-        fixedBox: true,             // 固定截图框大小 不允许改变
-        outputType:"png",           // 默认生成截图为PNG格式
-        filename: 'avatar'          // 文件名称
+        img: store.getters.avatar, //裁剪图片的地址
+        autoCrop: true, // 是否默认生成截图框
+        autoCropWidth: 200, // 默认生成截图框宽度
+        autoCropHeight: 200, // 默认生成截图框高度
+        fixedBox: true, // 固定截图框大小 不允许改变
+        outputType:"png" // 默认生成截图为PNG格式
       },
       previews: {},
       resizeHandler: null
@@ -126,7 +125,6 @@ export default {
         reader.readAsDataURL(file);
         reader.onload = () => {
           this.options.img = reader.result;
-          this.options.filename = file.name;
         };
       }
     },
@@ -134,7 +132,7 @@ export default {
     uploadImg() {
       this.$refs.cropper.getCropBlob(data => {
         let formData = new FormData();
-        formData.append("avatarfile", data, this.options.filename);
+        formData.append("avatarfile", data);
         uploadAvatar(formData).then(response => {
           this.open = false;
           this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;

+ 6 - 19
ruoyi-ui/src/views/system/user/profile/userInfo.vue

@@ -1,16 +1,16 @@
 <template>
-  <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+  <el-form ref="form" :model="user" :rules="rules" label-width="80px">
     <el-form-item label="用户昵称" prop="nickName">
-      <el-input v-model="form.nickName" maxlength="30" />
+      <el-input v-model="user.nickName" maxlength="30" />
     </el-form-item> 
     <el-form-item label="手机号码" prop="phonenumber">
-      <el-input v-model="form.phonenumber" maxlength="11" />
+      <el-input v-model="user.phonenumber" maxlength="11" />
     </el-form-item>
     <el-form-item label="邮箱" prop="email">
-      <el-input v-model="form.email" maxlength="50" />
+      <el-input v-model="user.email" maxlength="50" />
     </el-form-item>
     <el-form-item label="性别">
-      <el-radio-group v-model="form.sex">
+      <el-radio-group v-model="user.sex">
         <el-radio label="0">男</el-radio>
         <el-radio label="1">女</el-radio>
       </el-radio-group>
@@ -33,7 +33,6 @@ export default {
   },
   data() {
     return {
-      form: {},
       // 表单校验
       rules: {
         nickName: [
@@ -58,24 +57,12 @@ export default {
       }
     };
   },
-  watch: {
-    user: {
-      handler(user) {
-        if (user) {
-          this.form = { nickName: user.nickName, phonenumber: user.phonenumber, email: user.email, sex: user.sex };
-        }
-      },
-      immediate: true
-    }
-  },
   methods: {
     submit() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          updateUserProfile(this.form).then(response => {
+          updateUserProfile(this.user).then(response => {
             this.$modal.msgSuccess("修改成功");
-            this.user.phonenumber = this.form.phonenumber;
-            this.user.email = this.form.email;
           });
         }
       });

+ 2 - 2
ruoyi-ui/src/views/tool/build/index.vue

@@ -552,7 +552,7 @@ $lighterBlue: #409EFF;
   position: absolute;
   left: 0;
   top: 0;
-  height: 100vh;
+  
 }
 .left-scrollbar{
   height: calc(100vh - 42px);
@@ -566,7 +566,7 @@ $lighterBlue: #409EFF;
   box-sizing: border-box;
 }
 .center-board {
-  height: 100vh;
+  
   width: auto;
   margin: 0 350px 0 260px;
   box-sizing: border-box;

+ 14 - 27
ruoyi-ui/src/views/tool/gen/genInfoForm.vue

@@ -11,15 +11,6 @@
           </el-select>
         </el-form-item>
       </el-col>
-      <el-col :span="12">
-        <el-form-item prop="tplWebType">
-          <span slot="label">前端类型</span>
-          <el-select v-model="info.tplWebType">
-            <el-option label="Vue2 Element UI 模版" value="element-ui" />
-            <el-option label="Vue3 Element Plus 模版" value="element-plus" />
-          </el-select>
-        </el-form-item>
-      </el-col>
       <el-col :span="12">
         <el-form-item prop="packageName">
           <span slot="label">
@@ -68,19 +59,6 @@
         </el-form-item>
       </el-col>
 
-      <el-col :span="12">
-        <el-form-item prop="genType">
-          <span slot="label">
-            生成代码方式
-            <el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-          </span>
-          <el-radio v-model="info.genType" label="0">zip压缩包</el-radio>
-          <el-radio v-model="info.genType" label="1">自定义路径</el-radio>
-        </el-form-item>
-      </el-col>
-
       <el-col :span="12">
         <el-form-item>
           <span slot="label">
@@ -100,6 +78,19 @@
         </el-form-item>
       </el-col>
 
+      <el-col :span="12">
+        <el-form-item prop="genType">
+          <span slot="label">
+            生成代码方式
+            <el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top">
+              <i class="el-icon-question"></i>
+            </el-tooltip>
+          </span>
+          <el-radio v-model="info.genType" label="0">zip压缩包</el-radio>
+          <el-radio v-model="info.genType" label="1">自定义路径</el-radio>
+        </el-form-item>
+      </el-col>
+
       <el-col :span="24" v-if="info.genType == '1'">
         <el-form-item prop="genPath">
           <span slot="label">
@@ -264,14 +255,10 @@ export default {
       }
     };
   },
+  created() {},
   watch: {
     'info.subTableName': function(val) {
       this.setSubTableColumns(val);
-    },
-    'info.tplWebType': function(val) {
-      if (val === '') {
-        this.info.tplWebType = "element-ui";
-      }
     }
   },
   methods: {

Vissa filer visades inte eftersom för många filer har ändrats