XiaoRuby
2023-08-23 a2fe40a6232559f2bd2d5c818fc206395072b403
Merge remote-tracking branch 'origin/master'

# Conflicts:
# src/views/experiment/passRateStatistics/index.vue
已修改5个文件
670 ■■■■ 文件已修改
src/api/home.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/passRateStatistics/index.vue 399 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/planAssignments/plan.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/home/index.vue 187 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/laboratory/measure/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/home.js
@@ -34,4 +34,13 @@
      method: 'get',
      params
    })
}
//统计
export function getTurno(params) {
  return request({
    url: '/home/turno',
    method: 'get',
    params
  })
}
src/views/experiment/passRateStatistics/index.vue
@@ -1,66 +1,36 @@
<template>
  <div class="content-main">
    <div class="top-bar">
      <el-form
        ref="form"
        :inline="true"
        :rules="rules"
        :model="searchData"
        label-position="top"
      >
      <el-form ref="form" :inline="true" :rules="rules" :model="searchData" label-position="top">
        <el-form-item label="检测日期:" class="sermargin" prop="date">
          <el-date-picker
            v-model="searchData.date"
            type="daterange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          >
          <el-date-picker v-model="searchData.date" type="daterange" range-separator="至" start-placeholder="开始日期"
            end-placeholder="结束日期">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="检验类型:" class="sermargin" prop="type">
          <el-select v-model="searchData.type" placeholder="全部">
            <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="供应商:">
          <el-select v-model="searchData.supplier" placeholder="全部">
            <el-option
              v-for="item in supplier"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            <el-option v-for="item in supplier" :key="item.value" :label="item.label" :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item style="margin-left: 40px" label="样品:">
        <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"
            >
            <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>
              <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>
            <el-button type="primary" @click="search" size="mini"
              >查询</el-button
            >
            <el-button type="primary" @click="search" size="mini">查询</el-button>
          </el-form-item>
        </div>
      </el-form>
@@ -68,74 +38,31 @@
    <div class="top-bar-copy"></div>
    <div class="chart-content">
      <div class="qualified-wrapper">
        <div style="margin-left: 20px; padding: 20px 0px; font-size: 18px">
          检测样品合格率统计
        </div>
        <div style="margin-left: 20px;padding:20px 0px;font-size:18px">检测样品合格率统计</div>
        <div :hidden="testSample" class="qualified" ref="qualified"></div>
        <div
          :hidden="!testSample"
          style="
            height: 100%;
            text-align: center;
            color: #999696df;
            margin-top: 100px;
          "
        >
          暂无数据
        <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 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 :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">
            <div style="font-size: 18px">不合格项目统计</div>
            <div style="font-size:18px">不合格项目统计</div>
            <el-radio-group v-model="type">
              <el-radio-button
                v-for="item in radiooptions"
                :key="item.value"
                :label="item.value"
                >{{ item.label }}</el-radio-button
              >
              <el-radio-button v-for="item in radiooptions" :key="item.value" :label="item.value">{{ item.label
              }}</el-radio-button>
            </el-radio-group>
          </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 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>
