lxl
2022-10-27 f6ebd1820968db8521bed86d25b183efe7eb877b
src/views/datamanage/versionManage.vue
@@ -1,76 +1,111 @@
<template>
  <div class="authorityManagement_box">
    <My-bread :list="['数据管理', '版本管理']"></My-bread>
    <My-bread
      :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.versionManage')}`,
      ]"
    ></My-bread>
    <el-divider />
    <div class="searchComp">
      <el-form ref="ruleForm" :model="ruleForm" :inline="true">
        <el-form-item label="关键字" prop="name">
          <el-input v-model="ruleForm.name" placeholder="请输入" />
        <el-form-item :label="$t('dataManage.vmobj.keyword')" prop="name">
          <el-input
            v-model="ruleForm.name"
            :placeholder="$t('common.pleaseInput')"
          />
        </el-form-item>
        <el-form-item>
          <el-button
            @click="submitForm('ruleForm')"
            @click="onSubmit('ruleForm')"
            icon="el-icon-search"
            type="primary"
            size="small"
            >查询</el-button
            >{{ $t("common.iquery") }}</el-button
          >
          <!-- <el-button
          <el-button
            v-if="btnStatus.insert"
            @click="InsertFormdialog = true"
            icon="el-icon-plus"
            size="small"
            >{{ $t("common.append") }}</el-button
          >
          <el-button
            @click="resetForm('ruleForm')"
            icon="el-icon-refresh"
            type="info"
            icon="el-icon-delete"
            size="small"
            >重置</el-button
            >{{ $t("common.empty") }}</el-button
          >
          <span style="display:none">{{ pathId }}</span> -->
        </el-form-item>
      </el-form>
    </div>
    <div class="bottom">
      <div class="leftTree">
        <catalogueTree></catalogueTree>
        <ver-dir-tree></ver-dir-tree>
      </div>
      <div class="rightTable">
        <div class="table_box">
          <el-table
            :data="tableData"
            border
            style="width: 100%"
            fit
            height="99%"
          >
          <el-table :data="tableData" stripe style="width: 100%" height="99%">
            <!-- <el-table-column type="selection" width="40" /> -->
            <el-table-column width="50" type="index" label="序号" />
            <el-table-column min-width="130" prop="name" label="数据名称" />
            <el-table-column min-width="160" prop="path" label="所属目录" />
            <el-table-column
              min-width="100"
              prop="create_time"
              label="创建时间"
              align="center"
              type="index"
              :label="$t('dataManage.vmobj.index')"
              width="70px"
            />
            <el-table-column align="center" prop="id" v-if="false" />
            <el-table-column
              align="center"
              prop="name"
              :label="$t('dataManage.vmobj.name')"
            />
            <el-table-column
              min-width="50"
              prop="create_user"
              label="创建人员"
              align="center"
              prop="depName"
              :label="$t('dataManage.vmobj.catalogue')"
            />
            <el-table-column min-width="80" prop="up_unit" label="上传单位" />
            <el-table-column min-width="50" prop="status" label="数据状态" />
            <el-table-column min-width="50" prop="version" label="数据版本" />
            <el-table-column min-width="50" label="操作">
            <el-table-column
              align="center"
              prop="descr"
              :label="$t('dataManage.vmobj.describe')"
            />
            <el-table-column
              align="center"
              prop="createUser"
              :label="$t('dataManage.vmobj.createonuser')"
            />
            <el-table-column
              align="center"
              prop="createTime"
              :label="$t('dataManage.vmobj.createontime')"
              :formatter="formatTime"
            />
            <el-table-column
              align="center"
              prop="UpdateUser"
              :label="$t('dataManage.vmobj.updateonuser')"
            />
            <el-table-column
              align="center"
              prop="updateTime"
              :label="$t('dataManage.vmobj.updateontime')"
              :formatter="formatTime"
            />
            <el-table-column min-width="150" :label="$t('common.operate')">
              <template slot-scope="scope">
                <!-- <el-link @click="showDetail(scope.$index, scope.row)"
                  >查看</el-link
                > -->
                <el-link
                <el-button
                  v-if="btnStatus.update"
                  @click="handleEdit(scope.$index, scope.row)"
                  style="margin-left: 10px"
                  >修改</el-link
                  type="warning"
                  size="small"
                  >{{ $t("common.update") }}</el-button
                >
                <!-- <el-link
                <el-button
                  v-if="btnStatus.delete"
                  @click="handleDelete(scope.$index, scope.row)"
                  style="margin-left: 10px"
                  >删除</el-link
                > -->
                  type="danger"
                  size="small"
                  >{{ $t("common.delete") }}</el-button
                >
              </template>
            </el-table-column>
          </el-table>
