From 65a67490426dadcf62fc1bef3cb54dffa27d099d Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期三, 23 八月 2023 15:05:23 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/experiment/passRateStatistics/index.vue |  419 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 242 insertions(+), 177 deletions(-)

diff --git a/src/views/experiment/passRateStatistics/index.vue b/src/views/experiment/passRateStatistics/index.vue
index e59f783..fceb330 100644
--- a/src/views/experiment/passRateStatistics/index.vue
+++ b/src/views/experiment/passRateStatistics/index.vue
@@ -19,6 +19,14 @@
             </el-option>
           </el-select>
         </el-form-item>
+        <el-form-item style="margin-left: 40px;" label="鏍峰搧:">
+          <el-select v-model="searchData.code" filterable placeholder="璇烽�夋嫨">
+            <el-option v-for="item in sampleOptions" :key="item.value" :label="item.label" :value="item.value">
+              <span style="float: left">{{ item.label }}</span>
+              <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
+            </el-option>
+          </el-select>
+        </el-form-item>
         <div class="rightBtn">
           <el-form-item>
             <el-button type="primary" plain size="mini">娓呯┖</el-button>
@@ -31,12 +39,18 @@
     <div class="chart-content">
       <div class="qualified-wrapper">
         <div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫牱鍝佸悎鏍肩巼缁熻</div>
-        <div class="qualified" ref="qualified"></div>
+        <div :hidden="testSample" class="qualified" ref="qualified"></div>
+        <div :hidden="!testSample" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">鏆傛棤鏁版嵁
+        </div>
       </div>
       <div class="unqualified">
         <div class="firstBox-wrapper">
-          <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div>
-          <div class="firstBox" ref="unqualified_provider"></div>
+          <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗗悎鏍肩巼缁熻</div>
+          <div>
+            <div :hidden="supplierData" class="firstBox" ref="unqualified_provider"></div>
+            <div :hidden="!supplierData" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">
+              鏆傛棤鏁版嵁</div>
+          </div>
         </div>
         <div class="secondBox-wrapper">
           <div class="secondBox_header">
@@ -46,12 +60,17 @@
               }}</el-radio-button>
             </el-radio-group>
           </div>
-          <div class="secondBox" ref="unqualified_project"></div>
+          <div style="width: 100%;height: 100;">
+            <div :hidden="projectData" class="secondBox" ref="unqualified_project"></div>
+            <div :hidden="!projectData" style="height: 100%;text-align: center; color: #999696df; margin-top: 100px;">鏆傛棤鏁版嵁
+            </div>
+          </div>
         </div>
       </div>
     </div>
     <div class="bottom">
       <el-button type="primary" size="mini">鏁版嵁瀵煎嚭</el-button>
+      <!-- <el-button type="primary" size="mini" @click="testWork">娴嬭瘯</el-button> -->
     </div>
   </div>
 </template>
@@ -70,18 +89,26 @@
 })
 
 import * as echarts from 'echarts'
-import { getSupplierList,getTestSampleStatistics,getSupplierNoPassStatistics,getNoPassProjectStatistics } from '@/api/experiment/passRateStatistics';
+import { getSupplierList, getTestSampleStatistics, getSupplierNoPassStatistics, getNoPassProjectStatistics, getSampleOptions } from '@/api/experiment/passRateStatistics';
 import { dateFormat } from '../../../utils/dateUtil'
