Ver código fonte

Merge remote-tracking branch 'origin/master'

tjf 3 anos atrás
pai
commit
51ba447663
36 arquivos alterados com 2844 adições e 1454 exclusões
  1. 96 0
      ruoyi-ui/src/api/index.js
  2. 9 2
      ruoyi-ui/src/api/system/inspectInfor.js
  3. BIN
      ruoyi-ui/src/assets/images/icon_ewmdl@2x.png
  4. BIN
      ruoyi-ui/src/assets/images/icon_htgl_myc_normal.png
  5. BIN
      ruoyi-ui/src/assets/images/icon_htgl_myc_selected.png
  6. BIN
      ruoyi-ui/src/assets/images/icon_htgl_mzc_normal.png
  7. BIN
      ruoyi-ui/src/assets/images/icon_htgl_mzc_selected.png
  8. BIN
      ruoyi-ui/src/assets/images/icon_htgl_smrs_normal.png
  9. BIN
      ruoyi-ui/src/assets/images/icon_htgl_smrs_selected.png
  10. BIN
      ruoyi-ui/src/assets/images/icon_htgl_wdyc_normal.png
  11. BIN
      ruoyi-ui/src/assets/images/icon_htgl_wdyc_selected.png
  12. BIN
      ruoyi-ui/src/assets/images/login-background.jpg
  13. BIN
      ruoyi-ui/src/assets/images/pic_dlcg@2x.png
  14. BIN
      ruoyi-ui/src/assets/images/profile.jpg
  15. BIN
      ruoyi-ui/src/assets/logo/logo.png
  16. 5 5
      ruoyi-ui/src/layout/components/Navbar.vue
  17. 4 4
      ruoyi-ui/src/layout/components/Sidebar/Logo.vue
  18. 109 52
      ruoyi-ui/src/views/dashboard/BarChart.vue
  19. 62 14
      ruoyi-ui/src/views/dashboard/LineChart.vue
  20. 127 102
      ruoyi-ui/src/views/dashboard/PanelGroup.vue
  21. 167 0
      ruoyi-ui/src/views/dashboard/PanelGroupfour.vue
  22. 167 0
      ruoyi-ui/src/views/dashboard/PanelGroupone.vue
  23. 172 0
      ruoyi-ui/src/views/dashboard/PanelGroups.vue
  24. 167 0
      ruoyi-ui/src/views/dashboard/PanelGroupther.vue
  25. 167 0
      ruoyi-ui/src/views/dashboard/PanelGrouptwo.vue
  26. 93 28
      ruoyi-ui/src/views/dashboard/PieChart.vue
  27. 235 63
      ruoyi-ui/src/views/dashboard/RaddarChart.vue
  28. 8 0
      ruoyi-ui/src/views/dashboard/RatioIndex.vue
  29. 437 752
      ruoyi-ui/src/views/index.vue
  30. 2 2
      ruoyi-ui/src/views/login.vue
  31. 34 8
      ruoyi-ui/src/views/system/image/index.vue
  32. 251 64
      ruoyi-ui/src/views/system/inspectInfor/index.vue
  33. 72 24
      ruoyi-ui/src/views/system/news/index.vue
  34. 286 272
      ruoyi-ui/src/views/system/queryConfig/index.vue
  35. 51 21
      ruoyi-ui/src/views/system/queryLog/index.vue
  36. 123 41
      ruoyi-ui/src/views/system/reportDetail/index.vue

+ 96 - 0
ruoyi-ui/src/api/index.js

@@ -0,0 +1,96 @@
+import request from '@/utils/request'
+
+
+// 圆环列表
+export function treeselect(query) {
+  return request({
+    url: '/sts/smsts/' + query ,
+    method: 'get'
+  })
+}
+// 查询设备信息列表
+export function listDevice(query) {
+  return request({
+    url: '/sts/per/school/smmx',
+    method: 'get',
+    params: query
+  })
+}
+
+// 折线图
+export function listzhex(data) {
+  return request({
+    url: '/system/index',
+    method: 'post',
+    data: data
+  })
+}
+
+// 雷达图
+export function listleida(query) {
+  return request({
+    url: '/sts/echarts1 ',
+    method: 'get',
+    params: query
+  })
+}
+// 底部圆环数据
+export function listdbyh(query) {
+  return request({
+    url: '/sts/echarts2 ',
+    method: 'get',
+    params: query
+  })
+}
+// 柱状图数据
+export function listzhuzh(query) {
+  return request({
+    url: '/sts/echarts3 ',
+    method: 'get',
+    params: query
+  })
+}
+
+
+// 查询设备信息详细
+export function getDevice(id) {
+  return request({
+    url: '/school/device/' + id,
+    method: 'get'
+  })
+}
+
+// 新增设备信息
+export function addDevice(data) {
+  return request({
+    url: '/school/device',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改设备信息
+export function updateDevice(data) {
+  return request({
+    url: '/school/device',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除设备信息
+export function delDevice(id) {
+  return request({
+    url: '/school/device/' + id,
+    method: 'delete'
+  })
+}
+
+// 导出
+export function exportPost(query) {
+  return request({
+    url: '/sts/per/school/smmx/export',
+    method: 'get',
+    params: query
+  })
+}

+ 9 - 2
ruoyi-ui/src/api/system/inspectInfor.js

@@ -17,15 +17,22 @@ export function getInspectInfor(inspectId) {
   })
 }
 
-// 新增送检信息
+// 生产报告
 export function addInspectInfor(data) {
   return request({
-    url: '/system/inspectInfor',
+    url: '/system/reportDetail',
     method: 'post',
     data: data
   })
 }
 
+export function getInspectInfors(inspectId) {
+  return request({
+    url: '/system/reportDetail/' + inspectId,
+    method: 'get'
+  })
+}
+
 // 修改送检信息
 export function updateInspectInfor(data) {
   return request({

BIN
ruoyi-ui/src/assets/images/icon_ewmdl@2x.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_myc_normal.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_myc_selected.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_mzc_normal.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_mzc_selected.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_smrs_normal.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_smrs_selected.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_wdyc_normal.png


BIN
ruoyi-ui/src/assets/images/icon_htgl_wdyc_selected.png


BIN
ruoyi-ui/src/assets/images/login-background.jpg


BIN
ruoyi-ui/src/assets/images/pic_dlcg@2x.png


BIN
ruoyi-ui/src/assets/images/profile.jpg


BIN
ruoyi-ui/src/assets/logo/logo.png


+ 5 - 5
ruoyi-ui/src/layout/components/Navbar.vue

@@ -7,15 +7,15 @@
 
     <div class="right-menu">
       <template v-if="device!=='mobile'">
-        <search id="header-search" class="right-menu-item" />
+        <!-- <search id="header-search" class="right-menu-item" /> -->
         
-        <el-tooltip content="源码地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="源码地址" effect="dark" placement="bottom">
           <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
 
-        <el-tooltip content="文档地址" effect="dark" placement="bottom">
+        <!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">
           <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
-        </el-tooltip>
+        </el-tooltip> -->
 
         <screenfull id="screenfull" class="right-menu-item hover-effect" />
 

+ 4 - 4
ruoyi-ui/src/layout/components/Sidebar/Logo.vue

@@ -35,7 +35,7 @@ export default {
   },
   data() {
     return {
-      title: '若依管理系统',
+      title: '印刷品质量监督检验平台',
       logo: logoImg
     }
   }
@@ -66,10 +66,10 @@ export default {
     width: 100%;
 
     & .sidebar-logo {
-      width: 32px;
-      height: 32px;
+      width: 22px;
+      height: 22px;
       vertical-align: middle;
-      margin-right: 12px;
+      margin-right: 2px;
     }
 
     & .sidebar-title {

+ 109 - 52
ruoyi-ui/src/views/dashboard/BarChart.vue

@@ -23,6 +23,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -44,59 +56,104 @@ export default {
   },
   methods: {
     initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
       this.chart = echarts.init(this.$el, 'macarons')
-
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
-        },
-        grid: {
-          top: 10,
-          left: '2%',
-          right: '2%',
-          bottom: '3%',
-          containLabel: true
-        },
-        xAxis: [{
-          type: 'category',
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
-          axisTick: {
-            alignWithLabel: true
-          }
-        }],
-        yAxis: [{
-          type: 'value',
-          axisTick: {
-            show: false
-          }
-        }],
-        series: [{
-          name: 'pageA',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [79, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageB',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [80, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }, {
-          name: 'pageC',
-          type: 'bar',
-          stack: 'vistors',
-          barWidth: '60%',
-          data: [30, 52, 200, 334, 390, 330, 220],
-          animationDuration
-        }]
-      })
-    }
+      this.setOptions(this.chartData)
+    },
+      setOptions({ y, x ,data } = {}) {
+        console.log(y,x,data,56)
+       this.chart.setOption({
+         tooltip: {
+           trigger: 'axis',
+           axisPointer: { // 坐标轴指示器,坐标轴触发有效
+             type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+           }
+         },
+         grid: {
+           top: 10,
+           left: '2%',
+           right: '2%',
+           bottom: '3%',
+           containLabel: true
+         },
+         xAxis: [{
+           type: 'category',
+           data: y,
+           axisTick: {
+             alignWithLabel: true
+           },
+           axisLine: {   //  控制x轴线的样式
+                              lineStyle: {
+                                   type: 'solid',
+                                  color: '#CECECE',
+                                   width:'1' }
+                                }
+         }],
+         yAxis: [{
+           type: 'value',
+           axisTick: {
+             show: false
+           },
+            axisLine: {
+                               lineStyle: {
+                                    type: 'solid',
+                                     color: '#CECECE',
+                                   width:'1'
+                               }
+                              }
+         }],
+         series: [{
+           name: '绿码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           itemStyle: {
+           normal: {
+           color: '#8ecd72',
+           }
+           },
+           data: x[0].data,
+           animationDuration
+         }, {
+           name: '灰码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[2].data,
+           itemStyle: {
+           normal: {
+           color: '#536fcd',
+           }
+           },
+           animationDuration
+         }, {
+           name: '未申领',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[3].data,
+           itemStyle: {
+           normal: {
+           color: '#f1c250',
+           }
+           },
+           animationDuration
+         },
+         {
+           name: '红码',
+           type: 'bar',
+           stack: 'vistors',
+           barWidth: '40%',
+           data: x[1].data,
+           itemStyle: {
+           normal: {
+           color: '#e96a62',
+           }
+           },
+           animationDuration
+         }]
+       })
+      }
   }
 }
 </script>

+ 62 - 14
ruoyi-ui/src/views/dashboard/LineChart.vue

@@ -60,11 +60,13 @@ export default {
     initChart() {
       this.chart = echarts.init(this.$el, 'macarons')
       this.setOptions(this.chartData)
+      console.log(this.chartData,8765)
     },
-    setOptions({ expectedData, actualData } = {}) {
+    setOptions({ x, inspectNumDate,reportDetailNumDate,columnNewsNumDate,reportQueryLogNumDate } = {}) {
+      console.log(x,45)
       this.chart.setOption({
         xAxis: {
-          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
+          data: x,
           boundaryGap: false,
           axisTick: {
             show: false
@@ -90,33 +92,58 @@ export default {
           }
         },
         legend: {
-          data: ['expected', 'actual']
+          data: ['送检次数','生成报告','发布文章','查询次数']
         },
-        series: [{
-          name: 'expected', itemStyle: {
+        series: [
+        {
+          name: '送检次数',
+          smooth: true,
+          type: 'line',
+          itemStyle: {
             normal: {
-              color: '#FF005A',
+              color: '#459CF9',
               lineStyle: {
-                color: '#FF005A',
+                color: '#459CF9',
                 width: 2
+              },
+              areaStyle: {
+                color: '#f3f8ff'
               }
             }
           },
+          data: inspectNumDate,
+          animationDuration: 2800,
+          animationEasing: 'quadraticOut'
+        },
+        {
+          name: '生成报告',
           smooth: true,
           type: 'line',
-          data: expectedData,
+          itemStyle: {
+            normal: {
+              color: '#F53C49',
+              lineStyle: {
+                color: '#F53C49',
+                width: 2
+              },
+              areaStyle: {
+                color: '#f3f8ff'
+              }
+            }
+          },
+          data: reportDetailNumDate,
           animationDuration: 2800,
-          animationEasing: 'cubicInOut'
+          animationEasing: 'quadraticOut'
         },
         {
-          name: 'actual',
+          name: '发布文章',
           smooth: true,
           type: 'line',
           itemStyle: {
             normal: {
-              color: '#3888fa',
+              color: '#FFBC3E',
               lineStyle: {
-                color: '#3888fa',
+                color: '#FFBC3E',
                 width: 2
               },
               areaStyle: {
@@ -124,10 +151,31 @@ export default {
               }
             }
           },
-          data: actualData,
+          data: columnNewsNumDate,
           animationDuration: 2800,
           animationEasing: 'quadraticOut'
-        }]
+        },
+        {
+          name: '查询次数',
+          smooth: true,
+          type: 'line',
+          itemStyle: {
+            normal: {
+              color: '#46D871',
+              lineStyle: {
+                color: '#46D871',
+                width: 2
+              },
+              areaStyle: {
+                color: '#f3f8ff'
+              }
+            }
+          },
+          data: reportQueryLogNumDate,
+          animationDuration: 2800,
+          animationEasing: 'quadraticOut'
+        },
+        ]
       })
     }
   }

+ 127 - 102
ruoyi-ui/src/views/dashboard/PanelGroup.vue

@@ -3,52 +3,57 @@
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('newVisitis')">
         <div class="card-panel-icon-wrapper icon-people">
-          <svg-icon icon-class="peoples" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="peoples" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            访客
+            总扫码人次数
           </div>
-          <count-to :start-val="0" :end-val="102400" :duration="2600" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="total" :duration="2600" class="card-panel-num" />
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('messages')">
         <div class="card-panel-icon-wrapper icon-message">
-          <svg-icon icon-class="message" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="message" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            消息
+            绿码
           </div>
-          <count-to :start-val="0" :end-val="81212" :duration="3000" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="greenCode" :duration="3000" class="card-panel-num" />
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('purchases')">
         <div class="card-panel-icon-wrapper icon-money">
-          <svg-icon icon-class="money" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="money" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            金额
+            红码:
+            <count-to :start-val="0" :end-val="redCode" :duration="3200" class="card-panel-num" /> <br>
+            灰码:
+            <count-to :start-val="0" :end-val="gaeyCode" :duration="3200" class="card-panel-num" /> <br>
+            未申请:
+            <count-to :start-val="0" :end-val="notapplied" :duration="3200" class="card-panel-num" />
           </div>
-          <count-to :start-val="0" :end-val="9280" :duration="3200" class="card-panel-num" />
+
         </div>
       </div>
     </el-col>
     <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
       <div class="card-panel" @click="handleSetLineChartData('shoppings')">
         <div class="card-panel-icon-wrapper icon-shopping">
-          <svg-icon icon-class="shopping" class-name="card-panel-icon" />
+          <!-- <svg-icon icon-class="shopping" class-name="card-panel-icon" /> -->
         </div>
         <div class="card-panel-description">
           <div class="card-panel-text">
-            订单
+            体温异常
           </div>
-          <count-to :start-val="0" :end-val="13600" :duration="3600" class="card-panel-num" />
+          <count-to :start-val="0" :end-val="emperature" :duration="3600" class="card-panel-num" />
         </div>
       </div>
     </el-col>
@@ -56,126 +61,146 @@
 </template>
 
 <script>
-import CountTo from 'vue-count-to'
-
-export default {
-  components: {
-    CountTo
-  },
-  methods: {
-    handleSetLineChartData(type) {
-      this.$emit('handleSetLineChartData', type)
+  import CountTo from 'vue-count-to'
+
+  export default {
+    components: {
+      CountTo
+    },
+    data(){
+      return{
+        total:102405,
+        greenCode:81258,
+        redCode:25,
+        gaeyCode:39,
+        notapplied:83,
+        emperature:36974
+      }
+    },
+    methods: {
+      handleSetLineChartData(type) {
+        this.$emit('handleSetLineChartData', type)
+      }
     }
   }
-}
 </script>
 
 <style lang="scss" scoped>
-.panel-group {
-  margin-top: 18px;
+  .panel-group {
+    margin-top: 18px;
 
-  .card-panel-col {
-    margin-bottom: 32px;
-  }
+    .card-panel-col {
+      margin-bottom: 32px;
+    }
 
-  .card-panel {
-    height: 108px;
-    cursor: pointer;
-    font-size: 12px;
-    position: relative;
-    overflow: hidden;
-    color: #666;
-    background: #fff;
-    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
-    border-color: rgba(0, 0, 0, .05);
-
-    &:hover {
-      .card-panel-icon-wrapper {
-        color: #fff;
+    .card-panel {
+      height: 108px;
+      cursor: pointer;
+      font-size: 12px;
+      position: relative;
+      overflow: hidden;
+      color: #666;
+      background: #fff;
+      box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
+      border-color: rgba(0, 0, 0, .05);
+
+      &:hover {
+        .card-panel-icon-wrapper {
+          color: #fff;
+        }
+
+        .icon-people {
+          background: url('../../assets/images/icon_htgl_smrs_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-message {
+          background: url('../../assets/images/icon_htgl_mzc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-money {
+          background: url('../../assets/images/icon_htgl_myc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
+
+        .icon-shopping {
+          background: url('../../assets/images/icon_htgl_wdyc_selected.png') no-repeat;
+          background-size: 100% 100%;
+        }
       }
 
       .icon-people {
-        background: #40c9c6;
+        background: url('../../assets/images/icon_htgl_smrs_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-message {
-        background: #36a3f7;
+        background: url('../../assets/images/icon_htgl_mzc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-money {
-        background: #f4516c;
+        background: url('../../assets/images/icon_htgl_myc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
 
       .icon-shopping {
-        background: #34bfa3
+        background: url('../../assets/images/icon_htgl_wdyc_normal.png') no-repeat;
+        background-size: 100% 100%;
       }
-    }
-
-    .icon-people {
-      color: #40c9c6;
-    }
-
-    .icon-message {
-      color: #36a3f7;
-    }
-
-    .icon-money {
-      color: #f4516c;
-    }
-
-    .icon-shopping {
-      color: #34bfa3
-    }
-
-    .card-panel-icon-wrapper {
-      float: left;
-      margin: 14px 0 0 14px;
-      padding: 16px;
-      transition: all 0.38s ease-out;
-      border-radius: 6px;
-    }
 
-    .card-panel-icon {
-      float: left;
-      font-size: 48px;
-    }
+      .card-panel-icon-wrapper {
+        float: left;
+        margin: 14px 0 0 14px;
+        width: 80px;
+        height: 80px;
+        transition: all 0.38s ease-out;
+        border-radius: 6px;
+      }
 
-    .card-panel-description {
-      float: right;
-      font-weight: bold;
-      margin: 26px;
-      margin-left: 0px;
-
-      .card-panel-text {
-        line-height: 18px;
-        color: rgba(0, 0, 0, 0.45);
-        font-size: 16px;
-        margin-bottom: 12px;
+      .card-panel-icon {
+        float: left;
+        font-size: 48px;
       }
 
-      .card-panel-num {
-        font-size: 20px;
+      .card-panel-description {
+        float: right;
+        font-weight: bold;
+        margin: 26px;
+        margin-left: 0px;
+
+        .card-panel-text {
+          line-height: 18px;
+          color: rgba(0, 0, 0, 0.45);
+          font-size: 16px;
+          margin-bottom: 12px;
+        }
+
+        .card-panel-num {
+          font-size: 20px;
+          color: #000;
+        }
       }
     }
   }
-}
-
-@media (max-width:550px) {
-  .card-panel-description {
-    display: none;
-  }
 
-  .card-panel-icon-wrapper {
-    float: none !important;
-    width: 100%;
-    height: 100%;
-    margin: 0 !important;
+  @media (max-width:550px) {
+    .card-panel-description {
+      display: none;
+    }
 
-    .svg-icon {
-      display: block;
-      margin: 14px auto !important;
+    .card-panel-icon-wrapper {
       float: none !important;
+      width: 100%;
+      height: 100%;
+      margin: 0 !important;
+
+      .svg-icon {
+        display: block;
+        margin: 14px auto !important;
+        float: none !important;
+      }
     }
   }
-}
 </style>

+ 167 - 0
ruoyi-ui/src/views/dashboard/PanelGroupfour.vue

@@ -0,0 +1,167 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+
+
+</template>
+
+<script>
+import echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      chart: null
+    };
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+
+    console.log(this.chartData,58)
+  },
+  beforeDestroy() {
+    if (!this.chart) {
+      return;
+    }
+    this.chart.dispose();
+    this.chart = null;
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
+      this.chart = echarts.init(this.$el, 'macarons')
+      this.setOptions(this.chartData)
+
+    },
+
+    setOptions({ columnNewsNum , columnNewsTodayNum,columnNews } = {}) {
+      this.chart.setOption({
+        color: [new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+               offset: 0,
+               color: '#F69F24'
+           },
+           {
+               offset: 1,
+               color: '#F69F24'
+           }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
+               offset: 0,
+               color: '#FFE1B7'
+           },
+           {
+               offset: 0.9,
+               color: '#FFE1B7'
+           }]),],
+            tooltip: {
+                  trigger: 'item'
+              },
+              legend: {
+                  top: '10%',
+                  left: 'center',
+                  data:[]
+              },
+              // 设置环形中间的数据
+                  graphic: [{
+                      type: 'text',
+                      left: 'center',
+                      top: '46%',
+                      z: 10,
+                      style: {
+                          fill: '#F69F24',
+                          text: columnNews,
+                          font: '16px Microsoft YaHei'
+                      },
+                      textStyle: {
+                              color: "#F69F24",
+                              fontSize: 17,
+                              align: "center"
+                            }
+                  }],
+              series: [
+                  {
+                      name: '发文次数',
+                      type: 'pie',
+                      radius: ['50%', '70%'],
+                      center: ['center', '50%'],
+                      avoidLabelOverlap: false,
+                      // label: {
+                      //     show: false,
+                      //     position: 'center'
+                      // },
+                      // emphasis: {
+                      //     label: {
+                      //         show: true,
+                      //         fontSize: '17',
+                      //         fontWeight: '400',
+                      //         color:'#2497D5'
+                      //     }
+                      // },
+                      // labelLine: {
+                      //     show: true
+                      // },
+                      itemStyle: {
+                                  normal: {
+                                      label: {
+                                          show: false
+                                      },
+                                      labelLine: {
+                                          show: false
+                                      }
+                                  },
+                                  emphasis: {
+                                      label: {
+                                          show: false,
+                                          position: 'outer',
+                                          textStyle: {
+                                              fontSize: '15',
+                                              fontWeight: 'bold',
+                                              color: 'white'
+                                          }
+                                      }
+                                  }
+                              },
+                      data: [
+                        {value: columnNewsNum, name: '总计发布文章'},
+                        {value: columnNewsTodayNum, name: '今日发布文章'}
+
+                      ]
+                  }
+              ]
+      })
+    }
+  }
+};
+</script>

+ 167 - 0
ruoyi-ui/src/views/dashboard/PanelGroupone.vue

@@ -0,0 +1,167 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+
+
+</template>
+
+<script>
+import echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      chart: null
+    };
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+
+    console.log(this.chartData,58)
+  },
+  beforeDestroy() {
+    if (!this.chart) {
+      return;
+    }
+    this.chart.dispose();
+    this.chart = null;
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
+      this.chart = echarts.init(this.$el, 'macarons')
+      this.setOptions(this.chartData)
+
+    },
+
+    setOptions({ reportDetailNum, reportDetail,reportDetailTodayNum } = {}) {
+      this.chart.setOption({
+        color: [new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+               offset: 0,
+               color: '#F52F2F'
+           },
+           {
+               offset: 1,
+               color: '#F52F2F'
+           }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
+               offset: 0,
+               color: '#FFCECE'
+           },
+           {
+               offset: 0.9,
+               color: '#FFCECE'
+           }]),],
+            tooltip: {
+                  trigger: 'item'
+              },
+              legend: {
+                  top: '10%',
+                  left: 'center',
+                  data:[]
+              },
+              // 设置环形中间的数据
+                  graphic: [{
+                      type: 'text',
+                      left: 'center',
+                      top: '46%',
+                      z: 10,
+                      style: {
+                          fill: '#F52F2F',
+                          text: reportDetail,
+                          font: '16px Microsoft YaHei'
+                      },
+                      textStyle: {
+                              color: "#F52F2F",
+                              fontSize: 17,
+                              align: "center"
+                            }
+                  }],
+              series: [
+                  {
+                      name: '生成报告',
+                      type: 'pie',
+                      radius: ['50%', '70%'],
+                      center: ['center', '50%'],
+                      avoidLabelOverlap: false,
+                      // label: {
+                      //     show: false,
+                      //     position: 'center'
+                      // },
+                      // emphasis: {
+                      //     label: {
+                      //         show: true,
+                      //         fontSize: '17',
+                      //         fontWeight: '400',
+                      //         color:'#2497D5'
+                      //     }
+                      // },
+                      // labelLine: {
+                      //     show: true
+                      // },
+                      itemStyle: {
+                                  normal: {
+                                      label: {
+                                          show: false
+                                      },
+                                      labelLine: {
+                                          show: false
+                                      }
+                                  },
+                                  emphasis: {
+                                      label: {
+                                          show: false,
+                                          position: 'outer',
+                                          textStyle: {
+                                              fontSize: '15',
+                                              fontWeight: 'bold',
+                                              color: 'white'
+                                          }
+                                      }
+                                  }
+                              },
+                      data: [
+                        {value: reportDetailNum, name: '总计生成报告'},
+                          {value: reportDetailTodayNum, name: '今日生成报告'}
+
+                      ]
+                  }
+              ]
+      })
+    }
+  }
+};
+</script>

+ 172 - 0
ruoyi-ui/src/views/dashboard/PanelGroups.vue

@@ -0,0 +1,172 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+
+
+</template>
+
+<script>
+import echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      chart: null
+    };
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+
+    console.log(this.chartData,58)
+  },
+  beforeDestroy() {
+    if (!this.chart) {
+      return;
+    }
+    this.chart.dispose();
+    this.chart = null;
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
+      this.chart = echarts.init(this.$el, 'macarons')
+      this.setOptions(this.chartData)
+      console.log(this.chartData)
+
+    },
+
+    setOptions({ reportQueryLogNum, reportQueryLogTodayNum,reportQueryLog} = {}) {
+      // console.log(inspectNum, inspectTodayNum,inspect)
+      this.chart.setOption({
+        color: [new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+               offset: 0,
+               color: '#50BD04'
+           },
+           {
+               offset: 1,
+               color: '#50BD04'
+           }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
+               offset: 0,
+               color: '#C8E1B6'
+           },
+           {
+               offset: 0.9,
+               color: '#C8E1B6'
+           }]),],
+            tooltip: {
+                  trigger: 'item'
+              },
+              legend: {
+                  top: '10%',
+                  left: 'center',
+                  data:[]
+              },
+              // 设置环形中间的数据
+                  graphic: [{
+                      type: 'text',
+                      left: 'center',
+                      top: '46%',
+                      z: 10,
+                      style: {
+                          fill: '#50BD04',
+                          text: reportQueryLog,
+                          // lmrszb
+                          font: '16px Microsoft YaHei'
+                      },
+                      textStyle: {
+                              color: "#50BD04",
+                              fontSize: 17,
+                              align: "center"
+                            }
+                  }],
+              series: [
+                  {
+                      name: '查询次数',
+                      type: 'pie',
+                      radius: ['55%', '70%'],
+                      center: ['center', '50%'],
+                      avoidLabelOverlap: false,
+                      // label: {
+                      //     show: false,
+                      //     position: 'center'
+                      // },
+                      // emphasis: {
+                      //     label: {
+                      //         show: true,
+                      //         fontSize: '17',
+                      //         fontWeight: '400',
+                      //         color:'#2497D5'
+                      //     }
+                      // },
+                      // labelLine: {
+                      //     show: true
+                      // },
+                      itemStyle: {
+                                  normal: {
+                                      label: {
+                                          show: false
+                                      },
+                                      labelLine: {
+                                          show: false
+                                      }
+                                  },
+                                  emphasis: {
+                                      label: {
+                                          show: false,
+                                          position: 'outer',
+                                          textStyle: {
+                                              fontSize: '15',
+                                              fontWeight: 'bold',
+                                              color: 'white'
+                                          }
+                                      }
+                                  }
+                              },
+                      data: [
+                        // {value: lmrs, name: '绿码人数'},
+                        // {value:jrsmrc, name: '扫码人数'}
+                        {value: reportQueryLogNum, name: '总计查询次数'},
+                        {value:reportQueryLogTodayNum, name: '今日查询次数'}
+
+                      ]
+                  }
+              ]
+      })
+    }
+  }
+};
+</script>

