sunlupeng hai 1 ano
pai
achega
7ce6010f38

+ 17 - 0
src/api/system/tenant.js

@@ -1,5 +1,22 @@
 import request from '@/utils/request'
 
+
+// 获取我加入的租户列表
+export function getOwnJoinTenants() {
+  return request({
+    url: '/system/tenant/getOwnJoinTenants',
+    method: 'get'
+  })
+}
+
+// 获取我创建的租户列表
+export function getOwnCreateTenants() {
+  return request({
+    url: '/system/tenant/getOwnCreateTenants',
+    method: 'get'
+  })
+}
+
 // 使用用户名,获得租户编号
 export function getTenantIdByName(username) {
   return request({

+ 1 - 0
src/layout/components/Homebar.vue

@@ -78,6 +78,7 @@ import RuoYiDoc from '@/components/RuoYi/Doc'
 import NotifyMessage from '@/layout/components/Message'
 import {getPath} from "@/utils/ruoyi";
 import logoImg from '@/assets/logo/work.png'
+import router from '@/router'
 export default {
   data() {
     return {

+ 2 - 2
src/layout/components/Navbar.vue

@@ -40,8 +40,8 @@
 
       <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>

+ 16 - 0
src/store/modules/user.js

@@ -1,5 +1,6 @@
 import { login, logout, getInfo, socialLogin, smsLogin,smsRegister,smsResetPassword } from '@/api/login'
 import { setToken, removeToken } from '@/utils/auth'
+import { changeTenant } from '@/api/system/tenant'
 
 const user = {
   state: {
@@ -123,6 +124,21 @@ const user = {
         })
       })
     },
+
+    ChangeTenant({ commit }, userInfo) {
+      const mobile = userInfo.mobile.trim()
+      const mobileCode = userInfo.mobileCode
+      return new Promise((resolve, reject) => {
+        changeTenant(mobile, mobileCode).then(res => {
+          res = res.data;
+          // 设置 token
+          setToken(res)
+          resolve()
+        }).catch(error => {
+          reject(error)
+        })
+      })
+    },
     // 获取用户信息
     GetInfo({ commit, state }) {
       return new Promise((resolve, reject) => {

+ 32 - 51
src/views/index.vue

@@ -161,10 +161,10 @@
           <div class="corp-desc">我创建的企业/团队</div>
           <div class="corp-wrapper" v-for="(item, index) in myTeamList" :key="index" @mouseover="showMyTeam = index" @mouseleave="showMyTeam = null">
             <div class="corp-item">
-              <div class="corp-name" :class="{'is-owner': item.isOwner}" :title="item.name">{{ item.name }}</div>
+              <div class="corp-name" :class="{'is-owner': item.actived}" :title="item.name">{{ item.name }}</div>
               <div class="corp-op">
-                <span class="op-current" v-show="item.isOwner">当前所在企业/团队</span>
-                <el-button v-show="!item.isOwner && showMyTeam == index" type="text" class="style-text" @click.stop="changeTeam(item)">
+                <span class="op-current" v-show="item.actived">当前所在企业/团队</span>
+                <el-button v-show="!item.actived && showMyTeam == index" type="text" class="style-text" @click.stop="changeTeam(item)">
                   <span>进入企业/团队<i class="el-icon-right"></i></span>
                 </el-button>
               </div>
@@ -182,8 +182,8 @@
             <div class="corp-item">
               <div class="corp-name" :title="item.name">{{ item.name }}</div>
               <div class="corp-op">
-                <span class="op-current" v-show="item.isOwner">当前所在企业/团队</span>
-                <el-button v-show="!item.isOwner && showJoinTeam == index" type="text" class="style-text" @click.stop="changeTeam(item)">
+                <span class="op-current" v-show="item.actived">当前所在企业/团队</span>
+                <el-button v-show="!item.actived && showJoinTeam == index" type="text" class="style-text" @click.stop="changeTeam(item)">
                   <span>进入企业/团队<i class="el-icon-right"></i></span>
                 </el-button>
               </div>
@@ -237,7 +237,7 @@
 <script>
 import { mapGetters } from 'vuex'
 import { getUnreadNotifyMessageList } from "@/api/system/notify/message";
-import { createTenant, joinTenant,changeTenant } from "@/api/system/tenant";
+import { createTenant, joinTenant,changeTenant,getOwnCreateTenants,getOwnJoinTenants } from "@/api/system/tenant";
 import router from '@/router'
 import store from '@/store'
 import Homebar from '@/layout/components/Homebar'
@@ -256,31 +256,9 @@ export default {
   data() {
     return {
       showMyTeam: null,
-      myTeamList: [
-        {
-          id: 1,
-          name: 'sunny',
-          isOwner: true,
-        },
-        {
-          id: 2,
-          name: 'jacker',
-          isOwner: false,
-        },
-      ],
+      myTeamList: [],
       showJoinTeam: null,
-      joinTeamList: [
-        {
-          id: 3,
-          name: 'DP开发团队',
-          isOwner: false,
-        },
-        {
-          id: 4,
-          name: '开发团队',
-          isOwner: false,
-        },
-      ],
+      joinTeamList: [],
       hasCorp:true,
       corpTitle: '',
       form: {
@@ -301,24 +279,7 @@ export default {
       loading: false,
       // 列表
       notifyMessageList: [
-        // {
-        //   templateContent: 'Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。',
-        //   createTime: '2024-07-02'
-        // },
-        // {
-        //   templateContent: 'Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。',
-        //   createTime: '2024-07-02'
-        // },
-        // {
-        //   templateContent: 'Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。',
-        //   createTime: '2024-07-02'
-        // },
-        // {
-        //   templateContent:'Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。Row 组件 提供 gutter 属性来指定每一栏之间的间隔,默认间隔为 0。',
-        //   createTime:'2024-07-02'
-        // },
       ],
-      src: 'https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg',
       dialogVisible: false,
       dialogVisibleApp: false,
       innerVisible: false,
@@ -339,15 +300,31 @@ export default {
     }
   },
   created() {
-    this.getList();
+    this.getUnreadNotifyMessageList();
+    this.getOwnJoinTenantList();
+    this.getOwnCreateTenantList();
   },
   methods: {
+    // 获取我加入的租户列表
+    getOwnJoinTenantList() {
+      getOwnJoinTenants().then(response => {
+        this.joinTeamList = response.data;
+      })
+    },
+    // 获取我创建的租户列表
+    getOwnCreateTenantList() {
+      getOwnCreateTenants().then(response => {
+        this.myTeamList = response.data;
+      })
+    },
     //切换企业
     changeTeam(val){
       console.log(val);
-      changeTenant({tenantId:val.id}).then(response => {
-              this.$modal.msgSuccess("切换成功");
+      store.dispatch("ChangeTenant", val).then(() => {
+            this.$router.push({ path: "/" }).catch(() => {
             });
+          }).catch(() => {
+          });
     },
      // 菜单选择事件
      handleSelect(item) {
@@ -431,12 +408,16 @@ export default {
             createTenant({status:0,name:this.form.name}).then(response => {
               this.$modal.msgSuccess("创建成功");
             });
+            
           }
           else{
             joinTenant({tenantId:this.form.tenantId}).then(response => {
               this.$modal.msgSuccess("加入成功");
             });
           }
+          this.joinOrCreateVisible = false;
+          this.getOwnJoinTenantList();
+          this.getOwnCreateTenantList();
           
         } else {
           console.log('error submit!!');
@@ -467,7 +448,7 @@ export default {
     openAppList() {
       this.dialogVisibleApp = true;
     },
-    getList: function () {
+    getUnreadNotifyMessageList: function () {
       this.loading = true;
       getUnreadNotifyMessageList().then(response => {
         this.notifyMessageList = response.data;

+ 3 - 1
src/views/login.vue

@@ -101,7 +101,8 @@ import {
   setPassword, 
   setRememberMe, 
   setTenantId, 
-  setUsername
+  setUsername,
+  removeTenantId
 } from "@/utils/auth";
 
 export default {
@@ -127,6 +128,7 @@ export default {
               if (/^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/.test(value) === false) {
                 callback(new Error("手机号格式错误"));
               } else {
+                removeTenantId()
                 getTenantIdByName(value).then(res => {
                   const tenantId = res.data;
                   if (tenantId && tenantId >= 0) {