管道基础大数据平台系统开发-【前端】-新系統界面
src/views/datamanage/domainManage.vue
@@ -1,66 +1,102 @@
<template>
  <div class="authorityManagement_box">
    <My-bread :list="[`${$t('dataManage.dataManage')}`, `值域管理`]"></My-bread>
  <div class="domainBox">
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.rangeManage')}`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
      <div class="leftTree">
        <el-tree
          :data="domainData"
          :props="defaultProps"
          :default-expand-all="true"
          @node-click="toggleTabs"
        ></el-tree>
      <div
        class="leftTree subpage_Div"
        style="border: 1px solid #dcdfe6;"
      >
        <el-input
          size="small"
          v-model="filterInput"
          style="width: 200px"
          :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
          suffix-icon="el-icon-search"
        ></el-input>
        <div style="width: 450px">
          <el-tree
            :data="domainData"
            :props="defaultProps"
            :default-expand-all="true"
            @node-click="toggleTabs"
            :filter-node-method="filterNode"
            ref="tree"
          ></el-tree>
        </div>
      </div>
      <div class="right">
      <div class="right subpage_Div">
        <div class="inquire">
          <el-form ref="queryForm" :model="queryForm" :inline="true">
            <el-form-item :label="$t('dataManage.vmobj.keyword')" prop="name">
          <el-form
            ref="queryForm"
            :model="queryForm"
            :inline="true"
          >
            <el-form-item
              :label="$t('dataManage.vmobj.keyword')"
              prop="name"
            >
              <el-input
                size="small"
                v-model="queryForm.code"
                :placeholder="$t('common.pleaseInput')"
              />
                :placeholder="$t('shuJuGuanLi.lable4')"
                style="width: 200px"
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="queryInfo('queryForm')"
                  style="padding-right: 8px"
                ></i></el-input>
            </el-form-item>
            <el-form-item>
              <el-button
                @click="queryInfo('queryForm')"
                icon="el-icon-search"
                size="small"
                >{{ $t("common.iquery") }}</el-button
              >
              <el-button
                @click="resetInfo('queryForm')"
                icon="el-icon-delete"
                size="small"
                >{{ $t("common.empty") }}</el-button
              >
            <el-form-item style="float: right">
              <el-button
                v-if="btnStatus.insert"
                @click="showAddDialog"
                icon="el-icon-plus"
                size="small"
                >{{ $t("common.append") }}</el-button
              >
                type="success"
              >{{ $t("common.append") }}</el-button>
              <el-button
                v-if="btnStatus.delete"
                @click="deleteInfo"
                type="danger"
                size="small"
                icon="el-icon-delete"
                >{{ $t("common.delete") }}</el-button
              >
              >{{ $t("common.delete") }}</el-button>
              <!--              <el-button
                @click="queryInfo('queryForm')"
                icon="el-icon-search"
                size="small"
                class="primary"
                >{{ $t("common.iquery") }}</el-button
              >-->
              <el-button
                @click="resetInfo('queryForm')"
                icon="el-icon-delete"
                size="small"
                type="info"
              >{{ $t("common.empty") }}</el-button>
            </el-form-item>
          </el-form>
        </div>
        <div class="table_box">
        <div class="dividing-line"></div>
        <div
          class="table_box"
          style="height: calc(100% - 60px)"
        >
          <el-table
            :data="tableData"
            border
            style="width: 100%"
            fit
            @selection-change="handleSelectionChange"
            height="99%"
            border
            height="calc(100% - 57px)"
          >
            <el-table-column type="selection" width="50" />
            <el-table-column
              type="selection"
              width="50"
            />
            <el-table-column
              align="center"
              type="index"
@@ -87,11 +123,11 @@
              prop="codeDesc"
              :label="$t('dataManage.domainManage.codeDesc')"
            />
            <el-table-column
            <!-- <el-table-column
              align="center"
              prop="bsm"
              :label="$t('dataManage.domainManage.bsm')"
            />
            /> -->
            <el-table-column
              align="center"
              prop="level"
