nav
lxl
2022-11-08 02c0fe95de11fe9e692144a9a15b6d96bb991b66
nav
已添加1个文件
已修改6个文件
684 ■■■■ 文件已修改
src/api/api.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu - 副本.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 192 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/domainManage.vue 182 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/metadataManage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js
@@ -198,7 +198,7 @@
export function queryMenuTree() {
  return request.get('/perms/selectMenus');
}
// //请求编辑菜单栏数据
//请求编辑菜单栏数据
export function queryMenuAll() {
  return request.get('/menu/selectMenuAll');
}
@@ -564,10 +564,14 @@
export function getSingleTab(params) {
  return request.get('domain/selectByPageAndCount', { params: params });
}
//更新值域数据
export function updateDomain(params) {
  return service.post('domain/update', params);
  return request.post('domain/update', params);
}
export function deleteDomain(params) {
  return request.get('domain/deletes', { params: params });
}
//插入值域数据
export function insertDomain(params) {
  return service.post('domain/insert', params);
  return request.post('domain/insert', params);
}
src/assets/lang/zh.js
@@ -85,7 +85,7 @@
      codeDesc: "编码描述",
      domCode: "编码",
      domDesc: "值域表描述",
      domName: "值域表名",
      domName: "值域名称",
      level: "层级",
      orderid: "序号",
      
src/components/navMenu - ¸±±¾.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,270 @@
<template>
  <div class="leftMenu">
    <div class="leftTopWrapper">
      <div class="logo">
        <img src="../assets/img/www.terra-it.cn.png" alt="" />
      </div>
      <div class="menu">
        <el-menu
          active-text-color="#ffd04b"
          class="el-menu-vertical-demo"
          :default-active="activeIndex"
          background-color="#586884"
          text-color="#fff"
          @select="handleselect"
        >
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
    </div>
    <div class="leftBotWrapper">
      <div class="userInfo">
        <img src="../assets/img/user.png" alt="" />
        <span>admin</span>
        <span @click="logOut">注销</span>
        &nbsp;
        <span @click="switchLang"> åˆ‡æ¢è¯­è¨€</span>
      </div>
      <div class="btnBox">
        <div><img src="../assets/img/leftBtn.png" alt="" /></div>
        <div><img src="../assets/img/rightBtn.png" alt="" /></div>
      </div>
    </div>
  </div>
