|
@@ -1,509 +1,119 @@
|
|
|
<template>
|
|
|
<view class="page">
|
|
|
- <view class="chart" v-if="testData.length">
|
|
|
- <cusEcharts :option="testOption"></cusEcharts>
|
|
|
+ <view class="banner">
|
|
|
+ <img src="../../static/imgs/concat.png" />
|
|
|
</view>
|
|
|
- <view class="chart" v-if="kxData.length">
|
|
|
- <cusEcharts :option="kxOption"></cusEcharts>
|
|
|
+ <view class="box">
|
|
|
+ <view class="tit">合作与咨询</view>
|
|
|
+ <view class="txt">
|
|
|
+ 请于工作日的08:30至17:30期间来电咨询我们的产品和服务。
|
|
|
+ </view>
|
|
|
+ <view class="btn">
|
|
|
+ <img src="../../static/imgs/call.png" />0551-68992527
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="chart" v-if="kxData2.length">
|
|
|
- <cusEcharts :option="kxOption2"></cusEcharts>
|
|
|
+ <view class="box">
|
|
|
+ <view class="tit">演示与在线试用</view>
|
|
|
+ <view class="txt">
|
|
|
+ 我们将适时与您取得联系,并为您量身打造适合企业需求的专项演示方案。
|
|
|
+ </view>
|
|
|
+ <view class="btn">
|
|
|
+ 立即申请
|
|
|
+ </view>
|
|
|
</view>
|
|
|
<tabbar :tabbarIndex="2"></tabbar>
|
|
|
</view>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import * as echarts from "echarts";
|
|
|
+ import * as echarts from "echarts";
|
|
|
import aqiData from '@/static/js/aqi-beijing.js'
|
|
|
export default {
|
|
|
- data(){
|
|
|
+ data() {
|
|
|
return {
|
|
|
- testData:[],
|
|
|
- testOption:null,
|
|
|
- kxData:[],
|
|
|
- kxOption:null,
|
|
|
- kxData2:[],
|
|
|
- kxOption2:null
|
|
|
+ testData: [],
|
|
|
+ testOption: null,
|
|
|
+ kxData: [],
|
|
|
+ kxOption: null,
|
|
|
+ kxData2: [],
|
|
|
+ kxOption2: null
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
this.init();
|
|
|
},
|
|
|
- methods:{
|
|
|
- init(){
|
|
|
- this.initTestChart();
|
|
|
- this.initKxChart();
|
|
|
- this.initKxChart2();
|
|
|
- },
|
|
|
- initTestChart(){
|
|
|
- this.testData = [150, 230, 224, 218, 135, 147, 260];
|
|
|
- this.testOption = {
|
|
|
- xAxis: {
|
|
|
- type: 'category',
|
|
|
- data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- type: 'value'
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- data: this.testData,
|
|
|
- type: 'line'
|
|
|
- }
|
|
|
- ]
|
|
|
- };
|
|
|
- },
|
|
|
- initKxChart(){
|
|
|
- this.kxData = [270,220,350,210,280,400];
|
|
|
- const offsetX = 4;
|
|
|
- const offsetY = 2;
|
|
|
- // 绘制左侧面
|
|
|
- const CubeLeft = echarts.graphic.extendShape({
|
|
|
- shape: {
|
|
|
- x: 0,
|
|
|
- y: 0,
|
|
|
- },
|
|
|
- buildPath: function (ctx, shape) {
|
|
|
- // 会canvas的应该都能看得懂,shape是从custom传入的
|
|
|
- const xAxisPoint = shape.xAxisPoint;
|
|
|
- const c0 = [shape.x, shape.y];
|
|
|
- const c1 = [shape.x - offsetX, shape.y - offsetY];
|
|
|
- const c2 = [xAxisPoint[0] - offsetX, xAxisPoint[1] - offsetY];
|
|
|
- const c3 = [xAxisPoint[0], xAxisPoint[1]];
|
|
|
- ctx
|
|
|
- .moveTo(c0[0], c0[1])
|
|
|
- .lineTo(c1[0], c1[1])
|
|
|
- .lineTo(c2[0], c2[1])
|
|
|
- .lineTo(c3[0], c3[1])
|
|
|
- .closePath();
|
|
|
- },
|
|
|
- });
|
|
|
- // 绘制右侧面
|
|
|
- const CubeRight = echarts.graphic.extendShape({
|
|
|
- shape: {
|
|
|
- x: 0,
|
|
|
- y: 0,
|
|
|
- },
|
|
|
- buildPath: function (ctx, shape) {
|
|
|
- const xAxisPoint = shape.xAxisPoint;
|
|
|
- const c1 = [shape.x, shape.y];
|
|
|
- const c2 = [xAxisPoint[0], xAxisPoint[1]];
|
|
|
- const c3 = [xAxisPoint[0] + offsetX, xAxisPoint[1] - offsetY];
|
|
|
- const c4 = [shape.x + offsetX, shape.y - offsetY];
|
|
|
- ctx
|
|
|
- .moveTo(c1[0], c1[1])
|
|
|
- .lineTo(c2[0], c2[1])
|
|
|
- .lineTo(c3[0], c3[1])
|
|
|
- .lineTo(c4[0], c4[1])
|
|
|
- .closePath();
|
|
|
- },
|
|
|
- });
|
|
|
- // 绘制顶面
|
|
|
- const CubeTop = echarts.graphic.extendShape({
|
|
|
- shape: {
|
|
|
- x: 0,
|
|
|
- y: 0,
|
|
|
- },
|
|
|
- buildPath: function (ctx, shape) {
|
|
|
- const c1 = [shape.x, shape.y];
|
|
|
- const c2 = [shape.x + offsetX, shape.y - offsetY]; //右点
|
|
|
- const c3 = [shape.x, shape.y - offsetX];
|
|
|
- const c4 = [shape.x - offsetX, shape.y - offsetY];
|
|
|
- ctx
|
|
|
- .moveTo(c1[0], c1[1])
|
|
|
- .lineTo(c2[0], c2[1])
|
|
|
- .lineTo(c3[0], c3[1])
|
|
|
- .lineTo(c4[0], c4[1])
|
|
|
- .closePath();
|
|
|
- },
|
|
|
- });
|
|
|
-
|
|
|
- // 注册三个面图形
|
|
|
- echarts.graphic.registerShape("CubeLeft", CubeLeft);
|
|
|
- echarts.graphic.registerShape("CubeRight", CubeRight);
|
|
|
- echarts.graphic.registerShape("CubeTop", CubeTop);
|
|
|
+ methods: {
|
|
|
+ init() {
|
|
|
|
|
|
- this.kxOption = {
|
|
|
- tooltip: {
|
|
|
- trigger: 'axis',
|
|
|
- backgroundColor: 'rgba(13,5,30,.6)',
|
|
|
- borderWidth: 1,
|
|
|
- borderColor: '#4ddd8f',
|
|
|
- padding: 5,
|
|
|
- textStyle: {
|
|
|
- color: '#fff'
|
|
|
- }
|
|
|
- },
|
|
|
- legend: {
|
|
|
- right: 170,
|
|
|
- top: 15,
|
|
|
- textStyle: {
|
|
|
- fontSize: 12,
|
|
|
- color: '#A7BFDE'
|
|
|
- },
|
|
|
- itemWidth: 6,
|
|
|
- itemHeight: 8
|
|
|
- },
|
|
|
- grid: {
|
|
|
- left: '4%',
|
|
|
- right: '3%',
|
|
|
- top: '25%',
|
|
|
- bottom: '8%',
|
|
|
- containLabel: true,
|
|
|
- },
|
|
|
- xAxis: {
|
|
|
- type: 'category',
|
|
|
- data: ['3月', '4月', '5月', '6月', '7月', '8月'],
|
|
|
- axisPointer: {
|
|
|
- type: 'shadow'
|
|
|
- },
|
|
|
- axisTick: {
|
|
|
- show: true,
|
|
|
- length: 4,
|
|
|
- lineStyle: {
|
|
|
- color: 'rgba(199,211,229,0.5)'
|
|
|
- }
|
|
|
- },
|
|
|
- axisLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: 'rgba(199,211,229,0.5)'
|
|
|
- }
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- color: '#c7d3e5'
|
|
|
- }
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- name:'(单位)',
|
|
|
- type: 'value',
|
|
|
- nameTextStyle: {
|
|
|
- fontSize: 12,
|
|
|
- color: '#C6D7F1',
|
|
|
- fontWeight: 400,
|
|
|
- },
|
|
|
- nameGap: 25,
|
|
|
- axisLine: {
|
|
|
- show: false,
|
|
|
- lineStyle: {
|
|
|
- width: 1,
|
|
|
- color: '#545454'
|
|
|
- }
|
|
|
- },
|
|
|
- splitLine: {
|
|
|
- show: true,
|
|
|
- lineStyle: {
|
|
|
- color: 'rgba(199,211,229,0.3)',
|
|
|
- width: 1,
|
|
|
- type: 'dashed'
|
|
|
- }
|
|
|
- },
|
|
|
- axisTick: {
|
|
|
- show: false
|
|
|
- },
|
|
|
- axisLabel: {
|
|
|
- fontSize: 12,
|
|
|
- color: '#c7d3e5'
|
|
|
- }
|
|
|
- },
|
|
|
- series: [
|
|
|
- {
|
|
|
- name: "国内",
|
|
|
- type: "custom",
|
|
|
- renderItem: (params, api) => {
|
|
|
- const location = api.coord([api.value(0), api.value(1)]);
|
|
|
- const xAxisPoint = api.coord([api.value(0), 0]);
|
|
|
- const distance = 7;
|
|
|
- return {
|
|
|
- type: "group",
|
|
|
- children: [{
|
|
|
- type: "CubeLeft",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] + distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#0B5FA9',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: 'rgba(11,95,169,0)'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "CubeRight",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] + distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#088BFF',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: 'rgba(8,139,255,0)'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "CubeTop",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] + distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] + distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#61B5FF',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: '#61B5FF'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- };
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: "#00BFF4",
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: "#A5E2FF",
|
|
|
- },
|
|
|
- ]),
|
|
|
- },
|
|
|
- data: [410,330,210,210,480,190],
|
|
|
- },
|
|
|
- {
|
|
|
- name: "出口",
|
|
|
- type: "custom",
|
|
|
- renderItem: (params, api) => {
|
|
|
- const location = api.coord([api.value(0), api.value(1)]);
|
|
|
- const xAxisPoint = api.coord([api.value(0), 0]);
|
|
|
- const distance = 7;
|
|
|
- return {
|
|
|
- type: "group",
|
|
|
- children: [{
|
|
|
- type: "CubeLeft",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] - distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#28A9A2',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: 'rgba(40,169,162,0)'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "CubeRight",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] - distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#35FFF4',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: 'rgba(53,255,244,0)'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- type: "CubeTop",
|
|
|
- shape: {
|
|
|
- api,
|
|
|
- xValue: api.value(0),
|
|
|
- yValue: api.value(1),
|
|
|
- x: location[0] - distance,
|
|
|
- y: location[1],
|
|
|
- xAxisPoint: [xAxisPoint[0] - distance, xAxisPoint[1]],
|
|
|
- },
|
|
|
- style: {
|
|
|
- fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: '#7EFFF8',
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: '#7EFFF8'
|
|
|
- }
|
|
|
- ]),
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- };
|
|
|
- },
|
|
|
- itemStyle: {
|
|
|
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
|
|
- offset: 0,
|
|
|
- color: "#6AAAFF",
|
|
|
- },
|
|
|
- {
|
|
|
- offset: 1,
|
|
|
- color: "#046EFE",
|
|
|
- },
|
|
|
- ]),
|
|
|
- },
|
|
|
- data: this.kxData,
|
|
|
- }
|
|
|
- ],
|
|
|
- };
|
|
|
- },
|
|
|
- initKxChart2(){
|
|
|
- this.kxData2 = [0];
|
|
|
- let data = aqiData;
|
|
|
- this.kxOption2 = {
|
|
|
- title: {
|
|
|
- text: 'Beijing AQI',
|
|
|
- left: '1%'
|
|
|
- },
|
|
|
- tooltip: {
|
|
|
- trigger: 'axis'
|
|
|
- },
|
|
|
- grid: {
|
|
|
- left: '10%',
|
|
|
- right: '150px',
|
|
|
- bottom: '20%'
|
|
|
- },
|
|
|
- xAxis: {
|
|
|
- data: data.map(function (item) {
|
|
|
- return item[0];
|
|
|
- })
|
|
|
- },
|
|
|
- yAxis: {},
|
|
|
- dataZoom: [
|
|
|
- {
|
|
|
- startValue: '2014-06-01'
|
|
|
- },
|
|
|
- {
|
|
|
- type: 'inside'
|
|
|
- }
|
|
|
- ],
|
|
|
- visualMap: {
|
|
|
- top: 50,
|
|
|
- right: 10,
|
|
|
- pieces: [
|
|
|
- {
|
|
|
- gt: 0,
|
|
|
- lte: 50,
|
|
|
- color: '#93CE07'
|
|
|
- },
|
|
|
- {
|
|
|
- gt: 50,
|
|
|
- lte: 100,
|
|
|
- color: '#FBDB0F'
|
|
|
- },
|
|
|
- {
|
|
|
- gt: 100,
|
|
|
- lte: 150,
|
|
|
- color: '#FC7D02'
|
|
|
- },
|
|
|
- {
|
|
|
- gt: 150,
|
|
|
- lte: 200,
|
|
|
- color: '#FD0100'
|
|
|
- },
|
|
|
- {
|
|
|
- gt: 200,
|
|
|
- lte: 300,
|
|
|
- color: '#AA069F'
|
|
|
- },
|
|
|
- {
|
|
|
- gt: 300,
|
|
|
- color: '#AC3B2A'
|
|
|
- }
|
|
|
- ],
|
|
|
- outOfRange: {
|
|
|
- color: '#999'
|
|
|
- }
|
|
|
- },
|
|
|
- series: {
|
|
|
- name: 'Beijing AQI',
|
|
|
- type: 'line',
|
|
|
- data: data.map(function (item) {
|
|
|
- return item[1];
|
|
|
- }),
|
|
|
- markLine: {
|
|
|
- silent: true,
|
|
|
- lineStyle: {
|
|
|
- color: '#333'
|
|
|
- },
|
|
|
- data: [
|
|
|
- {
|
|
|
- yAxis: 50
|
|
|
- },
|
|
|
- {
|
|
|
- yAxis: 100
|
|
|
- },
|
|
|
- {
|
|
|
- yAxis: 150
|
|
|
- },
|
|
|
- {
|
|
|
- yAxis: 200
|
|
|
- },
|
|
|
- {
|
|
|
- yAxis: 300
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
},
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|
|
|
- .chart{
|
|
|
- width: 100%;
|
|
|
- height: 300px;
|
|
|
- margin-top: 50px;
|
|
|
- &:first-child{
|
|
|
- margin-top: 0;
|
|
|
+ .page {
|
|
|
+ background-color: #E8ECF2;
|
|
|
+ height: 100vh;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .banner {
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .box {
|
|
|
+ width: calc(100% - 48rpx);
|
|
|
+ margin: 0 auto;
|
|
|
+ background-color: #fff;
|
|
|
+ padding: 36rpx 0;
|
|
|
+ border-radius: 12rpx;
|
|
|
+ margin-bottom: 40rpx;
|
|
|
+
|
|
|
+ .tit {
|
|
|
+ font-size: 32rpx;
|
|
|
+ color: #111;
|
|
|
+ padding-left: 30rpx;
|
|
|
+ font-weight: bold;
|
|
|
+ position: relative;
|
|
|
+ line-height: 45rpx;
|
|
|
+
|
|
|
+ &:before {
|
|
|
+ content: "";
|
|
|
+ display: block;
|
|
|
+ width: 12rpx;
|
|
|
+ height: 24rpx;
|
|
|
+ background-color: #1460CA;
|
|
|
+ position: absolute;
|
|
|
+ top: 11rpx;
|
|
|
+ left: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .txt {
|
|
|
+ margin: 7rpx 0 20rpx;
|
|
|
+ line-height: 44rpx;
|
|
|
+ color: #666;
|
|
|
+ font-size: 28rpx;
|
|
|
+ padding: 0 30rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn {
|
|
|
+ width: 318rpx;
|
|
|
+ height: 68rpx;
|
|
|
+ line-height: 68rpx;
|
|
|
+ color: #fff;
|
|
|
+ background-color: #1460CA;
|
|
|
+ text-align: center;
|
|
|
+ border-radius: 8rpx;
|
|
|
+ margin-left: 30rpx;
|
|
|
+ img{
|
|
|
+ width: 28rpx;
|
|
|
+ height: 28rpx;
|
|
|
+ margin-right: 20rpx;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|