Преглед на файлове

设备完整性泵、管件台账

liu85600613 преди 3 години
родител
ревизия
928d757bf0

+ 15 - 0
master/src/main/java/com/ruoyi/project/intact/domain/TIntactGyl.java

@@ -230,6 +230,10 @@ public class TIntactGyl extends BaseEntity
     @Excel(name = "厂家")
     private String manufactor;
 
+    /** 档案 */
+    @Excel(name = "档案")
+    private String archives;
+
     /** 部门名称 */
     //@Excel(name = "部门名称")
     @TableField(exist = false)
@@ -703,6 +707,16 @@ public class TIntactGyl extends BaseEntity
         this.deptName = deptName;
     }
 
+    public void setArchives(String archives)
+    {
+        this.archives = archives;
+    }
+
+    public String getArchives()
+    {
+        return archives;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -758,6 +772,7 @@ public class TIntactGyl extends BaseEntity
             .append("bookNo", getBookNo())
             .append("manufactor", getManufactor())
             .append("deptName", getDeptName())
+            .append("archives", getArchives())
             .toString();
     }
 }

+ 17 - 0
master/src/main/java/com/ruoyi/project/intact/domain/TIntactYsj.java

@@ -111,12 +111,18 @@ public class TIntactYsj extends BaseEntity
     @Excel(name = "部门编号")
     private Long deptId;
 
+    /** 档案 */
+    @Excel(name = "档案")
+    private String archives;
+
     /** 部门名称 */
     //@Excel(name = "部门名称")
     @TableField(exist = false)
     private String deptName;
 
 
+
+
     public void setId(Long id)
     {
         this.id = id;
@@ -333,6 +339,16 @@ public class TIntactYsj extends BaseEntity
         this.deptName = deptName;
     }
 
+    public void setArchives(String archives)
+    {
+        this.archives = archives;
+    }
+
+    public String getArchives()
+    {
+        return archives;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -361,6 +377,7 @@ public class TIntactYsj extends BaseEntity
             .append("updatedate", getUpdatedate())
             .append("deptId", getDeptId())
             .append("deptName", getDeptName())
+            .append("archives", getArchives())
             .toString();
     }
 }

+ 829 - 0
ui/src/views/intact/approve/tapprove-add.vue

