From 28c04093bb09e27c2c9ee16231e4fbe825c93111 Mon Sep 17 00:00:00 2001
From: "hong.yang" <hong.yang@ustcinfo.com>
Date: Tue, 11 Jul 2023 09:09:23 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=8E=BB=E9=99=A4=E6=95=B0=E6=8D=AE?=
 =?UTF-8?q?=E9=9B=86=E6=A0=87=E7=AD=BE=E7=AE=A1=E7=90=86=E9=A1=B5=EF=BC=8C?=
 =?UTF-8?q?=E5=B0=86=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E9=9B=86=E6=88=90?=
 =?UTF-8?q?=E5=88=B0=E6=A0=87=E7=AD=BE=E9=80=89=E6=8B=A9=E5=99=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

去除数据集标签管理页,将管理页面集成到标签选择器
---
 data-room-ui/package.json                     |   1 -
 .../packages/DataSetLabelManagement/index.js  |   7 -
 .../src/LabelConfigAddOrUpdate.vue            | 474 ------------------
 .../src/LabelConfigDetails.vue                | 385 --------------
 .../src/LabelConfigEdit.vue                   | 223 ++++++++
 .../src/LabelSelect.vue                       | 253 +++++++---
 .../DataSetLabelManagement/src/Tree/index.vue | 167 ------
 .../DataSetLabelManagement/src/index.vue      | 311 ------------
 data-room-ui/packages/index.js                |   8 +-
 .../packages/js/utils/registerConfig.js       |   7 -
 10 files changed, 397 insertions(+), 1439 deletions(-)
 delete mode 100644 data-room-ui/packages/DataSetLabelManagement/index.js
 delete mode 100644 data-room-ui/packages/DataSetLabelManagement/src/LabelConfigAddOrUpdate.vue
 delete mode 100644 data-room-ui/packages/DataSetLabelManagement/src/LabelConfigDetails.vue
 create mode 100644 data-room-ui/packages/DataSetLabelManagement/src/LabelConfigEdit.vue
 delete mode 100644 data-room-ui/packages/DataSetLabelManagement/src/Tree/index.vue
 delete mode 100644 data-room-ui/packages/DataSetLabelManagement/src/index.vue