+ 167 - 0
ruoyi-ui/src/views/dashboard/PanelGroupther.vue

@@ -0,0 +1,167 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+
+
+</template>
+
+<script>
+import echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      chart: null
+    };
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+
+    console.log(this.chartData,58)
+  },
+  beforeDestroy() {
+    if (!this.chart) {
+      return;
+    }
+    this.chart.dispose();
+    this.chart = null;
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
+      this.chart = echarts.init(this.$el, 'macarons')
+      this.setOptions(this.chartData)
+
+    },
+
+    setOptions({ inspectNum, inspectTodayNum,inspect } = {}) {
+      this.chart.setOption({
+        color: [new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+               offset: 0,
+               color: '#3E9EFF'
+           },
+           {
+               offset: 1,
+               color: '#3E9EFF'
+           }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
+               offset: 0,
+               color: '#9ECEFF'
+           },
+           {
+               offset: 0.9,
+               color: '#9ECEFF'
+           }]),],
+            tooltip: {
+                  trigger: 'item'
+              },
+              legend: {
+                  top: '10%',
+                  left: 'center',
+                  data:[]
+              },
+              // 设置环形中间的数据
+                  graphic: [{
+                      type: 'text',
+                      left: 'center',
+                      top: '46%',
+                      z: 10,
+                      style: {
+                          fill: '#3E9EFF',
+                          text: inspect,
+                          font: '16px Microsoft YaHei'
+                      },
+                      textStyle: {
+                              color: "#3E9EFF",
+                              fontSize: 17,
+                              align: "center"
+                            }
+                  }],
+              series: [
+                  {
+                      name: '送检次数',
+                      type: 'pie',
+                      radius: ['50%', '70%'],
+                      center: ['center', '50%'],
+                      avoidLabelOverlap: false,
+                      // label: {
+                      //     show: false,
+                      //     position: 'center'
+                      // },
+                      // emphasis: {
+                      //     label: {
+                      //         show: true,
+                      //         fontSize: '17',
+                      //         fontWeight: '400',
+                      //         color:'#2497D5'
+                      //     }
+                      // },
+                      // labelLine: {
+                      //     show: true
+                      // },
+                      itemStyle: {
+                                  normal: {
+                                      label: {
+                                          show: false
+                                      },
+                                      labelLine: {
+                                          show: false
+                                      }
+                                  },
+                                  emphasis: {
+                                      label: {
+                                          show: false,
+                                          position: 'outer',
+                                          textStyle: {
+                                              fontSize: '15',
+                                              fontWeight: 'bold',
+                                              color: 'white'
+                                          }
+                                      }
+                                  }
+                              },
+                      data: [
+                        {value: inspectNum, name: '总送检次数'},
+                        {value:inspectTodayNum, name: '今日送检次数'}
+
+                      ]
+                  }
+              ]
+      })
+    }
+  }
+};
+</script>

+ 167 - 0
ruoyi-ui/src/views/dashboard/PanelGrouptwo.vue

@@ -0,0 +1,167 @@
+<template>
+  <div :class="className" :style="{ height: height, width: width }" />
+
+
+</template>
+
+<script>
+import echarts from 'echarts';
+require('echarts/theme/macarons'); // echarts theme
+import resize from './mixins/resize';
+
+export default {
+  mixins: [resize],
+  props: {
+    className: {
+      type: String,
+      default: 'chart'
+    },
+    width: {
+      type: String,
+      default: '150px'
+    },
+    height: {
+      type: String,
+      default: '150px'
+    },
+    autoResize: {
+      type: Boolean,
+      default: true
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  data() {
+    return {
+      chart: null
+    };
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
+    }
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+    });
+
+    console.log(this.chartData,58)
+  },
+  beforeDestroy() {
+    if (!this.chart) {
+      return;
+    }
+    this.chart.dispose();
+    this.chart = null;
+  },
+  methods: {
+    initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
+      this.chart = echarts.init(this.$el, 'macarons')
+      this.setOptions(this.chartData)
+
+    },
+
+    setOptions({ huimrs, huimrszb ,jrsmrc } = {}) {
+      this.chart.setOption({
+        color: [new echarts.graphic.LinearGradient(1, 0, 0, 0, [{
+               offset: 0,
+               color: '#9A9A9A'
+           },
+           {
+               offset: 1,
+               color: '#9A9A9A'
+           }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
+               offset: 0,
+               color: '#DFDFDF'
+           },
+           {
+               offset: 0.9,
+               color: '#DFDFDF'
+           }]),],
+            tooltip: {
+                  trigger: 'item'
+              },
+              legend: {
+                  top: '10%',
+                  left: 'center',
+                  data:[]
+              },
+              // 设置环形中间的数据
+                  graphic: [{
+                      type: 'text',
+                      left: 'center',
+                      top: '46%',
+                      z: 10,
+                      style: {
+                          fill: '#9A9A9A',
+                          text: huimrszb ,
+                          font: '16px Microsoft YaHei'
+                      },
+                      textStyle: {
+                              color: "#9A9A9A",
+                              fontSize: 17,
+                              align: "center"
+                            }
+                  }],
+              series: [
+                  {
+                      name: '灰码',
+                      type: 'pie',
+                      radius: ['50%', '70%'],
+                      center: ['center', '50%'],
+                      avoidLabelOverlap: false,
+                      // label: {
+                      //     show: false,
+                      //     position: 'center'
+                      // },
+                      // emphasis: {
+                      //     label: {
+                      //         show: true,
+                      //         fontSize: '17',
+                      //         fontWeight: '400',
+                      //         color:'#2497D5'
+                      //     }
+                      // },
+                      // labelLine: {
+                      //     show: true
+                      // },
+                      itemStyle: {
+                                  normal: {
+                                      label: {
+                                          show: false
+                                      },
+                                      labelLine: {
+                                          show: false
+                                      }
+                                  },
+                                  emphasis: {
+                                      label: {
+                                          show: false,
+                                          position: 'outer',
+                                          textStyle: {
+                                              fontSize: '15',
+                                              fontWeight: 'bold',
+                                              color: 'white'
+                                          }
+                                      }
+                                  }
+                              },
+                      data: [
+                        {value: huimrs, name: '灰码人数'},
+                          {value: jrsmrc, name: '扫码人数'}
+
+                      ]
+                  }
+              ]
+      })
+    }
+  }
+};
+</script>

