From 930b8403e74bdba2b7a8f3a38270a5227bf78995 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 24 八月 2023 17:54:45 +0800
Subject: [PATCH] 	modified:   .env.development 	new file:   src/api/chart/work/index.js 	renamed:    src/api/home.js -> src/api/home/index.js 	modified:   src/layout/components/Navbar.vue 	modified:   src/router/index.js 	modified:   src/views/CNAS/satisfactionSurveys/index.vue 	modified:   src/views/chart/work/index.vue 	modified:   src/views/home/index.vue

---
 src/views/chart/work/index.vue |  417 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 353 insertions(+), 64 deletions(-)

diff --git a/src/views/chart/work/index.vue b/src/views/chart/work/index.vue
index 59b9b32..e04f144 100644
--- a/src/views/chart/work/index.vue
+++ b/src/views/chart/work/index.vue
@@ -4,27 +4,31 @@
           <el-row :gutter="10">
             <el-col :span="24">
                 <el-card>
-                  <el-form :inline="true" :model="formInline" class="demo-form-inline">
-                    <el-form-item>
+                  <el-form :rules="rules" ref="formInline" :inline="true"
+                  :model="formInline" class="demo-form-inline">
+                    <el-form-item prop="date">
                       <p><span>*</span>妫�娴嬫棩鏈�:</p>
                       <el-date-picker
-                        v-model="dateTime"
+                        v-model="formInline.date"
+                        format="yyyy-MM-dd"
+                        value-format="yyyy-MM-dd"
                         type="daterange"
                         range-separator="鑷�"
                         start-placeholder="寮�濮嬫棩鏈�"
                         end-placeholder="缁撴潫鏃ユ湡">
                       </el-date-picker>
                     </el-form-item>
-                    <el-form-item>
+                    <el-form-item prop="type">
                       <p><span>*</span>妫�楠岀被鍨�:</p>
-                      <el-select v-model="formInline.region" placeholder="閲囪喘鍏ュ簱">
-                        <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
-                        <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+                      <el-select v-model="formInline.type" placeholder="閲囪喘鍏ュ簱">
+                        <el-option label="鍘熸潗鏂�" value="0"></el-option>
+                        <el-option label="鎴愬搧" value="1"></el-option>
+                        <el-option label="濮旀墭鍝�" value="2"></el-option>
                       </el-select>
                     </el-form-item>
                     <el-form-item class="buttons">
-                      <el-button>娓呯┖</el-button>
-                      <el-button type="primary" @click="onSubmit">鏌ヨ</el-button>
+                      <el-button @click="resetForm('formInline')">娓呯┖</el-button>
+                      <el-button type="primary" @click="onSubmit('formInline')">鏌ヨ</el-button>
                     </el-form-item>
                   </el-form>
                 </el-card>
@@ -48,59 +52,105 @@
           <el-col :span="12">
               <el-card>
                 <p>璐熻矗浜哄強鏃剁巼</p>
-                <div id="leaderTimly" style="width:100%;height:400px;"></div>
+                <div id="leaderTimely" style="width:100%;height:400px;"></div>
               </el-card>
           </el-col>
           <el-col :span="12">
               <el-card>
                 <p>瀹為獙鍛樺強鏃剁巼</p>
-                <div id="testerTimly" style="width:100%;height:400px;"></div>
+                <div id="testerTimely" style="width:100%;height:400px;"></div>
               </el-card>
           </el-col>
         </el-row>
       </div>
-      <div class="work-foot"></div>
+      <div class="work-foot">
+        <el-button type="primary">鏁版嵁瀵煎嚭</el-button>
+      </div>
   </div>
 </template>
 
 <script>
 import * as echarts from 'echarts';
