Commit f5788527 authored by tanyang's avatar tanyang

Merge remote-tracking branch 'origin/zuhuduan' into zuhuduan

parents 6dbeaec5 da003db4
......@@ -41,7 +41,8 @@ public class SysDeptController extends BaseController {
List<SysDept> depts = deptService.selectDeptList(dept);
List<SysDeptVo> deptVos = BeanUtil.copyToList(depts, SysDeptVo.class);
deptVos.forEach(sysDeptVo -> {
sysDeptVo.setExistUsers(deptService.hasChildByDeptId(sysDeptVo.getDeptId()));
//查询该部门及其子部门是否存在用户
sysDeptVo.setExistUsers(deptService.checkAllDeptsAndUsers(sysDeptVo.getDeptId()));
});
return R.ok(deptVos);
}
......@@ -56,7 +57,7 @@ public class SysDeptController extends BaseController {
public R<List<SysDept>> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) {
List<SysDept> depts = deptService.selectDeptList(new SysDept());
depts.removeIf(d -> d.getDeptId().equals(deptId)
|| StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId)));
|| StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId)));
return R.ok(depts);
}
......@@ -99,7 +100,7 @@ public class SysDeptController extends BaseController {
} else if (dept.getParentId().equals(deptId)) {
return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
} else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
&& deptService.selectNormalChildrenDeptById(deptId) > 0) {
&& deptService.selectNormalChildrenDeptById(deptId) > 0) {
return R.fail("该部门包含未停用的子部门!");
}
return toAjax(deptService.updateDept(dept));
......
package com.dsk.common.constant;
/**
* 租户套餐常量信息
*
* @author Lion Li
*/
public interface TenantPackageConstants {
/**
* 租户套餐正常状态
*/
String NORMAL = "0";
/**
* 租户套餐停用状态
*/
String DISABLE = "1";
}
package com.dsk.common.tenant.helper;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.spring.SpringMVCUtil;
import cn.hutool.core.convert.Convert;
import com.alibaba.ttl.TransmittableThreadLocal;
......@@ -9,10 +8,7 @@ import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.common.utils.spring.SpringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
......
<template>
<div id="tags-view-container" class="tags-view-container">
<div class="alltags" v-if="visitedViews.length > 0">
<div class="" @click="closeall"><i class="el-icon-arrow-down" v-if="!showall"></i> <i class="el-icon-arrow-up" v-if="showall"></i></div>
<div class="imgs" @click="closeall">
<img src="@/assets/images/all.png" v-if="!showall"/>
<img src="@/assets/images/all_on.png" v-if="showall"/>
<!--<i class="el-icon-arrow-down" v-if="!showall"></i> <i class="el-icon-arrow-up" v-if="showall"></i>-->
</div>
<div class="tagslist" v-if="showall">
<!--<div v-for="(tag, index) in visitedViews"-->
<!--:key="tag.path"-->
......@@ -340,7 +344,7 @@ export default {
}
}
&:first-of-type {
margin-left: 24px;
margin-left: 64px;
}
&:hover {
.el-icon-close{
......@@ -384,63 +388,78 @@ export default {
}
}
.alltags{
position: fixed;
position: absolute;
align-items: center;
border-radius: 9px;
height: 17px;
justify-content: center;
width: 36px;
right: 10px;
top: 37px;
width: 24px;
height: 24px;
left: 24px;
top: 28px;
cursor: pointer;
text-align: center;
&:hover{
background: #EFEFEF;
z-index: 10;
&::after{
content: ' ';
position: absolute;
border-right: 1px solid #EFEFEF;
height: 18px;
width: 0;
top: 3px;
right: -8px;
}
.imgs>img{
width: 24px;
height: 24px;
}
.tagslist{
position: absolute;
right: 0;
top: 20px;
left: 0;
top: 32px;
background-color: #fcfcfc;
color: #141414;
font-size: 13px;
line-height: 1em;
margin-bottom: 0;
max-height: 450px;
overflow-y: auto;
/*overflow-y: auto;*/
overflow-y: overlay;
padding: 20px 0 10px;
padding: 8px 0 0;
width: 325px;
text-align: left;
border-radius: 4px;
box-shadow: 0 2px 9px 2px rgba(0,0,0,.09), 0 1px 2px -2px rgba(0,0,0,.16);
.tags-view-item{
display: block;
position: relative;
>div{
padding: 8px 24px;
padding: 8px 8px 8px 32px;
line-height: 20px;
}
&:hover{
color: #0081FF;
background: rgba(0, 0, 0, 0.04);
}
.el-icon-check{
display: none;
position: absolute;
left: 5px;
width: 13px;
left: 8px;
width: 16px;
font-size: 16px;
}
&.active{
color: #0081FF;
background: rgba(0, 129, 255, 0.04);
.el-icon-check{
display: block;
color: #0081FF;
}
}
}
.clasall{
border-top: 1px solid #EFEFEF;
padding: 10px 24px 0;
margin-top: 10px;
padding: 10px 32px;
line-height: 20px;
color: #FF3C3C;
&:hover{
color: #0081FF;
background: #FFECE8;
}
}
}
......
......@@ -181,7 +181,6 @@
:key="dict.packageId"
:label="dict.packageName"
:value="dict.packageId"
:disabled="dict.disabled"
/>
</el-select>
</el-form-item>
......@@ -301,13 +300,13 @@
selectTenant().then(res=>{
if(res.code = 200){
this.packageList = res.data
this.packageList.forEach(item=>{
if(item.status == '0'){
item.disabled = false
}else{
item.disabled = true
}
})
// this.packageList.forEach(item=>{
// if(item.status == '0'){
// item.disabled = false
// }else{
// item.disabled = true
// }
// })
}
})
},
......
......@@ -352,16 +352,24 @@
// return false
if (this.form.packageId != undefined) {
saveTenantPackage(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
if(response.code == 200){
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}else{
this.$message.error(response.msg)
}
});
} else {
// this.form.menuIds = this.getMenuAllCheckedKeys();
addTenantPackage(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
if(response.code == 200){
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}else{
this.$message.error(response.msg)
}
});
}
}
......
......@@ -5,8 +5,67 @@
<img class="logo" src="../assets/images/logo1.png" />
<img class="img" src="../assets/images/login/img.png" />
</div>
<el-form v-if="!islog && !islang" ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3>
<!--快捷登录-->
<el-form v-if="!islog && !islang && isDXlogin" ref="dxform" :model="dxform" :rules="dxRules" class="login-form">
<div class="logintitle">
<div class="on" @click="isDXlogin = true">快捷登录</div>
<div @click="isDXlogin = false">密码登录</div>
</div>
<el-form-item prop="phonenumber">
<el-input
v-model="dxform.phonenumber"
type="text"
auto-complete="off"
placeholder="请输入手机号码"
>
<img class="img" slot="prefix" src="../assets/images/phone.png"/>
</el-input>
</el-form-item>
<el-form-item prop="captchaCode" v-if="captchaEnabled">
<el-input
v-model="dxform.captchaCode"
auto-complete="off"
placeholder="请输入图形验证码"
style="width: 196px;float: left;"
>
<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div>
</el-form-item>
<el-form-item prop="smsCode">
<el-input
v-model="dxform.smsCode"
auto-complete="off"
placeholder="请输入验证码"
style="width: 196px;float: left;"
@keyup.enter.native="dxLogin"
>
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<div class="hqyzm" @click="getsms">{{smstitle}}</div>
</div>
</el-form-item>
<el-form-item style="width:100%;margin-top: 42px">
<el-button
size="medium"