@@ -82,9 +117,9 @@
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="10"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 30, 40]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
@@ -96,7 +131,7 @@
      <el-card class="box-card">
        <div slot="header" class="clearfix">
          <span>详细信息</span>
          <div style="float: right; cursor: pointer" @click="closeDetial">
          <div style="float: right; cursor: pointer">
            <i class="el-icon-close"></i>
          </div>
        </div>
@@ -117,101 +152,150 @@
        </div>
      </el-card>
    </div>
    <el-dialog title="修改详情" :visible.sync="dialogFormVisible">
    <el-dialog
      :title="$t('dataManage.vmobj.editVersion')"
      :visible.sync="dialogFormVisible"
    >
      <el-form :model="upform">
        <el-form-item label="数据名称" :label-width="formLabelWidth">
        <el-form-item
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.catalogue')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="upform.name"
            v-model="upform.depName"
            autocomplete="off"
            disabled
          ></el-input>
          <el-button style="margin-left: 20px" @click="showVerTree(2)">{{
            $t("common.choose")
          }}</el-button>
        </el-form-item>
        <el-form-item label="所属目录" :label-width="formLabelWidth">
          <el-input
            v-model="upform.path"
            autocomplete="off"
            disabled
          ></el-input>
        </el-form-item>
        <el-form-item label="创建时间" :label-width="formLabelWidth">
          <el-date-picker
            v-model="upform.create_time"
            value-format="yyyy-MM-dd"
            type="date"
            placeholder="选择日期"
            style="width: 100%"
            disabled
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="创建人员" :label-width="formLabelWidth">
          <el-input
            v-model="upform.create_user"
            autocomplete="off"
            disabled
          ></el-input>
        </el-form-item>
        <el-form-item label="上传单位" :label-width="formLabelWidth">
          <el-input
            v-model="upform.up_unit"
            autocomplete="off"
            disabled
          ></el-input>
        </el-form-item>
        <el-form-item label="数据状态" :label-width="formLabelWidth">
          <el-input
            v-model="upform.status"
            autocomplete="off"
            disabled
          ></el-input>
        </el-form-item>
        <el-form-item label="数据版本" :label-width="formLabelWidth">
          <el-input v-model="upform.version" autocomplete="off"></el-input>
        <el-form-item
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.descr" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="updateForm">确 定</el-button>
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button @click="editFromDataClose">{{
          $t("common.close")
        }}</el-button>
        <el-button @click="editFromData" type="primary">{{
          $t("common.confirm")
        }}</el-button>
      </div>
    </el-dialog>
    <el-dialog
      :title="$t('dataManage.vmobj.addVersion')"
      :visible.sync="InsertFormdialog"
    >
      <el-form :model="insertform">
        <el-form-item
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="insertform.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.catalogue')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="insertform.path"
            autocomplete="off"
            disabled
          ></el-input>
          <el-button style="margin-left: 20px" @click="showVerTree(3)">{{
            $t("common.choose")
          }}</el-button>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="insertform.descr" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="insertFromDataClose">{{
          $t("common.close")
        }}</el-button>
        <el-button @click="insertFromData" type="primary">{{
          $t("common.confirm")
        }}</el-button>
      </div>
    </el-dialog>
    <div class="leftTrees" v-if="showCata">
      <div class="treeBox">
        <ver-dir-trees></ver-dir-trees>
      </div>
      <div class="btnBox">
        <el-button type="primary" size="small" @click="selectCataName">{{
          $t("common.confirm")
        }}</el-button>
        <el-button type="primary" size="small" @click="showCata = false">{{
          $t("common.close")
        }}</el-button>
      </div>
    </div>
  </div>