+import { getDutyMater,getDutyTimely,getExecuteMater,getExecuteTimely
+} from '@/api/chart/work/index'
 export default {
   data() {
       return {
         formInline: {
-          user: '',
-          region: ''
+          date: null,
+          type: ''
         },
-        dateTime: '',
+        rules: {
+          type: [
+            { required: true, message: '璇烽�夋嫨妫�娴嬬被鍨�', trigger: 'change' }
+          ],
+          date: [
+            {required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }
+          ]
+        },
       }
     },
     mounted(){
-      this.initLeaderStatiChart('leaderStati');
-      this.initLeaderTimlyChart();
-      this.initLeaderStatiChart('testerStati');
-      this.initTesterTimlyChart();
+      // this.initLeaderStatiChart("");
+      this.initLeaderTimelyChart("leaderTimely");
+      this.initTesterStatiChart("testerStati");
+      this.initTesterTimelyChart("testerTimely");
     },
     methods: {
-      onSubmit() {
-        console.log('submit!');
+      async queryData(){
+        let date = this.formInline.date;
+        let obj = {
+          startTime : date[0],
+          endTime : date[1],
+          type : this.formInline.type
+        }
+        const dutyMater = await getDutyMater(obj);
+        const dutyTimely = await getDutyTimely(obj);
+        const executeMater = await getExecuteMater(obj);
+        const executeTimely = await getExecuteTimely(obj);
+        console.log("dm",dutyMater.data);
+        console.log("dt",dutyTimely.data);
+        console.log("em",executeMater.data.length);
+        console.log("et",executeTimely.data);
+        this.initLeaderStatiChart("leaderStati",dutyMater.data);
+        this.initLeaderTimelyChart("leaderTimely",dutyTimely.data);
+        this.initTesterStatiChart("testerStati",executeMater.data);
+        this.initTesterTimelyChart("testerTimely",executeTimely.data);
       },
-      initLeaderStatiChart(id){
+      onSubmit(formName) {
+        this.$refs[formName].validate((valid) => {
+          if (valid) {
+            this.queryData();
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+      resetForm(formName) {
+        this.formInline.date = null;
+        this.formInline.type = null;
+        this.$refs[formName].resetFields();
+      },
+      initLeaderStatiChart(id,dutyMater){
         var chartDom = document.getElementById(id);
         var myChart = echarts.init(chartDom);
+          window.addEventListener('resize', function() {
+          myChart.resize();
+        });
         var option;
-
+        let max = 0;
         let xAxisData = [];
         let data1 = [];
         let data2 = [];
-        let data3 = [];
-        let data4 = [];
-        for (let i = 0; i < 10; i++) {
-          xAxisData.push('Class' + i);
-          data1.push(+(Math.random() * 2).toFixed(2));
-          data2.push(+(Math.random() * 5).toFixed(2));
-          data3.push(+(Math.random() + 0.3).toFixed(2));
-          data4.push(+Math.random().toFixed(2));
+        for(let i=0;i<dutyMater.length;i++){
+          xAxisData.push(dutyMater[i].name);
+          data1.push(dutyMater[i].finsh);
+          data2.push(dutyMater[i].unfinish);
+          let sum = dutyMater[i].finsh + dutyMater[i].unfinish;
+          if( sum > max ){
+             max = sum;
+          }
         }
         var emphasisStyle = {
           itemStyle: {
@@ -110,7 +160,7 @@
         };
         option = {
           legend: {
-            data: ['bar', 'bar2'],
+            data: ['宸插畬鎴�', '鏈畬鎴�'],
             left: 'center'
           },
           tooltip: {},
@@ -121,59 +171,282 @@
             splitLine: { show: false },
             splitArea: { show: false }
           },
-          yAxis: {},
+          yAxis: {
+            min: 0,
+            max: max,
+            interval: max,
+          },
           grid: {
             bottom: 100
           },
           series: [
             {
-              name: 'bar',
+              name: '宸插畬鎴�',
+              barWidth: '20%',
               type: 'bar',
               stack: 'one',
               emphasis: emphasisStyle,
-              data: data1
+              data: data1,
+              itemStyle: {
+                color: '#80d9c5'  
+              }
             },
             {
-              name: 'bar2',
+              name: '鏈畬鎴�',
+              barWidth: '20%',
               type: 'bar',
               stack: 'one',
               emphasis: emphasisStyle,
-              data: data2
+              data: data2,
+              itemStyle: {
+                color: '#f2d09d'
+              },
             }
           ]
         };
-        myChart.on('brushSelected', function (params) {
-          var brushed = [];
-          var brushComponent = params.batch[0];
-          for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
-            var rawIndices = brushComponent.selected[sIdx].dataIndex;
-            brushed.push('[Series ' + sIdx + '] ' + rawIndices.join(', '));
+        option && myChart.setOption(option);
+      },
+      initTesterStatiChart(id,executeMater){
+        console.log("qqq----",executeMater);
+        var chartDom = document.getElementById(id);
+        var myChart = echarts.init(chartDom);
+          window.addEventListener('resize', function() {
+          myChart.resize();
+        });
+        var option;
+
+        let xAxisData = [];
+        let data1 = [];
+        let data2 = [];
+        // for(let i=0;i<executeMater.length;i++){
+        //   xAxisData.push(executeMater[i].name);
+        //   data1.push(executeMater[i].finsh);
+        //   data2.push(executeMater[i].unfinsh);
+        // }
+        var emphasisStyle = {
+          itemStyle: {
+            shadowBlur: 10,
+            shadowColor: 'rgba(0,0,0,0.3)'
           }
-          myChart.setOption({
-            title: {
-              backgroundColor: '#333',
-              text: 'SELECTED DATA INDICES: \n' + brushed.join('\n'),
-              bottom: 0,
-              right: '10%',
-              width: 100,
-              textStyle: {
-                fontSize: 12,
-                color: '#fff'
+        };
+        option = {
+          legend: {
+            data: ['鏁版嵁1', '鏁版嵁2'],
+            left: 'center'
+          },
+          tooltip: {},
+          xAxis: {
+            data: xAxisData,
+            name: '濮撳悕',
+            axisLine: { onZero: true },
+            splitLine: { show: false },
+            splitArea: { show: false }
+          },
+          yAxis: {
+            min: 0,
+            max: 60,
+            interval: 10,
+          },
+          grid: {
+            bottom: 100
+          },
+          series: [
+            {
+              name: '鏁版嵁1',
+              type: 'bar',
+              stack: 'one',
+              emphasis: emphasisStyle,
+              data: data1,
+              itemStyle:{
+                color: "#d97559"
+              }
+            },
+            {
+              name: '鏁版嵁2',
+              type: 'bar',
+              stack: 'one',
+              emphasis: emphasisStyle,
+              data: data2,
+              itemStyle:{
+                color: "#e4c477"
               }
             }
-          });
+          ]
+        };
+        option && myChart.setOption(option);
+      },
+      initLeaderTimelyChart(id,dutyTimely){
+        var chartDom = document.getElementById(id);
+        var myChart = echarts.init(chartDom);
+          window.addEventListener('resize', function() {
+          myChart.resize();
         });
+        var option;
+        option = {
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              type: 'cross',
+              crossStyle: {
+                color: '#999'
+              }
+            }
+          },
+          legend: {
+            data: ['鏍峰搧鏁�',  '瀹屾垚鍙婃椂鐜�']
+          },
+          xAxis: [
+            {
+              name: '濮撳悕',
+              type: 'category',
+              data: ['娌愮',],
+              axisPointer: {
+                type: 'shadow'
+              },
+              itemStyle: {
+                top: '20px'
+              }
+            }
+          ],
+          yAxis: [
+            {
+              type: 'value',
+              name: '鏁伴噺',
+              min: 0,
+              max: 10,
+              interval: 1,
+              axisLabel: {
+                formatter: '{value}'
+              }
+            },
+            {
+              type: 'value',
+              name: '鐧惧垎姣�',
+              min: 0,
+              max: 100,
+              interval: 10,
+              axisLabel: {
+                formatter: '{value} %'
+              }
+            }
+          ],
+          series: [
+            {
+              name: '鏍峰搧鏁�',
+              type: 'bar',
+              barWidth: '20%',
+              tooltip: {
+                valueFormatter: function (value) {
+                  return value;
+                }
+              },
+              data: [4.0],
+              itemStyle: {
+                color: '#9fceff'
+              }
+            },
+            {
+              name: '瀹屾垚鍙婃椂鐜�',
+              type: 'line',
+              tooltip: {
+                valueFormatter: function (value) {
+                  return value + ' %';
+                }
+              },
+              data: [7.5],
+              itemStyle: {
+                color: '#d2eec5'
+              }
+            },
+          ]
+        };
 
         option && myChart.setOption(option);
       },
-      initTesterStatiChart(){
+      initTesterTimelyChart(id,executeTimely){
+        var chartDom = document.getElementById(id);
+        var myChart = echarts.init(chartDom);
+          window.addEventListener('resize', function() {
+          myChart.resize();
+        });
+        var option;
+        option = {
+          tooltip: {
+            trigger: 'axis',
+            axisPointer: {
+              type: 'cross',
+              crossStyle: {
+                color: '#999'
+              }
+            }
+          },
+          legend: {
+            data: ['椤圭洰鏁�', '瀹屾垚鍙婃椂鐜�'],
+            show: true
+          },
+          xAxis: [
+            {
+              type: 'category',
+              data: ["","",""],
+              axisPointer: {
+                type: 'shadow'
+              }
+            }
+          ],
+          yAxis: [
+            {
+              type: 'value',
+              name: '',
+              min: 0,
+              max: 50,
+              interval: 5,
+              axisLabel: {
+                formatter: '{value}'
+              }
+            },
+            {
+              type: 'value',
+              name: '',
+              min: 0,
+              max: 100,
+              interval: 10,
+              axisLabel: {
+                formatter: '{value} %'
+              }
+            }
+          ],
+          series: [
+            {
+              name: '椤圭洰鏁�',
+              type: 'bar',
+              tooltip: {
+                valueFormatter: function (value) {
+                  return value ;
+                }
+              },
+              data: [2.0, 4.9, 7.0],
+              itemStyle: {
+                color: '#5087ec'
+              }
+            },
+            {
+              name: '瀹屾垚鍙婃椂鐜�',
+              type: 'line',
+              yAxisIndex: 1,
+              tooltip: {
+                valueFormatter: function (value) {
+                  return value + ' %';
+                }
+              },
+              data: [2.0, 2.2, 3.3],
+              itemStyle: {
+                color: '#68bbc4'
+              }
+            }
+          ]
+        };
 
-      },
-      initLeaderTimlyChart(){
-
-      },
-      initTesterTimlyChart(){
-
+        option && myChart.setOption(option);
       },
     }
 }
@@ -186,7 +459,7 @@
     padding: 0;
     .work-head{
       width:94%;
-      height:100;
+      height:100px;
       margin: 5px 10px;
       position: fixed;
       z-index: 10;
@@ -203,16 +476,32 @@
           }
         }
         .buttons{
-          margin: 40px 0px 0px 900px;
+          margin: 40px 0px 0px 50%;
         }
       }
     }
     .work-center{
-      margin: 0px 0px 5px 10px;
+      margin: 0px 0px 150px 10px;
       padding: 18vh 0px 5px 0px;
       .el-card{
         margin: 5px 0px;
         height:500px;
+        p{
+          font-size: 22px;
+          margin: 0;
+          padding: 0;
+        }
+      }
+    }
+    .work-foot{
+      width:100%;
+      height:50px;
+      position: fixed;
+      bottom: 0px;
+      z-index: 10;
+      text-align: right;
+      .el-button{
+        margin-right: 7%;
       }
     }
   }

--
Gitblit v1.9.3