forked from github/dataease
feat: 用户列表增加排序功能
This commit is contained in:
parent
4f031ad99d
commit
24d1c35d0f
@ -3,6 +3,7 @@ package io.dataease.controller.sys.base;
|
|||||||
import io.dataease.base.mapper.ext.query.GridExample;
|
import io.dataease.base.mapper.ext.query.GridExample;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -13,12 +14,20 @@ public class BaseGridRequest implements Serializable {
|
|||||||
|
|
||||||
private List<ConditionEntity> conditions;
|
private List<ConditionEntity> conditions;
|
||||||
|
|
||||||
|
private List<String> orders;
|
||||||
|
|
||||||
public GridExample convertExample(){
|
public GridExample convertExample(){
|
||||||
GridExample gridExample = new GridExample();
|
GridExample gridExample = new GridExample();
|
||||||
if (CollectionUtils.isEmpty(conditions))return gridExample;
|
if (CollectionUtils.isNotEmpty(conditions)) {
|
||||||
|
GridExample.Criteria criteria = gridExample.createCriteria();
|
||||||
|
conditions.forEach(criteria::addCondtion);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(orders)){
|
||||||
|
String orderByClause = String.join(", ", orders);
|
||||||
|
gridExample.setOrderByClause(orderByClause);
|
||||||
|
}
|
||||||
|
|
||||||
GridExample.Criteria criteria = gridExample.createCriteria();
|
|
||||||
conditions.forEach(criteria::addCondtion);
|
|
||||||
return gridExample;
|
return gridExample;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,16 +51,16 @@ public class SysUserService {
|
|||||||
|
|
||||||
|
|
||||||
public List<SysUserGridResponse> query(BaseGridRequest request) {
|
public List<SysUserGridResponse> query(BaseGridRequest request) {
|
||||||
List<SysUser> sysUsers = sysUserMapper.selectByExample(new SysUserExample());
|
/* List<SysUser> sysUsers = sysUserMapper.selectByExample(new SysUserExample());
|
||||||
List<SysUserGridResponse> lists = sysUsers.stream().map(ele -> {
|
List<SysUserGridResponse> lists = sysUsers.stream().map(ele -> {
|
||||||
SysUserGridResponse response = new SysUserGridResponse();
|
SysUserGridResponse response = new SysUserGridResponse();
|
||||||
BeanUtils.copyBean(response, ele);
|
BeanUtils.copyBean(response, ele);
|
||||||
return response;
|
return response;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());*/
|
||||||
GridExample gridExample = request.convertExample();
|
GridExample gridExample = request.convertExample();
|
||||||
List<SysUserGridResponse> query = extSysUserMapper.query(gridExample);
|
List<SysUserGridResponse> lists = extSysUserMapper.query(gridExample);
|
||||||
lists.forEach(item -> {
|
lists.forEach(item -> {
|
||||||
for (SysUserGridResponse response : query) {
|
/*for (SysUserGridResponse response : query) {
|
||||||
if (item.getUserId().equals(response.getUserId())) {
|
if (item.getUserId().equals(response.getUserId())) {
|
||||||
item.setId(response.getId());
|
item.setId(response.getId());
|
||||||
List<SysUserRole> roles = response.getRoles();
|
List<SysUserRole> roles = response.getRoles();
|
||||||
@ -69,10 +69,10 @@ public class SysUserService {
|
|||||||
item.setRoleIds(roleIds);
|
item.setRoleIds(roleIds);
|
||||||
item.setDept(response.getDept());
|
item.setDept(response.getDept());
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
// List<SysUserRole> roles = item.getRoles();
|
List<SysUserRole> roles = item.getRoles();
|
||||||
// List<Long> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
|
List<Long> roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
|
||||||
// item.setRoleIds(roleIds);
|
item.setRoleIds(roleIds);
|
||||||
});
|
});
|
||||||
return lists;
|
return lists;
|
||||||
}
|
}
|
||||||
|
@ -221,6 +221,35 @@ export function formatCondition(param) {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 驼峰转下划线
|
||||||
|
* @param {*} name
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function toLine(name) {
|
||||||
|
return name.replace(/([A-Z])/g, '_$1').toLowerCase()
|
||||||
|
}
|
||||||
|
export function addOrder(order, orders) {
|
||||||
|
order.field = toLine(order.field)
|
||||||
|
if (order.value.startsWith('desc')) {
|
||||||
|
order.value = 'desc'
|
||||||
|
} else {
|
||||||
|
order.value = 'asc'
|
||||||
|
}
|
||||||
|
orders = orders || []
|
||||||
|
for (let index = 0; index < orders.length; index++) {
|
||||||
|
const element = orders[index]
|
||||||
|
if (order.field === element.field) {
|
||||||
|
orders[index] = order
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
orders.push(order)
|
||||||
|
}
|
||||||
|
|
||||||
|
export function formatOrders(orders) {
|
||||||
|
return orders.map(order => order.field + ' ' + order.value)
|
||||||
|
}
|
||||||
|
|
||||||
export function formatQuickCondition(param, quickField) {
|
export function formatQuickCondition(param, quickField) {
|
||||||
let quickObj = null
|
let quickObj = null
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
:pagination-config="paginationConfig"
|
:pagination-config="paginationConfig"
|
||||||
@select="select"
|
@select="select"
|
||||||
@search="search"
|
@search="search"
|
||||||
|
@sort-change="sortChange"
|
||||||
>
|
>
|
||||||
<template #toolbar>
|
<template #toolbar>
|
||||||
<el-button v-permission="['user:add']" icon="el-icon-circle-plus-outline" @click="create">{{ $t('user.create') }}</el-button>
|
<el-button v-permission="['user:add']" icon="el-icon-circle-plus-outline" @click="create">{{ $t('user.create') }}</el-button>
|
||||||
@ -15,12 +16,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table-column prop="username" label="ID" />
|
<el-table-column prop="username" label="ID" />
|
||||||
<el-table-column prop="nickName" :label="$t('commons.nick_name')" />
|
<el-table-column prop="nickName" sortable="custom" :label="$t('commons.nick_name')" />
|
||||||
<el-table-column prop="gender" :label="$t('commons.gender')" />
|
<el-table-column prop="gender" :label="$t('commons.gender')" />
|
||||||
|
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="phone" :label="$t('commons.phone')" />
|
<el-table-column :show-overflow-tooltip="true" prop="phone" :label="$t('commons.phone')" />
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="email" :label="$t('commons.email')" />
|
<el-table-column :show-overflow-tooltip="true" prop="email" :label="$t('commons.email')" />
|
||||||
<el-table-column :show-overflow-tooltip="true" prop="dept" :label="$t('commons.organization')">
|
<el-table-column :show-overflow-tooltip="true" prop="dept" sortable="custom" :label="$t('commons.organization')">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div>{{ scope.row.dept && scope.row.dept.deptName }}</div>
|
<div>{{ scope.row.dept && scope.row.dept.deptName }}</div>
|
||||||
</template>
|
</template>
|
||||||
@ -43,12 +44,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="status" :label="$t('commons.status')">
|
<el-table-column prop="status" sortable="custom" :label="$t('commons.status')">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<el-switch v-model="scope.row.enabled" :active-value="1" :inactive-value="0" inactive-color="#DCDFE6" @change="changeSwitch(scope.row)" />
|
<el-switch v-model="scope.row.enabled" :active-value="1" :inactive-value="0" inactive-color="#DCDFE6" @change="changeSwitch(scope.row)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="createTime" :label="$t('commons.create_time')">
|
<el-table-column prop="createTime" sortable="custom" :label="$t('commons.create_time')">
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
|
<span>{{ scope.row.createTime | timestampFormatDate }}</span>
|
||||||
</template>
|
</template>
|
||||||
@ -163,7 +164,7 @@ import LayoutContent from '@/components/business/LayoutContent'
|
|||||||
import ComplexTable from '@/components/business/complex-table'
|
import ComplexTable from '@/components/business/complex-table'
|
||||||
|
|
||||||
// import { checkPermission } from '@/utils/permission'
|
// import { checkPermission } from '@/utils/permission'
|
||||||
import { formatCondition, formatQuickCondition } from '@/utils/index'
|
import { formatCondition, formatQuickCondition, addOrder, formatOrders } from '@/utils/index'
|
||||||
import { PHONE_REGEX } from '@/utils/validate'
|
import { PHONE_REGEX } from '@/utils/validate'
|
||||||
import { LOAD_CHILDREN_OPTIONS, LOAD_ROOT_OPTIONS } from '@riophae/vue-treeselect'
|
import { LOAD_CHILDREN_OPTIONS, LOAD_ROOT_OPTIONS } from '@riophae/vue-treeselect'
|
||||||
import Treeselect from '@riophae/vue-treeselect'
|
import Treeselect from '@riophae/vue-treeselect'
|
||||||
@ -295,7 +296,9 @@ export default {
|
|||||||
edit: ['user:edit'],
|
edit: ['user:edit'],
|
||||||
del: ['user:del'],
|
del: ['user:del'],
|
||||||
editPwd: ['user:editPwd']
|
editPwd: ['user:editPwd']
|
||||||
}
|
},
|
||||||
|
orderConditions: [],
|
||||||
|
last_condition: null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@ -305,13 +308,23 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
sortChange({ column, prop, order }) {
|
||||||
|
if (prop === 'dept') {
|
||||||
|
prop = 'deptId'
|
||||||
|
}
|
||||||
|
this.orderConditions = []
|
||||||
|
addOrder({ field: prop, value: order }, this.orderConditions)
|
||||||
|
this.search(this.last_condition)
|
||||||
|
},
|
||||||
select(selection) {
|
select(selection) {
|
||||||
},
|
},
|
||||||
|
|
||||||
search(condition) {
|
search(condition) {
|
||||||
condition = formatQuickCondition(condition, 'username')
|
this.last_condition = condition
|
||||||
|
condition = formatQuickCondition(condition, 'nick_name')
|
||||||
const temp = formatCondition(condition)
|
const temp = formatCondition(condition)
|
||||||
const param = temp || {}
|
const param = temp || {}
|
||||||
|
param['orders'] = formatOrders(this.orderConditions)
|
||||||
const { currentPage, pageSize } = this.paginationConfig
|
const { currentPage, pageSize } = this.paginationConfig
|
||||||
userLists(currentPage, pageSize, param).then(response => {
|
userLists(currentPage, pageSize, param).then(response => {
|
||||||
this.data = response.data.listObject
|
this.data = response.data.listObject
|
||||||
|
Loading…
Reference in New Issue
Block a user