forked from github/dataease
feat:前端增加国际化切换
This commit is contained in:
parent
6d54dcece4
commit
31e5cca439
@ -23,4 +23,6 @@ public class SysUserEntity implements Serializable {
|
||||
private String email;
|
||||
|
||||
private String phone;
|
||||
|
||||
private String language;
|
||||
}
|
||||
|
@ -35,5 +35,7 @@ public class SysUser implements Serializable {
|
||||
|
||||
private Long updateTime;
|
||||
|
||||
private String language;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -1083,6 +1083,76 @@ public class SysUserExample {
|
||||
addCriterion("update_time not between", value1, value2, "updateTime");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageIsNull() {
|
||||
addCriterion("`language` is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageIsNotNull() {
|
||||
addCriterion("`language` is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageEqualTo(String value) {
|
||||
addCriterion("`language` =", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageNotEqualTo(String value) {
|
||||
addCriterion("`language` <>", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageGreaterThan(String value) {
|
||||
addCriterion("`language` >", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("`language` >=", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageLessThan(String value) {
|
||||
addCriterion("`language` <", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageLessThanOrEqualTo(String value) {
|
||||
addCriterion("`language` <=", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageLike(String value) {
|
||||
addCriterion("`language` like", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageNotLike(String value) {
|
||||
addCriterion("`language` not like", value, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageIn(List<String> values) {
|
||||
addCriterion("`language` in", values, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageNotIn(List<String> values) {
|
||||
addCriterion("`language` not in", values, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageBetween(String value1, String value2) {
|
||||
addCriterion("`language` between", value1, value2, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andLanguageNotBetween(String value1, String value2) {
|
||||
addCriterion("`language` not between", value1, value2, "language");
|
||||
return (Criteria) this;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Criteria extends GeneratedCriteria {
|
||||
|
@ -17,6 +17,7 @@
|
||||
<result column="pwd_reset_time" jdbcType="BIGINT" property="pwdResetTime" />
|
||||
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
||||
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
|
||||
<result column="language" jdbcType="VARCHAR" property="language" />
|
||||
</resultMap>
|
||||
<sql id="Example_Where_Clause">
|
||||
<where>
|
||||
@ -78,7 +79,7 @@
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
user_id, dept_id, username, nick_name, gender, phone, email, `password`, is_admin,
|
||||
enabled, create_by, update_by, pwd_reset_time, create_time, update_time
|
||||
enabled, create_by, update_by, pwd_reset_time, create_time, update_time, `language`
|
||||
</sql>
|
||||
<select id="selectByExample" parameterType="io.dataease.base.domain.SysUserExample" resultMap="BaseResultMap">
|
||||
select
|
||||
@ -115,14 +116,14 @@
|
||||
nick_name, gender, phone,
|
||||
email, `password`, is_admin,
|
||||
enabled, create_by, update_by,
|
||||
pwd_reset_time, create_time, update_time
|
||||
)
|
||||
pwd_reset_time, create_time, update_time,
|
||||
`language`)
|
||||
values (#{userId,jdbcType=BIGINT}, #{deptId,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR},
|
||||
#{nickName,jdbcType=VARCHAR}, #{gender,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},
|
||||
#{email,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{isAdmin,jdbcType=BIT},
|
||||
#{enabled,jdbcType=BIGINT}, #{createBy,jdbcType=VARCHAR}, #{updateBy,jdbcType=VARCHAR},
|
||||
#{pwdResetTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}
|
||||
)
|
||||
#{pwdResetTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
||||
#{language,jdbcType=VARCHAR})
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.dataease.base.domain.SysUser">
|
||||
insert into sys_user
|
||||
@ -172,6 +173,9 @@
|
||||
<if test="updateTime != null">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="language != null">
|
||||
`language`,
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="userId != null">
|
||||
@ -219,6 +223,9 @@
|
||||
<if test="updateTime != null">
|
||||
#{updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="language != null">
|
||||
#{language,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<select id="countByExample" parameterType="io.dataease.base.domain.SysUserExample" resultType="java.lang.Long">
|
||||
@ -275,6 +282,9 @@
|
||||
<if test="record.updateTime != null">
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="record.language != null">
|
||||
`language` = #{record.language,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
@ -296,7 +306,8 @@
|
||||
update_by = #{record.updateBy,jdbcType=VARCHAR},
|
||||
pwd_reset_time = #{record.pwdResetTime,jdbcType=BIGINT},
|
||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT}
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
`language` = #{record.language,jdbcType=VARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
@ -346,6 +357,9 @@
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="language != null">
|
||||
`language` = #{language,jdbcType=VARCHAR},
|
||||
</if>
|
||||
</set>
|
||||
where user_id = #{userId,jdbcType=BIGINT}
|
||||
</update>
|
||||
@ -364,7 +378,8 @@
|
||||
update_by = #{updateBy,jdbcType=VARCHAR},
|
||||
pwd_reset_time = #{pwdResetTime,jdbcType=BIGINT},
|
||||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
update_time = #{updateTime,jdbcType=BIGINT}
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
`language` = #{language,jdbcType=VARCHAR}
|
||||
where user_id = #{userId,jdbcType=BIGINT}
|
||||
</update>
|
||||
</mapper>
|
@ -6,7 +6,6 @@ import io.dataease.auth.api.dto.CurrentRoleDto;
|
||||
import io.dataease.auth.entity.SysUserEntity;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface AuthMapper {
|
||||
|
||||
|
@ -20,11 +20,11 @@
|
||||
|
||||
|
||||
<select id="findUser" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone from sys_user where user_id = #{userId}
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language from sys_user where user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<select id="findUserByName" resultMap="baseMap">
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone from sys_user where username = #{username}
|
||||
select user_id, username,nick_name, dept_id, password, enabled,email, phone, language from sys_user where username = #{username}
|
||||
</select>
|
||||
|
||||
<select id="roleCodes" resultType="String">
|
||||
|
@ -19,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
@Api(tags = "系统:用户管理")
|
||||
@ -89,4 +90,15 @@ public class SysUserController {
|
||||
public void updatePersonInfo(@RequestBody SysUserCreateRequest request){
|
||||
sysUserService.updatePersonInfo(request);
|
||||
}
|
||||
|
||||
@ApiOperation("设置语言")
|
||||
@PostMapping("/setLanguage/{language}")
|
||||
public void setLanguage(@PathVariable String language) {
|
||||
CurrentUserDto user = AuthUtils.getUser();
|
||||
Optional.ofNullable(language).ifPresent(currentLanguage -> {
|
||||
if (!currentLanguage.equals(user.getLanguage())) {
|
||||
sysUserService.setLanguage(user.getUserId(), currentLanguage);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -201,4 +201,12 @@ public class SysUserService {
|
||||
return userIds.stream().map(sysUserMapper::selectByPrimaryKey).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@CacheEvict(value = AuthConstants.USER_CACHE_NAME, key = "'user' + #userId")
|
||||
public void setLanguage(Long userId,String language) {
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserId(userId);
|
||||
sysUser.setLanguage(language);
|
||||
sysUserMapper.updateByPrimaryKeySelective(sysUser);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -43,3 +43,10 @@ export function uiImage(imageId) {
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
export function languageApi(language) {
|
||||
return request({
|
||||
url: '/api/user/setLanguage/' + language,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ export default {
|
||||
methods: {
|
||||
handleSetLanguage(lang) {
|
||||
this.$i18n.locale = lang
|
||||
this.$store.dispatch('app/setLanguage', lang)
|
||||
this.$store.dispatch('user/setLanguage', lang)
|
||||
this.$message({
|
||||
message: 'Switch Language Success',
|
||||
type: 'success'
|
||||
|
@ -35,7 +35,7 @@
|
||||
<size-select id="size-select" class="right-menu-item hover-effect" />
|
||||
</el-tooltip> -->
|
||||
|
||||
<!-- <lang-select class="right-menu-item hover-effect" />-->
|
||||
<lang-select class="right-menu-item hover-effect" />
|
||||
</template>
|
||||
|
||||
<el-dropdown class="top-dropdown" style="display: flex;align-items: center;">
|
||||
@ -72,15 +72,15 @@ import { isExternal } from '@/utils/validate'
|
||||
// import Doc from '@/components/Doc'
|
||||
// import Screenfull from '@/components/Screenfull'
|
||||
// import SizeSelect from '@/components/SizeSelect'
|
||||
// import LangSelect from '@/components/LangSelect'
|
||||
import LangSelect from '@/components/LangSelect'
|
||||
import { getSysUI } from '@/utils/auth'
|
||||
export default {
|
||||
name: 'Topbar',
|
||||
components: {
|
||||
AppLink
|
||||
AppLink,
|
||||
// Screenfull,
|
||||
// SizeSelect,
|
||||
// LangSelect
|
||||
LangSelect
|
||||
// Doc
|
||||
},
|
||||
data() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
const getters = {
|
||||
sidebar: state => state.app.sidebar,
|
||||
language: state => state.app.language,
|
||||
language: state => state.user.language,
|
||||
size: state => state.app.size,
|
||||
device: state => state.app.device,
|
||||
token: state => state.user.token,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import Cookies from 'js-cookie'
|
||||
import { getLanguage } from '@/lang/index'
|
||||
|
||||
const state = {
|
||||
sidebar: {
|
||||
opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true,
|
||||
@ -7,7 +7,7 @@ const state = {
|
||||
hide: false
|
||||
},
|
||||
device: 'desktop',
|
||||
language: getLanguage(),
|
||||
|
||||
size: Cookies.get('size') || 'small'
|
||||
}
|
||||
|
||||
@ -32,10 +32,7 @@ const mutations = {
|
||||
SET_SIDEBAR_HIDE: (state, status) => {
|
||||
state.sidebar.hide = status
|
||||
},
|
||||
SET_LANGUAGE: (state, language) => {
|
||||
state.language = language
|
||||
Cookies.set('language', language)
|
||||
},
|
||||
|
||||
SET_SIZE: (state, size) => {
|
||||
state.size = size
|
||||
Cookies.set('size', size)
|
||||
@ -57,9 +54,6 @@ const actions = {
|
||||
},
|
||||
setSize({ commit }, size) {
|
||||
commit('SET_SIZE', size)
|
||||
},
|
||||
setLanguage({ commit }, language) {
|
||||
commit('SET_LANGUAGE', language)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
import { login, logout, getInfo, getUIinfo } from '@/api/user'
|
||||
import { login, logout, getInfo, getUIinfo, languageApi } from '@/api/user'
|
||||
import { getToken, setToken, removeToken, setSysUI } from '@/utils/auth'
|
||||
import { resetRouter } from '@/router'
|
||||
import { format } from '@/utils/formatUi'
|
||||
|
||||
import { getLanguage } from '@/lang/index'
|
||||
import Cookies from 'js-cookie'
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
token: getToken(),
|
||||
@ -14,7 +15,7 @@ const getDefaultState = () => {
|
||||
loadMenus: false,
|
||||
// 当前用户拥有哪些资源权限
|
||||
permissions: [],
|
||||
|
||||
language: getLanguage(),
|
||||
uiInfo: null
|
||||
}
|
||||
}
|
||||
@ -51,6 +52,10 @@ const mutations = {
|
||||
},
|
||||
SET_UI_INFO: (state, info) => {
|
||||
state.uiInfo = info
|
||||
},
|
||||
SET_LANGUAGE: (state, language) => {
|
||||
state.language = language
|
||||
Cookies.set('language', language)
|
||||
}
|
||||
}
|
||||
|
||||
@ -87,13 +92,15 @@ const actions = {
|
||||
const currentUser = data
|
||||
commit('SET_USER', currentUser)
|
||||
|
||||
const { roles, nickName, permissions } = data
|
||||
const { roles, nickName, permissions, language } = data
|
||||
commit('SET_ROLES', roles)
|
||||
|
||||
commit('SET_NAME', nickName)
|
||||
// commit('SET_AVATAR', avatar)
|
||||
|
||||
commit('SET_PERMISSIONS', permissions)
|
||||
|
||||
commit('SET_LANGUAGE', language)
|
||||
resolve(data)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
@ -144,6 +151,11 @@ const actions = {
|
||||
},
|
||||
setLoginMsg({ commit, msg }) {
|
||||
commit('SET_LOGIN_MSG', msg)
|
||||
},
|
||||
setLanguage({ commit }, language) {
|
||||
languageApi(language).then(() => {
|
||||
commit('SET_LANGUAGE', language)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user