Browse Source

模块4个完成

master
j1ack 3 years ago
parent
commit
6ab105d014
  1. BIN
      public/img/header_border_dark.png
  2. BIN
      public/img/header_border_light.png
  3. BIN
      public/img/image10.png
  4. BIN
      public/img/img1.png
  5. BIN
      public/img/img11.png
  6. BIN
      public/img/img2.png
  7. BIN
      public/img/img3.png
  8. BIN
      public/img/img4.png
  9. BIN
      public/img/img5.png
  10. BIN
      public/img/img6.png
  11. BIN
      public/img/img7.png
  12. 6085
      src/assets/js/echarts-wordcloud.min.js
  13. 69
      src/components/companySummary/business.vue
  14. 91
      src/components/companySummary/talent.vue
  15. 80
      src/components/scrollArc/index.vue
  16. 144
      src/views/Brand.vue

BIN
public/img/header_border_dark.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

BIN
public/img/header_border_light.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/img/image10.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

BIN
public/img/img1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
public/img/img11.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
public/img/img2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 KiB

BIN
public/img/img3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
public/img/img4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
public/img/img5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
public/img/img6.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
public/img/img7.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

6085
src/assets/js/echarts-wordcloud.min.js

File diff suppressed because one or more lines are too long

69
src/components/companySummary/business.vue

@ -15,7 +15,7 @@ export default {
name: "business", name: "business",
data() { data() {
return { return {
} }
}, },
mounted() { mounted() {
@ -26,13 +26,13 @@ export default {
// //
let myChart = echarts.init(document.getElementById('chart_left1')); let myChart = echarts.init(document.getElementById('chart_left1'));
let charts = { // let charts = { //
cityList: ['金融行业', '电子政务', '文创版权', '教育行业', '智慧停车', '医疗互联', '物流行业'], cityList: ['金融行业', '电子政务', '文创版权', '教育行业', '智慧停车'],
cityData: [1500, 1200, 900, 600, 400, 300, 100] cityData: [1200, 900, 600, 400, 300, 100]
} }
let top10CityList = charts.cityList; let top10CityList = charts.cityList;
let top10CityData = charts.cityData; let top10CityData = charts.cityData;
let color = ['rgba(14,109,236', 'rgba(255,91,6', 'rgba(100,255,249', 'rgba(248,195,248', 'rgba(110,234,19', 'rgba(255,168,17', 'rgba(218,111,227']; let color = ['rgba(255,255,156', 'rgba(255,91,6', 'rgba(100,255,249', 'rgba(248,195,248', 'rgba(110,234,19', 'rgba(255,168,17', 'rgba(218,111,227'];
let lineY = []; let lineY = [];
for (let i = 0; i < charts.cityList.length; i++) { for (let i = 0; i < charts.cityList.length; i++) {
@ -64,7 +64,14 @@ export default {
} }
lineY.push(data) lineY.push(data)
} }
//
let arr = [];
for (var i = 0; i < lineY.length; i++) {
arr.push({
value: lineY[i].value,
symbolPosition: "end",
});
}
// //
let option = { let option = {
color: color, color: color,
@ -107,7 +114,7 @@ export default {
show: true, show: true,
inside: false, inside: false,
textStyle: { textStyle: {
color: '#b3ccf8', color: '#fff',
fontSize: 13 fontSize: 13
}, },
}, },
@ -124,7 +131,7 @@ export default {
show: true, show: true,
inside: false, inside: false,
textStyle: { textStyle: {
color: '#b3ccf8', color: '#fff',
fontSize: 13 fontSize: 13
}, },
formatter: (val) => { formatter: (val) => {
@ -139,27 +146,45 @@ export default {
}, },
data: top10CityData.reverse() data: top10CityData.reverse()
}], }],
series: [{
series: [
{
name: '', name: '',
type: 'bar', type: 'bar',
zlevel: 2, zlevel: 2,
barWidth: '10px', barWidth: '7px',
data: lineY, data: lineY,
showBackground: true,
animationDuration: 1500, animationDuration: 1500,
label: { label: {
normal: { position:'top',
color: '#b3ccf8', show: true,
show: false, formatter: function (params) {
position: [0, '-15px'], // console.log(params)
textStyle: { // return params.data.realValue;
fontSize: 13 var percent = Number((params.value / 1200) * 100).toFixed(2) + '%';
return percent;
},
color: '#fff',
fontSize: 12,
},
},
{
name: "XXX",
type: "pictorialBar",
symbol:
"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVQokaWSsUoDQRRFT7bQbsFE82OxtbM1SWevkM8TiY2Vf2DILpJNpsix2NllZ1eDxAMXhjvvvscwD5WOrtWVulb3Ua/qU7xra7uhmbr1d4pYkwRn6vFEqOHYhFFvYre/UqjTDHgAciIBWFQwKWFc1udAQg4siY9vWVTKNtVjNZi6Hql74LJpNylhYzpiPILPPLFCxnmEDHjvOncXw6r7ofeB9ee2HNT5Tq+KWvNd7fVYoU7P+Y5/LUCjW7U8ESr9YeX6S/6mBvVLfVGf7S35N3HsEHSsKx9TAAAAAElFTkSuQmCC",
symbolSize: [15, 15],
symbolOffset: [5, 0],
z: 3,
itemStyle: {
normal: {
color: "#0A74FF",
}, },
formatter: (a, b) => { },
return a.name; data: arr,
} },
} ]
}
}]
}; };
// //

