index.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <template>
  2. <div class="bs-theme-wrap">
  3. <el-input
  4. v-model="datasetNameStr"
  5. placeholder="请选择数据集"
  6. readonly
  7. @focus="openDataSetDialog"
  8. >
  9. <el-button
  10. slot="append"
  11. icon="el-icon-search"
  12. @click="openDataSetDialog"
  13. />
  14. </el-input>
  15. <DataSetDialog
  16. ref="dataSetDialog"
  17. v-bind="$attrs"
  18. :multiple="multiple"
  19. :ds-value="dsValue"
  20. @getDsId="getDsId"
  21. @getSelectDs="getSelectDs"
  22. >
  23. <template #dataSetSelect>
  24. <slot name="dataSetSelect" />
  25. </template>
  26. </DataSetDialog>
  27. </div>
  28. </template>
  29. <script>
  30. import DataSetDialog from './dataSetSetting.vue'
  31. export default {
  32. name: 'Index',
  33. components: { DataSetDialog },
  34. props: {
  35. config: {
  36. type: Object,
  37. default: () => {
  38. }
  39. },
  40. datasetName: {
  41. type: String,
  42. default: ''
  43. },
  44. multiple: {
  45. type: Boolean,
  46. default: false
  47. },
  48. dsValue: {
  49. type: [Array, Object],
  50. default: () => ([])
  51. }
  52. },
  53. data () {
  54. return {
  55. }
  56. },
  57. computed: {
  58. datasetNameStr () {
  59. return this.datasetName || this.dsValue?.map(ds => ds.name).join(',')
  60. }
  61. },
  62. methods: {
  63. openDataSetDialog () {
  64. this.$refs.dataSetDialog.dataSetVisible = true
  65. },
  66. getDsId (dsId) {
  67. this.$emit('getDsId', dsId)
  68. },
  69. getSelectDs (selectDs) {
  70. this.$emit('getSelectDs', selectDs)
  71. if (selectDs.datasetType === 'metrics') {
  72. this.$emit('getMetricsList', JSON.parse(selectDs.data))
  73. // 选择数据集时修改当前数据集的状态(指标域或者其他数据集)
  74. this.$emit('changeIsMetrics', true, selectDs.datasetType)
  75. } else {
  76. this.$emit('changeIsMetrics', false, selectDs.datasetType)
  77. }
  78. }
  79. }
  80. }
  81. </script>
  82. <style scoped>
  83. </style>