@@ -108,139 +144,250 @@
              :label="$t('dataManage.domainManage.bak')"
            />
            <el-table-column min-width="150" :label="$t('common.operate')">
              <template slot-scope="scope"
                ><el-button @click="showDetail(scope.row)" size="small"
                  >查看</el-button
                >
            <el-table-column
              min-width="150"
              :label="$t('common.operate')"
            >
              <template slot-scope="scope">
                <el-button
                  @click="showDetail(scope.row)"
                  type="primary"
                  size="small"
                  plain
                >{{ $t("common.details") }}</el-button>
                <el-button
                  v-if="btnStatus.update"
                  type="warning"
                  @click="handleEdit(scope.$index, scope.row)"
                  size="small"
                  >{{ $t("common.update") }}</el-button
                >
                  plain
                >{{ $t("common.update") }}</el-button>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div
          class="pagination_box"
          style="margin-top: 20px; margin-left: 200px"
        >
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 30, 40]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          <div
            class="pagination_box"
            style="margin-top: 15px"
          >
          </el-pagination>
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="listData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count"
            >
            </el-pagination>
          </div>
        </div>
      </div>
    </div>
    <div class="infoBox" v-show="showinfoBox">
      <el-card class="box-card">
        <div slot="header" class="clearfix">
          <span>详细信息</span>
          <div style="float: right; cursor: pointer" @click="closeDetial">
    <div
      class="infoBox_box"
      v-show="showinfoBox"
    >
      <div class="infoBox subpage_Div box_div">
        <div
          slot="header"
          class="clearfix"
        >
          <span>{{ $t("common.details") }}</span>
          <div
            style="float: right; cursor: pointer"
            @click="closeDetial"
          >
            <i class="el-icon-close"></i>
          </div>
        </div>
        <el-divider></el-divider>
        <div class="contentBox">
          <p>数据名称:{{ itemdetail.domName }}</p>
          <p>
            {{ $t("dataManage.domainManage.domName") }}:{{
              itemdetail.domName
            }}
          </p>
          <el-divider></el-divider>
          <p>所属目录:{{ itemdetail.path }}</p>
          <p>
            {{ $t("dataManage.domainManage.domDesc") }}:{{
              itemdetail.domDesc
            }}
          </p>
          <el-divider></el-divider>
          <p>创建时间:{{ itemdetail.create_time }}</p>
          <p>
            {{ $t("dataManage.domainManage.domCode") }}:{{
              itemdetail.domCode
            }}
          </p>
          <el-divider></el-divider>
          <p>创建人员:{{ itemdetail.create_user }}</p>
          <p>
            {{ $t("dataManage.domainManage.codeDesc") }}:{{
              itemdetail.codeDesc
            }}
          </p>
          <el-divider></el-divider>
          <p>上传单位:{{ itemdetail.up_unit }}</p>
          <p>{{ $t("dataManage.domainManage.bsm") }}:{{ itemdetail.bsm }}</p>
          <el-divider></el-divider>
          <p>数据状态:{{ itemdetail.status }}</p>
          <p>
            {{ $t("dataManage.domainManage.level") }}:{{ itemdetail.level }}
          </p>
          <el-divider></el-divider>
          <p>数据版本:{{ itemdetail.version }}</p>
          <p>
            {{ $t("dataManage.domainManage.orderid") }}:{{
              itemdetail.orderid
            }}
          </p>
          <el-divider></el-divider>
          <p>{{ $t("dataManage.domainManage.bak") }}:{{ itemdetail.bak }}</p>
        </div>
      </el-card>
      </div>
    </div>
    <el-dialog
      width="510px"
      top="5vh"
      :title="behavior"
      top="2vh"
      :title="
        behavior == '新增用户'
          ? `${$t('common.append')}`
          : `${$t('common.update')}`
      "
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <el-form :model="editForm" ref="editForm">
        <el-form-item
          :label="$t('dataManage.domainManage.domName')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="editForm"
          ref="editForm"
          label-position="top"
        >
          <el-input v-model="editForm.domName" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.domDesc')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.domDesc" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.domCode')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.domCode" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.codeDesc')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.codeDesc" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.bsm')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.bsm" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.level')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.level" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.orderid')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.orderid" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.bak')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.bak" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer">
        <el-button @click="cancelEdit()">重置</el-button>
          <el-form-item
            :label="$t('dataManage.domainManage.domName')"
            :label-width="formLabelWidth"
          >
            <el-select
              :popper-append-to-body="false"
              style="width:85%"
              v-model="editForm.domName"
              placeholder="请选择"
            >
              <el-option
                v-for="item in domainOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
            <!-- <el-input v-model="editForm.domName" autocomplete="off"></el-input> -->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.domDesc')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.domDesc"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.domCode')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.domCode"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.codeDesc')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.codeDesc"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.bsm')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.bsm"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.level')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.level"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.orderid')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.orderid"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.bak')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.bak"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
        v-if="behavior == '修改信息'"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="medium"
          type="primary"
          size="small"
          @click="cancelEdit()"
        >{{
          $t("common.reset")
        }}</el-button>
        <el-button
          size="small"
          class="primary"
          type="info"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.confirm") }}</el-button
        >
        >{{ $t("common.confirm") }}</el-button>
      </div>
      <div v-else slot="footer" class="dialog-footer">
        <el-button @click="cancelAdd('editForm')">重置</el-button>
      <div
        v-else
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="medium"
          type="primary"
          type="info"
          size="small"
          @click="cancelAdd('editForm')"
        >{{
          $t("common.reset")
        }}</el-button>
        <el-button
          size="small"
          class="primary"
          @click="sendAdd('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.confirm") }}</el-button
        >
        >{{ $t("common.confirm") }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -253,6 +400,7 @@
  insertDomain,
  deleteDomain,
  updateDomain,
  domain_selectDomainNames,
} from "../../api/api";
import MyBread from "../../components/MyBread.vue";
export default {
@@ -260,6 +408,8 @@
  components: { MyBread },
  data() {
    return {
      filterInput: "",
      domainOptions: [],
      multipleSelection: [],
      behavior: "",
      formLabelWidth: "100px",
@@ -267,7 +417,9 @@
      showinfoBox: false,
      fullscreenLoading: false,
      itemdetail: {},
      editForm: {},
      editForm: {
        domName: "",
      },
      queryForm: {
        code: "",
      },
@@ -292,18 +444,11 @@
        update: false,
      },
      domainData: [
        {
          tabDesc: "基础数据",
          children: [],
        },
        {
          tabDesc: "业务数据",
          children: [],
        },
      ],
      defaultProps: {
        children: "children",
        label: "tabDesc",
        label: "val",
      },
    };
  },
