feat: 大屏设计器数据集选择添加插槽,供开发人员添加自定义数据集

main
wu.jian2 2 years ago
parent b4cef66893
commit 90473857d5

@ -29,7 +29,11 @@
:dataset-name="datasetName" :dataset-name="datasetName"
:ds-id="config.dataSource.businessKey" :ds-id="config.dataSource.businessKey"
@getDsId="dsId => { getDataSetDetailsById(dsId, 'treeTable');}" @getDsId="dsId => { getDataSetDetailsById(dsId, 'treeTable');}"
/> >
<template #dataSetSelect>
<slot name="dataSetSelect" />
</template>
</data-set-select>
</el-form-item> </el-form-item>
</div> </div>
</div> </div>

@ -15,7 +15,11 @@
<DataSetting <DataSetting
ref="dataSetting" ref="dataSetting"
:key="config.code" :key="config.code"
/> >
<template #dataSetSelect>
<slot name="dataSetSelect" />
</template>
</DataSetting>
</el-tab-pane> </el-tab-pane>
<el-tab-pane <el-tab-pane
label="样式" label="样式"

@ -13,7 +13,11 @@
@closeRightPanel="close" @closeRightPanel="close"
@updateSetting="updateSetting" @updateSetting="updateSetting"
@updateDataSetting="updateDataSetting" @updateDataSetting="updateDataSetting"
/> >
<template #dataSetSelect>
<slot name="dataSetSelect" />
</template>
</RightSetting>
<OverallSetting <OverallSetting
v-if="!chartSettingShow" v-if="!chartSettingShow"
ref="OverallSetting" ref="OverallSetting"

@ -86,7 +86,11 @@
@updateSetting="updateSetting" @updateSetting="updateSetting"
@updateDataSetting="updateDataSetting" @updateDataSetting="updateDataSetting"
@updatePage="updatePage" @updatePage="updatePage"
/> >
<template #dataSetSelect>
<slot name="dataSetSelect" />
</template>
</SettingPanel>
<!-- 添加资源面板 --> <!-- 添加资源面板 -->
<SourceDialog <SourceDialog
ref="SourceDialog" ref="SourceDialog"
@ -124,7 +128,6 @@ import multipleSelectMixin from 'data-room-ui/js/mixins/multipleSelectMixin'
import { getThemeConfig, getScreenInfo } from 'data-room-ui/js/api/bigScreenApi' import { getThemeConfig, getScreenInfo } from 'data-room-ui/js/api/bigScreenApi'
import MouseSelect from './MouseSelect/index.vue' import MouseSelect from './MouseSelect/index.vue'
import _ from 'lodash' import _ from 'lodash'
import { get } from 'data-room-ui/js/utils/http'
import { randomString } from '../js/utils' import { randomString } from '../js/utils'
import { isFirefox } from 'data-room-ui/js/utils/userAgent' import { isFirefox } from 'data-room-ui/js/utils/userAgent'
import { handleResData } from 'data-room-ui/js/store/actions.js' import { handleResData } from 'data-room-ui/js/store/actions.js'

