From ed066dc0bdfa9a7c3a3d55b8b4f70cd07e2e8d8a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 30 五月 2025 09:26:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into dev

---
 src/views/tool/build/index.vue                |    2 
 src/views/system/user/index.vue               |  107 +++++++-------------------
 src/assets/styles/sidebar.scss                |   46 +++++++++--
 src/layout/components/Sidebar/index.vue       |    2 
 src/layout/components/Settings/index.vue      |    2 
 src/assets/styles/variables.module.scss       |    6 
 src/layout/components/Sidebar/SidebarItem.vue |   32 ++++++-
 src/store/modules/settings.js                 |    2 
 8 files changed, 100 insertions(+), 99 deletions(-)

diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss
index c2f4c4b..3135b4e 100644
--- a/src/assets/styles/sidebar.scss
+++ b/src/assets/styles/sidebar.scss
@@ -26,6 +26,7 @@
     overflow: hidden;
     -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
     box-shadow: none;
+    margin: 0 auto;
 
     // reset element-ui css
     .horizontal-collapse-transition {
@@ -53,24 +54,29 @@
     .is-horizontal {
       display: none;
     }
-
     a {
       display: inline-block;
-      width: 100%;
+      width: 80px;
+      height: 80px;
       overflow: hidden;
+      margin-top: 20px;
     }
 
+
     .svg-icon {
-      margin-right: 16px;
+      //margin-right: 16px;
     }
 
     .el-menu {
       border: none;
       height: 100%;
       width: 100% !important;
+      padding: 0 20px !important;
     }
 
     .el-menu-item, .menu-title {
+      line-height: 20px;
+      font-size: 14px;
       overflow: hidden !important;
       text-overflow: ellipsis !important;
       white-space: nowrap !important;
@@ -83,30 +89,47 @@
     // menu hover
     .sub-menu-title-noDropdown,
     .el-sub-menu__title {
+      border-radius: 10px 10px 10px 10px;
       &:hover {
         background-color: #ffffff !important;
+        border-radius: 10px 10px 10px 10px;
+        color: $base-menu-color-active !important;
       }
     }
 
     & .theme-dark .is-active > .el-sub-menu__title {
       color: $base-menu-color-active !important;
     }
-
+    & .nest-menu > a {
+      right: 20px;
+      position: relative;
+    }
+    & .nest-menu> .el-sub-menu > .el-sub-menu__title {
+      right: 20px;
+      position: relative;
+    }
     & .nest-menu .el-sub-menu>.el-sub-menu__title,
     & .el-sub-menu .el-menu-item {
-      min-width: $base-sidebar-width !important;
 
+
+      height: 80px;
+      min-width: 80px !important;
+      border-radius: 10px 10px 10px 10px;
       &:hover {
         background-color: #ffffff !important;
+        border-radius: 10px 10px 10px 10px;
+        color: $base-menu-color-active !important;
       }
     }
 
     & .theme-dark .nest-menu .el-sub-menu>.el-sub-menu__title,
     & .theme-dark .el-sub-menu .el-menu-item {
       background-color: $base-sub-menu-background;
-
+      border-radius: 10px 10px 10px 10px;
       &:hover {
         background-color: #ffffff !important;
+        border-radius: 10px 10px 10px 10px;
+        color: $base-menu-color-active !important;
       }
     }
   }
@@ -121,14 +144,14 @@
     }
 
     .sub-menu-title-noDropdown {
-      padding: 0 !important;
+      padding: 0 0 0 20px !important;
       position: relative;
 
       .el-tooltip {
         padding: 0 !important;
 
         .svg-icon {
-          margin-left: 20px;
+          //margin-left: 20px;
         }
       }
     }
@@ -140,7 +163,7 @@
         padding: 0 !important;
 
         .svg-icon {
-          margin-left: 20px;
+          //margin-left: 20px;
         }
 
       }
@@ -205,15 +228,18 @@
 .el-menu--vertical {
   &>.el-menu {
     .svg-icon {
-      margin-right: 16px;
+      //margin-right: 16px;
     }
   }
 
   .nest-menu .el-sub-menu>.el-sub-menu__title,
   .el-menu-item {
+    border-radius: 10px 10px 10px 10px;
     &:hover {
       // you can use $sub-menuHover
       background-color: #ffffff !important;
+      border-radius: 10px 10px 10px 10px;
+      color: $base-menu-color-active !important;
     }
   }
 
diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss
index 13ffa62..678fe0d 100644
--- a/src/assets/styles/variables.module.scss
+++ b/src/assets/styles/variables.module.scss
@@ -21,12 +21,12 @@
 $menuLightActiveText: #165DFF;
 
 // 鍩虹鍙橀噺
-$base-sidebar-width: 200px;
-$sideBarWidth: 200px;
+$base-sidebar-width: 120px;
+$sideBarWidth: 120px;
 
 // 鑿滃崟鏆楄壊鍙橀噺
 $base-menu-color: #bfcbd9;
-$base-menu-color-active: #f4f4f5;
+$base-menu-color-active: #165DFF;
 $base-menu-background: #165DFF;
 $base-sub-menu-background: #1f2d3d;
 $base-sub-menu-hover: #001528;
diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue
index 8232e76..0c3d72c 100644
--- a/src/layout/components/Settings/index.vue
+++ b/src/layout/components/Settings/index.vue
@@ -108,7 +108,7 @@
 }
 
 function themeChange(val) {
-  settingsStore.theme = val
+  settingsStore.theme = '165DFF'
   handleThemeStyle(val)
 }
 
diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
index 27f987c..4884381 100644
--- a/src/layout/components/Sidebar/SidebarItem.vue
+++ b/src/layout/components/Sidebar/SidebarItem.vue
@@ -2,8 +2,8 @@
   <div v-if="!item.hidden">
     <template v-if="hasOneShowingChild(item.children, item) && (!onlyOneChild.children || onlyOneChild.noShowingChildren) && !item.alwaysShow">
       <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
-        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
-          <svg-icon :icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"/>
+        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }" style="display: flex;flex-direction: column;justify-content: center;height: 80px;padding: 0;width: 80px">
+          <svg-icon :icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" style="width: 30px;height: 30px;margin-bottom: 6px"/>
           <template #title><span class="menu-title" :title="hasTitle(onlyOneChild.meta.title)">{{ onlyOneChild.meta.title }}</span></template>
         </el-menu-item>
       </app-link>
@@ -11,8 +11,8 @@
 
     <el-sub-menu v-else ref="subMenu" :index="resolvePath(item.path)" teleported>
       <template v-if="item.meta" #title>
-        <svg-icon :icon-class="item.meta && item.meta.icon" />
-        <span class="menu-title" :title="hasTitle(item.meta.title)">{{ item.meta.title }}</span>
+        <svg-icon :icon-class="item.meta && item.meta.icon" style="width: 30px;height: 30px;margin-bottom: 6px"/>
+        <span class="menu-title" :title="hasTitle(item.meta.title)">{{ item.meta.title}}</span>
       </template>
 
       <sidebar-item
@@ -99,5 +99,27 @@
 }
 </script>
 <style scoped>
-
+:deep(.el-sub-menu__title) {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  padding: 0 !important;
+  height: 80px;
+  margin-top: 20px;
+}
+:deep(.submenu-title-noDropdown) {
+  padding: 0 !important;
+}
+:deep(.router-link-exact-active) {
+  width: 80px;
+  height: 80px;
+  background: #FFFFFF;
+  border-radius: 10px 10px 10px 10px;
+}
+:deep(.el-sub-menu__icon-arrow) {
+  right: -12px !important;
+  &:hover {
+    color: #ffffff !important;
+  }
+}
 </style>
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
index c472bf3..db83af1 100644
--- a/src/layout/components/Sidebar/index.vue
+++ b/src/layout/components/Sidebar/index.vue
@@ -4,7 +4,7 @@
     <el-scrollbar wrap-class="scrollbar-wrapper">
       <el-menu
         :default-active="activeMenu"