diff --git a/data-room-ui/package.json b/data-room-ui/package.json
index cee56852..554915cf 100644
--- a/data-room-ui/package.json
+++ b/data-room-ui/package.json
@@ -48,7 +48,6 @@
     ]
   },
   "dependencies": {
-    "@antv/g6": "4.3.6",
     "@amap/amap-jsapi-loader": "^1.0.1",
     "@antv/g2plot": "2.4.0",
     "@jiaminghi/data-view": "2.10.0",
diff --git a/data-room-ui/packages/DataSetLabelManagement/index.js b/data-room-ui/packages/DataSetLabelManagement/index.js
deleted file mode 100644
index df2e5d0f..00000000
--- a/data-room-ui/packages/DataSetLabelManagement/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import DataSetLabelManagement from './src/index.vue'
-
-DataSetLabelManagement.install = function (Vue) {
-  Vue.component(DataSetLabelManagement.name, DataSetLabelManagement)
-}
-
-export default DataSetLabelManagement
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigAddOrUpdate.vue b/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigAddOrUpdate.vue
deleted file mode 100644
index 115d6a28..00000000
--- a/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigAddOrUpdate.vue
+++ /dev/null
@@ -1,474 +0,0 @@
-<template>
-  <el-dialog
-    class="bs-dialog-wrap bs-el-dialog"
-    :append-to-body="true"
-    :before-close="handleClose"
-    :title="dataForm.id!==''?'编辑标签':'新增标签'"
-    :visible.sync="dialogFormVisible"
-    :width="relVisible?'1100px':'450px'"
-  >
-    <el-row>
-      <el-col :span="relVisible ? 8 : 24">
-        <el-divider
-          class="bs-el-divider"
-          content-position="left"
-        >
-          属性信息
-        </el-divider>
-
-        <el-form
-          ref="ruleForm"
-          :model="dataForm"
-          :rules="rules"
-          label-position="right"
-          label-width="90px"
-          class="form-container"
-        >
-          <el-form-item
-            label="标签名称"
-            prop="labelName"
-          >
-            <el-input
-              v-model="dataForm.labelName"
-              class="bs-el-input"
-              clearable
-              placeholder="请输入标签名称"
-              maxlength="200"
-            />
-          </el-form-item>
-
-          <el-form-item
-            label="标签类型"
-            prop="labelType"
-          >
-            <el-select
-              ref="searchSelect"
-              v-model="dataForm.labelType"
-              class="bs-el-select"
-              popper-class="bs-el-select"
-              allow-create
-              clearable
-              filterable
-              placeholder="请选择或输入标签类型"
-              @blur="selectBlur"
-              @input.native="filterData"
-            >
-              <el-option
-                v-for="(item,K) in labelTypeList"
-                :key="K"
-                :label="item"
-                :value="item"
-              />
-            </el-select>
-          </el-form-item>
-
-          <el-form-item
-            label="标签说明"
-            prop="labelDesc"
-          >
-            <el-input
-              v-model="dataForm.labelDesc"
-              clearable
-              placeholder="请输入标签说明"
-              class="bs-el-input"
-              type="text"
-            />
-          </el-form-item>
-        </el-form>
-
-        <el-divider
-          class="bs-el-divider"
-          content-position="left"
-        >
-          关联数据集信息
-        </el-divider>
-        <el-form class="form-container">
-          <el-form-item align="center">
-            <el-tag effect="plain">
-              标签
-            </el-tag>
-            <span>—————</span>
-            <el-button
-              round
-              size="mini"
-              type="primary"
-              @click="buildRel"
-            >
-              添加关联
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </el-col>
-
-      <el-col
-        v-if="relVisible"
-        :span="8"
-      >
-        <div>
-          <el-divider
-            class="bs-el-divider"
-            content-position="left"
-          >
-            添加关联
-          </el-divider>
-          <div
-            class="tree-box full-box--position"
-            style="padding: 0 8px 24px 0"
-          >
-            <Tree
-              ref="tree"
-              :tree-data="categoryData"
-              style="height: 300px;overflow: auto"
-              @handleNodeClick="handleNodeClick"
-            />
-          </div>
-        </div>
-      </el-col>
-
-      <el-col
-        v-if="relVisible"
-        :span="8"
-      >
-        <el-divider
-          class="bs-el-divider"
-          content-position="left"
-        >
-          数据集列表
-        </el-divider>
-        <div class="bs-table-box">
-          <el-table
-            ref="mytable"
-            class="bs-el-table"
-            :data="datasetList"
-            height="300"
-            @select="handleSelect"
-            @select-all="handleSelectionAll"
-          >
-            <el-table-column
-              type="selection"
-              width="55"
-            />
-
-            <el-table-column
-              label="数据集名称"
-              prop="name"
-              show-overflow-tooltip
-            />
-          </el-table>
-        </div>
-      </el-col>
-    </el-row>
-
-    <span
-      slot="footer"
-      class="dialog-footer"
-    >
-      <el-button
-        class="bs-el-button-default"
-        @click="cancel"
-      >
-        取消
-      </el-button>
-      <el-button
-        type="primary"
-        @click="submitForm('ruleForm')"
-      >
-        确定
-      </el-button>
-    </span>
-  </el-dialog>
-</template>
-
-<script>
-import { pageMixins } from 'packages/js/mixins/page'
-import Tree from './Tree'
-import { addOrUpdateLabel, checkRepeatLabel, getDataSetIdListByLabelId } from 'packages/js/utils/LabelConfigService'
-import { datasetList, getCategoryTree } from 'packages/js/utils/datasetConfigService'
-
-export default {
-  name: 'LabelConfigAddOrUpdate',
-  mixins: [pageMixins],
-  data () {
-    return {
-      loading: false,
-      datasetList: [],
-      typeId: '',
-      dataForm: {
-        id: '',
-        labelName: '',
-        labelType: '',
-        labelDesc: '',
-        relList: []
-      },
-      dialogFormVisible: true,
-      rules: {
-        labelName: [
-          { required: true, message: '标签名称不能为空', trigger: 'blur' },
-          { validator: this.validateLabelName, trigger: 'blur' }
-        ],
-        labelType: [
-          { required: true, message: '标签类型不能为空', trigger: 'change' }
-        ]
-      },
-      // 分类树数据
-      categoryData: [],
-      relVisible: false,
-      // 标签分类列表
-      labelTypeList: [],
-      // 选中的数据集id列表
-      datasetIdList: []
-    }
-  },
-  components: {
-    Tree
-  },
-  watch: {
-    'dataForm.labelType': function (val) {
-      if (val.length > 20) {
-        this.dataForm.labelType = val.substring(0, 20)
-      }
-    },
-    // datasetList变化时,根据datasetIdList设置其选中状态
-    datasetList: {
-      handler: function (val) {
-        this.$nextTick(() => {
-          if (this.$refs.mytable) {
-            this.$refs.mytable.clearSelection()
-          }
-          this.datasetList.forEach((item) => {
-            if (this.datasetIdList.includes(item.id)) {
-              this.$refs.mytable.toggleRowSelection(item, true)
-            }
-          })
-        })
-      },
-      deep: true
-    }
-  },
-  methods: {
-    /**
-     * 初始化
-     * @param row 标签信息
-     */
-    init (row) {
-      this.dataForm.id = row ? row.id : ''
-      this.dialogFormVisible = true
-      if (row) {
-        this.dataForm.id = row.id
-        this.dataForm.labelName = row.labelName
-        this.dataForm.labelType = row.labelType
-        this.dataForm.labelDesc = row.labelDesc
-        // 获取选中的数据集id列表
-        getDataSetIdListByLabelId(row.id).then((list) => {
-          this.datasetIdList = list
-          this.buildRel()
-        })
-      }
-      this.$nextTick(() => {
-        this.getDataList()
-      })
-    },
-    /**
-     * 获取数据集列表
-     */
-    getDataList () {
-      this.loading = true
-      const params = {
-        typeId: this.typeId
-      }
-      datasetList(params).then((list) => {
-        this.datasetList = list
-        if (!this.relVisible) {
-          this.loading = false
-          return
-        }
-        this.loading = false
-      }).catch(() => {
-        this.loading = false
-      })
-    },
-
-    /**
-     * 获取分类树
-     */
-    getTreeList () {
-      getCategoryTree({ type: 'dataset' }).then((categoryTree) => {
-        this.categoryData = categoryTree
-      })
-    },
-    /**
-     * 标签名称校验
-     * @param rule
-     * @param value
-     * @param callback
-     */
-    validateLabelName (rule, value, callback) {
-      checkRepeatLabel({ id: this.dataForm.id, labelName: this.dataForm.labelName }).then(repeat => {
-        if (repeat) {
-          callback(new Error('标签名称已存在'))
-        } else {
-          callback()
-        }
-      })
-    },
-    /**
-     * 树节点点击事件
-     * @param row
-     * @param value
-     */
-    handleNodeClick (row, value) {
-      this.$nextTick(() => {
-        this.typeId = row.id
-        this.getDataList()
-      })
-    },
-    /**
-     * 选中数据集
-     * @param selection 选中的数据集列表
-     * @param row 操作行
-     */
-    handleSelect (selection, row) {
-      // 如row.id存在于datasetIdList中,则将其从datasetIdList中删除
-      if (this.datasetIdList.includes(row.id)) {
-        const index = this.datasetIdList.indexOf(row.id)
-        if (index > -1) {
-          this.datasetIdList.splice(index, 1)
-        }
-        return
-      }
-      // 如row.id不存在于datasetIdList中,则将其添加到datasetIdList中
-      if (!this.datasetIdList.includes(row.id)) {
-        this.datasetIdList.push(row.id)
-      }
-    },
-    /**
-     * 数据集全选
-     * @param selection
-     */
-    handleSelectionAll (selection) {
-      // 选中项为空,将datasetList中所有项从datasetIdList中删除
-      if (selection.length === 0) {
-        this.datasetList.forEach((dataset) => {
-          const index = this.datasetIdList.indexOf(dataset.id)
-          if (index > -1) {
-            this.datasetIdList.splice(index, 1)
-          }
-        })
-        return
-      }
-      // 选中项不为空,将datasetList中所有项添加到datasetIdList中
-      if (selection.length > 0) {
-        this.datasetList.forEach((dataset) => {
-          if (!this.datasetIdList.includes(dataset.id)) {
-            this.datasetIdList.push(dataset.id)
-          }
-        })
-      }
-    },
-
-    /**
-     * 表单关闭
-     */
-    handleClose () {
-      this.$parent.addOrUpdateVisible = false
-    },
-    /**
-     * 取消按钮
-     */
-    cancel () {
-      this.dialogFormVisible = false
-      this.$nextTick(() => {
-        this.handleClose()
-      })
-    },
-    /**
-     * 提交按钮
-     * @param formName
-     */
-    submitForm (formName) {
-      this.$refs[formName].validate((valid) => {
-        if (valid) {
-          this.saveForm(true)
-        } else {
-          return false
-        }
-      })
-    },
-    /**
-     * 保存标签信息
-     * @param flag
-     */
-    saveForm (flag) {
-      this.dataForm.relList = []
-      this.datasetIdList.forEach(id => {
-        const param = {
-          datasetId: id,
-          labelId: this.dataForm.id
-        }
-        this.dataForm.relList.push(param)
-      })
-      addOrUpdateLabel(this.dataForm).then((r) => {
-        this.$message.success('保存成功')
-        this.cancel()
-        this.$parent.getDataList()
-        // 更新一下类型
-        this.$parent.getLabelType()
-      })
-    },
-    /**
-     * 添加关联按钮
-     */
-    buildRel () {
-      this.relVisible = !this.relVisible
-      if (this.relVisible) {
-        this.getTreeList()
-        this.$nextTick(() => {
-          this.getDataList()
-        })
-      }
-    },
-    filterNode (value, data) {
-      if (!value) return true
-      return data.name.indexOf(value) !== -1
-    },
-    ellipsis (value, len) {
-      if (!value) return ''
-      if (value.length > len) {
-        return value.slice(0, len) + '...'
-      }
-      return value
-    },
-    selectBlur (e) {
-      this.dataForm.labelType = e.target.value
-    },
-    // 对输入字符串控制
-    filterData () {
-      // 此属性得到输入的文字
-      const str = this.$refs.searchSelect.$data.selectedLabel
-      // 控制的js
-      if (str.length > 20) {
-        this.$refs.searchSelect.$data.selectedLabel = str.substr(0, 20)
-      }
-    }
-  }
-}
-</script>
-
-<style scoped>
-.el-col {
-  height: 358px;
-}
-
-.tree-box {
-  overflow-x: auto;
-}
-.form-container{
-  padding: 0 8px;
-}
-::v-deep .el-table{
-  border: 1px solid transparent !important;
-}
-::v-deep .el-table th.el-table__cell.is-leaf, .el-table td.el-table__cell{
-  border-bottom: 1px solid transparent  !important;
-}
-</style>
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigDetails.vue b/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigDetails.vue
deleted file mode 100644
index a0922b19..00000000
--- a/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigDetails.vue
+++ /dev/null
@@ -1,385 +0,0 @@
-<template>
-  <div
-    v-if="dialogFormVisible"
-    class="inner-container"
-  >
-    <el-scrollbar class="data-set-scrollbar">
-      <!-- <el-page-header
-        class="bs-el-page-header"
-        @back="goBack"
-      /> -->
-      <el-page-header class="bs-el-page-header">
-        <template slot="content">
-          <div class="page-header">
-            <div class="page-header-left">
-              标签详情
-            </div>
-            <div class="page-header-right">
-              <el-button
-                class="back bs-el-button-default"
-                @click="goBack"
-              >
-                返回
-              </el-button>
-            </div>
-          </div>
-        </template>
-      </el-page-header>
-      <el-divider
-        class="bs-el-divider"
-        content-position="left"
-      >
-        属性信息
-      </el-divider>
-
-      <el-row
-        style="width: 100%;"
-        :gutter="5"
-      >
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.labelName.length > 20"
-            :content="dataForm.labelName"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">标签名称: {{ ellipsis(dataForm.labelName, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            标签名称: {{ ellipsis(dataForm.labelName, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.labelType.length > 20"
-            :content="dataForm.labelType"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">标签类型: {{ ellipsis(dataForm.labelType, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            标签类型: {{ ellipsis(dataForm.labelType, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.labelDesc.length > 20"
-            :content="dataForm.labelDesc"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">标签说明: {{ ellipsis(dataForm.labelDesc, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            标签说明: {{ ellipsis(dataForm.labelDesc, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.createBy && dataForm.createBy.length > 20"
-            :content="dataForm.createBy"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">创建人: {{ ellipsis(dataForm.createBy, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            创建人: {{ ellipsis(dataForm.createBy, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="16"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.createDate.length > 20"
-            :content="dataForm.createDate"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">创建时间: {{ ellipsis(dataForm.createDate, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            创建时间: {{ ellipsis(dataForm.createDate, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.updateBy && dataForm.updateBy.length > 20"
-            :content="dataForm.updateBy"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">
-              修改人: {{ ellipsis(dataForm.updateBy, 20) }}
-            </span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            修改人: {{ ellipsis(dataForm.updateBy, 20) }}
-          </span>
-        </el-col>
-        <el-col
-          :span="8"
-          class="attrInfo"
-        >
-          <el-tooltip
-            v-if="dataForm.updateDate.length > 20"
-            :content="dataForm.updateDate"
-            class="item"
-            effect="dark"
-            placement="bottom-start"
-          >
-            <span class="text-style">修改时间: {{ ellipsis(dataForm.updateDate, 20) }}</span>
-          </el-tooltip>
-          <span
-            v-else
-            class="text-style"
-          >
-            修改时间: {{ ellipsis(dataForm.updateDate, 20) }}
-          </span>
-        </el-col>
-      </el-row>
-
-      <el-divider
-        class="bs-el-divider"
-        content-position="left"
-      >
-        关联数据集信息
-      </el-divider>
-
-      <div id="container" />
-    </el-scrollbar>
-  </div>
-</template>
-
-<script>
-import G6 from '@antv/g6'
-import { getLabelDetail } from 'packages/js/utils/LabelConfigService'
-
-export default {
-  name: 'LabelConfigDetails',
-  data () {
-    return {
-      dialogFormVisible: false,
-      dataForm: {
-        createBy: '',
-        createDate: '',
-        updateBy: '',
-        updateDate: '',
-        labelDesc: '',
-        labelName: '',
-        labelType: ''
-      },
-      jsonData: {},
-      chartHeight: 0,
-      chartWidth: 0
-    }
-  },
-  methods: {
-    ellipsis (value, len) {
-      if (!value) return ''
-      if (value.length > len) {
-        return value.slice(0, len) + '...'
-      }
-      return value
-    },
-    init (row) {
-      this.dialogFormVisible = true
-      getLabelDetail(row.id).then((r) => {
-        this.jsonData = r.jsonData
-        if (r.jsonData.nodes.length > 1) {
-          this.chartHeight = r.jsonData.nodes.length * 100
-        } else {
-          this.chartHeight = 200
-        }
-        this.dataForm = r
-
-        this.chartWidth = r.labelName.length * 20
-
-        this.$nextTick(() => {
-          this.initG6(r.jsonData)
-        })
-      })
-    },
-    goBack () {
-      this.dialogFormVisible = false
-      this.$nextTick(() => {
-        this.$parent.labelVisible = true
-        this.$parent.getDataList()
-      })
-    },
-    nodeEach (nodes) {
-      nodes.forEach(node => {
-        if (!node.style) {
-          node.style = {}
-        }
-        switch (node.class) {
-          case 'c1': {
-            node.shape = 'circle'
-            node.size = 40
-            break
-          }
-          case 'c3': {
-            node.shape = 'rect'
-            // node.size = [80, 50];
-            node.style = {
-              stroke: '#FFFFFF',
-              fill: '#DFE1E3'
-            }
-            break
-          }
-          case 'c0': {
-            node.shape = 'ellipse'
-            node.size = [80, 40]
-            break
-          }
-          case 'c2': {
-            node.shape = 'diamond'
-            node.size = [60, 60]
-            break
-          }
-        }
-      })
-    },
-    // 初始化G6
-    initG6 (json) {
-      const data = json
-      const width = document.getElementById('container').scrollWidth
-
-      this.nodeEach(data.nodes)
-      const tooltip = new G6.Tooltip({
-        offsetX: 10,
-        offsetY: 0,
-        fixToNode: [1, 0],
-        itemTypes: ['node', 'edge'],
-        getContent: (e) => {
-          const outDiv = document.createElement('div')
-          outDiv.style.width = 'fit-content'
-          outDiv.innerHTML = `<div style='width: 200px;'>${e.item.getModel()._label}</div>`
-          return outDiv
-        },
-        shouldBegin: (e) => {
-          let res = true
-          if (e.item.getModel()._label && e.item.getModel()._label.length > 12) {
-            res = true
-          } else {
-            res = false
-          }
-          return res
-        }
-      })
-
-      const graph = new G6.Graph({
-        container: 'container',
-        // width: '800',
-        height: this.chartHeight,
-        plugins: [tooltip],
-        // modes: {
-        //   default: ['drag-canvas', 'zoom-canvas', 'click-select']
-        // },
-        defaultNode: {
-          type: 'rect',
-          size: [150, 50],
-          style: {
-            fill: '#9ACAFF',
-            stroke: '#FFFFFF'
-          }
-        },
-        // 连线类型及样式
-        defaultEdge: {
-          type: 'line',
-          style: {
-            offset: 25,
-            endArrow: true,
-            lineWidth: 2,
-            stroke: '#333'
-          }
-        }
-      })
-      data.nodes.forEach(node => {
-        node._label = node.label
-        if (node.label.length > 12) {
-          node.label = node.label.substr(0, 9) + '...'
-        }
-      })
-      graph.data(data)
-      graph.render()
-    }
-  }
-}
-</script>
-
-<style scoped>
-
-@import '../../assets/style/bsTheme.scss';
-.data-set-scrollbar {
-  height: 100%;
-  width: 100%;
-  overflow-y: auto;
-  overflow-x: none;
-}
-.inner-container{
-  overflow-x: hidden;
-}
-.el-col {
-  height: 35px;
-}
-
-.attrInfo {
-  padding-left: 20px !important;
-}
-
-.text-style{
-  color: var(--bs-el-title);
-}
-
-.page-header {
-  display: flex;
-  position: relative;
-
-  .page-header-right {
-    position: absolute;
-    right: 16px;
-  }
-}
-</style>
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigEdit.vue b/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigEdit.vue
new file mode 100644
index 00000000..ab0f5d8d
--- /dev/null
+++ b/data-room-ui/packages/DataSetLabelManagement/src/LabelConfigEdit.vue
@@ -0,0 +1,223 @@
+<template>
+  <el-dialog
+    class="bs-dialog-wrap bs-el-dialog"
+    :append-to-body="true"
+    :before-close="cancel"
+    :title="dataForm.id!==''?'编辑标签':'新增标签'"
+    :visible.sync="formVisible"
+  >
+    <el-form
+      ref="ruleForm"
+      :model="dataForm"
+      :rules="rules"
+      label-position="right"
+      label-width="90px"
+      class="form-container"
+    >
+      <el-form-item
+        label="标签名称"
+        prop="labelName"
+      >
+        <el-input
+          v-model="dataForm.labelName"
+          class="bs-el-input"
+          clearable
+          placeholder="请输入标签名称"
+          maxlength="200"
+        />
+      </el-form-item>
+
+      <el-form-item
+        label="标签类型"
+        prop="labelType"
+      >
+        <el-select
+          ref="searchSelect"
+          v-model="dataForm.labelType"
+          class="bs-el-select"
+          popper-class="bs-el-select"
+          allow-create
+          clearable
+          filterable
+          placeholder="请选择或输入标签类型"
+          @blur="selectBlur"
+          @input.native="filterData"
+        >
+          <el-option
+            v-for="(item,K) in labelTypeList"
+            :key="K"
+            :label="item"
+            :value="item"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item
+        label="标签说明"
+        prop="labelDesc"
+      >
+        <el-input
+          v-model="dataForm.labelDesc"
+          clearable
+          placeholder="请输入标签说明"
+          class="bs-el-input"
+          type="text"
+        />
+      </el-form-item>
+    </el-form>
+    <span
+      slot="footer"
+      class="dialog-footer"
+    >
+      <el-button
+        class="bs-el-button-default"
+        @click="cancel"
+      >
+        取消
+      </el-button>
+      <el-button
+        type="primary"
+        @click="submitForm('ruleForm')"
+      >
+        确定
+      </el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { addOrUpdateLabel, checkRepeatLabel } from 'packages/js/utils/LabelConfigService'
+
+export default {
+  name: 'LabelEdit',
+  data () {
+    return {
+      loading: false,
+      datasetList: [],
+      typeId: '',
+      dataForm: {
+        id: '',
+        labelName: '',
+        labelType: '',
+        labelDesc: '',
+        relList: []
+      },
+      formVisible: true,
+      rules: {
+        labelName: [
+          { required: true, message: '标签名称不能为空', trigger: 'blur' },
+          { validator: this.validateLabelName, trigger: 'blur' }
+        ],
+        labelType: [
+          { required: true, message: '标签类型不能为空', trigger: 'change' }
+        ]
+      },
+      // 分类树数据
+      categoryData: [],
+      relVisible: false,
+      // 标签分类列表
+      labelTypeList: [],
+      // 选中的数据集id列表
+      datasetIdList: []
+    }
+  },
+  watch: {
+    'dataForm.labelType': function (val) {
+      if (val.length > 20) {
+        this.dataForm.labelType = val.substring(0, 20)
+      }
+    }
+  },
+  methods: {
+    /**
+     * 初始化
+     * @param row 标签信息
+     */
+    init (row) {
+      this.$nextTick(() => {
+        this.$refs.ruleForm.clearValidate()
+      })
+      this.dataForm.id = row ? row.id : ''
+      this.formVisible = true
+      if (row) {
+        this.dataForm.id = row.id
+        this.dataForm.labelName = row.labelName
+        this.dataForm.labelType = row.labelType
+        this.dataForm.labelDesc = row.labelDesc
+      }
+    },
+    /**
+     * 标签名称校验
+     * @param rule
+     * @param value
+     * @param callback
+     */
+    validateLabelName (rule, value, callback) {
+      checkRepeatLabel({ id: this.dataForm.id, labelName: this.dataForm.labelName }).then(repeat => {
+        if (repeat) {
+          callback(new Error('标签名称已存在'))
+        } else {
+          callback()
+        }
+      })
+    },
+    /**
+     * 表单关闭
+     */
+    handleClose () {
+      this.$parent.editFormVisible = false
+    },
+    /**
+     * 取消按钮
+     */
+    cancel () {
+      this.formVisible = false
+      this.$nextTick(() => {
+        this.handleClose()
+      })
+    },
+    /**
+     * 提交按钮
+     * @param formName
+     */
+    submitForm (formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          this.saveForm(true)
+        } else {
+          return false
+        }
+      })
+    },
+    /**
+     * 保存标签信息
+     * @param flag
+     */
+    saveForm (flag) {
+      addOrUpdateLabel(this.dataForm).then((r) => {
+        this.$message.success('保存成功')
+        this.cancel()
+        this.$emit('afterEdit')
+      })
+    },
+    selectBlur (e) {
+      this.dataForm.labelType = e.target.value
+    },
+    // 对输入字符串控制
+    filterData () {
+      // 此属性得到输入的文字
+      const str = this.$refs.searchSelect.$data.selectedLabel
+      // 控制的js
+      if (str.length > 20) {
+        this.$refs.searchSelect.$data.selectedLabel = str.substr(0, 20)
+      }
+    }
+  }
+}
+</script>
+
+<style scoped>
+.form-container{
+  padding: 0 8px;
+}
+</style>
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/LabelSelect.vue b/data-room-ui/packages/DataSetLabelManagement/src/LabelSelect.vue
index e85b7616..4c8b9d1a 100644
--- a/data-room-ui/packages/DataSetLabelManagement/src/LabelSelect.vue
+++ b/data-room-ui/packages/DataSetLabelManagement/src/LabelSelect.vue
@@ -20,19 +20,21 @@
         class="bs-el-button-default"
         icon="el-icon-plus"
         style="margin-left: 10px"