@@ -150,27 +77,21 @@
<script>
// 添加滚动监听事件
window.addEventListener("scroll", function () {
  var topBar = document.querySelector(".top-bar");
window.addEventListener('scroll', function () {
  var topBar = document.querySelector('.top-bar');
  var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
  if (scrollTop > 0) {
    topBar.classList.add("fixed");
    topBar.classList.add('fixed');
  } else {
    topBar.classList.remove("fixed");
    topBar.classList.remove('fixed');
  }
});
})
import * as echarts from "echarts";
import {
  getSupplierList,
  getTestSampleStatistics,
  getSupplierNoPassStatistics,
  getNoPassProjectStatistics,
  getSampleOptions,
} from "@/api/experiment/passRateStatistics";
import { dateFormat } from "../../../utils/dateUtil";
import MyWorker from "comlink-loader!../../../worker/test";
import * as echarts from 'echarts'
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 {
@@ -181,35 +102,35 @@
        type: null,
        supplier: null,
        sample: null,
        code: null,
        code: null
      },
      options: [
        {
          label: "全部",
          value: 3,
          label: '全部',
          value: 3
        },
        {
          label: "原材料",
          value: 0,
          label: '原材料',
          value: 0
        },
        {
          label: "成品",
          value: 1,
          label: '成品',
          value: 1
        },
        {
          label: "委托品",
          value: 2,
        },
          label: '委托品',
          value: 2
        }
      ],
      radiooptions: [
        {
          label: "环形饼图",
          value: 0,
          label: '环形饼图',
          value: 0
        },
        {
          label: "帕累托图",
          value: 1,
        },
          label: '帕累托图',
          value: 1
        }
      ],
      type: 0,
      rules: {
@@ -224,100 +145,100 @@
      testSample: false,
      m1: null,
      m2: null,
      m3: null,
    };
      m3: null
    }
  },
  async mounted() {
    await this.start();
    this.tableStart();
    await this.start()
    this.tableStart()
  },
  methods: {
    testWork() {
    testWork(){
      const inst = new MyWorker();
      inst.test();
      inst.test()
      for (let index = 0; index < 100; index++) {
        console.log("主线程" + index);
        console.log("主线程"+index);
      }
    },
    async search() {
      this.testSampleStatistics = null;
      this.supplierNoPassStatistics = null;
      this.projectStatistics = null;
      this.supplier = [];
      this.sampleOptions = [];
      await this.start();
      this.tableStart();
      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));
      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]);
        data.beginDate = dateFormat(this.searchData.date[0])
        data.endDate = dateFormat(this.searchData.date[1])
      }
      if (data.supplier == "全部") {
        data.supplier = null;
      if (data.supplier == '全部') {
        data.supplier = null
      }
      if (data.type === 3) {
        data.type = null;
        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;
        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;
      if (data.code == '全部') {
        data.code = null
        data.sample = null
      }
      data.date = null;
      return data;
      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 });
      });
      let res = await getSupplierList()
      this.supplier.push({ label: '全部', value: '全部' })
      res.data.forEach(item => {
        this.supplier.push({ label: item.supplier, value: item.supplier })
      })
    },
    async getTestSampleStatistics() {
      let param = this.dateHandle();
      let res = await getTestSampleStatistics(param);
      this.testSample = !res.data.noData;
      this.testSampleStatistics = res.data;
      let param = this.dateHandle()
      let res = await getTestSampleStatistics(param)
      this.testSample = !res.data.noData
      this.testSampleStatistics = res.data
    },
    async getSupplierNoPassStatistics() {
      let param = this.dateHandle();
      let res = await getSupplierNoPassStatistics(param);
      this.supplierData = !res.data.noData;
      this.supplierNoPassStatistics = res.data;
      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;
      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();
      await this.getTestSampleStatistics()
      await this.getSupplierNoPassStatistics()
      await this.getNoPassProjectStatistics()
      await this.getSupplierList()
      await this.getSampleOptions()
    },
    async getSampleOptions() {
      let res = await getSampleOptions();
      let res = await getSampleOptions()
      this.sampleOptions.push({
        label: "全部",
        value: "全部",
      });
      res.data.forEach((item) => {
        label: '全部',
        value: '全部'
      })
      res.data.forEach(item => {
        let data = {
          label: item.name,
          value: item.code,
        };
        this.sampleOptions.push(data);
      });
          value: item.code
        }
        this.sampleOptions.push(data)
      })
    },
    tableStart() {
      const chartDom_qualified = this.$refs.qualified;
@@ -326,116 +247,108 @@
      const myChart1 = echarts.init(chartDom_qualified);
      const myChart2 = echarts.init(chartDom_unqualified_provider, null, {
        height: 300,
        height: 300
      });
      const myChart3 = echarts.init(chartDom_unqualified_project, null, {
        height: 268,
        height: 268
      });
      window.addEventListener("resize", function () {
        myChart1.resize();
        myChart2.resize();
        myChart3.resize();
      });
      this.m1 = myChart1;
      this.m2 = myChart2;
      this.m3 = myChart3;
      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'
          },
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
          }
        },
        legend: {
          data: ["合格", "不合格"],
          data: ['合格', '不合格']
        },
        xAxis: [
          {
            type: "category",
            data: this.testSampleStatistics.xAxis,
          },
            type: 'category',
            data: this.testSampleStatistics.xAxis
          }
        ],
        yAxis: [
          {
            type: "value",
            type: 'value',
            axisLabel: {
              formatter: "{value}",
            },
          },
              formatter: '{value}'
            }
          }
        ],
        series: this.testSampleStatistics.series,
        series: this.testSampleStatistics.series
      };
      /**
       * 供应商
       */
      const option_unqualified1 = {
        tooltip: {
          trigger: "axis",
          axisPointer: {
            // 坐标轴指示器,坐标轴触发有效
            type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
          },
          formatter: function (params) {
            let tooltip = params[0].name + "<br/>";
            let tooltip = params[0].name + '<br/>';
            params.forEach(function (item) {
              tooltip +=
                item.marker +
                " " +
                item.seriesName +
                ": " +
                item.value.toFixed(2) +
                "%<br/>"; // 将数据保留两位小数并转为百分比形式
              tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 将数据保留两位小数并转为百分比形式
            });
            return tooltip;
          },
          }
        },
        legend: {
          data: ["合格数量", "不合格数量"],
          data: ['合格数量', '不合格数量']
        },
        xAxis: {
          data: this.supplierNoPassStatistics.xAxis,
          data: this.supplierNoPassStatistics.xAxis
        },
        yAxis: [
          {
            type: "value",
            type: 'value',
            axisLabel: {
              formatter: "{value}%",
            },
          },
              formatter: '{value}%'
            }
          }
        ],
        series: this.supplierNoPassStatistics.series,
        series: this.supplierNoPassStatistics.series
      };
      /**
       * 不合格项目
       */
      const option_unqualified2 = {
        legend: {
          orient: "vertical",
          x: "left",
          data: this.projectStatistics.legend,
          orient: 'vertical',
          x: 'left',
          data: this.projectStatistics.legend
        },
        title: {
          text: "",
          left: "center",
          top: "center",
          text: '',
          left: 'center',
          top: 'center'
        },
        series: [
          {
            type: "pie",
            type: 'pie',
            data: this.projectStatistics.series,
            radius: ["40%", "70%"],
            radius: ['40%', '70%'],
            label: {
              show: true,
              formatter: "{b}: {c}%",
              formatter: '{b}: {c}%'
            },
          },
        ],
      };
          }
        ]
      }
      myChart1.setOption(option_qualified);
      myChart2.setOption(option_unqualified1);