+ 93 - 28
ruoyi-ui/src/views/dashboard/PieChart.vue

@@ -21,6 +21,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Array,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -42,38 +54,91 @@ export default {
   },
   methods: {
     initChart() {
+      this.chart = echarts.init(this.$el, 'macarons');
       this.chart = echarts.init(this.$el, 'macarons')
-
+      this.setOptions(this.chartData)
+    },
+    setOptions(data) {
       this.chart.setOption({
-        tooltip: {
-          trigger: 'item',
-          formatter: '{a} <br/>{b} : {c} ({d}%)'
-        },
-        legend: {
-          left: 'center',
-          bottom: '10',
-          data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
-        },
-        series: [
-          {
-            name: 'WEEKLY WRITE ARTICLES',
-            type: 'pie',
-            roseType: 'radius',
-            radius: [15, 95],
-            center: ['50%', '38%'],
-            data: [
-              { value: 320, name: 'Industries' },
-              { value: 240, name: 'Technology' },
-              { value: 149, name: 'Forex' },
-              { value: 100, name: 'Gold' },
-              { value: 59, name: 'Forecasts' }
-            ],
-            animationEasing: 'cubicInOut',
-            animationDuration: 2600
-          }
-        ]
+        // tooltip: {
+        //   trigger: 'item',
+        //   formatter: '{a} <br/>{b} : {c} ({d}%)'
+        // },
+        // legend: {
+        //   left: 'center',
+        //   bottom: '10',
+        //   data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']
+        // },
+        // series: [
+        //   {
+        //     name: 'WEEKLY WRITE ARTICLES',
+        //     type: 'pie',
+        //     roseType: 'radius',
+        //     radius: ["40", "70%"],
+        //     avoidLabelOverlap: false,
+        //     center: ['50%', '38%'],
+        //     data: [
+        //       { value: 320, name: 'Industries' },
+        //       { value: 240, name: 'Technology' },
+        //       { value: 149, name: 'Forex' },
+        //       { value: 100, name: 'Gold' },
+        //       { value: 59, name: 'Forecasts' }
+        //     ],
+        //     // animationEasing: 'cubicInOut',
+        //     animationDuration: 2600
+        //   }
+        // ]
+
+         tooltip: {
+            trigger: 'item'
+          },
+          color:['#3ba372', 'red','#d5d9e2','#fa8555','#546eca'],
+          legend: {
+            bottom: 10,
+            left: 'center',
+
+          },
+          series: [
+            {
+              name: 'Access From',
+              type: 'pie',
+              radius: ['40%', '70%'],
+              avoidLabelOverlap: false,
+               center: ['50%', '38%'],
+              itemStyle: {
+                  borderRadius: 10,
+                  borderColor: '#fff',
+                  borderWidth: 2
+
+              },
+              label: {
+                show: false,
+                position: 'center'
+              },
+              emphasis: {
+                label: {
+                  show: true,
+                  fontSize: '18',
+                  fontWeight: '400',
+                  color:"#333"
+                }
+              },
+              labelLine: {
+                show: true
+              },
+              data:data,
+              // data: [
+              //   { value: 8000, name: '绿码' },
+              //   { value: 250, name: '红码' },
+              //   { value: 390, name: '灰码' },
+              //   { value: 830, name: '未申请' },
+              //   { value: 10000, name: '总人数' }
+              // ]
+            }
+          ]
       })
     }
+
   }
 }
 </script>

+ 235 - 63
ruoyi-ui/src/views/dashboard/RaddarChart.vue