+import MyWorker from 'comlink-loader!../../../worker/test';
 export default {
   data() {
     return {
       supplier: [],
+      sampleOptions: [],
       searchData: {
         date: [],
         type: null,
-        supplier: null
+        supplier: null,
+        sample: null,
+        code: null
       },
       options: [
+        {
+          label: '鍏ㄩ儴',
+          value: 3
+        },
         {
           label: '鍘熸潗鏂�',
           value: 0
@@ -109,191 +136,228 @@
       rules: {
         // date: [{ required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' }],
         // type: [{ required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur' }]
-      }
+      },
+      supplierNoPassStatistics: null,
+      supplierData: false,
+      projectStatistics: null,
+      projectData: false,
+      testSampleStatistics: null,
+      testSample: false,
+      m1: null,
+      m2: null,
+      m3: null
     }
   },
-  mounted() {
-    this.getSupplierList()
-    this.getTestSampleStatistics()
-    this.getSupplierNoPassStatistics()
-    const chartDom_qualified = this.$refs.qualified;
-    const chartDom_unqualified_provider = this.$refs.unqualified_provider;
-    const chartDom_unqualified_project = this.$refs.unqualified_project;
-
-    const myChart1 = echarts.init(chartDom_qualified);
-    const myChart2 = echarts.init(chartDom_unqualified_provider);
-    const myChart3 = echarts.init(chartDom_unqualified_project);
-
-    /**
-     * 妫�娴嬪悎鏍肩巼缁熻
-     */
-    const option_qualified = {
-      tooltip: {
-        trigger: 'axis',
-        axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
-          type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
-        }
-      },
-      legend: {
-        data: ['鏁版嵁1', '鏁版嵁2', '鏁版嵁3']
-      },
-      xAxis: [
-        {
-          type: 'category',
-          data: ['绗竴鎵�', '绗簩鎵�', '绗笁鎵�', '绗洓鎵�']
-        }
-      ],
-      yAxis: [
-        {
-          type: 'value',
-          axisLabel: {
-            formatter: '{value}'
-          }
-        }
-      ],
-      series: [
-        {
-          name: '鏁版嵁1',
-          type: 'bar',
-          data: [7245, 3475, 1237, 3456]
-        },
-        {
-          name: '鏁版嵁2',
-          type: 'bar',
-          data: [9965, 9075, 4875, 8687]
-        },
-        {
-          name: '鏁版嵁3',
-          type: 'line',
-          yAxisIndex: 0,
-          symbolSize: 3, // 鎶樼嚎鑺傜偣鐨勫ぇ灏�
-          symbol: 'circle', // 鎶樼嚎鑺傜偣鐨勫舰鐘�
-          smooth: false, // 骞虫粦鏇茬嚎
-          data: [1465, 6437, 3257, 6537]
-        }
-      ]
-    };
-    /**
-     * 渚涘簲鍟�
-     */
-    const option_unqualified1 = {
-      tooltip: {
-        trigger: 'axis',
-        axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
-          type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
-        },
-        formatter: function (params) {
-          let tooltip = params[0].name + '<br/>';
-          params.forEach(function (item) {
-            tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮�
-          });
-          return tooltip;
-        }
-      },
-      legend: {
-        data: ['鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�']
-      },
-      xAxis: {
-        data: ['渚涘簲鍟�1', '渚涘簲鍟�2', '渚涘簲鍟�3', '渚涘簲鍟�4']
-      },
-      yAxis: [
-        {
-          type: 'value',
-          axisLabel: {
-            formatter: '{value}%'
-          }
-        }
-      ],
-      series: [
-        {
-          name: '鍚堟牸鏁伴噺',
-          data: [52, 46, 39, 66],
-          type: 'bar',
-          stack: 'x'
-        },
-        {
-          name: '涓嶅悎鏍兼暟閲�',
-          data: [47, 53, 60, 33],
-          type: 'bar',
-          stack: 'x'
-        }
-      ]
-    };
-    /**
-     * 涓嶅悎鏍奸」鐩�
-     */
-    const option_unqualified2 = {
-      legend: {
-        orient: 'vertical',
-        x: 'left',
-        data: ['缁濈紭鍋忓績鐜�', '璇曢獙缁撴灉', '瀵间綋灞忚斀鏈�澶у��']
-      },
-      title: {
-        text: '',
-        left: 'center',
-        top: 'center'
-      },
-      series: [
-        {
-          type: 'pie',
-          data: [
-            {
-              value: 40,
-              name: '缁濈紭鍋忓績鐜�'
-            },
-            {
-              value: 20,
-              name: '璇曢獙缁撴灉'
-            },
-            {
-              value: 40,
-              name: '瀵间綋灞忚斀鏈�澶у��'
-            }
-          ],
-          radius: ['40%', '70%'],
-          label: {
-            show: true,
-            formatter: '{b}: {c}'
-          },
-        }
-      ]
-    }
-
-    myChart1.setOption(option_qualified);
-    myChart2.setOption(option_unqualified1);
-    if (this.type === 0) {
-      myChart3.setOption(option_unqualified2);
-    }
-    if (this.type === 1) {
-      myChart3.setOption(option_unqualified2);
-    }
+  async mounted() {
+    await this.start()
+    this.tableStart()
   },
   methods: {
-    search() {
-      this.getTestSampleStatistics()
-    },
-    dateHandle(){
-      let data=JSON.parse(JSON.stringify(this.searchData))
-      if(this.searchData.date.length!=0&&this.searchData.date !=[]){
-        data.beginDate=dateFormat(this.searchData.date[0])
-        data.endDate=dateFormat(this.searchData.date[1])
+    testWork(){
+      const inst = new MyWorker();
+      inst.test()
+      for (let index = 0; index < 100; index++) {
+        console.log("涓荤嚎绋�"+index);
       }
-      data.date=null
+    },
+    async search() {
+      this.testSampleStatistics = null
+      this.supplierNoPassStatistics = null
+      this.projectStatistics = null
+      this.supplier = []
+      this.sampleOptions = []
+      await this.start()
+      this.tableStart()
+    },
+    dateHandle() {
+      let data = JSON.parse(JSON.stringify(this.searchData))
+      if (this.searchData.date.length != 0 && this.searchData.date != []) {
+        data.beginDate = dateFormat(this.searchData.date[0])
+        data.endDate = dateFormat(this.searchData.date[1])
+      }
+      if (data.supplier == '鍏ㄩ儴') {
+        data.supplier = null
+      }
+      if (data.type === 3) {
+        data.type = null
+      }
+      if (this.sampleOptions.length > 0 && this.sampleOptions != []) {
+        let labelSam = this.sampleOptions.filter(item => {
+          return item.value == data.code
+        })[0]
+        data.sample = labelSam.label
+      }
+      if (data.code == '鍏ㄩ儴') {
+        data.code = null
+        data.sample = null
+      }
+      data.date = null
       return data
     },
     async getSupplierList() {
       let res = await getSupplierList()
+      this.supplier.push({ label: '鍏ㄩ儴', value: '鍏ㄩ儴' })
       res.data.forEach(item => {
         this.supplier.push({ label: item.supplier, value: item.supplier })
       })
     },
-    getTestSampleStatistics(){
-     let param= this.dateHandle()
-     let res =getTestSampleStatistics(param)
+    async getTestSampleStatistics() {
+      let param = this.dateHandle()
+      let res = await getTestSampleStatistics(param)
+      this.testSample = !res.data.noData
+      this.testSampleStatistics = res.data
     },
-    getSupplierNoPassStatistics(){
-      let param= this.dateHandle()
-      getSupplierNoPassStatistics(param)
+    async getSupplierNoPassStatistics() {
+      let param = this.dateHandle()
+      let res = await getSupplierNoPassStatistics(param)
+      this.supplierData = !res.data.noData
+      this.supplierNoPassStatistics = res.data
+    },
+    async getNoPassProjectStatistics() {
+      let param = this.dateHandle()
+      let res = await getNoPassProjectStatistics(param)
+      this.projectData = !res.data.noData
+      this.projectStatistics = res.data
+    },
+    async start() {
+      await this.getTestSampleStatistics()
+      await this.getSupplierNoPassStatistics()
+      await this.getNoPassProjectStatistics()
+      await this.getSupplierList()
+      await this.getSampleOptions()
+    },
+    async getSampleOptions() {
+      let res = await getSampleOptions()
+      this.sampleOptions.push({
+        label: '鍏ㄩ儴',
+        value: '鍏ㄩ儴'
+      })
+      res.data.forEach(item => {
+        let data = {
+          label: item.name,
+          value: item.code
+        }
+        this.sampleOptions.push(data)
+      })
+    },
+    tableStart() {
+      const chartDom_qualified = this.$refs.qualified;
+      const chartDom_unqualified_provider = this.$refs.unqualified_provider;
+      const chartDom_unqualified_project = this.$refs.unqualified_project;
+
+      const myChart1 = echarts.init(chartDom_qualified);
+      const myChart2 = echarts.init(chartDom_unqualified_provider, null, {
+        height: 300
+      });
+      
+      const myChart3 = echarts.init(chartDom_unqualified_project, null, {
+        height: 268
+      });
+      window.addEventListener("resize",function(){
+        myChart1.resize()
+        myChart2.resize()
+        myChart3.resize()
+      })
+      this.m1 = myChart1
+      this.m2 = myChart2
+      this.m3 = myChart3
+      /**
+       * 妫�娴嬪悎鏍肩巼缁熻
+       */
+      const option_qualified = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
+            type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+          }
+        },
+        legend: {
+          data: ['鍚堟牸', '涓嶅悎鏍�']
+        },
+        xAxis: [
+          {
+            type: 'category',
+            data: this.testSampleStatistics.xAxis
+          }
+        ],
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: {
+              formatter: '{value}'
+            }
+          }
+        ],
+        series: this.testSampleStatistics.series
+      };
+      /**
+       * 渚涘簲鍟�
+       */
+      const option_unqualified1 = {
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
+            type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+          },
+          formatter: function (params) {
+            let tooltip = params[0].name + '<br/>';
+            params.forEach(function (item) {
+              tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮�
+            });
+            return tooltip;
+          }
+        },
+        legend: {
+          data: ['鍚堟牸鏁伴噺', '涓嶅悎鏍兼暟閲�']
+        },
+        xAxis: {
+          data: this.supplierNoPassStatistics.xAxis
+        },
+        yAxis: [
+          {
+            type: 'value',
+            axisLabel: {
+              formatter: '{value}%'
+            }
+          }
+        ],
+        series: this.supplierNoPassStatistics.series
+      };
+      /**
+       * 涓嶅悎鏍奸」鐩�
+       */
+      const option_unqualified2 = {
+        legend: {
+          orient: 'vertical',
+          x: 'left',
+          data: this.projectStatistics.legend
+        },
+        title: {
+          text: '',
+          left: 'center',
+          top: 'center'
+        },
+        series: [
+          {
+            type: 'pie',
+            data: this.projectStatistics.series,
+            radius: ['40%', '70%'],
+            label: {
+              show: true,
+              formatter: '{b}: {c}%'
+            },
+          }
+        ]
+      }
+
+      myChart1.setOption(option_qualified);
+      myChart2.setOption(option_unqualified1);
+      if (this.type === 0) {
+        myChart3.setOption(option_unqualified2);
+      }
+      if (this.type === 1) {
+        myChart3.setOption(option_unqualified2);
+      }
     }
   }
 }
@@ -303,6 +367,7 @@
 .content-main {
   height: 100%;
   width: 100%;
+  overflow: auto;
 
   .top-bar {
     position: absolute;

--
Gitblit v1.9.3