You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
1.9 KiB
Vue

<template>
<div class="bs-theme-wrap">
<el-input
v-model="datasetNameStr"
placeholder="请选择数据集"
readonly
@focus="openDataSetDialog"
>
<el-button
slot="append"
icon="el-icon-search"
@click="openDataSetDialog"
/>
</el-input>
<DataSetDialog
ref="dataSetDialog"
v-bind="$attrs"
:multiple="multiple"
:ds-value="dsValue"
@getDsId="getDsId"
@getSelectDs="getSelectDs"
>
<template #dataSetSelect="{value}">
<slot
name="dataSetSelect"
:value="value"
/>
</template>
</DataSetDialog>
</div>
</template>
<script>
import DataSetDialog from './dataSetSetting.vue'
export default {
name: 'Index',
components: { DataSetDialog },
props: {
config: {
type: Object,
default: () => {
}
},
datasetName: {
type: String,
default: ''
},
multiple: {
type: Boolean,
default: false
},
dsValue: {
type: [Array, Object],
default: () => ([])
}
},
data () {
return {
}
},
computed: {
datasetNameStr () {
return this.datasetName || this.dsValue?.map(ds => ds.name).join(',')
}
},
methods: {
openDataSetDialog () {
this.$refs.dataSetDialog.dataSetVisible = true
},
getDsId (dsId) {
this.$emit('getDsId', dsId)
},
getSelectDs (selectDs) {
this.$emit('getSelectDs', selectDs)
if (selectDs.datasetType === 'metrics') {
this.$emit('getMetricsList', JSON.parse(selectDs.data))
// 选择数据集时修改当前数据集的状态(指标域或者其他数据集)
this.$emit('changeIsMetrics', true, selectDs.datasetType)
} else {
this.$emit('changeIsMetrics', false, selectDs.datasetType)
}
}
}
}
</script>
<style scoped>
</style>