@@ -445,9 +358,9 @@
      if (this.type === 1) {
        myChart3.setOption(option_unqualified2);
      }
    },
  },
};
    }
  }
}
</script>
<style lang="scss" scoped>
src/views/experiment/planAssignments/plan.vue
@@ -44,16 +44,20 @@
<template>
    <div class="plan">
        <div class="title">
            <span>项目名称:</span>
            <el-input v-model="search.name" size="medium" style="width: 200px;margin-right: 20px;"></el-input>
            <span>申请单编号:</span>
            <el-input v-model="search.code" size="medium" style="width: 200px;margin-right: 20px;"></el-input>
            <span>检验时间:</span>
            <el-date-picker v-model="search.date" type="daterange" range-separator="至" start-placeholder="开始日期"
                end-placeholder="结束日期" size="medium" style="margin-right: 20px;">
                end-placeholder="结束日期" size="medium" value-format="yyyy-MM-dd" style="margin-right: 20px;">
            </el-date-picker>
            <span>检验人:</span>
            <el-input v-model="search.userName" size="medium" style="width: 200px;margin-right: 20px;"></el-input>
            <el-button size="small" type="primary">查询</el-button>
            <el-button size="small">重置</el-button>
            <span>检验结果:</span>
            <el-select v-model="search.testValue" size="medium" style="width: 200px;margin-right: 20px;">
                <el-option label="全部" :value="null"></el-option>
                <el-option label="合格" :value="1"></el-option>
                <el-option label="不合格" :value="0"></el-option>
            </el-select>
            <el-button size="small" type="primary" @click="selectDataList">查询</el-button>
            <el-button size="small" @click="cleanBtn">重置</el-button>
        </div>
        <div class="thing">
            <el-table :data="tableData" style="width: 100%;" row-key="code" default-expand-all