@ -7,10 +7,32 @@
width="80%" width="80%"
class="bs-dialog-wrap data-set-wrap bs-el-dialog" class="bs-dialog-wrap data-set-wrap bs-el-dialog"
> >
<el-tabs
v-if="isUseSlot"
v-model="tabsActiveName"
class="bs-el-tabs"
@tab-click="handleClickTabs"
>
<el-tab-pane
label="数据集"
name="dataSet"
>
<DataSetManagement
ref="dataSetSetting"
class="bs-data-set-management"
:is-border="true"
:is-dialog="true"
:ds-id="dataSetId"
:multiple="multiple"
:ds-value="DataDsValue"
/>
</el-tab-pane>
<slot name="dataSetSelect" />
</el-tabs>
<DataSetManagement <DataSetManagement
v-else
ref="dataSetSetting" ref="dataSetSetting"
class="bs-data-set-management" class="bs-data-set-management"
theme-class="bs-"
:is-border="true" :is-border="true"
:is-dialog="true" :is-dialog="true"
:ds-id="dataSetId" :ds-id="dataSetId"
@ -30,7 +52,9 @@
<el-button <el-button
type="primary" type="primary"
@click="sure" @click="sure"
>确定</el-button> >
确定
</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@ -61,7 +85,12 @@ export default {
data () { data () {
return { return {
dataSetVisible: false, dataSetVisible: false,
dataSetId: null dataSetId: null,
tabsActiveName: 'dataSet',
//
componentInstance: null,
// 使
isUseSlot: false
} }
}, },
computed: { computed: {
@ -77,11 +106,23 @@ export default {
}, },
mounted () { mounted () {
this.dataSetId = this.dsId this.dataSetId = this.dsId
// componentInstance
this.componentInstance = this.$refs.dataSetSetting
// 使
if (this.$scopedSlots && this.$scopedSlots.dataSetSelect && this.$scopedSlots.dataSetSelect()) {
this.isUseSlot = true
} else {
this.isUseSlot = false
}
}, },
methods: { methods: {
handleClickTabs (vueComponent, event) {
this.componentInstance = vueComponent.$children[0]
},
sure () { sure () {
this.dataSetVisible = false this.dataSetVisible = false
const getSelectDs = this.$refs.dataSetSetting.getSelectDs() const getSelectDs = this.componentInstance.getSelectDs()
console.log('getSelectDs', getSelectDs)
if (Object.prototype.hasOwnProperty.call(getSelectDs, 'id')) { if (Object.prototype.hasOwnProperty.call(getSelectDs, 'id')) {
this.dataSetId = getSelectDs.id this.dataSetId = getSelectDs.id
} }
@ -96,9 +137,14 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import '../assets/style/bsTheme.scss'; @import '../assets/style/bsTheme.scss';
::v-deep .big-screen-router-view-wrap { ::v-deep .big-screen-router-view-wrap {
padding-left: 16px !important; padding-left: 16px !important;
} }
::v-deep .el-tabs__header{
margin-bottom: 0;
}
.data-set-wrap { .data-set-wrap {
::v-deep .el-dialog__body { ::v-deep .el-dialog__body {
position: relative; position: relative;
@ -128,9 +174,11 @@ export default {
::v-deep .bs-container { ::v-deep .bs-container {
margin-left: 0 !important; margin-left: 0 !important;
} }
::v-deep .layout { ::v-deep .layout {
position: absolute !important; position: absolute !important;
} }
::v-deep .ztree { ::v-deep .ztree {
height: auto !important; height: auto !important;
} }

@ -12,22 +12,26 @@
@click="openDataSetDialog" @click="openDataSetDialog"
/> />
</el-input> </el-input>
<data-set-dialog <DataSetDialog
ref="dataSetDialog" ref="dataSetDialog"
v-bind="$attrs" v-bind="$attrs"
:multiple="multiple" :multiple="multiple"
:ds-value="dsValue" :ds-value="dsValue"
@getDsId="getDsId" @getDsId="getDsId"
@getSelectDs="getSelectDs" @getSelectDs="getSelectDs"
/> >
<template #dataSetSelect>
<slot name="dataSetSelect" />
</template>
</DataSetDialog>
</div> </div>
</template> </template>
<script> <script>
import dataSetDialog from './dataSetSetting.vue' import DataSetDialog from './DataSetSetting.vue'
export default { export default {
name: 'Index', name: 'Index',
components: { dataSetDialog }, components: { DataSetDialog },
props: { props: {
config: { config: {
type: Object, type: Object,

@ -639,3 +639,17 @@
} }
} }
} }
.bs-el-tabs{
.el-tabs__item{
color: var(--bs-el-text) !important;
}
.is-active{
color: var(--bs-el-color-primary) !important;
}
.el-tabs__nav-wrap{
&:after{
background-color: var(--bs-background-1) !important;
}
}
}

@ -271,6 +271,7 @@ $--font-path: '~element-ui/lib/theme-chalk/fonts';
} }
.el-dialog{ .el-dialog{
margin-top: 13vh !important; margin-top: 13vh !important;
margin-bottom: 0 !important;
} }
.el-dialog__wrapper { .el-dialog__wrapper {
overflow: hidden !important; overflow: hidden !important;
@ -278,7 +279,7 @@ $--font-path: '~element-ui/lib/theme-chalk/fonts';
.el-dialog__body { .el-dialog__body {
padding: 18px 24px !important; padding: 18px 24px !important;
max-height: calc(90vh - 250px) !important; max-height: calc(90vh - 170px) !important;
min-height: 200px; min-height: 200px;
overflow-y: auto; overflow-y: auto;
} }

Loading…
Cancel
Save