diff --git a/backend/src/main/java/io/dataease/controller/sys/base/BaseGridRequest.java b/backend/src/main/java/io/dataease/controller/sys/base/BaseGridRequest.java index 4448c64b82..63ce8e97c3 100644 --- a/backend/src/main/java/io/dataease/controller/sys/base/BaseGridRequest.java +++ b/backend/src/main/java/io/dataease/controller/sys/base/BaseGridRequest.java @@ -3,6 +3,7 @@ package io.dataease.controller.sys.base; import io.dataease.base.mapper.ext.query.GridExample; import lombok.Data; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.io.Serializable; import java.util.List; @@ -13,12 +14,20 @@ public class BaseGridRequest implements Serializable { private List conditions; + private List orders; + public GridExample convertExample(){ 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; } } diff --git a/backend/src/main/java/io/dataease/service/sys/SysUserService.java b/backend/src/main/java/io/dataease/service/sys/SysUserService.java index eb1d6ac33f..d5a067fbb1 100644 --- a/backend/src/main/java/io/dataease/service/sys/SysUserService.java +++ b/backend/src/main/java/io/dataease/service/sys/SysUserService.java @@ -51,16 +51,16 @@ public class SysUserService { public List query(BaseGridRequest request) { - List sysUsers = sysUserMapper.selectByExample(new SysUserExample()); + /* List sysUsers = sysUserMapper.selectByExample(new SysUserExample()); List lists = sysUsers.stream().map(ele -> { SysUserGridResponse response = new SysUserGridResponse(); BeanUtils.copyBean(response, ele); return response; - }).collect(Collectors.toList()); + }).collect(Collectors.toList());*/ GridExample gridExample = request.convertExample(); - List query = extSysUserMapper.query(gridExample); + List lists = extSysUserMapper.query(gridExample); lists.forEach(item -> { - for (SysUserGridResponse response : query) { + /*for (SysUserGridResponse response : query) { if (item.getUserId().equals(response.getUserId())) { item.setId(response.getId()); List roles = response.getRoles(); @@ -69,10 +69,10 @@ public class SysUserService { item.setRoleIds(roleIds); item.setDept(response.getDept()); } - } -// List roles = item.getRoles(); -// List roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); -// item.setRoleIds(roleIds); + }*/ + List roles = item.getRoles(); + List roleIds = roles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); + item.setRoleIds(roleIds); }); return lists; } diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index 51d03ede6b..8c281ca759 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -1,7 +1,4 @@ -/** - * Created by PanJiaChen on 16/11/18. - */ export function timeSection(date, type) { if (!date) { return null @@ -221,6 +218,35 @@ export function formatCondition(param) { } 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) { let quickObj = null diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index 036d0da230..72caacdb66 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -401,7 +401,10 @@ export default { }, loadTable(sceneId) { loadTable({ sceneId: sceneId, sort: 'type asc,create_time desc,name asc' }).then(res => { - this.sceneDatas = res.data + res && res.data && (this.sceneDatas = res.data.map(tb => { + tb.type = 'db' + return tb + })) }) }, @@ -608,7 +611,7 @@ export default { } .component-result-content { - height: calc(50vh - 140px); + height: calc(50vh - 150px); overflow-y: auto; } diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue index eb68e88b03..287b26702d 100644 --- a/frontend/src/views/system/user/index.vue +++ b/frontend/src/views/system/user/index.vue @@ -8,6 +8,7 @@ :pagination-config="paginationConfig" @select="select" @search="search" + @sort-change="sortChange" > - + - + @@ -43,12 +44,12 @@ - + - + @@ -163,7 +164,7 @@ import LayoutContent from '@/components/business/LayoutContent' import ComplexTable from '@/components/business/complex-table' // 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 { LOAD_CHILDREN_OPTIONS, LOAD_ROOT_OPTIONS } from '@riophae/vue-treeselect' import Treeselect from '@riophae/vue-treeselect' @@ -295,7 +296,9 @@ export default { edit: ['user:edit'], del: ['user:del'], editPwd: ['user:editPwd'] - } + }, + orderConditions: [], + last_condition: null } }, mounted() { @@ -305,13 +308,23 @@ export default { }, 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) { }, search(condition) { - condition = formatQuickCondition(condition, 'username') + this.last_condition = condition + condition = formatQuickCondition(condition, 'nick_name') const temp = formatCondition(condition) const param = temp || {} + param['orders'] = formatOrders(this.orderConditions) const { currentPage, pageSize } = this.paginationConfig userLists(currentPage, pageSize, param).then(response => { this.data = response.data.listObject