</template>
<script>
import {
  queryMetaData,
  queryDataCount,
  updateMetaData,
  dltMetaDatas,
  select_Ver_ByPageAndCount,
  insertVersion,
  deleteVersion,
  updateVersion,
} from "../../api/api";
import catalogueTree from "../../components/catalogueTree.vue";
import verDirTree from "./verDirTree.vue";
import MyBread from "../../components/MyBread.vue";
import verDirTrees from "./verDirTrees.vue";
import moment from "moment";
export default {
  name: "versionManage",
  components: { MyBread, catalogueTree },
  components: { MyBread, verDirTree, verDirTrees },
  data() {
    return {
      multipleSelection: [],
      formLabelWidth: "120px",
      showCata: false,
      formLabelWidth: "100px",
      dialogFormVisible: false,
      upform: {},
      InsertFormdialog: false,
      showinfoBox: false,
      itemdetail: {},
      ruleForm: {
        name: "",
      },
      count: 0,
      pageSize: 10,
      pageNum: 1,
      nowPid: -1,
      upform: {},
      ruleForm: {},
      insertform: {},
      tableData: [],
      currentPage: 1,
      searchName: "",
      count: 0,
      rowFlag: null,
      listData: {
        name: null,
        depName: null,
        pageIndex: 1,
        pageSize: 10,
      },
      btnStatus: {
        select: false,
        delete: false,
        upload: false,
        download: false,
        insert: false,
        update: false,
      },
    };
  },
  created() {
    this.getMetaData(10, 1, "", -1);
    this.getMetaCount("", -1);
    this.getRoleTabelData();
    this.showPermsBtn();
  },
  computed: {
    pathId() {
@@ -219,140 +303,147 @@
    },
  },
  methods: {
    // 请求数据内容
    getMetaData(size, num, name, pid) {
      queryMetaData(size, num, name, pid).then((res) => {
        this.tableData = res.data;
      });
    showPermsBtn() {
      let currentPerms = this.$store.state.currentPerms;
      let permsEntity = this.$store.state.permsEntity;
      permsEntity
        .filter((item) => item.perms == currentPerms)
        .map((item) => (this.btnStatus[item.tag.substr(1)] = true));
    },
    // 请求数据数量
    getMetaCount(name, pid) {
      queryDataCount(name, pid).then((res) => {
        this.count = res.data;
      });
    resetForm() {
      this.ruleForm = {};
      this.$store.state.verCateNode = {};
      this.$bus.$emit("clearTressLabel", true);
      this.getRoleTabelData();
    },
    // 关键字查询
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          this.searchName = this.ruleForm.name.trim();
          this.getMetaData(10, 1, this.searchName);
          this.getMetaCount(this.searchName);
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    onSubmit() {
      this.getRoleTabelData();
    },
    // 重置查询
    resetForm(formName) {
      this.getMetaData(10, 1, "", -1);
      this.getMetaCount("");
      this.searchName = "";
      this.$refs[formName].resetFields();
    async getRoleTabelData() {
      if (this.listData.tab == "") {
        delete this.listData.tab;
      }
      this.listData.name = this.ruleForm.name;
      this.listData.depName = this.$store.state.verCateNode.name;
      const data = await select_Ver_ByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error("列表调用失败");
      }
      this.tableData = data.result;
      this.count = data.count;
    },
    // 获取多选选中的对象
    handleSelectionChange(val) {
      this.multipleSelection = val;
      console.log(val);
    handleSizeChange(val) {
      this.listData.pageSize = val;
      this.getRoleTabelData();
    },
    // 查看界面
    showDetail(index, row) {
      // console.log(index, row);
      this.showinfoBox = true;
      this.itemdetail = row;
    handleCurrentChange(val) {
      this.listData.pageIndex = val;
      this.getRoleTabelData();
    },
    // 关闭查看
    closeDetial() {
      this.showinfoBox = false;
      this.itemdetail = {};
    showVerTree(res) {
      this.showCata = true;
      this.rowFlag = res;
    },
    // 修改界面
    selectCataName() {
      this.showCata = false;
      if (this.rowFlag == 3) {
        this.insertform.path = this.$store.state.verCateNodes.name;
        this.insertform.dirid = this.$store.state.verCateNodes.id;
      } else if (this.rowFlag == 2) {
        this.upform.depName = this.$store.state.verCateNodes.name;
        this.upform.dirid = this.$store.state.verCateNodes.id;
      }
    },
    editFromDataClose() {
      this.dialogFormVisible = false;
      this.upform = {};
    },
    async editFromData() {
      if (this.upform.depName == null) {
        this.$message({
          message: "请选择角色所属单位",
          type: "warning",
        });
        return;
      }
      const data = await updateVersion(this.upform);
      if (data.code == 200) {
        this.dialogFormVisible = false;
        this.upform = {};
        this.$message({
          message: "修改成功!",
          type: "success",
        });
        this.getRoleTabelData();
      } else {
        this.$message({
          message: "修改失败!",
          type: "warning",
        });
      }
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
    },
    async insertFromData() {
      if (this.insertform.dirid == null) {
        this.$message({
          message: "请选择角色所属单位",
          type: "warning",
        });
        return;
      }
      const data = await insertVersion(this.insertform);
      if (data.code == 200) {
        this.InsertFormdialog = false;
        this.insertform = {};
        this.$message({
          message: "添加成功!",
          type: "success",
        });
        this.getRoleTabelData();
      } else {
        this.$message({
          message: "添加失败!",
          type: "warning",
        });
      }
    },
    formatTime(row, column) {
      let date = row[column.property];
      if (date === undefined || date === null) {
        return "";
      }
      return moment(parseInt(date)).format("YYYY-MM-DD HH:mm:ss");
    },
    async handleDelete(index, row) {
      const data = await deleteVersion(row.id);
      if (data.code == 200) {
        this.InsertFormdialog = false;
        this.$message({
          message: "删除成功!",
          type: "success",
        });
        this.getRoleTabelData();
      } else {
        this.$message({
          message: "删除失败!",
          type: "warning",
        });
      }
    },
    handleEdit(index, row) {
      this.dialogFormVisible = true;
      this.upform = JSON.parse(JSON.stringify(row));
    },
    // 提交修改
    updateForm() {
      this.$confirm("是否确定编辑?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.dialogFormVisible = false;
          updateMetaData(this.upform).then((res) => {
            if (res.data == 1) {
              this.$message({
                message: "修改成功",
                type: "success",
              });
            }
            this.getMetaData(10, 1);
          });
        })
        .catch(() => {});
    },
    // 删除
    handleDelete(index, row) {
      // console.log(index, row);
      this.$confirm("确定是否删除?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          dltMetaDatas({ id: row.id }).then((res) => {
            if (res.data == 1) {
              this.$message({
                type: "success",
                message: "删除成功!",
              });
              this.getMetaData(10, 1, "");
              this.getMetaCount("");
            }
          });
          // 多选删除
          // if (this.multipleSelection.length > 1) {
          //   let ids = "";
          //   this.multipleSelection.forEach((e) => {
          //     ids += `id=${e.id}&`;
          //   });
          //   let res = ids.substring(0, ids.length - 1);
          //   dltMetaDatas(res).then((res) => {
          //     console.log(res);
          //   });
          // }
        })
        .catch(() => {});
    },
    // 条数修改
    handleSizeChange(val) {
      this.pageSize = val;
      this.getMetaData(this.pageSize, 1, this.searchName, this.nowPid);
      this.getMetaCount(this.searchName, this.nowPid);
    },
    // 页数修改
    handleCurrentChange(val) {
      this.pageNum = val;
      this.getMetaData(
        this.pageSize,
        this.pageNum,
        this.searchName,
        this.nowPid
      );
      this.getMetaCount(this.searchName, this.nowPid);
      this.upform = row;
    },
  },
  watch: {
    pathId: {
      immediate: true,
      handler(val) {
        if (val) this.nowPid = val;
        this.getMetaData(10, 1, "", this.nowPid);
        this.getMetaCount("", this.nowPid);
      },
      handler(val) {},
    },
  },
};
@@ -365,6 +456,31 @@
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  .el-input {
    width: 300px !important;
  }
  .leftTrees {
    position: absolute;
    z-index: 9999;
    top: 9%;
    left: 37%;
    width: 400px;
    height: 600px;
    background: #f0f2f5;
    border: 1px solid #000;
    .treeBox {
      height: 550px;
      overflow: auto;
      /deep/ .el-tree-node__content:hover {
        background-color: rgb(153, 153, 153);
      }
    }
    .btnBox {
      width: 123px;
      margin: 10px auto 0;
      // background-color: red;
    }
  }
  .searchComp {
    margin: 10px auto;
    background: #fff;
@@ -372,9 +488,6 @@
    border: 1px solid rgb(202, 201, 204);
    .el-form-item {
      margin: 5px;
    }
    .el-input {
      width: 467px;
    }
  }
  .bottom {
@@ -397,43 +510,43 @@
        margin: 0 auto;
        overflow: auto;
        background: #fff;
        .el-table {
          height: 100%;
        }
        .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 {
        //   height: 100%;
        // }
        // .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 /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,
@@ -474,7 +587,7 @@
    }
  }
  /deep/ .el-dialog {
    width: 500px !important;
    width: 620px !important;
    margin-top: 10vh !important;
  }
@@ -486,7 +599,7 @@
  }
  /deep/ .el-dialog__footer {
    padding-top: 0 !important;
    width: 200px;
    width: 600px;
    display: flex;
    margin: 0 auto;
    justify-content: center;