Browse Source
1、w-grid增加属性stripe,用于配置数据行背景是否使用斑马纹显示。 2、w-grid查询支持多选机构与多选用户进行查询。 3、w-info 查看属性界面,需要增加label宽度与value宽度。 4、w-grid 分组,需增加 group-by-title 属性,用于生成分组标题的函数。 5、w-grid如果设置了列宽,表头太长被隐藏,增加鼠标移上去显示完整内容。 6、修复w-grid按钮栏切换语言无效。 7、w-toolbar中的按钮修改成根据系统主要颜色进行显示。main
37 changed files with 914 additions and 105 deletions
@ -0,0 +1,295 @@ |
|||
<template> |
|||
<div v-show="fieldMethodsClass.getShow(props, modelValue)"> |
|||
<q-input |
|||
ref="textSelectRef" |
|||
v-model="displayValueComputed" |
|||
:hide-bottom-space="true" |
|||
:hide-hint="true" |
|||
:outlined="true" |
|||
:dense="true" |
|||
:autogrow="true" |
|||
v-bind="attrs" |
|||
:bottom-slots="counter" |
|||
type="text" |
|||
:rules="fieldMethodsClass.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)" |
|||
:readonly="fieldMethodsClass.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })" |
|||
:disable="fieldMethodsClass.getDisable(props, { value: modelValue, displayValue: displayValueComputed })" |
|||
:clearable="false" |
|||
@focus=" |
|||
() => { |
|||
textSelectRef?.blur(); |
|||
} |
|||
" |
|||
> |
|||
<template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> |
|||
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> |
|||
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> |
|||
<q-btn flat square unelevated dense icon="pageview"> |
|||
<q-popup-proxy v-model:model-value="isShow" anchor="bottom right" self="top right" :offset="[0, 10]"> |
|||
<div style="width: 700px; height: 300px"> |
|||
<w-grid |
|||
ref="roleGridRef" |
|||
title="角色列表" |
|||
:checkbox-selection="props.multiple || false" |
|||
:dense="true" |
|||
:fetch-data-url="roleGridFetchDataUrl" |
|||
:config-button="false" |
|||
:query-form-cols-num="2" |
|||
:toolbar-actions="['query', 'reset']" |
|||
:query-criteria="props.queryCriteria" |
|||
:query-form-fields="[ |
|||
{ name: 'code', label: $t('code'), type: 'w-text' }, |
|||
{ name: 'name', label: $t('name'), type: 'w-text' }, |
|||
{ |
|||
name: 'enable', |
|||
label: $t('status'), |
|||
type: 'w-select', |
|||
options: [ |
|||
{ label: '正常', value: 1 }, |
|||
{ label: '禁用', value: 0 }, |
|||
], |
|||
}, |
|||
{ name: 'description', label: $t('description'), type: 'w-text' }, |
|||
]" |
|||
:columns="[ |
|||
{ name: 'code', label: $t('code') }, |
|||
{ name: 'name', label: $t('name') }, |
|||
{ name: 'enable', label: $t('status'), format: Formater.enableTag(), width: 80 }, |
|||
{ name: 'description', label: $t('description') }, |
|||
]" |
|||
:ticked-record="{ |
|||
columnName: valueUseColumnName, |
|||
data: typeof modelValue === 'string' ? [modelValue] : modelValue, |
|||
}" |
|||
db-click-operation="none" |
|||
@row-click="rowClick" |
|||
@update-ticked="updateTicked" |
|||
> |
|||
</w-grid> |
|||
</div> |
|||
</q-popup-proxy> |
|||
</q-btn> |
|||
</template> |
|||
<template v-if="counter" #counter> |
|||
<div>{{ modelValue?.length }}</div> |
|||
</template> |
|||
</q-input> |
|||
</div> |
|||
</template> |
|||
|
|||
<script setup lang="ts"> |
|||
import { ref, computed, useAttrs, toRaw, watch, onMounted } from 'vue'; |
|||
import { Tools, axios, Environment, Formater } from '@/platform'; |
|||
import { FormFieldProps } from '@/platform/components/form/FormField.ts'; |
|||
import { FormFieldMethods } from '../form/FormField'; |
|||
|
|||
const textSelectRef = ref(); |
|||
const attrs = useAttrs(); |
|||
const modelValue = defineModel<string | Array<string>>(); |
|||
const modelObjectValue = ref(<any>[]); // 模型值包含实际值与显示值的对象集合。 |
|||
const roleGridRef = ref(); |
|||
|
|||
const roleGridFetchDataUrl = Environment.apiContextPath('/api/system/role'); |
|||
const isShow = ref(false); |
|||
|
|||
interface FieldProps extends FormFieldProps { |
|||
multiple?: boolean; |
|||
counter?: boolean; |
|||
valueUseId?: boolean; |
|||
displayValue?: string | ((args: object) => ''); |
|||
queryCriteria?: object; |
|||
} |
|||
const props = withDefaults(defineProps<FieldProps>(), { |
|||
showIf: true, |
|||
multiple: false, // 是否允许多选,多选模式下模型绑定值必须为数组 |
|||
counter: false, // 显示右下角计数器 |
|||
/** |
|||
* 值使用id绑定,false则使用code |
|||
*/ |
|||
valueUseId: true, |
|||
/** |
|||
* 显示值配置,可使用选项: |
|||
* code:编码 |
|||
* name:名称,组件默认使用该选项 |
|||
* nameAppendCode:名称追加编码,示例:系统管理员(admin), |
|||
* codeAppendName:编码追加名称,示例:admin(上海分行) |
|||
* 自定义函数:自己定义显示的内容,组件会将用户数据传到函数中,函数必须返回一个字符串,示例: |
|||
* displayValue: (args) => { |
|||
* return args['data']['name'] + '_' + args['data']['code']; |
|||
* } |
|||
*/ |
|||
displayValue: 'name', |
|||
queryCriteria: undefined, // 角色列表criteria查询条件 |
|||
}); |
|||
class FieldMethods extends FormFieldMethods { |
|||
updateValue = (value_) => { |
|||
if (props['onUpdateValue']) { |
|||
props['onUpdateValue']({ |
|||
value: value_, |
|||
displayValue: displayValueComputed.value, |
|||
form: props['form'], |
|||
}); |
|||
} |
|||
}; |
|||
validate = () => { |
|||
return textSelectRef.value.validate(); |
|||
}; |
|||
|
|||
setValue = (value) => { |
|||
if (props.multiple && Array.isArray(value) && Array.isArray(modelValue.value)) { |
|||
fieldMethodsClass.clearValue(); |
|||
modelValue.value.push(...value); |
|||
setObjectValueByValue(value); |
|||
} else if (!props.multiple && !Array.isArray(value)) { |
|||
modelValue.value = value; |
|||
setObjectValueByValue(value); |
|||
} else { |
|||
console.info('error========模型值不匹配'); |
|||
} |
|||
}; |
|||
getValue = () => { |
|||
return modelValue.value; |
|||
}; |
|||
getObjectValue = () => { |
|||
return modelObjectValue.value; |
|||
}; |
|||
// 组件清空值 |
|||
clearValue = () => { |
|||
if (props.multiple && Array.isArray(modelValue.value)) { |
|||
modelValue.value.splice(0, modelValue.value.length); |
|||
} else { |
|||
modelValue.value = undefined; |
|||
} |
|||
fieldMethodsClass.clearObjectValue(); |
|||
}; |
|||
// 清空显示值 |
|||
clearObjectValue = () => { |
|||
modelObjectValue.value.splice(0, modelObjectValue.value.length); |
|||
}; |
|||
} |
|||
const fieldMethodsClass = new FieldMethods(); |
|||
const valueUseColumnName = props.valueUseId ? 'id' : 'code'; |
|||
|
|||
const displayValueComputed = computed(() => { |
|||
let result = ''; |
|||
if (modelObjectValue.value.length > 0) { |
|||
modelObjectValue.value.forEach((item) => { |
|||
result = result + ',' + item['displayValue']; |
|||
}); |
|||
result = result.substring(1, result.length); |
|||
} |
|||
return result; |
|||
}); |
|||
|
|||
const getActualDisplayValue = (row) => { |
|||
if (!Tools.isEmpty(props.displayValue) && typeof props.displayValue === 'function') { |
|||
return props.displayValue({ |
|||
data: toRaw(row), |
|||
grid: roleGridRef.value, |
|||
}); |
|||
} else if (!Tools.isEmpty(props.displayValue) && typeof props.displayValue === 'string') { |
|||
if (props.displayValue === 'code') { |
|||
return row['code']; |
|||
} else if (props.displayValue === 'name') { |
|||
return row['name']; |
|||
} else if (props.displayValue === 'codeAppendName') { |
|||
return row['code'] + '(' + row['name'] + ')'; |
|||
} else if (props.displayValue === 'nameAppendCode') { |
|||
return row['name'] + '(' + row['code'] + ')'; |
|||
} |
|||
} |
|||
return ''; |
|||
}; |
|||
|
|||
const updateTicked = (args) => { |
|||
if (Array.isArray(modelValue.value)) { |
|||
fieldMethodsClass.clearValue(); |
|||
const rows = roleGridRef.value.getTickedRows(); |
|||
if (rows?.length > 0) { |
|||
rows.forEach((item) => { |
|||
modelValue.value.push(item[valueUseColumnName]); |
|||
modelObjectValue.value.push({ value: item[valueUseColumnName], displayValue: getActualDisplayValue(item) }); |
|||
}); |
|||
} |
|||
} |
|||
}; |
|||
const rowClick = (args) => { |
|||
const modelValue_ = args.row[valueUseColumnName]; |
|||
if (props.multiple && Array.isArray(modelValue.value)) { |
|||
fieldMethodsClass.clearValue(); |
|||
modelValue.value.push(modelValue_); |
|||
modelObjectValue.value.push({ value: modelValue_, displayValue: getActualDisplayValue(args.row) }); |
|||
} else if (!props.multiple) { |
|||
fieldMethodsClass.clearValue(); |
|||
modelValue.value = modelValue_; |
|||
modelObjectValue.value.push({ value: modelValue_, displayValue: getActualDisplayValue(args.row) }); |
|||
} else { |
|||
console.info('error========模型值不匹配'); |
|||
} |
|||
isShow.value = false; |
|||
}; |
|||
|
|||
watch( |
|||
() => modelValue.value, |
|||
(newVal, oldVal) => { |
|||
if (newVal !== oldVal) { |
|||
fieldMethodsClass.updateValue(newVal); |
|||
} |
|||
if (Tools.isEmpty(newVal) || (Array.isArray(modelValue.value) && modelValue.value.length === 0)) { |
|||
fieldMethodsClass.clearObjectValue(); |
|||
} else if (newVal !== oldVal) { |
|||
if (modelObjectValue.value.length > 0) { |
|||
const tempValue = modelObjectValue.value.find((item) => item.value === newVal); |
|||
if (!tempValue) { |
|||
setObjectValueByValue(newVal); |
|||
} |
|||
} else { |
|||
setObjectValueByValue(newVal); |
|||
} |
|||
} |
|||
}, |
|||
); |
|||
|
|||
// 根据实际值设置显示值 |
|||
const setObjectValueByValue = async (value) => { |
|||
if ((Array.isArray(value) && value.length > 0) || (typeof value === 'string' && !Tools.isEmpty(value))) { |
|||
fieldMethodsClass.clearObjectValue(); |
|||
const urlSearchParams = new URLSearchParams(); |
|||
urlSearchParams.append( |
|||
'criteria', |
|||
JSON.stringify({ |
|||
fieldName: valueUseColumnName, |
|||
operator: 'inSet', |
|||
value: Array.isArray(value) ? value : [value], |
|||
}), |
|||
); |
|||
const resp = await axios.get(roleGridFetchDataUrl, { params: urlSearchParams }).catch((error) => { |
|||
console.info('error-------------', error); |
|||
}); |
|||
if (resp && resp.data) { |
|||
const responseData = resp.data; |
|||
if (Array.isArray(responseData) && responseData.length > 0) { |
|||
responseData.forEach((item) => { |
|||
modelObjectValue.value.push({ value: item[valueUseColumnName], displayValue: getActualDisplayValue(item) }); |
|||
}); |
|||
} else if (typeof responseData === 'object' && responseData.content?.length > 0) { |
|||
responseData.content.forEach((item) => { |
|||
modelObjectValue.value.push({ value: item[valueUseColumnName], displayValue: getActualDisplayValue(item) }); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
}; |
|||
|
|||
onMounted(() => { |
|||
setObjectValueByValue(modelValue.value); |
|||
}); |
|||
|
|||
defineExpose({ |
|||
validate: fieldMethodsClass.validate, |
|||
setValue: fieldMethodsClass.setValue, |
|||
getValue: fieldMethodsClass.getValue, |
|||
getObjectValue: fieldMethodsClass.getObjectValue, |
|||
clearValue: fieldMethodsClass.clearValue, |
|||
}); |
|||
</script> |
@ -1,6 +1,7 @@ |
|||
dependencies { |
|||
api( |
|||
project(":io.sc.platform.mvc"), |
|||
project(":io.sc.platform.system"), |
|||
project(":io.sc.platform.lcdp.frontend"), |
|||
) |
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package io.sc.platform.lcdp.frontend.component.controller; |
|||
|
|||
import io.sc.platform.lcdp.frontend.component.service.UserSearchService; |
|||
import io.sc.platform.lcdp.frontend.component.support.UserSearchQueryParameter; |
|||
import io.sc.platform.lcdp.frontend.component.vo.UserSearchVo; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.data.domain.Page; |
|||
import org.springframework.web.bind.annotation.PostMapping; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
@RestController("io.sc.platform.lcdp.frontend.component.controller.UserSearchController") |
|||
@RequestMapping("/api/lcdp/userSearch") |
|||
public class UserSearchController { |
|||
@Autowired private UserSearchService service; |
|||
|
|||
@PostMapping("queryUser") |
|||
public Page<UserSearchVo> queryUser(@RequestBody UserSearchQueryParameter userSearchQueryParameter) throws Exception { |
|||
return service.queryUser(userSearchQueryParameter); |
|||
} |
|||
} |
@ -0,0 +1,10 @@ |
|||
package io.sc.platform.lcdp.frontend.component.service; |
|||
|
|||
import io.sc.platform.lcdp.frontend.component.support.UserSearchQueryParameter; |
|||
import io.sc.platform.lcdp.frontend.component.vo.UserSearchVo; |
|||
import org.springframework.data.domain.Page; |
|||
|
|||
public interface UserSearchService { |
|||
|
|||
Page<UserSearchVo> queryUser(UserSearchQueryParameter userSearchQueryParameter) throws Exception; |
|||
} |
@ -0,0 +1,133 @@ |
|||
package io.sc.platform.lcdp.frontend.component.service.impl; |
|||
|
|||
import io.sc.platform.lcdp.frontend.component.service.UserSearchService; |
|||
import io.sc.platform.lcdp.frontend.component.support.UserSearchQueryParameter; |
|||
import io.sc.platform.lcdp.frontend.component.vo.UserSearchVo; |
|||
import io.sc.platform.orm.service.support.OperatorType; |
|||
import io.sc.platform.orm.service.support.QueryParameter; |
|||
import io.sc.platform.orm.service.support.criteria.Criteria; |
|||
import io.sc.platform.orm.service.support.criteria.impl.InSet; |
|||
import io.sc.platform.orm.util.EntityVoUtil; |
|||
import io.sc.platform.system.department.jpa.entity.DepartmentEntity; |
|||
import io.sc.platform.system.org.jpa.entity.OrgEntity; |
|||
import io.sc.platform.system.org.service.OrgService; |
|||
import io.sc.platform.system.role.jpa.entity.RoleEntity; |
|||
import io.sc.platform.system.role.service.RoleService; |
|||
import io.sc.platform.system.user.jpa.entity.UserEntity; |
|||
import io.sc.platform.system.user.service.UserService; |
|||
import org.springframework.beans.factory.annotation.Autowired; |
|||
import org.springframework.data.domain.Page; |
|||
import org.springframework.data.domain.PageImpl; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
@Service |
|||
public class UserSearchServiceImpl implements UserSearchService { |
|||
|
|||
@Autowired |
|||
private UserService userService; |
|||
@Autowired |
|||
private OrgService orgService; |
|||
@Autowired |
|||
private RoleService roleService; |
|||
|
|||
@Override |
|||
public Page<UserSearchVo> queryUser(UserSearchQueryParameter userSearchQueryParameter) throws Exception { |
|||
QueryParameter queryParameter = userSearchQueryParameter.getQueryParameter(); |
|||
QueryParameter orgQueryParameter = userSearchQueryParameter.getOrgQueryParameter(); |
|||
QueryParameter roleQueryParameter = userSearchQueryParameter.getRoleQueryParameter(); |
|||
if (orgQueryParameter!=null) { |
|||
List<OrgEntity> orgList = orgService.list(orgQueryParameter); |
|||
List<String> orgIds = orgList.stream().map(OrgEntity::getId).collect(Collectors.toList()); |
|||
if (orgIds!=null && orgIds.size() > 0) { |
|||
InSet inSet = new InSet(); |
|||
inSet.setFieldName("orgs"); |
|||
inSet.setOperator(OperatorType.inSet); |
|||
inSet.setValue(orgIds.toArray(new String[0])); |
|||
queryParameter.addCriteria(inSet); |
|||
} |
|||
} |
|||
if (roleQueryParameter!=null) { |
|||
List<RoleEntity> roleList = roleService.list(roleQueryParameter); |
|||
List<String> roleIds = roleList.stream().map(RoleEntity::getId).collect(Collectors.toList()); |
|||
if (roleList!=null && roleList.size() > 0) { |
|||
InSet inSet = new InSet(); |
|||
inSet.setFieldName("roles"); |
|||
inSet.setOperator(OperatorType.inSet); |
|||
inSet.setValue(roleIds.toArray(new String[0])); |
|||
queryParameter.addCriteria(inSet); |
|||
} |
|||
} |
|||
Page<UserEntity> page = userService.query(queryParameter); |
|||
if (page.getContent()!=null && page.getContent().size()>0) { |
|||
List<UserSearchVo> userList = new ArrayList<>(); |
|||
for(UserEntity user: page.getContent()) { |
|||
UserSearchVo userVo = new UserSearchVo(); |
|||
userVo.setId(user.getId()); |
|||
userVo.setLoginName(user.getLoginName()); |
|||
userVo.setUserName(user.getUserName()); |
|||
userVo.setDescription(user.getDescription()); |
|||
userVo.setEnable(user.getEnable()); |
|||
userVo.setAccountExpired(user.getAccountExpired()); |
|||
userVo.setAccountLocked(user.getAccountLocked()); |
|||
userVo.setCredentialsExpired(user.getCredentialsExpired()); |
|||
userVo.setRoles(roles2listMap(user.getRoles())); |
|||
userVo.setDefaultRoleId(user.getDefaultRoleId()); |
|||
userVo.setOrgs(orgs2listMap(user.getOrgs())); |
|||
userVo.setDefaultOrgId(user.getDefaultOrgId()); |
|||
userVo.setDepartments(departments2listMap(user.getDepartments())); |
|||
userList.add(userVo); |
|||
} |
|||
return new PageImpl<UserSearchVo>(userList,page.getPageable(),page.getTotalElements()); |
|||
} else { |
|||
return Page.empty(); |
|||
} |
|||
} |
|||
|
|||
private List<Map<String, String>> roles2listMap(List<RoleEntity> roles) throws Exception { |
|||
List<Map<String, String>> list = new ArrayList<>(); |
|||
if (roles!=null && roles.size() > 0) { |
|||
for(RoleEntity role: roles) { |
|||
Map<String, String> map = new HashMap<>(); |
|||
map.put("id", role.getId()); |
|||
map.put("code", role.getCode()); |
|||
map.put("name", role.getName()); |
|||
list.add(map); |
|||
} |
|||
} |
|||
return list; |
|||
} |
|||
|
|||
private List<Map<String, String>> orgs2listMap(List<OrgEntity> orgs) throws Exception { |
|||
List<Map<String, String>> list = new ArrayList<>(); |
|||
if (orgs!=null && orgs.size() > 0) { |
|||
for(OrgEntity org: orgs) { |
|||
Map<String, String> map = new HashMap<>(); |
|||
map.put("id", org.getId()); |
|||
map.put("code", org.getCode()); |
|||
map.put("name", org.getName()); |
|||
list.add(map); |
|||
} |
|||
} |
|||
return list; |
|||
} |
|||
|
|||
private List<Map<String, String>> departments2listMap(List<DepartmentEntity> departments) throws Exception { |
|||
List<Map<String, String>> list = new ArrayList<>(); |
|||
if (departments!=null && departments.size() > 0) { |
|||
for(DepartmentEntity department: departments) { |
|||
Map<String, String> map = new HashMap<>(); |
|||
map.put("id", department.getId()); |
|||
map.put("code", department.getCode()); |
|||
map.put("name", department.getName()); |
|||
list.add(map); |
|||
} |
|||
} |
|||
return list; |
|||
} |
|||
} |
@ -0,0 +1,46 @@ |
|||
package io.sc.platform.lcdp.frontend.component.support; |
|||
|
|||
import io.sc.platform.orm.service.support.QueryParameter; |
|||
|
|||
/** |
|||
* 前端-用户选择组件-用户查询请求入参 |
|||
*/ |
|||
public class UserSearchQueryParameter { |
|||
|
|||
/** |
|||
* 用户列表查询参数 |
|||
*/ |
|||
private QueryParameter queryParameter; |
|||
/** |
|||
* 机构查询参数 |
|||
*/ |
|||
private QueryParameter orgQueryParameter; |
|||
/** |
|||
* 角色查询参数 |
|||
*/ |
|||
private QueryParameter roleQueryParameter; |
|||
|
|||
public QueryParameter getQueryParameter() { |
|||
return queryParameter; |
|||
} |
|||
|
|||
public void setQueryParameter(QueryParameter queryParameter) { |
|||
this.queryParameter = queryParameter; |
|||
} |
|||
|
|||
public QueryParameter getOrgQueryParameter() { |
|||
return orgQueryParameter; |
|||
} |
|||
|
|||
public void setOrgQueryParameter(QueryParameter orgQueryParameter) { |
|||
this.orgQueryParameter = orgQueryParameter; |
|||
} |
|||
|
|||
public QueryParameter getRoleQueryParameter() { |
|||
return roleQueryParameter; |
|||
} |
|||
|
|||
public void setRoleQueryParameter(QueryParameter roleQueryParameter) { |
|||
this.roleQueryParameter = roleQueryParameter; |
|||
} |
|||
} |
@ -0,0 +1,162 @@ |
|||
package io.sc.platform.lcdp.frontend.component.vo; |
|||
|
|||
import io.sc.platform.orm.api.vo.CorporationAuditorVo; |
|||
|
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
public class UserSearchVo extends CorporationAuditorVo { |
|||
|
|||
private String id; |
|||
|
|||
//登录名
|
|||
private String loginName; |
|||
|
|||
//用户名
|
|||
private String userName; |
|||
|
|||
//描述
|
|||
private String description; |
|||
|
|||
private Boolean enable; |
|||
|
|||
//账户是否过期
|
|||
private Boolean accountExpired; |
|||
|
|||
//账户是否被锁定
|
|||
private Boolean accountLocked; |
|||
|
|||
//密码是否过期
|
|||
private Boolean credentialsExpired; |
|||
|
|||
//所属角色集合
|
|||
private List<Map<String, String>> roles =new ArrayList<Map<String, String>>(); |
|||
|
|||
//默认所属角色ID
|
|||
private String defaultRoleId; |
|||
|
|||
//所属机构集合
|
|||
private List<Map<String, String>> orgs =new ArrayList<Map<String, String>>(); |
|||
|
|||
//默认所属机构ID
|
|||
private String defaultOrgId; |
|||
|
|||
//所属部门集合
|
|||
private List<Map<String, String>> departments =new ArrayList<Map<String, String>>(); |
|||
|
|||
//默认所属部门ID
|
|||
private String defaultDepartmentId; |
|||
|
|||
public String getId() { |
|||
return id; |
|||
} |
|||
|
|||
public void setId(String id) { |
|||
this.id = id; |
|||
} |
|||
|
|||
public String getLoginName() { |
|||
return loginName; |
|||
} |
|||
|
|||
public void setLoginName(String loginName) { |
|||
this.loginName = loginName; |
|||
} |
|||
|
|||
public String getUserName() { |
|||
return userName; |
|||
} |
|||
|
|||
public void setUserName(String userName) { |
|||
this.userName = userName; |
|||
} |
|||
|
|||
public String getDescription() { |
|||
return description; |
|||
} |
|||
|
|||
public void setDescription(String description) { |
|||
this.description = description; |
|||
} |
|||
|
|||
public Boolean getEnable() { |
|||
return enable; |
|||
} |
|||
|
|||
public void setEnable(Boolean enable) { |
|||
this.enable = enable; |
|||
} |
|||
|
|||
public Boolean getAccountExpired() { |
|||
return accountExpired; |
|||
} |
|||
|
|||
public void setAccountExpired(Boolean accountExpired) { |
|||
this.accountExpired = accountExpired; |
|||
} |
|||
|
|||
public Boolean getAccountLocked() { |
|||
return accountLocked; |
|||
} |
|||
|
|||
public void setAccountLocked(Boolean accountLocked) { |
|||
this.accountLocked = accountLocked; |
|||
} |
|||
|
|||
public Boolean getCredentialsExpired() { |
|||
return credentialsExpired; |
|||
} |
|||
|
|||
public void setCredentialsExpired(Boolean credentialsExpired) { |
|||
this.credentialsExpired = credentialsExpired; |
|||
} |
|||
|
|||
public List<Map<String, String>> getRoles() { |
|||
return roles; |
|||
} |
|||
|
|||
public void setRoles(List<Map<String, String>> roles) { |
|||
this.roles = roles; |
|||
} |
|||
|
|||
public String getDefaultRoleId() { |
|||
return defaultRoleId; |
|||
} |
|||
|
|||
public void setDefaultRoleId(String defaultRoleId) { |
|||
this.defaultRoleId = defaultRoleId; |
|||
} |
|||
|
|||
public List<Map<String, String>> getOrgs() { |
|||
return orgs; |
|||
} |
|||
|
|||
public void setOrgs(List<Map<String, String>> orgs) { |
|||
this.orgs = orgs; |
|||
} |
|||
|
|||
public String getDefaultOrgId() { |
|||
return defaultOrgId; |
|||
} |
|||
|
|||
public void setDefaultOrgId(String defaultOrgId) { |
|||
this.defaultOrgId = defaultOrgId; |
|||
} |
|||
|
|||
public List<Map<String, String>> getDepartments() { |
|||
return departments; |
|||
} |
|||
|
|||
public void setDepartments(List<Map<String, String>> departments) { |
|||
this.departments = departments; |
|||
} |
|||
|
|||
public String getDefaultDepartmentId() { |
|||
return defaultDepartmentId; |
|||
} |
|||
|
|||
public void setDefaultDepartmentId(String defaultDepartmentId) { |
|||
this.defaultDepartmentId = defaultDepartmentId; |
|||
} |
|||
} |
Loading…
Reference in new issue