91
src/components/companySummary/talent.vue

@ -5,8 +5,8 @@
--> -->
<template> <template>
<div class="talent-container"> <div class="talent-container">
<div class="chart" id="chart_left2"></div> <div class="chart" id="chart_left2"></div>
</div> </div>
</template> </template>
@ -15,7 +15,7 @@ export default {
name: "talent", name: "talent",
data() { data() {
return { return {
} }
}, },
mounted() { mounted() {
@ -24,25 +24,20 @@ export default {
methods: { methods: {
getEchartLeft2() { getEchartLeft2() {
let myChart = echarts.init(document.getElementById('chart_left2')); let myChart = echarts.init(document.getElementById('chart_left2'));
let scaleData = [{ let scaleData = [{
name: '博士', name: '博士',
value: 5 value: 100
},{ }, {
name: '硕士', name: '硕士',
value: 10 value: 100
},{ }, {
name: '本科', name: '本科',
value: 10 value: 100
},{ }, {
name: '专科', name: '专科',
value: 10 value: 100
},{ },];
name: '国防科大',
value: 5
},{
name: '大厂专家',
value: 5
}];
let rich = { let rich = {
white: { white: {
color: '#ddd', color: '#ddd',
@ -64,7 +59,7 @@ export default {
} }
}; };
let data = []; let data = [];
let color=['#00ffff', '#00cfff', '#006ced', '#ffe000', '#ffa800', '#ff5b00', '#ff3000'] let legendData = [];
for (let i = 0; i < scaleData.length; i++) { for (let i = 0; i < scaleData.length; i++) {
data.push({ data.push({
value: scaleData[i].value, value: scaleData[i].value,
@ -72,32 +67,49 @@ export default {
itemStyle: { itemStyle: {
normal: { normal: {
borderWidth: 6, borderWidth: 6,
shadowBlur: 10,
borderColor: color[i],
shadowColor: color[i]
} }
} }
}, {
value: 2,
name: '',
itemStyle: placeHolderStyle
}); });
legendData.push(scaleData[i].name);
} }
let option = { let option = {
series: [{ title: {
text: "总金额:69838.69元",
top: 20,
left:200,
textStyle:{
//
color:'#fff',
}
},
legend: {
right: 210,
orient: 'vertical',
top: 60,
bottom: 20,
data: legendData,
icon: "circle",
textStyle:{
//
color:'#fff',
}
},
series: [
{
name: '', name: '',
type: 'pie', type: 'pie',
clockWise: false, clockWise: false,
radius: ['66%', '68%'], radius: ['30%', '68%'],
center: ['50%', '50%'], center: ['20%', '50%'],
hoverAnimation: false, hoverAnimation: true,
itemStyle: { itemStyle: {
normal: { normal: {
label: { label: {
show: true, show: true,
position: 'outside', position: 'inside',
color: '#ddd', color: '#ffffff',
formatter: (params) => { formatter: (params) => {
let percent = 0; let percent = 0;
let total = 0; let total = 0;
@ -106,13 +118,22 @@ export default {
} }
percent = ((params.value / total) * 100).toFixed(0); percent = ((params.value / total) * 100).toFixed(0);
if (params.name !== '') { if (params.name !== '') {
return params.name + '\n{white|' + '占比' + percent + '%}'; // return params.name + '\n{white|' + '' + percent + '%}';
return percent + '%';
} else { } else {
return ''; return '';
} }
}, },
rich: rich rich: rich
}, },
// label: {
// //echarts
// show: true,
// position: "inside", //outside inside
// formatter: `{d}%`,
// color: "#ffffff", //
// fontSize: 12 //
// },
labelLine: { labelLine: {
length: 10, length: 10,
length2: 30, length2: 30,
@ -122,7 +143,9 @@ export default {
} }
}, },
data: data data: data
}] },
]
} }
myChart.setOption(option, true); myChart.setOption(option, true);
@ -132,7 +155,7 @@ export default {
}, },
}, },
beforeDestroy() { beforeDestroy() {
} }
}; };
</script> </script>

80
src/components/scrollArc/index.vue

@ -5,7 +5,7 @@
--> -->
<template> <template>
<div class="wrap-container sn-container"> <!-- <div class="wrap-container sn-container">
<div class="sn-content"> <div class="sn-content">
<div class="sn-title">滚动弧形线</div> <div class="sn-title">滚动弧形线</div>
<div class="sn-body"> <div class="sn-body">
@ -14,6 +14,9 @@
</div> </div>
</div> </div>
</div> </div>
</div> -->
<div class="income-container">
<div class="chart" id="chart_arc"></div>
</div> </div>
</template> </template>
@ -38,7 +41,7 @@ export default {
this.option = { this.option = {
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
showContent: false, showContent: true,
axisPointer: { axisPointer: {
type: 'shadow', type: 'shadow',
shadowStyle: { shadowStyle: {
@ -52,7 +55,14 @@ export default {
} }
}, },
}, },
color: ['#5d83ff'], legend: {
data: ['入场车流', '出场车流'],
textStyle:{
fontSize: 14,//
color: '#ffffff'//
},
},
color: ['#1BDB7F','#EF8C62'],
grid: { grid: {
top: 30, top: 30,
left: 20, left: 20,
@ -72,7 +82,7 @@ export default {
}, },
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#999', color: '#7790CA',
} }
}, },
}, },
@ -81,12 +91,13 @@ export default {
axisLine: { axisLine: {
show: false, show: false,
lineStyle: { lineStyle: {
color: '#999' color: '#7790CA'
} }
}, },
}, },
series: [{ series: [
name: '人数', {
name: '入场车流',
type: 'line', type: 'line',
data: this.data, data: this.data,
symbolSize: 10, symbolSize: 10,
@ -110,7 +121,7 @@ export default {
normal: { normal: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0, offset: 0,
color: '#5d83ff' color: '#1BDB7F'
},{ },{
offset: 1, offset: 1,
color: 'rgba(0, 0, 0, 0)' color: 'rgba(0, 0, 0, 0)'
@ -118,7 +129,31 @@ export default {
} }
}, },
smooth: true, smooth: true,
}] },
{
name: '出场车流',
type: 'line',
data: [5,10,20,30,40,50,60,70,80,90,100],
symbolSize: 10,
itemStyle: {
opacity: 0,
},
emphasis: {
label: {
show: true,
color: '#fff',
fontSize: 20
},
itemStyle: {
color: '#5d83ff',
borderColor: '#fff',
borderWidth: 2,
opacity: 1
},
},
smooth: true,
}
]
}; };
myChart.setOption(this.option, true); myChart.setOption(this.option, true);
@ -126,19 +161,19 @@ export default {
myChart.resize(); myChart.resize();
}); });
this.timer = setInterval(() => { // this.timer = setInterval(() => {
myChart.dispatchAction({ // myChart.dispatchAction({
type: 'showTip', // type: 'showTip',
seriesIndex: 0, // seriesIndex: 0,
dataIndex: this.number // dataIndex: this.number
}); // });
this.number++; // this.number++;
if (this.number > this.data.length) { // if (this.number > this.data.length) {
this.number = 0; // this.number = 0;
} // }
}, 1000); // }, 1000);
} }
}, },
beforeDestroy() { beforeDestroy() {
@ -148,6 +183,11 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.income-container {
.chart {
height: 3rem;
}
}
.sn-container { .sn-container {
left: 50px; left: 50px;
top: 690px; top: 690px;

144
src/views/Brand.vue

@ -19,19 +19,66 @@
<section class="mainbox"> <section class="mainbox">
<div class="item left"> <div class="item left">
<div class="panel"> <!-- <div class="panel">
<h2>业务范围</h2> <h2>业务范围</h2>
<business /> <business />
<div class="panel-footer"></div> <div class="panel-footer"></div>
</div> -->
<div class="left-top">
<div class="topBg">
今日收费TOP5
</div>
<table class="table">
<thead class="thead">
<td class="td">排行</td>
<td class="td">停车场名称</td>
<td class="td">收费金额</td>
</thead>
<tbody class="tbody">
<tr class="tr">
<td class="td"><img src="/img/img3.png" alt=""></td>
<td class="td">深圳宝安中心大厦</td>
<td class="td">6890.38</td>
</tr>
<tr class="tr">
<td class="td"><img src="/img/img4.png" alt=""></td>
<td class="td">深圳宝安中心大厦</td>
<td class="td">6890.38</td>
</tr>
<tr class="tr">
<td class="td"><img src="/img/img4.png" alt=""></td>
<td class="td">深圳宝安中心大厦</td>
<td class="td">6890.38</td>
</tr>
<tr class="tr">
<td class="td"><img src="/img/img4.png" alt=""></td>
<td class="td">深圳宝安中心大厦</td>
<td class="td">6890.38</td>
</tr>
<tr class="tr">
<td class="td"><img src="/img/img4.png" alt=""></td>
<td class="td">深圳宝安中心大厦</td>
<td class="td">6890.38</td>
</tr>
</tbody>
</table>
</div> </div>
<div class="panel">
<h2>人才队伍</h2>
<div class="left-top">
<div class="topBg">
支付统计
</div>
<talent /> <talent />
<div class="panel-footer"></div> <div class="panel-footer"></div>
</div> </div>
<div class="panel">
<h2>营收状况</h2>
<income /> <div class="left-top">
<div class="topBg">
收费车辆统计
</div>
<business />
<div class="panel-footer"></div> <div class="panel-footer"></div>
</div> </div>
</div> </div>
@ -68,11 +115,14 @@
</div> </div>
<div class="item right"> <div class="item right">
<div class="panel"> <div class="left-top">
<h2>产品热词</h2> <div class="topBg2">
<!-- <wordCloud /> --> 24小时车流统计
</div>
<scrollArc />
<div class="panel-footer"></div> <div class="panel-footer"></div>
</div> </div>
<div class="panel"> <div class="panel">
<h2>客户分布</h2> <h2>客户分布</h2>
<distribution /> <distribution />
@ -491,6 +541,82 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.topBg {
height: .7rem;
background: url(/img/img1.png) no-repeat;
background-size: contain;
display: flex;
align-items: center;
padding-left: .5rem;
color: #AECEFF;
font-size: .21rem;
}
.topBg2{
height: .7rem;
background: url(/img/img11.png) no-repeat;
background-size: contain;
display: flex;
align-items: center;
padding-left: .5rem;
color: #AECEFF;
font-size: .21rem;
}
.left-top {
height: 3.5rem;
position: relative;
background: url(/img/img2.png) no-repeat;
background-size: cover;
margin-bottom: .8rem;
}
.tbody .tr:nth-child(odd) {
background: #06184B;
}
//
.table {
width: 100%;
border-spacing: 0;
border-color: transparent;
.thead {
background: #061131;
width: 100%;
height: .7rem;
line-height: .7rem;
font-size: .2rem;
.td {
color: #6FA8FF;
text-align: center;
border: none;
font-size: .2rem;
}
}
.tbody {
.td {
color: #fff;
text-align: center;
border: none;
font-size: .14rem;
img {
width: .4rem;
display: block;
margin: 0 auto;
height: .4rem;
}
}
.tr {
height: .5rem;
line-height: .5rem;
}
}
}
.brand-container { .brand-container {
position: absolute; position: absolute;
width: 100%; width: 100%;

Loading…
Cancel
Save