</template>
<script>
import { logout } from '@/api/api';
import { removeToken, getToken } from '@/utils/auth';
import customElMenu from '../components/customElMenu.vue';
import { queryMenuTree, getPerms } from '../api/api';
export default {
  name: 'navMenu',
  //import引入的组件需要注入到对象中才能使用
  components: {
    customElMenu,
  },
  data() {
    return {
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      activeIndex: '/',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
    };
  },
  mounted() {
    this.getUserPerms();
    this.getMenuTree();
  },
  computed: {
    // æˆ‘们使用计算属性来获取到当前点击的菜单的路由路径,然后设置default-active中的值
    // ä½¿å¾—菜单在载入时就能对应高亮
    // activeIndex() {
    //   const route = this.$route;
    //   const { meta, path } = route;
    //   // if set path, the sidebar will highlight the path you set
    //   // å¯ä»¥åœ¨è·¯ç”±é…ç½®æ–‡ä»¶ä¸­è®¾ç½®è‡ªå®šä¹‰çš„路由路径到meta.activeMenu属性中,来控制菜单自定义高亮显示
    //   if (meta.activeMenu) {
    //     return meta.activeMenu;
    //   }
    //   return path;
    // },
  },
  methods: {
    getMenuTree() {
      //获取目录树最大ID,新建节点使用
      // queryMaxId().then((res) => {
      //   this.id = res.data;
      // });
      // èŽ·å–ç›®å½•æ ‘æ•°æ®
      queryMenuTree().then((res) => {
        if (res.code == 200) {
          if (res.result.length != 0) {
            let menuLists = res.result.filter((value) => {
              return value.type == 1;
            });
            this.menuList = this.treeData(menuLists);
          } else {
            alert('暂无菜单栏数据');
          }
        } else {
          console.log('接口报错');
        }
      });
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // console.log(cloneData);
      if (cloneData.length != 0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid == 1; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    logOut() {
      this.$confirm('确认是否退出登录?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      })
        .then(async () => {
          const data = await logout({ token: getToken() });
          // console.log(data);
          if (data.code != 200) {
            return this.$message.error('退出登录失败');
          }
          removeToken();
          this.$router.push('/login');
          this.$message({
            message: '退出登录成功',
            type: 'success',
          });
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消',
          });
        });
    },
    switchLang() {
      //当前en
      if (this.lang == 'en') {
        //语言换成zh
        this.lang = 'zh';
        //菜单换为zh
        this.$store.commit('changeLang', 'zh');
        //i18换成zh
        this.$i18n.locale = this.lang;
      }
      //当前zh
      else {
        this.lang = 'en';
        this.$i18n.locale = this.lang;
        this.$store.commit('changeLang', 'en'); //传递点击的节点
      }
    },
    handleselect(index, indexPath, e) {
      // console.log(e.$attrs.perms);
      this.$store.commit('currentPerms', e.$attrs.perms.perms);
      if (Window.ws != null) {
        Window.ws.close();
        Window.ws.onclose = () => {
          console.log('服务器关闭');
        };
        Window.ws = null;
      }
      if (index.indexOf('http') != -1) {
        this.$router.push('/databaseMonitoring');
        this.$store.commit('getIframe', index);
      } else if (isNaN(Number(index))) {
        this.$router.push(index);
      }
    },
    getUserPerms() {
      getPerms().then((res) => {
        if (res.code == 200) this.$store.commit('getPermsEntity', res.result);
      });
    },
  },
  watch: {
    $route() {
      let str = this.$route.path;
      if (str[0] == '/') {
        this.activeIndex = str.slice(1);
      }
    },
  },
  created() {
    let str = this.$route.path;
    if (str[0] == '/') {
      this.activeIndex = str.slice(1);
    }
  },
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.leftMenu {
  // width: 300px;
  height: 99%;
  // background-color: #bfa;
}
.leftTopWrapper {
  width: 100%;
  height: 100%;
  .logo {
    // background-color: rgb(139, 0, 0);
    width: 249px;
    height: 52px;
    img {
      width: 100%;
    }
  }
  .menu {
    height: 90%;
    margin-top: 22px;
    overflow: auto;
    // background-color: rgb(120, 121, 120);
    .el-menu {
      height: 100%;
      width: 280px;
      border-right: none;
      /deep/ .el-submenu {
        margin-bottom: 10px;
        .el-submenu__title {
          background-color: transparent !important;
        }
      }
      .faSub {
        background-color: #586884;
      }
    }
  }
}
.leftBotWrapper {
  width: 258px;
  position: absolute;
  left: 19px;
  bottom: 17px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  .userInfo {
    // width: 138px;
    font-size: 16px;
    font-family: Microsoft YaHei;
    font-weight: 400;
    color: #fcfcfc;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
  }
  .btnBox {
    width: 65px;
    display: flex;
    justify-content: space-between;
  }
}
</style>
src/components/navMenu.vue
@@ -1,23 +1,16 @@
<template>
  <div class="leftMenu">
    <div class="leftTopWrapper">
  <div class="topMenu">
      <div class="logo">
        <img src="../assets/img/www.terra-it.cn.png" alt="" />
      </div>
    <div class="rightWrapper">
      <div class="menu">
        <el-menu
          active-text-color="#ffd04b"
          class="el-menu-vertical-demo"
          :default-active="activeIndex"
          background-color="#586884"
          text-color="#fff"
          @select="handleselect"
        >
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
        <ul>
          <li v-for="item in menuList" :key="item.id">
            {{ item.cnName }}
          </li>
        </ul>
      </div>
    </div>
    <div class="leftBotWrapper">
      <div class="userInfo">
        <img src="../assets/img/user.png" alt="" />
        <span>admin</span>
@@ -25,22 +18,18 @@
        &nbsp;
        <span @click="switchLang"> åˆ‡æ¢è¯­è¨€</span>
      </div>
      <div class="btnBox">
        <div><img src="../assets/img/leftBtn.png" alt="" /></div>
        <div><img src="../assets/img/rightBtn.png" alt="" /></div>
      </div>
    </div>
  </div>
</template>
<script>
import { logout } from '@/api/api';
import { removeToken, getToken } from '@/utils/auth';
import customElMenu from '../components/customElMenu.vue';
import { queryMenuTree, getPerms } from '../api/api';
import { logout } from "@/api/api";
import { removeToken, getToken } from "@/utils/auth";
import customElMenu from "../components/customElMenu.vue";
import { queryMenuTree, getPerms } from "../api/api";
export default {
  name: 'navMenu',
  name: "navMenu",
  //import引入的组件需要注入到对象中才能使用
  components: {
    customElMenu,
@@ -50,10 +39,10 @@
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      activeIndex: '/',
      lang: "zh",
      activeIndex: "/",
      menuList: [],
      editTitle: '',
      editTitle: "",
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
@@ -61,7 +50,7 @@
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      formLabelWidth: "70px",
    };
  },
  mounted() {
@@ -93,14 +82,15 @@
        if (res.code == 200) {
          if (res.result.length != 0) {
            let menuLists = res.result.filter((value) => {
              return value.type == 1;
              return value.pid == 1;
            });
            this.menuList = this.treeData(menuLists);
            // console.log(menuLists);
            this.menuList = menuLists;
          } else {
            alert('暂无菜单栏数据');
            alert("暂无菜单栏数据");
          }
        } else {
          console.log('接口报错');
          console.log("接口报错");
        }
      });
    },
