管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-05-27 0af4ecb9b2047b8ba6d00e891050cf2d68b829a6
src/views/Archive/dataApplication.vue
@@ -1,100 +1,117 @@
<template>
  <div class="logLog_box">
  <div class="logLog_box box_div">
    <My-bread :list="[
        `${$t('synthesis.synthesis')}`,
        `${$t('synthesis.dataApplication')}`,
      ]"></My-bread>
    <el-divider />
    <div class="inquire">
    <div
      class="inquire subpage_Div"
      ref="container"
    >
      <el-form
        :inline="true"
        ref="sizeForm"
        :model="sizeForm"
      >
        <el-form-item
          prop="uname"
          :label="$t('operatManage.operationLogObj.username')"
        >
          <el-input
            v-model="sizeForm.uname"
            :placeholder="$t('operatManage.operationLogObj.pleaseInput')"
          />
        </el-form-item>
        <el-form-item
          prop="status"
          :label="$t('operatManage.operationLogObj.status')"
        >
          <el-select
            v-model="sizeForm.status"
            :placeholder="$t('operatManage.operationLogObj.pleaseSelect')"
          >
            <el-option
              :label="$t('dataApply.type1')"
              value="-10"
            />
            <el-option
              :label="$t('dataApply.type2')"
              value="-1"
            />
            <el-option
              :label="$t('dataApply.type3')"
              value="0"
            />
            <el-option
              :label="$t('dataApply.type4')"
              value="-9"
            />
          </el-select>
        </el-form-item>
        <el-form-item
          prop="start"
          :label="$t('operatManage.operationLogObj.startTime')"
        >
          <el-date-picker
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            v-model="sizeForm.start"
            style="width: 100%"
            type="datetime"
            :placeholder="$t('operatManage.operationLogObj.optionDate')"
          ></el-date-picker>
        </el-form-item>
        <el-form-item
          prop="end"
          :label="$t('operatManage.operationLogObj.endTime')"
        >
          <el-date-picker
            format="yyyy-MM-dd HH:mm:ss"
            value-format="yyyy-MM-dd HH:mm:ss"
            v-model="sizeForm.end"
            style="width: 100%"
            type="datetime"
            :placeholder="$t('operatManage.operationLogObj.optionDate')"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item>
          <el-button
            @click="onSubmit"
            icon="el-icon-search"
            style="background: #409eff; border: 1px solid #409eff; color: white"
          >{{ $t("operatManage.operationLogObj.inquire") }}</el-button>
          <el-button
            @click="resAllTable"
            icon="el-icon-delete"
            type="info"
          >{{ $t("operatManage.operationLogObj.empty") }}</el-button>
        </el-form-item>
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item
              prop="uname"
              :label="$t('operatManage.operationLogObj.username')"
            >
              <el-input
                size="small"
                v-model="sizeForm.uname"
                :placeholder="$t('operatManage.operationLogObj.pleaseInput')"
              />
            </el-form-item>
            <el-form-item
              prop="status"
              :label="$t('operatManage.operationLogObj.status')"
            >
              <el-select
                size="small"
                v-model="sizeForm.status"
                :placeholder="$t('operatManage.operationLogObj.pleaseSelect')"
              >
                <el-option
                  :label="$t('dataApply.type1')"
                  value="-10"
                />
                <el-option
                  :label="$t('dataApply.type2')"
                  value="-1"
                />
                <el-option
                  :label="$t('dataApply.type3')"
                  value="0"
                />
                <el-option
                  :label="$t('dataApply.type4')"
                  value="-9"
                />
              </el-select>
            </el-form-item>
            <el-form-item
              prop="start"
              :label="$t('operatManage.operationLogObj.startTime')"
            >
              <el-date-picker
                size="small"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                v-model="sizeForm.start"
                style="width: 100%"
                type="datetime"
                :placeholder="$t('operatManage.operationLogObj.optionDate')"
              ></el-date-picker>
            </el-form-item>
            <el-form-item
              prop="end"
              :label="$t('operatManage.operationLogObj.endTime')"
            >
              <el-date-picker
                size="small"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                v-model="sizeForm.end"
                style="width: 100%"
                type="datetime"
                :placeholder="$t('operatManage.operationLogObj.optionDate')"
              >
              </el-date-picker>
            </el-form-item>
          </div>
          <div>
            <el-form-item>
              <el-button
                @click="onSubmit"
                icon="el-icon-search"
                size="small"
                type="primary"
              >{{ $t("operatManage.operationLogObj.inquire") }}</el-button>
              <el-button
                size="small"
                @click="resAllTable"
                icon="el-icon-delete"
                type="info"
              >{{ $t("operatManage.operationLogObj.empty") }}</el-button>
            </el-form-item>
          </div>
        </div>
      </el-form>
    </div>
    <div class="table_box">
    <div
      class="table_box subpage_Div"
      :style="styleVar"
    >
      <el-table
        :data="tableData"
        style="width: 100%"
        height="85%"
        border
        height="calc(100% - 20px)"
      >
        <el-table-column
          align="center"
          type="index"