-        @click="addLabel"
+        @click="addLabelRelation"
       />
     </el-tooltip>
+    <!--  配置按钮  -->
+    <el-button type="text" @click="manageLabel">管理</el-button>
     <!-- 标签列表弹窗 -->
     <el-dialog
       class="bs-dialog-wrap bs-el-dialog"
       :append-to-body="true"
       :before-close="handleClose"
       :visible.sync="dialogFormVisible"
-      title="选择标签"
+      :title="isManage ? '标签管理' : '选择标签'"
       width="1000px"
     >
-      <div v-loading="labelCheckLoading">
+      <div>
         <el-form
           :inline="true"
           class="bs-el-form filter-container"
@@ -68,7 +70,6 @@
               />
             </el-select>
           </el-form-item>
-
           <el-form-item>
             <el-button
               type="primary"
@@ -77,57 +78,82 @@
               查询
             </el-button>
           </el-form-item>
+          <el-form-item>
+            <el-button
+              v-show="isManage"
+              type="primary"
+              class="bs-el-button-default"
+              @click="insertLabel"
+            >
+              新增
+            </el-button>
+          </el-form-item>
         </el-form>
-        <!--  标签选项组   -->
-        <el-checkbox-group
-          v-model="checkLabelList"
-          style="padding-bottom: 10px"
+        <el-table
+          ref="labelTable"
+          v-loading="labelCheckLoading"
+          class="bs-el-table bs-scrollbar"
+          element-loading-text="正在加载中..."
+          :data="labelList"
+          row-key="id"
+          @select="labelCheckChange"
+          @select-all="selectAll"
         >
