<template >
  <div class="app-container">
    <el-table v-loading="loading" :data="approvedangerList" @selection-change="handleSelectionChange" :height="clientHeight" border>
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="流程ID" align="center" prop="processId" :show-overflow-tooltip="true"/>
      <el-table-column label="流程名称" align="center" prop="processName" :show-overflow-tooltip="true"/>
      <el-table-column label="流程创建时间" align="center" prop="processCreateTime" :show-overflow-tooltip="true"/>
      <el-table-column label="待办任务名称" align="center" prop="taskName" :show-overflow-tooltip="true"/>
      <el-table-column label="待办任务创建时间" align="center" prop="taskCreateTime" :show-overflow-tooltip="true"/>
      <el-table-column label="申请编号" align="center" prop="apNo" :show-overflow-tooltip="true"/>
      <el-table-column label="操作" align="center" width="120" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="addOrUpdateHandle(scope.row)"
          >处理</el-button>
          <el-button
            size="mini"
            type="text"
            @click="processImg(scope.row.processId)"
          >流程图</el-button>
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
    <process-img v-if="processImgVisible" ref="processImg" @refreshDataList="getList"></process-img>
    <questionnaire-detail v-if="questionnaireVisible" ref="questionnaireDetail" @refreshDataList="getList"/>
    <openitem-detail v-if="openitemVisible" ref="openitemDetail" @refreshDataList="getList"/>
  </div>
</template>

<script>
  import {getPendinglist, handleApprovedanger} from "@/api/rc/approvedanger";
  import ProcessImg from '../processImg/index';
  import {getToken} from "@/utils/auth"
  import QuestionnaireDetail from "@/views/rc/approve/detail/questionnaire-detail";
  import OpenitemDetail from "@/views/rc/approve/detail/openitem-detail";

  export default {
    name: "Pending",
    components: {
      ProcessImg,
      QuestionnaireDetail,
      OpenitemDetail
    },
    data() {
      return {
        // 遮罩层
        loading: true,
        //弹窗界面是否开启
        questionnaireVisible: false,
        processImgVisible: false,
        openitemVisible: false,
        // 选中数组
        ids: [],
        // 非单个禁用
        single: true,
        // 非多个禁用
        multiple: true,
        // 显示搜索条件
        showSearch: false,
        // 总条数
        total: 0,
        // 我的申请表格数据
        approvedangerList: [],
        // 弹出层标题
        title: "",
        // 部门树选项
        deptOptions: undefined,
        clientHeight:300,
        // 是否显示弹出层
        open: false,
        // 装置名称字典
        plantCodeOptions: [],
        // 查询参数
        queryParams: {
          pageNum: 1,
          pageSize: 20,
          plantCode: null,
          recorderId: null,
          hiddendangerLevel: null,
          hiddendangerContent: null,
          measures: null,
          completeTime: null,
          status: null,
          creattime: null,
          endtime: null,
          processId: null,
          approveNo: null,
          deptId: null,
        },
        // 表单参数
        form: {},
        //事件记录人更新内容
        recordInfo: {},
        //处理数据传输
        approveInfo: null,
        //审批显示按键判断依据
        infoprocessName: null,
        infoTaskName: null,
        //上传措施前后照片url，文件名称
        beforeUrl: null,
        beforeFilename: null,
        afterUrl: null,
        afterFilename: null,
        //审批备注
        comment: null
      };
    },
    watch: {
      // 根据名称筛选部门树
      deptName(val) {
        this.$refs.tree.filter(val);
      }
    },
    created() {
      //设置表格高度对应屏幕高度
      this.$nextTick(() => {
        this.clientHeight = document.body.clientHeight -200
      })
      this.getList();
      this.getDicts("PLANT_DIVIDE").then(response => {
        this.plantCodeOptions = response.data;
      });
    },
    methods: {
      /** 查询隐患申请列表 */
      getList() {
        this.loading = true;
        getPendinglist(this.queryParams).then(response => {
          this.approvedangerList = response.rows;
          this.total = response.total;
          this.loading = false;
        });
      },
      // 装置名称字典翻译
      plantCodeFormat(row, column) {
        return this.selectDictLabel(this.plantCodeOptions, row.plantCode);
      },
      // 取消按钮
      cancel() {
        this.addOrUpdateVisible = false;
        this.reset();
      },
      /** 事件子组件传值 */
      approveChange(value) {
        this.recordInfo = value
      },
      // 表单重置
      reset() {
        this.form = {
        };
        this.resetForm("form");
      },
      //操作审批流程
      addOrUpdateHandle (row) {
        if (row.processName == "问卷审批流程") {
          this.title = '处理问卷审批流程';
          this.questionnaireVisible = true
          this.$nextTick(() => {
            this.$refs.questionnaireDetail.init(row.progress, row.taskId, row.processId, row.taskName, 2)
          })
        } else if (row.processName == "开项审批流程") {
          this.title = '处理开项审批流程';
          this.openitemVisible = true
          this.$nextTick(() => {
            this.$refs.openitemDetail.init(row.openItem, row.taskId, row.processId, row.taskName, 2)
          })
        }
      },
      // 多选框选中数据
      handleSelectionChange(selection) {
        this.ids = selection.map(item => item.id)
        this.single = selection.length!==1
        this.multiple = !selection.length
      },
      // 表单提交
      dataFormSubmit (val) {
        //相关信息
        this.form = this.approveInfo
        this.form.submitType = val
        this.form.comment = this.comment
        // 审批确认后，申请人填写相关信息
        if (this.form.processName === (this.$t('事件') + this.$t('审批流程'))) {
          this.form.accidentLevel = this.recordInfo.accidentLevel;
          this.form.measures = this.recordInfo.measures;
          this.form.executorId = this.recordInfo.executorId;
          this.form.completeTime = this.recordInfo.completeTime;
          console.info("accidentLevel:" + this.form.accidentLevel)
          console.info("measures:" + this.form.measures)
          console.info("executorId:" + this.form.executorId)
          console.info("completeTime:" + this.form.completeTime)
        }
        //提交审批
        this.form.beforeUrl = this.beforeUrl
        this.form.beforeFilename = this.beforeFilename
        this.form.afterUrl = this.afterUrl
        this.form.afterFilename = this.afterFilename
        handleApprovedanger(this.form).then(response => {
          this.msgSuccess(this.$t('处理成功'));
          this.addOrUpdateVisible = false;
          this.getList();
        });
        this.$nextTick(function () {
          this.comment = ''
        })
      },
      // 文件上传中处理
      handleFileUploadProgressBefore(event, file, fileList) {
        this.uploadbefore.isUploading = true;
      },
      handleFileUploadProgressAfter(event, file, fileList) {
        this.uploadafter.isUploading = true;
      },
      // 文件上传成功处理
      handleFileSuccessBefore(response, file, fileList) {
        this.uploadbefore.isUploading = false;
        //this.$refs.uploadbefore.clearFiles();
        this.beforeUrl = response.url;
        this.beforeFilename = response.fileName;
      },
      handleFileSuccessAfter(response, file, fileList) {
        this.uploadafter.isUploading = false;
        //this.$refs.uploadafter.clearFiles();
        this.afterUrl = response.url;
        this.afterFilename = response.fileName;
      },
      // 提交上传文件
      submitFileForm() {
        this.$refs.uploadbefore.submit()
        this.$refs.uploadafter.submit()
      },
      processImg (processId) {
        this.processImgVisible = true
        this.$nextTick(() => {
          this.$refs.processImg.init(processId)
        })
      },
    }
  };
</script>