@@ -111,93 +101,93 @@
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length > 0 ? (father.children = branchArr) : ''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          branchArr.length > 0 ? (father.children = branchArr) : ""; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid == 1; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
        alert("暂无菜单栏数据");
      }
    },
    logOut() {
      this.$confirm('确认是否退出登录?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      this.$confirm("确认是否退出登录?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          const data = await logout({ token: getToken() });
          // console.log(data);
          if (data.code != 200) {
            return this.$message.error('退出登录失败');
            return this.$message.error("退出登录失败");
          }
          removeToken();
          this.$router.push('/login');
          this.$router.push("/login");
          this.$message({
            message: '退出登录成功',
            type: 'success',
            message: "退出登录成功",
            type: "success",
          });
        })
        .catch(() => {
          this.$message({
            type: 'info',
            message: '已取消',
            type: "info",
            message: "已取消",
          });
        });
    },
    switchLang() {
      //当前en
      if (this.lang == 'en') {
      if (this.lang == "en") {
        //语言换成zh
        this.lang = 'zh';
        this.lang = "zh";
        //菜单换为zh
        this.$store.commit('changeLang', 'zh');
        this.$store.commit("changeLang", "zh");
        //i18换成zh
        this.$i18n.locale = this.lang;
      }
      //当前zh
      else {
        this.lang = 'en';
        this.lang = "en";
        this.$i18n.locale = this.lang;
        this.$store.commit('changeLang', 'en'); //传递点击的节点
        this.$store.commit("changeLang", "en"); //传递点击的节点
      }
    },
    handleselect(index, indexPath, e) {
      // console.log(e.$attrs.perms);
      this.$store.commit('currentPerms', e.$attrs.perms.perms);
      this.$store.commit("currentPerms", e.$attrs.perms.perms);
      if (Window.ws != null) {
        Window.ws.close();
        Window.ws.onclose = () => {
          console.log('服务器关闭');
          console.log("服务器关闭");
        };
        Window.ws = null;
      }
      if (index.indexOf('http') != -1) {
        this.$router.push('/databaseMonitoring');
        this.$store.commit('getIframe', index);
      if (index.indexOf("http") != -1) {
        this.$router.push("/databaseMonitoring");
        this.$store.commit("getIframe", index);
      } else if (isNaN(Number(index))) {
        this.$router.push(index);
      }
    },
    getUserPerms() {
      getPerms().then((res) => {
        if (res.code == 200) this.$store.commit('getPermsEntity', res.result);
        if (res.code == 200) this.$store.commit("getPermsEntity", res.result);
      });
    },
  },
  watch: {
    $route() {
      let str = this.$route.path;
      if (str[0] == '/') {
      if (str[0] == "/") {
        this.activeIndex = str.slice(1);
      }
    },
  },
  created() {
    let str = this.$route.path;
    if (str[0] == '/') {
    if (str[0] == "/") {
      this.activeIndex = str.slice(1);
    }
  },
@@ -205,66 +195,58 @@
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.leftMenu {
  // width: 300px;
  height: 99%;
  // background-color: #bfa;
}
.leftTopWrapper {
.topMenu {
  width: 100%;
  height: 100%;
  .logo {
    // background-color: rgb(139, 0, 0);
    width: 249px;
    height: 52px;
    img {
      width: 100%;
    }
  }
  .menu {
    height: 90%;
    margin-top: 22px;
    overflow: auto;
    // background-color: rgb(120, 121, 120);
    .el-menu {
      height: 100%;
      width: 280px;
      border-right: none;
      /deep/ .el-submenu {
        margin-bottom: 10px;
        .el-submenu__title {
          background-color: transparent !important;
        }
      }
      .faSub {
        background-color: #586884;
      }
    }
  }
}
.leftBotWrapper {
  width: 258px;
  position: absolute;
  left: 19px;
  bottom: 17px;
  background-image: linear-gradient(rgb(34, 33, 33), rgb(27, 31, 78));
  display: flex;
  justify-content: space-between;
  align-items: center;
  .logo {
    width: 500px;
    height: 100%;
    position: relative;
    img {
      width: 70%;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      margin: auto;
    }
  }
  .rightWrapper {
    width: 70%;
    height: 100%;
    display: flex;
    .menu {
      height: 100%;
      width: 80%;
      background-color: rgb(120, 121, 120);
      ul {
        display: flex;
        justify-content: space-around;
        li {
          width: 120px;
          height: 120px;
          background: #bfa;
        }
      }
    }
  .userInfo {
      background-color: pink;
    // width: 138px;
    font-size: 16px;
    font-family: Microsoft YaHei;
    font-weight: 400;
    color: #fcfcfc;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
      // display: flex;
      // justify-content: space-between;
      // align-items: center;
      // cursor: pointer;
  }
  .btnBox {
    width: 65px;
    display: flex;
    justify-content: space-between;
  }
}
</style>
src/views/Home.vue
@@ -1,17 +1,13 @@
<template>
  <div class="home">
    <el-container>
      <el-container>
        <el-aside>
      <el-header>
          <nav-menu></nav-menu>
        </el-aside>
      </el-header>
        <el-main>
          <!-- <synthesis class="showsynthesis" v-show="shwomMapview"></synthesis> -->
          <router-view  />
        </el-main>
      </el-container>
    </el-container>
    <!-- <iframe src="http://localhost/LFWeb/test.html" width="100%" height="100%"></iframe> -->
  </div>
</template>
@@ -22,35 +18,30 @@
  name: "Home",
  components: {
    navMenu,
  },
  data() {
    return {
      shwomMapview: true,
    };
  },
  methods: {
  },
  methods: {},
};
</script>
<style lang="less">
.home {
  height: 100vh;
  position: relative;
  background-color: #3b4d6e;
  .el-aside {
    margin: 26px 0 0 27px;
    width: 249px;
    // background-color: #bfa;
  }
  .el-container {
    height: 100%;
    .el-header {
      padding: 0;
      height: 160px !important;
  }
  .el-main {
    margin: 0px;
    padding: 10px;
    background: rgb(61, 76, 112);
      background-color: rgb(53, 53, 57);
    }
  }
}
</style>
src/views/datamanage/domainManage.vue
@@ -2,7 +2,7 @@
  <div class="authorityManagement_box">
    <My-bread :list="[`${$t('dataManage.dataManage')}`, `值域管理`]"></My-bread>
    <el-divider />
    <div class="contentBox">
    <div class="mainBox">
      <div class="leftTree">
        <el-tree
          :data="domainData"
@@ -16,7 +16,7 @@
          <el-form ref="queryForm" :model="queryForm" :inline="true">
            <el-form-item :label="$t('dataManage.vmobj.keyword')" prop="name">
              <el-input
                v-model="queryForm.name"
                v-model="queryForm.code"
                :placeholder="$t('common.pleaseInput')"
              />
            </el-form-item>
@@ -42,9 +42,9 @@
              >
              <el-button
                v-if="btnStatus.delete"
                @click="deleteInfo"
                type="danger"
                size="small"
                @click="handleDelete"
                icon="el-icon-delete"
                >{{ $t("common.delete") }}</el-button
              >
@@ -52,7 +52,14 @@
          </el-form>
        </div>
        <div class="table_box">
          <el-table :data="tableData" stripe style="width: 100%" height="99%">
          <el-table
            :data="tableData"
            border
            style="width: 100%"
            fit
            @selection-change="handleSelectionChange"
            height="99%"
          >
            <el-table-column type="selection" width="50" />
            <el-table-column
              align="center"
@@ -102,20 +109,15 @@
            />
            <el-table-column min-width="150" :label="$t('common.operate')">
              <template slot-scope="scope">
              <template slot-scope="scope"
                ><el-button @click="showDetail(scope.row)" size="small"
                  >查看</el-button
                >
                <el-button
                  v-if="btnStatus.update"
                  @click="handleEdit(scope.$index, scope.row)"
                  type="warning"
                  size="small"
                  >{{ $t("common.update") }}</el-button
                >
                <el-button
                  v-if="btnStatus.delete"
                  @click="handleDelete(scope.$index, scope.row)"
                  type="danger"
                  size="small"
                  >{{ $t("common.delete") }}</el-button
                >
              </template>
            </el-table-column>
@@ -142,7 +144,7 @@
      <el-card class="box-card">
        <div slot="header" class="clearfix">
          <span>详细信息</span>
          <div style="float: right; cursor: pointer">
          <div style="float: right; cursor: pointer" @click="closeDetial">
            <i class="el-icon-close"></i>
          </div>
        </div>
@@ -225,7 +227,7 @@
        <el-button
          size="medium"
          type="primary"
          @click="sendEdit()"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.confirm") }}</el-button
        >
@@ -249,8 +251,8 @@
  getDomainTabs,
  getSingleTab,
  insertDomain,
  // deleteDomain,
  // updateDomain,
  deleteDomain,
  updateDomain,
} from "../../api/api";
import MyBread from "../../components/MyBread.vue";
export default {
@@ -266,7 +268,9 @@
      fullscreenLoading: false,
      itemdetail: {},
      editForm: {},
      queryForm: {},
      queryForm: {
        code: "",
      },
      insertform: {},
      initialForm: "",
@@ -340,16 +344,20 @@
        this.domainData[1].children = bsres;
      });
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    queryInfo() {
      alert("缺少查询条件接口");
      return;
      // let searchData = {
      //   name: this.queryForm.name.trim(),
      //   pageIndex: this.pageIndex,
      //   pageSize: this.pageSize,
      // };
      XXX(searchData).then((res) => {
      let searchData = {
        code: this.queryForm.code,
        ns: this.listData.ns,
        tab: this.listData.tab,
        pageIndex: this.listData.pageIndex,
        pageSize: this.listData.pageSize,
      };
      // console.log(searchData);
      getSingleTab(searchData).then((res) => {
        if (res.code == 200) {
          this.tableData = res.result;
          this.count = res.count;
@@ -368,6 +376,48 @@
      this.$bus.$emit("clearTressLabel", true);
      this.getAllTabelData();
    },
    // åˆ é™¤å¤šæ¡
    deleteInfo() {
      this.$confirm("确定是否删除所选内容?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          if (this.multipleSelection.length == 0) {
            alert("请选择要删除的对象");
            return;
          } else {
            var std = [];
            for (var i in this.multipleSelection) {
              std.push(this.multipleSelection[i].id);
            }
            deleteDomain({ ids: std.toString() }).then((res) => {
              console.log(res);
              if (res.code == 200) {
                this.$message({
                  type: "success",
                  message: "删除成功!",
                });
                this.multipleSelection = [];
                getSingleTab(this.listData).then((res) => {
                  setTimeout(() => {
                    this.tableData = res.result;
                    this.count = res.count;
                    this.fullscreenLoading = false;
                  }, 500);
                });
              } else {
                this.$message.error("删除失败");
                this.multipleSelection = [];
              }
            });
          }
        })
        .catch(() => {
          this.$message("已取消删除");
        });
    },
    showAddDialog() {
      this.behavior = "新增用户";
      this.editForm = {};
@@ -377,21 +427,26 @@
      this.editForm = {};
      this.$refs[formName].resetFields();
    },
    sendAdd() {
    sendAdd(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          return;
          console.log(this.editForm);
          // console.log(this.editForm);
          this.fullscreenLoading = true;
          insertDomain(this.editForm)
            .then((res) => {
              setTimeout(() => {
                this.fullscreenLoading = false;
                if (res.code == 200) {
                  this.getMetaData({ pageIndex: 1, pageSize: 10 });
                  this.$message({
                    message: "添加成功",
                    type: "success",
                  });
                  getSingleTab(this.listData).then((res) => {
                    setTimeout(() => {
                      this.tableData = res.result;
                      this.count = res.count;
                      this.fullscreenLoading = false;
                    }, 500);
                  });
                  this.editForm = {};
                  this.dialogFormVisible = false;
@@ -416,20 +471,73 @@
        })
        .catch((_) => {});
    },
    // æŸ¥çœ‹ç•Œé¢
    showDetail(row) {
      // console.log(index, row);
      this.showinfoBox = true;
      this.itemdetail = row;
    },
    // å…³é—­æŸ¥çœ‹
    closeDetial() {
      this.showinfoBox = false;
      this.itemdetail = {};
    },
    handleEdit(index, row) {
      this.dialogFormVisible = true;
      this.initialForm = JSON.stringify(row); //备份
      this.editForm = row;
      this.behavior = "属性修改";
      this.behavior = "修改信息";
    },
    editFromDataClose() {
      this.dialogFormVisible = false;
      this.editForm = {};
    },
    editFromData() {
      // this.editForm = {};
      console.log(this.editForm);
    // æäº¤ä¿®æ”¹
    sendEdit() {
      this.$confirm("是否确定编辑?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.dialogFormVisible = false;
          this.fullscreenLoading = true;
          updateDomain(this.editForm)
            .then((res) => {
              if (res.code == 200) {
                getSingleTab(this.listData).then((res) => {
                  setTimeout(() => {
                    this.tableData = res.result;
                    this.count = res.count;
                    this.fullscreenLoading = false;
                  }, 500);
                });
                this.$message({
                  message: "修改成功",
                  type: "success",
                });
                this.editForm = {};
              } else {
                alert("修改失败,请重试!");
                this.fullscreenLoading = false;
              }
            })
            .catch(() => {
              alert("修改失败,请重试!");
              this.fullscreenLoading = false;
            });
        })
        .catch(() => {
          alert("修改失败,请重试!");
          this.fullscreenLoading = false;
        });
    },
    handleDelete(index, row) {},
    cancelEdit() {
      this.$nextTick(() => {
        this.editForm = JSON.parse(this.initialForm);
      });
    },
    handleSizeChange(val) {
      this.listData.pageSize = val;
      // console.log(this.listData);
@@ -471,7 +579,7 @@
  .el-input {
    width: 300px !important;
  }
  .contentBox {
  .mainBox {
    display: flex;
    justify-content: space-between;
    .leftTree {
@@ -572,6 +680,8 @@
    }
    .contentBox {
      margin: 0 aotu 10px;
      height: 600px;
      overflow: auto;
      p {
        // background-color: #bfa;
        // margin-bottom: 10px;
src/views/datamanage/metadataManage.vue
@@ -648,7 +648,6 @@
  }
  .infoBox {
    width: 500px;
    border: 1px solid #eee;
    position: absolute;
    z-index: 100;