-          <el-row :gutter="2">
-            <el-col
-              v-for="label in labelList"
-              :key="label.id"
-              :span="4"
-              style="padding-top: 10px"
-            >
-              <el-tooltip
-                v-if="label.labelDesc || getByteLength(label.labelName) > 18"
-                effect="light"
-                placement="top-start"
+          <el-empty slot="empty" />
+          <el-table-column
+            key="selection"
+            v-if="!isManage"
+            type="selection"
+            width="55"
+          />
+          <el-table-column
+            key="labelName"
+            label="标签名称"
+            prop="labelName"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            key="labelType"
+            label="标签类型"
+            prop="labelType"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            key="labelDesc"
+            label="标签说明"
+            prop="labelDesc"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            key="opt"
+            align="center"
+            label="操作"
+            width="200"
+            v-if="isManage"
+          >
+            <template slot-scope="scope">
+              <el-button
+                class="bs-el-button-default"
+                @click="editLabel(scope.row)"
               >
-                <div slot="content">
-                  <div v-if="getByteLength(label.labelName) > 18">
-                    名称: {{ label.labelName }}
-                  </div>
-                  <div v-if="label.labelDesc">
-                    描述: {{ label.labelDesc }}
-                  </div>
-                </div>
-                <el-checkbox
-                  :label="label.id"
-                  @change="labelCheckChange(label)"
-                >
-                  {{ getByteLength(label.labelName) > 18 ? ellipsis(label.labelName, 18) : label.labelName }}
-                </el-checkbox>
-              </el-tooltip>
-              <el-checkbox
-                v-else
-                :label="label.id"
-                @change="labelCheckChange(label)"
+                编辑
+              </el-button>
+              <el-button
+                class="bs-el-button-default"
+                @click="deleteLabel(scope.row.id)"
               >