@@ -23,6 +23,18 @@ export default {
     height: {
       type: String,
       default: '300px'
+    },
+    chartData: {
+      type: Object,
+      required: true
+    }
+  },
+  watch: {
+    chartData: {
+      deep: true,
+      handler(val) {
+        this.setOptions(val)
+      }
     }
   },
   data() {
@@ -43,74 +55,234 @@ export default {
     this.chart = null
   },
   methods: {
-    initChart() {
-      this.chart = echarts.init(this.$el, 'macarons')
+    listy(){
 
-      this.chart.setOption({
-        tooltip: {
-          trigger: 'axis',
-          axisPointer: { // 坐标轴指示器,坐标轴触发有效
-            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
-          }
-        },
-        radar: {
-          radius: '66%',
-          center: ['50%', '42%'],
-          splitNumber: 8,
-          splitArea: {
-            areaStyle: {
-              color: 'rgba(127,95,132,.3)',
-              opacity: 1,
-              shadowBlur: 45,
-              shadowColor: 'rgba(0,0,0,.5)',
-              shadowOffsetX: 0,
-              shadowOffsetY: 15
-            }
-          },
-          indicator: [
-            { name: 'Sales', max: 10000 },
-            { name: 'Administration', max: 20000 },
-            { name: 'Information Techology', max: 20000 },
-            { name: 'Customer Support', max: 20000 },
-            { name: 'Development', max: 20000 },
-            { name: 'Marketing', max: 20000 }
-          ]
-        },
-        legend: {
-          left: 'center',
-          bottom: '10',
-          data: ['Allocated Budget', 'Expected Spending', 'Actual Spending']
-        },
-        series: [{
-          type: 'radar',
-          symbolSize: 0,
-          areaStyle: {
-            normal: {
-              shadowBlur: 13,
-              shadowColor: 'rgba(0,0,0,.2)',
-              shadowOffsetX: 0,
-              shadowOffsetY: 10,
-              opacity: 1
+    },
+      initChart() {
+        this.chart = echarts.init(this.$el, 'macarons');
+        this.setOptions(this.chartData)
+      },
+      setOptions({ x,y } = {}) {
+        console.log(x,y,98)
+        const dats = y
+        this.chart.setOption({
+          color: ['#4163d1', '#6be442', '#fbbc29', '#e32b3b','#1898d3'],
+            title: {
+              text: ''
+            },
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: { // 坐标轴指示器,坐标轴触发有效
+              type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
             }
           },
-          data: [
-            {
-              value: [5000, 7000, 12000, 11000, 15000, 14000],
-              name: 'Allocated Budget'
+          radar: {
+            name:{
+               formatter:'{value}',
+                              // 字体样式
+                // 字体样式
+                textStyle:{
+                    fontSize:12,
+                    color:'#333'
+                }
             },
-            {
-              value: [4000, 9000, 15000, 15000, 13000, 11000],
-              name: 'Expected Spending'
+            radius: "66%",
+            //图外名称
+
+            center: ['50%', '42%'],
+            splitNumber: 4,
+            shape: 'circle',
+            splitArea: {
+              // areaStyle: {
+              //   color: 'rgba(127,95,132,.3)',
+              //   opacity: 1,
+              //   shadowBlur: 45,
+              //   shadowColor: 'rgba(0,0,0,.5)',
+              //   shadowOffsetX: 0,
+              //   shadowOffsetY: 15
+              // }
+              areaStyle: {
+                        color: ['#94aadc', '#a9b9df', '#d5d9e2', '#eaecf0'],
+                        shadowColor: 'rgba(0, 0, 0, 0)',
+                        shadowBlur: 45
+                      },
+
+
             },
-            {
-              value: [5500, 11000, 12000, 15000, 12000, 12000],
-              name: 'Actual Spending'
-            }
-          ],
-          animationDuration: animationDuration
-        }]
-      })
-    }
+            axisLine: {
+              show: true,
+                  lineStyle: {
+                    color: '#fff'
+                  }
+                },
+            indicator: [
+              { name: '总人数', max: 2500 },
+              { name: "绿码人数", max: 2500 },
+              { name: '红码人数', max: 2500 },
+              { name: '灰码人数', max: 2500 },
+              { name: '未申请', max: 2500 }
+              // { name: 'Marketing', max: 20000 }
+            ]
+          },
+          legend: {
+            left: 'center',
+            bottom: '10',
+            // data: ['周一', '周二', '周三','周四','周五'],
+
+          },
+          series: [{
+            type: 'radar',
+            symbolSize: 3,
+
+            // data: [
+            //   {
+            //     value: y[0].value,
+            //     name: '周一',
+            //   },
+            //   {
+            //     value: y[1].value,
+            //     name: '周二',
+            //   },
+            //   {
+            //     value: y[2].value,
+            //     name: '周三',
+            //   },
+            //   {
+            //     value: y[3].value,
+            //     name: '周四',
+            //   },
+            //   {
+            //     value: [960, 120, 186, 189, 852, 357],
+            //     name: '周五',
+            //   }
+            // ],
+            data:dats,
+            animationDuration: animationDuration
+          }]
+        })
+      }
+      // this.chart.setOption({
+      //   color: ['#67F9D8', '#FFE434', '#56A3F1', '#FF917C'],
+      //     title: {
+      //       text: 'Customized Radar Chart'
+      //     },
+      //     legend: {},
+      //     radar: [
+      //       {
+      //         indicator: [
+      //           { text: 'Indicator1' },
+      //           { text: 'Indicator2' },
+      //           { text: 'Indicator3' },
+      //           { text: 'Indicator4' },
+      //           { text: 'Indicator5' }
+      //         ],
+      //         center: ['50%', '50%'],
+      //         radius: 120,
+      //         startAngle: 90,
+      //         splitNumber: 4,
+      //         shape: 'circle',
+      //         axisName: {
+      //           formatter: '【{value}】',
+      //           color: '#428BD4'
+      //         },
+      //         splitArea: {
+      //           areaStyle: {
+      //             color: ['#77EADF', '#26C3BE', '#d5d9b2', '#eaecf0'],
+      //             shadowColor: 'rgba(0, 0, 0, 0.2)',
+      //             shadowBlur: 10
+      //           }
+      //         },
+      //         axisLine: {
+      //           lineStyle: {
+      //             color: 'rgba(211, 253, 250, 0.8)'
+      //           }
+      //         },
+      //         splitLine: {
+      //           lineStyle: {
+      //             color: 'rgba(211, 253, 250, 0.8)'
+      //           }
+      //         }
+      //       },
+      //       // {
+      //       //   indicator: [
+      //       //     { text: 'Indicator1', max: 150 },
+      //       //     { text: 'Indicator2', max: 150 },
+      //       //     { text: 'Indicator3', max: 150 },
+      //       //     { text: 'Indicator4', max: 120 },
+      //       //     { text: 'Indicator5', max: 108 },
+      //       //     { text: 'Indicator6', max: 72 }
+      //       //   ],
+      //       //   center: ['75%', '50%'],
+      //       //   radius: 120,
+      //       //   axisName: {
+      //       //     color: '#fff',
+      //       //     backgroundColor: '#666',
+      //       //     borderRadius: 3,
+      //       //     padding: [3, 5]
+      //       //   }
+      //       // }
+      //     ],
+      //     series: [
+      //       {
+      //         type: 'radar',
+      //         emphasis: {
+      //           lineStyle: {
+      //             width: 4
+      //           }
+      //         },
+      //         data: [
+      //           {
+      //             value: [100, 8, 0.4, -80, 2000],
+      //             name: 'Data A'
+      //           },
+      //           {
+      //             value: [60, 5, 0.3, -100, 1500],
+      //             name: 'Data B',
+      //             areaStyle: {
+      //               color: 'rgba(255, 228, 52, 0.6)'
+      //             }
+      //           }
+      //         ]
+      //       },
+      //       // {
+      //       //   type: 'radar',
+      //       //   radarIndex: 1,
+      //       //   data: [
+      //       //     {
+      //       //       value: [120, 118, 130, 100, 99, 70],
+      //       //       name: 'Data C',
+      //       //       symbol: 'rect',
+      //       //       symbolSize: 12,
+      //       //       lineStyle: {
+      //       //         type: 'dashed'
+      //       //       },
+      //       //       label: {
+      //       //         show: true,
+      //       //         formatter: function (params) {
+      //       //           return params.value;
+      //       //         }
+      //       //       }
+      //       //     },
+      //       //     {
+      //       //       value: [100, 93, 50, 90, 70, 60],
+      //       //       name: 'Data D',
+      //       //       areaStyle: {
+      //       //         color: new echarts.graphic.RadialGradient(0.1, 0.6, 1, [
+      //       //           {
+      //       //             color: 'rgba(255, 145, 124, 0.1)',
+      //       //             offset: 0
+      //       //           },
+      //       //           {
+      //       //             color: 'rgba(255, 145, 124, 0.9)',
+      //       //             offset: 1
+      //       //           }
+      //       //         ])
+      //       //       }
+      //       //     }
+      //       //   ]
+      //       // }
+      //     ]
+      // })
   }
 }
 </script>

+ 8 - 0
ruoyi-ui/src/views/dashboard/RatioIndex.vue

@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 437 - 752
ruoyi-ui/src/views/index.vue

@@ -1,794 +1,479 @@
 <template>
-  <div class="app-container home">
-    <el-row :gutter="20">
-      <el-col :sm="24" :lg="24">
-        <blockquote class="text-warning" style="font-size: 14px">
-          领取阿里云通用云产品1888优惠券
-          <br />
-          <el-link
-            href="https://www.aliyun.com/minisite/goods?userCode=brki8iof"
-            type="primary"
-            target="_blank"
-            >https://www.aliyun.com/minisite/goods?userCode=brki8iof</el-link
-          >
-          <br />
-          领取腾讯云通用云产品2860优惠券
-          <br />
-          <el-link
-            href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console"
-            type="primary"
-            target="_blank"
-            >https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</el-link
-          >
-          <br />
-          阿里云服务器折扣区
-          <el-link href="http://aly.ruoyi.vip" type="primary" target="_blank"
-            >>☛☛点我进入☚☚</el-link
-          >
-          &nbsp;&nbsp;&nbsp; 腾讯云服务器秒杀区
-          <el-link href="http://txy.ruoyi.vip" type="primary" target="_blank"
-            >>☛☛点我进入☚☚</el-link
-          ><br />
-          <h4 class="text-danger">
-            云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)
-          </h4>
-        </blockquote>
-
-        <hr />
-      </el-col>
-    </el-row>
-    <el-row :gutter="20">
-      <el-col :sm="24" :lg="12" style="padding-left: 20px">
-        <h2>若依后台管理框架</h2>
-        <p>
-          一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。
-        </p>
-        <p>
-          <b>当前版本:</b> <span>v{{ version }}</span>
-        </p>
-        <p>
-          <el-tag type="danger">&yen;免费开源</el-tag>
-        </p>
-        <p>
-          <el-button
-            type="primary"
-            size="mini"
-            icon="el-icon-cloudy"
-            plain
-            @click="goTarget('https://gitee.com/y_project/RuoYi-Vue')"
-            >访问码云</el-button
-          >
-          <el-button
-            size="mini"
-            icon="el-icon-s-home"
-            plain
-            @click="goTarget('http://ruoyi.vip')"
-            >访问主页</el-button
-          >
-        </p>
-      </el-col>
+  <div class="dashboard-editor-container">
+    <!-- <div class="header">
+      <p @click="day(1)" :class="[dayList == 1 ? 'heade_cod' : '']">天</p>
+      <p>{{ '\xa0\xa0' }}|{{ '\xa0\xa0' }}</p>
+      <p @click="day(2)" :class="[dayList == 2 ? 'heade_cod' : '']">周</p>
+      <p>{{ '\xa0\xa0' }}|{{ '\xa0\xa0' }}</p>
+      <p @click="day(3)" :class="[dayList == 3 ? 'heade_cod' : '']">月</p>
+    </div> -->
+    <el-row style="background-color: #fff; margin-bottom: 50px; margin-top: 30px; border-radius: 6px;">
+      <el-col :xs="24" :sm="24">
+        <el-row style="padding: 0 30px; border-radius: 6px;">
+          <el-col :xs="12" :sm="6" style="display: flex;  height: 100%;">
+            <div style="display: flex;">
+              <div style=" text-align: center; " class="hedse_radt">
+                <div class="hedse_radtone">
+                  <p>总计送检次数</p>
+                  <!-- <p>{{deviceIpOptions.jrsmrc}}</p> -->
+                  <p style="color: #3E9EFF;">{{panelChartDatas.inspectNum}}</p>
+                </div>
+                <div class="hedse_radttwo">
+                  <p>今日送检次数</p>
+                  <!-- <p>{{deviceIpOptions.zsmrc}}</p> -->
+                  <p style="color: #3E9EFF;">{{panelChartDatas.inspectTodayNum}}</p>
+                </div>
+              </div>
+              <panel-groupther :chart-data="panelChartDatas" />
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="6" style="display: flex;  height: 100%;">
+            <div style="display: flex;">
+              <div style=" text-align: center; " class="hedse_radt">
+                <div class="hedse_radtone">
+                  <p >总计生成报告</p>
+                  <!-- <p>{{deviceIpOptions.jrsmrc}}</p> -->
+                  <p style="color:#F53C49 ; ">{{panelChartDatas.reportDetailNum}}</p>
+                </div>
+                <div class="hedse_radttwo">
+                  <p>今日生成报告</p>
+                  <!-- <p>{{deviceIpOptions.zsmrc}}</p> -->
+                  <p style="color:#F53C49 ; ">{{panelChartDatas.reportDetailTodayNum}}</p>
+                </div>
+              </div>
+              <panel-groupone :chart-data="panelChartDatas" />
+              <!-- <panel-groups :chart-data="panelChartDatas" /> -->
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="6" style="display: flex;  height: 100%;">
+            <div style="display: flex;">
+              <div style=" text-align: center; " class="hedse_radt">
+                <div class="hedse_radtone">
+                  <p>总计查询次数</p>
+                  <!-- <p>{{deviceIpOptions.jrsmrc}}</p> -->
+                  <p style="color:#46D871  ; ">{{panelChartDatas.reportQueryLogNum}}</p>
+                </div>
+                <div class="hedse_radttwo">
+                  <p>今日查询次数</p>
+                  <!-- <p>{{deviceIpOptions.zsmrc}}</p> -->
+                  <p style="color:#46D871  ; ">{{panelChartDatas.reportQueryLogTodayNum}}</p>
+                </div>
+              </div>
+              <panel-groups :chart-data="panelChartDatas" />
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="6" style="display: flex;  height: 100%;">
+            <div style="display: flex;">
+              <div style=" text-align: center; " class="hedse_radt">
+                <div class="hedse_radtone">
+                  <p>总计发布文章</p>
+                  <!-- <p>{{deviceIpOptions.jrsmrc}}</p> -->
+                  <p style="color:#FFBC3E ; ">{{panelChartDatas.columnNewsNum}}</p>
+                </div>
+                <div class="hedse_radttwo">
+                  <p>今日发布文章</p>
+                  <!-- <p>{{deviceIpOptions.zsmrc}}</p> -->
+                  <p style="color:#FFBC3E ; ">{{panelChartDatas.columnNewsTodayNum}}</p>
+                </div>
+              </div>
+              <panel-groupfour :chart-data="panelChartDatas" />
+            </div>
+          </el-col>
+          <!-- <el-col :xs="12" :sm="6" style="display: flex; flex-direction: column;">
+            <div class="nav_raet">
+              <p>绿码</p>
+              <p>{{deviceIpOptions.lmrs}}</p>
+              <p>56793435</p>
+            </div>
+            <panel-groups :chart-data="panelChartDatas" />
+          </el-col> -->
 
-      <el-col :sm="24" :lg="12" style="padding-left: 50px">
-        <el-row>
-          <el-col :span="12">
-            <h2>技术选型</h2>
+          <!-- <el-col :xs="12" :sm="4">
+            <div class="nav_raet">
+              <p>红码</p>
+              <p style=" color: #F52F2F;">{{deviceIpOptions.hongmrs}}</p>
+            </div>
+            <panel-groupone :chart-data="panelChartDatas" />
           </el-col>
-        </el-row>
-        <el-row>
-          <el-col :span="6">
-            <h4>后端技术</h4>
-            <ul>
-              <li>SpringBoot</li>
-              <li>Spring Security</li>
-              <li>JWT</li>
-              <li>MyBatis</li>
-              <li>Druid</li>
-              <li>Fastjson</li>
-              <li>...</li>
-            </ul>
+          <el-col :xs="12" :sm="4">
+            <div class="nav_raet">
+              <p>灰码</p>
+              <p style=" color: #9A9A9A;">{{deviceIpOptions.huimrs}}</p>
+            </div>
+            <panel-grouptwo :chart-data="panelChartDatas" />
           </el-col>
-          <el-col :span="6">
-            <h4>前端技术</h4>
-            <ul>
-              <li>Vue</li>
-              <li>Vuex</li>
-              <li>Element-ui</li>
-              <li>Axios</li>
-              <li>Sass</li>
-              <li>Quill</li>
-              <li>...</li>
-            </ul>
+          <el-col :xs="12" :sm="4">
+            <div class="nav_raet">
+              <p>未申领</p>
+              <p style=" color: #9836C1;">{{deviceIpOptions.wsl}}</p>
+            </div>
+            <panel-groupther :chart-data="panelChartDatas" />
           </el-col>
+          <el-col :xs="12" :sm="4">
+            <div class="nav_raet">
+              <p>体温异常</p>
+              <p style=" color: #F69F24;">{{deviceIpOptions.twycrs}}</p>
+            </div>
+            <panel-groupfour :chart-data="panelChartDatas" />
+          </el-col> -->
         </el-row>
       </el-col>
     </el-row>
-    <el-divider />
-    <el-row :gutter="20">
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>联系信息</span>
-          </div>
-          <div class="body">
-            <p>
-              <i class="el-icon-s-promotion"></i> 官网:<el-link
-                href="http://www.ruoyi.vip"
-                target="_blank"
-                >http://www.ruoyi.vip</el-link
-              >
-            </p>
-            <p>
-              <i class="el-icon-user-solid"></i> QQ群:<s>满937441</s>
-              <s>满887144332</s> <s>满180251782</s> <s>满104180207</s>
-              <s>满186866453</s> <s>满201396349</s> <s>满101456076</s>
-              <a href="https://jq.qq.com/?_wv=1027&k=KmQbXyJ6" target="_blank">
-                101539465</a
-              >
-            </p>
-            <p>
-              <i class="el-icon-chat-dot-round"></i> 微信:<a
-                href="javascript:;"
-                >/ *若依</a
-              >
-            </p>
-            <p>
-              <i class="el-icon-money"></i> 支付宝:<a
-                href="javascript:;"
-                class="支付宝信息"
-                >/ *若依</a
-              >
-            </p>
-          </div>
-        </el-card>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>更新日志</span>
-          </div>
-          <el-collapse accordion>
-            <el-collapse-item title="v3.8.0 - 2021-12-01">
-              <ol>
-                <li>新增配套并同步的Vue3前端版本</li>
-                <li>新增通用方法简化模态/缓存/下载/权限/页签使用</li>
-                <li>优化导出数据/使用通用下载方法</li>
-                <li>Excel注解支持自定义数据处理器</li>
-                <li>Excel注解支持导入导出标题信息</li>
-                <li>Excel导入支持@Excels注解</li>
-                <li>新增组件data-dict,简化数据字典使用</li>
-                <li>新增Jaxb依赖,防止jdk8以上出现的兼容错误</li>
-                <li>生产环境使用路由懒加载提升页面响应速度</li>
-                <li>修复五级以上菜单出现的404问题</li>
-                <li>防重提交注解支持配置间隔时间/提示消息</li>
-                <li>日志注解新增是否保存响应参数</li>
-                <li>任务屏蔽违规字符&参数忽略双引号中的逗号</li>
-                <li>升级SpringBoot到最新版本2.5.6</li>
-                <li>升级pagehelper到最新版1.4.0</li>
-                <li>升级spring-boot-mybatis到最新版2.2.0</li>
-                <li>升级oshi到最新版本v5.8.2</li>
-                <li>升级druid到最新版1.2.8</li>
-                <li>升级velocity到最新版本2.3</li>
-                <li>升级fastjson到最新版1.2.78</li>
-                <li>升级axios到最新版本0.24.0</li>
-                <li>升级dart-sass到版本1.32.13</li>
-                <li>升级core-js到最新版本3.19.1</li>
-                <li>升级jsencrypt到最新版本3.2.1</li>
-                <li>升级js-cookie到最新版本3.0.1</li>
-                <li>升级file-saver到最新版本2.0.5</li>
-                <li>升级sass-loader到最新版本10.1.1</li>
-                <li>升级element-ui到最新版本2.15.6</li>
-                <li>新增sendGet无参请求方法</li>
-                <li>禁用el-tag组件的渐变动画</li>
-                <li>代码生成点击预览重置激活tab</li>
-                <li>AjaxResult重写put方法,以方便链式调用</li>
-                <li>优化登录/验证码请求headers不设置token</li>
-                <li>优化用户个人信息接口防止修改用户名</li>
-                <li>优化Cron表达式生成器关闭时销毁避免缓存</li>
-                <li>优化注册成功提示消息类型success</li>
-                <li>优化aop语法,使用spring自动注入注解</li>
-                <li>优化记录登录信息,移除不必要的修改</li>
-                <li>优化mybatis全局默认的执行器</li>
-                <li>优化Excel导入图片可能出现的异常</li>
-                <li>修复代码生成模板主子表删除缺少事务</li>
-                <li>修复日志记录可能出现的转换异常</li>
-                <li>修复代码生成复选框字典遗漏问题</li>
-                <li>修复关闭xss功能导致可重复读RepeatableFilter失效</li>
-                <li>修复字符串无法被反转义问题</li>
-                <li>修复后端主子表代码模板方法名生成错误问题</li>
-                <li>修复xss过滤后格式出现的异常</li>
-                <li>修复swagger没有指定dataTypeClass导致启动出现warn日志</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.7.0 - 2021-09-13">
-              <ol>
-                <li>参数管理支持配置验证码开关</li>
-                <li>新增是否开启用户注册功能</li>
-                <li>定时任务支持在线生成cron表达式</li>
-                <li>菜单管理支持配置路由参数</li>
-                <li>支持自定义注解实现接口限流</li>
-                <li>Excel注解支持Image图片导入</li>
-                <li>自定义弹层溢出滚动样式</li>
-                <li>自定义可拖动弹窗宽度指令</li>
-                <li>自定义可拖动弹窗高度指令</li>
-                <li>修复任意账户越权问题</li>
-                <li>修改时检查用户数据权限范围</li>
-                <li>修复保存配置主题颜色失效问题</li>
-                <li>新增暗色菜单风格主题</li>
-                <li>菜单&部门新增展开/折叠功能</li>
-                <li>页签新增关闭左侧&添加图标</li>
-                <li>顶部菜单排除隐藏的默认路由</li>
-                <li>顶部菜单同步系统主题样式</li>
-                <li>跳转路由高亮相对应的菜单栏</li>
-                <li>代码生成主子表多选行数据</li>
-                <li>日期范围支持添加多组</li>
-                <li>升级element-ui到最新版本2.15.5</li>
-                <li>升级oshi到最新版本v5.8.0</li>
-                <li>升级commons.io到最新版本v2.11.0</li>
-                <li>定时任务屏蔽ldap远程调用</li>
-                <li>定时任务屏蔽http(s)远程调用</li>
-                <li>补充定时任务表字段注释</li>
-                <li>定时任务对检查异常进行事务回滚</li>
-                <li>启用父部门状态排除顶级节点</li>
-                <li>富文本新增上传文件大小限制</li>
-                <li>默认首页使用keep-alive缓存</li>
-                <li>修改代码生成字典回显样式</li>
-                <li>自定义分页合理化传入参数</li>
-                <li>修复字典组件值为整形不显示问题</li>
-                <li>修复定时任务日志执行状态显示</li>
-                <li>角色&菜单新增字段属性提示信息</li>
-                <li>修复角色分配用户页面参数类型错误提醒</li>
-                <li>优化布局设置动画特效</li>
-                <li>优化异常处理信息</li>
-                <li>优化错误token导致的解析异常</li>
-                <li>密码框新增显示切换密码图标</li>
-                <li>定时任务新增更多操作</li>
-                <li>更多操作按钮添加权限控制</li>
-                <li>导入用户样式优化</li>
-                <li>提取通用方法到基类控制器</li>
-                <li>优化使用权限工具获取用户信息</li>
-                <li>优化用户不能删除自己</li>
-                <li>优化XSS跨站脚本过滤</li>
-                <li>优化代码生成模板</li>
-                <li>验证码默认20s超时</li>
-                <li>BLOB下载时清除URL对象引用</li>
-                <li>代码生成导入表按创建时间排序</li>
-                <li>修复代码生成页面数据编辑保存之后总是跳转第一页的问题</li>
-                <li>修复带safari浏览器无法格式化utc日期格式yyyy-MM-dd'T'HH:mm:ss.SSS问题</li>
-                <li>多图上传组件移除多余的api地址&验证失败导致图片删除问题&无法删除相应图片修复</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.6.0 - 2021-07-12">
-              <ol>
-                <li>角色管理新增分配用户功能</li>
-                <li>用户管理新增分配角色功能</li>
-                <li>日志列表支持排序操作</li>
-                <li>优化参数&字典缓存操作</li>
-                <li>系统布局配置支持动态标题开关</li>
-                <li>菜单路由配置支持内链访问</li>
-                <li>默认访问后端首页新增提示语</li>
-                <li>富文本默认上传返回url类型</li>
-                <li>新增自定义弹窗拖拽指令</li>
-                <li>全局注册常用通用组件</li>
-                <li>全局挂载字典标签组件</li>
-                <li>ImageUpload组件支持多图片上传</li>
-                <li>FileUpload组件支持多文件上传</li>
-                <li>文件上传组件添加数量限制属性</li>
-                <li>富文本编辑组件添加类型属性</li>
-                <li>富文本组件工具栏配置视频</li>
-                <li>封装通用iframe组件</li>
-                <li>限制超级管理员不允许操作</li>
-                <li>用户信息长度校验限制</li>
-                <li>分页组件新增pagerCount属性</li>
-                <li>添加bat脚本执行应用</li>
-                <li>升级oshi到最新版本v5.7.4</li>
-                <li>升级element-ui到最新版本2.15.2</li>
-                <li>升级pagehelper到最新版1.3.1</li>
-                <li>升级commons.io到最新版本v2.10.0</li>
-                <li>升级commons.fileupload到最新版本v1.4</li>
-                <li>升级swagger到最新版本v3.0.0</li>
-                <li>修复关闭confirm提示框控制台报错问题</li>
-                <li>修复存在的SQL注入漏洞问题</li>
-                <li>定时任务屏蔽rmi远程调用</li>
-                <li>修复用户搜索分页变量错误</li>
-                <li>修复导出角色数据范围翻译缺少仅本人</li>
-                <li>修复表单构建选择下拉选择控制台报错问题</li>
-                <li>优化图片工具类读取文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.5.0 - 2021-05-25">
-              <ol>
-                <li>新增菜单导航显示风格TopNav(false为左侧导航菜单,true为顶部导航菜单)</li>
-                <li>布局设置支持保存&重置配置</li>
-                <li>修复树表数据显示不全&加载慢问题</li>
-                <li>新增IE浏览器版本过低提示页面</li>
-                <li>用户登录后记录最后登录IP&时间</li>
-                <li>页面导出按钮点击之后添加遮罩</li>
-                <li>富文本编辑器支持自定义上传地址</li>
-                <li>富文本编辑组件新增readOnly属性</li>
-                <li>页签TagsView新增关闭右侧功能</li>
-                <li>显隐列组件加载初始默认隐藏列</li>
-                <li>关闭头像上传窗口还原默认图片</li>
-                <li>个人信息添加手机&邮箱重复验证</li>
-                <li>代码生成模板导出按钮点击后添加遮罩</li>
-                <li>代码生成模板树表操作列添加新增按钮</li>
-                <li>代码生成模板修复主子表字段重名问题</li>
-                <li>升级fastjson到最新版1.2.76</li>
-                <li>升级druid到最新版本v1.2.6</li>
-                <li>升级mybatis到最新版3.5.6 阻止远程代码执行漏洞</li>
-                <li>升级oshi到最新版本v5.6.0</li>
-                <li>velocity剔除commons-collections版本,防止3.2.1版本的反序列化漏洞</li>
-                <li>数据监控页默认账户密码防止越权访问</li>
-                <li>修复firefox下表单构建拖拽会新打卡一个选项卡</li>
-                <li>修正后端导入表权限标识</li>
-                <li>修正前端操作日志&登录日志权限标识</li>
-                <li>设置Redis配置HashKey序列化</li>
-                <li>删除操作日志记录信息</li>
-                <li>上传媒体类型添加视频格式</li>
-                <li>修复请求形参未传值记录日志异常问题</li>
-                <li>优化xss校验json请求条件</li>
-                <li>树级结构更新子节点使用replaceFirst</li>
-                <li>优化ExcelUtil空值处理</li>
-                <li>日志记录过滤BindingResult对象,防止异常</li>
-                <li>修改主题后mini类型按钮无效问题</li>
-                <li>优化通用下载完成后删除节点</li>
-                <li>通用Controller添加响应返回消息</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.4.0 - 2021-02-22">
-              <ol>
-                <li>代码生成模板支持主子表</li>
-                <li>表格右侧工具栏组件支持显隐列</li>
-                <li>图片组件添加预览&移除功能</li>
-                <li>Excel注解支持Image图片导出</li>
-                <li>操作按钮组调整为朴素按钮样式</li>
-                <li>代码生成支持文件上传组件</li>
-                <li>代码生成日期控件区分范围</li>
-                <li>代码生成数据库文本类型生成表单文本域</li>
-                <li>用户手机邮箱&菜单组件修改允许空字符串</li>
-                <li>升级SpringBoot到最新版本2.2.13 提升启动速度</li>
-                <li>升级druid到最新版本v1.2.4</li>
-                <li>升级fastjson到最新版1.2.75</li>
-                <li>升级element-ui到最新版本2.15.0</li>
-                <li>修复IE11浏览器报错问题</li>
-                <li>优化多级菜单之间切换无法缓存的问题</li>
-                <li>修复四级菜单无法显示问题</li>
-                <li>修正侧边栏静态路由丢失问题</li>
-                <li>修复角色管理-编辑角色-功能权限显示异常</li>
-                <li>配置文件新增redis数据库索引属性</li>
-                <li>权限工具类增加admin判断</li>
-                <li>角色非自定义权限范围清空选择值</li>
-                <li>修复导入数据为负浮点数时丢失精度问题</li>
-                <li>移除path-to-regexp正则匹配插件</li>
-                <li>修复生成树表代码异常</li>
-                <li>修改ip字段长度防止ipv6地址长度不够</li>
-                <li>防止get请求参数值为false或0等特殊值会导致无法正确的传参</li>
-                <li>登录后push添加catch防止出现检查错误</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.3.0 - 2020-12-14">
-              <ol>
-                <li>新增缓存监控功能</li>
-                <li>支持主题风格配置</li>
-                <li>修复多级菜单之间切换无法缓存的问题</li>
-                <li>多级菜单自动配置组件</li>
-                <li>代码生成预览支持高亮显示</li>
-                <li>支持Get请求映射Params参数</li>
-                <li>删除用户和角色解绑关联</li>
-                <li>去除用户手机邮箱部门必填验证</li>
-                <li>Excel支持注解align对齐方式</li>
-                <li>Excel支持导入Boolean型数据</li>
-                <li>优化头像样式,鼠标移入悬停遮罩</li>
-                <li>代码生成预览提供滚动机制</li>
-                <li>代码生成删除多余的数字float类型</li>
-                <li>修正转换字符串的目标字符集属性</li>
-                <li>回显数据字典防止空值报错</li>
-                <li>日志记录增加过滤多文件场景</li>
-                <li>修改缓存Set方法可能导致嵌套的问题</li>
-                <li>移除前端一些多余的依赖</li>
-                <li>防止安全扫描YUI出现的风险提示</li>
-                <li>修改node-sass为dart-sass</li>
-                <li>升级SpringBoot到最新版本2.1.18</li>
-                <li>升级poi到最新版本4.1.2</li>
-                <li>升级oshi到最新版本v5.3.6</li>
-                <li>升级bitwalker到最新版本1.21</li>
-                <li>升级axios到最新版本0.21.0</li>
-                <li>升级element-ui到最新版本2.14.1</li>
-                <li>升级vue到最新版本2.6.12</li>
-                <li>升级vuex到最新版本3.6.0</li>
-                <li>升级vue-cli到版本4.5.9</li>
-                <li>升级vue-router到最新版本3.4.9</li>
-                <li>升级vue-cli到最新版本4.4.6</li>
-                <li>升级vue-cropper到最新版本0.5.5</li>
-                <li>升级clipboard到最新版本2.0.6</li>
-                <li>升级core-js到最新版本3.8.1</li>
-                <li>升级echarts到最新版本4.9.0</li>
-                <li>升级file-saver到最新版本2.0.4</li>
-                <li>升级fuse.js到最新版本6.4.3</li>
-                <li>升级js-beautify到最新版本1.13.0</li>
-                <li>升级js-cookie到最新版本2.2.1</li>
-                <li>升级path-to-regexp到最新版本6.2.0</li>
-                <li>升级quill到最新版本1.3.7</li>
-                <li>升级screenfull到最新版本5.0.2</li>
-                <li>升级sortablejs到最新版本1.10.2</li>
-                <li>升级vuedraggable到最新版本2.24.3</li>
-                <li>升级chalk到最新版本4.1.0</li>
-                <li>升级eslint到最新版本7.15.0</li>
-                <li>升级eslint-plugin-vue到最新版本7.2.0</li>
-                <li>升级lint-staged到最新版本10.5.3</li>
-                <li>升级runjs到最新版本4.4.2</li>
-                <li>升级sass-loader到最新版本10.1.0</li>
-                <li>升级script-ext-html-webpack-plugin到最新版本2.1.5</li>
-                <li>升级svg-sprite-loader到最新版本5.1.1</li>
-                <li>升级vue-template-compiler到最新版本2.6.12</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.1 - 2020-11-18">
-              <ol>
-                <li>阻止任意文件下载漏洞</li>
-                <li>代码生成支持上传控件</li>
-                <li>新增图片上传组件</li>
-                <li>调整默认首页</li>
-                <li>升级druid到最新版本v1.2.2</li>
-                <li>mapperLocations配置支持分隔符</li>
-                <li>权限信息调整</li>
-                <li>调整sql默认时间</li>
-                <li>解决代码生成没有bit类型的问题</li>
-                <li>升级pagehelper到最新版1.3.0</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v3.2.0 - 2020-10-10">
-              <ol>
-                <li>升级springboot版本到2.1.17 提升安全性</li>
-                <li>升级oshi到最新版本v5.2.5</li>
-                <li>升级druid到最新版本v1.2.1</li>
-                <li>升级jjwt到版本0.9.1</li>
-                <li>升级fastjson到最新版1.2.74</li>
-                <li>修改sass为node-sass,避免el-icon图标乱码</li>
-                <li>代码生成支持同步数据库</li>
-                <li>代码生成支持富文本控件</li>
-                <li>代码生成页面时不忽略remark属性</li>
-                <li>代码生成添加select必填选项</li>
-                <li>Excel导出类型NUMERIC支持精度浮点类型</li>
-                <li>Excel导出targetAttr优化获取值,防止get方法不规范</li>
-                <li>Excel注解支持自动统计数据总和</li>
-                <li>Excel注解支持设置BigDecimal精度&舍入规则</li>
-                <li>菜单&数据权限新增(展开/折叠 全选/全不选 父子联动)</li>
-                <li>允许用户分配到部门父节点</li>
-                <li>菜单新增是否缓存keep-alive</li>
-                <li>表格操作列间距调整</li>
-                <li>限制系统内置参数不允许删除</li>
-                <li>富文本组件优化,支持自定义高度&图片冲突问题</li>
-                <li>富文本工具栏样式对齐</li>
-                <li>导入excel整形值校验优化</li>
-                <li>修复页签关闭所有时固定标签路由不刷新问题</li>
-                <li>表单构建布局型组件新增按钮</li>
-                <li>左侧菜单文字过长显示省略号</li>
-                <li>修正根节点为子部门时,树状结构显示问题</li>
-                <li>修正调用目标字符串最大长度</li>
-                <li>修正菜单提示信息错误</li>
-                <li>修正定时任务执行一次权限标识</li>
-                <li>修正数据库字符串类型nvarchar</li>
-                <li>优化递归子节点</li>
-                <li>优化数据权限判断</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v3.1.0 - 2020-08-13">
-              <ol>
-                <li>表格工具栏右侧添加刷新&显隐查询组件</li>
-                <li>后端支持CORS跨域请求</li>
-                <li>代码生成支持选择上级菜单</li>
-                <li>代码生成支持自定义路径</li>
-                <li>代码生成支持复选框</li>
-                <li>Excel导出导入支持dictType字典类型</li>
-                <li>Excel支持分割字符串组内容</li>
-                <li>验证码类型支持(数组计算、字符验证)</li>
-                <li>升级vue-cli版本到4.4.4</li>
-                <li>修改 node-sass 为 dart-sass</li>
-                <li>表单类型为Integer/Long设置整形默认值</li>
-                <li>代码生成器默认mapper路径与默认mapperScan路径不一致</li>
-                <li>优化防重复提交拦截器</li>
-                <li>优化上级菜单不能选择自己</li>
-                <li>修复角色的权限分配后,未实时生效问题</li>
-                <li>修复在线用户日志记录类型</li>
-                <li>修复富文本空格和缩进保存后不生效问题</li>
-                <li>修复在线用户判断逻辑</li>
-                <li>唯一限制条件只返回单条数据</li>
-                <li>添加获取当前的环境配置方法</li>
-                <li>超时登录后页面跳转到首页</li>
-                <li>全局异常状态汉化拦截处理</li>
-                <li>HTML过滤器改为将html转义</li>
-                <li>检查字符支持小数点&降级改成异常提醒</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
 
-            <el-collapse-item title="v3.0.0 - 2020-07-20">
-              <ol>
-                <li>单应用调整为多模块项目</li>
-                <li>升级element-ui版本到2.13.2</li>
-                <li>删除babel,提高编译速度。</li>
-                <li>新增菜单默认主类目</li>
-                <li>编码文件名修改为uuid方式</li>
-                <li>定时任务cron表达式验证</li>
-                <li>角色权限修改时已有权限未自动勾选异常修复</li>
-                <li>防止切换权限用户后登录出现404</li>
-                <li>Excel支持sort导出排序</li>
-                <li>创建用户不允许选择超级管理员角色</li>
-                <li>修复代码生成导入表结构出现异常页面不提醒问题</li>
-                <li>修复代码生成点击多次表修改数据不变化的问题</li>
-                <li>修复头像上传成功二次打开无法改变裁剪框大小和位置问题</li>
-                <li>修复布局为small者mini用户表单显示错位问题</li>
-                <li>修复热部署导致的强换异常问题</li>
-                <li>修改用户管理复选框宽度,防止部分浏览器出现省略号</li>
-                <li>IpUtils工具,清除Xss特殊字符,防止Xff注入攻击</li>
-                <li>生成domain 如果是浮点型 统一用BigDecimal</li>
-                <li>定时任务调整label-width,防止部署出现错位</li>
-                <li>调整表头固定列默认样式</li>
-                <li>代码生成模板调整,字段为String并且必填则加空串条件</li>
-                <li>代码生成字典Integer/Long使用parseInt</li>
-                <li>
-                  修复dict_sort不可update为0的问题&查询返回增加dict_sort升序排序
-                </li>
-                <li>修正岗位导出权限注解</li>
-                <li>禁止加密密文返回前端</li>
-                <li>修复代码生成页面中的查询条件创建时间未生效的问题</li>
-                <li>修复首页搜索菜单外链无法点击跳转问题</li>
-                <li>修复菜单管理选择图标,backspace删除时不过滤数据</li>
-                <li>用户管理部门分支节点不可检查&显示计数</li>
-                <li>数据范围过滤属性调整</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
+    <!-- 列表 -->
 
-            <el-collapse-item title="v2.3.0 - 2020-06-01">
-              <ol>
-                <li>升级fastjson到最新版1.2.70 修复高危安全漏洞</li>
-                <li>dev启动默认打开浏览器</li>
-                <li>vue-cli使用默认source-map</li>
-                <li>slidebar eslint报错优化</li>
-                <li>当tags-view滚动关闭右键菜单</li>
-                <li>字典管理添加缓存读取</li>
-                <li>参数管理支持缓存操作</li>
-                <li>支持一级菜单(和主页同级)在main区域显示</li>
-                <li>限制外链地址必须以http(s)开头</li>
-                <li>tagview & sidebar 主题颜色与element ui(全局)同步</li>
-                <li>修改数据源类型优先级,先根据方法,再根据类</li>
-                <li>支持是否需要设置token属性,自定义返回码消息。</li>
-                <li>swagger请求前缀加入配置。</li>
-                <li>登录地点设置内容过长则隐藏显示</li>
-                <li>修复定时任务执行一次按钮后不提示消息问题</li>
-                <li>修改上级部门(选择项排除本身和下级)</li>
-                <li>通用http发送方法增加参数 contentType 编码类型</li>
-                <li>更换IP地址查询接口</li>
-                <li>修复页签变量undefined</li>
-                <li>添加校验部门包含未停用的子部门</li>
-                <li>修改定时任务详情下次执行时间日期显示错误</li>
-                <li>角色管理查询设置默认排序字段</li>
-                <li>swagger添加enable参数控制是否启用</li>
-                <li>只对json类型请求构建可重复读取inputStream的request</li>
-                <li>修改代码生成字典字段int类型没有自动选中问题</li>
-                <li>vuex用户名取值修正</li>
-                <li>表格树模板去掉多余的)</li>
-                <li>代码生成序号修正</li>
-                <li>全屏情况下不调整上外边距</li>
-                <li>代码生成Date字段添加默认格式</li>
-                <li>用户管理角色选择权限控制</li>
-                <li>修复路由懒加载报错问题</li>
-                <li>模板sql.vm添加菜单状态</li>
-                <li>设置用户名称不能修改</li>
-                <li>dialog添加append-to-body属性,防止ie遮罩</li>
-                <li>菜单区分状态和显示隐藏功能</li>
-                <li>升级fastjson到最新版1.2.68 修复安全加固</li>
-                <li>修复代码生成如果选择字典类型缺失逗号问题</li>
-                <li>登录请求params更换为data,防止暴露url</li>
-                <li>日志返回时间格式处理</li>
-                <li>添加handle控制允许拖动的元素</li>
-                <li>布局设置点击扩大范围</li>
-                <li>代码生成列属性排序查询</li>
-                <li>代码生成列支持拖动排序</li>
-                <li>修复时间格式不支持ios问题</li>
-                <li>表单构建添加父级class,防止冲突</li>
-                <li>定时任务并发属性修正</li>
-                <li>角色禁用&菜单隐藏不查询权限</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
+    <!-- <panel-group @handleSetLineChartData="handleSetLineChartData" /> -->
+    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px; border-radius: 6px;">
+      <line-chart :chart-data="lineChartData"  v-if="hye"/></el-row>
 
-            <el-collapse-item title="v2.2.0 - 2020-03-18">
-              <ol>
-                <li>系统监控新增定时任务功能</li>
-                <li>添加一个打包Web工程bat</li>
-                <li>修复页签鼠标滚轮按下的时候,可以关闭不可关闭的tag</li>
-                <li>修复点击退出登录有时会无提示问题</li>
-                <li>修复防重复提交注解无效问题</li>
-                <li>修复通知公告批量删除异常问题</li>
-                <li>添加菜单时路由地址必填限制</li>
-                <li>代码生成字段描述可编辑</li>
-                <li>修复用户修改个人信息导致缓存不过期问题</li>
-                <li>个人信息创建时间获取正确属性值</li>
-                <li>操作日志详细显示正确类型</li>
-                <li>导入表单击行数据时选中对应的复选框</li>
-                <li>批量替换表前缀逻辑调整</li>
-                <li>固定重定向路径表达式</li>
-                <li>升级element-ui版本到2.13.0</li>
-                <li>操作日志排序调整</li>
-                <li>修复charts切换侧边栏或者缩放窗口显示bug</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.1.0 - 2020-02-24">
-              <ol>
-                <li>新增表单构建</li>
-                <li>代码生成支持树表结构</li>
-                <li>新增用户导入</li>
-                <li>修复动态加载路由页面刷新问题</li>
-                <li>修复地址开关无效问题</li>
-                <li>汉化错误提示页面</li>
-                <li>代码生成已知问题修改</li>
-                <li>修复多数据源下配置关闭出现异常处理</li>
-                <li>添加HTML过滤器,用于去除XSS漏洞隐患</li>
-                <li>修复上传头像控制台出现异常</li>
-                <li>修改用户管理分页不正确的问题</li>
-                <li>修复验证码记录提示错误</li>
-                <li>修复request.js缺少Message引用</li>
-                <li>修复表格时间为空出现的异常</li>
-                <li>添加Jackson日期反序列化时区配置</li>
-                <li>调整根据用户权限加载菜单数据树形结构</li>
-                <li>调整成功登录不恢复按钮,防止多次点击</li>
-                <li>修改用户个人资料同步缓存信息</li>
-                <li>修复页面同时出现el-upload和Editor不显示处理</li>
-                <li>修复在角色管理页修改菜单权限偶尔未选中问题</li>
-                <li>配置文件新增redis密码属性</li>
-                <li>设置mybatis全局的配置文件</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-
-            <el-collapse-item title="v2.0.0 - 2019-12-02">
-              <ol>
-                <li>新增代码生成</li>
-                <li>新增@RepeatSubmit注解,防止重复提交</li>
-                <li>新增菜单主目录添加/删除操作</li>
-                <li>日志记录过滤特殊对象,防止转换异常</li>
-                <li>修改代码生成路由脚本错误</li>
-                <li>用户上传头像实时同步缓存,无需重新登录</li>
-                <li>调整切换页签后不重新加载数据</li>
-                <li>添加jsencrypt实现参数的前端加密</li>
-                <li>系统退出删除用户缓存记录</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.1.0 - 2019-11-11">
-              <ol>
-                <li>新增在线用户管理</li>
-                <li>新增按钮组功能实现(批量删除、导出、清空)</li>
-                <li>新增查询条件重置按钮</li>
-                <li>新增Swagger全局Token配置</li>
-                <li>新增后端参数校验</li>
-                <li>修复字典管理页面的日期查询异常</li>
-                <li>修改时间函数命名防止冲突</li>
-                <li>去除菜单上级校验,默认为顶级</li>
-                <li>修复用户密码无法修改问题</li>
-                <li>修复菜单类型为按钮时不显示权限标识</li>
-                <li>其他细节优化</li>
-              </ol>
-            </el-collapse-item>
-            <el-collapse-item title="v1.0.0 - 2019-10-08">
-              <ol>
-                <li>若依前后端分离系统正式发布</li>
-              </ol>
-            </el-collapse-item>
-          </el-collapse>
-        </el-card>
+   <!-- <el-row :gutter="32">
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper"><raddar-chart :chart-data="panelChartDataleid"/></div>
       </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="8">
-        <el-card class="update-log">
-          <div slot="header" class="clearfix">
-            <span>捐赠支持</span>
-          </div>
-          <div class="body">
-            <img
-              src="https://oscimg.oschina.net/oscnet/up-d6695f82666e5018f715c41cb7ee60d3b73.png"
-              alt="donate"
-              width="100%"
-            />
-            <span style="display: inline-block; height: 30px; line-height: 30px"
-              >你可以请作者喝杯咖啡表示鼓励</span
-            >
-          </div>
-        </el-card>
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper"><pie-chart :chart-data="panelChartDatayuanh" /></div>
       </el-col>
-    </el-row>
+      <el-col :xs="24" :sm="24" :lg="8">
+        <div class="chart-wrapper" ><bar-chart :chart-data="panelChartDatazhuzh" /></div>
+      </el-col>
+    </el-row> -->
   </div>
 </template>
 
 <script>
+import {treeselect,listDevice, exportPost,listzhex,listleida,listdbyh, listzhuzh} from "@/api/index";
+import PanelGroup from './dashboard/PanelGroup';
+import PanelGroups from './dashboard/PanelGroups';
+import PanelGroupone from './dashboard/PanelGroupone';
+import PanelGrouptwo from './dashboard/PanelGrouptwo';
+import PanelGroupther from './dashboard/PanelGroupther';
+import PanelGroupfour from './dashboard/PanelGroupfour';
+import LineChart from './dashboard/LineChart';
+import RaddarChart from './dashboard/RaddarChart';
+import PieChart from './dashboard/PieChart';
+import BarChart from './dashboard/BarChart';
+// const lineChartData = {
+//   newVisitis: {
+//     expectedData: [80, 120, 111, 104, 105, 100, 105],
+//     actualData: [120, 140, 130, 110, 162, 140, 145]
+//   },
+//   messages: {
+//     expectedData: [200, 192, 120, 144, 160, 130, 140],
+//     actualData: [180, 160, 151, 106, 145, 150, 130]
+//   },
+//   purchases: {
+//     expectedData: [80, 100, 121, 104, 105, 90, 100],
+//     actualData: [120, 90, 100, 138, 142, 130, 130]
+//   },
+//   shoppings: {
+//     expectedData: [130, 140, 141, 142, 145, 150, 160],
+//     actualData: [120, 82, 91, 154, 162, 140, 130]
+//   },
+
+// };
+
 export default {
-  name: "Index",
+  name: 'Index',
+  components: {
+    PanelGroup,
+    PanelGroups,
+    LineChart,
+    RaddarChart,
+    PieChart,
+    BarChart,
+    PanelGroupone,
+    PanelGrouptwo,
+    PanelGroupther,
+    PanelGroupfour
+  },
   data() {
     return {
-      // 版本号
-      version: "3.8.0",
+      lineChartData: {},
+      dayList: 1, //判断天周月
+      taye: 'newVisitis', //根据点击天周月变换,折线图数据变换
+      panelChartData: {},
+      panelChartDatas:{},
+      panelChartDataleid:{},
+      panelChartDatayuanh:[],
+      tableData: [
+      ], //表格数据
+      // 总条数
+      total: 10,
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10
+      },
+      // 遮罩层
+      loading: false,
+      deviceIpOptions:{},
+      panelChartDatazhuzh:{},
+      hye:false
     };
   },
+  mounted(){
+   // this.yuanhaun(1)
+   // this.tableList()
+   // // 折线
+   this.zhexianList()
+   // // 雷达
+   // this.leidaList()
+   // // 底部圆环
+   // this.dbyhList()
+   // // 柱状图
+   // this.zhuzhList()
+  },
   methods: {
-    goTarget(href) {
-      window.open(href, "_blank");
+    handleSetLineChartData(type) {
+      this.lineChartData = lineChartData[type];
     },
-  },
+    // 月 周 天 点击
+    day(index) {
+      this.dayList = index;
+      this.yuanhaun(index)
+      if (index == 1) {
+        // 天
+        this.taye = 'newVisitis';
+        this.lineChartData = lineChartData[this.taye];
+      } else if (index == 2) {
+        // 周
+        this.taye = 'messages';
+        this.lineChartData = lineChartData[this.taye];
+      } else {
+        // 月
+        this.taye = 'purchases';
+        this.lineChartData = lineChartData[this.taye];
+      }
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      // this.ids = selection.map(item => item.id)
+      // this.single = selection.length !== 1
+      // this.multiple = !selection.length
+    },
+    // 表格点击事件
+    tabclick(val){
+      console.log(val)
+      this.$router.push({
+        path:'./school/temperatures',
+        query:{
+          val:val,
+        }
+      })
+      },
+    // 圆环数据
+    yuanhaun(val){
+      treeselect(val).then(response => {
+        this.deviceIpOptions = response.data;
+        this.panelChartDatas = this.deviceIpOptions
+      });
+    },
+    // 列表数据
+   tableList(){
+     listDevice().then(response => {
+       this.tableData = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 折线图数据
+   zhexianList(){
+     listzhex().then(response => {
+       this.lineChartData = response.data;
+       this.hye = true
+       console.log(56,this.lineChartData)
+       this.panelChartDatas = this.lineChartData
+     });
+   },
+   // 雷达图
+   leidaList(){
+     listleida().then(response => {
+       this.panelChartDataleid = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 底部圆环数据
+   dbyhList(){
+     listdbyh().then(response => {
+       this.panelChartDatayuanh = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+   // 柱状图数据
+   zhuzhList(){
+     listzhuzh().then(response => {
+       this.panelChartDatazhuzh = response.data;
+       // this.panelChartDatas = this.deviceIpOptions
+     });
+   },
+
+   /** 导出按钮操作 */
+   handleExport() {
+     const queryParams = this.queryParams;
+     this.$confirm('是否确认导出?', "警告", {
+         confirmButtonText: "确定",
+         cancelButtonText: "取消",
+         type: "warning"
+       }).then(function() {
+         return exportPost();
+       }).then(response => {
+         this.download(response.msg);
+       })
+   }
+
+  }
 };
 </script>
 
-<style scoped lang="scss">
-.home {
-  blockquote {
-    padding: 10px 20px;
-    margin: 0 0 20px;
-    font-size: 17.5px;
-    border-left: 5px solid #eee;
+<style lang="scss">
+.tabsty {
+  .el-table .el-table__header-wrapper th {
+    background-color: #7bcbff;
+    color: #fff;
+    border:0 !important;
   }
-  hr {
-    margin-top: 20px;
-    margin-bottom: 20px;
-    border: 0;
-    border-top: 1px solid #eee;
+  .el-table--striped .el-table__body tr.el-table__row--striped td {
+    background-color: #e9f1f7;
   }
-  .col-item {
-    margin-bottom: 20px;
+  .el-table--group,
+  .el-table--border {
+    // border-color: #0CA0FF;
+    border: 1px solid #0CA0FF;
   }
+}
+</style>
 
-  ul {
-    padding: 0;
-    margin: 0;
+<style lang="scss" scoped>
+.header {
+  display: flex;
+  text-align: left;
+  justify-content: flex-end;
+  margin-bottom: 12px;
+  p {
+    font-size: 18px;
+    font-family: PingFang SC;
+    font-weight: 700;
+    color: #666666;
+    cursor: pointer;
   }
-
-  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  color: #676a6c;
-  overflow-x: hidden;
-
-  ul {
-    list-style-type: none;
+  p:nth-child(1)::before {
+    width: 1px;
+    background-color: #666;
   }
-
-  h4 {
-    margin-top: 0px;
+  .heade_cod {
+    color: #00a8ec;
   }
-
-  h2 {
-    margin-top: 10px;
-    font-size: 26px;
-    font-weight: 100;
+  .el-table--border {
+    border: 1px solid #0ca0ff !important;
+  }
+}
+p {
+  margin: 0;
+}
+.hedse_radt {
+  height: 100%;
+  // padding-top: 24px;
+  position: relative;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  .p {
+    position: absolute;
+    right: 8px;
+    width: 1px;
+    height: 83px;
+    background-color: #c7cbd7;
+    top: 40%;
   }
+  .hedse_radtone {
+    margin-bottom: 18px;
+    p:nth-child(1) {
+      font-size: 12px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #343434;
+      text-align: left;
+    }
+    p:nth-child(2) {
+      font-size: 18px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #459CF9;
+      margin-top: 5px;
+      text-align: left ;
+    }
+  }
+  .hedse_radttwo {
+    p:nth-child(1) {
+      font-size: 12px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #343434;
+      text-align: left;
+    }
+    p:nth-child(2) {
+      font-size: 18px;
+      font-family: PingFang SC;
+      font-weight: bold;
+      color: #459CF9;
+      margin-top: 5px;
+      text-align: left;
+    }
+  }
+}
+.nav_raet {
+  padding-top: 24px;
+  p:nth-child(1) {
+    font-size: 12px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #343434;
+  }
+  p:nth-child(2) {
+    font-size: 18px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #50bd04;
+    text-align: left ;
+  }
+}
+.dashboard-editor-container {
+  padding: 32px;
+  padding-top: 12px;
+  background-color: rgb(240, 242, 245);
+  position: relative;
 
-  p {
-    margin-top: 10px;
+  .chart-wrapper {
+    background: #fff;
+    padding: 16px 16px 0;
+    margin-bottom: 32px;
+  }
+}
 
-    b {
-      font-weight: 700;
-    }
+@media (max-width: 1024px) {
+  .chart-wrapper {
+    padding: 8px;
   }
+}
 
-  .update-log {
-    ol {
-      display: block;
-      list-style-type: decimal;
-      margin-block-start: 1em;
-      margin-block-end: 1em;
-      margin-inline-start: 0;
-      margin-inline-end: 0;
-      padding-inline-start: 40px;
-    }
+// 表格央视
+.tabsty {
+  background-color: #fff;
+  width: 100%;
+  margin-top: 16px;
+  padding: 0 30px;
+  padding-top: 23px;
+  padding-bottom: 40px;
+  margin-bottom: 36px;
+}
+.tabbuut {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 15px;
+  p:nth-child(1) {
+    font-size: 16px;
+    font-family: PingFang SC;
+    font-weight: bold;
+    color: #343434;
   }
 }
 </style>
-

+ 2 - 2
ruoyi-ui/src/views/login.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="login">
     <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
-      <h3 class="title">若依后台管理系统</h3>
+      <h3 class="title">印刷品质量监督检验平台</h3>
       <el-form-item prop="username">
         <el-input
           v-model="loginForm.username"
@@ -56,7 +56,7 @@
     </el-form>
     <!--  底部  -->
     <div class="el-login-footer">
-      <span>Copyright © 2018-2021 ruoyi.vip All Rights Reserved.</span>
+      <!-- <span>Copyright © 2018-2021 ruoyi.vip All Rights Reserved.</span> -->
     </div>
   </div>
 </template>

+ 34 - 8
ruoyi-ui/src/views/system/image/index.vue

@@ -42,9 +42,9 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="imageList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="imageList" @selection-change="handleSelectionChange" :max-height="tableMaxHeight">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="附件ID" align="center" prop="imageId" />
+      <!-- <el-table-column label="附件ID" align="center" prop="imageId" /> -->
       <el-table-column label="附件名称" align="center" prop="imageName" />
       <el-table-column label="附件内容" align="center" prop="imageContent" width="110px">
         <template slot-scope="scope">
@@ -154,7 +154,7 @@
   import "vue-video-player/src/custom-theme.css";
   export default {
     name: "showVideo",
-    dicts: ['image_type', 'image_status'],
+    dicts: ['image_type', 'image_status' ,],
     components: {
                 videoPlayer
             },
@@ -227,16 +227,27 @@
             fullscreenToggle: true ,// 是否显示全屏按钮
             }
           },
-          jeuhse:false
+          jeuhse:false,
+          tableMaxHeight:300
         };
       },
       created() {
-          this.getList();
 
+          this.getList();
+         window.onresize = () => {
+               this.changeTableMaxHeight()
+             }
+             this.changeTableMaxHeight()
+        },
+        destroyed () {
+            window.onresize = null
+          },
+        mounted() {
+          window.onresize = () => {
+                this.changeTableMaxHeight()
+              }
+              this.changeTableMaxHeight()
         },
-        beforeRouteLeave(){
-                    this.$refs.videoPlayer.player.pause()
-                },
         methods: {
           /** 查询附件信息列表 */
           getList() {
@@ -361,6 +372,21 @@
               ...this.queryParams
             }, `image_${new Date().getTime()}.xlsx`)
           },
+          // 获取屏幕高度
+          showFilterForm () {
+                this.filterActive = !this.filterActive
+                this.changeTableMaxHeight()
+              },
+
+              changeTableMaxHeight () {
+                let height = document.body.offsetHeight // 网页可视区域高度
+                // if (this.filterActive) {
+                //   this.tableMaxHeight = height - 320
+                // } else {
+                  this.tableMaxHeight = height - 250
+                // }
+                console.log(height)
+              },
           // 播放回调
                       onPlayerPlay(player) {
                           console.log("player play!", player);

+ 251 - 64
ruoyi-ui/src/views/system/inspectInfor/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="98px">
       <el-form-item label="样品名称" prop="sampleName">
         <el-input
           v-model="queryParams.sampleName"
@@ -75,6 +75,17 @@
           v-hasPermi="['system:inspectInfor:add']"
         >新增</el-button>
       </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdategy"
+          v-hasPermi="['system:reportDetail:add']"
+        >生成报告</el-button>
+      </el-col>
       <el-col :span="1.5">
         <el-button
           type="success"
@@ -86,6 +97,7 @@
           v-hasPermi="['system:inspectInfor:query']"
         >查看</el-button>
       </el-col>
+
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -110,9 +122,11 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="inspectInforList" @selection-change="handleSelectionChange">
+    <el-table  v-loading="loading" :data="inspectInforList" @selection-change="handleSelectionChange" :max-height="tableMaxHeight">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="样品名称" align="center" prop="sampleName" />
+      <el-table-column label="报告编号" align="center" prop="reportNumber" />
+
       <el-table-column label="样品数量" align="center" prop="sampleNum" />
       <el-table-column label="规格型号" align="center" prop="normsModel" />
       <el-table-column label="检验项目" align="center" prop="testItems">
@@ -159,67 +173,139 @@
     />
 
     <!-- 添加或修改送检信息对话框 -->
-    <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="120px">
-        <el-form-item label="样品名称" prop="sampleName" >
-          <el-input v-model="form.sampleName" placeholder="请输入样品名称" disabled />
-        </el-form-item>
-        <el-form-item label="样品数量" prop="sampleNum" >
-          <el-input v-model="form.sampleNum" placeholder="请输入样品数量" disabled/>
-        </el-form-item>
-        <el-form-item label="规格型号" prop="normsModel" >
-          <el-input v-model="form.normsModel" placeholder="请输入规格型号" disabled />
-        </el-form-item>
-        <el-form-item label="检验项目" prop="testItems" disabled>
-          <el-select v-model="form.testItems" placeholder="请选择检验项目" disabled>
-            <el-option
-              v-for="dict in dict.type.Inspection_item"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="提供方式" prop="provideType">
-          <el-select v-model="form.provideType" placeholder="请选择提供方式" disabled>
-            <el-option
-              v-for="dict in dict.type.provision_mode"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="送检单位名称" prop="manufacturerName">
-          <el-input v-model="form.manufacturerName" placeholder="请输入送检单位名称" disabled />
-        </el-form-item>
-        <el-form-item label="送检单位电话" prop="manufacturerPhone">
-          <el-input v-model="form.manufacturerPhone" placeholder="请输入送检单位电话" disabled />
-        </el-form-item>
-        <el-form-item label="委托单位名称" prop="inspectedName">
-          <el-input v-model="form.inspectedName" placeholder="请输入委托单位名称" disabled />
-        </el-form-item>
-        <el-form-item label="委托单位电话" prop="inspectedPhone">
-          <el-input v-model="form.inspectedPhone" placeholder="请输入委托单位电话" disabled />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" disabled />
-        </el-form-item>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="样品名称" prop="sampleName" >
+              <el-input v-model="form.sampleName" placeholder="请输入样品名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="样品数量" prop="sampleNum" >
+              <el-input v-model="form.sampleNum" placeholder="请输入样品数量" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="规格型号" prop="normsModel" >
+              <el-input v-model="form.normsModel" placeholder="请输入规格型号" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="检验项目" prop="testItems" disabled>
+                      <el-select v-model="form.testItems" placeholder="请选择检验项目" disabled>
+                        <el-option
+                          v-for="dict in dict.type.Inspection_item"
+                          :key="dict.value"
+                          :label="dict.label"
+            :value="dict.value"
+                        ></el-option>
+                      </el-select>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="提供方式" prop="provideType">
+                      <el-select v-model="form.provideType" placeholder="请选择提供方式" disabled>
+                        <el-option
+                          v-for="dict in dict.type.provision_mode"
+                          :key="dict.value"
+                          :label="dict.label"
+            :value="dict.value"
+                        ></el-option>
+                      </el-select>
+                    </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="送检单位名称" prop="manufacturerName">
+              <el-input v-model="form.manufacturerName" placeholder="请输入送检单位名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="送检单位电话" prop="manufacturerPhone">
+              <el-input v-model="form.manufacturerPhone" placeholder="请输入送检单位电话" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="委托单位名称" prop="inspectedName">
+              <el-input v-model="form.inspectedName" placeholder="请输入委托单位名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="委托单位电话" prop="inspectedPhone">
+              <el-input v-model="form.inspectedPhone" placeholder="请输入委托单位电话" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" placeholder="请输入备注" disabled />
+            </el-form-item>
+          </el-col>
+        </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="cancel">确 定</el-button>
-<!--        <el-button @click="cancel">取 消</el-button>-->
+               <!-- <el-button @click="cancel">取 消</el-button> -->
+      </div>
+    </el-dialog>
+
+    <el-dialog :title="titles" :visible.sync="opens" width="800px" append-to-body>
+      <el-form ref="forms" :model="forms" :rules="ruless" label-width="120px">
+        <el-row>
+          <el-col :span="24">
+            <el-form-item label="报告编号" prop="reportNumber" >
+              <div style="display: flex;">
+                <span class="bgt" style="margin-right: 10px;">NO:ASJ(</span>
+                <el-input v-model="fore" placeholder="输入四位数信息" style="width: 150px; margin-right: 10px;" class="bhdyei"  maxlength="4" minlength="4" />
+                <span class="bgt" style="margin-right: 10px;">QG —)</span>
+                 <el-input v-model="thre" placeholder="输入三位数信息"  style="width: 150px; border-left: 0; margin-right: 10px;" maxlength="3" minlength="3" class="bhdyei"/>
+                 <span class="bgt">号</span>
+              </div>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="样品名称" prop="sampleName" >
+              <el-input v-model="forms.sampleName" placeholder="请输入样品名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="送检单位名称" prop="manufacturerName">
+              <el-input v-model="forms.manufacturerName" placeholder="请输入送检单位名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="委托单位名称" prop="inspectedName">
+              <el-input v-model="forms.inspectedName" placeholder="请输入委托单位名称" disabled />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否合格" prop="isQualify">
+             <el-select v-model="forms.isQualify" placeholder="请选择" style="width: 100%;" @change="nhyese">
+               <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
+                 :value="dict.value"></el-option>
+             </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" v-if="nshouw">
+            <el-form-item label="详细报告" prop="inspectedName">
+              <imageUpload   v-model="forms.reportUrl" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" :disabled="hyese" > 生成报告</el-button>
+        <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
   </div>
 </template>
 
 <script>
-import { listInspectInfor, getInspectInfor, delInspectInfor, addInspectInfor, updateInspectInfor } from "@/api/system/inspectInfor";
+import { listInspectInfor, getInspectInfors, getInspectInfor, delInspectInfor, addInspectInfor, updateInspectInfor } from "@/api/system/inspectInfor";
 
 export default {
   name: "InspectInfor",
-  dicts: ['Inspection_item', 'provision_mode'],
+  dicts: ['Inspection_item', 'provision_mode','sys_yes_no'],
   data() {
     return {
       // 遮罩层
@@ -238,8 +324,10 @@ export default {
       inspectInforList: [],
       // 弹出层标题
       title: "",
+      titles:'',
       // 是否显示弹出层
       open: false,
+      opens:false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -256,7 +344,14 @@ export default {
       },
       // 表单参数
       form: {},
+      forms:{},
+      nshouw:true,
       // 表单校验
+      ruless:{
+        isQualify: [
+                  { required: true, message: "是否合格必填", trigger: "blur" }
+                ],
+      },
       rules: {
 /*        sampleName: [
           { required: true, message: "样品名称不能为空", trigger: "blur" }
@@ -285,11 +380,28 @@ export default {
         inspectedPhone: [
           { required: true, message: "委托单位电话不能为空", trigger: "blur" }
         ]*/
-      }
+      },
+      fore:'',
+      thre:'',
+      hyese:true,
+      tableMaxHeight:300
     };
   },
   created() {
     this.getList();
+    window.onresize = () => {
+          this.changeTableMaxHeight()
+        }
+        this.changeTableMaxHeight()
+  },
+  destroyed () {
+      window.onresize = null
+    },
+  mounted() {
+    window.onresize = () => {
+          this.changeTableMaxHeight()
+        }
+        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询送检信息列表 */
@@ -304,6 +416,7 @@ export default {
     // 取消按钮
     cancel() {
       this.open = false;
+      this.opens = false
       this.reset();
     },
     // 表单重置
@@ -360,23 +473,51 @@ export default {
         this.title = "查看送检信息";
       });
     },
+    handleUpdategy(row){
+      // this.reset();
+      const inspectId = row.inspectId || this.ids
+      getInspectInfor(inspectId).then(response => {
+        this.forms= response.data;
+        this.fore = ''
+        this.thre = ''
+         console.log(response.data.isReport)
+         if(response.data.isReport == "N"){
+           console.log(response.data.isReport)
+           this.$message.error("报告已生成")
+           this.hyese = true
+           // return false
+         }else{
+           this.hyese = false
+           this.opens = true;
+         }
+
+        this.titles = "生成送检报告";
+      });
+    },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs["forms"].validate(valid => {
         if (valid) {
-          if (this.form.inspectId != null) {
-            updateInspectInfor(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addInspectInfor(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
+          if(this.forms.isQualify == 'N'){
+             this.forms.reportUrl = undefined
+          }else{
+            if(this.forms.reportUrl == undefined || this.forms.reportUrl== null || this.forms.reportUrl == ""){
+                 this.$message.error("详细报告必填")
+                 return false
+            }
+          }
+          if(this.fore !== '' && this.thre !== ''){
+            this.forms.reportNumber = 'NO:ASJ('+ this.fore+')QG —'+this.thre +'号'
+          }else{
+            this.$message.error("报告编号必填")
+             return  false
+          }
+          this.forms.isReport = undefined
+            addInspectInfor(this.forms).then(response => {
+              this.$modal.msgSuccess("操作成功");
+              this.opens = false;
               this.getList();
             });
-          }
         }
       });
     },
@@ -395,7 +536,53 @@ export default {
       this.download('system/inspectInfor/export', {
         ...this.queryParams
       }, `inspectInfor_${new Date().getTime()}.xlsx`)
-    }
+    },
+    nhyese(){
+      console.log(this.forms.isQualify)
+      if(this.forms.isQualify == 'Y'){
+        // 是
+        this.nshouw = true
+      }else{
+        this.nshouw = false
+      }
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 350
+          // }
+          console.log(height)
+        }
   }
 };
 </script>
+<style type="text/css" lang="scss">
+  .bhdyei{
+    .el-input__inner{
+      border-left: 0;
+      border-right: 0;
+      border-top: 0;
+      border-radius: 0;
+      font-size: 16px;
+      font-family: Microsoft YaHei;
+      font-weight: bold;
+      color: #343434;
+      line-height: 34px
+    }
+  }
+  .bgt{
+    font-size: 16px;
+    font-family: Microsoft YaHei;
+    font-weight: bold;
+    color: #343434;
+    line-height: 34px
+  }
+</style>

+ 72 - 24
ruoyi-ui/src/views/system/news/index.vue

@@ -82,11 +82,11 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="newsList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="newsList" @selection-change="handleSelectionChange" :max-height="tableMaxHeight">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="栏目名称" align="center" prop="columnName" />
       <el-table-column label="文章标题" align="center" prop="newsTitle" />
-      <el-table-column label="文章内容" align="center" prop="newsContent" width="300px"/>
+      <el-table-column label="文章内容" align="center" prop="newsContent" width="300px" :show-overflow-tooltip="true"/>
       <el-table-column label="文章状态" align="center" prop="status">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.column_news" :value="scope.row.status"/>
@@ -143,26 +143,45 @@
 
     <!-- 添加或修改文章信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="780px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="文章标题" prop="newsTitle">
-          <el-input v-model="form.newsTitle" placeholder="请输入文章标题" />
-        </el-form-item>
-          <el-form-item label="选择栏目"  prop="columnId">
-            <treeselect v-model="form.columnId" :options="columnOptions" :normalizer="normalizer" placeholder="选择栏目" />
-          </el-form-item>
-        <el-form-item label="是否头条" prop="isTop">
-          <el-select v-model="form.isTop" placeholder="请选择">
-            <el-option
-              v-for="dict in dict.type.sys_yes_no"
-              :key="dict.value"
-              :label="dict.label"
-              :value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="文章内容">
-          <editor v-model="form.newsContent" :min-height="192"/>
-        </el-form-item>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="文章标题" prop="newsTitle">
+              <el-input v-model="form.newsTitle" placeholder="请输入文章标题" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="选择栏目" prop="columnId">
+              <treeselect v-model="form.columnId" :options="columnOptions" :normalizer="normalizer"
+                placeholder="选择栏目" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否头条" prop="isTop">
+              <el-select v-model="form.isTop" placeholder="请选择" style="width: 100%;">
+                <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label"
+                  :value="dict.value"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注" prop="remark">
+              <el-input v-model="form.remark" placeholder="请输入备注" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="24">
+            <el-form-item label="文章内容" prop="newsContent">
+              <editor v-model="form.newsContent" :min-height="192" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="文章缩略图" prop="newsImage">
+              <!-- <editor v-model="form.newsImage" :min-height="192" /> -->
+              <imageUpload v-model="form.newsImage" />
+            </el-form-item>
+          </el-col>
+        </el-row>
 <!--        <el-form-item label="文章状态">
           <el-radio-group v-model="form.status">
             <el-radio
@@ -242,11 +261,25 @@ export default {
           { required: true, message: "是否头条不能为空", trigger: "blur" }
         ]
       },
-      boh:{}  //驳回原因
+      boh:{},  //驳回原因
+      tableMaxHeight:300
     };
   },
   created() {
     this.getList();
+    window.onresize = () => {
+          this.changeTableMaxHeight()
+        }
+        this.changeTableMaxHeight()
+  },
+  destroyed () {
+      window.onresize = null
+    },
+  mounted() {
+window.onresize = () => {
+          this.changeTableMaxHeight()
+        }
+        this.changeTableMaxHeight()
   },
   methods: {
     /** 查询文章信息列表 */
@@ -422,7 +455,22 @@ export default {
         label: node.columnName,
         children: node.children
       };
-    }
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 250
+          // }
+          console.log(height)
+        }
   }
 };
 </script>

+ 286 - 272
ruoyi-ui/src/views/system/queryConfig/index.vue

@@ -2,32 +2,17 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
       <el-form-item label="查询次数" prop="queryNumber">
-        <el-input
-          v-model="queryParams.queryNumber"
-          placeholder="请输入查询次数"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.queryNumber" placeholder="请输入查询次数" clearable size="small"
+          @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="查询主体" prop="queryType">
         <el-select v-model="queryParams.queryType" placeholder="请选择查询主体" clearable size="small">
-          <el-option
-            v-for="dict in dict.type.query_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
+          <el-option v-for="dict in dict.type.query_type" :key="dict.value" :label="dict.label" :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item label="查询方式" prop="queryMode">
         <el-select v-model="queryParams.queryMode" placeholder="请选择查询方式" clearable size="small">
-          <el-option
-            v-for="dict in dict.type.query_mode"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
+          <el-option v-for="dict in dict.type.query_mode" :key="dict.value" :label="dict.label" :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -38,145 +23,106 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:queryConfig:add']"
-        >新增</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+          v-hasPermi="['system:queryConfig:add']">新增</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['system:queryConfig:edit']"
-        >修改</el-button>
+        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+          v-hasPermi="['system:queryConfig:edit']">修改</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['system:queryConfig:remove']"
-        >删除</el-button>
+        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+          v-hasPermi="['system:queryConfig:remove']">删除</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="queryConfigList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="queryConfigList" @selection-change="handleSelectionChange"
+      :max-height="tableMaxHeight">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="查询次数" align="center" prop="queryNumber" />
-      <el-table-column label="二维码失效时间" align="center" prop="qrTime" />
-      <el-table-column label="二维码失效单位" align="center" prop="qrUnit">
+      <el-table-column label="查询次数" align="center" prop="queryNumber"  />
+      <el-table-column label="二维码失效时间" align="center" prop="qrTime"  />
+      <el-table-column label="二维码失效单位" align="center" prop="qrUnit" >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.qr_unit" :value="scope.row.qrUnit"/>
+          <dict-tag :options="dict.type.qr_unit" :value="scope.row.qrUnit" />
         </template>
       </el-table-column>
       <el-table-column label="查询主体" align="center" prop="queryType">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.query_type" :value="scope.row.queryType"/>
+          <dict-tag :options="dict.type.query_type" :value="scope.row.queryType" />
         </template>
       </el-table-column>
-      <el-table-column label="查询方式" align="center" prop="queryMode">
+      <el-table-column label="查询方式" align="center" prop="queryMode" >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.query_mode" :value="scope.row.queryMode"/>
+          <dict-tag :options="dict.type.query_mode" :value="scope.row.queryMode" />
         </template>
       </el-table-column>
-      <el-table-column label="是否启用" align="center" prop="status">
+      <el-table-column label="是否启用" align="center" prop="status" >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.status"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.status" />
         </template>
       </el-table-column>
-      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="备注" align="center" prop="remark"  />
       <el-table-column label="操作" align="center" 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="['system:queryConfig:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:queryConfig:remove']"
-          >删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:queryConfig:edit']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+            v-hasPermi="['system:queryConfig: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-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="查询次数" prop="queryNumber">
-          <el-input v-model="form.queryNumber" placeholder="请输入查询次数" />
-        </el-form-item>
-        <el-form-item label="二维码失效单位" prop="qrUnit">
-          <el-select v-model="form.qrUnit" placeholder="请选择二维码失效单位">
-            <el-option
-              v-for="dict in dict.type.qr_unit"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+       <el-row>
+         <el-col :span="12">
+           <el-form-item label="查询方式" prop="queryMode">
+          <el-select style="width: 100%;" @change="ndhiwed" v-model="form.queryMode" placeholder="请选择查询方式">
+            <el-option  v-for="dict in dict.type.query_mode" :key="dict.value" :label="dict.label" :value="dict.value">
+            </el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="二维码失效时间" prop="qrTime">
-          <el-input v-model="form.qrTime" placeholder="请输入二维码失效时间" />
-        </el-form-item>
-        <el-form-item label="查询主体" prop="queryType">
-          <el-select v-model="form.queryType" placeholder="请选择查询主体">
-            <el-option
-              v-for="dict in dict.type.query_type"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
+        </el-form-item></el-col>
+         <el-col :span="12"><el-form-item label="查询主体" prop="queryType">
+          <el-select style="width: 100%;" v-model="form.queryType" placeholder="请选择查询主体">
+            <el-option v-for="dict in dict.type.query_type" :key="dict.value" :label="dict.label" :value="dict.value">
+            </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="查询方式" prop="queryMode">
-          <el-select v-model="form.queryMode" placeholder="请选择查询方式">
-            <el-option
-              v-for="dict in dict.type.query_mode"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
+        </el-col>
+         <el-col :span="12"><el-form-item label="查询次数" prop="queryNumber" v-if="!shouede">
+          <el-input v-model="form.queryNumber" placeholder="请输入查询次数" />
+        </el-form-item></el-col>
+        <el-col :span="12">
+           <el-form-item label="二维码失效时间" prop="qrTime" v-if="shouede">
+          <el-input v-model="form.qrTime" placeholder="请输入二维码失效时间" />
         </el-form-item>
-        <el-form-item label="是否启用" prop="status">
-          <el-select v-model="form.status" placeholder="请选择是否启用">
-            <el-option
-              v-for="dict in dict.type.sys_yes_no"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
+         </el-col>
+         <el-col :span="12"><el-form-item label="二维码失效单位" prop="qrUnit" v-if="shouede">
+          <el-select style="width: 100%;" v-model="form.qrUnit" placeholder="请选择二维码失效单位">
+            <el-option v-for="dict in dict.type.qr_unit" :key="dict.value" :label="dict.label" :value="dict.value">
+            </el-option>
           </el-select>
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
+        </el-form-item></el-col>
+
+        <el-col :span="12">
+          <el-form-item label="是否启用" prop="status">
+            <el-select style="width: 100%;" v-model="form.status" placeholder="请选择是否启用">
+              <el-option v-for="dict in dict.type.sys_yes_no" :key="dict.value" :label="dict.label" :value="dict.value">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="备注" prop="remark">
+            <el-input v-model="form.remark" placeholder="请输入备注" />
+          </el-form-item>
+        </el-col>
+       </el-row>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -187,164 +133,232 @@
 </template>
 
 <script>
-import { listQueryConfig, getQueryConfig, delQueryConfig, addQueryConfig, updateQueryConfig } from "@/api/system/queryConfig";
+  import {
+    listQueryConfig,
+    getQueryConfig,
+    delQueryConfig,
+    addQueryConfig,
+    updateQueryConfig
+  } from "@/api/system/queryConfig";
 
-export default {
-  name: "QueryConfig",
-  dicts: ['qr_unit', 'query_type', 'query_mode', 'sys_yes_no', 'is_del'],
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 查询配置表格数据
-      queryConfigList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        queryNumber: null,
-        queryType: null,
-        queryMode: null,
-        status: null,
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        queryNumber: [
-          { required: true, message: "查询次数不能为空", trigger: "blur" }
-        ],
-        queryType: [
-          { required: true, message: "查询主体不能为空", trigger: "change" }
-        ],
-        queryMode: [
-          { required: true, message: "查询方式不能为空", trigger: "change" }
-        ],
-        status: [
-          { required: true, message: "是否启用不能为空", trigger: "change" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询查询配置列表 */
-    getList() {
-      this.loading = true;
-      listQueryConfig(this.queryParams).then(response => {
-        this.queryConfigList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        configId: null,
-        queryNumber: null,
-        qrUnit: null,
-        qrTime: null,
-        queryType: null,
-        queryMode: null,
-        status: null,
-        isDel: null,
-        createBy: null,
-        createTime: null,
-        updateBy: null,
-        updateTime: null,
-        remark: null
+  export default {
+    name: "QueryConfig",
+    dicts: ['qr_unit', 'query_type', 'query_mode', 'sys_yes_no', 'is_del'],
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 查询配置表格数据
+        queryConfigList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          queryNumber: null,
+          queryType: null,
+          queryMode: null,
+          status: null,
+        },
+        // 表单参数
+        form: {},
+        // 表单校验
+        rules: {
+          queryType: [{
+            required: true,
+            message: "查询主体不能为空",
+            trigger: "change"
+          }],
+          queryMode: [{
+            required: true,
+            message: "查询方式不能为空",
+            trigger: "change"
+          }],
+          status: [{
+            required: true,
+            message: "是否启用不能为空",
+            trigger: "change"
+          }],
+        },
+        shouede: false,
+        tableMaxHeight: 300
       };
-      this.resetForm("form");
     },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
+    created() {
       this.getList();
+      window.onresize = () => {
+        this.changeTableMaxHeight()
+      }
+      this.changeTableMaxHeight()
     },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.configId)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加查询配置";
+    destroyed() {
+      window.onresize = null
     },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const configId = row.configId || this.ids
-      getQueryConfig(configId).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改查询配置";
-      });
+    mounted() {
+      window.onresize = () => {
+        this.changeTableMaxHeight()
+      }
+      this.changeTableMaxHeight()
     },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.configId != null) {
-            updateQueryConfig(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addQueryConfig(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
+    methods: {
+      /** 查询查询配置列表 */
+      getList() {
+        this.loading = true;
+        listQueryConfig(this.queryParams).then(response => {
+          this.queryConfigList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {
+          configId: null,
+          queryNumber: null,
+          qrUnit: null,
+          qrTime: null,
+          queryType: null,
+          queryMode: null,
+          status: null,
+          isDel: null,
+          createBy: null,
+          createTime: null,
+          updateBy: null,
+          updateTime: null,
+          remark: null
+        };
+        this.resetForm("form");
+      },
+      ndhiwed(){
+      // this.queryParams.pageNum = 1;
+      if (this.form.queryMode !== undefined) {
+        if (this.form.queryMode !== null) {
+          if (this.form.queryMode !== "") {
+            if (this.form.queryMode == 0) {
+              // 二维码查询
+              this.shouede = true
+            } else {
+              // 其余方式查询
+              this.shouede = false
+            }
           }
         }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const configIds = row.configId || this.ids;
-      this.$modal.confirm('是否确认删除查询配置编号为"' + configIds + '"的数据项?').then(function() {
-        return delQueryConfig(configIds);
-      }).then(() => {
+      }
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        // this.queryParams.pageNum = 1;
+        // if (this.queryParams.queryMode !== undefined) {
+        //   if (this.queryParams.queryMode !== null) {
+        //     if (this.queryParams.queryMode !== "") {
+        //       if (this.queryParams.queryMode == 0) {
+        //         // 二维码查询
+        //         this.shouede = true
+        //       } else {
+        //         // 其余方式查询
+        //         this.shouede = false
+        //       }
+        //     }
+        //   }
+        // }
         this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('system/queryConfig/export', {
-        ...this.queryParams
-      }, `queryConfig_${new Date().getTime()}.xlsx`)
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map(item => item.configId)
+        this.single = selection.length !== 1
+        this.multiple = !selection.length
+      },
+      /** 新增按钮操作 */
+      handleAdd() {
+        this.reset();
+        this.open = true;
+        this.title = "添加查询配置";
+      },
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+        const configId = row.configId || this.ids
+        getQueryConfig(configId).then(response => {
+          this.form = response.data;
+          this.open = true;
+          this.title = "修改查询配置";
+        });
+      },
+      /** 提交按钮 */
+      submitForm() {
+        this.$refs["form"].validate(valid => {
+          if (valid) {
+            if (this.form.configId != null) {
+              updateQueryConfig(this.form).then(response => {
+                this.$modal.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              });
+            } else {
+              addQueryConfig(this.form).then(response => {
+                this.$modal.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              });
+            }
+          }
+        });
+      },
+      /** 删除按钮操作 */
+      handleDelete(row) {
+        const configIds = row.configId || this.ids;
+        this.$modal.confirm('是否确认删除查询配置编号为"' + configIds + '"的数据项?').then(function() {
+          return delQueryConfig(configIds);
+        }).then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        }).catch(() => {});
+      },
+      /** 导出按钮操作 */
+      handleExport() {
+        this.download('system/queryConfig/export', {
+          ...this.queryParams
+        }, `queryConfig_${new Date().getTime()}.xlsx`)
+      },
+      // 获取屏幕高度
+      showFilterForm() {
+        this.filterActive = !this.filterActive
+        this.changeTableMaxHeight()
+      },
+
+      changeTableMaxHeight() {
+        let height = document.body.offsetHeight // 网页可视区域高度
+        // if (this.filterActive) {
+        //   this.tableMaxHeight = height - 320
+        // } else {
+        this.tableMaxHeight = height - 250
+        // }
+        console.log(height)
+      }
     }
-  }
-};
+  };
 </script>

+ 51 - 21
ruoyi-ui/src/views/system/queryLog/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="98px">
       <el-form-item label="报告编号" prop="reportNumber">
         <el-input
           v-model="queryParams.reportNumber"
@@ -19,14 +19,15 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="查询人手机号" prop="queryPhone">
-        <el-input
-          v-model="queryParams.queryPhone"
-          placeholder="请输入查询人手机号"
-          clearable
-          size="small"
-          @keyup.enter.native="handleQuery"
-        />
+      <el-form-item label="查询主体" prop="queryType">
+        <el-select v-model="queryParams.queryType" placeholder="请选择查询主体" clearable size="small">
+          <el-option
+            v-for="dict in dict.type.query_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item label="单位名称" prop="companyName">
         <el-input
@@ -46,15 +47,15 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="查询主体" prop="queryType">
-        <el-select v-model="queryParams.queryType" placeholder="请选择查询主体" clearable size="small">
-          <el-option
-            v-for="dict in dict.type.query_type"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
+
+      <el-form-item label="查询人手机号" prop="queryPhone">
+        <el-input
+          v-model="queryParams.queryPhone"
+          placeholder="请输入查询人手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
       </el-form-item>
       <el-form-item label="查询方式" prop="queryMode">
         <el-select v-model="queryParams.queryMode" placeholder="请选择查询方式" clearable size="small">
@@ -118,7 +119,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="queryLogList" @selection-change="handleSelectionChange">
+    <el-table  :max-height="tableMaxHeight" v-loading="loading" :data="queryLogList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="报告编号" align="center" prop="reportNumber" />
       <el-table-column label="查询人姓名" align="center" prop="queryName" />
@@ -285,12 +286,26 @@ export default {
       form: {},
       // 表单校验
       rules: {
-      }
+      },
+      tableMaxHeight:300
     };
   },
   created() {
     this.getList();
+    window.onresize = () => {
+              this.changeTableMaxHeight()
+            }
+            this.changeTableMaxHeight()
   },
+  destroyed () {
+        window.onresize = null
+      },
+    mounted() {
+  window.onresize = () => {
+            this.changeTableMaxHeight()
+          }
+          this.changeTableMaxHeight()
+    },
   methods: {
     /** 查询查询日志列表 */
     getList() {
@@ -397,7 +412,22 @@ export default {
       this.download('system/queryLog/export', {
         ...this.queryParams
       }, `queryLog_${new Date().getTime()}.xlsx`)
-    }
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 350
+          // }
+          console.log(height)
+        }
   }
 };
 </script>

+ 123 - 41
ruoyi-ui/src/views/system/reportDetail/index.vue

@@ -89,7 +89,7 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="reportDetailList" @selection-change="handleSelectionChange">
+    <el-table  v-loading="loading" :data="reportDetailList" @selection-change="handleSelectionChange" :max-height="tableMaxHeight">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="报告ID" align="center" prop="reportId" />
       <el-table-column label="报告编号" align="center" prop="reportNumber" />
@@ -101,8 +101,20 @@
           <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.isQualify"/>
         </template>
       </el-table-column>
-      <el-table-column label="报告图片" align="center" prop="reportUrl" />
-      <el-table-column label="二维码地址" align="center" prop="qrPath" />
+      <el-table-column label="报告图片" align="center" prop="reportUrl"  width="110px">
+        <template slot-scope="scope">
+        <img @click="imagew(scope.row.reportUrl)" :src="defaultSettings.urls  + scope.row.reportUrl"
+          style="width: 100px;height: 100px;" v-if="scope.row.reportUrl !== null" />
+          <span v-else>暂无数据</span>
+          </template>
+      </el-table-column>
+      <el-table-column label="二维码地址" align="center" prop="qrPath" width="110px" >
+        <template slot-scope="scope">
+        <img @click="imagew(scope.row.qrPath)" :src="defaultSettings.urls  + scope.row.qrPath"
+          style="width: 100px;height: 100px;" v-if="scope.row.qrPath !== null" />
+          <span v-else>暂无数据</span>
+          </template>
+      </el-table-column>
       <el-table-column label="是否删除" align="center" prop="isDel">
         <template slot-scope="scope">
           <dict-tag :options="dict.type.is_del" :value="scope.row.isDel"/>
@@ -138,54 +150,86 @@
     />
 
     <!-- 添加或修改报告信息对话框 -->
-    <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="报告编号" prop="reportNumber">
+    <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row>
+          <el-col :span="12">
+          <el-form-item label="报告编号" prop="reportNumber" >
           <el-input v-model="form.reportNumber" placeholder="请输入报告编号" />
-        </el-form-item>
-        <el-form-item label="送检ID" prop="inspectId">
-          <el-input v-model="form.inspectId" placeholder="请输入送检ID" />
-        </el-form-item>
-        <el-form-item label="样品名称" prop="sampleName">
-          <el-input v-model="form.sampleName" placeholder="请输入样品名称" />
-        </el-form-item>
-        <el-form-item label="送检单位名称" prop="inspectName">
-          <el-input v-model="form.inspectName" placeholder="请输入送检单位名称" />
-        </el-form-item>
-        <el-form-item label="委托单位名称" prop="entrustName">
-          <el-input v-model="form.entrustName" placeholder="请输入委托单位名称" />
-        </el-form-item>
-        <el-form-item label="是否合格" prop="isQualify">
-          <el-select v-model="form.isQualify" placeholder="请选择是否合格">
-            <el-option
-              v-for="dict in dict.type.sys_yes_no"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="报告图片" prop="reportUrl">
-          <el-input v-model="form.reportUrl" placeholder="请输入报告图片" />
-        </el-form-item>
-        <el-form-item label="二维码地址" prop="qrPath">
-          <el-input v-model="form.qrPath" placeholder="请输入二维码地址" />
-        </el-form-item>
-        <el-form-item label="备注" prop="remark">
-          <el-input v-model="form.remark" placeholder="请输入备注" />
-        </el-form-item>
+          </el-form-item>
+          </el-col>
+          <el-col :span="12">
+              <el-form-item label="样品名称" prop="sampleName">
+                <el-input v-model="form.sampleName" placeholder="请输入样品名称" disabled />
+              </el-form-item>
+          </el-col>
+          <el-col :span="12">
+              <el-form-item label="送检单位名称" prop="inspectName" >
+                <el-input v-model="form.inspectName" placeholder="请输入送检单位名称" disabled/>
+              </el-form-item>
+          </el-col>
+          <el-col :span="12">
+               <el-form-item label="委托单位名称" prop="entrustName" >
+                 <el-input v-model="form.entrustName" placeholder="请输入委托单位名称"  disabled/>
+               </el-form-item>
+          </el-col>
+          <el-col :span="12">
+               <el-form-item label="是否合格" prop="isQualify" >
+                 <el-select v-model="form.isQualify" placeholder="请选择是否合格" disabled>
+                   <el-option
+                     v-for="dict in dict.type.sys_yes_no"
+                     :key="dict.value"
+                     :label="dict.label"
+                     :value="dict.value"
+                   ></el-option>
+                 </el-select>
+               </el-form-item>
+          </el-col>
+          <el-col :span="12">
+             <el-form-item label="备注" prop="remark" >
+               <el-input v-model="form.remark" placeholder="请输入备注" />
+             </el-form-item>
+             </el-col>
+          <el-col :span="24">
+             <el-form-item label="报告图片" prop="reportUrl">
+               <imageUpload   v-model="form.reportUrl" />
+               <!-- <el-input v-model="form.reportUrl" placeholder="请输入报告图片" /> -->
+             </el-form-item>
+          </el-col>
+          <el-col :span="12">
+             <el-form-item label="二维码地址" prop="qrPath" >
+               <!-- <el-input v-model="form.qrPath" placeholder="请输入二维码地址" /> -->
+               <img :src="defaultSettings.urls + form.qrPath" alt="" style="width: 146px; height: 146px;">
+             </el-form-item>
+          </el-col>
+
+
+
+
+        </el-row>
+
+
+
+
+
+
+
+
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
+    <el-dialog title="图片预览" :visible.sync="opende" width="1000px" append-to-body style="text-align: center;">
+      <img :src="defaultSettings.urls + urls" style="width: 80%;" >
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { listReportDetail, getReportDetail, delReportDetail, addReportDetail, updateReportDetail } from "@/api/system/reportDetail";
-
+ const defaultSettings = require("@/settings.js");
 export default {
   name: "ReportDetail",
   dicts: ['sys_yes_no', 'is_del'],
@@ -193,12 +237,14 @@ export default {
     return {
       // 遮罩层
       loading: true,
+      defaultSettings,
       // 选中数组
       ids: [],
       // 非单个禁用
       single: true,
       // 非多个禁用
       multiple: true,
+      urls:'',
       // 显示搜索条件
       showSearch: true,
       // 总条数
@@ -209,6 +255,7 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      opende:false,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -235,12 +282,26 @@ export default {
         reportUrl: [
           { required: true, message: "报告图片不能为空", trigger: "blur" }
         ],
-      }
+      },
+      tableMaxHeight:300
     };
   },
   created() {
     this.getList();
+    window.onresize = () => {
+              this.changeTableMaxHeight()
+            }
+            this.changeTableMaxHeight()
   },
+  destroyed () {
+        window.onresize = null
+      },
+    mounted() {
+  window.onresize = () => {
+            this.changeTableMaxHeight()
+          }
+          this.changeTableMaxHeight()
+    },
   methods: {
     /** 查询报告信息列表 */
     getList() {
@@ -254,6 +315,7 @@ export default {
     // 取消按钮
     cancel() {
       this.open = false;
+      this.opende = false
       this.reset();
     },
     // 表单重置
@@ -344,7 +406,27 @@ export default {
       this.download('system/reportDetail/export', {
         ...this.queryParams
       }, `reportDetail_${new Date().getTime()}.xlsx`)
-    }
+    },
+    // 图片预览列表
+    imagew(index) {
+      this.urls = index
+      this.opende = true
+    },
+    // 获取屏幕高度
+    showFilterForm () {
+          this.filterActive = !this.filterActive
+          this.changeTableMaxHeight()
+        },
+
+        changeTableMaxHeight () {
+          let height = document.body.offsetHeight // 网页可视区域高度
+          // if (this.filterActive) {
+          //   this.tableMaxHeight = height - 320
+          // } else {
+            this.tableMaxHeight = height - 250
+          // }
+          console.log(height)
+        }
   }
 };
 </script>