Unverified 提交 aa69d3eb authored 作者: 王嘉豪's avatar 王嘉豪 提交者: GitHub

Merge pull request #1205 from dataease/pr@dev@refactor_panel

refactor:仪表板视图联动,使用相同数据集的视图,自动补充联动字段
......@@ -20,4 +20,6 @@ public interface ExtChartViewMapper {
List<String> allViewIds(@Param("tableId") String tableId);
String searchAdviceSceneId(@Param("userId") String userId,@Param("panelId") String panelId);
int checkSameDataSet(@Param("viewIdSource") String viewIdSource,@Param("viewIdTarget") String viewIdTarget);
}
......@@ -136,18 +136,7 @@
id = #{oldChartId}
</insert>
<select id="searchAdviceSceneId" resultType="String">
SELECT DISTINCT
( scene_id )
FROM
( SELECT GET_V_AUTH_MODEL_ID_P_USE ( #{userId}, 'chart' ) cids ) t,
panel_view
LEFT JOIN chart_view ON panel_view.chart_view_id = chart_view.id
LEFT JOIN chart_group ON chart_view.scene_id = chart_group.id
WHERE
FIND_IN_SET( chart_view.scene_id, cids ) and panel_view.panel_id =#{panelId}
ORDER BY
chart_group.create_time DESC
LIMIT 1
<select id="checkSameDataSet" resultType="int">
select count(DISTINCT table_id) from chart_view where id = #{viewIdSource} or id = #{viewIdTarget}
</select>
</mapper>
......@@ -107,4 +107,10 @@ public class ChartViewController {
public ChartViewDTO calcData(@RequestBody ChartCalRequest request) throws Exception {
return chartViewService.calcData(request.getView(), request.getRequestList(), false);
}
@ApiOperation("验证视图是否使用相同数据集")
@GetMapping("/checkSameDataSet/{viewIdSource}/{viewIdTarget}")
public String checkSameDataSet(@PathVariable String viewIdSource,@PathVariable String viewIdTarget) throws Exception {
return chartViewService.checkSameDataSet(viewIdSource,viewIdTarget);
}
}
......@@ -1455,4 +1455,12 @@ public class ChartViewService {
public String searchAdviceSceneId(String panelId) {
return extChartViewMapper.searchAdviceSceneId(AuthUtils.getUser().getUserId().toString(), panelId);
}
public String checkSameDataSet(String viewIdSource,String viewIdTarget) {
if(extChartViewMapper.checkSameDataSet(viewIdSource,viewIdTarget)==1){
return "YES";
}else{
return "NO";
}
}
}
......@@ -52,3 +52,11 @@ export function searchAdviceSceneId(panelId) {
loading: true
})
}
export function checkSameDataSet(viewIdSource, viewIdTarget) {
return request({
url: '/chart/view/checkSameDataSet/' + viewIdSource + '/' + viewIdTarget,
method: 'get',
loading: false
})
}
......@@ -15,11 +15,10 @@
</el-row>
<el-row style="height: 120px;overflow-y: auto">
<el-row v-for="(item, index) in linkageInfo.linkageFields" :key="index">
<el-row v-for="(itemLinkage, index) in linkageInfo.linkageFields" :key="index">
<el-col :span="11">
<div class="select-filed">
<el-select v-model="item.sourceField" size="mini" placeholder="请选择">
<el-select v-model="itemLinkage.sourceField" size="mini" placeholder="请选择">
<el-option
v-for="item in sourceLinkageInfo.targetViewFields"
:key="item.id"
......@@ -39,7 +38,7 @@
</el-col>
<el-col :span="11">
<div class="select-filed">
<el-select v-model="item.targetField" size="mini" placeholder="请选择">
<el-select v-model="itemLinkage.targetField" size="mini" placeholder="请选择">
<el-option
v-for="item in linkageInfo.targetViewFields"
:key="item.id"
......@@ -52,7 +51,7 @@
<svg-icon v-if="item.deType === 2 || item.value === 3" icon-class="field_value" class="field-icon-value" />
<svg-icon v-if="item.deType === 5" icon-class="field_location" class="field-icon-location" />
</span>
<span style="float: left; color: #8492a6; font-size: 12px">{{ item.name }}</span>
<span style="float: left; color: #8492a6; font-size: 12px">{{ itemLinkage.targetField }}-{{ item.name }}</span>
</el-option>
</el-select>
</div>
......@@ -66,7 +65,7 @@
</el-row>
<el-row class="bottom">
<el-button size="mini" type="success" icon="el-icon-plus" round @click="addLinkageField">追加联动依赖字段</el-button>
<el-button size="mini" type="success" icon="el-icon-plus" round @click="addLinkageField(null,null)">追加联动依赖字段</el-button>
</el-row>
<!-- <el-button slot="reference">T</el-button>-->
......@@ -76,6 +75,7 @@
<script>
import { mapState } from 'vuex'
import { checkSameDataSet } from '@/api/chart/chart'
export default {
props: {
......@@ -105,6 +105,17 @@ export default {
]
}
},
mounted() {
// 初始化映射关系 如果当前是相同的数据集且没有关联关系,则自动补充映射关系
checkSameDataSet(this.curLinkageView.propValue.viewId, this.element.propValue.viewId).then(res => {
console.log('linkageFields:' + JSON.stringify(this.linkageInfo.linkageFields))
if (res.data === 'YES' && this.linkageInfo.linkageFields.length === 0) {
this.sourceLinkageInfo.targetViewFields.forEach(item => {
this.addLinkageField(item.id, item.id)
})
}
})
},
computed: {
linkageInfo() {
return this.targetLinkageInfo[this.element.propValue.viewId]
......@@ -137,10 +148,10 @@ export default {
deleteLinkageField(index) {
this.linkageInfo.linkageFields.splice(index, 1)
},
addLinkageField() {
addLinkageField(sourceFieldId, targetFieldId) {
const linkageFieldItem = {
sourceViewId: null,
targetViewId: null
sourceField: sourceFieldId,
targetField: targetFieldId
}
this.linkageInfo.linkageFields.push(linkageFieldItem)
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论