@@ -0,0 +1,829 @@
+<template>
+  <!-- 添加或修改特种设备申请对话框 -->
+  <el-dialog :title="$t('提交申请')" :visible.sync="visible" width="1200px" append-to-body>
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="" label-width="80px">
+    <el-form-item :label="$t('申请设备')">
+      <el-table
+        v-show="dataForm.approveType != 7 && dataForm.devType == 1"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="devno"
+          header-align="center"
+          align="center"
+          :label="$t('位号')">
+        </el-table-column>
+        <el-table-column
+          prop="devname"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="150"
+          :label="$t('设备名称')">
+        </el-table-column>
+        <el-table-column
+          prop="useno"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('使用证号码')">
+        </el-table-column>
+        <el-table-column
+          prop="medium"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('介质')">
+        </el-table-column>
+        <el-table-column
+          prop="desPressure"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('设计压力')+'(MPa)'">
+        </el-table-column>
+        <el-table-column
+          prop="desTemp"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('设计温度')+'(℃)'">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.approveType != 7 && dataForm.devType == 2"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          width="100"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="devno"
+          header-align="center"
+          align="center"
+          width="120"
+          :label="$t('位号')">
+        </el-table-column>
+        <el-table-column
+          prop="starting"
+          header-align="center"
+          align="center"
+          width="100"
+          :show-overflow-tooltip="true"
+          :label="$t('起点')">
+        </el-table-column>
+        <el-table-column
+          prop="ending"
+          header-align="center"
+          align="center"
+          width="100"
+          :show-overflow-tooltip="true"
+          :label="$t('终点')">
+        </el-table-column>
+        <el-table-column
+          prop="medium"
+          header-align="center"
+          align="center"
+          width="100"
+          :show-overflow-tooltip="true"
+          :label="$t('介质')">
+        </el-table-column>
+        <el-table-column
+          prop="desPressure"
+          header-align="center"
+          align="center"
+          :label="$t('设计压力')">
+        </el-table-column>
+        <el-table-column
+          prop="desTemp"
+          header-align="center"
+          align="center"
+          :label="$t('设计温度')">
+        </el-table-column>
+        <el-table-column
+          prop="optPressure"
+          header-align="center"
+          align="center"
+          :label="$t('工作压力')">
+        </el-table-column>
+        <el-table-column
+          prop="optTemp"
+          header-align="center"
+          align="center"
+          width="100"
+          :show-overflow-tooltip="true"
+          :label="$t('工作温度')">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.devType == 3"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="docno"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('档案号')">
+        </el-table-column>
+        <el-table-column
+          prop="devname"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="150"
+          :label="$t('设备名称')">
+        </el-table-column>
+        <el-table-column
+          prop="capacity"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('起吊重量')+'(ton)'">
+        </el-table-column>
+        <el-table-column
+          prop="location"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('使用地点')">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.devType == 4"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="devno"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('位号')">
+        </el-table-column>
+        <el-table-column
+          prop="devname"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('设备名称')">
+        </el-table-column>
+        <el-table-column
+          prop="useno"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('使用证号码')">
+        </el-table-column>
+        <el-table-column
+          prop="desTemp"
+          header-align="center"
+          align="center"
+          :label="$t('设计温度')+'(℃)'">
+        </el-table-column>
+        <el-table-column
+          prop="desPressure"
+          header-align="center"
+          align="center"
+          :label="$t('设计压力')+'(MPa)'">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.devType == 5"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="docno"
+          header-align="center"
+          align="center"
+          :label="$t('docNo')">
+        </el-table-column>
+        <el-table-column
+          prop="devname"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="150"
+          :label="$t('设备名称')">
+        </el-table-column>
+        <el-table-column
+          prop="model"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('型号')">
+        </el-table-column>
+        <el-table-column
+          prop="location"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          :label="$t('使用地点')">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.devType == 6"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="useDept"
+          header-align="center"
+          align="center"
+          :label="$t('dept')">
+        </el-table-column>
+        <el-table-column
+          prop="carNo"
+          header-align="center"
+          align="center"
+          :label="$t('plateNo')">
+        </el-table-column>
+        <el-table-column
+          prop="docno"
+          header-align="center"
+          align="center"
+          :label="$t('docNo')">
+        </el-table-column>
+        <el-table-column
+          prop="model"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('model')">
+        </el-table-column>
+      </el-table>
+      <el-table
+        v-show="dataForm.devType == 7"
+        :data="devList"
+        border
+        style="width: 100%;">
+        <el-table-column
+          prop="plantCode"
+          header-align="center"
+          align="center"
+          :label="$t('装置名称')">
+        </el-table-column>
+        <el-table-column
+          prop="unit"
+          header-align="center"
+          align="center"
+          :label="$t('单元')">
+        </el-table-column>
+        <el-table-column
+          prop="devno"
+          header-align="center"
+          align="center"
+          :label="$t('位号')">
+        </el-table-column>
+        <el-table-column
+          prop="devname"
+          header-align="center"
+          align="center"
+          :label="$t('名称')">
+        </el-table-column>
+        <el-table-column
+          prop="createno"
+          header-align="center"
+          align="center"
+          :label="$t('制造编号')">
+        </el-table-column>
+        <el-table-column
+          prop="indiameter"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('内径')+'mm'">
+        </el-table-column>
+        <el-table-column
+          prop="height"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('高(长)')+'mm'">
+        </el-table-column>
+        <el-table-column
+          prop="chickness"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('壁厚(mm)')">
+        </el-table-column>
+        <el-table-column
+          prop="volume"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('容积mm³')">
+        </el-table-column>
+        <el-table-column
+          prop="medium"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('介质')">
+        </el-table-column>
+        <el-table-column
+          prop="material"
+          header-align="center"
+          align="center"
+          :show-overflow-tooltip="true"
+          width="120"
+          :label="$t('材料')">
+        </el-table-column>
+      </el-table>
+    </el-form-item>
+      <el-form-item :label="$t('审批类型')" prop="approveType">
+        <el-select v-model="dataForm.approveType" :placeholder="$t('审批类型')" @change="handleChange">
+          <el-option
+            v-for="dict in approveOption"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="parseInt(dict.dictValue)">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item v-if="!this.showDelay" :label="$t('原因')+$t('空格')+$t('描述')" prop="content">
+        <el-input type="textarea" :placeholder="$t('原因')+$t('空格')+$t('描述')"
+                  v-model="dataForm.content"
+                  maxlength="200" show-word-limit
+                  :autosize="{ minRows: 2, maxRows: 10}"></el-input>
+      </el-form-item>
+      <el-form-item :label="$t('附件')" prop="fileUrl">
+        <el-upload
+          ref="doc"
+          :limit="5"
+          :headers="doc.headers"
+          :action="doc.url"
+          :disabled="doc.isUploading"
+          :on-progress="handleFileDocProgress"
+          :on-success="handleFileDocSuccess"
+          :on-remove="handleRemove"
+          :auto-upload="true"
+          :file-list="fileList"
+          drag
+        >
+          <i class="el-icon-upload"></i>
+          <div class="el-upload__text">
+            {{ $t('将文件拖到此处,或') }}
+            <em>{{ $t('点击上传') }}</em>
+          </div>
+          <div v-if="showDelay" class="el-upload__tip" slot="tip">{{ this.fileTips }}</div>
+        </el-upload>
+      </el-form-item>
+      <el-form-item :label="$t('维修经理')" prop="wxjl">
+        <el-select v-model="dataForm.wxjl" filterable :placeholder="$t('请选择') + $t('维修经理')">
+          <el-option
+            v-for="item in wxjlOption"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+            :disabled="item.disabled">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('工艺经理')" prop="gyjl">
+        <el-select v-model="dataForm.gyjl" filterable :placeholder="$t('请选择') + $t('工艺经理')">
+          <el-option
+            v-for="item in gyjlOption"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+            :disabled="item.disabled">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('工艺总监')" prop="gyzj">
+        <el-select v-model="dataForm.gyzj" filterable :placeholder="$t('请选择') + $t('工艺总监')">
+          <el-option
+            v-for="item in gyzjOption"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+            :disabled="item.disabled">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('维修总监')" prop="wxzj">
+        <el-select v-model="dataForm.wxzj" filterable :placeholder="$t('请选择') + $t('维修总监')">
+          <el-option
+            v-for="item in wxzjOption"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+            :disabled="item.disabled">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('政府回执')" prop="zf">
+        <el-select v-model="dataForm.zf" filterable :placeholder="$t('请输入') + $t('政府回执')">
+          <el-option
+            v-for="item in zfOption"
+            :key="item.userId"
+            :label="item.nickName"
+            :value="item.userId"
+            :disabled="item.disabled">
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <template v-if="dataForm.approveType == 5">
+        <el-form-item :label="$t('延期日期')" prop="delayDate">
+          <el-form-item prop="endTime">
+            <el-date-picker
+              v-model="dataForm.delayDate"
+              type="date"
+              value-format="yyyy-MM-dd"
+              :placeholder="$t('selectDate')" >
+            </el-date-picker>
+          </el-form-item>
+        </el-form-item>
+        <el-form-item :label="$t('延期原因')" prop="delayReason">
+          <el-input type="textarea" :placeholder="$t('延期原因')"
+                    v-model="dataForm.delayReason"
+                    :autosize="{ minRows: 2, maxRows: 50}" ></el-input>
+        </el-form-item>
+        <el-form-item :label="$t('延期措施')" prop="delayMeasure">
+          <el-input type="textarea" :placeholder="$t('延期措施')"
+                    v-model="dataForm.delayMeasure"
+                    :autosize="{ minRows: 2, maxRows: 50}" ></el-input>
+        </el-form-item>
+        <el-form-item :label="$t('延期责任安全声明')" prop="delayNotice">
+          <el-input type="textarea" :placeholder="$t('延期责任安全声明')"
+                    v-model="dataForm.delayNotice"
+                    :autosize="{ minRows: 2, maxRows: 50}" ></el-input>
+        </el-form-item>
+      </template>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitForm">{{ $t('提交') }}</el-button>
+      <el-button @click="cancel">{{ $t('取消') }}</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import {getToken} from "@/utils/auth";
+  import {addApprove, getApprove} from "@/api/sems/approve";
+  import {listPostUser} from "@/api/system/user";
+
+  export default {
+  name: "tapprove-add",
+  data() {
+    return {
+      visible: false,
+      devList: [],
+      wxjlOption:[],
+      gyjlOption:[],
+      gyzjOption:[],
+      wxzjOption:[],
+      zfOption:[],
+      fileTips: '',
+      showDelay: false,
+      dataForm: {
+        id: 0,
+        userId: '',
+        devId: '',
+        devType: '',
+        approveType: '',
+        content: '',
+        fileUrls: '',
+        reUrls: '',
+        status: '',
+        createTime: '',
+        plantCode: '',
+        unit: '',
+        devname: '',
+        devno: '',
+        files: [],
+        delayDate: '',
+        delayReason: '',
+        delayMeasure: '',
+        delayNotice: '',
+        wxjl: '',
+        gyzj: '',
+        gyjl: '',
+        wxzj: '',
+        zf: ''
+      },
+      doc: {
+        file: "",
+        // 是否显示弹出层(报告附件)
+        open: false,
+        // 弹出层标题(报告附件)
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 0,
+        // 报告附件上传位置编号
+        ids: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/sems/specfile/uploadFile",
+        commonfileList: null,
+        pType: 'traning',
+        pId: null
+      },
+      dataRule: {
+        approveType: [
+          { required: true, message: this.$t('approveType') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        content: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        wxjl: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        wxzj: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        gyjl: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        gyzj: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ],
+        zf: [
+          { required: true, message: this.$t('content') + this.$t('notEmpty'), trigger: 'blur' }
+        ]
+      },
+      approveOption: [],
+      belong: '',
+      fileList: [],
+    };
+  },
+  watch: {
+    // 根据名称筛选部门树
+    deptName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
+  created() {
+
+  },
+  methods: {
+    init (rows, type) {
+      this.fileList = []
+      this.devList = rows
+
+      listPostUser({
+        // postCode: 'wxjl'
+      }).then(response => {
+        this.wxjlOption = response;
+      });
+      listPostUser({
+        // postCode: 'gyjl'
+      }).then(response => {
+        this.gyjlOption = response;
+      });
+      listPostUser({
+        // postCode: 'gyzj'
+      }).then(response => {
+        this.gyzjOption = response;
+      });
+      listPostUser({
+        // postCode: 'wxzj'
+      }).then(response => {
+        this.wxzjOption = response;
+      });
+      listPostUser({
+        // postCode: 'sems'
+      }).then(response => {
+        this.zfOption = response;
+      });
+      console.log(type)
+      this.getDicts("spec_approve_type").then(response => {
+        this.approveOption = response.data;
+        for (let i = 0; i < this.approveOption.length ; i++) {
+          if(this.approveOption[i].dictValue == this.devList[0].status){
+            this.approveOption.splice(i ,1)
+          }if (this.approveOption[i].dictLabel == "年度检查报告申请") {
+            this.approveOption.splice(i ,1)
+          }if (this.approveOption[i].dictLabel == "月度检查报告申请") {
+            this.approveOption.splice(i ,1)
+          }
+        }
+      });
+
+      this.visible = true
+      this.dataForm.devType = type.toString()
+      for (let i = 0; i < rows.length; i++) {
+        if (i == 0){
+          this.dataForm.devId = rows[i].id
+        }else {
+          this.dataForm.devId += ',' + rows[i].id
+        }
+      }
+      this.belong = type + '_'  + '/' + new Date().getTime()
+    },
+    // 设备类型:字典翻译
+    devTypeFormat(row, column) {
+      return this.selectDictLabel(this.devTypeOptions, row.devType);
+    },
+    // 审批类型字典翻译
+    approveTypeFormat(row, column) {
+      return this.selectDictLabel(this.approveTypeOptions, row.approveType);
+    },
+    // 取消按钮
+    cancel() {
+      this.$emit('refreshDataList')
+      this.visible = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = this.$t('添加特种设备申请');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getApprove(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = this.$t('修改特种设备申请');
+      });
+    },
+    //附件上传中处理
+    handleFileDocProgress(event, file, fileList) {
+    },
+    handleRemove (file, fileList) {
+      this.fileList = fileList
+    },
+    //附件上传成功处理
+    handleFileDocSuccess(response, file, fileList) {
+      this.fileList = fileList
+      if (response.code == 200){
+        this.$alert(this.$t('导入成功'), this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      }else {
+        this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+      }
+
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.dataForm.files = []
+      console.log(this.fileList)
+      if (this.fileList.length > 0) {
+        for (let i = 0; i < this.fileList.length; i++) {
+          let obj = {}
+          obj.fileName = this.fileList[i].name
+          obj.fileUrl = this.fileList[i].response.msg
+          this.dataForm.files.push(obj)
+        }
+      }
+      this.$refs["dataForm"].validate(valid => {
+        if (valid) {
+            addApprove(this.dataForm).then(response => {
+              this.msgSuccess(this.$t('新增成功'));
+              this.visible = false;
+            });
+        }
+      });
+      this.$emit('refreshDataList')
+    },
+    handleChange(value) {
+      this.showDelay = false
+      if (value == -1) {
+        this.fileTips = '提示:请提供相关支持文件'
+      }else if (value == 1) {
+        this.fileTips = '提示:请提供启用前检查报告'
+      }else if (value == 2) {
+        this.fileTips = ''
+      }else if (value == 3) {
+        this.fileTips = '提示:请提供设备主体破坏后的照片,防止被其他单位买走重新使用'
+      }else if (value == 4) {
+        this.fileTips = '提示:请提供相关支持文件'
+      }else if (value == 5) {
+        this.showDelay = true
+        this.fileTips = '提示:延期发起的会议纪要等背景情况'
+        this.dataForm.delayReason=
+          '根据2015年压力管道检验报告,清单中的相关管道材质中度球化,安全等级定为3级,下次检验日期定为2018年5月。\n' +
+          '由于这些管道连接电厂蒸汽母管,无法单独隔绝,只有在2020年扬巴大修期间才有机会停车检验,因此提出延期申请。\n'
+        this.dataForm.delayMeasure=
+          '(生产部门,应该根据实际情况,组织机械,电仪各专业,制定具体的运行监控措施描述)\n' +
+          '\n' +
+          '工艺部门:\n' +
+          '维持相关管道操作稳定\n' +
+          '持续监控相关管道操作压力和温度\n' +
+          '按照法规要求,定期开展应急演练\n' +
+          '\n' +
+          '\n' +
+          '机修部门:\n' +
+          '每月对相关管道进行走线巡检,对管道支吊架,保温目视检查。如有问题,记录在巡检记录中\n' +
+          '及时报告管道使用情况及需要解决的问题\n' +
+          '发生事故及时组织调查处理,并配合写出事故报告书\n' +
+          '\n' +
+          '电仪部门:\n' +
+          'XXXXXXXXXXX描述电仪方面的维护或监控措施\n'
+        this.dataForm.delayNotice=
+          '我单位/装置,已制定相应预防措施和应急预案,并保证落实安全管理责任、操作人员持证上岗、安全附件和安全保护装置在有效期内。在检验延期期间,将对以上设备加强巡查和实施有效安全监控,做好监控记录,对延期期间的设备安全负完全责任;在延期期满前,我单位将申报并安排以上设备实施定期检验。'
+      }else if (value == 6) {
+        this.fileTips = '提示:请提供安全评估报告'
+      }else {
+        this.fileTips = ''
+      }
+    },
+}
+}
+
+
+</script>
+
+<style scoped>
+
+</style>

+ 342 - 0
ui/src/views/intact/approve/tapprove-his.vue

@@ -0,0 +1,342 @@
+<template>
+  <el-dialog :title="$t('申请记录')" :visible.sync="visible" width="1200px" append-to-body>
+    <el-table v-loading="loading" :data="approveList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column :label="$t('申请人')" align="center" prop="userName" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备类型')+':'" align="center" prop="devType" :formatter="devTypeFormat" />
+      <el-table-column :label="$t('审批类型')" align="center" prop="approveType" :formatter="approveTypeFormat" />
+      <el-table-column :label="$t('内容')" align="center" prop="content" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请状态')" align="center" prop="status"  :formatter="statusFormat"/>
+      <el-table-column :label="$t('开始时间')" align="center" prop="creattime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.creattime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('结束时间')" align="center" prop="endtime" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endtime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('操作')" align="center"  width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            @click="detailHandle(scope.row)"
+          >{{ $t('查看') }}</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"-->
+<!--    />-->
+    <add-or-update v-if="specDealVisible" ref="specDeal" @refreshDataList="getList"></add-or-update>
+  </el-dialog>
+</template>
+
+<script>
+import { listApprove, getApprove,listHisApprove, delApprove, addApprove, updateApprove, exportApprove, importTemplate} from "@/api/sems/approve";
+import { treeselect } from "@/api/system/dept";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import AddOrUpdate from '../../approve/approveDetail/spec-detail';
+import Editor from '@/components/Editor';
+
+export default {
+  name: "Approve",
+  components: { Treeselect,AddOrUpdate },
+  // components: { Editor },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      visible: false,
+      specDealVisible: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 特种设备申请表格数据
+      approveList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      // 是否显示弹出层
+      open: false,
+      // 设备类型:字典
+      devTypeOptions: [],
+      // 审批类型字典
+      approveTypeOptions: [],
+      statusOptions: [],
+        // 用户导入参数
+        upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/sems/approve/importData"
+        },
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 20,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: null,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        deptId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        userId: [
+          { required: true, message: this.$t('申请人')+this.$t('空格') +'id' + this.$t('不能为空'), trigger: "blur" }
+        ],
+      }
+    };
+  },
+  watch: {
+        // 根据名称筛选部门树
+        deptName(val) {
+            this.$refs.tree.filter(val);
+        }
+   },
+  created() {
+      //设置表格高度对应屏幕高度
+      this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+      })
+    this.getList();
+    this.getTreeselect();
+    this.getDicts("spec_dev_type").then(response => {
+      this.devTypeOptions = response.data;
+    });
+    this.getDicts("spec_approve_type").then(response => {
+      this.approveTypeOptions = response.data;
+    });
+    this.getDicts("spec_approve_res").then(response => {
+      this.statusOptions = response.data;
+    });
+  },
+  methods: {
+    init (row, type) {
+      this.visible = true
+      this.loading = true;
+      this.queryParams.devId = row.id
+      this.queryParams.devType = row.devType
+      listHisApprove(this.queryParams).then(response => {
+        this.approveList = response.data;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    /** 查询特种设备申请列表 */
+    getList() {
+
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 设备类型:字典翻译
+    devTypeFormat(row, column) {
+      return this.selectDictLabel(this.devTypeOptions, row.devType);
+    },
+    // 审批类型字典翻译
+    approveTypeFormat(row, column) {
+      return this.selectDictLabel(this.approveTypeOptions, row.approveType);
+    },
+    // 审批类型字典翻译
+    statusFormat(row, column) {
+      return this.selectDictLabel(this.statusOptions, row.status);
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        userId: null,
+        devId: null,
+        devType: null,
+        approveType: null,
+        content: null,
+        fileUrls: null,
+        reUrls: null,
+        status: 0,
+        creattime: null,
+        endtime: null,
+        processId: null,
+        govDate: null,
+        delayDate: null,
+        delayReason: null,
+        delayMeasure: null,
+        delayNotice: null,
+        apNo: null,
+        checkDate: null,
+        reportId: null,
+        monthId: null,
+        delFlag: null,
+        deptId: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = this.$t('添加特种设备申请');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getApprove(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title =this.$t('修改特种设备申请');
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateApprove(this.form).then(response => {
+              this.msgSuccess(this.$t('修改成功'));
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addApprove(this.form).then(response => {
+              this.msgSuccess(this.$t('新增成功'));
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm(this.$t('是否确认删除?'), this.$t('警告'), {
+        confirmButtonText: this.$t('确定'),
+        cancelButtonText: this.$t('取消'),
+          type: "warning"
+        }).then(function() {
+          return delApprove(ids);
+        }).then(() => {
+          this.getList();
+        this.msgSuccess(this.$t('删除成功'));
+        })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm(this.$t('是否确认导出所有特种设备申请数据项?'), this.$t('警告'), {
+        confirmButtonText: this.$t('确定'),
+        cancelButtonText: this.$t('取消'),
+          type: "warning"
+        }).then(function() {
+          return exportApprove(queryParams);
+        }).then(response => {
+          this.download(response.msg);
+        })
+    },
+      /** 导入按钮操作 */
+      handleImport() {
+          this.upload.title = this.$t('用户导入');
+          this.upload.open = true;
+      },
+      /** 下载模板操作 */
+      importTemplate() {
+          importTemplate().then(response => {
+              this.download(response.msg);
+          });
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+          this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+          this.upload.open = false;
+          this.upload.isUploading = false;
+          this.$refs.upload.clearFiles();
+          this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
+          this.getList();
+      },
+      // 提交上传文件
+      submitFileForm() {
+          this.$refs.upload.submit();
+      },
+    //操作审批流程
+    detailHandle (row) {
+        this.specDealVisible = true
+        this.$nextTick(() => {
+          console.log(row.taskName)
+          this.$refs.specDeal.init(row.id, row.taskId, row.processId,row.taskName)
+        })
+
+    },
+  }
+};
+</script>

+ 195 - 0
ui/src/views/intact/pump/specGl-hisReform.vue

@@ -0,0 +1,195 @@
+<template>
+  <el-dialog :title="$t('改造记录')" :visible.sync="visible" width="1200px" append-to-body>
+    <el-table v-loading="loading" ref="reTable" :data="specHiGlList"  :height="clientHeight" border>
+      <el-table-column :label="$t('装置')" align="center" fixed="left"  prop="plantCode" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('单元')" align="center"  fixed="left" prop="unit" :show-overflow-tooltip="true"/>
+<!--      <el-table-column :label="$t('状态')" align="center"  fixed="left" prop="status" :formatter="statusFormat" />-->
+<!--      <el-table-column :label="$t('申请状态')" align="center" fixed="left"  prop="approveStatus" :formatter="approveStatusFormat" />-->
+      <el-table-column :label="$t('装置维修组')" align="center" fixed="left"  prop="plantMaint" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('装置维修工程师')" align="center" fixed="left"  prop="engineer" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('位号')" align="center"  fixed="left" prop="devno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备名称')" align="center" prop="devname" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('型号')" align="center" prop="model" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('使用证号码')" align="center" prop="useno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('注册编号')" align="center" prop="regno" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('制造单位')" align="center" prop="createUnit" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('燃烧方式')" align="center" prop="burnMode" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('水处理方式')" align="center" prop="waterMode" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('燃烧种类')" align="center" prop="burnKind" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('额定出力')" align="center" prop="ratedPower" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设计温度')+'℃'" align="center" prop="desTemp" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('操作温度')+'℃'" align="center" prop="optTemp" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设计压力')+'MPa(G)'" align="center" prop="desPressure" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('操作压力')+'MPa(G)'" align="center" prop="optPressure" :show-overflow-tooltip="true"/>
+
+      <el-table-column :label="$t('投用日期')" align="center" prop="submitdate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.submitdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('检验单位')" align="center" prop="checkUnit" :show-overflow-tooltip="true"/>
+
+      <el-table-column :label="$t('本次内部检验日期')" align="center" prop="warnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.warnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('内部检验结论')" align="center" prop="checkConclusion" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('内部检验报告编号')" align="center" prop="reportNo" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('下次内部检验日期')" align="center" prop="nextWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.nextWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('本次外部检验日期')" align="center" prop="outWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.outWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column :label="$t('外部检验结论')" align="center" prop="outCheckConclusion" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('外部检验报告编号')" align="center" prop="outReportNo" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('下次外部检验日期')" align="center" prop="outNextWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.outNextWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('备注')" align="center" prop="remarks" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('创建时间')" align="center" prop="createdate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+
+    </el-table>
+  </el-dialog>
+</template>
+
+<script>
+  import {getSpecGlByReform} from "@/api/sems/specGl";
+  import { getToken } from "@/utils/auth";
+  import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+  export default {
+        name: "specGl-hisReform",
+      data() {
+        return {
+          specHiGlList: [],
+          devType: null,
+          // 遮罩层
+          loading: true,
+          visible: false,
+          // 选中数组
+          ids: [],
+          // 非单个禁用
+          single: true,
+          // 非多个禁用
+          multiple: true,
+          // 显示搜索条件
+          showSearch: false,
+          // 总条数
+          total: 0,
+          // 特种设备检验记录表格数据
+          checkList: [],
+          // 弹出层标题
+          title: "",
+          // 部门树选项
+          deptOptions: undefined,
+          clientHeight:300,
+          // 是否显示弹出层
+          open: false,
+          // 用户导入参数
+          upload: {
+            // 是否显示弹出层(用户导入)
+            open: false,
+            // 弹出层标题(用户导入)
+            title: "",
+            // 是否禁用上传
+            isUploading: false,
+            // 是否更新已经存在的用户数据
+            updateSupport: 0,
+            // 设置上传的请求头部
+            headers: { Authorization: "Bearer " + getToken() },
+            // 上传的地址
+            url: process.env.VUE_APP_BASE_API + "/sems/check/importData"
+          },
+          // 查询参数
+          queryParams: {
+            pageNum: 1,
+            pageSize: 20,
+            createrCode: null,
+            createdate: null,
+            updaterCode: null,
+            updatedate: null,
+            checkUnit: null,
+            warnDate: null,
+            nextWarnDate: null,
+            reportNo: null,
+            yearWarnDate: null,
+            checkConclusion: null,
+            yearNextWarnDate: null,
+            yearReportNo: null,
+            outWarnDate: null,
+            outNextWarnDate: null,
+            outCheckConclusion: null,
+            outReportNo: null,
+            devId: null,
+            devType: null,
+            safeClass: null
+          },
+
+          // 表单参数
+          form: {},
+          // 表单校验
+          rules: {
+          }
+        };
+      },
+      watch: {
+        // // 根据名称筛选部门树
+        // deptName(val) {
+        //   this.$refs.tree.filter(val);
+        // }
+      },
+      created() {
+        //设置表格高度对应屏幕高度
+        this.$nextTick(() => {
+          this.clientHeight = document.body.clientHeight -250
+        })
+
+      },
+      methods: {
+        init(row) {
+          this.visible = true
+          this.queryParams.devId = row.id
+          // this.queryParams.devType = type
+          // this.devType = type
+          // console.log(this.devType)
+          this.loading = true;
+          this.$nextTick(() => {
+            console.log(this.queryParams)
+            getSpecGlByReform(row.id).then(response => {
+              this.specHiGlList = response.data;
+              this.$nextTick(() => {
+                this.$refs.reTable.doLayout(); // 解决表格错位
+              });
+              this.loading = false;
+            });
+          })
+
+        },
+        // 状态字典翻译
+        statusFormat(row, column) {
+          return this.selectDictLabel(this.statusOptions, row.status);
+        },
+        // 申请状态字典翻译
+        approveStatusFormat(row, column) {
+          return this.selectDictLabel(this.approveStatusOptions, row.approveStatus);
+        },
+      }
+    }
+</script>
+
+<style scoped>
+
+</style>