fix: 日志导出增加条件

This commit is contained in:
fit2cloud-chenyw 2022-05-26 22:41:46 +08:00
parent 04fe29a96c
commit bab9634d2e
7 changed files with 45 additions and 16 deletions

View File

@ -17,7 +17,6 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@RestController
@ -51,7 +50,8 @@ public class SysLogController {
@ApiOperation("导出操作日志")
@PostMapping("/export")
public void export(HttpServletResponse response) throws Exception{
logService.exportExcel(response);
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
public void export(@RequestBody BaseGridRequest request) throws Exception{
logService.exportExcel(request);
}
}

View File

@ -11,6 +11,7 @@ import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.CustomCellWriteUtil;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.controller.sys.base.BaseGridRequest;
import io.dataease.controller.sys.base.ConditionEntity;
import io.dataease.dto.SysLogDTO;
@ -76,6 +77,15 @@ public class LogService {
public List<SysLogGridDTO> query(BaseGridRequest request) {
request = detailRequest(request);
GridExample gridExample = request.convertExample();
List<SysLogWithBLOBs> voLogs = extSysLogMapper.query(gridExample);
List<SysLogGridDTO> dtos = voLogs.stream().map(this::convertDTO).collect(Collectors.toList());
return dtos;
}
private BaseGridRequest detailRequest(BaseGridRequest request) {
List<ConditionEntity> conditions = request.getConditions();
if (CollectionUtils.isNotEmpty(conditions)) {
ConditionEntity optypeCondition = null;
@ -107,11 +117,7 @@ public class LogService {
if (ObjectUtils.isNotEmpty(sourceCondition))conditions.add(sourceCondition);
}
}
GridExample gridExample = request.convertExample();
List<SysLogWithBLOBs> voLogs = extSysLogMapper.query(gridExample);
List<SysLogGridDTO> dtos = voLogs.stream().map(this::convertDTO).collect(Collectors.toList());
return dtos;
return request;
}
@ -206,8 +212,10 @@ public class LogService {
sysLogMapper.insert(sysLogWithBLOBs);
}
public void exportExcel(HttpServletResponse response) throws Exception{
BaseGridRequest request = new BaseGridRequest();
public void exportExcel(BaseGridRequest request) throws Exception{
request = detailRequest(request);
HttpServletResponse response = ServletUtils.response();
GridExample gridExample = request.convertExample();
List<SysLogWithBLOBs> lists = extSysLogMapper.query(gridExample);
List<LogExcel> excels = lists.stream().map(item -> {

View File

@ -17,11 +17,12 @@ export function opTypes() {
})
}
export function exportExcel() {
export function exportExcel(data) {
return request({
url: '/api/log/export',
method: 'post',
loading: true,
responseType: 'blob'
responseType: 'blob',
data
})
}

View File

@ -2054,6 +2054,7 @@ export default {
user: 'User',
time: 'Time',
export: 'Export',
confirm: 'Sure Export ?',
search_by_key: 'Search by key'
},
plugin_style: {

View File

@ -2065,6 +2065,7 @@ export default {
user: '操作用戶',
time: '操作時間',
export: '導出',
confirm: '確定導出嗎?',
search_by_key: '搜索詳情'
},
plugin_style: {

View File

@ -1340,7 +1340,7 @@ export default {
show_info: '驱动信息',
file_name: '文件名',
version: '版本',
please_set_driverClass: '请指定驱动类',
please_set_driverClass: '请指定驱动类'
},
datasource: {
auth_method: '认证方式',
@ -2072,6 +2072,7 @@ export default {
user: '操作用户',
time: '操作时间',
export: '导出',
confirm: '确定导出吗?',
search_by_key: '搜索详情'
},
plugin_style: {

View File

@ -11,7 +11,7 @@
@sort-change="sortChange"
>
<template #toolbar>
<el-button v-permission="['log:export']" icon="el-icon-download" size="mini" @click="exportData">{{ $t('log.export') }}</el-button>
<el-button v-permission="['log:export']" icon="el-icon-download" size="mini" @click="exportConfirm">{{ $t('log.export') }}</el-button>
</template>
<el-table-column :show-overflow-tooltip="true" prop="opType" :label="$t('log.optype')" width="140">
@ -92,9 +92,26 @@ export default {
},
methods: {
exportConfirm() {
this.$confirm(this.$t('log.confirm'), '', {
confirmButtonText: this.$t('commons.confirm'),
cancelButtonText: this.$t('commons.cancel'),
type: 'warning'
}).then(() => {
this.exportData()
}).catch(() => {
// this.$info(this.$t('commons.delete_cancel'))
})
},
exportData() {
console.log('exportting...')
exportExcel().then(res => {
let condition = this.last_condition
condition = formatQuickCondition(condition, 'key')
const temp = formatCondition(condition)
const param = temp || {}
param['orders'] = formatOrders(this.orderConditions)
exportExcel(param).then(res => {
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
const link = document.createElement('a')
link.style.display = 'none'