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

设备完整性泵、管件台账

liu85600613 преди 3 години
родител
ревизия
65832a7300
променени са 3 файла, в които са добавени 1784 реда и са изтрити 0 реда
  1. 741 0
      ui/src/views/intact/approve/index.vue
  2. 345 0
      ui/src/views/intact/check/check.vue
  3. 698 0
      ui/src/views/intact/check/index.vue

+ 741 - 0
ui/src/views/intact/approve/index.vue

@@ -0,0 +1,741 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item :label="$t('申请人')+' id'" prop="userId">
+        <el-input
+          v-model="queryParams.userId"
+          :placeholder="$t('请输入') + $t('申请人')+' id'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('设备')+' ids'" prop="devId">
+        <el-input
+          v-model="queryParams.devId"
+          :placeholder="$t('请输入') + $t('设备')+' ids'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('设备类型')" prop="devType">
+        <el-select v-model="queryParams.devType" :placeholder="$t('请选择') + $t('设备类型')" clearable size="small">
+          <el-option
+            v-for="dict in devTypeOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('审批类型')" prop="approveType">
+        <el-select v-model="queryParams.approveType" :placeholder="$t('请选择') + $t('审批类型')" clearable size="small">
+          <el-option
+            v-for="dict in approveTypeOptions"
+            :key="dict.dictValue"
+            :label="dict.dictLabel"
+            :value="dict.dictValue"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('附件')+' url'" prop="fileUrls">
+        <el-input
+          v-model="queryParams.fileUrls"
+          :placeholder="$t('请输入') + $t('附件')+' url'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('回执')+'url'" prop="reUrls">
+        <el-input
+          v-model="queryParams.reUrls"
+          :placeholder="$t('请输入') + $t('回执')+' url'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('申请状态')+' 0:'+$t('审批中')+' 1-'+$t('通过')+' 2-'+$t('拒绝')" prop="status">
+        <el-select v-model="queryParams.status" :placeholder="$t('请选择')+$t('申请状态')+' 0:'+$t('审批中')+' 1-'+$t('通过')+' 2-'+$t('拒绝')" clearable size="small">
+          <el-option :label="$t('请选择')+$t('字典生成')" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('开始时间')" prop="creattime">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.creattime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择')+$t('开始时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('结束时间')" prop="endtime">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.endtime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择')+$t('结束时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('流程')+' id'" prop="processId">
+        <el-input
+          v-model="queryParams.processId"
+          :placeholder="$t('请输入') + $t('流程')+' id'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('政府回执时间')" prop="govDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.govDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择')+$t('政府回执时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('延期日期')" prop="delayDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.delayDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择')+$t('延期日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('延期原因')" prop="delayReason">
+        <el-input
+          v-model="queryParams.delayReason"
+          :placeholder="$t('请输入') + $t('延期原因')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('延期措施')" prop="delayMeasure">
+        <el-input
+          v-model="queryParams.delayMeasure"
+          :placeholder="$t('请输入') + $t('延期措施')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('延期安全声明')" prop="delayNotice">
+        <el-input
+          v-model="queryParams.delayNotice"
+          :placeholder="$t('请输入') + $t('延期安全声明')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('申请编号')" prop="apNo">
+        <el-input
+          v-model="queryParams.apNo"
+          :placeholder="$t('请输入') + $t('申请编号')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('检查日期')" prop="checkDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.checkDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('检查日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('报告')+$t('空格')+'ids'" prop="reportId">
+        <el-input
+          v-model="queryParams.reportId"
+          :placeholder="$t('请输入') + $t('报告')+$t('空格')+'ids'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('月报告')+$t('空格')+'ids'" prop="monthId">
+        <el-input
+          v-model="queryParams.monthId"
+          :placeholder="$t('请输入') + $t('月报告')+$t('空格')+'ids'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('部门')+$t('空格')+'id'" prop="deptId">
+        <el-input
+          v-model="queryParams.deptId"
+          :placeholder="$t('请输入') + $t('部门')+$t('空格')+'id'"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['sems:approve:add']"
+        >{{ $t('新增') }}</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['sems:approve:edit']"
+        >{{ $t('修改') }}</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['sems:approve:remove']"
+        >{{ $t('删除') }}</el-button>
+      </el-col>
+        <el-col :span="1.5">
+            <el-button
+                    type="info"
+                    icon="el-icon-upload2"
+                    size="mini"
+                    @click="handleImport"
+                    v-hasPermi="['sems:approve:edit']"
+            >{{ $t('导入') }}</el-button>
+        </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['sems:approve:export']"
+        >{{ $t('导出') }}</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="approveList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="id" align="center" prop="id" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请人')+$t('空格')+'id'" align="center" prop="userId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备id')+'s'" align="center" prop="devId" :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('附件')+' url'" align="center" prop="fileUrls" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('回执')+' url'" align="center" prop="reUrls" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请状态')+' 0:'+$t('审批中')+' 1-'+$t('通过')+' 2-'+$t('拒绝')" align="center" prop="status" :show-overflow-tooltip="true"/>
+      <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('流程')+$t('空格')+'id'" align="center" prop="processId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('政府回执时间')" align="center" prop="govDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.govDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('延期日期')" align="center" prop="delayDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.delayDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('延期原因')" align="center" prop="delayReason" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('延期措施')" align="center" prop="delayMeasure" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('延期安全声明')" align="center" prop="delayNotice" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('申请编号')" align="center" prop="apNo" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('检查日期')" align="center" prop="checkDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.checkDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('报告')+$t('空格')+'ids'" align="center" prop="reportId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('月报告')+$t('空格')+'ids'" align="center" prop="monthId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('部门')+$t('空格')+'id'" align="center" prop="deptId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('操作')" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['sems:approve:edit']"
+          >{{ $t('修改') }}</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['sems:approve:remove']"
+          >{{ $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"
+    />
+
+    <!-- 添加或修改特种设备申请对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item :label="$t('申请人')+$t('空格')+'id'" prop="userId">
+          <el-input v-model="form.userId" :placeholder="$t('请输入')+ $t('申请人')+$t('空格')+'id'" />
+        </el-form-item>
+        <el-form-item :label="$t('设备id')+'s'" prop="devId">
+          <el-input v-model="form.devId" :placeholder="$t('请输入')+$t('设备id')+'s'" />
+        </el-form-item>
+        <el-form-item :label="$t('设备类型')" prop="devType">
+          <el-select v-model="form.devType" :placeholder="$t('请选择') + $t('设备类型')">
+            <el-option
+              v-for="dict in devTypeOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="parseInt(dict.dictValue)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item :label="$t('审批类型')" prop="approveType">
+          <el-select v-model="form.approveType" :placeholder="$t('请选择') + $t('审批类型')">
+            <el-option
+              v-for="dict in approveTypeOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="parseInt(dict.dictValue)"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item :label="$t('内容')">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item :label="$t('附件')+' url'" prop="fileUrls">
+          <el-input v-model="form.fileUrls" :placeholder="$t('请输入') +$t('附件')+' url'" />
+        </el-form-item>
+        <el-form-item :label="$t('回执')+' url'" prop="reUrls">
+          <el-input v-model="form.reUrls" :placeholder="$t('请输入') +$t('回执')+' url'" />
+        </el-form-item>
+        <el-form-item :label="$t('申请状态')+' 0:'+$t('审批中')+' 1-'+$t('通过')+' 2-'+$t('拒绝')">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">{{ $t('请选择') }}+{{ $t('字典生成') }}</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item :label="$t('开始时间')" prop="creattime">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.creattime"
+            type="date"
+            value-format="yyyy-MM-dd"
+                          :placeholder="$t('请选择') + $t('开始时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('结束时间')" prop="endtime">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.endtime"
+            type="date"
+            value-format="yyyy-MM-dd"
+                          :placeholder="$t('请选择') + $t('结束时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('流程')+$t('空格')+'id'" prop="processId">
+          <el-input v-model="form.processId" :placeholder="$t('请输入') +$t('流程')+$t('空格')+'id'" />
+        </el-form-item>
+        <el-form-item :label="$t('政府回执时间')" prop="govDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.govDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+                          :placeholder="$t('请选择') + $t('政府回执时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('延期日期')" prop="delayDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.delayDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+                          :placeholder="$t('请选择') + $t('延期日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('延期原因')" prop="delayReason">
+          <el-input v-model="form.delayReason" :placeholder="$t('请输入') + $t('延期原因')" />
+        </el-form-item>
+        <el-form-item :label="$t('延期措施')" prop="delayMeasure">
+          <el-input v-model="form.delayMeasure" :placeholder="$t('请输入') + $t('延期措施')" />
+        </el-form-item>
+        <el-form-item :label="$t('延期安全声明')" prop="delayNotice">
+          <el-input v-model="form.delayNotice" :placeholder="$t('请输入') + $t('延期安全声明')" />
+        </el-form-item>
+        <el-form-item :label="$t('申请编号')" prop="apNo">
+          <el-input v-model="form.apNo" :placeholder="$t('请输入') + $t('申请编号')" />
+        </el-form-item>
+        <el-form-item :label="$t('检查日期')" prop="checkDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.checkDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+                          :placeholder="$t('请选择') + $t('检查日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('报告')+$t('空格')+'ids'" prop="reportId">
+          <el-input v-model="form.reportId" :placeholder="$t('请输入') +$t('报告')+$t('空格')+'ids'" />
+        </el-form-item>
+        <el-form-item :label="$t('月报告')+$t('空格')+'ids'" prop="monthId">
+          <el-input v-model="form.monthId" :placeholder="$t('请输入') +$t('月报告')+$t('空格')+'ids'" />
+        </el-form-item>
+        <el-form-item :label="$t('删除标识')" prop="delFlag">
+          <el-input v-model="form.delFlag" :placeholder="$t('请输入') +$t('删除标识')" />
+        </el-form-item>
+        <el-form-item :label="$t('部门')+$t('空格')+'id'" prop="deptId">
+          <el-input v-model="form.deptId" :placeholder="$t('请输入') +$t('部门')+$t('空格')+'id'" />
+        </el-form-item>
+          <el-form-item :label="$t('归属部门')" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" :placeholder="$t('请选择') + $t('归属部门')" />
+          </el-form-item>
+      </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>
+      <!-- 用户导入对话框 -->
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+                  ref="upload"
+                  :limit="1"
+                  accept=".xlsx, .xls"
+                  :headers="upload.headers"
+                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                  :disabled="upload.isUploading"
+                  :on-progress="handleFileUploadProgress"
+                  :on-success="handleFileSuccess"
+                  :auto-upload="false"
+                  drag
+          >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                {{ $t('将文件拖到此处,或') }}
+                <em>{{ $t('点击上传') }}</em>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                  <el-checkbox v-model="upload.updateSupport" />{{ $t('是否更新已经存在的用户数据') }}
+                  <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
+              </div>
+              <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>
+              <el-button @click="upload.open = false">{{ $t('取 消') }}</el-button>
+          </div>
+      </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {
+    addApprove,
+    delApprove,
+    exportApprove,
+    getApprove,
+    importTemplate,
+    listApprove,
+    updateApprove
+  } 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";
+
+  export default {
+  name: "Approve",
+  components: { Treeselect },
+  // components: { Editor },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: false,
+      // 总条数
+      total: 0,
+      // 特种设备申请表格数据
+      approveList: [],
+      // 弹出层标题
+      title: "",
+      // 部门树选项
+      deptOptions: undefined,
+      clientHeight:300,
+      // 是否显示弹出层
+      open: false,
+      // 设备类型:字典
+      devTypeOptions: [],
+      // 审批类型字典
+      approveTypeOptions: [],
+        // 用户导入参数
+        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;
+    });
+  },
+  methods: {
+    /** 查询特种设备申请列表 */
+    getList() {
+      this.loading = true;
+      listApprove(this.queryParams).then(response => {
+        this.approveList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     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);
+    },
+    // 取消按钮
+    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();
+      }
+  }
+};
+</script>

+ 345 - 0
ui/src/views/intact/check/check.vue

@@ -0,0 +1,345 @@
+<template>
+  <el-dialog :title="$t('检验记录')" :visible.sync="visible" width="1200px" append-to-body>
+    <el-table v-loading="loading" :data="checkList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+<!--      <el-table-column :label="$t('创建人')" align="center" prop="createrCode" :show-overflow-tooltip="true"/>-->
+
+      <el-table-column :label="$t('检验单位')" align="center" prop="checkUnit" />
+      <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 v-if="[1,2,4].includes(this.devType)" :label="$t('安全状况等级')" align="center" prop="safeClass" />
+      <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="reportNo" />
+      <el-table-column v-if="[3,5,6].includes(this.devType)" :label="$t('定期检验结论')" align="center" prop="perTestConclusion" />
+      <el-table-column v-if="[1,2].includes(this.devType)" :label="$t('年度检查日期')" align="center" prop="yearWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.yearWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column v-if="[1,2].includes(this.devType)" :label="$t('年度检查结论')" align="center" prop="checkConclusion" />
+      <el-table-column v-if="[1,2].includes(this.devType)" :label="$t('下次年度检查日期')" align="center" prop="yearNextWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.yearNextWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column v-if="[1,2].includes(this.devType)" :label="$t('年度检查报告编号')" align="center" prop="yearReportNo" />
+      <el-table-column v-if="this.devType == 4" :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 v-if="this.devType == 4" :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 v-if="this.devType == 4" :label="$t('外部检验结论')" align="center" prop="outCheckConclusion" />
+      <el-table-column v-if="this.devType == 4" :label="$t('外部检验编号')" align="center" prop="outReportNo" />
+      <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-column :label="$t('操作')" align="center" fixed="right" width="120" class-name="small-padding fixed-width">-->
+<!--        <template slot-scope="scope">-->
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            icon="el-icon-edit"-->
+<!--            @click="handleUpdate(scope.row)"-->
+<!--          >{{ $t('修改') }}</el-button>-->
+<!--          <el-button-->
+<!--            size="mini"-->
+<!--            type="text"-->
+<!--            icon="el-icon-delete"-->
+<!--            @click="handleDelete(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"
+    />
+  </el-dialog>
+</template>
+
+<script>
+  import {addCheck, delCheck, exportCheck, getCheck, importTemplate, listCheck, updateCheck} from "@/api/sems/check";
+  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";
+
+  export default {
+  name: "Check",
+  components: { Treeselect },
+  data() {
+    return {
+      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
+      })
+    this.getTreeselect();
+  },
+  methods: {
+    init (row, type) {
+      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)
+        listCheck(this.queryParams).then(response => {
+          this.checkList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      })
+
+    },
+    /** 查询特种设备检验记录列表 */
+    getList() {
+      this.loading = true;
+      listCheck(this.queryParams).then(response => {
+        this.checkList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        delFlag: null,
+        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
+      };
+      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('添加')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getCheck(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = this.$t('修改')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateCheck(this.form).then(response => {
+              this.msgSuccess(this.$t('修改成功'));
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addCheck(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 delCheck(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 exportCheck(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();
+      }
+  }
+};
+</script>

+ 698 - 0
ui/src/views/intact/check/index.vue

@@ -0,0 +1,698 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item :label="$t('创建人')" prop="createrCode">
+        <el-input
+          v-model="queryParams.createrCode"
+          :placeholder="$t('请输入') + $t('创建人')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('创建时间')" prop="createdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.createdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('创建时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('修改人')" prop="updaterCode">
+        <el-input
+          v-model="queryParams.updaterCode"
+          :placeholder="$t('请输入') + $t('修改人')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('修改时间')" prop="updatedate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.updatedate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('修改时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('检验单位')" prop="checkUnit">
+        <el-input
+          v-model="queryParams.checkUnit"
+          :placeholder="$t('请输入') + $t('检验单位')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('定期检验日期')" prop="warnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.warnDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('定期检验日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('下次年检时间')" prop="nextWarnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.nextWarnDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('下次年检时间')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('报告编号')" prop="reportNo">
+        <el-input
+          v-model="queryParams.reportNo"
+          :placeholder="$t('请输入') + $t('报告编号')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('年度检查日期')" prop="yearWarnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.yearWarnDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('年度检查日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('年度检查结论')" prop="checkConclusion">
+        <el-input
+          v-model="queryParams.checkConclusion"
+          :placeholder="$t('请输入') + $t('年度检查结论')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('下次年度检查日期')" prop="yearNextWarnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.yearNextWarnDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('下次年度检查日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('年度检查报告编号')" prop="yearReportNo">
+        <el-input
+          v-model="queryParams.yearReportNo"
+          :placeholder="$t('请输入') + $t('年度检查报告编号')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('本次外部检验日期')" prop="outWarnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.outWarnDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('本次外部检验日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('下次外部检验日期')" prop="outNextWarnDate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.outNextWarnDate"
+                        type="date"
+          value-format="yyyy-MM-dd"
+          :placeholder="$t('请选择') + $t('下次外部检验日期')">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item :label="$t('外部检验结论')" prop="outCheckConclusion">
+        <el-input
+          v-model="queryParams.outCheckConclusion"
+          :placeholder="$t('请输入')+$t('外部检验结论')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('外部检验编号')" prop="outReportNo">
+        <el-input
+          v-model="queryParams.outReportNo"
+          :placeholder="$t('请输入') + $t('外部检验编号')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('设备id')" prop="devId">
+        <el-input
+          v-model="queryParams.devId"
+          :placeholder="$t('请输入') + $t('设备id')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item :label="$t('设备类型')" prop="devType">
+        <el-select v-model="queryParams.devType" :placeholder="$t('请选择') + $t('设备类型')" clearable size="small">
+          <el-option :label="$t('请选择')+$t('字典生成')" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item :label="$t('安全等级')" prop="safeClass">
+        <el-input
+          v-model="queryParams.safeClass"
+          :placeholder="$t('请输入') + $t('安全等级')"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">{{ $t('搜索') }}</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{ $t('重置') }}</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['sems:check:add']"
+        >{{ $t('新增') }}</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['sems:check:edit']"
+        >{{ $t('修改') }}</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['sems:check:remove']"
+        >{{ $t('删除') }}</el-button>
+      </el-col>
+        <el-col :span="1.5">
+            <el-button
+                    type="info"
+                    icon="el-icon-upload2"
+                    size="mini"
+                    @click="handleImport"
+                    v-hasPermi="['sems:check:edit']"
+            >{{ $t('导入') }}</el-button>
+        </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['sems:check:export']"
+        >{{ $t('导出') }}</el-button>
+      </el-col>
+	  <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="checkList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column :label="$t('唯一标识ID')" align="center" prop="id" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('创建人')" align="center" prop="createrCode" :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-column :label="$t('修改人')" align="center" prop="updaterCode" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('修改时间')" align="center" prop="updatedate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.updatedate, '{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="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="reportNo" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('年度检查日期')" align="center" prop="yearWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.yearWarnDate, '{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="yearNextWarnDate" width="100">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.yearNextWarnDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column :label="$t('年度检查报告编号')" align="center" prop="yearReportNo" :show-overflow-tooltip="true"/>
+      <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="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="outCheckConclusion" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('外部检验编号')" align="center" prop="outReportNo" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备id')" align="center" prop="devId" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('设备类型')" align="center" prop="devType" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('安全等级')" align="center" prop="safeClass" :show-overflow-tooltip="true"/>
+      <el-table-column :label="$t('操作')" align="center" fixed="right" width="120" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['sems:check:edit']"
+          >{{ $t('修改') }}</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['sems:check:remove']"
+          >{{ $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"
+    />
+
+    <!-- 添加或修改特种设备检验记录对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item :label="$t('状态')+' 0 :'+$t('正常')+' ;-1:'+$t('删除')" prop="delFlag">
+          <el-input v-model="form.delFlag" :placeholder="$t('请输入')+$t('状态')+' 0 :'+$t('正常')+' ;-1:'+$t('删除')" />
+        </el-form-item>
+        <el-form-item :label="$t('创建人')" prop="createrCode">
+          <el-input v-model="form.createrCode" :placeholder="$t('请输入') + $t('创建人')" />
+        </el-form-item>
+        <el-form-item :label="$t('创建时间')" prop="createdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.createdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('创建时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('修改人')" prop="updaterCode">
+          <el-input v-model="form.updaterCode" :placeholder="$t('请输入') + $t('修改人')" />
+        </el-form-item>
+        <el-form-item :label="$t('修改时间')" prop="updatedate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.updatedate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('修改时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('检验单位')" prop="checkUnit">
+          <el-input v-model="form.checkUnit" :placeholder="$t('请输入') + $t('检验单位')" />
+        </el-form-item>
+        <el-form-item :label="$t('定期检验日期')" prop="warnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.warnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('定期检验日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('下次年检时间')" prop="nextWarnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.nextWarnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('下次年检时间')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('报告编号')" prop="reportNo">
+          <el-input v-model="form.reportNo" :placeholder="$t('请输入') + $t('报告编号')" />
+        </el-form-item>
+        <el-form-item :label="$t('年度检查日期')" prop="yearWarnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.yearWarnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('年度检查日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('年度检查结论')" prop="checkConclusion">
+          <el-input v-model="form.checkConclusion" :placeholder="$t('请输入') + $t('年度检查结论')" />
+        </el-form-item>
+        <el-form-item :label="$t('下次年度检查日期')" prop="yearNextWarnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.yearNextWarnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('下次年度检查日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('年度检查报告编号')" prop="yearReportNo">
+          <el-input v-model="form.yearReportNo" :placeholder="$t('请输入') + $t('年度检查报告编号')" />
+        </el-form-item>
+        <el-form-item :label="$t('本次外部检验日期')" prop="outWarnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.outWarnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('本次外部检验日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('下次外部检验日期')" prop="outNextWarnDate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.outNextWarnDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            :placeholder="$t('请选择') + $t('下次外部检验日期')">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item :label="$t('外部检验结论')" prop="outCheckConclusion">
+          <el-input v-model="form.outCheckConclusion" :placeholder="$t('请输入') + $t('外部检验结论')" />
+        </el-form-item>
+        <el-form-item :label="$t('外部检验编号')" prop="outReportNo">
+          <el-input v-model="form.outReportNo" :placeholder="$t('请输入') + $t('外部检验编号')" />
+        </el-form-item>
+        <el-form-item :label="$t('设备id')" prop="devId">
+          <el-input v-model="form.devId" :placeholder="$t('请输入') + $t('设备id')" />
+        </el-form-item>
+        <el-form-item :label="$t('设备类型')" prop="devType">
+          <el-select v-model="form.devType" :placeholder="$t('请选择') + $t('设备类型')">
+            <el-option :label="$t('请选择')+$t('字典生成')" value="" />
+          </el-select>
+        </el-form-item>
+        <el-form-item :label="$t('安全等级')" prop="safeClass">
+          <el-input v-model="form.safeClass" :placeholder="$t('请输入') + $t('安全等级')" />
+        </el-form-item>
+          <el-form-item :label="$t('归属部门')" prop="deptId">
+              <treeselect v-model="form.deptId" :options="deptOptions" :show-count="true" :placeholder="$t('请选择') + $t('归属部门')" />
+          </el-form-item>
+      </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>
+      <!-- 用户导入对话框 -->
+      <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
+          <el-upload
+                  ref="upload"
+                  :limit="1"
+                  accept=".xlsx, .xls"
+                  :headers="upload.headers"
+                  :action="upload.url + '?updateSupport=' + upload.updateSupport"
+                  :disabled="upload.isUploading"
+                  :on-progress="handleFileUploadProgress"
+                  :on-success="handleFileSuccess"
+                  :auto-upload="false"
+                  drag
+          >
+              <i class="el-icon-upload"></i>
+              <div class="el-upload__text">
+                {{ $t('将文件拖到此处,或') }}
+                <em>{{ $t('点击上传') }}</em>
+              </div>
+              <div class="el-upload__tip" slot="tip">
+                  <el-checkbox v-model="upload.updateSupport" />{{ $t('是否更新已经存在的用户数据') }}
+                  <el-link type="info" style="font-size:12px" @click="importTemplate">{{ $t('下载模板') }}</el-link>
+              </div>
+              <div class="el-upload__tip" style="color:red" slot="tip">{{ $t('提示:仅允许导入“xls”或“xlsx”格式文件!') }}</div>
+          </el-upload>
+          <div slot="footer" class="dialog-footer">
+              <el-button type="primary" @click="submitFileForm">{{ $t('确 定') }}</el-button>
+              <el-button @click="upload.open = false">{{ $t('取 消') }}</el-button>
+          </div>
+      </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {addCheck, delCheck, exportCheck, getCheck, importTemplate, listCheck, updateCheck} from "@/api/sems/check";
+  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";
+
+  export default {
+  name: "Check",
+  components: { Treeselect },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      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
+      })
+    this.getList();
+    this.getTreeselect();
+  },
+  methods: {
+    /** 查询特种设备检验记录列表 */
+    getList() {
+      this.loading = true;
+      listCheck(this.queryParams).then(response => {
+        this.checkList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+     /** 查询部门下拉树结构 */
+     getTreeselect() {
+          treeselect().then(response => {
+              this.deptOptions = response.data;
+          });
+     },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        delFlag: null,
+        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
+      };
+      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('添加')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getCheck(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = this.$t('修改')+this.$t('特种设备') +this.$t('空格')+this.$t('检验记录');
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateCheck(this.form).then(response => {
+              this.msgSuccess(this.$t('修改成功'));
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addCheck(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 delCheck(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 exportCheck(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();
+      }
+  }
+};
+</script>