@@ -207,9 +211,9 @@
        data() {
            return {
                search: {
                    name: null,
                    code: null,
                    date: [],
                    userName: null,
                    testValue: null,
                },
                tableData: [],
                upDia: false,
@@ -228,7 +232,16 @@
        },
        methods: {
            selectDataList() {
                get(this.$url.selectAllPlan).then(res => {
                var str = {}
                str.code = this.search.code
                str.status = this.search.testValue
                try {
                    if (this.search.date.length != 0) {
                        str.beginTime = this.search.date[0]
                        str.endTime = this.search.date[1]
                    }
                } catch (e) {}
                get(this.$url.selectAllPlan, str).then(res => {
                    this.tableData = JSON.parse(JSON.stringify(res.data).replaceAll('pid', 'code').replaceAll('samplename',
                        'name').replaceAll('inspectionStatus', 'testState'))
                    this.tableData.forEach(a => {
@@ -331,7 +344,7 @@
            submitUpData2() {
                var data = []
                this.upData.testValue.forEach(a => {
                    if(a.number!=''&&a.number!=null){
                    if (a.number != '' && a.number != null) {
                        data.push(a.number)
                    }
                })
@@ -341,15 +354,23 @@
                }).then(res => {
                    this.upInsDia = false
                    this.selectDataList()
                    this.$confirm(`<p style="line-height: 80px">您的项目(${this.upData.name})检验结果为:<span class="${res.data==1?'ins_state_success':'ins_state_error'}">${res.data==1?'合格':'不合格'}</span></p>`, '提交成功', {
                        confirmButtonText: '确定',
                        cancelButtonText: '关闭',
                        dangerouslyUseHTMLString:true,
                        type: `${res.data==1?'success':'error'}`
                    }).then(() => {
                    }).catch(() => {
                    })
                    this.$confirm(
                        `<p style="line-height: 80px">您的项目(${this.upData.name})检验结果为:<span class="${res.data==1?'ins_state_success':'ins_state_error'}">${res.data==1?'合格':'不合格'}</span></p>`,
                        '提交成功', {
                            confirmButtonText: '确定',
                            cancelButtonText: '关闭',
                            dangerouslyUseHTMLString: true,
                            type: `${res.data==1?'success':'error'}`
                        }).then(() => {}).catch(() => {})
                })
            },
            cleanBtn(){
                this.search = {
                    code: null,
                    date: [],
                    testValue: null,
                }
                this.selectDataList()
            }
        }
    }
src/views/home/index.vue
@@ -4,47 +4,47 @@
      <div class="echart1">
        <el-row :gutter="10">
          <el-col :span="16">
            <el-card class="box-card" :body-style="{ padding: '0px 10px',height:'120px' }">
            <el-card class="box-card" :body-style="{ padding: '0px 10px',height:'17vh' }">
              <p style="font-size: 10px;margin-left: 10px;">检验总数统计</p>
               <el-row :gutter="10">
                  <el-col :span="6" >
                    <img :src="imgSrc" />
                    <div class="card-text">
                      <h6>检验单已检验总数</h6>
                      <p>{{insNum}}</p>
                      <h3>检验单</h3>
                      <p><span>(已检验总数)</span>{{insNum}}</p>
                    </div>
                  </el-col>
                  <el-col :span="6">
                    <img :src="imgSrc"/>
                    <div class="card-text">
                      <h6>检验单未检验总数</h6>
                      <p>{{insUnNum}}</p>
                      <h3>检验单</h3>
                      <p><span>(未检验总数)</span>{{insUnNum}}</p>
                    </div>
                  </el-col>
                  <el-col :span="6">
                    <img :src="imgSrc"/>
                    <div class="card-text">
                      <h6>检验项目已检验总数</h6>
                      <p>{{insproNum}}</p>
                      <h3>检验项目</h3>
                      <p><span>(已检验总数)</span>{{insproNum}}</p>
                    </div>
                  </el-col>
                  <el-col :span="6">
                    <img :src="imgSrc"/>
                    <div class="card-text">
                      <h6>检验项目未检验总数</h6>
                      <p>{{insproUnNum}}</p>
                      <h3>检验项目</h3>
                      <p><span>(未检验总数)</span>{{insproUnNum}}</p>
                    </div>
                  </el-col>
               </el-row>
            </el-card>
          </el-col>
          <el-col :span="8">
            <el-card class="box-card" :body-style="{ padding: '0px',height:'120px' }">
            <el-card class="box-card" :body-style="{ padding: '0px',height:'17vh' }">
              <p style="font-size: 10px;margin-left: 10px;color: #2fcf10;">已检验</p>  
              <el-table
                :data="verifiedData"
                :default-sort = "{prop: 'date', order: 'descending'}"
                :cell-style="{margin:'0',padding:'2px 0px'}"
                :cell-style="cell"
                :header-cell-style="{margin:'0',padding:'0',backgroundColor:'#f0f7ff',color:'#0050a7'}">
                  <el-table-column prop="no" label="排名" sortable width="110"></el-table-column>
                  <el-table-column prop="result" label="检验结论" width="110"></el-table-column>
@@ -58,23 +58,23 @@
      <div class="echart2">
        <el-row :gutter="10">
          <el-col :span="6">
            <el-card :body-style="{ padding: '0px',height:'180px' }">
            <el-card :body-style="{ padding: '0px',height:'25vh' }">
              <p>原材料合格率</p>  
              <div id="materialPieChart" style="width:100%;height:180px"></div>
            </el-card>
          </el-col>
          <el-col :span="6">
            <el-card :body-style="{ padding: '0px',height:'180px' }">
            <el-card :body-style="{ padding: '0px',height:'25vh' }">
              <p>成品合格率</p>  
              <div id="finishedPieChart" style="width:100%;height:180px"></div>
            </el-card>
          </el-col>
          <el-col :span="12">
            <el-card :body-style="{ padding: '0px',height:'180px' }">
            <el-card :body-style="{ padding: '0px',height:'25vh' }">
              <p style="z-index: 10;position: absolute;font-size: 10px;margin-left: 10px;color: #ff0000;">未检验</p>  
              <el-table
                :data="uncheckedData"
                :cell-style="{margin:'0px',padding:'3px 0px'}"
                :cell-style="cell"
                :header-cell-style="{margin:'0px',padding:'3px 0px',backgroundColor:'#f0f7ff',color:'#0050a7'}">
                  <el-table-column prop="no" label="序号" width="100"></el-table-column>
                  <el-table-column prop="name" label="待检项目" width="120"></el-table-column>
@@ -88,7 +88,7 @@
        </el-row>
      </div>
      <div class="echart3">
        <el-card :body-style="{ padding: '0px',height:'300px' }">
        <el-card :body-style="{ padding: '0px',height:'40vh' }">
          <el-radio-group class="button-group" :input="getDataByType(radioType)"  v-model="radioType" size="mini">
            <el-radio-button label="本周"></el-radio-button>
            <el-radio-button label="本月"></el-radio-button>
@@ -103,7 +103,8 @@
<script>
import * as echarts from 'echarts';
import { getVerifiedTop3,getUncheckedTop4,getMatAndFinshQualified,getCheckAndProjectNum
import { getVerifiedTop3,getUncheckedTop4,getMatAndFinshQualified,
  getCheckAndProjectNum,getTurno
} from '@/api/home'
export default {
  name: "home",
@@ -126,6 +127,20 @@
    this.getPieChart();
  },
  methods: {
    cell({ row, column, rowIndex, columnIndex }) {
      if(rowIndex===0 && columnIndex===0){
        return "color: #ff0000;margin:0;padding:2px 0px";
      }
      if(rowIndex===1 && columnIndex===0){
        return "color: #f0d357;margin:0;padding:2px 0px";
      }
      if(rowIndex===2 && columnIndex===0){
        return "color: #37ff11;margin:0;padding:2px 0px";
      }
      if(rowIndex>=0 && columnIndex>=0){
        return {"margin":"0","padding":"2px 0px"};
      }
    },
    async getcheckProjectNum(){
      const {data} = await getCheckAndProjectNum();
      this.insNum = data.insNum;
@@ -166,12 +181,12 @@
      }  
    },
    initPieChart(elementId,data){
      var chartDom = document.getElementById(elementId);
      var myChart = echarts.init(chartDom);
      let chartDom = document.getElementById(elementId);
      let myChart = echarts.init(chartDom);
      window.addEventListener('resize', function() {
        myChart.resize();
      });
      var option;
      let option;
      option = {
        tooltip: {
          trigger: 'item'
@@ -186,6 +201,11 @@
          {
            type: 'pie',
            radius: ['40%', '70%'],
            itemStyle: {
              borderRadius: 6,
              borderColor: '#fff',
              borderWidth: 2
            },
            tooltip: {
              valueFormatter: function(value){
                return value + '%';
@@ -195,6 +215,13 @@
            label: {
              show: false,
              position: 'center',
              formatter: '{c}%'
            },
            emphasis: {
              label:{
                fontSize: 25,
                show: true
              }
            },
            labelLine: {
              show: false
@@ -209,49 +236,63 @@
    async getPieChart(){
      const {data} = await getMatAndFinshQualified();
      let material = [
              { value: data.material, name: '合格',itemStyle:{color: '#91cc75'} },
              { value: data.unmaterial, name: '不合格',itemStyle:{color: '#fac858'} },
              { value: data.notmaterial, name: '待检验' },
              { value: data.material, name: '合格',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#8ea9e0' },{offset: 1, color: '#106de7' }], false)}}},
              { value: data.unmaterial, name: '不合格',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#ed9031' },{offset: 1, color: '#feb855' }], false)}} },
              { value: data.notmaterial, name: '待检验',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#2ca4a0' },{offset: 1, color: '#3ad1cb' }], false)}} },
            ]
      let finished = [
              { value: data.finished, name: '合格',itemStyle:{color: '#91cc75'} },
              { value: data.unfinished, name: '不合格',itemStyle:{color: '#fac858'} },
              { value: data.notfinished, name: '待检验' },
              { value: data.finished, name: '合格',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#8ea9e0' },{offset: 1, color: '#106de7' }], false)}} },
              { value: data.unfinished, name: '不合格',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#ed9031' },{offset: 1, color: '#feb855' }], false)}} },
              { value: data.notfinished, name: '待检验',itemStyle: {normal: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#2ca4a0' },{offset: 1, color: '#3ad1cb' }], false)}} },
            ]
      //渲染饼状图
      this.initPieChart("materialPieChart",material);
      this.initPieChart("finishedPieChart",finished);
    },
    async getDataByType(label){
      const xAxis = ['一月', '二月', '三月', '四月', '五月', '六月', '七月','八月','九月','十月','十一月','十二月']
      const bar1Data  = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3];
      const bar2Data = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3];
      const line1Data = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2];
      const line2Data = [3.0, 4.2, 6.3, 5.5, 8.3, 13.2, 20.3, 13.4, 23.0, 21.5, 2.0, 33.2];
      let xAxis = ['一月', '二月', '三月', '四月', '五月', '六月', '七月','八月','九月','十月','十一月','十二月']
      let bar1Data  = [];
      let bar2Data = [];
      let line1Data = [];
      let line2Data = [];
      switch(label){
        case "本年":
          this.initBarAndLineChart(xAxis,bar1Data,bar2Data,line1Data,line2Data);
          break;
            const byYear = await getTurno({type:3});
            bar1Data = byYear.data.series[0].data;
            bar2Data = byYear.data.series[1].data;
            line1Data = byYear.data.series[2].data;
            line2Data = byYear.data.series[3].data;
            break;
        case "本月":
            let arr = new Array();
            for(let i=1;i<=31;i++){
                arr.push(i);
            const byMonth = await getTurno({type:2});
            bar1Data = byMonth.data.series[0].data;
            bar2Data = byMonth.data.series[1].data;
            line1Data = byMonth.data.series[2].data;
            line2Data = byMonth.data.series[3].data;
            let days = new Array();
            for(let i=1;i<=byMonth.data.xaxis.length;i++){
              days.push(i);
            }
            this.initBarAndLineChart(arr,bar1Data,bar2Data,line1Data,line2Data);
            xAxis = days;
          break;
        case "本周":
            let arr2 = new Array("周一","周二","周三","周四","周五","周六","周日");
            this.initBarAndLineChart(arr2,bar1Data,bar2Data,line1Data,line2Data);
            const byWeek = await getTurno({type:1});
            bar1Data = byWeek.data.series[0].data;
            bar2Data = byWeek.data.series[1].data;
            line1Data = byWeek.data.series[2].data;
            line2Data = byWeek.data.series[3].data;
            xAxis = new Array("周一","周二","周三","周四","周五","周六","周日");
          break
      } 
      this.initBarAndLineChart(xAxis,bar1Data,bar2Data,line1Data,line2Data);
    },
    initBarAndLineChart(xAxis,bar1Data,bar2Data,line1Data,line2Data){
      var chartDom = document.getElementById('barLineChart');
      var myChart = echarts.init(chartDom);
      let chartDom = document.getElementById('barLineChart');
      let myChart = echarts.init(chartDom);
      window.addEventListener('resize', function() {
        myChart.resize();
      });
      var option;
      let option;
      option = {
        tooltip: {
          trigger: 'axis',
@@ -262,9 +303,7 @@
            }
          }
        },
        legend: {
          data: ['原材料检验', '成品检验', '原材料合格率','成品合格率']
        },
        legend: {data: ['原材料检验', '成品检验', '原材料合格率','成品合格率']},
        xAxis: [
          {
            type: 'category',
@@ -305,6 +344,20 @@
                return value;
              }
            },
            itemStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {
                    offset: 0,
                    color: '#6694ff',
                  },
                  {
                    offset: 1,
                    color: '#096ae4',
                  },
                ]),
              }
            },
            data: bar1Data
          },
          {
@@ -313,6 +366,20 @@
            tooltip: {
              valueFormatter: function (value) {
                return value ;
              }
            },
            itemStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {
                    offset: 0,
                    color: '#ffc16b',
                  },
                  {
                    offset: 1,
                    color: '#fd8103',
                  },
                ]),
              }
            },
            data: bar2Data
@@ -327,6 +394,7 @@
                return value + ' %';
              }
            },
            itemStyle: {color: "#0166e2"},
            data: line1Data
          },
          {
@@ -339,11 +407,17 @@
                return value + ' %';
              }
            },
            itemStyle: {color: "#ed7619"},
            data: line2Data
          }
        ]
      };
      option && myChart.setOption(option);
      this.$on('hook:destroyed',()=>{
          window.removeEventListener("resize", function() {
              myChart.resize();
          });
      })
    }
  }
}
@@ -351,6 +425,8 @@
<style lang="scss" scoped>
.home-main{
  width:100%;
  height:82vh;
  .content-main{
    .echart1{
      .el-table{
@@ -359,6 +435,12 @@
          height:100;
          padding:0px;
          margin-left:10px;
          .el-table__body{
            .el-table_1_column_1  .cell{
              color: red;
            }
          }
        }
        .box-card img{
          width:100%;
@@ -368,13 +450,19 @@
        .box-card .card-text{
          position: absolute;
          top:0px;
          h6{
            margin:10px 15px;
          h3{
            margin:20px 20px 0px 20px;
          }
          p{
            width:100%;
            text-align: right;
            font-size: 25px;
            font-size: 50px;
            margin: -20px 10px 0px 5px;
          }
          span{
            color: gray;
            font-size: 10px;
            margin-right: 80px;
          }
        }
    }
@@ -386,6 +474,9 @@
        padding:0px;
        margin-left:10px;
        padding-top:40px;
        .el-table_2_column_5 div{
          color: red;
        }
      }
      .el-col{
        margin: 10px 0;
src/views/laboratory/measure/index.vue
@@ -118,11 +118,11 @@
        </div>
      </div>
      <div
        :style="`position: absolute;top:${addTop}px;left: 9px;transition: 1s;width: 99%;height: 82vh;background-color: #fff;z-index: 21;`">
        :style="`position: absolute;top:${addTop}vh;left: 9px;transition: 1s;width: 99%;height: 82vh;background-color: #fff;z-index: 21;`">
        <Add ref="add" />
      </div>
      <div id="myMOdel"
        :style="`position: absolute;transition: 1s;top:${mymodelTop}px; left: 9px; width: 99%; height: 85vh; background-color: #fff;z-index: 20;`">
        :style="`position: absolute;transition: 1s;top:${mymodelTop}vh; left: 9px; width: 99%; height: 85vh; background-color: #fff;z-index: 20;`">
        <el-col :span="10">
          <p style="font-size: 13px;padding-left: 40px;">计划信息</p>
        </el-col>
@@ -329,8 +329,8 @@
        createPerson: '某某负责人',
        createTime: '2021-09-08'
      },
      mymodelTop: -700,//14
      addTop: -700,
      mymodelTop: -85,//14
      addTop: -85,
      planId: 0
    }
  },
@@ -372,7 +372,7 @@
    measureAdd() {
      let add = this.$refs.add.add()
      if (add) {
        this.addTop = -700
        this.addTop = -82
        this.$message({
          message: '操作成功!',
          type: 'success'
@@ -389,7 +389,7 @@
      await this.limitGetPlanMeasureInstrument()
    },
    addPlan() {
      this.addTop = 14
      this.addTop = 2
      this.lookVisible = true
      this.$parent.mainShowAdd()
    },
@@ -407,7 +407,7 @@
      this.planId = id
      this.getPlanAndInfoAndIns(id)
      this.lookVisible = true
      this.mymodelTop = 10
      this.mymodelTop = 2
      this.$parent.triggerMainBtnPlan()
    },
    async getPlanAndInfoAndIns(id) {
@@ -428,7 +428,7 @@
    },
    combackLookPlan() {
      this.lookVisible = false
      this.mymodelTop = -700
      this.mymodelTop = -85
    },
    blurSearch() {
      if (this.radioValue === 1) {