Browse Source

徐明浩
危害物质

徐明浩 3 years ago
parent
commit
cca4e333a7

+ 8 - 0
master/src/main/java/com/ruoyi/project/configuration/controller/TMatterProtectController.java

@@ -45,6 +45,14 @@ public class TMatterProtectController extends BaseController {
         return getDataTable(list);
     }
 
+    /**
+     * 查询危害物质-防护用品列表
+     */
+    @GetMapping("/type")
+    public AjaxResult type(TMatterProtect tMatterProtect) {
+        return AjaxResult.success(tMatterProtectService.selectTMatterProtectList(tMatterProtect));
+    }
+
     /**
      * 导出危害物质-防护用品列表
      */

+ 2 - 5
master/src/main/resources/mybatis/configuration/TMatterProtectMapper.xml

@@ -37,11 +37,8 @@
             <if test="conservatoryMeasureName != null  and conservatoryMeasureName != ''">and conservatory_measure_name
                 like concat(concat('%', #{conservatoryMeasureName}), '%')
             </if>
-            <if test="conservatoryMeasureCode != null  and conservatoryMeasureCode != ''">and conservatory_measure_code
-                = #{conservatoryMeasureCode}
-            </if>
-            <if test="conservatoryMeasureNo != null  and conservatoryMeasureNo != ''">and conservatory_measure_no =
-                #{conservatoryMeasureNo}
+            <if test="protectType != null  and protectType != ''">and protect_type =
+                #{protectType}
             </if>
             and d.del_flag = 0
         </where>

+ 9 - 0
ui/src/api/configuration/protect.js

@@ -9,6 +9,15 @@ export function listProtect(query) {
   })
 }
 