@@ -316,16 +461,47 @@
      return this.$store.state.cataNode.id;
    },
  },
  methods: {
    toggleTabs(data) {
    filterNode(value, data) {
      if (!value) return true;
      return data.val.indexOf(value) !== -1;
    },
    async toggleTabs(data) {
      if (data.children != null) {
        return
      }
      this.fullscreenLoading = true;
      this.listData.ns = data.ns;
      this.listData.tab = data.tab;
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      const res = await domain_selectDomainNames(data);
      if (res.code != 200) {
        this.$message.error("domain调用失败");
      }
      var std = [];
      for (var i = 0; i < res.result.length; i++) {
        std.push({
          value: res.result[i],
          label: res.result[i],
        });
      }
      this.domainOptions = std;
      this.editForm.domName = res.result[0];
      getSingleTab(this.listData).then((res) => {
        setTimeout(() => {
          this.tableData = res.result;
          this.count = res.count;
          this.fullscreenLoading = false;
          if (res.code == 200) {
            this.tableData = res.result;
            this.count = res.count;
            this.fullscreenLoading = false;
          } else {
            this.tableData = [];
            this.count = 0;
            this.fullscreenLoading = false;
          }
        }, 500);
      });
    },
@@ -338,10 +514,27 @@
    },
    getAllTabelData() {
      getDomainTabs().then((res) => {
        let bdres = res.result.filter((item) => item.ns == "bd");
        let bsres = res.result.filter((item) => item.ns == "bs");
        this.domainData[0].children = bdres;
        this.domainData[1].children = bsres;
        var val = res.result;
        var std = [];
        val.filter((item) => {
          if (std.indexOf(item.bak) == -1) {
            std.push(item.bak);
            this.domainData.push(
              {
                val: item.bak,
                children: [],
              }
            )
          }
        });
        this.domainData.filter((item) => {
          val.filter((res) => {
            if (item.val === res.bak) {
              res.val = res.tabDesc
              item.children.push(res)
            }
          })
        })
      });
    },
    handleSelectionChange(val) {
@@ -350,7 +543,7 @@
    queryInfo() {
      let searchData = {
        code: this.queryForm.code,
        name: this.queryForm.code,
        ns: this.listData.ns,
        tab: this.listData.tab,
        pageIndex: this.listData.pageIndex,
@@ -362,7 +555,6 @@
          this.tableData = res.result;
          this.count = res.count;
        } else {
          console.log("查询接口报错");
          this.$notify.error({
            title: res.code,
            message: res.result,
@@ -374,7 +566,9 @@
      this.queryForm = {};
      this.$store.state.verCateNode = {};
      this.$bus.$emit("clearTressLabel", true);
      this.getAllTabelData();
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.queryInfo();
    },
    // 删除多条
    deleteInfo() {
@@ -430,8 +624,8 @@
    sendAdd(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // console.log(this.editForm);
          this.fullscreenLoading = true;
          insertDomain(this.editForm)
            .then((res) => {
              setTimeout(() => {
@@ -454,7 +648,7 @@
              }, 500);
            })
            .catch((res) => {
              alert("修改失败,请重试!");
              alert("添加失败,请重试!");
              this.fullscreenLoading = false;
            });
        } else {
@@ -469,7 +663,7 @@
          this.editForm = {};
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    // 查看界面
    showDetail(row) {
@@ -563,149 +757,53 @@
  watch: {
    pathId: {
      immediate: true,
      handler(val) {},
      handler(val) { },
    },
    filterInput(val) {
      this.$refs.tree.filter(val);
    },
  },
};
</script>
<style lang="less" scoped>
//@import url(); 引入公共css类
.authorityManagement_box {
  background: rgb(240, 242, 245);
  border-radius: 10px;
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  .el-input {
    width: 300px !important;
  }
// @import url(); 引入公共css类
.domainBox {
  height: 98%;
  width: 98%;
  padding: 0.5%;
  .mainBox {
    padding-top: 10px;
    width: 100%;
    height: calc(100% - 75px);
    display: flex;
    justify-content: space-between;
    justify-content: space-around;
    .leftTree {
      width: 15%;
      height: 90vh;
      border-radius: 10px;
      overflow: auto;
      width: calc(23% - 0px);
      height: 100%;
      border-radius: 5px;
      padding: 10px;
      box-sizing: border-box;
      overflow-y: auto;
    }
    .right {
      width: 84%;
      height: 92vh;
      // background-color: #bfa;
      width: 75%;
      height: 100%;
      border-radius: 5px;
      padding: 0 10px;
      box-sizing: border-box;
      border: 1px solid #dcdfe6;
      .inquire {
        margin-bottom: 10px;
        background: #fff;
        padding: 8px;
        // margin-top: 10px;
        border-radius: 5px;
        border: 1px solid rgb(202, 201, 204);
        //border: 1px solid #dcdfe6;
        //margin-bottom: 20px;
        .el-form-item {
          margin: 5px;
        }
      }
      .table_box {
        width: 100%;
        height: 90%;
        margin: 0 auto;
        overflow: auto;
        background: #fff;
        // .el-table {
        //   height: 100%;
        // }
        .el-table /deep/ th.el-table__cell > .cell {
          padding: 15px !important;
        }
        // .el-table /deep/ .el-table__header-wrapper tr th {
        //   background-color: rgb(255, 255, 255) !important;
        //   color: rgb(0, 0, 0);
        // }
        // // 修改每行样式:
        // .el-table /deep/ .el-table__row {
        //   background-color: rgba(255, 255, 255) !important;
        //   color: rgb(0, 0, 0);
        // }
        // .el-table /deep/ .el-table__body tr.current-row > td {
        //   background-color: rgb(211, 211, 211) !important;
        // }
        // .el-table /deep/ .el-table__body tr:hover > td {
        //   background-color: rgb(211, 211, 211) !important;
        // }
        // // 修改表格每行边框的样式:
        // .el-table /deep/ td,
        // .el-table /deep/ th.is-leaf {
        //   border-bottom: 1px solid #eee;
        //   border-right: 1px solid #eee;
        // }
        // .el-table /deep/ .el-table__cell {
        //   padding: 0;
        // }
        // 设置表格每行的高度:
        // .el-table /deep/ .el-table__header tr,
        // .el-table /deep/ .el-table__header th {
        //   height: 40px;
        // }
        // .el-table__body tr,
        // .el-table__body td {
        //   height: 40px;
        //   padding: 0;
        // }
        // 设置表格边框颜色:
        .el-table--border::after,
        .el-table--group::after {
          width: 0;
        }
        .el-table::before {
          height: 0;
        }
        //   a {
        //     color: #000;
        //   }
      }
    }
  }
  .infoBox {
    width: 500px;
    border: 1px solid #eee;
    position: absolute;
    z-index: 100;
    top: 15%;
    right: 25%;
    background-color: #fff;
    .el-card {
      background-color: transparent;
      span {
        font-size: 16px;
        font-weight: 600;
      }
    }
    .contentBox {
      margin: 0 aotu 10px;
      height: 600px;
      overflow: auto;
      p {
        // background-color: #bfa;
        // margin-bottom: 10px;
        font-size: 14px;
      }
    }
  }
  /deep/ .el-dialog {
    width: 620px !important;
    margin-top: 10vh !important;
  }
  /deep/.el-dialog .el-input__inner {
    width: 300px;
  }
  /deep/ .el-dialog__body {
    padding: 0px 30px;
  }
  /deep/ .el-dialog__footer {
    padding-top: 0 !important;
    width: 600px;
    display: flex;
    margin: 0 auto;
    justify-content: center;
  }
}
</style>