-        :collapse="true"
+        :collapse="false"
         :background-color="getMenuBackground"
         :text-color="getMenuTextColor"
         :unique-opened="true"
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
index 194d678..51aaeb1 100644
--- a/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -14,7 +14,7 @@
   {
     state: () => ({
       title: '',
-      theme: storageSetting.theme || '#409EFF',
+      theme: storageSetting.theme || '#165DFF',
       sideTheme: storageSetting.sideTheme || sideTheme,
       showSettings: showSettings,
       topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 2cfb05e..11f482b 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -17,11 +17,8 @@
         <pane size="84">
           <el-col>
             <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-              <el-form-item label="鐢ㄦ埛鍚嶇О" prop="userName">
-                <el-input v-model="queryParams.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" clearable style="width: 240px" @keyup.enter="handleQuery" />
-              </el-form-item>
-              <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
-                <el-input v-model="queryParams.phonenumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" clearable style="width: 240px" @keyup.enter="handleQuery" />
+              <el-form-item label="鐧诲綍璐﹀彿" prop="userName">
+                <el-input v-model="queryParams.userName" placeholder="璇疯緭鍏�" clearable style="width: 240px" @keyup.enter="handleQuery" />
               </el-form-item>
               <el-form-item label="鐘舵��" prop="status">
                 <el-select v-model="queryParams.status" placeholder="鐢ㄦ埛鐘舵��" clearable style="width: 240px">
@@ -59,10 +56,9 @@
             <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="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 #default="scope">
                   <el-switch
@@ -106,8 +102,22 @@
       <el-form :model="form" :rules="rules" ref="userRef" label-width="80px">
         <el-row>
           <el-col :span="12">
-            <el-form-item label="鐢ㄦ埛鏄电О" prop="nickName">
-              <el-input v-model="form.nickName" placeholder="璇疯緭鍏ョ敤鎴锋樀绉�" maxlength="30" />
+            <el-form-item label="鐧诲綍璐﹀彿" prop="userName">
+              <el-input v-model="form.userName" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="鐢ㄦ埛濮撳悕" prop="nickName">
+              <el-input v-model="form.nickName" placeholder="璇疯緭鍏ュ鍚�" maxlength="30" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="瑙掕壊" prop="roleIds">
+              <el-select v-model="form.roleIds" multiple placeholder="璇烽�夋嫨">
+                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
+              </el-select>
             </el-form-item>
           </el-col>
           <el-col :span="12">
@@ -118,64 +128,15 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item label="鎵嬫満鍙风爜" prop="phonenumber">
-              <el-input v-model="form.phonenumber" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" maxlength="11" />
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="閭" prop="email">
-              <el-input v-model="form.email" placeholder="璇疯緭鍏ラ偖绠�" maxlength="50" />
-            </el-form-item>
-          </el-col>
-        </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>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item v-if="form.userId == undefined" label="鐢ㄦ埛瀵嗙爜" prop="password">
-              <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password />
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="12">
-            <el-form-item label="鐢ㄦ埛鎬у埆">
-              <el-select v-model="form.sex" placeholder="璇烽�夋嫨">
-                <el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
             <el-form-item label="鐘舵��">
               <el-radio-group v-model="form.status">
                 <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
-        </el-row>
-        <el-row>
           <el-col :span="12">
-            <el-form-item label="宀椾綅">
-              <el-select v-model="form.postIds" multiple placeholder="璇烽�夋嫨">
-                <el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12">
-            <el-form-item label="瑙掕壊">
-              <el-select v-model="form.roleIds" multiple placeholder="璇烽�夋嫨">
-                <el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="24">
-            <el-form-item label="澶囨敞">
-              <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+            <el-form-item v-if="title === '娣诲姞鐢ㄦ埛'" label="鐢ㄦ埛瀵嗙爜" prop="password">
+              <el-input v-model="form.password" placeholder="璇疯緭鍏ョ敤鎴峰瘑鐮�" type="password" maxlength="20" show-password/>
             </el-form-item>
           </el-col>
         </el-row>
@@ -259,8 +220,8 @@
 // 鍒楁樉闅愪俊鎭�
 const columns = ref([
   { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
-  { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
-  { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+  { key: 1, label: `鐧诲綍璐﹀彿`, visible: true },
+  { key: 2, label: `鐢ㄦ埛濮撳悕`, visible: true },
   { key: 3, label: `閮ㄩ棬`, visible: true },
   { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
   { key: 5, label: `鐘舵�乣, visible: true },
@@ -273,16 +234,15 @@
     pageNum: 1,
     pageSize: 10,
     userName: undefined,
-    phonenumber: undefined,
     status: undefined,
     deptId: undefined
   },
   rules: {
-    userName: [{ required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }, { min: 2, max: 20, message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿", trigger: "blur" }],
-    nickName: [{ required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" }],
+    userName: [{ required: true, message: "鐧诲綍璐﹀彿涓嶈兘涓虹┖", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }],
+    nickName: [{ required: true, message: "鐢ㄦ埛濮撳悕涓嶈兘涓虹┖", trigger: "blur" }],
+    roleIds: [{ required: true, message: "瑙掕壊涓嶈兘涓虹┖", trigger: "change" }],
+    deptId: [{ required: true, message: "閮ㄩ棬涓嶈兘涓虹┖", trigger: "change" }],
     password: [{ required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" }, { min: 5, max: 20, message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿", trigger: "blur" }, { pattern: /^[^<>"'|\\]+$/, message: "涓嶈兘鍖呭惈闈炴硶瀛楃锛�< > \" ' \\\ |", trigger: "blur" }],
-    email: [{ type: "email", message: "璇疯緭鍏ユ纭殑閭鍦板潃", trigger: ["blur", "change"] }],
-    phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜", trigger: "blur" }]
   }
 })
 
@@ -466,13 +426,8 @@
     deptId: undefined,
     userName: undefined,
     nickName: undefined,
-    password: undefined,
-    phonenumber: undefined,
-    email: undefined,
-    sex: undefined,
+    password: '123456',
     status: "0",
-    remark: undefined,
-    postIds: [],
     roleIds: []
   }
   proxy.resetForm("userRef")
@@ -492,7 +447,7 @@
     roleOptions.value = response.roles
     open.value = true
     title.value = "娣诲姞鐢ㄦ埛"
-    form.value.password = initPassword.value
+    form.value.password = '123456'
   })
 }
 
@@ -504,11 +459,9 @@
     form.value = response.data
     postOptions.value = response.posts
     roleOptions.value = response.roles
-    form.value.postIds = response.postIds
     form.value.roleIds = response.roleIds
     open.value = true
     title.value = "淇敼鐢ㄦ埛"
-    form.password = ""
   })
 }
 
diff --git a/src/views/tool/build/index.vue b/src/views/tool/build/index.vue
index e630740..92b807b 100644
--- a/src/views/tool/build/index.vue
+++ b/src/views/tool/build/index.vue
@@ -307,7 +307,7 @@
 </script>
 
 <style lang='scss'>
-$lighterBlue: #409EFF;
+$lighterBlue: #165DFF;
 
 .container {
   position: relative;

--
Gitblit v1.9.3