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 { |
dependencies { |
||||
api( |
api( |
||||
project(":io.sc.platform.mvc"), |
project(":io.sc.platform.mvc"), |
||||
|
project(":io.sc.platform.system"), |
||||
project(":io.sc.platform.lcdp.frontend"), |
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