<template>
  <!-- 检修停复役检修审批 -->
  <div class="approval">
    <div class="box">
      <div class="box-top">
        <el-form
          style="overflow: hidden"
          :style="filterForm.show ? null : { height: '0px' }"
          size="mini"
          label-width="85px"
        >
          <el-row>
            <el-col :span="5">
                  <el-form-item label="申报日期">
                <zj-timegran-date
                  v-model="filterForm.data.declaretime"
                  style="width: 100%"
                  :type="'daterange'"
                  :timegranId="filterForm.data.timegranid"
                  :oneFoo="getselect"
                  :defaultOffset="-1"
                  :custom="1"
                ></zj-timegran-date>
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="申请单位">
                <el-input
                  clearable
                  v-model="filterForm.data.applayer"
                  placeholder=""
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="申报序号">
                <el-input
                  clearable
                  v-model="filterForm.data.declareid"
                  placeholder=""
                  style="width: 100%"
                >
                </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="4">
              <el-form-item label="申报状态">
                <el-select
                  filterable
                  clearable
                  v-model="filterForm.data.billstatus"
                  placeholder=""
                  style="width: 100%"
                >
                  <el-option
                    v-for="item of nameObj.billstatus.arr"
                    :key="item.name"
                    :value="item.name"
                    :label="item.name"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <div class="box-top-gjl">
          <el-button
            class="button"
            type="primary"
            size="mini"
            icon="el-icon-plus"
            @click="but_edit()"
            :disabled="buttondispaly"
            >同意</el-button
          >
          <el-button
            class="button"
            type="primary"
            size="mini"
            icon="el-icon-delete"
            @click="reject()"
            :disabled="buttondispaly"
            >驳回</el-button
          >
          <div style="float: right; text-align: right">
            <el-button
              class="button"
              type="primary"
              size="mini"
              icon="el-icon-search"
              v-privilege="activeMenu + 'QUERY'"
              @click="getformselect(1)"
              >查询</el-button
            >
            <el-button
              class="button"
              type="primary"
              size="mini"
              icon="el-icon-refresh"
              v-privilege="activeMenu + 'QUERY'"
              @click="tableDataCancel()"
              >重置</el-button
            >
            <el-button
              size="mini"
              :icon="
                filterForm.show ? 'el-icon-caret-top' : 'el-icon-caret-bottom'
              "
              :title="filterForm.show ? '收起搜索区' : '展开搜索区'"
              @click="
                filterForm.show = !filterForm.show;
                $nextTick(() => {
                  singleTableHeight =
                    getRoleHeight($refs['singleTable'].$el) - 45;
                });
              "
              >{{ filterForm.show ? "收起" : "展开" }}</el-button
            >
          </div>
        </div>
      </div>
      <div class="box-bottom">
        <el-table
          :default-sort="{ prop: 'declareid', order: 'descending' }"
          stripe
          id="singleTable"
          ref="singleTable"
          :data="tableData"
          v-loading="tableLoading"
          style="width: 100%"
          :height="singleTableHeight"
          border
          size="mini"
          highlight-current-row
          @selection-change="handleSelectionChange"
          @row-click="handleRowClick"
          row-key="id"
        >
          <el-table-column type="selection" width="30"> </el-table-column>
          <el-table-column
            sortable
            prop="declareid"
            label="申报序号"
            min-width="180px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="declaretime"
            label="申报日期"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="billstatus"
            label="申报状态"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="equipmentname"
            label="检修类型"
            min-width="100px"
            :show-overflow-tooltip="true"
          >
            <template slot-scope="scope">
              <span>{{
                nameObj.equipmentname.obj[scope.row.equipmentname]
                  ? nameObj.equipmentname.obj[scope.row.equipmentname]
                  : scope.row.equipmentname
              }}</span>
            </template></el-table-column
          >
          <el-table-column
            sortable
            prop="devicename"
            label="设备名称"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="equipment"
            label="设备分类"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="constructionunits"
            label="施工单位"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="construpeople"
            label="施工人数"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="applayer"
            label="申请单位"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="chargeman"
            label="申请人"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="chargetime"
            label="申请时间"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="approver"
            label="审批人"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="signtime"
            label="审批时间"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="filename"
            label="附件"
            min-width="100px"
            :show-overflow-tooltip="true"
          ></el-table-column>
          <el-table-column
            sortable
            prop="bz"
            label="备注"
            width="240px"
            :show-overflow-tooltip="true"
          >
          </el-table-column>
          <el-table-column
            class-name="gn-TableDownloadExcel-none"
            label="操作"
            align="center"
            width="200px"
            fixed="right"
          >
            <template slot-scope="scope">
              <div>
                <el-button
                  type="primary"
                  size="mini"
                  v-privilege="activeMenu + 'PUT'"
                  @click="but_edita(scope.row)"
                  >查看</el-button
                >
                <el-button
                  size="mini"
                  type="primary"
                  @click="downloadFile(scope.row)"
                  :loading="loading"
                  >查看附件
                </el-button>
              </div>
            </template>
          </el-table-column>
          >
        </el-table>
        <el-pagination
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          :page-sizes="[10, 20, 50, 100, 500, 1000]"
          :page-size="pageSize"
          :current-page.sync="pageNum"
          @size-change="tableSizeChange"
          @current-change="getselect()"
          style="text-align: right; margin-top: 10px"
        ></el-pagination>
      </div>
    </div>
    <el-dialog
      :title="
        '检修停复役申请单 - ' +
        (dialog.editorBox.type === 'add' ? '新增' : '审批')
      "
      :visible.sync="dialog.editorBox.show"
      width="940px"
      :close-on-click-modal="false"
      :show-close="!loading"
    >
      <div>
        <el-form
          ref="dialog_form"
          :model="dialog.editorBox.form.data"
          :rules="dialog.editorBox.form.rules"
          size="mini"
          label-width="120px"
        >
          <el-row>
            <el-col :span="8">
              <el-form-item label="申报序号" prop="declareid">
                <el-input
                  clearable
                  v-model="dialog.editorBox.form.data.declareid"
                  placeholder=""
                  style="width: 100%"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="申报时间" prop="declaretime">
                <el-date-picker
                  v-model="dialog.editorBox.form.data.declaretime"
                  type="date"
                  disabled
                  placeholder="选择日期"
                  value-format="yyyy-MM-dd"
                  format="yyyy-MM-dd"
                  :formatter="declaretime"
                  style="width: 100%"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="申请负责人" prop="chargeman">
                <el-input
                  clearable
                  v-model="dialog.editorBox.form.data.chargeman"
                  placeholder=""
                  style="width: 100%"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="申请单位" prop="applayer">
                <el-input
                  clearable
                  v-model="dialog.editorBox.form.data.applayer"
                  placeholder=""
                  style="width: 100%"
                  disabled
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="检修类型" prop="equipmentname">
                <el-select
                  clearable
                  disabled
                  v-model="dialog.editorBox.form.data.equipmentname"
                  placeholder=""
                  style="width: 100%"
                >
                  <el-option
                    v-for="item of nameObj.equipmentname.arr"
                    :key="item.id"
                    :value="item.id"
                    :label="item.name"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="设备名称">
                <el-select
                  disabled
                  filterable
                  clearable
                  v-model="dialog.editorBox.form.data.devicename"
                  placeholder="设备名称"
                  style="width: 100%"
                >
                  <el-option
                    v-for="item of nameObj.devicename.arr"
                    :key="item.id"
                    :value="item.name"
                    :label="item.name"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="设备分类">
                <el-select
                  filterable
                  disabled
                  clearable
                  v-model="dialog.editorBox.form.data.equipment"
                  placeholder="设备名称"
                  style="width: 100%"
                >
                  <el-option
                    v-for="item of nameObj.equipment.arr"
                    :key="item.id"
                    :value="item.name"
                    :label="item.name"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="8">
              <el-form-item label="施工单位" prop="constructionunits">
                <el-input
                  disabled
                  clearable
                  v-model="dialog.editorBox.form.data.constructionunits"
                  placeholder=""
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="施工人数" prop="construpeople">
                <el-input
                  clearable
                  disabled
                  v-model="dialog.editorBox.form.data.construpeople"
                  placeholder=""
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-container>
            <el-main style="padding: 0">
              <el-form-item label="申请内容" prop="reasoncontent">
                <el-input
                  clearable
                  disabled
                  class="nr-textarea"
                  type="textarea"
                  v-model="dialog.editorBox.form.data.reasoncontent"
                  placeholder=""
                  style="width: 100%"
                ></el-input>
              </el-form-item>
            </el-main>
          </el-container>
          <el-form-item label="备注" prop="bz">
            <el-input
              clearable
              type="textarea"
              disabled
              v-model="dialog.editorBox.form.data.bz"
              placeholder=""
              style="width: 100%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="but_edit()" :disabled="buttondispaly"
          >同意</el-button
        >
        <el-button type="primary" @click="reject()" :disabled="buttondispaly"
          >驳回</el-button
        >
      </span>
    </el-dialog>
    <el-dialog
      :title="'文件下载列表'"
      :visible.sync="dialog.editorBox.showtype"
      width="610px"
      :close-on-click-modal="false"
      :show-close="!loading"
    >
      <div>
        <el-form
          size="mini"
          ref="dialog_form_arr"
          label-width="0px"
        >
          <el-table
            stripe
            id="singleTable"
            ref="singleTable"
            :data="tableDatavalue"
            v-loading="tableLoading"
            style="width: 100%"
            :height="singleTableHeight"
            border
            size="mini"
            highlight-current-row
            @selection-change="handleSelectionChange"
          >
            <el-table-column
              sortable
              fixed
              prop="fileName"
              label="文件名称"
              width="160px"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column
              sortable
              fixed
              prop="filePath"
              label="文件路径"
              width="340px"
              :show-overflow-tooltip="true"
            ></el-table-column>
            <el-table-column label="操作" width="100px" fixed="right"
              ><template slot-scope="scope">
                <el-button
                  size="small"
                  type="primary"
                  icon="el-icon-download"
                  @click="downloadFilevalue(scope.row)"
                  :loading="loading"
                  >点击下载
                </el-button>
              </template>
            </el-table-column>
          </el-table>
        </el-form>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import fileUploadBox from "~/components/zg/fileUploadBox.vue";
