update 优化 更改登陆页面选择租户形式

This commit is contained in:
疯狂的狮子li 2023-02-09 11:38:00 +08:00
parent 16c8f65909
commit 86f6ce717c
8 changed files with 59 additions and 76 deletions

View File

@ -1,19 +1,24 @@
package com.ruoyi.web.controller; package com.ruoyi.web.controller;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.model.LoginBody; import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.model.SmsLoginBody; import com.ruoyi.common.core.domain.model.SmsLoginBody;
import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.domain.bo.SysTenantBo;
import com.ruoyi.system.domain.vo.RouterVo; import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.domain.vo.SysTenantVo;
import com.ruoyi.system.domain.vo.SysUserVo; import com.ruoyi.system.domain.vo.SysUserVo;
import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysMenuService;
import com.ruoyi.system.service.ISysTenantService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.web.service.SysLoginService;
import com.ruoyi.web.domain.vo.LoginVo; import com.ruoyi.web.domain.vo.LoginVo;
import com.ruoyi.web.domain.vo.TenantListVo;
import com.ruoyi.web.domain.vo.UserInfoVo; import com.ruoyi.web.domain.vo.UserInfoVo;
import com.ruoyi.web.service.SysLoginService;
import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -37,6 +42,7 @@ public class SysLoginController {
private final SysLoginService loginService; private final SysLoginService loginService;
private final ISysMenuService menuService; private final ISysMenuService menuService;
private final ISysUserService userService; private final ISysUserService userService;
private final ISysTenantService tenantService;
/** /**
* 登录方法 * 登录方法
@ -99,6 +105,19 @@ public class SysLoginController {
return R.ok("退出成功"); return R.ok("退出成功");
} }
/**
* 登录页面租户下拉框
*
* @return 租户列表
*/
@SaIgnore
@GetMapping("/tenant/list")
public R<List<TenantListVo>> tenantList() {
List<SysTenantVo> tenantList = tenantService.queryList(new SysTenantBo());
List<TenantListVo> voList = BeanUtil.copyToList(tenantList, TenantListVo.class);
return R.ok(voList);
}
/** /**
* 获取用户信息 * 获取用户信息
* *

View File

@ -0,0 +1,17 @@
package com.ruoyi.web.domain.vo;
import lombok.Data;
/**
* 租户列表
*
* @author Lion Li
*/
@Data
public class TenantListVo {
private String tenantId;
private String companyName;
}

View File

@ -1,7 +1,6 @@
package com.ruoyi.system.controller.system; package com.ruoyi.system.controller.system;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore;
import com.baomidou.lock.annotation.Lock4j; import com.baomidou.lock.annotation.Lock4j;
import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.R;
@ -52,15 +51,6 @@ public class SysTenantController extends BaseController {
return sysTenantService.queryPageList(bo, pageQuery); return sysTenantService.queryPageList(bo, pageQuery);
} }
/**
* 根据关键字查询租户列表
*/
@SaIgnore
@GetMapping("/listByWord/{keyword}")
public R<List<SysTenantVo>> listByWord(@PathVariable String keyword) {
return R.ok(sysTenantService.listByWord(keyword));
}
/** /**
* 导出租户列表 * 导出租户列表
*/ */

View File

@ -30,11 +30,6 @@ public interface ISysTenantService {
*/ */
TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery); TableDataInfo<SysTenantVo> queryPageList(SysTenantBo bo, PageQuery pageQuery);
/**
* 根据关键字查询租户列表
*/
List<SysTenantVo> listByWord(String keyword);
/** /**
* 查询租户列表 * 查询租户列表
*/ */

View File

