forked from github/dataease
Merge branch 'dev' of github.com:dataease/dataease into dev
This commit is contained in:
commit
861b576722
@ -1,5 +1,7 @@
|
|||||||
package io.dataease.service.dataset;
|
package io.dataease.service.dataset;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import io.dataease.auth.annotation.DeCleaner;
|
import io.dataease.auth.annotation.DeCleaner;
|
||||||
import io.dataease.auth.api.dto.CurrentUserDto;
|
import io.dataease.auth.api.dto.CurrentUserDto;
|
||||||
@ -960,6 +962,8 @@ public class DataSetTableService {
|
|||||||
res.put("data", jsonArray);
|
res.put("data", jsonArray);
|
||||||
return res;
|
return res;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
logger.error(e.getMessage());
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1321,6 +1325,17 @@ public class DataSetTableService {
|
|||||||
DatasourceTypes datasourceTypes = DatasourceTypes.valueOf(ds.getType());
|
DatasourceTypes datasourceTypes = DatasourceTypes.valueOf(ds.getType());
|
||||||
String keyword = datasourceTypes.getKeywordPrefix() + "%s" + datasourceTypes.getKeywordSuffix();
|
String keyword = datasourceTypes.getKeywordPrefix() + "%s" + datasourceTypes.getKeywordSuffix();
|
||||||
|
|
||||||
|
String configuration = ds.getConfiguration();
|
||||||
|
JSONObject jsonObject = JSON.parseObject(configuration);
|
||||||
|
String schema = jsonObject.getString("schema");
|
||||||
|
String joinPrefix = "";
|
||||||
|
if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) ||
|
||||||
|
StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) ||
|
||||||
|
StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.oracle.getType()) ||
|
||||||
|
StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.pg.getType()))) {
|
||||||
|
joinPrefix = String.format(keyword, schema) + ".";
|
||||||
|
}
|
||||||
|
|
||||||
List<UnionDTO> union = dataTableInfoDTO.getUnion();
|
List<UnionDTO> union = dataTableInfoDTO.getUnion();
|
||||||
// 所有选中的字段,即select后的查询字段
|
// 所有选中的字段,即select后的查询字段
|
||||||
Map<String, String[]> checkedInfo = new LinkedHashMap<>();
|
Map<String, String[]> checkedInfo = new LinkedHashMap<>();
|
||||||
@ -1386,7 +1401,7 @@ public class DataSetTableService {
|
|||||||
String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class)
|
String currentTableName = new Gson().fromJson(currentTable.getInfo(), DataTableInfoDTO.class)
|
||||||
.getTable();
|
.getTable();
|
||||||
|
|
||||||
join.append(" ").append(joinType).append(" ").append(String.format(keyword, currentTableName))
|
join.append(" ").append(joinType).append(" ").append(joinPrefix).append(String.format(keyword, currentTableName))
|
||||||
.append(" ON ");
|
.append(" ON ");
|
||||||
for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) {
|
for (int i = 0; i < unionParamDTO.getUnionFields().size(); i++) {
|
||||||
UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i);
|
UnionItemDTO unionItemDTO = unionParamDTO.getUnionFields().get(i);
|
||||||
@ -1409,13 +1424,13 @@ public class DataSetTableService {
|
|||||||
if (StringUtils.isEmpty(f)) {
|
if (StringUtils.isEmpty(f)) {
|
||||||
DEException.throwException(Translator.get("i18n_union_ds_no_checked"));
|
DEException.throwException(Translator.get("i18n_union_ds_no_checked"));
|
||||||
}
|
}
|
||||||
sql = MessageFormat.format("SELECT {0} FROM {1}", f, String.format(keyword, tableName)) + join.toString();
|
sql = MessageFormat.format("SELECT {0} FROM {1}", f, joinPrefix + String.format(keyword, tableName)) + join.toString();
|
||||||
} else {
|
} else {
|
||||||
String f = StringUtils.join(checkedInfo.get(tableName), ",");
|
String f = StringUtils.join(checkedInfo.get(tableName), ",");
|
||||||
if (StringUtils.isEmpty(f)) {
|
if (StringUtils.isEmpty(f)) {
|
||||||
throw new RuntimeException(Translator.get("i18n_union_ds_no_checked"));
|
throw new RuntimeException(Translator.get("i18n_union_ds_no_checked"));
|
||||||
}
|
}
|
||||||
sql = MessageFormat.format("SELECT {0} FROM {1}", f, String.format(keyword, tableName));
|
sql = MessageFormat.format("SELECT {0} FROM {1}", f, joinPrefix + String.format(keyword, tableName));
|
||||||
}
|
}
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("sql", sql);
|
map.put("sql", sql);
|
||||||
@ -1494,6 +1509,9 @@ public class DataSetTableService {
|
|||||||
|
|
||||||
public void saveTableField(DatasetTable datasetTable) throws Exception {
|
public void saveTableField(DatasetTable datasetTable) throws Exception {
|
||||||
Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId());
|
Datasource ds = datasourceMapper.selectByPrimaryKey(datasetTable.getDataSourceId());
|
||||||
|
if (ObjectUtils.isEmpty(ds)) {
|
||||||
|
throw new RuntimeException(Translator.get("i18n_datasource_delete"));
|
||||||
|
}
|
||||||
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
|
DataSetTableRequest dataSetTableRequest = new DataSetTableRequest();
|
||||||
BeanUtils.copyBean(dataSetTableRequest, datasetTable);
|
BeanUtils.copyBean(dataSetTableRequest, datasetTable);
|
||||||
|
|
||||||
|
@ -1368,7 +1368,11 @@ export default {
|
|||||||
|
|
||||||
resizeView(index, item) {
|
resizeView(index, item) {
|
||||||
if (item.type === 'view' || item.type === 'de-show-date') {
|
if (item.type === 'view' || item.type === 'de-show-date') {
|
||||||
this.$refs.wrapperChild[index].chartResize()
|
try {
|
||||||
|
this.$refs.wrapperChild[index].chartResize()
|
||||||
|
} catch (e) {
|
||||||
|
// ignore error
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
editComponent(index, item) {
|
editComponent(index, item) {
|
||||||
|
@ -115,7 +115,7 @@ export default {
|
|||||||
this.flvPlayer.load()
|
this.flvPlayer.load()
|
||||||
this.flvPlayer.play()
|
this.flvPlayer.play()
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log('flvjs err ignore')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ export function baseGaugeOptionAntV(plot, container, chart, action, scale = 1) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(options.indicator.pin)
|
// console.log(options.indicator.pin)
|
||||||
|
|
||||||
// 开始渲染
|
// 开始渲染
|
||||||
if (plot) {
|
if (plot) {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
v-for="(config, index) in pcComponentData"
|
v-for="(config, index) in pcComponentData"
|
||||||
v-if="!config.mobileSelected"
|
v-if="!config.mobileSelected"
|
||||||
:id="'wait' + config.id"
|
:id="'wait' + config.id"
|
||||||
:key="index"
|
:key="config.id"
|
||||||
>
|
>
|
||||||
<component-wait-item
|
<component-wait-item
|
||||||
:config="config"
|
:config="config"
|
||||||
|
@ -1,8 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div class="component-item">
|
||||||
v-proportion="0.8"
|
|
||||||
:style="componentItemStyle"
|
|
||||||
>
|
|
||||||
<mobile-check-bar v-if="mobileCheckBarShow" :element="config" />
|
<mobile-check-bar v-if="mobileCheckBarShow" :element="config" />
|
||||||
<de-out-widget
|
<de-out-widget
|
||||||
v-if="config.type==='custom'"
|
v-if="config.type==='custom'"
|
||||||
@ -70,11 +67,6 @@ export default {
|
|||||||
})
|
})
|
||||||
return result
|
return result
|
||||||
},
|
},
|
||||||
componentItemStyle() {
|
|
||||||
return {
|
|
||||||
padding: '5px'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
...mapState([
|
...mapState([
|
||||||
'mobileLayoutStatus',
|
'mobileLayoutStatus',
|
||||||
'componentData',
|
'componentData',
|
||||||
@ -96,4 +88,8 @@ export default {
|
|||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
.component-item {
|
||||||
|
padding: 5px;
|
||||||
|
height: 200px!important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -266,35 +266,40 @@ export default {
|
|||||||
downloadToTemplate() {
|
downloadToTemplate() {
|
||||||
const _this = this
|
const _this = this
|
||||||
_this.dataLoading = true
|
_this.dataLoading = true
|
||||||
_this.findStaticSource(function(staticResource) {
|
try {
|
||||||
html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => {
|
_this.findStaticSource(function(staticResource) {
|
||||||
_this.dataLoading = false
|
html2canvas(document.getElementById('canvasInfoTemp')).then(canvas => {
|
||||||
const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.1是图片质量
|
_this.dataLoading = false
|
||||||
if (snapshot !== '') {
|
const snapshot = canvas.toDataURL('image/jpeg', 0.1) // 0.1是图片质量
|
||||||
_this.templateInfo = {
|
if (snapshot !== '') {
|
||||||
name: _this.$store.state.panel.panelInfo.name,
|
_this.templateInfo = {
|
||||||
templateType: 'self',
|
name: _this.$store.state.panel.panelInfo.name,
|
||||||
snapshot: snapshot,
|
templateType: 'self',
|
||||||
panelStyle: JSON.stringify(_this.canvasStyleData),
|
snapshot: snapshot,
|
||||||
panelData: JSON.stringify(_this.componentData),
|
panelStyle: JSON.stringify(_this.canvasStyleData),
|
||||||
dynamicData: JSON.stringify(_this.panelViewDetailsInfo),
|
panelData: JSON.stringify(_this.componentData),
|
||||||
staticResource: JSON.stringify(staticResource || {})
|
dynamicData: JSON.stringify(_this.panelViewDetailsInfo),
|
||||||
|
staticResource: JSON.stringify(staticResource || {})
|
||||||
|
}
|
||||||
|
const blob = new Blob([JSON.stringify(_this.templateInfo)], { type: '' })
|
||||||
|
FileSaver.saveAs(blob, _this.$store.state.panel.panelInfo.name + '-TEMPLATE.DET')
|
||||||
}
|
}
|
||||||
const blob = new Blob([JSON.stringify(_this.templateInfo)], { type: '' })
|
})
|
||||||
FileSaver.saveAs(blob, _this.$store.state.panel.panelInfo.name + '-TEMPLATE.DET')
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
_this.dataLoading = false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
// 解析静态文件
|
// 解析静态文件
|
||||||
findStaticSource(callBack) {
|
findStaticSource(callBack) {
|
||||||
const staticResource = []
|
const staticResource = []
|
||||||
// 系统背景文件
|
// 系统背景文件
|
||||||
if (this.canvasStyleData.panel.imageUrl && this.canvasStyleData.panel.imageUrl.indexOf('static-resource') > -1) {
|
if (typeof this.canvasStyleData.panel.imageUrl === 'string' && this.canvasStyleData.panel.imageUrl.indexOf('static-resource') > -1) {
|
||||||
staticResource.push(this.canvasStyleData.panel.imageUrl)
|
staticResource.push(this.canvasStyleData.panel.imageUrl)
|
||||||
}
|
}
|
||||||
this.componentData.forEach(item => {
|
this.componentData.forEach(item => {
|
||||||
if (item.commonBackground && item.commonBackground.outerImage && item.commonBackground.outerImage.indexOf('static-resource') > -1) {
|
if (typeof item.commonBackground.outerImage === 'string' && item.commonBackground.outerImage.indexOf('static-resource') > -1) {
|
||||||
staticResource.push(item.commonBackground.outerImage)
|
staticResource.push(item.commonBackground.outerImage)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -308,7 +313,9 @@ export default {
|
|||||||
callBack()
|
callBack()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
callBack()
|
setTimeout(() => {
|
||||||
|
callBack()
|
||||||
|
}, 0)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ import { pluginLoaded } from '@/api/user'
|
|||||||
/* import { ldapStatus, pluginLoaded } from '@/api/user' */
|
/* import { ldapStatus, pluginLoaded } from '@/api/user' */
|
||||||
import { userLists, addUser, editUser, delUser, editPassword, editStatus, allRoles } from '@/api/system/user'
|
import { userLists, addUser, editUser, delUser, editPassword, editStatus, allRoles } from '@/api/system/user'
|
||||||
import { getDeptTree, treeByDeptId } from '@/api/system/dept'
|
import { getDeptTree, treeByDeptId } from '@/api/system/dept'
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
components: { ComplexTable, LayoutContent, Treeselect },
|
components: { ComplexTable, LayoutContent, Treeselect },
|
||||||
@ -320,6 +320,11 @@ export default {
|
|||||||
canLoadDom: false
|
canLoadDom: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters([
|
||||||
|
'user'
|
||||||
|
])
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.allRoles()
|
this.allRoles()
|
||||||
this.search()
|
this.search()
|
||||||
@ -420,7 +425,7 @@ export default {
|
|||||||
this.$success(this.$t('commons.modify_success'))
|
this.$success(this.$t('commons.modify_success'))
|
||||||
this.editPasswordVisible = false
|
this.editPasswordVisible = false
|
||||||
this.search()
|
this.search()
|
||||||
window.location.reload()
|
this.user && this.user.userId && (this.user.userId === editPasswordForm.userId) && window.location.reload()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
|
@ -85,12 +85,17 @@ export default {
|
|||||||
}
|
}
|
||||||
updatePersonPwd(param).then(res => {
|
updatePersonPwd(param).then(res => {
|
||||||
this.$success(this.$t('commons.save_success'))
|
this.$success(this.$t('commons.save_success'))
|
||||||
this.$router.push('/panel/index')
|
this.logout()
|
||||||
|
// this.$router.push('/panel/index')
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
async logout() {
|
||||||
|
await this.$store.dispatch('user/logout')
|
||||||
|
this.$router.push('/')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
<title>
|
<title>
|
||||||
<%= htmlWebpackPlugin.options.title %>
|
<%= htmlWebpackPlugin.options.title %>
|
||||||
</title>
|
</title>
|
||||||
|
Loading…
Reference in New Issue
Block a user