-                {{ label.labelName }}
-              </el-checkbox>
-            </el-col>
-          </el-row>
-        </el-checkbox-group>
-
+                删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
         <div class="bs-pagination">
           <el-pagination
             class="bs-el-pagination"
             popper-class="bs-el-pagination"
             :current-page="current"
             :page-size="sizeLabel"
-            :page-sizes="[20, 40, 60, 80]"
+            :page-sizes="[10, 20, 50, 100]"
             :total="totalCount"
             background
             layout="total, prev, pager, next,sizes,jumper"
@@ -137,28 +163,48 @@
         </div>
 
         <div class="el-dialog__footer">
-          <el-button @click="handleClose">
+          <el-button
+            v-show="!isManage"
+            class="bs-el-button-default"
+            @click="handleClose"
+          >
             取消
           </el-button>
           <el-button
+            v-show="!isManage"
             type="primary"
             @click="commitLabel"
           >
             确定
           </el-button>
+          <el-button
+            v-show="isManage"
+            class="bs-el-button-default"
+            @click="handleClose"
+          >
+            返回
+          </el-button>
         </div>
+        <label-edit
+          v-if="editFormVisible"
+          @afterEdit="afterEdit"
+          ref="labelEdit"
+        />
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
+import LabelEdit from './LabelConfigEdit'
 import { pageMixins } from 'packages/js/mixins/page'