+// 查询危害物质-防护用品列表
+export function getForType(query) {
+  return request({
+    url: '/configuration/protect/type',
+    method: 'get',
+    params: query
+  })
+}
+
 // 查询危害物质-防护用品详细
 export function getProtect(id) {
   return request({

+ 73 - 84
ui/src/views/DangerCloseChart.vue

@@ -1,101 +1,90 @@
 <template>
-  <div class="app-container-Dangerclose">
-    <div id="DangercloseChart" :style="{height:height,width:width}"></div>
+  <div class="app-container-Overdueclose">
+    <div id="DangerCloseChart" :style="{height:height,width:width}"></div>
   </div>
 </template>
 
 <script>
-  require('echarts/theme/macarons')
+require('echarts/theme/macarons')
 
-  const animationDuration = 6000
+const animationDuration = 6000
 
-  export default {
-    name: "DangerCloseChart",
-    props: {
-      width: {
-        type: String,
-        default: '100%'
-      },
-      height: {
-        type: String,
-        default: '330px'
-      },
-      year: {
-        type: Number,
-      }
+export default {
+  name: "DangerCloseChart",
+  props: {
+    width: {
+      type: String,
+      default: '100%'
     },
-    mounted() {
-      this.$nextTick(() => {
-        /*this.queryParams.year = this.searchFormField.year;*/
-        this.getList()
-      })
+    height: {
+      type: String,
+      default: '330px'
+    },
+    year: {
+      type: Number,
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      /*this.queryParams.year = this.searchFormField.year;*/
+      this.getList()
+    })
+  },
+  methods: {
+    getList() {
+      this.initChart()
     },
-    methods: {
-      getList() {
-        this.initChart()
-      },
-      initChart() {
-        // 基于准备好的dom,初始化echarts实例
-        this.chart = this.echarts.init(document.getElementById('DangercloseChart'))
+    initChart() {
+      // 基于准备好的dom,初始化echarts实例
+      this.chart = this.echarts.init(document.getElementById('DangerCloseChart'))
 
-        this.chart.setOption({
-          color: ['#4176f9', '#30B08F', '#ffba00', '#0635aa', '#f5222d'],
-          /* 周围边距 */
-          grid: {
-            left: '3%',
-            right: '3%',
-            bottom: '1%',
-            top: '1%',
-            containLabel: true
-          },
-          tooltip: {
-            trigger: 'item'
-          },
-          legend: {
-            top: '5%',
-            left: 'center',
-            textStyle:{
-              color: '#ffffff'//字体颜色
-            }
-          },
-          series: [
-            {
-              name: this.$t('访问来源'),
-              type: 'pie',
-              radius: ['40%', '75%'],
-              avoidLabelOverlap: false,
+      this.chart.setOption({
+        color: ['#00ff26', '#038e6e', '#f87474','#8e8585'],
+        /* 周围边距 */
+        grid: {
+          left: '3%',
+          right: '3%',
+          bottom: '1%',
+          top: '13%',
+          containLabel: true
+        },
+        tooltip: {
+          trigger: 'item'
+        },
+        label: {
+          color: '#ffffff'
+        },
+        legend: {
+          orient: 'vertical',
+          left: 'left',
+          textStyle:{
+            color: '#ffffff'//字体颜色
+          }
+        },
+        series: [
+          {
+            name: this.$t(''),
+            type: 'pie',
+            radius: '75%',
+            data: [
+              {value: 1000, name: this.$t('已验收')},
+              {value: 200, name: this.$t('已延期')},
+              {value: 100, name: this.$t('未延期')},
+              {value: 50, name: this.$t('已取消')}
+            ],
+            emphasis: {
               itemStyle: {
-                borderRadius: 10,
-
-                borderWidth: 2
-              },
-              label: {
-                show: false,
-                position: 'center'
-              },
-              emphasis: {
-                label: {
-                  show: true,
-                  fontSize: '30',
-                  color: '#ffffff',
-                  fontWeight: 'bold'
-                }
-              },
-              labelLine: {
-                show: false
-              },
-              data: [
-                {value: 1048, name: this.$t('按期关闭')},
-                {value: 735, name: this.$t('逾期关闭')},
-                {value: 580, name: this.$t('逾期作业票')},
-                {value: 484, name: this.$t('未逾期作业票')}
-              ]
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
             }
-          ]
-        })
-      }
+          }
+        ]
+      })
     }
   }
+}
 </script>
 
 <style scoped>

+ 31 - 124
ui/src/views/DangerNumChart.vue

@@ -1,138 +1,45 @@
 <template>
   <div class="app-container-Dangernum">
-    <div id="DangernumChart" :style="{height:height,width:width}"></div>
+    <div id="DangernumChart" :style="{height:height,width:width}">
+      <ul class="infinite-list" style="overflow:auto;line-height: 50px;padding-left: 220px;color: white" >
+        <li>2021-12-28 危害工作许可证 A0000001 已超时未延期</li>
+        <li>2021-12-28 危害工作许可证 A0000002 已超时未延期</li>
+        <li>2021-12-28 危害工作许可证 A0000003 已超时未延期</li>
+        <li>2021-12-28 危害工作许可证 A0000004 已超时未延期</li>
+        <li>2021-12-28 危害工作许可证 A0000004 气体分析未按时更新</li>
+        <li>2021-12-28 危害工作许可证 A0000005 已完成未验收</li>
+      </ul>
+    </div>
   </div>
 </template>
 
 <script>
-  require('echarts/theme/macarons')
-
-  const animationDuration = 6000
-
-  export default {
-    name: "DangerNumChart",
-    props: {
-      width: {
-        type: String,
-        default: '100%'
-      },
-      height: {
-        type: String,
-        default: '330px'
-      },
-      year: {
-        type: Number,
-      }
+export default {
+  data() {
+    return {
+      count: 0
+    }
+  },
+  name: "DangerNumChart",
+  props: {
+    width: {
+      type: String,
+      default: '100%'
     },
-    mounted() {
-      this.$nextTick(() => {
-        /*this.queryParams.year = this.searchFormField.year;*/
-        this.getList()
-      })
+    height: {
+      type: String,
+      default: '330px'
     },
-    methods: {
-      getList() {
-        this.initChart()
-      },
-      initChart() {
-        // 基于准备好的dom,初始化echarts实例
-        this.chart = this.echarts.init(document.getElementById('DangernumChart'))
-
-        this.chart.setOption({
-          /* 周围边距 */
-          grid: {
-            left: '3%',
-            right: '3%',
-            bottom: '1%',
-            top: '13%',
-            containLabel: true
-          },
+    year: {
+      type: Number,
+    }
+  },
+  methods: {
+    load() {
 
-          tooltip: {
-            trigger: 'axis',
-            axisPointer: {
-              type: 'shadow'
-            }
-          },
-          legend: {
-            data: ['line', 'bar'],
-            textStyle:{
-              color: '#ffffff'//字体颜色
-            }
-          },
-          xAxis: {
-            data: [2021-3-6,2021-3-7,2021-3-8,2021-3-9,2021-3-10,2021-3-11,2021-3-12,2021-3-13,2021-3-14,2021-3-15,2021-3-16,2021-3-17,2021-3-18,2021-3-19,2021-3-20,2021-3-21,2021-3-22,2021-3-23,2021-3-24,2021-3-25],
-            axisLine: {
-              lineStyle: {
-                color: '#ccc'
-              }
-            }
-          },
-          yAxis: {
-            splitLine: {show: false},
-            axisLine: {
-              lineStyle: {
-                color: '#ccc'
-              }
-            }
-          },
-          series: [{
-            name: 'line',
-            type: 'line',
-            smooth: true,
-            showAllSymbol: true,
-            symbol: 'emptyCircle',
-            symbolSize: 15,
-            data: [138.83729599102787,206.01287341873916,153.8822068768843,168.10816924284754,94.23637442817387,216.68651856725197,225.06602494624914,140.25657499532463,97.43329095023562,242.6092944122001,106.73225462321487,163.78524496465718,205.08435793458443,150.03555258986975,118.53532279465551,221.74159944137992,247.75571045211296,280.89661444214255,59.53521809292747,248.30845959407912]
-          }, {
-            name: 'bar',
-            type: 'bar',
-            barWidth: 10,
-            itemStyle: {
-              barBorderRadius: 5,
-              color: new this.echarts.graphic.LinearGradient(
-                0, 0, 0, 1,
-                [
-                  {offset: 0, color: '#14c8d4'},
-                  {offset: 1, color: '#6be5ea'}
-                ]
-              )
-            },
-            data: [41.868199836943276,184.7676430861723,31.76715067530185,166.40048922039688,55.38865478743573,35.123523665656144,117.62860585117996,77.91372506738709,19.92822195908266,103.95617481797035,59.59380792270639,31.795152336229293,151.04067931729793,137.67636308967127,113.0952640593935,80.6589351077684,92.01010823528715,135.0426463664803,1.3723633870805774,178.42978684367003]
-          }, {
-            name: 'line',
-            type: 'bar',
-            barGap: '-100%',
-            barWidth: 10,
-            itemStyle: {
-              color: new this.echarts.graphic.LinearGradient(
-                0, 0, 0, 1,
-                [
-                  {offset: 0, color: 'rgba(20,200,212,0.5)'},
-                  {offset: 0.2, color: 'rgba(20,200,212,0.2)'},
-                  {offset: 1, color: 'rgba(20,200,212,0)'}
-                ]
-              )
-            },
-            z: -12,
-            data: [138.83729599102787,206.01287341873916,153.8822068768843,168.10816924284754,94.23637442817387,216.68651856725197,225.06602494624914,140.25657499532463,97.43329095023562,242.6092944122001,106.73225462321487,163.78524496465718,205.08435793458443,150.03555258986975,118.53532279465551,221.74159944137992,247.75571045211296,280.89661444214255,59.53521809292747,248.30845959407912]
-          }, {
-            name: 'dotted',
-            type: 'pictorialBar',
-            symbol: 'rect',
-            itemStyle: {
-              color: '#0f375f'
-            },
-            symbolRepeat: true,
-            symbolSize: [12, 4],
-            symbolMargin: 1,
-            z: -10,
-            data: [138.83729599102787,206.01287341873916,153.8822068768843,168.10816924284754,94.23637442817387,216.68651856725197,225.06602494624914,140.25657499532463,97.43329095023562,242.6092944122001,106.73225462321487,163.78524496465718,205.08435793458443,150.03555258986975,118.53532279465551,221.74159944137992,247.75571045211296,280.89661444214255,59.53521809292747,248.30845959407912]
-          }]
-        })
-      }
     }
   }
+}
 </script>
 
 <style scoped>

+ 3 - 19
ui/src/views/DangerStatusChart.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container-Dangerstatus">
+  <div class="app-container-Dangernum">
     <div id="DangerstatusChart" :style="{height:height,width:width}"></div>
   </div>
 </template>
@@ -73,34 +73,18 @@
             {
               name: this.$t('作业票数量'),
               type: 'bar',
-              data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162, 32.6, 20.0, 6.4, 3.3],
+              data: [310, 300, 330, 400, 300, 360, 300, 320, 370, 290, 350, 380],
               markPoint: {
                 data: [
                   {type: 'max', name: this.$t('最大值')},
                   {type: 'min', name: this.$t('最小值')}
                 ]
               },
-              markLine: {
-                data: [
-                  {type: 'average', name: this.$t('平均值')}
-                ]
-              }
             },
             {
               name: this.$t('关闭数量'),
               type: 'bar',
-              data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182, 48.7, 18.8, 6.0, 2.3],
-              markPoint: {
-                data: [
-                  {name: this.$t('年最高'), value: 182.2, xAxis: 7, yAxis: 183},
-                  {name: this.$t('年最低'), value: 2.3, xAxis: 11, yAxis: 3}
-                ]
-              },
-              markLine: {
-                data: [
-                  {type: 'average', name: this.$t('平均值')}
-                ]
-              }
+              data: [10, 18, 10, 20, 20, 10, 15, 10, 15, 20, 10, 10],
             }
           ]
         })

+ 6 - 5
ui/src/views/OverdueCloseChart.vue

@@ -39,7 +39,7 @@
         this.chart = this.echarts.init(document.getElementById('OverduecloseChart'))
 
         this.chart.setOption({
-          color: ['#4176f9', '#30B08F', '#13c2c2'],
+          color: ['#00ff26', '#038e6e', '#fc3535','#8e8585'],
           /* 周围边距 */
           grid: {
             left: '3%',
@@ -63,13 +63,14 @@
           },
           series: [
             {
-              name: this.$t('访问来源'),
+              name: this.$t(''),
               type: 'pie',
               radius: '75%',
               data: [
-                {value: 1048, name: this.$t('预约开票')},
-                {value: 735, name: this.$t('现场开票')},
-                {value: 580, name: this.$t('取消开票')}
+                {value: 100, name: this.$t('已验收')},
+                {value: 200, name: this.$t('已延期')},
+                {value: 50, name: this.$t('未延期')},
+                {value: 10, name: this.$t('已取消')}
               ],
               emphasis: {
                 itemStyle: {

+ 1 - 1
ui/src/views/SortNumChart.vue

@@ -67,7 +67,7 @@
                 {value: 335, name: this.$t('危害工作许可证')},
                 {value: 310, name: this.$t('动火工作许可证')},
                 {value: 274, name: this.$t('限制性空间许可证')},
-                {value: 235, name: this.$t('延期许可证')},
+                {value: 500, name: this.$t('延期许可证')},
                 {value: 400, name: this.$t('动土工作许可证')}
               ].sort(function (a, b) { return a.value - b.value; }),
               roseType: 'radius',

+ 249 - 94
ui/src/views/configuration/matter/index.vue

@@ -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();
     },
     // 提交上传文件

+ 7 - 7
ui/src/views/index.vue

@@ -12,7 +12,7 @@
       <el-col :xs="24" :sm="24" :lg="8">
         <div >
           <div class="card-head">
-            <span class="card-name">{{ $t('开票类比例') }}</span>
+            <span class="card-name">{{ $t('开票类型数量比例') }}</span>
           </div>
         </div>
         <div class="chart-wrapper">
@@ -22,7 +22,7 @@
       <el-col :xs="24" :sm="24" :lg="8">
         <div>
           <div class="card-head">
-            <span class="card-name">{{ $t('开票数量比例') }}</span>
+            <span class="card-name">{{ $t('昨日开票状态数量比例') }}</span>
           </div>
         </div>
         <div class="chart-wrapper">
@@ -32,7 +32,7 @@
       <el-col :xs="24" :sm="24" :lg="8">
         <div >
           <div class="card-head">
-            <span class="card-name">{{ $t('作业票关闭率') }}</span>
+            <span class="card-name">{{ $t('历史开票状态数量比例') }}</span>
           </div>
         </div>
         <div class="chart-wrapper">
@@ -45,25 +45,25 @@
       <el-col :xs="24" :sm="24" :lg="12">
         <div>
           <div class="card-head">
-            <span class="card-name">{{ $t('开票数量对比') }}</span>
+            <span class="card-name">{{ $t('每月开票数量对比') }}</span>
           </div>
         </div>
         <div class="chart-wrapper">
+<!--          <danger-status-chart />-->
           <danger-status-chart />
         </div>
       </el-col>
       <el-col :xs="24" :sm="24" :lg="12">
         <div>
           <div class="card-head">
-            <span class="card-name">{{ $t('开票关闭数') }}</span>
+            <span class="card-name">{{ $t('超时预警') }}</span>
           </div>
         </div>
         <div class="chart-wrapper">
-          <danger-num-chart />
+          <danger-num-chart/>
         </div>
       </el-col>
     </el-row>
-
   </div>
   </div>
 </template>

File diff suppressed because it is too large
+ 376 - 336
ui/src/views/invoicing/delaypermit/index.vue


+ 1 - 1
ui/src/views/invoicing/ticketList/index.vue

@@ -142,7 +142,7 @@ export default {
         });
       }
     },
-    // 设备类型:字典翻译
+    // 票据状态类型:字典翻译
     permitStatusFormat(row, column) {
       return this.selectDictLabel(this.permitStatusOptions, row.permitStatus);
     },

Some files were not shown because too many files changed in this diff