国际化用户管理功能

This commit is contained in:
thinkgem
2018-04-21 18:54:11 +08:00
parent cc8da29107
commit 212324badb
12 changed files with 129 additions and 72 deletions

View File

@@ -167,6 +167,7 @@ user:
moduleCode: "core",
ctrlPermi: "0",
ctrlName: "机构权限",
ctrlName_en: "Office",
ctrlType: "Office",
ctrlDataUrl: "/sys/office/treeData",
chkboxType: {"Y":"ps","N":"ps"},
@@ -175,6 +176,7 @@ user:
},{
moduleCode: "core",
ctrlName: "公司权限",
ctrlName_en: "Company",
ctrlType: "Company",
ctrlPermi: "0",
ctrlDataUrl: "/sys/company/treeData",
@@ -184,6 +186,7 @@ user:
},{
moduleCode: "core",
ctrlName: "角色权限",
ctrlName_en: "Role",
ctrlType: "Role",
ctrlPermi: "2",
ctrlDataUrl: "/sys/role/treeData",

View File

@@ -17,7 +17,10 @@
折叠全部=Collapse all
操作=Actions
更多操作=More action
状态=Status
基本信息=Basic information
详细信息=Detail information
扩展字段=Extension field
# =========== imageclip ===========

View File

@@ -1,5 +1,5 @@
# =========== sysLogin ===========
# =========== 登录页 ===========
英语=English
@@ -24,7 +24,7 @@
注册账号=Registered account
忘记密码=Forgot password
# =========== sysIndex ===========
# =========== 主框架页 ===========
仪表盘=Dashboard
全屏=Full screen
@@ -38,7 +38,7 @@
在线=Online
注销=Logout
# =========== userInfo ===========
# =========== 个人中心 ===========
修改密保=Security question
个人信息=User info
@@ -66,7 +66,7 @@
新保密问题=New secret questions
新保密问题答案=New secret answers
# =========== 通用字典列表 ===========
# =========== 通用字典 ===========
=Yes
=No
@@ -80,7 +80,16 @@
驳回=Rejected
草稿=Draft
# =========== 核心功能名称 ===========
# =========== 通用字段 ===========
状态=Status
备注信息=Remarks
创建者=Create by
创建时间=Create date
更新者=Update by
更新时间=Update date
# =========== 功能标题 ===========
系统管理=System mgt
组织管理=Organization
@@ -89,14 +98,14 @@
公司管理=Company manage
岗位管理=Position manage
组织机构=Office
用户选择=User select
机构选择=Office select
公司选择=Company select
区域选择=Area select
# =========== empUserList ===========
# =========== 用户管理 ===========
组织机构=Office
新增用户=New user
编辑用户=Edit user
@@ -114,7 +123,46 @@
确认要将该用户密码重置到初始状态吗?=Are you sure want to reset the user password to the initial state?
重置密码=Reset password
# =========== officeList ===========
保存用户''{0}''成功=Save the user ''{0}'' success
保存用户''{0}''失败,登录账号已存在=Save user ''{0}'' failed, login account already exists
停用用户失败,不允许停用当前用户=Disable user failed. Not disable current user
停用用户成功=Disable user success
启用用户成功=Enable user success
重置用户密码成功=Reset user password success
删除用户失败,不允许删除当前用户=Delete user failed. Not delete current user
删除用户''{0}''成功=Delete user ''{0}'' success
用户分配数据权限成功=User assign data scopes success
账号=Account
昵称=Nick name
邮箱=Email
手机=Mobile
电话=Phone
姓名=Name
机构=Office
公司=Company
岗位=Position
归属机构=Office
归属公司=Company
登录账号=Account
登录账号已存在=Login account already exists
用户昵称=Nick name
电子邮箱=Email
手机号码=Mobile
办公电话=Phone
权重(排序)=Weight(Sort)
权重越大排名越靠前,请填写数字。=Weight big, ranking the front, fill Numbers.
员工编号=Work No
员工姓名=Name
所在岗位=Position
英文名=English name
角色名称=Role name
角色编码=Role code
# =========== 机构管理 ===========
新增机构=New office
编辑机构=Edit office
@@ -127,7 +175,7 @@
确认要删除该机构及所有子机构吗?=Are you sure want to delete this office and sub office?
新增下级机构=New sub office
# =========== companyList ===========
# =========== 公司管理 ===========
新增公司=New company
编辑公司=Edit company
@@ -140,7 +188,7 @@
确认要删除该公司及所有子公司吗?=Are you sure want to delete this company and sub company?
新增下级公司=New sub company
# =========== empUserList ===========
# =========== 岗位管理 ===========
新增岗位=New position
编辑岗位=Edit position

View File

@@ -78,7 +78,7 @@
</div>
</div>
</div>
<div class="form-unit">扩展信息</div>
<div class="form-unit">其它信息</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">

View File

@@ -78,7 +78,7 @@
</div>
</div>
</div>
<div class="form-unit">扩展信息</div>
<div class="form-unit">详细信息</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">

View File

@@ -16,14 +16,14 @@
<div class="box-body">
<% if(op=='auth'){ %><br/><% } %>
<% if(op == 'add' || op == 'edit') { %>
<div class="form-unit">基本信息</div>
<div class="form-unit">${text('基本信息')}</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 归属机构:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('归属机构')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:treeselect id="office" title="机构选择"
<#form:treeselect id="office" title="${text('机构选择')}"
path="employee.office.officeCode" labelPath="employee.office.officeName"
url="${ctx}/sys/office/treeData" class="required" allowClear="false"/>
</div>
@@ -32,9 +32,9 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 归属公司:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('归属公司')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:treeselect id="company" title="公司选择"
<#form:treeselect id="company" title="${text('公司选择')}"
path="employee.company.companyCode" labelPath="employee.company.companyName"
url="${ctx}/sys/company/treeData" btnClass="" allowClear="true"/>
</div>
@@ -46,20 +46,20 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 登录账号:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('登录账号')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:hidden name="oldLoginCode" value="${empUser.loginCode}"/>
<#form:input path="loginCode" minlength="4" maxlength="20" readonly="${op=='auth'}"
class="form-control required userName"
remote="${ctx}/sys/user/checkLoginCode?oldLoginCode=${empUser.loginCode}"
data-msg-remote="登录账号已存在"/>
data-msg-remote="${text('登录账号已存在')}"/>
</div>
</div>
</div>
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 用户昵称:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('用户昵称')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="userName" maxlength="32" readonly="${op=='auth'}" class="form-control required "/>
</div>
@@ -71,7 +71,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 电子邮箱:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('电子邮箱')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group">
<#form:input path="email" maxlength="300" class="form-control email"/>
@@ -83,7 +83,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 手机号码:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('手机号码')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group">
<#form:input path="mobile" maxlength="100" class="form-control mobile"/>
@@ -97,7 +97,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 办公电话:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('办公电话')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<div class="input-group">
<#form:input path="phone" maxlength="100" class="form-control phone"/>
@@ -109,19 +109,19 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 权重(排序)<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('权重(排序)')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="userWeight" maxlength="8" class="form-control digits" placeholder="权重越大排名越靠前,请填写数字。"/>
<#form:input path="userWeight" maxlength="8" class="form-control digits" placeholder="${text('权重越大排名越靠前,请填写数字。')}"/>
</div>
</div>
</div>
</div>
<div class="form-unit">详细信息</div>
<div class="form-unit">${text('详细信息')}</div>
<div class="row">
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 员工编号:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('员工编号')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="employee.empCode" maxlength="32" readonly="${!empUser.isNewRecord}" class="form-control abc"/>
</div>
@@ -130,7 +130,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 员工姓名:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('员工姓名')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="employee.empName" maxlength="32" class="form-control "/>
</div>
@@ -141,7 +141,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 所在岗位:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('所在岗位')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:select multiple="true" path="employee.employeePosts" items="${postList}"
itemLabel="postName" itemValue="postCode" class="form-control"/>
@@ -151,7 +151,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required hide">*</span> 英文名<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('英文名')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="employee.empNameEn" maxlength="32" class="form-control "/>
</div>
@@ -162,7 +162,7 @@
<div class="col-xs-12">
<div class="form-group">
<label class="control-label col-sm-2" title="">
<span class="required hide">*</span> 备注信息:<i class="fa icon-question hide"></i></label>
<span class="required hide">*</span> ${text('备注信息')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-10">
<#form:textarea path="remarks" rows="4" maxlength="500" class="form-control "/>
</div>
@@ -171,7 +171,7 @@
</div>
<% } %>
<% if(op == 'add' || op == 'auth') { %>
<div class="form-unit">授权角色</div>
<div class="form-unit">${text('分配角色')}</div>
<div class="pl10 pb20">
<table id="roleGrid"></table>
<#form:hidden name="userRoleString"/>
@@ -221,8 +221,8 @@ var roleGrid = $("#roleGrid").dataGrid({
{name:'ctrlPermi',value:'2'}
],
columnModel: [
{header:'角色名称', name:'name', sortable:false, width:100, align:"center"},
{header:'角色编码', name:'id', sortable:false, width:100, align:"center"}
{header:'${text('角色名称')}', name:'name', sortable:false, width:100, align:"center"},
{header:'${text('角色编码')}', name:'id', sortable:false, width:100, align:"center"}
],
showCheckbox: true,
autoGridHeight: function(){

View File

@@ -16,7 +16,7 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 登录账号:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('登录账号')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="loginCode" maxlength="32" readonly="${!empUser.isNewRecord}" class="form-control required "/>
</div>
@@ -25,14 +25,14 @@
<div class="col-xs-6">
<div class="form-group">
<label class="control-label col-sm-4" title="">
<span class="required ">*</span> 用户昵称:<i class="fa icon-question hide"></i></label>
<span class="required ">*</span> ${text('用户昵称')}<i class="fa icon-question hide"></i></label>
<div class="col-sm-8">
<#form:input path="userName" maxlength="32" readonly="${!empUser.isNewRecord}" class="form-control required "/>
</div>
</div>
</div>
</div>
<div class="form-unit">授权数据权限</div>
<div class="form-unit">${text('数据权限')}</div>
<div id="dataScopeTrees"></div>
<script id="dataScopeTpl" type="text/template">
<div class="pull-left" style="padding:0 15px;min-width:300px;">
@@ -44,9 +44,9 @@
</div>
<div class="box-tools pull-right" style="top:8px;">
<a class="btn btn-box-tool" id="expand_{{d.key}}"
value="dataScopeTree_{{d.key}}" >展开</a>/<a
value="dataScopeTree_{{d.key}}" >${text('展开')}</a>/<a
class="btn btn-box-tool" id="collapse_{{d.key}}"
value="dataScopeTree_{{d.key}}" >折叠</a>
value="dataScopeTree_{{d.key}}" >${text('折叠')}</a>
</div>
</div>
<div class="box-body">
@@ -135,7 +135,7 @@ for (var i=0; i<dataScopes.length; i++){
continue;
}
$('#dataScopeTrees').append(js.template('dataScopeTpl', {
key: dataScope.ctrlType, label: dataScope.ctrlName}));
key: dataScope.ctrlType, label: dataScope.ctrlName_${lang()} || dataScope.ctrlName}));
$.ajax({
type: 'POST',
url: "${ctx}" + dataScope.ctrlDataUrl,

View File

@@ -16,60 +16,60 @@
<#form:form id="searchForm" model="${empUser}" action="${ctx}/sys/empUser/listData" method="post" class="form-inline "
data-page-no="${parameter.pageNo}" data-page-size="${parameter.pageSize}" data-order-by="${parameter.orderBy}">
<div class="form-group">
<label class="control-label">账号</label>
<label class="control-label">${text('账号')}</label>
<div class="control-inline">
<#form:input path="loginCode" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">昵称</label>
<label class="control-label">${text('昵称')}</label>
<div class="control-inline">
<#form:input path="userName" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">邮箱</label>
<label class="control-label">${text('邮箱')}</label>
<div class="control-inline">
<#form:input path="email" maxlength="300" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">手机</label>
<label class="control-label">${text('手机')}</label>
<div class="control-inline">
<#form:input path="mobile" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">电话</label>
<label class="control-label">${text('电话')}</label>
<div class="control-inline">
<#form:input path="phone" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-row"></div>
<div class="form-group">
<label class="control-label">姓名</label>
<label class="control-label">${text('姓名')}</label>
<div class="control-inline">
<#form:input path="refName" maxlength="100" class="form-control width-90"/>
</div>
</div>
<div class="form-group">
<label class="control-label">机构</label>
<label class="control-label">${text('机构')}</label>
<div class="control-inline width-90">
<#form:treeselect id="office" title="机构选择"
<#form:treeselect id="office" title="${text('机构选择')}"
path="employee.office.officeCode" labelPath="employee.office.officeName"
url="${ctx}/sys/office/treeData" btnClass="btn-sm" allowClear="true" canSelectParent="true"/>
</div>
</div>
<div class="form-group">
<label class="control-label">公司</label>
<label class="control-label">${text('公司')}</label>
<div class="control-inline width-90">
<#form:treeselect id="company" title="公司选择"
<#form:treeselect id="company" title="${text('公司选择')}"
path="employee.company.companyCode" labelPath="employee.company.companyName"
url="${ctx}/sys/company/treeData" btnClass="btn-sm" allowClear="true" canSelectParent="true"/>
</div>
</div>
<div class="form-group">
<label class="control-label">岗位</label>
<label class="control-label">${text('岗位')}</label>
<div class="control-inline width-90">
<#form:select name="employee.postCode" items="${postList}"
itemLabel="postName" itemValue="postCode" blankOption="true" class="form-control"/>
@@ -97,17 +97,17 @@
$('#dataGrid').dataGrid({
searchForm: $("#searchForm"),
columnModel: [
{header:'登录账号', name:'loginCode', index:'a.login_code', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
{header:'${text('登录账号')}', name:'loginCode', index:'a.login_code', width:200, align:"center", frozen:true, formatter: function(val, obj, row, act){
return '<a href="${ctx}/sys/empUser/form?userCode='+row.userCode+'&op=edit" class="btnList" data-title="${text('编辑用户')}">'+(val||row.id)+'</a>';
}},
{header:'用户昵称', name:'userName', index:'a.user_name', width:200, align:"center"},
{header:'用户姓名', name:'refName', index:'a.ref_name', width:200, align:"center"},
{header:'归属机构', name:'employee.office.officeName', index:'o.office_name', width:200, align:"center"},
{header:'归属公司', name:'employee.company.companyName', index:'c.company_name', width:200, align:"center"},
{header:'电子邮箱', name:'email', index:'a.email', width:200, align:"center"},
{header:'手机号码', name:'mobile', index:'a.mobile', width:200, align:"center"},
{header:'办公电话', name:'phone', index:'a.phone', width:200, align:"center"},
{header:'更新时间', name:'updateDate', index:'a.update_date', width:200, align:"center"},
{header:'${text('用户昵称')}', name:'userName', index:'a.user_name', width:200, align:"center"},
{header:'${text('员工姓名')}', name:'refName', index:'a.ref_name', width:200, align:"center"},
{header:'${text('归属机构')}', name:'employee.office.officeName', index:'o.office_name', width:200, align:"center"},
{header:'${text('归属公司')}', name:'employee.company.companyName', index:'c.company_name', width:200, align:"center"},
{header:'${text('电子邮箱')}', name:'email', index:'a.email', width:200, align:"center"},
{header:'${text('手机号码')}', name:'mobile', index:'a.mobile', width:200, align:"center"},
{header:'${text('办公电话')}', name:'phone', index:'a.phone', width:200, align:"center"},
{header:'${text('更新时间')}', name:'updateDate', index:'a.update_date', width:200, align:"center"},
{header:'${text('状态')}', name:'status', index:'a.status', width:140, align:"center", formatter: function(val, obj, row, act){
return js.getDictLabel(${@DictUtils.getDictListJson('sys_status')}, val, '未知', true);
}},

View File

@@ -135,7 +135,7 @@ for (var i=0; i<dataScopes.length; i++){
continue;
}
$('#dataScopeTrees').append(js.template('dataScopeTpl', {
key: dataScope.ctrlType, label: dataScope.ctrlName}));
key: dataScope.ctrlType, label: dataScope.ctrlName_${lang()} || dataScope.ctrlName}));
$.ajax({
type: 'POST',
url: "${ctx}" + dataScope.ctrlDataUrl,