@@ -131,40 +148,43 @@
          :label="$t('common.operate')"
        >
          <template slot-scope="scope">
            <el-button
              type="danger"
              size="mini"
              v-if="matchState(scope,/[]/)"
              @click="handleApplyCancel(scope.$index, scope.row)"
              v-if="matchState(scope, /[]/)"
              plain
            >{{$t('dataApply.type1')}}</el-button>
            >{{ $t("dataApply.ApplicationCancel") }}</el-button>
            <el-button
              type="warning"
              size="mini"
              v-if="matchState1(scope,/[]/)"
              @click="handleReApply(scope.$index, scope.row)"
              v-if="matchState1(scope, /[]/)"
              plain
            >{{$t('dataApply.ReApply')}}</el-button>
            >{{ $t("dataApply.ReApply") }}</el-button>
            <el-button
              type="info"
              size="mini"
              plain
              @click="handlDetails(scope.$index, scope.row)"
            >{{$t('dataApply.details')}}</el-button>
            >{{ $t("dataApply.details") }}</el-button>
            <el-button
              v-show="scope.row.guid != null"
              type="success"
              size="mini"
              plain
              @click="handlDownload(scope.$index, scope.row)"
            >{{ $t("common.download") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div
        style="margin-top: 40px"
        class="pagination_box"
      >
      <div style="margin-top:10px">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="listData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-sizes="[10, 50, 100, 200]"
          :page-size="listData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="count"
@@ -176,26 +196,24 @@
      :title="$t('dataApply.details')"
      :visible.sync="dialogDetailsVisible"
      width="50%"
      :before-close="handleClose"
    >
      <div>
        <el-form
          :inline="true"
          :model="detailsFrom"
          class="demo-form-inline"
        >
          <el-form-item label="表名:">
            <div class="statusLabel">{{detailsFrom.tabs}}</div>
          <el-form-item label="申请数据名称:">
            <div class="statusLabel">{{ detailsFrom.tabs }}</div>
          </el-form-item><br />
          <el-form-item label="申请人:">
            <div class="statusLabel">{{detailsFrom.uname}}</div>
            <div class="statusLabel">{{ detailsFrom.uname }}</div>
          </el-form-item>
          <el-form-item label="申请时间:">
            <div class="statusLabel">{{detailsFrom.time}}</div>
            <div class="statusLabel">{{ detailsFrom.time }}</div>
          </el-form-item>
          <el-form-item label="状态:">
            <div class="statusLabel">{{detailsFrom.status}}</div>
            <div class="statusLabel">{{ detailsFrom.status }}</div>
          </el-form-item>
        </el-form>
        <el-table
@@ -216,7 +234,7 @@
          <el-table-column
            align="center"
            prop="uname"
            label="申请人"
            label="审核人"
          />
          <el-table-column
            align="center"
@@ -233,37 +251,44 @@
              >
              </el-input>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            prop="status"
            label="状态"
            :formatter="formatStatus1"
          />
          <el-table-column
            min-width="150"
            :label="$t('common.operate')"
          >
            <template slot-scope="scope">
              <div v-if="matchState3(scope, /[]/)">
                <el-button
                  type="danger"
                  size="mini"
                  @click="handleApplyRepulse(scope.$index, scope.row)"
                  plain
                >打回</el-button>
              <el-button
                type="danger"
                size="mini"
                plain
              >打回</el-button>
              <el-button
                type="success"
                size="mini"
                plain
              >通过</el-button>
                <el-button
                  @click="handleApplyAdopt(scope.$index, scope.row)"
                  type="success"
                  size="mini"
                  plain
                >通过</el-button>
              </div>
              <div v-if="!matchState3(scope, /[]/)">- -</div>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-dialog>
    <iframe
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
  </div>
</template>
@@ -271,8 +296,14 @@
import MyBread from "../../components/MyBread.vue";
import {
  apply_selectByPage,
  apply_selectFlows
  apply_selectFlows,
  apply_updateForDiscard,
  apply_updateForSubmit,
  apply_updateForReject,
  apply_updateForResubmit,
} from "../../api/api";
import $ from 'jquery'
import { getToken } from '@/utils/auth';
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -281,7 +312,9 @@
  data() {
    return {
      detailsFrom: {},
      detailsFrom: {
        tableData: [],
      },
      dialogDetailsVisible: false,
      sizeForm: {
        start: null,
@@ -296,40 +329,139 @@
        start: null,
        end: null,
        uname: null,
        status: null
        status: null,
      },
      count: 0,
      detailsId: null,
      tableHeight: 0,
      timer: 0,
      styleVar: {
        height: "calc(100% - 109px)",
      },
    };
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer);
    window.removeEventListener("resize", this.onResize);
  },
  mounted() {
    window.addEventListener("resize", this.onResize);
    this.calHeight();
  },
  methods: {
    async handlDetails(index, row) {
      const data = await apply_selectFlows({ applyid: row.id })
    onResize() {
      this.timer && clearTimeout(this.timer);
      this.timer = setTimeout(() => {
        this.calHeight();
      }, 500);
    },
    calHeight() {
      this.$nextTick(() => {
        const rect = this.$refs.container.getBoundingClientRect();
        this.tableHeight = `${rect.height + 97}px`;
        this.styleVar["height"] = `calc(100% - ${rect.height + 97}px)`;
      });
    },
    async handleApplyRepulse(index, row) {
      const data = await apply_updateForReject({ flowId: row.id });
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      this.showRestData();
    },
    async handleApplyAdopt(index, row) {
      const data = await apply_updateForSubmit({ flowId: row.id });
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      this.showRestData();
    },
    async showRestData() {
      const data1 = await apply_selectFlows({
        applyid: this.detailsId,
      });
      if (data1.code != 200) {
        return this.$message.error("列表调用失败");
      }
      this.detailsFrom.tableData = data1.result;
    },
    async handleReApply(index, row) {
      const data = await apply_updateForResubmit({ applyid: row.id });
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.getAllData();
    },
    async handleApplyCancel(index, row) {
      const data = await apply_updateForDiscard({ applyid: row.id });
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.getAllData();
    },
    async handlDetails(index, row) {
      this.detailsId = row.id;
      const data = await apply_selectFlows({ applyid: row.id });
      if (data.code != 200) {
        return this.$message.error("列表调用失败");
      }
      debugger
      this.detailsFrom.tableData = data.result;
      this.detailsFrom.tabs = row.tabs;
      this.detailsFrom.uname = row.uname;
      this.detailsFrom.time = this.format(row.createTime);
      this.detailsFrom.status = this.statusFormat(row.status);
      console.log(data.result)
      this.detailsFrom.statued = row.status;
      this.dialogDetailsVisible = true;
    },
    async handlDownload(index, row) {
      var token = getToken()
      var url = BASE_URL + "/dataLib/downloadFile?token=" + token + "&guid=" + row.guid;
      $("#downFrame").attr("src", url).click();
    },
    matchState(state = '', reg) {
    matchState(state = "", reg) {
      var row = state.row;
      if (row.status >= -1 && row.status <= 9 && this.$store.state.uname == row.uname) {
        return true
      if (
        row.status >= -1 &&
        row.status <= 9 &&
        this.$store.state.unid == row.userid
      ) {
        return true;
      }
      return false
      return false;
    },
    matchState1(state = '', reg) {
    matchState1(state = "", reg) {
      var row = state.row;
      if (row.status == -1 && this.$store.state.uname == row.uname) {
        return true
      if (row.status == -1 && this.$store.state.unid == row.userid) {
        return true;
      }
      return false
      return false;
    },
    matchState2(state = "", reg) {
      var row = state.row;
      if (row.status != -10 && this.$store.state.unid == row.userid) {
        return true;
      }
      return false;
    },
    matchState3(state = "", reg) {
      var row = state.row;
      if (
        row.status == 0 &&
        this.detailsFrom.statued > -10 &&
        this.detailsFrom.statued < 10 &&
        this.$store.state.unid == row.userid
      ) {
        return true;
      }
      return false;
    },
    add0(m) {
      return m < 10 ? "0" + m : m;
@@ -345,7 +477,11 @@
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
        y + "-" + this.add0(m) + "-" + this.add0(d) +
        y +
        "-" +
        this.add0(m) +
        "-" +
        this.add0(d) +
        " " +
        this.add0(h) +
        ":" +
@@ -371,13 +507,29 @@
    },
    statusFormat(res) {
      if (res >= 0 && res <= 9) {
        return "审核中"
        return "审核中";
      } else if (res == -10) {
        return "退回"
        return "作废";
      } else if (res == -1) {
        return "打回"
        return "打回";
      } else if (res == 10) {
        return "通过";
      }
    },
    formatStatus1(row, column) {
      let data = row[column.property];
      if (data == null) {
        return data;
      }
      return this.statusFormat1(data);
    },
    statusFormat1(res) {
      if (res == 1) {
        return "通过";
      } else if (res == 0) {
        return "待审核";
      } else if (res == -1) {
        return "退回"
        return "打回";
      }
    },
    resAllTable() {
@@ -387,21 +539,21 @@
        start: null,
        end: null,
        uname: null,
        type: null
      }
        type: null,
      };
      this.sizeForm = {
        start: null,
        end: null,
        uname: null,
        status: null,
      }
      };
      this.getAllData();
    },
    onSubmit() {
      this.listData.end = this.sizeForm.end;
      this.listData.start = this.sizeForm.start;
      this.listData.status = this.sizeForm.status;
      this.listData.uname = this.sizeForm.uname
      this.listData.uname = this.sizeForm.uname;
      this.getAllData();
    },
@@ -422,7 +574,7 @@
      this.tableData = data.result;
      this.count = data.count;
    }
    },
  },
  created() {
    this.getAllData();
@@ -433,169 +585,34 @@
//@import url(); 引入公共css类
.logLog_box {
  width: 100%;
  padding: 10px;
  height: 100%;
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  .el-input {
    width: 300px;
  }
  .inquire {
    overflow: auto;
    padding: 10px;
    padding: 8px;
    margin-top: 20px;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    margin-bottom: 20px;
    .el-form-item {
      margin: 7px;
    }
    /deep/.el-form-item__label {
      color: white;
    }
    /deep/ .el-input__inner {
      background-color: transparent !important;
      border: 1px solid;
      color: white;
      margin: 5px;
    }
  }
  .statusLabel {
    color: white;
    padding: 0px 5px;
    font-size: 14px;
  }
  .table_box {
    overflow: auto;
    height: 70%;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    height: 620px;
    /*修改table 表体的背景颜色和文字颜色*/
    .pagination_box {
      /deep/.el-input__inner {
        background-color: transparent !important;
        border: 1px solid;
        color: white;
      }
      /deep/.el-pagination__total {
        color: white;
      }
      /deep/.el-pagination__jump {
        color: white;
      }
      /deep/.el-pager li.active {
        color: #1890ff;
      }
      /deep/.el-pager li {
        color: white;
        background: transparent;
      }
      /deep/.el-pager li {
        color: white;
      }
      /deep/.btn-prev {
        background: transparent;
      }
      /deep/.btn-next {
        background: transparent;
      }
    }
  }
  .text-center {
    text-align: center;
  }
}
/deep/ .el-select .el-input__inner {
  border-color: #fff !important;
}
/deep/.el-form-item__label {
  color: white;
}
// 设置输入框的背景色、字体颜色、边框属性设置;
/deep/.el-input__inner {
  background-color: transparent !important ;
  color: #fff;
  border: 1px solid;
}
/deep/ .el-dialog {
  background: #303030;
}
/deep/.el-range-editor.is-active,
.el-range-editor.is-active:hover,
.el-select .el-input.is-focus .el-input__inner {
  border: 1px solid;
}
/deep/.el-dialog__title {
  color: white;
}
/deep/ .el-table {
  background-color: transparent;
  th,
  td {
    background-color: transparent;
  }
  .el-table__expanded-cell {
    background-color: transparent !important;
  }
  // 表头背景色
  th.el-table__cell {
    background-color: #303030;
    color: #fff;
  }
  tr > td {
    background-color: #303030;
    color: #fff;
  }
  // hover效果
  tr:hover > td {
    background-color: rgba(255, 255, 255, 0.3) !important;
  }
  tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.3) !important;
    // text-align: center;
  }
  // 滚动条宽高
  .el-table__body-wrapper::-webkit-scrollbar {
    width: 5px;
    height: 5px;
  }
  .el-table__body-wrapper::-webkit-scrollbar {
    width: 5px;
    /*滚动条宽度*/
    height: 10px;
    /*滚动条高度*/
  }
  /*定义滚动条轨道 内阴影+圆角*/
  .el-table__body-wrapper::-webkit-scrollbar-track {
    box-shadow: 0px 1px 3px #216fe6 inset;
    /*滚动条的背景区域的内阴影*/
    border-radius: 10px;
  }
  /*定义滑块 内阴影+圆角*/
  .el-table__body-wrapper::-webkit-scrollbar-thumb {
    box-shadow: 0px 1px 3px #216fe6 inset;
    border-radius: 6px;
    background-color: #216fe6;
  }
}
/deep/.el-textarea__inner {
  background: transparent !important;
  border-color: #fff !important;
  color: white;
}
/deep/.el-textarea .el-input__count {
  background: transparent;
}
</style>