import timegranDate from "~/components/zg/timegranDate.vue";
import { formatDate } from "@/utils/util.js";
import store from "@/store/index.js";
export default {
  name: "MaintenanceApplication",
  components: {
    "zj-fileUploadBox": fileUploadBox,
    "zj-timegran-date": timegranDate,
  },
  data() {
    return {
      buttondispaly: false,
      declaretime: "",
      leixin: "add",
      multipleSelection: [],
      pickerOptions: {
        shortcuts: [
          {
            text: "最近一周",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近一个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
              picker.$emit("pick", [start, end]);
            },
          },
          {
            text: "最近三个月",
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
              picker.$emit("pick", [start, end]);
            },
          },
        ],
      },
      store,
      userInfo: {
        data: null,
      },
      activeMenu: "",
      filterForm: {
        show: true,
        data: {
          billstatus: "", //审核状态
          equipmentname: "", //检修类型
          chargeman: "", //申请人
          applayer: "", //申请单位
          reasoncontent: "", //申请内容
          bz: "", //备注
          signtime: "", //审批时间
          approver: "", //审批人
          chargetime: "", //申请时间
          declaretime: "", //申报日期
          declareid: "", //申报序号
          filename: "", //文件名
        },
      },
      pageNum: 1,
      pageSize: 20,
      total: 0,
      singleTableHeight: 100,
      tableDatavalue: [],
      tableData: [],
      nameObj: {
        equipment: {
          obj: {},
          arr: [],
        },
        devicename: {
          obj: {},
          arr: [],
        },
        id: {
          obj: {},
          arr: [],
        },
        name: {
          obj: {},
          arr: [],
        },
        billstatus: {
          obj: {
            end: "已通过",
            start: "已驳回",
            check: "审核中",
          },
          arr: [
            {
              id: "end",
              name: "已通过",
            },
            {
              id: "start",
              name: "已驳回",
            },
            {
              id: "check",
              name: "审核中",
            },
            {
              id: "starta",
              name: "已完成",
            },
            {
              id: "startb",
              name: "进行中",
            },
          ],
        },
        equipmentname: {
          obj: {
            value1: "委外",
            value2: "自检",
          },
          arr: [
            {
              id: "value1",
              name: "委外",
            },
            {
              id: "value2",
              name: "自检",
            },
          ],
        },
      },
      loading: false,
      tableLoading: false,
      dialog: {
        editorBox: {
          showtype: false,
          show: false,
          type: "",
          form: {
            data: {
              billstatus: "", //审核状态
              equipmentname: "", //检修类型
              chargeman: "", //申请人
              applayer: "", //申请单位
              reasoncontent: "", //申请内容
              bz: "", //备注
              signtime: "", //审批时间
              approver: "", //审批人
              chargetime: "", //申请时间
              declaretime: "", //申报日期
              declareid: "", //申报序号
              filename: "",
              devicename: "", //设备名称
              equipment: "", //设备分类
              constructionunits: "", //施工单位
              construpeople: "", //施工人数
            },
            rules: {
              // billsno: [
              //     { required: true, message: '该项不能为空', trigger: 'change' }
              // ],
              creattime: [
                { required: true, message: "该项不能为空", trigger: "change" },
              ],
              applyer: [
                { required: true, message: "该项不能为空", trigger: "change" },
              ],
              equipmentname: [
                { required: true, message: "该项不能为空", trigger: "change" },
              ],
              chargeman: [
                { required: true, message: "该项不能为空", trigger: "change" },
              ],
            },
          },
          files: [
            // {
            //     name: '测试',
            //     url: '',
            //     file: null,
            //     operation: '' // add or del
            // }
          ],
        },
      },
    };
  },
  created() {
    this.activeMenu = window.localStorage.getItem("activeMenu");
    this.getselect();
  },
  mounted() {
    let that = this;
    window.PEDataObj = {
      // 将数据绑定到window上，供main页面使用
      vm: that,
      // tableArr：用于导出成Excel的表格的信息
      tableArr: [
        {
          name: "",
          id: "singleTable",
        },
      ],
    };
    that.$nextTick(() => {
      // 立即获取的height有一定偏差，通过setTimeout延迟来解决
      setTimeout(() => {
        that.singleTableHeight =
          that.getRoleHeight(that.$refs["singleTable"].$el) - 45;
      }, 1);
    });
    that.store.dispatch("getUserInfo").then((res) => {
      that.userInfo.data = res.data;
    });
    that.getselect();
    that.getNodeData();
    that.getNodeDataa();
  },
  methods: {
    //文件下载
    downloadFilevalue(row) {
      let that = this;
      let SubmitData = {
        fileName: row.fileName,
        filePath: row.filePath,
      };
      that.loading = true;
      let urla = "pass/ems/v1/tmaintenancefiles/downloadFile/";
      that.axios
        .get(urla, {
          params: SubmitData,
          responseType: "blob",
        })
        .then(function (res) {
          console.log("fdgd");
          that.saveAs(res, row.fileName);
          that.$message({
            message: "下载成功",
            type: "success",
          });
          that.loading = false;
        })
        .catch(function () {
          that.$message.error("下载失败");
          that.loading = false;
        });
    },
    saveAs(data, fileName) {
      this.loading = true;
      let urlObject = window.URL || window.webkitURL || window;
      // 将二进制流转为blob
      let exportBlob = new Blob([data]);
      if (typeof window.navigator.msSaveBlob !== "undefined") {
        // 兼容IE，window.navigator.msSaveBlob：以本地方式保存文件
        window.navigator.msSaveBlob(exportBlob, decodeURI(fileName));
        this.loading = false;
      } else {
        // 创建新的URL并指向File对象或者Blob对象的地址
        let blobURL = urlObject.createObjectURL(exportBlob);
        let saveLink = document.createElement("a");
        // 兼容：某些浏览器不支持HTML5的download属性
        if (typeof saveLink.download === "undefined") {
          saveLink.setAttribute("target", "_blank");
        } else {
          saveLink.download = fileName;
        }
        // 创建新的URL并指向File对象或者Blob对象的地址
        saveLink.href = blobURL;
        saveLink.click();
        // 释放blob URL地址
        urlObject.revokeObjectURL(exportBlob);
        this.loading = false;
        // let blob = new Blob([data])
        // let fileURL = urlObject.createObjectURL(blob);
        // 下载代码
        // let downEle = document.createElement('a')
        // let fname = `download` //下载文件的名字
        // downEle.href = fileURL
        // downEle.setAttribute('download', fname)
        // document.body.appendChild(downEle)
        // downEle.click()
        // window.open(fileURL);
      }
    },
    downloadFile(row) {
      let that = this;
      let id = row.declareid;
      let url = "pass/ems/v1/tmaintenancefiles/getlist/";
      that.axios.get(url + "?" + "id=" + id).then(function (res) {
        if (res.code === "0") {
          let arr = [];
          for (let item of res.data) {
            arr.push({
              fileName: item.filename,
              filePath: item.filepath,
            });
          }
          that.tableDatavalue= arr;
          that.dialog.editorBox.showtype = true;
          that.tableLoading = false;
        } else {
          that.$message.error(res.message);
        }
      });
    },
    getNodeDataa() {
      let that = this;
      let node = "4";
      let url = "pass/ems/v1/tprocessinfors/getmeuns/";
      that.axios.get(url + "?" + "node=" + node).then(function (res) {
        if (res.code === "0") {
          let arr = [];
          let obj = {};
          for (let item of res.data) {
            arr.push({
              id: item.id,
              name: item.name,
            });
            obj[item.id] = {
              name: item.name,
              node: item.node,
            };
          }
          that.nameObj.equipment.arr = arr;
          that.nameObj.equipment.obj = obj;
        } else {
          that.$message.error(res.message);
        }
      });
    },
    // 获取工序列表
    getNodeData() {
      let that = this;
      let node = "3";
      let url = "pass/ems/v1/tprocessinfors/getmeuns/";
      that.axios.get(url + "?" + "node=" + node).then(function (res) {
        if (res.code === "0") {
          let arr = [];
          let obj = {};
          for (let item of res.data) {
            arr.push({
              id: item.id,
              name: item.name,
            });
            obj[item.id] = {
              name: item.name,
              node: item.node,
            };
          }
          that.nameObj.devicename.arr = arr;
          that.nameObj.devicename.obj = obj;
        } else {
          that.$message.error(res.message);
        }
      });
    },
    //  计算树区域高度
    getRoleHeight(dom) {
      return window.innerHeight - dom.offsetTop;
    },
    getformselect(pageNum) {
      let that = this;
      let params = {
        declaretime: that.filterForm.data.declaretime[0],
        declaretime1: that.filterForm.data.declaretime[1],
        applayer: that.filterForm.data.applayer,
        declareid: that.filterForm.data.declareid,
        billstatus: that.filterForm.data.billstatus,
        record: 0,
      };
      that.pageNum = pageNum || that.pageNum;
      that.tableLoading = true;
      let url =
        "pass/ems/v1/tmaintenances/likeapprovals/?pageNum=" +
        that.pageNum +
        "&pageSize=" +
        that.pageSize;
      this.axios
        .get(url, {
          params: params,
        })
        .then(function (res) {
          if (res.code === "0") {
            let arr = [];
            for (let item of res.data.list) {
              arr.push({
                billstatus: item.billstatus, //审核状态
                equipmentname: item.equipmentname, //检修类型
                applayer: item.applayer, //申请单位
                signtime: item.signtime, //审批时间
                approver: item.approver, //审批人
                chargetime: item.chargetime, //申请时间
                declaretime: item.declaretime, //申报日期
                declareid: item.declareid, //申报序号
                chargeman: item.chargeman,
                reasoncontent: item.reasoncontent, //申请内容
                bz: item.bz, //备注
                filename: item.filename,
                devicename: item.devicename,
                equipment: item.equipment,
                constructionunits: item.constructionunits,
                construpeople: item.construpeople,
              });
            }

            that.tableData = arr;
            console.log("测试" + arr);
            that.total = res.data.total;
            that.tableLoading = false;
          } else {
            this.$message.error(res.message);
          }
        });
    },
    getselect(pageNum) {
      let that = this;
      let params = {
        declaretime: that.filterForm.data.declaretime,
        applayer: that.filterForm.data.applayer,
        declareid: that.filterForm.data.declareid,
        billstatus: that.filterForm.data.billstatus,
        record: 0,
      };
      that.pageNum = pageNum || that.pageNum;
      that.tableLoading = true;
      let url =
        "pass/ems/v1/tmaintenances/likeapproval/?pageNum=" +
        that.pageNum +
        "&pageSize=" +
        that.pageSize;
      this.axios
        .get(url, {
          params: params,
        })
        .then(function (res) {
          if (res.code === "0") {
            let arr = [];
            for (let item of res.data.list) {
              arr.push({
                billstatus: item.billstatus, //审核状态
                equipmentname: item.equipmentname, //检修类型
                applayer: item.applayer, //申请单位
                signtime: item.signtime, //审批时间
                approver: item.approver, //审批人
                chargetime: item.chargetime, //申请时间
                declaretime: item.declaretime, //申报日期
                declareid: item.declareid, //申报序号
                chargeman: item.chargeman,
                reasoncontent: item.reasoncontent, //申请内容
                bz: item.bz, //备注
                filename: item.filename,
                devicename: item.devicename,
                equipment: item.equipment,
                constructionunits: item.constructionunits,
                construpeople: item.construpeople,
              });
            }

            that.tableData = arr;
            console.log("测试" + arr);
            that.total = res.data.total;
            that.tableLoading = false;
          } else {
            this.$message.error(res.message);
          }
        });
    },
    // 改变表格显示条数
    tableSizeChange(val) {
      let that = this;
      that.pageSize = val;
      that.getselect(1);
    },
    // 重置搜索
    tableDataCancel() {
      let that = this;
      for (let key in that.filterForm.data) {
        if (that.filterForm.data[key] instanceof Array) {
          that.filterForm.data[key] = [];
        } else {
          that.filterForm.data[key] = "";
        }
      }
      that.getselect(1);
    },
    but_add() {
      let that = this;
      that.dialog.editorBox.files = [];
      for (let key in that.dialog.editorBox.form.data) {
        that.dialog.editorBox.form.data[key] = "";
      }
      let nowDate = formatDate(new Date(), "yyyy-MM-dd");
      that.dialog.editorBox.form.data.signtime = nowDate;
      that.dialog.editorBox.form.data.chargetime = nowDate;
      that.dialog.editorBox.form.data.declaretime = nowDate;
      that.dialog.editorBox.form.data.chargeman = that.userInfo.data.userName;
      that.dialog.editorBox.type = "add";
      that.dialog.editorBox.show = true;
      setTimeout(() => {
        that.$refs["dialog_form"].clearValidate();
      }, 100);
    },
    submitBut() {
      let that = this;
      if (that.dialog.editorBox.type === "put") {
        that
          .$confirm("是否同意审批?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            that.dataSave();
          })
          .catch(() => {});
      } else {
        that
          .$confirm("是否驳回?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            that.dataSaves();
          })
          .catch(() => {});
      }
    },
    // 批量删除
    but_del_plural() {
      let that = this;
      if (that.multipleSelection.length > 0) {
        let ids = [];
        for (let item of that.multipleSelection) {
          ids.push(item.declareid);
        }
        that
          .$confirm("是否删除已选数据?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            state: "warning",
          })
          .then(() => {
            this.axios
              .put("pass/ems/v1/tmaintenances/del/" + ids)
              .then(function (res) {
                if (res.code === "0") {
                  that.$message({
                    message: "删除成功",
                    type: "success",
                  });
                  that.getselect();
                } else {
                  if (res.code === "51") {
                  }
                  that.$message.error(res.message);
                }
              })
              .catch(function () {});
          });
      } else {
        this.$message.error("至少要选择一条数据");
      }
    },
    // 通过审核
    but_edit() {
      let that = this;
      that.dialog.editorBox.form.data.approver = that.userInfo.data.approver;
      if (that.multipleSelection.length > 0) {
        let parmas = [];
        for (let item of that.multipleSelection) {
          parmas.push({
            declareid: item.declareid,
            billstatus: "已通过",
            approver: that.userInfo.data.userName,
            signtime: "",
          });
        }
        that.loading = true;
        that.axios
          .put("pass/ems/v1/tmaintenances/pusAlla/", parmas)
          .then(function (res) {
            if (res.code === "0") {
              let msg = res.message;
              if (!msg || msg === "操作成功") {
                that.$message({
                  message: "操作成功",
                  type: "success",
                });
              } else {
                that.$message.warning("修改成功，注意：" + msg);
              }
              that.getselect();
              that.dialog.editorBox.show = false;
            } else {
              that.$message.error(res.message);
            }
            that.loading = false;
          })
          .catch(function () {
            that.loading = false;
          });
      } else {
        this.$message.error("至少要选择一条数据");
      }
    },
    //驳回
    reject() {
      let that = this;
      if (that.multipleSelection.length > 0) {
        let parmas = [];
        for (let item of that.multipleSelection) {
          parmas.push({ declareid: item.declareid, billstatus: "已驳回" });
        }
        that.loading = true;
        that.axios
          .put("pass/ems/v1/tmaintenances/pusAlla/", parmas)
          .then(function (res) {
            if (res.code === "0") {
              let msg = res.message;
              if (!msg || msg === "操作成功") {
                that.$message({
                  message: "驳回成功",
                  type: "success",
                });
              } else {
                that.$message.warning("修改成功，注意：" + msg);
              }
              that.getselect();
              that.dialog.editorBox.show = false;
            } else {
              that.$message.error(res.message);
            }
            that.loading = false;
          })
          .catch(function () {
            that.loading = false;
          });
      } else {
        this.$message.error("至少要选择一条数据");
      }
    },
    // 表格中多选按钮的相关方法
    handleSelectionChange(val) {
      for (let key in val) {
        let bil = val[key].billstatus;
        if (bil == "已完成" || bil == "进行中") {
          this.buttondispaly = true;
        } else {
          this.buttondispaly = false;
        }
      }
      console.log("val" + val);
      this.multipleSelection = val;
    },
    //点击行触发，选中或不选中复选框
    handleRowClick(row, column, event) {
      this.$refs.singleTable.toggleRowSelection(row);
      console.log(row);
    },
    // 修改
    but_edit_plural() {
      let that = this;
      that.leixin = "PUT";
      that.dialog.editorBox.type = "PUT";
      that.dialog.editorBox.show = true;
      if (that.multipleSelection.length > 0) {
        let ids = [];
        for (let item of that.multipleSelection) {
          ids.push(
            item.equipmentname,
            item.bz,
            item.reasoncontent,
            item.declaretime,
            item.chargeman,
            item.declareid,
            item.filename,
            item.devicename,
            item.equipment,
            item.constructionunits,
            item.construpeople
          );
        }
        that.dialog.editorBox.form.data.equipmentname = ids[0];
        that.dialog.editorBox.form.data.bz = ids[1];
        that.dialog.editorBox.form.data.reasoncontent = ids[2];
        that.dialog.editorBox.form.data.declaretime = ids[3];
        that.dialog.editorBox.form.data.chargeman = ids[4];
        that.dialog.editorBox.form.data.declareid = ids[5];
        that.dialog.editorBox.form.data.devicename = ids[6];
        that.dialog.editorBox.form.data.equipment = ids[7];
        that.dialog.editorBox.form.data.constructionunits = ids[8];
        that.dialog.editorBox.form.data.construpeople = ids[9];
      }
    },
    submitUpload() {
      let that = this;
      this.$refs.upload1.submit();
    },
    dataSaves(billstatus) {
      let that = this;
      that.dialog.editorBox.type = "PUT";
      let SubmitData = {
        billstatus: "编辑中",
        declareid: that.dialog.editorBox.form.data.declareid,
        chargetime: that.dialog.editorBox.form.data.chargetime,
        applayer: "一烧结",
        equipmentname: that.dialog.editorBox.form.data.equipmentname,
        chargeman: that.dialog.editorBox.form.data.chargeman,
        reasoncontent: that.dialog.editorBox.form.data.reasoncontent,
        bz: that.dialog.editorBox.form.data.bz,
        declaretime: that.dialog.editorBox.form.data.declaretime,
        record: null,
      };
      let message = "保存成功";
      if (billstatus && billstatus !== "编辑中") {
        SubmitData.billstatus = billstatus;
        message = "操作成功";
      }
      that.$refs["dialog_form"].validate((valid) => {
        if (valid) {
          that.loading = true;
          let url = "pass/ems/v1/tmaintenances/pus/";
          let fileData = new FormData();
          for (let key in SubmitData) {
            fileData.append(key, SubmitData[key] ? SubmitData[key] : "");
          }
          let del = "";
          // 保存的文件名
          let filename = "";
          for (let item of that.dialog.editorBox.files) {
            if (item.operation === "add" && item.file && item.name) {
              fileData.append("file", item.file);
            }
            if (item.operation === "del" && item.name) {
              del += item.name + ";";
            }
            if (item.operation !== "del" && item.name) {
              filename += item.name + ";";
            }
          }
          fileData.set("filename", filename);
          fileData.set("del", del);
          that.axios
            .put(url, fileData, {
              headers: { "Content-Type": "multipart/form-data" },
            })
            .then(function (res) {
              if (res.code === "0") {
                that.$message({
                  message: message,
                  type: "success",
                });
                that.getselect();
                that.dialog.editorBox.show = false;
              } else {
                that.$message.error(res.message);
              }
              that.loading = false;
            })
            .catch(function () {
              that.loading = false;
            });
        }
      });
    },
    dataSave(billstatus) {
      let that = this;
      let SubmitData = {
        billstatus: "编辑中",
        declareid: "1sj_" + that.dialog.editorBox.form.data.declareid,
        chargetime: that.dialog.editorBox.form.data.chargetime,
        applayer: "一烧结",
        equipmentname: that.dialog.editorBox.form.data.equipmentname,
        chargeman: that.dialog.editorBox.form.data.chargeman,
        reasoncontent: that.dialog.editorBox.form.data.reasoncontent,
        bz: that.dialog.editorBox.form.data.bz,
        declaretime: that.dialog.editorBox.form.data.declaretime,
        record: null,
      };
      let message = "保存成功";
      if (billstatus && billstatus !== "编辑中") {
        SubmitData.billstatus = billstatus;
        message = "操作成功";
      }
      that.$refs["dialog_form"].validate((valid) => {
        if (valid) {
          that.loading = true;
          let url = "pass/ems/v1/tmaintenances/submit/";
          let fileData = new FormData();
          for (let key in SubmitData) {
            fileData.append(key, SubmitData[key] ? SubmitData[key] : "");
          }
          let del = "";
          // 保存的文件名
          let filename = "";
          for (let item of that.dialog.editorBox.files) {
            if (item.operation === "add" && item.file && item.name) {
              fileData.append("file", item.file);
            }
            if (item.operation === "del" && item.name) {
              del += item.name + ";";
            }
            if (item.operation !== "del" && item.name) {
              filename += item.name + ";";
            }
          }
          fileData.set("filename", filename);
          fileData.set("del", del);
          that.axios
            .put(url, fileData, {
              headers: { "Content-Type": "multipart/form-data" },
            })
            .then(function (res) {
              if (res.code === "0") {
                that.$message({
                  message: message,
                  type: "success",
                });
                that.getselect();
                that.dialog.editorBox.show = false;
              } else {
                that.$message.error(res.message);
              }
              that.loading = false;
            })
            .catch(function () {
              that.loading = false;
            });
        }
      });
    },
    but_edita(row) {
      let that = this;
      that.dialog.editorBox.type = "PUT";
      that.dialog.editorBox.files = [];
      for (let key in that.dialog.editorBox.form.data) {
        if (typeof row[key] !== "undefined") {
          that.dialog.editorBox.form.data[key] = row[key];
        } else {
          console.log("key:" + key);
        }
      }
      if (row.filename) {
        let fn = (row.filename + "").trim().split(";");
        if (fn && fn.length > 0) {
          let declareid = row.declareid;
          for (let i = 0; i < fn.length; i++) {
            if (fn[i]) {
              let fname = {
                name: fn[i],
                url:
                  "/icore.icp.web/pass/ems/static/" + declareid + "/" + fn[i],
                file: null,
                operation: "",
              };
              that.dialog.editorBox.files.push(fname);
            }
          }
        }
      }
      that.dialog.editorBox.show = true;
    },
  },
};
</script>

<style lang="less">
.approval {
  min-width: 700px;
  height: 100%;
  .box {
    height: 100%;
    padding: 15px 15px 0 15px;
    .box-top {
      .el-form-item {
        margin-bottom: 7px;
      }
      .box-top-gjl {
        overflow: hidden;
        padding: 7px 0;
        border-top: 1px solid #ccc;
      }
    }
  }
  .nr-textarea {
    .el-textarea__inner {
      min-height: 130px !important;
    }
  }
  .fileUploadBox {
    height: 130px;
    min-height: 130px !important;
    margin-bottom: 18px;
  }
}
</style>
