sunlupeng 1 год назад
Родитель
Сommit
b4b771cfff

+ 2 - 2
src/api/system/tenant.js

@@ -1,12 +1,12 @@
 import request from '@/utils/request'
 
 // 使用用户名,获得租户编号
-export function getTenantIdByName(name) {
+export function getTenantIdByName(username) {
   return request({
     url: '/system/auth/getCurrentTenantIdByUsername',
     method: 'get',
     params: {
-      name
+      username
     }
   })
 }

+ 1 - 1
src/components/AppList/index.vue

@@ -71,7 +71,7 @@ export default {
             },
             {
               type: 3,
-              path: '/system/menu',
+              path: '/system/companyInfo',
               title: '系统管理',
               icon: 'chuchai',
             },

+ 113 - 5
src/layout/components/Homebar.vue

@@ -8,7 +8,7 @@
           :visible-arrow="false"
           trigger="click">
           <div class="corp-switch">
-            <div class="current-corp">sunny</div>
+            <div class="current-corp">{{ tenantName }}</div>
             <el-button type="text" style="color: #00B899;" @click="showProcessInstance()">
               <i class="el-icon-s-operation"></i>
               切换企业/团队
@@ -43,8 +43,8 @@
       </template>
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
-          <!-- <img :src="avatar" class="user-avatar"> -->
-          <img src="https://static-legacy.dingtalk.com/media/lQLPD4bTZ9hFfEHNAl_NAl-wu2M_jTTO8eEGNqKVr0MUAA_607_607.png" class="user-avatar">
+          <img :src="avatar" class="user-avatar">
+          <!-- <img src="https://static-legacy.dingtalk.com/media/lQLPD4bTZ9hFfEHNAl_NAl-wu2M_jTTO8eEGNqKVr0MUAA_607_607.png" class="user-avatar"> -->
           <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
           <!-- <i class="el-icon-caret-bottom" /> -->
         </div>
@@ -52,7 +52,7 @@
           <router-link to="/user/profile">
             <el-dropdown-item>个人中心</el-dropdown-item>
           </router-link>
-          <el-dropdown-item @click.native="setting = true">
+          <el-dropdown-item @click.native="companySetting('/system/companyInfo')">
             <span>企业管理</span>
           </el-dropdown-item>
           <el-dropdown-item divided @click.native="logout">
@@ -100,7 +100,8 @@ export default {
       'sidebar',
       'avatar',
       'nickname',
-      'device'
+      'device',
+      'tenantName'
     ]),
     setting: {
       get() {
@@ -129,6 +130,113 @@ export default {
     toggleSideBar() {
       this.$store.dispatch('app/toggleSideBar')
     },
+    async companySetting(item){
+      let key = item;
+      const menus = [
+        {
+          "id": 1,
+          "parentId": 0,
+          "name": "企业管理",
+          "path": "/system",
+          "component": null,
+          "componentName": null,
+          "icon": "system",
+          "visible": true,
+          "keepAlive": true,
+          "alwaysShow": true,
+          "children": [
+          {
+              "id": 109,
+              "parentId": 1,
+              "name": "企业信息",
+              "path": "companyInfo",
+              "component": "system/companyInfo/index",
+              "componentName": "SystemCompanyInfo",
+              "icon": "tree-table",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            },
+            {
+              "id": 102,
+              "parentId": 1,
+              "name": "菜单管理",
+              "path": "menu",
+              "component": "system/menu/index",
+              "componentName": "SystemMenu",
+              "icon": "tree-table",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            },
+            {
+              "id": 103,
+              "parentId": 1,
+              "name": "部门管理",
+              "path": "dept",
+              "component": "system/dept/index",
+              "componentName": "SystemDept",
+              "icon": "tree",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            },
+            {
+              "id": 100,
+              "parentId": 1,
+              "name": "用户管理",
+              "path": "user",
+              "component": "system/user/index",
+              "componentName": "SystemUser",
+              "icon": "user",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            },
+            {
+              "id": 101,
+              "parentId": 1,
+              "name": "角色管理",
+              "path": "role",
+              "component": "system/role/index",
+              "componentName": "SystemRole",
+              "icon": "peoples",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            },
+
+            {
+              "id": 105,
+              "parentId": 1,
+              "name": "字典管理",
+              "path": "dict",
+              "component": "system/dict/index",
+              "componentName": "SystemDictType",
+              "icon": "dict",
+              "visible": true,
+              "keepAlive": true,
+              "alwaysShow": true,
+              "children": null
+            }
+          ]
+        }
+      ]
+      localStorage.setItem("menus", JSON.stringify(menus))
+      this.$store.dispatch('GenerateRoutes', menus).then(accessRoutes => {
+          console.log(accessRoutes);
+          // 根据 roles 权限生成可访问的路由表
+          router.addRoutes(accessRoutes) // 动态添加可访问路由表
+        })
+        setTimeout(() => {
+          this.$router.push({ path: key });
+        }, 200);
+    },
     async logout() {
       this.$modal.confirm('确定注销并退出系统吗?', '提示').then(() => {
         this.$store.dispatch('LogOut').then(() => {

+ 1 - 2
src/layout/components/Userbar.vue

@@ -43,8 +43,7 @@
       </template>
       <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
         <div class="avatar-wrapper">
-          <!-- <img :src="avatar" class="user-avatar"> -->
-          <img src="https://static-legacy.dingtalk.com/media/lQLPD4bTZ9hFfEHNAl_NAl-wu2M_jTTO8eEGNqKVr0MUAA_607_607.png" class="user-avatar">
+          <img :src="avatar" class="user-avatar">
           <span v-if="nickname" class="user-nickname">{{ nickname }}</span>
           <!-- <i class="el-icon-caret-bottom" /> -->
         </div>

+ 2 - 0
src/store/getters.js

@@ -9,6 +9,8 @@ const getters = {
   avatar: state => state.user.avatar,
   name: state => state.user.name,
   nickname: state => state.user.nickname,
+  tenantId: state => state.user.tenantId,
+  tenantName: state => state.user.tenantName,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,

+ 25 - 13
src/store/modules/user.js

@@ -7,7 +7,9 @@ const user = {
     name: '',
     avatar: '',
     roles: [],
-    permissions: []
+    permissions: [],
+    tenantId: 0,
+    tenantName:'',
   },
 
   mutations: {
@@ -23,6 +25,12 @@ const user = {
     SET_AVATAR: (state, avatar) => {
       state.avatar = avatar
     },
+    SET_TENANTID: (state, tenantId) => {
+      state.tenantId = tenantId
+    },
+    SET_TENANTNAME: (state, tenantName) => {
+      state.tenantName = tenantName
+    },
     SET_ROLES: (state, roles) => {
       state.roles = roles
     },
@@ -128,7 +136,9 @@ const user = {
                   id: '',
                   avatar: '',
                   userName: '',
-                  nickname: ''
+                  nickname: '',
+                  tenantId:0,
+                  tenantName:'',
                 }
               }
             }
@@ -147,6 +157,8 @@ const user = {
           commit('SET_NAME', user.userName)
           commit('SET_NICKNAME', user.nickname)
           commit('SET_AVATAR', avatar)
+          commit('SET_TENANTID', user.tenantId)
+          commit('SET_TENANTNAME', user.tenantName)
           resolve(res)
         }).catch(error => {
           reject(error)
@@ -156,17 +168,17 @@ const user = {
 
     // 退出系统
     LogOut({ commit, state }) {
-      removeToken()
-      // return new Promise((resolve, reject) => {
-      //   logout(state.token).then(() => {
-      //     commit('SET_ROLES', [])
-      //     commit('SET_PERMISSIONS', [])
-      //     removeToken()
-      //     resolve()
-      //   }).catch(error => {
-      //     reject(error)
-      //   })
-      // })
+      // removeToken()
+      return new Promise((resolve, reject) => {
+        logout(state.token).then(() => {
+          commit('SET_ROLES', [])
+          commit('SET_PERMISSIONS', [])
+          removeToken()
+          resolve()
+        }).catch(error => {
+          reject(error)
+        })
+      })
     }
   }
 }

+ 7 - 3
src/views/index.vue

@@ -5,7 +5,7 @@
     </div>
     <div class="dashboard-container">
 
-      <div v-if="!hasCorp" class="dashboard-no-corps">
+      <div v-if="tenantId==1" class="dashboard-no-corps">
         <div class="dashboard-no-corp-title">你当前没有任何企业</div>
         <div class="dashboard-no-corp-content" @click="joinOrCreateCorp('加入')">
           <div class="no-corp-pic">
@@ -214,8 +214,8 @@
           <el-form-item label="企业/团队名称" prop="name" v-if="corpTitle == '创建'">
             <el-input v-model="form.name" placeholder='请输入你的企业/团队名称'></el-input>
           </el-form-item>
-          <el-form-item label="邀请链接" prop="url" v-if="corpTitle == '加入'">
-            <el-input v-model="form.url" placeholder='请输入你的邀请链接'></el-input>
+          <el-form-item label="邀请码" prop="tenantId" v-if="corpTitle == '加入'">
+            <el-input v-model="form.url" placeholder='请输入你的邀请'></el-input>
           </el-form-item>
           <el-button size="small" type="primary" style="text-align: center;width: 100%;margin-top: 10px;"
             @click="submitForm('ruleForm')">
@@ -235,6 +235,7 @@
 </template>
 
 <script>
+import { mapGetters } from 'vuex'
 import { getUnreadNotifyMessageList } from "@/api/system/notify/message";
 import { createTenant, joinTenant,changeTenant } from "@/api/system/tenant";
 import router from '@/router'
@@ -328,6 +329,9 @@ export default {
     }
   },
   computed: {
+    ...mapGetters([
+      'tenantId',
+    ]),
     topNav: {
       get() {
         return this.$store.state.settings.topNav