From 24d1c35d0f97b192a9415fab3461510b19fbe1ad Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 2 Jun 2021 13:52:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=8E=92=E5=BA=8F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/base/BaseGridRequest.java | 15 ++++++++-- .../dataease/service/sys/SysUserService.java | 16 +++++----- frontend/src/utils/index.js | 29 +++++++++++++++++++ frontend/src/views/system/user/index.vue | 27 ++++++++++++----- 4 files changed, 69 insertions(+), 18 deletions(-) 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..e871fcc8b5 100644 --- a/frontend/src/utils/index.js +++ b/frontend/src/utils/index.js @@ -221,6 +221,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/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 From db71599447db1641768e63a78a40753a7a76ed53 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 2 Jun 2021 14:27:47 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E9=9D=9E?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/utils/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/frontend/src/utils/index.js b/frontend/src/utils/index.js index e871fcc8b5..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 From af4e85e10c2383b99095b422e4a57782a7b82d16 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 2 Jun 2021 15:14:29 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E4=BB=AA=E8=A1=A8=E7=9B=98=20?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=A0=91=E7=8A=B6=E7=BB=93=E6=9E=84=E4=B8=8D?= =?UTF-8?q?=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/panel/filter/filterDialog.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index 036d0da230..d8e7108096 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 + })) }) }, From 5871e153877965f06747706f312cc201bdde9403 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 2 Jun 2021 15:23:06 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E7=BB=84=E4=BB=B6=E6=A0=91=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E5=AE=8C=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/panel/filter/filterDialog.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index d8e7108096..72caacdb66 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -611,7 +611,7 @@ export default { } .component-result-content { - height: calc(50vh - 140px); + height: calc(50vh - 150px); overflow-y: auto; }