|
|
@@ -0,0 +1,255 @@
|
|
|
+<template>
|
|
|
+ <div style="width: 100%; overflow-y: auto">
|
|
|
+ <el-row :gutter="10" style="width: 100%; overflow: hidden">
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 本月实际计划</i>
|
|
|
+ </div>
|
|
|
+ <el-progress type="circle" :percentage="80"></el-progress>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 本月实际检测</i>
|
|
|
+ </div>
|
|
|
+ <el-progress type="circle" :percentage="80"></el-progress>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 同比检测</i>
|
|
|
+ </div>
|
|
|
+ <el-progress type="circle" :percentage="89" color="#8e71c7"></el-progress>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 环比检测</i>
|
|
|
+ </div>
|
|
|
+ <el-progress type="circle" :percentage="90"></el-progress>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row :gutter="10" style="margin-top: 10px">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database">各单位检测数量统计</i>
|
|
|
+ </div>
|
|
|
+ <v-chart :force-fit="true" :height="height" :data="mdata" :scale="mscale">
|
|
|
+ <v-tooltip />
|
|
|
+ <v-axis />
|
|
|
+ <v-legend />
|
|
|
+ <v-line position="month*temperature" color="city" />
|
|
|
+ <v-point position="month*temperature" color="city" :size="4" :v-style="style" :shape="'circle'" />
|
|
|
+ </v-chart>
|
|
|
+
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 历年报告数量</i>
|
|
|
+ </div>
|
|
|
+ <v-chart :forceFit="true" :height="height" :data="chartData" :scale="scale">
|
|
|
+ <v-tooltip />
|
|
|
+ <v-axis />
|
|
|
+ <v-bar position="year*sales" />
|
|
|
+ </v-chart>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 历年合格报告数量</i>
|
|
|
+ </div>
|
|
|
+ <v-chart :forceFit="true" :height="height" :data="lineData" :scale="lineScale">
|
|
|
+ <v-tooltip />
|
|
|
+ <v-axis />
|
|
|
+ <v-line position="year*value" />
|
|
|
+ <v-point position="year*value" shape="circle" />
|
|
|
+ </v-chart>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 检测报告分类统计</i>
|
|
|
+ </div>
|
|
|
+ <v-chart :forceFit="true" :height="height" :data="lineData" :scale="lineScale">
|
|
|
+ <v-tooltip />
|
|
|
+ <v-axis />
|
|
|
+ <v-line position="year*value" />
|
|
|
+ <v-point position="year*value" shape="circle" />
|
|
|
+ </v-chart>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card class="box-card">
|
|
|
+ <div slot="header">
|
|
|
+ <legend style="color:#436EEE"></legend>
|
|
|
+ <i class="icon icon-database"> 合格率</i>
|
|
|
+ </div>
|
|
|
+ <v-chart :forceFit="true" :height="height" :data="lineData" :scale="lineScale">
|
|
|
+ <v-tooltip />
|
|
|
+ <v-axis />
|
|
|
+ <v-line position="year*value" />
|
|
|
+ <v-point position="year*value" shape="circle" />
|
|
|
+ </v-chart>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+</template>
|
|
|
+
|
|
|
+<style>
|
|
|
+ .el-table .warning-row {
|
|
|
+ background: oldlace;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-table .success-row {
|
|
|
+ background: #f0f9eb;
|
|
|
+ }
|
|
|
+</style>
|
|
|
+
|
|
|
+<script>
|
|
|
+ const chartData = [
|
|
|
+ { year: '1951 年', sales: 38 },
|
|
|
+ { year: '1952 年', sales: 52 },
|
|
|
+ { year: '1956 年', sales: 61 },
|
|
|
+ { year: '1957 年', sales: 145 },
|
|
|
+ { year: '1958 年', sales: 48 },
|
|
|
+ { year: '1959 年', sales: 38 },
|
|
|
+ { year: '1960 年', sales: 38 },
|
|
|
+ { year: '1962 年', sales: 38 },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const scale = [{
|
|
|
+ dataKey: 'sales',
|
|
|
+ tickInterval: 20,
|
|
|
+ }];
|
|
|
+
|
|
|
+ const lineData = [
|
|
|
+ { year: '1991', value: 3 },
|
|
|
+ { year: '1992', value: 4 },
|
|
|
+ { year: '1993', value: 3.5 },
|
|
|
+ { year: '1994', value: 5 },
|
|
|
+ { year: '1995', value: 4.9 },
|
|
|
+ { year: '1996', value: 6 },
|
|
|
+ { year: '1997', value: 7 },
|
|
|
+ { year: '1998', value: 9 },
|
|
|
+ { year: '1999', value: 13 },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const lineScale = [{
|
|
|
+ dataKey: 'value',
|
|
|
+ min: 0,
|
|
|
+ },{
|
|
|
+ dataKey: 'year',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+ }];
|
|
|
+
|
|
|
+ const DataSet = require('@antv/data-set');
|
|
|
+
|
|
|
+const msourceData = [
|
|
|
+ { month: 'Jan', 特检站: 7.0, 宇信公司: 3.9, 计量站: 3.9 },
|
|
|
+ { month: 'Feb', 特检站: 6.9, 宇信公司: 4.2, 计量站: 3.9 },
|
|
|
+ { month: 'Mar', 特检站: 9.5, 宇信公司: 5.7, 计量站: 3.9 },
|
|
|
+ { month: 'Apr', 特检站: 14.5, 宇信公司: 8.5, 计量站: 3.9 },
|
|
|
+ { month: 'May', 特检站: 18.4, 宇信公司: 11.9, 计量站: 3.9 },
|
|
|
+ { month: 'Jun', 特检站: 21.5, 宇信公司: 15.2, 计量站: 3.9 },
|
|
|
+ { month: 'Jul', 特检站: 25.2, 宇信公司: 17.0, 计量站: 3.9 },
|
|
|
+ { month: 'Aug', 特检站: 26.5, 宇信公司: 16.6, 计量站: 3.9 },
|
|
|
+ { month: 'Sep', 特检站: 23.3, 宇信公司: 14.2, 计量站: 3.9 },
|
|
|
+ { month: 'Oct', 特检站: 18.3, 宇信公司: 10.3, 计量站: 3.9 },
|
|
|
+ { month: 'Nov', 特检站: 13.9, 宇信公司: 6.6, 计量站: 3.9 },
|
|
|
+ { month: 'Dec', 特检站: 9.6, 宇信公司: 4.8, 计量站: 3.9 },
|
|
|
+];
|
|
|
+
|
|
|
+const dv = new DataSet.View().source(msourceData);
|
|
|
+dv.transform({
|
|
|
+ type: 'fold',
|
|
|
+ fields: ['特检站', '宇信公司', '计量站'],
|
|
|
+ key: 'city',
|
|
|
+ value: 'temperature',
|
|
|
+});
|
|
|
+const mdata = dv.rows;
|
|
|
+
|
|
|
+const mscale = [{
|
|
|
+ dataKey: 'month',
|
|
|
+ min: 0,
|
|
|
+ max: 1,
|
|
|
+}];
|
|
|
+
|
|
|
+ export default {
|
|
|
+ methods: {
|
|
|
+ tableRowClassName({row, rowIndex}) {
|
|
|
+ if (rowIndex === 1) {
|
|
|
+ return 'warning-row';
|
|
|
+ } else if (rowIndex === 3) {
|
|
|
+ return 'success-row';
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created () {
|
|
|
+
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ chartData,
|
|
|
+ scale,
|
|
|
+ lineData,
|
|
|
+ lineScale,
|
|
|
+ mdata,
|
|
|
+ mscale,
|
|
|
+ style: { stroke: '#fff', lineWidth: 1 },
|
|
|
+ height: 400,
|
|
|
+ tableData: [{
|
|
|
+ precent: 70,
|
|
|
+ date: '2016-05-02',
|
|
|
+ name: 'A001',
|
|
|
+ address: '无游梁式抽油机检测',
|
|
|
+ }, {
|
|
|
+ precent: 60,
|
|
|
+ date: '2016-05-04',
|
|
|
+ name: 'B002',
|
|
|
+ address: '阻火器检测'
|
|
|
+ }, {
|
|
|
+ precent: 66,
|
|
|
+ date: '2016-05-01',
|
|
|
+ name: 'C003',
|
|
|
+ address: '呼吸阀检测',
|
|
|
+ }, {
|
|
|
+ precent: 80,
|
|
|
+ date: '2016-05-03',
|
|
|
+ name: 'D004',
|
|
|
+ address: '空气泡沫产生器检测'
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|