@ -77,17 +77,6 @@ public class SysTenantServiceImpl implements ISysTenantService {
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
/**
* 根据关键字查询租户列表
*/
@Override
public List<SysTenantVo> listByWord(String keyword) {
SysTenantBo bo = new SysTenantBo();
bo.setCompanyName(keyword);
LambdaQueryWrapper<SysTenant> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<SysTenant> buildQueryWrapper(SysTenantBo bo) { private LambdaQueryWrapper<SysTenant> buildQueryWrapper(SysTenantBo bo) {
LambdaQueryWrapper<SysTenant> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SysTenant> lqw = Wrappers.lambdaQuery();
lqw.eq(StringUtils.isNotBlank(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId()); lqw.eq(StringUtils.isNotBlank(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId());

View File

@ -70,3 +70,14 @@ export function getCodeSms() {
timeout: 20000 timeout: 20000
}) })
} }
// 获取租户列表
export function tenantList() {
return request({
url: '/tenant/list',
headers: {
isToken: false
},
method: 'get'
})
}

View File

@ -56,10 +56,3 @@ export function delTenant(id) {
}) })
} }
// 根据关键字获取相关企业名称
export function listByWord(data) {
return request({
url: '/system/tenant/listByWord/' + data,
method: 'get'
})
}

View File

@ -3,33 +3,15 @@
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title">RuoYi-Vue-Plus后台管理系统</h3> <h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
<el-form-item prop="tenantId"> <el-form-item prop="tenantId">
<el-input <el-select v-model="loginForm.tenantId" filterable placeholder="请选择/输入公司名称" style="width: 100%">
v-model="loginForm.tenantId"
type="text"
auto-complete="off"
placeholder="租户编号"
>
<svg-icon slot="prefix" icon-class="input" class="el-input__icon input-icon" />
</el-input>
</el-form-item>
<el-form-item prop="companyName">
<el-select v-if="loginForm.tenantId"
v-model="loginForm.companyName"
filterable
remote
reserve-keyword
placeholder="请输入公司名称"
:remote-method="remoteMethod"
:loading="selectLoading" style="width: 100%">
<el-option <el-option
v-for="item in companyList" v-for="item in tenantList"
:key="item.id" :key="item.tenantId"
:label="item.companyName" :label="item.companyName"
:value="item.tenantId"> :value="item.tenantId">
</el-option> </el-option>
<svg-icon slot="prefix" icon-class="input" class="el-input__icon input-icon" /> <svg-icon slot="prefix" icon-class="input" class="el-input__icon input-icon" />
</el-select> </el-select>
<span v-else>{{loginForm.companyName}}</span>
</el-form-item> </el-form-item>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input <el-input
@ -91,10 +73,9 @@
</template> </template>
<script> <script>
import { getCodeImg } from "@/api/login"; import { getCodeImg, tenantList } from "@/api/login";
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import { encrypt, decrypt } from '@/utils/jsencrypt' import { encrypt, decrypt } from '@/utils/jsencrypt'
import { listByWord } from "@/api/system/tenant";
export default { export default {
name: "Login", name: "Login",
@ -127,8 +108,8 @@ export default {
// //
register: false, register: false,
redirect: undefined, redirect: undefined,
selectLoading:false, //
companyList:[] tenantList:[]
}; };
}, },
watch: { watch: {
@ -141,6 +122,7 @@ export default {
}, },
created() { created() {
this.getCode(); this.getCode();
this.getTenantList();
this.getCookie(); this.getCookie();
}, },
methods: { methods: {
@ -153,23 +135,10 @@ export default {
} }
}); });
}, },
getListByWord(word) { getTenantList() {
listByWord(word).then(res => { tenantList().then(res => {
this.selectLoading = false; this.tenantList = res.data;
this.companyList = res.data });
})
},
//
remoteMethod(query) {
if (query !== '') {
this.selectLoading = true;
setTimeout(() => {
this.selectLoading = false;
this.getListByWord(query)
}, 200);
} else {
this.companyList = [];
}
}, },
getCookie() { getCookie() {
const tenantId = Cookies.get("tenantId"); const tenantId = Cookies.get("tenantId");