-import { getLabelType, labelList, getLabelListByDatasetId } from 'packages/js/utils/LabelConfigService'
+import {getLabelType, labelList, getLabelListByDatasetId, removeLabel} from 'packages/js/utils/LabelConfigService'
 
 export default {
   name: 'LabelSelect',
-  components: {},
+  components: {
+    LabelEdit
+  },
   mixins: [pageMixins],
   props: {
     // 选中的标签id列表
@@ -177,17 +223,20 @@ export default {
   },
   data () {
     return {
+      isManage: false,
       idListCopy: this.idList,
+      // 选中的标签列表
       selectLabelList: [],
       // 初始选中的标签列表
       selectLabelListInitial: [],
       labelList: [],
       dialogFormVisible: false,
+      // 编辑弹窗可见性
+      editFormVisible: false,
       searchForm: {
         labelName: '',
         labelType: ''
       },
-      checkLabelList: [],
       sizeLabel: 20,
       labelTypeList: [],
       labelCheckLoading: false
@@ -206,11 +255,13 @@ export default {
     // labelList变化时,根据selectLabelList中项的id,设置选中状态
     labelList: {
       handler (val) {
-        this.checkLabelList = []
         val.forEach((label) => {
           this.selectLabelList.forEach((selected) => {
             if (label.id === selected.id) {
-              this.checkLabelList.push(label.id)
+              // 设置选中状态
+              this.$nextTick(() => {
+                this.$refs.labelTable.toggleRowSelection(label)
+              })
             }
           })
         })
@@ -220,25 +271,25 @@ export default {
     // 根据selectLabelList的变化,将id赋值给idList
     selectLabelList: {
       handler (val) {
-        this.checkLabelList = []
         this.idListCopy = []
         val.forEach((item) => {
           this.idListCopy.push(item.id)
-          this.checkLabelList.push(item.id)
         })
       },
       deep: true
     }
-
   },
   methods: {
     /**
      * 初始化方法
      */
-    init () {
-      this.dialogFormVisible = true
-      this.getDataList()
-      this.getLabelType()
+    init (manage) {
+      this.isManage = manage
+      this.$nextTick(() => {
+        this.dialogFormVisible = true
+        this.getDataList()
+        this.getLabelType()
+      })
     },
     /**
      * 获取标签类型列表
@@ -267,10 +318,57 @@ export default {
         this.labelCheckLoading = false
       })
     },
+    /**
+     * 当前页全选
+     * @param {*} labelList
+     */
+    selectAll (labelList) {
+      // 如果selectLabelList中包含id相同的项,则忽略,否则,将该项添加到selectLabelList中
+      labelList.forEach((label) => {
+        if (!this.selectLabelList.some(selected => selected.id === label.id)) {
+          this.selectLabelList.push(label)
+        }
+      })
+    },
+    /**
+     * 新增标签
+     */
+    insertLabel () {
+      this.editFormVisible = true
+      this.$nextTick(() => {
+        this.$refs.labelEdit.labelTypeList = this.labelTypeList
+        this.$refs.labelEdit.init()
+      })
+    },
+    editLabel (row) {
+      this.editFormVisible = true
+      this.$nextTick(() => {
+        this.$refs.labelEdit.labelTypeList = this.labelTypeList
+        this.$refs.labelEdit.init(row)
+      })
+    },
+    deleteLabel (id) {
+      this.$confirm('确定删除当前标签吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        removeLabel(id).then(() => {
+          this.getDataList()
+          this.$message.success('删除成功')
+          // 如果selectLabelList中包含id相同的项,则从selectLabelList中移除
+          if (this.selectLabelList.some(item => item.id === id)) {
+            this.selectLabelList = this.selectLabelList.filter(item => item.id !== id)
+          }
+          this.selectLabelListInitial = _.cloneDeep(this.selectLabelList)
+        })
+      }).catch(() => {
+      })
+    },
     /**
      * 标签选项组选中事件
      */
-    labelCheckChange (label) {
+    labelCheckChange (selection, label) {
       // 如果selectLabelList中包含id相同的项,则从selectLabelList中移除
       if (this.selectLabelList.some(item => item.id === label.id)) {
         this.selectLabelList = this.selectLabelList.filter(item => item.id !== label.id)
@@ -295,11 +393,17 @@ export default {
       })
     },
     /**
-     * 点击添加标签按钮
+     * 点击添加标签关联按钮
      */
-    addLabel () {
+    addLabelRelation () {
       // 初始化
-      this.init()
+      this.init(false)
+    },
+    /**
+     * 标签管理按钮
+     */
+    manageLabel() {
+      this.init(true)
     },
     /**
      * 选中标签类型
@@ -323,25 +427,12 @@ export default {
       this.selectLabelListInitial = _.cloneDeep(this.selectLabelList)
       this.$emit('commit', this.idListCopy)
     },
-    getByteLength (str) {
-      return unescape(encodeURIComponent(str)).length
-    },
-    ellipsis (str, len) {
-      if ((!str && typeof (str) !== 'undefined')) {
-        return ''
-      }
-      let num = 0
-      const str1 = str
-      var str = ''
-      for (let i = 0, lens = str1.length; i < lens; i++) {
-        num += ((str1.charCodeAt(i) > 255) ? 2 : 1)
-        if (num > len - 3) {
-          break
-        } else {
-          str = str1.substring(0, i + 1)
-        }
-      }
-      return str + '...'
+    /**
+     * 标签编辑/新增后回调
+     */
+    afterEdit () {
+      this.getDataList()
+      this.getLabelType()
     }
   }
 }
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/Tree/index.vue b/data-room-ui/packages/DataSetLabelManagement/src/Tree/index.vue
deleted file mode 100644
index 9eeb321e..00000000
--- a/data-room-ui/packages/DataSetLabelManagement/src/Tree/index.vue
+++ /dev/null
@@ -1,167 +0,0 @@
-<template>
-  <el-tree
-    :ref="treeRef"
-    class="bs-el-tree"
-    :data="treeData"
-    :default-expand-all="expandAll"
-    :expand-on-click-node="false"
-    :filter-node-method="filterNode"
-    :highlight-current="true"
-    :indent="0"
-    :props="defaultProps"
-    node-key="id"
-    style="width: fit-content;min-width: 100%;"
-    @node-click="handleNodeClick"
-    @node-contextmenu="rihgtClick"
-  >
-    <span
-      slot-scope="{ node,data }"
-      class="custom-tree-node"
-      style="width: 100%;position: relative;"
-      @mouseenter="mouseEnter(data)"
-      @mouseleave="mouseLeave(data)"
-    >
-      <span :style="data.children && data.children.length ? {} : {'padding-left': '12px'}">
-        <i
-          :class="data.children && data.children.length ? 'el-icon el-icon-folder': 'el-icon el-icon-document'"
-          style="margin-right: 8px;"
-        />
-        <span class="nodeText">{{ data.name }}</span>
-      </span>
-      <span
-        v-if="optionShow"
-        class="options"
-      >
-        <el-dropdown @command="(command) => { treeCommand(command, data) }">
-          <i class="el-icon-more" />
-          <el-dropdown-menu slot="dropdown">
-            <slot name="options" />
-          </el-dropdown-menu>
-        </el-dropdown>
-      </span>
-    </span>
-  </el-tree>
-</template>
-
-<script>
-export default {
-  name: 'Tree',
-  props: {
-    treeData: {
-      type: Array,
-      default: () => ([])
-    },
-    treeRef: {
-      type: String,
-      default: 'tree'
-    },
-    nodeWidth: {
-      type: String,
-      default: '280px'
-    },
-    expandAll: {
-      type: Boolean,
-      default: true
-    },
-    filterText: {
-      type: String,
-      default: ''
-    },
-    optionShow: {
-      type: Boolean,
-      default: false
-    }
-  },
-  data () {
-    return {
-      defaultProps: {
-        children: 'children',
-        label: 'name'
-      }
-    }
-  },
-  watch: {
-    treeData: function (val) {
-      // console.log('valx', val)
-    },
-    filterText (val) {
-      this.$refs[this.treeRef].filter(val)
-    }
-  },
-  methods: {
-    treeCommand (command, nodeData) {
-      this.$emit('treeCommand', command, nodeData)
-    },
-    filterNode (value, data) {
-      if (!value) return true
-      return data.name.indexOf(value) !== -1
-    },
-    // 节点点击
-    handleNodeClick (row, value) {
-      this.$emit('handleNodeClick', row, value)
-    },
-    // 节点右键
-    rihgtClick (event, object, value, element) {
-      this.$emit('rihgtClick', event, object, value, element)
-    },
-    mouseEnter (data) {
-      // this.$set(data, 'show', true)
-      // 弹射节点数据
-      this.$emit('mouseEnter', data)
-    },
-    mouseLeave (data) {
-      // this.$set(data, 'show', false)
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-::v-deep .el-tree-node {
-  display: block;
-  min-width: 270px;
-
-  .el-tree-node__content {
-    width: 270px;
-    overflow: hidden;
-  }
-
-  .el-tree-node__children {
-    .el-tree-node {
-      display: block;
-      min-width: 270px;
-
-      .el-tree-node__content {
-        width: 270px;
-        overflow: hidden;
-      }
-    }
-  }
-}
-
-.custom-tree-node {
-  position: relative;
-
-  .nodeText {
-    display: inline-block;
-    width: 225px;
-    white-space: nowrap;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    line-height: 14px;
-  }
-
-  .options {
-    position: absolute;
-    right: 30px;
-    height: 16px;
-    top: 2px;
-    line-height: 16px;
-    transform: rotate(90deg);
-  }
-}
-
-// ::v-deep .is-current .options{
-//   background: #fff;
-// }
-</style>
diff --git a/data-room-ui/packages/DataSetLabelManagement/src/index.vue b/data-room-ui/packages/DataSetLabelManagement/src/index.vue
deleted file mode 100644
index 7099074c..00000000
--- a/data-room-ui/packages/DataSetLabelManagement/src/index.vue
+++ /dev/null
@@ -1,311 +0,0 @@
-<template>
-  <div class="bs-container">
-    <div
-      v-if="labelVisible"
-      class="inner-container"
-    >
-      <el-form
-        ref="queryForm"
-        :model="queryForm"
-        class="filter-container"
-      >
-        <el-form-item
-          class="filter-item"
-          prop="labelName"
-        >
-          <el-input
-            v-model="queryForm.labelName"
-            class="bs-el-input"
-            clearable
-            placeholder="请输入标签名称"
-            @clear="reSearch()"
-            @keyup.enter.native="reSearch()"
-          />
-        </el-form-item>
-        <el-form-item
-          class="filter-item"
-          prop="labelType"
-        >
-          <el-select
-            v-model="queryForm.labelType"
-            clearable
-            filterable
-            class="bs-el-select"
-            popper-class="bs-el-select"
-            placeholder="请选择标签类型"
-            @change="reSearch()"
-          >
-            <el-option
-              key="all"
-              label="全部"
-              value=""
-            />
-            <el-option
-              v-for="labelType in labelTypeList"
-              :key="labelType"
-              :label="labelType"
-              :value="labelType"
-            >
-              <span>
-                {{ labelType }}
-              </span>
-              <span style="float: right;padding-right: 20px">
-                <el-button
-                  class="bs-el-button-default"
-                  icon="el-icon-edit"
-                  type="text"
-                  @click.stop="editLabelType(labelType)"
-                />
-                <el-button
-                  class="bs-el-button-default"
-                  icon="el-icon-delete"
-                  type="text"
-                  @click.stop="deleteLabelType(labelType)"
-                />
-              </span>
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item class="filter-item">
-          <el-button
-            :loading="dataListLoading"
-            icon="el-icon-search"
-            type="primary"
-            @click="reSearch"
-          >
-            查询
-          </el-button>
-        </el-form-item>
-        <el-form-item
-          class="filter-item"
-        >
-          <el-button
-            type="primary"
-            class="bs-el-button-default"
-            @click="addOrUpdateLabel(undefined)"
-          >
-            新增
-          </el-button>
-        </el-form-item>
-      </el-form>
-      <div class="bs-table-box">
-        <el-table
-          v-table
-          v-loading="dataListLoading"
-          height="0"
-          :data="tableData"
-          class="bs-el-table bs-scrollbar"
-          :element-loading-text="loadingText"
-          :header-cell-style="sortStyle"
-          @sort-change="reSort"
-        >
-          <el-empty slot="empty" />
-          <el-table-column
-            label="标签名称"
-            prop="labelName"
-            show-overflow-tooltip
-          />
-          <el-table-column
-            label="标签类型"
-            prop="labelType"
-            show-overflow-tooltip
-          />
-          <el-table-column
-            label="标签说明"
-            prop="labelDesc"
-            show-overflow-tooltip
-          />
-          <el-table-column
-            align="center"
-            label="操作"
-            width="200"
-          >
-            <template slot-scope="scope">
-              <el-button
-                class="bs-el-button-default"
-                @click="getDetail(scope.row)"
-              >
-                详情
-              </el-button>
-              <el-button
-                class="bs-el-button-default"
-                @click="addOrUpdateLabel(scope.row)"
-              >
-                编辑
-              </el-button>
-              <el-button
-                class="bs-el-button-default"
-                @click="handleDelete(scope.row.id)"
-              >
-                删除
-              </el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <div class="bs-pagination">
-        <el-pagination
-          class="bs-el-pagination"
-          popper-class="bs-el-pagination"
-          :current-page="current"
-          :next-text="nextText"
-          :page-size="size"
-          :page-sizes="[10, 20, 50, 100]"
-          :prev-text="prevText"
-          :total="totalCount"
-          background
-          layout="total, prev, pager, next, sizes"
-          @size-change="sizeChangeHandle"
-          @current-change="currentChangeHandle"
-        />
-      </div>
-    </div>
-    <label-config-add-or-update
-      v-if="addOrUpdateVisible"
-      ref="LabelConfigAddOrUpdate"
-    />
-    <label-type-edit
-      v-if="labelTypeEditVisible"
-      ref="LabelTypeEdit"
-    />
-    <label-config-details
-      ref="LabelConfigDetails"
-    />
-  </div>
-</template>
-
-<script>
-import table from 'packages/js/utils/table.js'
-import { pageMixins } from 'packages/js/mixins/page'
-import LabelConfigAddOrUpdate from './LabelConfigAddOrUpdate.vue'
-import LabelConfigDetails from './LabelConfigDetails.vue'
-import LabelTypeEdit from './LabelTypeEdit.vue'
-import { getLabelType, labelList, removeLabel, removeLabelByType } from 'packages/js/utils/LabelConfigService'
-
-export default {
-  name: 'LabelConfig',
-  directives: {
-    table // 注册自定义指令
-  },
-  mixins: [pageMixins],
-  components: {
-    LabelConfigDetails,
-    LabelConfigAddOrUpdate,
-    LabelTypeEdit
-  },
-  data () {
-    return {
-      tableData: [],
-      addOrUpdateVisible: false,
-      addOrUpdateDetailVisible: false,
-      labelTypeEditVisible: false,
-      labelVisible: true,
-      labelTypeList: [],
-      dataListLoading: false,
-      loadingText: '',
-      queryForm: {
-        labelName: '',
-        labelType: ''
-      }
-    }
-  },
-  watch: {},
-  mounted () {
-    this.getDataList()
-    this.getLabelType()
-  },
-  methods: {
-    deleteLabelType (labelType) {
-      this.$confirm('是否删除当前标签类型? ', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        removeLabelByType({ labelType: labelType }).then(() => {
-          this.$nextTick(() => {
-            this.reSearch()
-            this.getLabelType()
-            this.$message.success('删除成功')
-          })
-        })
-      })
-    },
-    editLabelType (labelType) {
-      this.labelTypeEditVisible = true
-      this.$nextTick(() => {
-        this.$refs.LabelTypeEdit.dialogFormVisible = true
-        this.$refs.LabelTypeEdit.init(labelType)
-      })
-    },
-    handleDelete (id) {
-      this.$confirm('确定删除当前标签吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        removeLabel(id).then(() => {
-          this.getDataList()
-          this.$message.success('删除成功')
-        })
-      }).catch(() => {
-      })
-    },
-    // 新增/编辑
-    addOrUpdateLabel (row) {
-      this.addOrUpdateVisible = true
-      this.$nextTick(() => {
-        this.$refs.LabelConfigAddOrUpdate.labelTypeList = this.labelTypeList
-        this.$refs.LabelConfigAddOrUpdate.init(row)
-      })
-    },
-    // 查看详情
-    getDetail (row) {
-      this.addOrUpdateDetailVisible = true
-      this.labelVisible = false
-      this.$nextTick(() => {
-        this.$refs.LabelConfigDetails.init(row)
-      })
-    },
-    // 获取标签列表
-    getLabelType () {
-      getLabelType().then((data) => {
-        this.labelTypeList = data
-      })
-    },
-    // 获取列表方法
-    getDataList () {
-      this.dataListLoading = true
-      this.loadingText = '正在查询数据...'
-      const params = {
-        current: this.current,
-        size: this.size,
-        ...this.queryForm
-      }
-      labelList(params).then((data) => {
-        this.totalCount = data.totalCount
-        this.tableData = data.list
-        this.dataListLoading = false
-      }).catch(() => {
-        this.dataListLoading = false
-      })
-    },
-    // 查询事件
-    reSearch () {
-      // 从第一页
-      this.current = 1
-      this.getDataList()
-    }
-  }
-}
-</script>
-<style lang="scss" scoped>
-@import '../../assets/style/bsTheme.scss';
-
-.bs-pagination {
-    ::v-deep .el-input__inner {
-      width: 110px !important;
-      border: none;
-      background: var(--bs-el-background-1);
-    }
-  }
-</style>
diff --git a/data-room-ui/packages/index.js b/data-room-ui/packages/index.js
index 2327e363..39e07d6c 100644
--- a/data-room-ui/packages/index.js
+++ b/data-room-ui/packages/index.js
@@ -26,8 +26,7 @@ const BigScreenDesign = () => import('./BigScreenDesign')
 const DataSetManagement = () => import('./DataSetManagement')
 // 数据源管理页面
 const DataSourceManagement = () => import('./DataSourceManagement')
-// 数据集标签管理页面
-import DataSetLabelManagement from 'packages/DataSetLabelManagement'
+
 
 // 存储组件列表
 const components = [
@@ -38,8 +37,7 @@ const components = [
   BigScreenRun,
   BigScreenDesign,
   DataSetManagement,
-  DataSourceManagement,
-  DataSetLabelManagement
+  DataSourceManagement
 ]
 
 const $bigScreen = {
@@ -62,7 +60,6 @@ export {
   BigScreenDesign,
   DataSetManagement,
   DataSourceManagement,
-  DataSetLabelManagement,
   $bigScreen,
   registerConfig,
   updateTheme
@@ -78,7 +75,6 @@ export default {
   BigScreenDesign,
   DataSetManagement,
   DataSourceManagement,
-  DataSetLabelManagement,
   $bigScreen,
   registerConfig,
   updateTheme
diff --git a/data-room-ui/packages/js/utils/registerConfig.js b/data-room-ui/packages/js/utils/registerConfig.js
index f97f94b3..55501711 100644
--- a/data-room-ui/packages/js/utils/registerConfig.js
+++ b/data-room-ui/packages/js/utils/registerConfig.js
@@ -72,13 +72,6 @@ function registerRouters (config, router) {
             title: '数据集管理'
           }
         },
-        {
-          path: config?.routers?.labelUrl || '/big-screen-label',
-          component: () => import('packages/DataSetLabelManagement'),
-          meta: {
-            title: '标签管理'
-          }
-        },
         {
           path: config?.routers?.SourceUrl || '/big-screen-source',
           component: () => import('packages/SourceManagement'),