|
@@ -2,21 +2,13 @@
|
|
|
<div class="app-container">
|
|
|
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
|
|
|
<el-form-item label="创建日期" prop="createdate">
|
|
|
- <el-date-picker clearable size="small" style="width: 200px"
|
|
|
- v-model="queryParams.createdate"
|
|
|
- type="date"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- placeholder="选择创建日期">
|
|
|
+ <el-date-picker clearable size="small" style="width: 200px" v-model="queryParams.createdate" type="date"
|
|
|
+ value-format="yyyy-MM-dd" placeholder="选择创建日期">
|
|
|
</el-date-picker>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="物料名称" prop="matterName">
|
|
|
- <el-input
|
|
|
- v-model="queryParams.matterName"
|
|
|
- placeholder="请输入物料名称"
|
|
|
- clearable
|
|
|
- size="small"
|
|
|
- @keyup.enter.native="handleQuery"
|
|
|
- />
|
|
|
+ <el-form-item label="危害物质名称" prop="matterName">
|
|
|
+ <el-input v-model="queryParams.matterName" placeholder="请输入危害物质名称" 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">搜索</el-button>
|
|
@@ -26,35 +18,17 @@
|
|
|
|
|
|
<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="['ehs:matter:add']"
|
|
|
- >新增
|
|
|
+ <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ehs:matter:add']">新增
|
|
|
</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="['ehs:matter:edit']"
|
|
|
- >修改
|
|
|
+ <el-button type="success" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
|
|
+ v-hasPermi="['ehs:matter:edit']">修改
|
|
|
</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="['ehs:matter:remove']"
|
|
|
- >删除
|
|
|
+ <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
|
|
+ v-hasPermi="['ehs:matter:remove']">删除
|
|
|
</el-button>
|
|
|
</el-col>
|
|
|
<!-- <el-col :span="1.5">
|
|
@@ -82,56 +56,178 @@
|
|
|
|
|
|
<el-table v-loading="loading" :data="matterList" @selection-change="handleSelectionChange" :height="clientHeight"
|
|
|
border>
|
|
|
- <el-table-column type="selection" width="55" align="center"/>
|
|
|
- <el-table-column label="编号" align="center" prop="id" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="物料名称" align="center" prop="matterName" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="相关危害集合" align="center" prop="matterFeatures" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="相关防护措施集合" align="center" prop="matterProtects" :show-overflow-tooltip="true"/>
|
|
|
- <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true"/>
|
|
|
+ <el-table-column type="selection" width="55" align="center" />
|
|
|
+ <el-table-column label="编号" align="center" prop="id" :show-overflow-tooltip="true" />
|
|
|
+ <el-table-column label="危害物质名称" align="center" prop="matterName" :show-overflow-tooltip="true" />
|
|
|
+ <el-table-column label="相关危害集合" align="center" prop="matterFeatures" :show-overflow-tooltip="true" />
|
|
|
+ <el-table-column label="相关防护措施集合" align="center" prop="matterProtects" :show-overflow-tooltip="true" />
|
|
|
+ <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" />
|
|
|
<el-table-column label="操作" 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="['ehs:matter:edit']"
|
|
|
- >修改
|
|
|
+ <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
|
|
+ v-hasPermi="['ehs:matter:edit']">修改
|
|
|
</el-button>
|
|
|
- <el-button
|
|
|
- size="mini"
|
|
|
- type="text"
|
|
|
- icon="el-icon-delete"
|
|
|
- @click="handleDelete(scope.row)"
|
|
|
- v-hasPermi="['ehs:matter:remove']"
|
|
|
- >删除
|
|
|
+ <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
|
|
+ v-hasPermi="['ehs:matter:remove']">删除
|
|
|
</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"
|
|
|
- />
|
|
|
+ <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-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="物料名称" prop="matterName">
|
|
|
- <el-input v-model="form.matterName" placeholder="请输入物料名称"/>
|
|
|
+ <el-form-item label="危害物质名称" prop="matterName">
|
|
|
+ <el-input v-model="form.matterName" placeholder="请输入危害物质名称" style="width: 200px;" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="相关危害集合" prop="matterFeatures">
|
|
|
- <el-input v-model="form.matterFeatures" placeholder="请输入相关危害集合"/>
|
|
|
+ <el-form-item label="请选择相关危害">
|
|
|
+ <table>
|
|
|
+ <tr style="text-align: center;">
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/toxicIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/flammableIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/oxidizingIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/explosiveIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/corrosiveIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;"
|
|
|
+ :src="require('@/assets/image/irritantSensitizationToxicIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/healthHazardIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;" :src="require('@/assets/image/compressedGasIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ <td style="width: 80px;">
|
|
|
+ <el-image style="width: 70px;height: 70px;"
|
|
|
+ :src="require('@/assets/image/environmentalHazardIcon.png')">
|
|
|
+ </el-image>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr style="text-align: center;">
|
|
|
+ <td style="width: 50px;">毒性<br>
|
|
|
+ <el-checkbox v-model="cIsToxic" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 50px;">易燃性<br>
|
|
|
+ <el-checkbox v-model="cIsFlammable" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 50px;">氧化性<br>
|
|
|
+ <el-checkbox v-model="cIsOxidizing" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 50px;">爆炸性<br>
|
|
|
+ <el-checkbox v-model="cIsExplosive" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 50px;">腐蚀性<br>
|
|
|
+ <el-checkbox v-model="cIsCorrosive" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 120px;">刺激性/致敏性/毒性<br>
|
|
|
+ <el-checkbox v-model="cIsIrritantToxic" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 70px;">健康危害<br>
|
|
|
+ <el-checkbox v-model="cIsHealthHazard" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 70px;">压力下气体<br>
|
|
|
+ <el-checkbox v-model="cIsCompressedGas" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ <td style="width: 90px;">危害水生环境<br>
|
|
|
+ <el-checkbox v-model="cIsEnvironmentalHazard" true-label="1" false-label="0" />
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="相关防护措施集合" prop="matterProtects">
|
|
|
- <el-input v-model="form.matterProtects" placeholder="请输入相关防护措施集合"/>
|
|
|
+ <el-form-item label="请选择相关防护用品">
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ 防护眼镜
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-select v-model="protectGlove" placeholder="请选择防护眼镜">
|
|
|
+ <el-option v-for="dict in protectGloves" :key="dict.id" :label="dict.conservatoryMeasureName"
|
|
|
+ :value="dict.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ 防护手套
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-select v-model="safeGoggle" placeholder="请选择防护手套">
|
|
|
+ <el-option v-for="dict in safeGoggles" :key="dict.id" :label="dict.conservatoryMeasureName"
|
|
|
+ :value="dict.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ 防护面罩
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-select v-model="resProtect" placeholder="请选择防护面罩">
|
|
|
+ <el-option v-for="dict in resProtects" :key="dict.id" :label="dict.conservatoryMeasureName"
|
|
|
+ :value="dict.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ 防护靴
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-select v-model="rubberBoot" placeholder="请选择防护靴">
|
|
|
+ <el-option v-for="dict in rubberBoots" :key="dict.id" :label="dict.conservatoryMeasureName"
|
|
|
+ :value="dict.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ <tr>
|
|
|
+ <td>
|
|
|
+ 防护服
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <el-select v-model="protectSuit" placeholder="请选择防护服">
|
|
|
+ <el-option v-for="dict in protectSuits" :key="dict.id" :label="dict.conservatoryMeasureName"
|
|
|
+ :value="dict.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="相关危害集合" prop="matterFeatures">
|
|
|
+ <el-input v-model="form.matterFeatures" placeholder="请输入相关危害集合" />
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="相关防护措施集合" prop="matterProtects">
|
|
|
+ <el-input v-model="form.matterProtects" placeholder="请输入相关防护措施集合" />
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item label="备注" prop="remarks">
|
|
|
- <el-input v-model="form.remarks" placeholder="请输入备注"/>
|
|
|
+ <el-input v-model="form.remarks" placeholder="请输入备注" style="width: 500px;" />
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
@@ -141,25 +237,16 @@
|
|
|
</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
|
|
|
- >
|
|
|
+ <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">
|
|
|
将文件拖到此处,或
|
|
|
<em>点击上传</em>
|
|
|
</div>
|
|
|
<div class="el-upload__tip" slot="tip">
|
|
|
- <el-checkbox v-model="upload.updateSupport"/>
|
|
|
+ <el-checkbox v-model="upload.updateSupport" />
|
|
|
是否更新已经存在的用户数据
|
|
|
<el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
|
|
|
</div>
|
|
@@ -183,16 +270,59 @@ import {
|
|
|
exportMatter,
|
|
|
importTemplate
|
|
|
} from "@/api/configuration/matter";
|
|
|
-import {treeselect} from "@/api/system/dept";
|
|
|
-import {getToken} from "@/utils/auth";
|
|
|
+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 {
|
|
|
+ getForType
|
|
|
+} from "@/api/configuration/protect";
|
|
|
|
|
|
export default {
|
|
|
name: "Matter",
|
|
|
- components: {Treeselect},
|
|
|
+ components: {
|
|
|
+ Treeselect
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
+ protectGlove: null,
|
|
|
+ protectGlovesParams: {
|
|
|
+ protectType: '2',
|
|
|
+ },
|
|
|
+ protectGloves: [], //防护眼镜
|
|
|
+ safeGoggle:null,
|
|
|
+ safeGogglesParams: {
|
|
|
+ protectType: '1',
|
|
|
+ },
|
|
|
+ safeGoggles: [], //防护手套
|
|
|
+ resProtect:null,
|
|
|
+ resProtectsParams: {
|
|
|
+ protectType: '3',
|
|
|
+ },
|
|
|
+ resProtects: [], //防护面罩
|
|
|
+ rubberBoot:null,
|
|
|
+ rubberBootsParams: {
|
|
|
+ protectType: '4',
|
|
|
+ },
|
|
|
+ rubberBoots: [], //防护靴
|
|
|
+ protectSuit:null,
|
|
|
+ protectSuitsParams: {
|
|
|
+ protectType: '5',
|
|
|
+ },
|
|
|
+ protectSuits: [], //防护服
|
|
|
+ cIsToxic: null,
|
|
|
+ cIsFlammable: null,
|
|
|
+ cIsOxidizing: null,
|
|
|
+ cIsExplosive: null,
|
|
|
+ cIsCorrosive: null,
|
|
|
+ cIsIrritantToxic: null,
|
|
|
+ cIsHealthHazard: null,
|
|
|
+ cIsCompressedGas: null,
|
|
|
+ cIsEnvironmentalHazard: null,
|
|
|
// 遮罩层
|
|
|
loading: true,
|
|
|
// 选中数组
|
|
@@ -225,7 +355,9 @@ export default {
|
|
|
// 是否更新已经存在的用户数据
|
|
|
updateSupport: 0,
|
|
|
// 设置上传的请求头部
|
|
|
- headers: {Authorization: "Bearer " + getToken()},
|
|
|
+ headers: {
|
|
|
+ Authorization: "Bearer " + getToken()
|
|
|
+ },
|
|
|
// 上传的地址
|
|
|
url: process.env.VUE_APP_BASE_API + "/ehs/matter/importData"
|
|
|
},
|
|
@@ -242,9 +374,11 @@ export default {
|
|
|
form: {},
|
|
|
// 表单校验
|
|
|
rules: {
|
|
|
- matterName: [
|
|
|
- {required: true, message: "物料名称不能为空", trigger: "blur"}
|
|
|
- ],
|
|
|
+ matterName: [{
|
|
|
+ required: true,
|
|
|
+ message: "物料名称不能为空",
|
|
|
+ trigger: "blur"
|
|
|
+ }],
|
|
|
}
|
|
|
};
|
|
|
},
|
|
@@ -261,8 +395,27 @@ export default {
|
|
|
})
|
|
|
this.getList();
|
|
|
this.getTreeselect();
|
|
|
+ this.getAllProtect();
|
|
|
},
|
|
|
methods: {
|
|
|
+ /* 获取所有的防护措施 */
|
|
|
+ getAllProtect() {
|
|
|
+ getForType(this.protectGlovesParams).then(response => {
|
|
|
+ this.protectGloves = response.data;
|
|
|
+ });
|
|
|
+ getForType(this.safeGogglesParams).then(response => {
|
|
|
+ this.safeGoggles = response.data;
|
|
|
+ });
|
|
|
+ getForType(this.resProtectsParams).then(response => {
|
|
|
+ this.resProtects = response.data;
|
|
|
+ });
|
|
|
+ getForType(this.rubberBootsParams).then(response => {
|
|
|
+ this.rubberBoots = response.data;
|
|
|
+ });
|
|
|
+ getForType(this.protectSuitsParams).then(response => {
|
|
|
+ this.protectSuits = response.data;
|
|
|
+ });
|
|
|
+ },
|
|
|
/** 查询危害物质数据关联列表 */
|
|
|
getList() {
|
|
|
this.loading = true;
|
|
@@ -354,7 +507,7 @@ export default {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
type: "warning"
|
|
|
- }).then(function () {
|
|
|
+ }).then(function() {
|
|
|
return delMatter(ids);
|
|
|
}).then(() => {
|
|
|
this.getList();
|
|
@@ -368,7 +521,7 @@ export default {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
type: "warning"
|
|
|
- }).then(function () {
|
|
|
+ }).then(function() {
|
|
|
return exportMatter(queryParams);
|
|
|
}).then(response => {
|
|
|
this.download(response.msg);
|
|
@@ -394,7 +547,9 @@ export default {
|
|
|
this.upload.open = false;
|
|
|
this.upload.isUploading = false;
|
|
|
this.$refs.upload.clearFiles();
|
|
|
- this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
|
|
|
+ this.$alert(response.msg, "导入结果", {
|
|
|
+ dangerouslyUseHTMLString: true
|
|
|
+ });
|
|
|
this.getList();
|
|
|
},
|
|
|
// 提交上传文件
|