Merge branch 'dev' of github.com:dataease/dataease into dev

This commit is contained in:
taojinlong 2022-09-15 14:55:07 +08:00
commit e6cee9d845
14 changed files with 105 additions and 57 deletions

View File

@ -68,7 +68,8 @@ public class ShiroServiceImpl implements ShiroService {
filterChainDefinitionMap.put("/**/*.json", ANON);
filterChainDefinitionMap.put("/system/ui/**", ANON);
filterChainDefinitionMap.put("/system/file/**", ANON);
filterChainDefinitionMap.put("/system/filedown/**", ANON);
filterChainDefinitionMap.put("/system/showpicture/**", ANON);
filterChainDefinitionMap.put("/**/*.js", ANON);
filterChainDefinitionMap.put("/**/*.css", ANON);
filterChainDefinitionMap.put("/**/*.map", ANON);

View File

@ -1,6 +1,6 @@
package io.dataease.controller.sys;
import io.dataease.plugins.common.base.domain.FileMetadata;
import io.dataease.plugins.common.base.domain.SystemParameter;
import io.dataease.commons.constants.ParamConstants;
import io.dataease.controller.sys.response.BasicInfo;
@ -8,6 +8,7 @@ import io.dataease.controller.sys.response.MailInfo;
import io.dataease.dto.SystemParameterDTO;
import io.dataease.listener.DatasetCheckListener;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.util.GlobalFileUtil;
import io.dataease.plugins.xpack.cas.dto.CasSaveResult;
import io.dataease.service.FileService;
import io.dataease.service.system.EmailService;
@ -22,7 +23,7 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -108,21 +109,16 @@ public class SystemParameterController {
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}
@GetMapping("/file/down/{fileId}/{fileName}")
public ResponseEntity<ByteArrayResource> down(@PathVariable("fileId") String fileId, @PathVariable("fileName") String fileName) throws Exception{
@GetMapping("/filedown/{fileId}/{fileName}")
public ResponseEntity<ByteArrayResource> down(@PathVariable("fileId") String fileId, @PathVariable("fileName") String fileName) throws Exception {
FileMetadata fileMetadata = fileService.getFileMetadataById(fileId);
String type = fileMetadata.getType();
if (!StringUtils.endsWith(fileName.toUpperCase(), type.toUpperCase())) {
fileName += ("." + type);
}
byte[] bytes = fileService.loadFileAsBytes(fileId);
ByteArrayResource bar = new ByteArrayResource(bytes);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
ContentDisposition contentDisposition = ContentDisposition.parse("attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
headers.setContentDisposition(contentDisposition);
return new ResponseEntity<>(bar, headers, HttpStatus.OK);
return GlobalFileUtil.down(fileId, fileName);
}
@GetMapping("/showpicture/{fileId}")
public ResponseEntity<byte[]> showPicture(@PathVariable("fileId") String fileId) throws Exception {
return GlobalFileUtil.showPicture(fileId);
}
@PostMapping(value = "/save/ui", consumes = {"multipart/form-data"})

View File

@ -1658,10 +1658,14 @@ public class ChartViewService {
String senior = view.getSenior();
JSONObject jsonObject = JSONObject.parseObject(senior);
JSONArray assistLine = jsonObject.getJSONArray("assistLine");
List<ChartSeniorAssistDTO> list = new ArrayList<>();
if (ObjectUtils.isEmpty(assistLine) || StringUtils.isBlank(assistLine.toJSONString())) {
return list;
}
List<ChartSeniorAssistDTO> assistLines = gson.fromJson(assistLine.toJSONString(), new TypeToken<List<ChartSeniorAssistDTO>>() {
}.getType());
List<ChartSeniorAssistDTO> list = new ArrayList<>();
for (ChartSeniorAssistDTO dto : assistLines) {
if (StringUtils.equalsIgnoreCase(dto.getField(), "0")) {
continue;

View File

@ -58,3 +58,9 @@ INSERT INTO `sys_msg_channel` VALUES (5, 'webmsg.channel_lark_msg', 'sendLark');
UPDATE `dataset_table_function` SET `func` = 'CONCAT(s1,s2,...)' WHERE `id` = 29;
UPDATE `dataset_table_function` SET `func` = 'CONCAT(s1,s2,...)' WHERE `id` = 78;
ALTER TABLE `sys_task_email`
ADD COLUMN `recisetting` varchar(255) NULL COMMENT '消息渠道' AFTER `view_ids`,
ADD COLUMN `conditions` longtext NULL COMMENT '仪表板条件' AFTER `recisetting`;

View File

@ -1016,7 +1016,8 @@ export default {
table_item_fontsize: 'Table font size',
table_header_bg: 'Header Background',
table_item_bg: 'Table Background',
table_item_font_color: 'Font Color',
table_header_font_color: 'Header Font',
table_item_font_color: 'Table Font',
stripe: 'Zebra pattern',
start_angle: 'Start Angle',
end_angle: 'End Angle',
@ -1329,7 +1330,10 @@ export default {
chart_group: 'Sub Type',
chart_bar_group: 'Bar Group',
field_dynamic: 'Dynamic',
aggregation: 'Aggregation'
aggregation: 'Aggregation',
filter_between: 'Between',
field_not_empty: 'Field can not be empty',
summary_not_empty: 'Summary can not be empty'
},
dataset: {
parse_filed: 'Parse Field',
@ -2338,6 +2342,11 @@ export default {
panel: 'Panel',
content: 'Content',
recipients: 'Recipients',
recisetting: 'channel',
email: 'Email',
wecom: 'Wecom',
dingtalk: 'Dingtalk',
lark: 'Lark',
pixel: 'Pixel',
default: 'Default',
custom: 'Custom',

View File

@ -1016,7 +1016,8 @@ export default {
table_item_fontsize: '錶格字體大小',
table_header_bg: '錶頭背景',
table_item_bg: '錶格背景',
table_item_font_color: '字體顔色',
table_header_font_color: '表頭字體',
table_item_font_color: '表格字體',
stripe: '斑馬紋',
start_angle: '起始角度',
end_angle: '結束角度',
@ -1329,7 +1330,10 @@ export default {
chart_group: '子類別',
chart_bar_group: '分組柱狀圖',
field_dynamic: '動態值',
aggregation: '聚合方式'
aggregation: '聚合方式',
filter_between: '介於',
field_not_empty: '字段不能為空',
summary_not_empty: '聚合方式不能為空'
},
dataset: {
parse_filed: '解析字段',
@ -2335,10 +2339,15 @@ export default {
},
emailtask: {
title: '郵件主題',
title: '報告主題',
panel: '儀錶闆',
content: '郵件正文',
content: '報告正文',
recipients: '收件人',
recisetting: '接受設置',
email: '郵件',
wecom: '企業微信',
dingtalk: '釘釘',
lark: '飛書',
pixel: '分辨率',
default: '默認',
custom: '自定義',

View File

@ -1016,7 +1016,8 @@ export default {
table_item_fontsize: '表格字体大小',
table_header_bg: '表头背景',
table_item_bg: '表格背景',
table_item_font_color: '字体颜色',
table_header_font_color: '表头字体',
table_item_font_color: '表格字体',
stripe: '斑马纹',
start_angle: '起始角度',
end_angle: '结束角度',
@ -1329,7 +1330,10 @@ export default {
chart_group: '子类别',
chart_bar_group: '分组柱状图',
field_dynamic: '动态值',
aggregation: '聚合方式'
aggregation: '聚合方式',
filter_between: '介于',
field_not_empty: '字段不能为空',
summary_not_empty: '聚合方式不能为空'
},
dataset: {
parse_filed: '解析字段',
@ -2335,10 +2339,15 @@ export default {
},
emailtask: {
title: '邮件主题',
title: '报告主题',
panel: '仪表板',
content: '邮件正文',
content: '报告正文',
recipients: '收件人',
recisetting: '接受设置',
email: '邮件',
wecom: '企业微信',
dingtalk: '钉钉',
lark: '飞书',
pixel: '分辨率',
default: '默认',
custom: '自定义',

View File

@ -18,6 +18,7 @@ export const DEFAULT_COLOR_CASE = {
alpha: 100,
tableHeaderBgColor: '#6D9A49',
tableItemBgColor: '#FFFFFF',
tableHeaderFontColor: '#000000',
tableFontColor: '#000000',
tableStripe: true,
dimensionColor: '#000000',

View File

@ -23,17 +23,17 @@ export function getCustomTheme(chart) {
verticalBorderColor: borderColor
},
text: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
bolderText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
measureText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
}
@ -45,17 +45,17 @@ export function getCustomTheme(chart) {
verticalBorderColor: borderColor
},
text: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
bolderText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
measureText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
}
@ -67,17 +67,17 @@ export function getCustomTheme(chart) {
verticalBorderColor: borderColor
},
text: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
bolderText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
},
measureText: {
fill: DEFAULT_COLOR_CASE.tableFontColor,
fill: DEFAULT_COLOR_CASE.tableHeaderFontColor,
fontSize: DEFAULT_SIZE.tableTitleFontSize,
textAlign: headerAlign
}
@ -121,23 +121,23 @@ export function getCustomTheme(chart) {
theme.cornerCell.cell.backgroundColor = h_c
theme.cornerCell.cell.horizontalBorderColor = b_c
theme.cornerCell.cell.verticalBorderColor = b_c
theme.cornerCell.bolderText.fill = c.tableFontColor
theme.cornerCell.text.fill = c.tableFontColor
theme.cornerCell.measureText.fill = c.tableFontColor
theme.cornerCell.bolderText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.cornerCell.text.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.cornerCell.measureText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.rowCell.cell.backgroundColor = h_c
theme.rowCell.cell.horizontalBorderColor = b_c
theme.rowCell.cell.verticalBorderColor = b_c
theme.rowCell.bolderText.fill = c.tableFontColor
theme.rowCell.text.fill = c.tableFontColor
theme.rowCell.measureText.fill = c.tableFontColor
theme.rowCell.bolderText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.rowCell.text.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.rowCell.measureText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.colCell.cell.backgroundColor = h_c
theme.colCell.cell.horizontalBorderColor = b_c
theme.colCell.cell.verticalBorderColor = b_c
theme.colCell.bolderText.fill = c.tableFontColor
theme.colCell.text.fill = c.tableFontColor
theme.colCell.measureText.fill = c.tableFontColor
theme.colCell.bolderText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.colCell.text.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.colCell.measureText.fill = c.tableHeaderFontColor ? c.tableHeaderFontColor : c.tableFontColor
theme.dataCell.cell.backgroundColor = i_c
theme.dataCell.cell.horizontalBorderColor = b_c

View File

@ -45,6 +45,7 @@ export const TYPE_CONFIGS = [
'color-selector': [
'tableHeaderBgColor',
'tableItemBgColor',
'tableHeaderFontColor',
'tableFontColor',
'tableBorderColor',
'alpha'
@ -88,6 +89,7 @@ export const TYPE_CONFIGS = [
'color-selector': [
'tableHeaderBgColor',
'tableItemBgColor',
'tableHeaderFontColor',
'tableFontColor',
'tableBorderColor',
'alpha'
@ -134,6 +136,7 @@ export const TYPE_CONFIGS = [
'color-selector': [
'tableHeaderBgColor',
'tableItemBgColor',
'tableHeaderFontColor',
'tableFontColor',
'tableBorderColor',
'alpha'
@ -1463,6 +1466,7 @@ export const TYPE_CONFIGS = [
'color-selector': [
'tableHeaderBgColor',
'tableItemBgColor',
'tableHeaderFontColor',
'tableFontColor',
'alpha'
],
@ -1499,6 +1503,7 @@ export const TYPE_CONFIGS = [
'color-selector': [
'tableHeaderBgColor',
'tableItemBgColor',
'tableHeaderFontColor',
'tableFontColor',
'alpha'
],

View File

@ -36,7 +36,7 @@
<span style="float: left; color: #8492a6; font-size: 12px">{{ quota.name }}</span>
</el-option>
</el-select>
<el-select v-model="item.summary" size="mini" class="select-item" :placeholder="$t('chart.summary')" @change="changeAssistLine">
<el-select v-model="item.summary" size="mini" class="select-item" :placeholder="$t('chart.aggregation')" @change="changeAssistLine">
<el-option v-if="item.curField && item.curField.id && item.curField.deType !== 0 && item.curField.deType !== 1 && item.curField.deType !== 5" key="sum" value="sum" :label="$t('chart.sum')" />
<el-option v-if="item.curField && item.curField.id && item.curField.deType !== 0 && item.curField.deType !== 1 && item.curField.deType !== 5" key="avg" value="avg" :label="$t('chart.avg')" />
<el-option v-if="item.curField && item.curField.id && item.curField.deType !== 0 && item.curField.deType !== 1 && item.curField.deType !== 5" key="max" value="max" :label="$t('chart.max')" />

View File

@ -94,6 +94,9 @@
<el-form-item v-show="showProperty('tableItemBgColor')" :label="$t('chart.table_item_bg')" class="form-item">
<el-color-picker v-model="colorForm.tableItemBgColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableItemBgColor')" />
</el-form-item>
<el-form-item v-show="showProperty('tableHeaderFontColor')" :label="$t('chart.table_header_font_color')" class="form-item">
<el-color-picker v-model="colorForm.tableHeaderFontColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableHeaderFontColor')" />
</el-form-item>
<el-form-item v-show="showProperty('tableFontColor')" :label="$t('chart.table_item_font_color')" class="form-item">
<el-color-picker v-model="colorForm.tableFontColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableFontColor')" />
</el-form-item>
@ -300,6 +303,7 @@ export default {
}
this.colorForm.tableBorderColor = this.colorForm.tableBorderColor ? this.colorForm.tableBorderColor : DEFAULT_COLOR_CASE.tableBorderColor
this.colorForm.tableHeaderFontColor = this.colorForm.tableHeaderFontColor ? this.colorForm.tableHeaderFontColor : this.colorForm.tableFontColor
this.initCustomColor()
}

View File

@ -200,12 +200,12 @@ export default {
datas = []
this.resetPage()
}
datas.forEach(item =>{
Object.keys(item).forEach(key=> {
if(typeof item[key] === 'object'){
item[key] = ""
}
})
datas.forEach(item => {
Object.keys(item).forEach(key => {
if (typeof item[key] === 'object') {
item[key] = ''
}
})
})
this.$refs.plxTable.reloadData(datas)
this.$nextTick(() => {
@ -257,7 +257,7 @@ export default {
if (this.chart.customAttr) {
const customAttr = JSON.parse(this.chart.customAttr)
if (customAttr.color) {
this.table_header_class.color = customAttr.color.tableFontColor
this.table_header_class.color = customAttr.color.tableHeaderFontColor ? customAttr.color.tableHeaderFontColor : customAttr.color.tableFontColor
this.table_header_class.background = hexColorToRGBA(customAttr.color.tableHeaderBgColor, customAttr.color.alpha)
this.table_item_class.color = customAttr.color.tableFontColor
this.table_item_class.background = hexColorToRGBA(customAttr.color.tableItemBgColor, customAttr.color.alpha)

View File

@ -67,6 +67,9 @@
<el-form-item :label="$t('chart.table_item_bg')" class="form-item">
<el-color-picker v-model="colorForm.tableItemBgColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableItemBgColor')" />
</el-form-item>
<el-form-item :label="$t('chart.table_header_font_color')" class="form-item">
<el-color-picker v-model="colorForm.tableHeaderFontColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableHeaderFontColor')" />
</el-form-item>
<el-form-item :label="$t('chart.table_item_font_color')" class="form-item">
<el-color-picker v-model="colorForm.tableFontColor" class="color-picker-style" :predefine="predefineColors" @change="changeColorCase('tableFontColor')" />
</el-form-item>
@ -82,7 +85,7 @@
<script>
import { COLOR_PANEL } from '@/views/chart/chart/chart'
import { mapState } from 'vuex'
import bus from "@/utils/bus";
import bus from '@/utils/bus'
export default {
name: 'ColorSelector',
@ -183,16 +186,17 @@ export default {
]),
created() {
this.initForm()
bus.$on('onThemeColorChange',this.initForm)
bus.$on('onThemeColorChange', this.initForm)
},
beforeDestroy() {
bus.$off('onThemeColorChange',this.initForm)
bus.$off('onThemeColorChange', this.initForm)
},
mounted() {
},
methods: {
initForm() {
this.colorForm = this.canvasStyleData.chartInfo.chartColor
this.colorForm.tableHeaderFontColor = this.colorForm.tableHeaderFontColor ? this.colorForm.tableHeaderFontColor : this.colorForm.tableFontColor
},
changeColorOption(modifyName = 'value') {
const that = this