Browse Source

交畅智汇,畅行瞭望台

master
ygs 4 months ago
parent
commit
a25f83397d
  1. 15375
      package-lock.json
  2. 24
      src/api/jczh.js
  3. BIN
      src/assets/img/bj.png
  4. BIN
      src/assets/img/bt.png
  5. BIN
      src/assets/img/btzd.png
  6. BIN
      src/assets/img/bxjy.png
  7. BIN
      src/assets/img/ckgd.png
  8. BIN
      src/assets/img/cxlwt.png
  9. BIN
      src/assets/img/gjzc.png
  10. BIN
      src/assets/img/hyxt.png
  11. BIN
      src/assets/img/jczh.png
  12. BIN
      src/assets/img/jwjd.png
  13. BIN
      src/assets/img/right-bottom.png
  14. BIN
      src/assets/img/rx.png
  15. BIN
      src/assets/img/rxs.png
  16. BIN
      src/assets/img/sjzc.png
  17. BIN
      src/assets/img/ssjh.png
  18. BIN
      src/assets/img/stlj.png
  19. BIN
      src/assets/img/tjzxx.png
  20. BIN
      src/assets/img/wlyq.png
  21. BIN
      src/assets/img/yjlh.png
  22. BIN
      src/assets/img/ywzy.png
  23. BIN
      src/assets/img/zcdc.png
  24. BIN
      src/assets/liaowangtai/ditu@1x.png
  25. BIN
      src/assets/liaowangtai/title@1x.png
  26. BIN
      src/assets/liaowangtai/交通专栏.png
  27. BIN
      src/assets/liaowangtai/交通执法.png
  28. BIN
      src/assets/liaowangtai/交通科技.png
  29. BIN
      src/assets/liaowangtai/交通运输.png
  30. BIN
      src/assets/liaowangtai/今日事件@1x.png
  31. BIN
      src/assets/liaowangtai/执法案件数量.png
  32. BIN
      src/assets/liaowangtai/行政许可审批.png
  33. 12
      src/router/index.js
  34. 781
      src/views/jxzt/Jczh.vue
  35. 51
      src/views/liaowangtai/BarChart.vue
  36. 290
      src/views/liaowangtai/Index.vue
  37. 63
      src/views/liaowangtai/LineChart.vue
  38. 131
      src/views/liaowangtai/LineChart2.vue
  39. 64
      src/views/liaowangtai/PieChart copy.vue
  40. 105
      src/views/liaowangtai/PieChart.vue

15375
package-lock.json

File diff suppressed because it is too large

24
src/api/jczh.js

@ -0,0 +1,24 @@
import * as echarts from "echarts";
/** 获取echart实例 */
export const getEchartInstance = (domId)=>{
const dom = document.getElementById(domId); // 绘制图表 // setOption方法设置图表实例的配置项 以及数据 所有参数和数据的修改都可以通过 setOption 完成,ECharts 会合并新的参数和数据,然后刷新图表。
let myChart = echarts.getInstanceByDom(dom);
if (myChart == null) {
myChart = echarts.init(dom);
}else {
myChart.clear()
}
return myChart
}
export const getCommonData = (reqBusiFlagId,paramsObj) => {
return jwtServerInstance.request({
url:'/system/sql/common',
method:'post',
data:{
reqBusiFlagId,
paramsObj
}
})
}

BIN
src/assets/img/bj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

BIN
src/assets/img/bt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
src/assets/img/btzd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/assets/img/bxjy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

BIN
src/assets/img/ckgd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/assets/img/cxlwt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
src/assets/img/gjzc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
src/assets/img/hyxt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

BIN
src/assets/img/jczh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
src/assets/img/jwjd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
src/assets/img/right-bottom.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
src/assets/img/rx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
src/assets/img/rxs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
src/assets/img/sjzc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/assets/img/ssjh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
src/assets/img/stlj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
src/assets/img/tjzxx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/assets/img/wlyq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
src/assets/img/yjlh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
src/assets/img/ywzy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/img/zcdc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
src/assets/liaowangtai/ditu@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
src/assets/liaowangtai/title@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
src/assets/liaowangtai/交通专栏.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

BIN
src/assets/liaowangtai/交通执法.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
src/assets/liaowangtai/交通科技.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

BIN
src/assets/liaowangtai/交通运输.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

BIN
src/assets/liaowangtai/今日事件@1x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
src/assets/liaowangtai/执法案件数量.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
src/assets/liaowangtai/行政许可审批.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

12
src/router/index.js

@ -17,7 +17,17 @@ const routes = [
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
},
{
path: '/jczh',
name: 'Jczh',
component: () => import(/* webpackChunkName: "about" */ '../views/jxzt/Jczh.vue')
},
{
path: '/liaowangtai/index',
name: 'liaowangtai',
component: () => import(/* webpackChunkName: "about" */ '../views/liaowangtai/Index.vue')
},
]
const router = new VueRouter({

781
src/views/jxzt/Jczh.vue

@ -0,0 +1,781 @@
<template>
<div class="all">
<!--左侧-->
<div class="left-all">
<div class="left-all-wai"><!--外层-->
<div class="left-title"></div>
<div class="left-conent"><!--内容-->
<div class="left-title-gjzc">
<!-- 国家政策 -->
<div style="width: 100%; height: 10%; float:left; margin:3% 0 3% 0">
<div style="Position: fixed;" class="left-guoJzc"></div>
<div style="margin-top: -3%;" class="ckgd"></div>
</div>
<div v-for="(item,index) in left1Data" style="width: 100%;top:50px;">
<div style="width: 50%; float:left;">
<div style="font-size: 10px; font-weight:bold; text-align: center; letter-spacing: 0.04em;">
{{ item.name }}
</div>
<div style="font-size: 8px; font-weight: normal; letter-spacing: 0.04em;">{{ item.time }}</div>
<div class="left-content-detail">
{{ item.content != null ? item.content : "" }}
</div>
</div>
</div>
</div>
<div class="left-title-gjzc">
<!-- 省级政策 -->
<div style="width: 100%; height: 10%; float:left; margin:3% 0 3% 0">
<div style="Position: fixed;" class="left-sJzc"></div>
<div style="margin-top: -3%;" class="ckgd"></div>
</div>
<div v-for="(item,index) in left2Data" style="width: 100%;top:50px;">
<div style="width: 50%; float:left;">
<div style="font-size: 10px; font-weight:bold; text-align: center; letter-spacing: 0.04em;">
{{ item.name }}
</div>
<div style="font-size: 8px; font-weight: normal; letter-spacing: 0.04em;">{{ item.time }}</div>
<div class="left-content-detail">
{{ item.content != null ? item.content : "" }}
</div>
</div>
</div>
</div>
<div class="left-title-gjzc">
<!-- 本厅政策 -->
<div style="width: 100%; height: 10%; float:left; margin:3% 0 3% 0">
<div style="Position: fixed;" class="left-benTzd"></div>
<div style="margin-top: -3%;" class="ckgd"></div>
</div>
<div v-for="(item,index) in left3Data" style="width: 100%;top:50px;">
<div style="width: 50%; float:left;">
<div style="font-size: 10px; font-weight:bold; text-align: center; letter-spacing: 0.04em;">
{{ item.name }}
</div>
<div style="font-size: 8px; font-weight: normal; letter-spacing: 0.04em;">{{ item.time }}</div>
<div class="left-content-detail">
{{ item.content != null ? item.content : "" }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--中间-->
<div class=" " style="width: 30%; height: 100%; float:left; margin-left: 2%; margin-right:2%;">
<div style="width: 100%; height: 100%; float:left;">
<div class="center-content"></div>
<div id="conterChart" style="width: 100%; height: 50%;"></div>
<div
style="width: 100%; height: 35%;background: linear-gradient(0deg, rgba(32, 49, 65, 0.7) 0%, rgba(32, 49, 65, 0) 100%);box-sizing: border-box;border: 1px solid;border-image: linear-gradient(0deg, #52A5E7 0%, rgba(82, 165, 231, 0) 100%) 2;">
<div style="width: 100%; height: 10%; float:left; margin:3% 0 3% 0">
<div class="left-yeWzy"></div>
<div style="margin-top: -4%;" class="ckgd"></div>
</div>
<div style="width: 100%; height: 80%;">
<div>
<div class=" ">
<span class=" ">省政府</span>
<span class=" ">市场监督管理局</span>
<span class=" ">省公安厅</span>
</div>
</div>
</div>
</div>
<div class="z-file">
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/cxlwt.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">畅行瞭望台</div>
</div>
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/ssjh.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">三省交辉</div>
</div>
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/stlj.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">省途亮绩</div>
</div>
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/jczh.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">交畅智汇</div>
</div>
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/yjlh.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">应急领航</div>
</div>
<div class="z-file-t">
<div class="z-file-ts"><img style="width: 100%;height: 100%" src="../../assets/img/jwjd.png"></div>
<div style="float: left;width: 100%;height: 20%; font-size: 8px;">吉问吉答</div>
</div>
</div>
</div>
</div>
<!--右侧-->
<div style="width: 32%; height: 100%; float:left; margin-right: 1%">
<div style="width: 100%; height: 100%; float:left;">
<div class="right-content"></div>
<div class="right-echarts">
<div class="right-echarts-child">
<div style="width:100%; height: 10%; margin-top:5%;"><img style="width:100%;" src="../../assets/img/rx.png"></div>
<div id="right1Chart" style="width:100%; height: 75%"></div>
<div style="width:100%; height: 10%"><img style="width:100%;" src="../../assets/img/right-bottom.png"></div>
</div>
<div class="right-echarts-child">
<div style="width:100%; height: 10%; margin-top:5%;"><img style="width:100%;" src="../../assets/img/rxs.png"></div>
<div id="right2Chart" style="width:100%; height: 75%"></div>
<div style="width:100%; height: 10%"><img style="width:100%;" src="../../assets/img/right-bottom.png"></div>
</div>
</div>
<div class="right-echarts">
<div class="right-echarts-child">
<div style="width:100%; height: 10%; margin-top:5%;"><img style="width:100%;" src="../../assets/img/tjzxx.png"></div>
<div id="right3Chart" style="width:100%; height: 75%"></div>
<div style="width:100%; height: 10%"><img style="width:100%;" src="../../assets/img/right-bottom.png"></div>
</div>
<div class="right-echarts-child">
<div style="width:100%; height: 10%; margin-top:5%;"><img style="width:100%;" src="../../assets/img/wlyq.png"></div>
<div id="right4Chart" style="width:100%; height: 75%"></div>
<div style="width:100%; height: 10%"><img style="width:100%;" src="../../assets/img/right-bottom.png"></div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import {getEchartInstance} from "@/api/jczh";
export default {
name: "drain",
components: {getEchartInstance},
data() {
return {
left1Data: [
{
name: '四好农村路',
time: '2024-06-20',
content: ' 一是全力以赴保通保畅,服务经济社会发展大局。二是努力扩大有效投资,加快建设现代化交通基础设施体系。三是积极推动交通物流降本提质增效,大力发展现代运输服务业。四是进一步全面深化交通运输改革,加强法治建设,优化营商环境。五是加大科技创新力度,推进交通运输智慧绿色发展。六是服务大局、服务基层、服务人民,有力保障城乡融合和区域协调发展。七是积极服务共建“一带一路”高质量发展,持续推动全球交通合作。八是点面结合加强试点,做好加快建设交通强国各项具体工作。九是全力抓好交通运输安全生产工作,牢牢守住安全生产底线。十是加强党的全面领导,加强党的建设,深化党风廉政建设和反腐败斗争。'
},
{
name: '2024年交通运输工作重点',
time: '2023-12-21',
content: ' 一是全力以赴保通保畅,服务经济社会发展大局。二是努力扩大有效投资,加快建设现代化交通基础设施体系。三是积极推动交通物流降本提质增效,大力发展现代运输服务业。四是进一步全面深化交通运输改革,加强法治建设,优化营商环境。五是加大科技创新力度,推进交通运输智慧绿色发展。六是服务大局、服务基层、服务人民,有力保障城乡融合和区域协调发展。七是积极服务共建“一带一路”高质量发展,持续推动全球交通合作。八是点面结合加强试点,做好加快建设交通强国各项具体工作。九是全力抓好交通运输安全生产工作,牢牢守住安全生产底线。十是加强党的全面领导,加强党的建设,深化党风廉政建设和反腐败斗争。'
},
],
left2Data: [
{
name: '省交通运输厅省财政厅省发展和改革委员会关于对氢能车辆行驶吉林省高速公路实施优惠的通知',
time: '2024-08-12',
content: ' 2024年9月1日0时至2026年8月31日24时,安装ETC套装设备的吉林省籍氢能车辆,在吉林省各高速公路收费站间点对点免费通行,相应的高速公路通行费由省财政统一支付。'
},
{
name: '省交通运输厅与辽宁省交通运输厅签订《国家区域性公路交通应急管理协同联动战略合作框架协议》',
time: '2024-06-28',
content: ' 为响应《东北“三省一区”协同推进交通运输高质量发展行动倡议》,近日,省交通运输厅与辽宁省交通运输厅签订了《国家区域性公路交通应急管理协同联动战略合作框架协议》,旨在切实加强吉林、辽宁交通运输应急处置联动协作,实现互联互通,进一步提高跨区域应急救援协同处置能力,推动交通运输高质量发展。'
},
],
left3Data: [
{
name: '平安交通',
time: '2024-08-19',
content: ' 根据《交通运输部关于印发交通运输系统“平安交通”创建活动实施方案的通知》(交安监发〔2013〕116号)部署,交通运输系统开展了为期5年的“平安交通”创建活动。目前,“平安交通”建设已进入关键阶段,各部门、各单位要结合安全生产责任体系、隐患排查治理、风险管理、安全诚信、企业标准化等工作,坚持问题导向、目标导向,聚焦重点领域,全面推进“平安交通”建设。\n'
},
{
name: '交通运输惠企政策',
time: '2024-04-23',
content: ' 根据《交通运输部关于印发交通运输系统“平安交通”创建活动实施方案的通知》(交安监发〔2013〕116号)部署,交通运输系统开展了为期5年的“平安交通”创建活动。目前,“平安交通”建设已进入关键阶段,各部门、各单位要结合安全生产责任体系、隐患排查治理、风险管理、安全诚信、企业标准化等工作,坚持问题导向、目标导向,聚焦重点领域,全面推进“平安交通”建设。\n'
},
],
right1Chart: [
{value: 1048, name: '已处理'},
{value: 735, name: '未处理'},
],
right2Chart: [
{value: 1048, name: '已处理'},
{value: 735, name: '未处理'},
],
right3Chart: [
{value: 1048, name: '已处理回复'},
{value: 735, name: '未处理'},
],
right4Chart: [
{value: 1048, name: '已处理回复'},
{value: 735, name: '未处理'},
],
}
},
created() {
//
},
mounted() {
//
this.initData();
},
methods: {
//
initData() {
this.conterChart();
this.rightOneChart();
this.rightTwoChart();
this.rightThreeChart();
this.rightFourChart();
},
conterChart() {
let myChart = getEchartInstance("conterChart");
let option = {
title: {
text: '件',
textStyle:{
// color:'#ccc',//'red'
// fontStyle:'normal',//'italic'() | 'oblique'()
// fontWeight:'normal',//'bold'() | 'bolder'() | 'lighter'()
fontSize:14,//
lineHeight:18,//
},
textAlign:'auto',// text subtext
textVerticalAlign:'auto',// text subtext
padding:0,//[5,10] | [ 5,6, 7, 8] ,
left:'auto',//'5' | '5%'title
right:'auto',//'title
top:'auto',//title
bottom:'auto',//title
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['省政府', '市场监督管理局', '省公安厅']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
toolbox: {
feature: {
// saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
},
yAxis: {
splitLine:{
show:true,
lineStyle:{
type:'dashed'//Y线
}
},
type: 'value'
},
series: [
{
name: '省政府',
type: 'line',
// stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410, 201, 154, 190, 330, 410]
},
{
name: '市场监督管理局',
type: 'line',
// stack: 'Total',
data: [320, 332, 301, 334, 390, 330, 320, 201, 154, 190, 330, 210]
},
{
name: '省公安厅',
type: 'line',
// stack: 'Total',
data: [120, 132, 101, 134, 190, 130, 130, 101, 154, 190, 130, 140]
}
]
};
option && myChart.setOption(option);
},
rightOneChart() {
let myChart = getEchartInstance("right1Chart");
let data = [
{
name: "已处理",
value: 156
},
{
name: "未处理",
value: 231
},
];
let option = {
//
// title: {
// text: "",
// textStyle: {
// fontSize: 12,
// color: "rgba(0,0,0,0.65)",
// fontWeight: 400
// },
// subtextStyle: {
// fontSize: 20,
// color: "#000000",
// fontWeight: 500
// },
// textAlign: "center", //
// x: "45%", //
// y: "40%" //
// },
//
color: ["#2BCB95", "#F6BD16"],
//
tooltip: {
trigger: 'item'
},
//
legend: {
// orient: "vertical", //
// right: "10%",
// align: "left",
// itemGap: 20, //
// icon: "circle", //
itemWidth: 15, //
// data: data,
// top:'5%',
bottom: '0%',
left: 'center'
},
series: [
{
name: '12345热线',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: data
}
]
};
option && myChart.setOption(option);
},
rightTwoChart() {
let myChart = getEchartInstance("right2Chart");
let data = [
{
name: "已处理",
value: 456
},
{
name: "未处理",
value: 231
},
];
let option = {
//
// title: {
// text: "",
// textStyle: {
// fontSize: 12,
// color: "rgba(0,0,0,0.65)",
// fontWeight: 400
// },
// subtextStyle: {
// fontSize: 20,
// color: "#000000",
// fontWeight: 500
// },
// textAlign: "center", //
// x: "45%", //
// y: "40%" //
// },
//
color: ["#F6BD16", "#FF3B30"],
//
tooltip: {
trigger: 'item',
// formatter: "{b}<br/> {c} ({d}%)"
},
//
legend: {
// orient: "vertical", //
// right: "10%",
// align: "left",
// itemGap: 20, //
// icon: "circle", //
itemWidth: 15, //
// data: data,
// top:'5%',
bottom: '0%',
left: 'center'
},
series: [
{
name: '12328热线',
radius: ["50%", "70%"], //
// center: ["40%", "50%"], //
type: 'pie',
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: data
}
]
};
option && myChart.setOption(option);
},
rightThreeChart() {
let myChart = getEchartInstance("right3Chart");
let data = [
{
name: "已处理回复",
value: 456
},
{
name: "未处理",
value: 231
},
];
let option = {
//
// title: {
// text: "",
// textStyle: {
// fontSize: 12,
// color: "rgba(0,0,0,0.65)",
// fontWeight: 400
// },
// subtextStyle: {
// fontSize: 20,
// color: "#000000",
// fontWeight: 500
// },
// textAlign: "center", //
// x: "45%", //
// y: "40%" //
// },
//
color: ["#365ADF", "#F6BD16"],
tooltip: {
trigger: 'item'
},
//
legend: {
// orient: "vertical", //
// right: "10%",
// align: "left",
// itemGap: 20, //
// icon: "circle", //
itemWidth: 15, //
// data: data,
// top:'5%',
bottom: '0%',
left: 'center'
},
series: [
{
name: '局厅长信箱',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: data
}
]
};
option && myChart.setOption(option);
},
rightFourChart() {
let myChart = getEchartInstance("right4Chart");
let data = [
{
name: "已处理回复",
value: 456
},
{
name: "未处理",
value: 231
},
];
let option = {
//
// title: {
// text: "",
// textStyle: {
// fontSize: 12,
// color: "rgba(0,0,0,0.65)",
// fontWeight: 400
// },
// subtextStyle: {
// fontSize: 20,
// color: "#000000",
// fontWeight: 500
// },
// textAlign: "center", //
// x: "45%", //
// y: "40%" //
// },
//
color: ["#FD3F3F","#365ADF"],
tooltip: {
trigger: 'item'
},
//
legend: {
// orient: "vertical", //
// right: "10%",
// align: "left",
// itemGap: 20, //
// icon: "circle", //
itemWidth: 15, //
// data: data,
// top:'5%',
bottom: '0%',
left: 'center'
},
series: [
{
name: '网络舆情',
type: 'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 20,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: data
}
]
};
option && myChart.setOption(option);
},
//
toBigScreen(url) {
if (!url) {
return;
}
this.$router.push(`/bigScreen/${url}`)
},
}
}
</script>
<style scoped>
.all {
width: 100%;
height: calc(100vh - 80px);
color: #FFFFFF;
background-image: url('../../assets/img/bj.png');
background-repeat: no-repeat;
background-size: 100% 100%;
padding-top: 5%;
}
.left-all {
width: 32%;
height: 100%;
float: left;
margin-left: 1%;
}
.left-all-wai {
width: 100%;
height: 100%;
float: left;
}
.left-title {
width: 100%;
height: 5%;
background-image: url('../../assets/img/zcdc.png');
background-repeat: no-repeat;
background-size: 100% 100%;
}
.left-conent {
width: 100%;
height: 95%;
float: left;
}
.left-title-gjzc {
width: 100%;
height: 33%;
float: left;
background: linear-gradient(0deg, rgba(32, 49, 65, 0.7) 0%, rgba(32, 49, 65, 0) 100%);
box-sizing: border-box;
border: 1px solid;
border-image: linear-gradient(0deg, #52A5E7 0%, rgba(82, 165, 231, 0) 100%) 2;
}
.left-guoJzc {
width: 100%;
height: 100%;
margin-left: 30%;
background-image: url('../../assets/img/gjzc.png');
background-repeat: no-repeat;
background-size: 40% 100%;
}
.left-sJzc {
width: 100%;
height: 100%;
margin-left: 30%;
background-image: url('../../assets/img/sjzc.png');
background-repeat: no-repeat;
background-size: 40% 100%;
}
.left-benTzd {
width: 100%;
height: 100%;
margin-left: 30%;
background-image: url('../../assets/img/btzd.png');
background-repeat: no-repeat;
background-size: 40% 100%;
}
.left-yeWzy {
width: 100%;
height: 100%;
background-image: url('../../assets/img/ywzy.png');
background-repeat: no-repeat;
background-size: 20% 80%;
}
.left-content-detail {
margin-left: 2%;
font-size: 8px;
color: #84ACE8;
letter-spacing: 0em;
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
//-webkit-line-clamp: 4; //line-clamp: 12; -webkit-box-orient: vertical;
}
.ckgd {
width: 10%;
height: 50%;
float: right;
margin-right: 2%;
background-image: url('../../assets/img/ckgd.png');
background-repeat: no-repeat;
background-size: 100% 80%;
}
.center-content {
width: 100%;
height: 5%;
background-image: url('../../assets/img/hyxt.png');
background-repeat: no-repeat;
background-size: 100% 100%;
font-size: 18px;
}
.right-content {
width: 100%;
height: 5%;
background-image: url('../../assets/img/bxjy.png');
background-repeat: no-repeat;
background-size: 100% 100%;
font-size: 18px;
}
.right-echarts {
float: left;
width: 100%;
height: 47%;
}
.right-echarts-child {
width: 46%;
height: 100%;
margin-left: 2%;
float: left;
}
.z-file {
width: 100%;
height: 10%;
margin-bottom: 0px;
}
.z-file-t {
float: left;
width: 16%;
height: 100%;
}
.z-file-ts {
float: left;
width: 100%;
height: 70%;
}
</style>

51
src/views/liaowangtai/BarChart.vue

@ -0,0 +1,51 @@
<template>
<div id="main" class="echart-style">
</div>
</template>
<script setup lang="ts">
import * as echarts from 'echarts';
import { onMounted, ref } from 'vue';
let myChart = ref()
let option = ref({})
// let data = ref<any>([
// [15, 0],
// [-50, 10],
// [-56.5, 20],
// [-46.5, 30],
// [-22.1, 40]
// ])
onMounted(() => {
init()
})
const init = () => {
// domecharts
myChart.value = echarts.init(document.getElementById('main'));
option.value = {
legend: {},
tooltip: {},
dataset: {
source: [
// ['product', '2015', '2016', '2017'],
['Matcha Latte', 43.3, 85.8, 93.7],
['Milk Tea', 83.1, 73.4, 55.1],
['Cheese Cocoa', 86.4, 65.2, 82.5],
['Walnut Brownie', 72.4, 53.9, 39.1]
]
},
xAxis: { type: 'category' },
yAxis: {},
series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
};
myChart.value.setOption(option.value)
};
</script>
<style scoped>
.echart-style {
width: 350px;
height: 200px;
left: 10px;
background: none;
}
</style>

290
src/views/liaowangtai/Index.vue

@ -0,0 +1,290 @@
<template>
<div class="app">
<div class="time">
<!-- <img :src="timeImage" alt="Local Image" class="time2"> -->
<h6 style="color: white;">{{ datetimeStr }}</h6>
</div>
<div class="image-container">
<img :src="titleImage" alt="First Image" class="background-image">
<img :src="jrsjImage" alt="Second Image" class="overlay-image">
</div>
<div class="container left1">
<div class="leftwenzi">交通运输{{ transportationEvents }}</div>
<div class="rightwenzi">行政许可审批{{ approvalEvents }}</div>
<div class="leftwenzi">交通执法{{ lawEnforcementEvents }}</div>
<div class="rightwenzi">交通科技{{ trafficTechEvents }}</div>
</div>
<img :src="jtysImage" alt="Local Image" class="jtys">
<div class="left2" >
<p style="font-size: xx-small;left: 0px;text-align: left;"><span style="color: white;">公路客运 </span>公路货运 水路运输 城市交通</p>
<!-- <div style="font-size: x-small;" v-for="(tab, index) in tabs" :key="index" :class="{ 'active': activeIndex === index }" @click="activeIndex = index"> -->
<!-- {{ tab.title }} -->
<!-- </div> -->
<!-- <div v-for="(tabContent, index) in tabContents" :key="index" v-show="activeIndex === index"> -->
<!-- {{ tabContent }} -->
<bar-chart :data="chartData" />
<!-- </div> -->
</div>
<img :src="xzspxkImage" alt="Local Image" class="xzspxk">
<div class="left3" style="color: white;">
<PieChart />
</div>
<img :src="dituImage" alt="Local Image" class="ditu">
<img :src="jtzfImage" alt="Local Image" class="jtzf">
<img :src="zfajslImage" alt="Local Image" class="zfajsl">
<img :src="jtkjImage" alt="Local Image" class="jtkj">
<div class="right1" style="color: white;">
<div style="height: 210px;text-align: center;">
<LineChart />
</div>
<div style="height: 210px;">
<LineChart2 />
</div>
</div>
</div>
</template>
<script>
import BarChart from './BarChart.vue';
import PieChart from './PieChart.vue';
import LineChart from './LineChart.vue';
import LineChart2 from './LineChart2.vue';
export default {
components: {
BarChart,
PieChart,
LineChart,
LineChart2
},
data() {
return {
jtysImage: require('/src/assets/liaowangtai/交通运输.png'),
jrsjImage: require('/src/assets/liaowangtai/今日事件@1x.png'),
titleImage: require('/src/assets/liaowangtai/title@1x.png'),
xzspxkImage: require('/src/assets/liaowangtai/行政许可审批.png'),
dituImage: require('/src/assets/liaowangtai/ditu@1x.png'),
jtzfImage: require('/src/assets/liaowangtai/交通执法.png'),
jtkjImage: require('/src/assets/liaowangtai/交通科技.png'),
zfajslImage: require('/src/assets/liaowangtai/执法案件数量.png'),
transportationEvents: 1563,
approvalEvents: 535,
lawEnforcementEvents: 565,
trafficTechEvents: 265,
activeIndex: 0,
tabs: [
{ title: '公路客运' },
{ title: '公路货运' },
{ title: '水路运输' },
{ title: '城市交通' }
],
tabContents: [
'<bar-chart :data="chartData" />',
'Content for Tab 2',
'Content for Tab 3'
]
};
},
mounted() {
this.updateDateTime();
this.formatDate = setInterval(() => {
this.updateDateTime();
}, 1000);
},
unmounted() { // Vue
if (this.formatDate) {
clearInterval(this.formatDate);
}
},
methods: {
updateDateTime() { //
const now = new Date();
const year = now.getFullYear();
let month = now.getMonth() + 1;
let day = now.getDate();
const weekday = now.getDay();
let hours = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();
//
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
//
const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
//
this.datetimeStr = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
}
}
};
</script>
<style>
.active {
font-weight: bold;
}
.title1 {
position: absolute;
left: 40px;
top: 70px;
width: 30%;
opacity: 1;
}
.jtys {
position: absolute;
left: 40px;
top: 200px;
width: 30%;
opacity: 1;
}
.ditu {
position: relative;
left: 0;
top: -200px;
width: 90%;
opacity: 1;
padding-top: 5%;
}
.xzspxk {
position: absolute;
left: 40px;
top: 440px;
width: 30%;
opacity: 1;
}
.tab-item {
padding: 10px 20px;
cursor: pointer;
user-select: none; /* 禁止用户选择文本 */
text-align: center;
border-bottom: 2px solid transparent;
transition: border-color 0.3s, background-color 0.3s;
}
.jtzf {
position: absolute;
right: 0px;
top: 60px;
width: 30%;
opacity: 1;
}
.zfajsl {
position: absolute;
right: 0px;
top: 90px;
width: 10%;
opacity: 1;
}
.jtkj {
position: absolute;
right: 0px;
top: 470px;
width: 30%;
opacity: 1;
}
.right1 {
position: absolute;
right: 0px;
top: 8%;
width: 30%;
height: 15%;
opacity: 1;
}
.left1 {
position: absolute;
left: 40px;
top: 110px;
width: 30%;
height: 12%;
opacity: 1;
}
.left2 {
position: absolute;
left: 40px;
top: 240px;
width: 30%;
height: 30%;
opacity: 1;
}
.left3 {
position: absolute;
left: 40px;
top: 480px;
width: 30%;
height: 30%;
opacity: 1;
}
.image-container {
position: relative;
left: 40px;
top: -30px;
width: 30%;
}
.background-image {
width: 100%;
height: 100%;
display: block;
}
.overlay-image {
position: absolute;
top: 0;
left: 55px;
width: 27%; /* 可以根据需要调整 */
height: 100%; /* 可以根据需要调整 */
pointer-events: none; /* 防止覆盖层干扰点击事件 */
}
.app {
background-image: url('../../assets/img/bj.png'); /* 假设背景图在 src/assets 目录下 */
width: 100%;
height: calc(100vh - 80px);
color: #FFFFFF;
background-repeat: no-repeat;
background-size: 100% 100%;
padding-top: 5%;
}
.time {
position: absolute;
left: 1338px;
top: 16px;
width: 130px;
height: 40px;
opacity: 1;
/* 自动布局 */
display: flex;
flex-direction: row;
padding: 0px;
gap: 48px;
}
.time2 {
position: static;
left: 0px;
top: 12px;
width: 15.73%;
height: 63.64%;
opacity: 1;
/* background: #F4F4F4; */
box-shadow: 0px 0px 24px 0px #637AAA;
z-index: 0;
}
.echart-style {
width: 1000px;
height: 900px;
background: skyblue;
}
.container {
display: grid;
grid-template-columns: auto 1fr; /* 左侧自动宽度,右侧占据剩余空间 */
align-items: center; /* 垂直居中(可选) */
}
.lefwenzi, .rightwenzi {
/* 你可以根据需要添加额外的样式 */
}
</style>

63
src/views/liaowangtai/LineChart.vue

@ -0,0 +1,63 @@
<template>
<div>
<!-- ECharts 容器 -->
<div ref="chart" style="width: 350px; height: 200px;"></div>
</div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'LineChart',
data() {
return {
chartInstance: null, // ECharts
};
},
mounted() {
this.initChart();
},
methods: {
initChart() {
// DOM
const chartDom = this.$refs.chart;
// ECharts
this.chartInstance = echarts.init(chartDom);
//
this.chartInstance.setOption({
title: {
text: '执法案件数量', //
},
tooltip: {
trigger: 'axis', // 'axis'
},
xAxis: {
type: 'category', // 'category'
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], //
},
yAxis: {
type: 'value', // 'value'
},
series: [
{
name: '销量', // tooltiplegend
type: 'line', //
data: [120, 200, 150, 80, 70, 110, 130], //
},
],
});
},
},
beforeDestroy() {
// ECharts
if (this.chartInstance) {
this.chartInstance.dispose();
}
},
};
</script>
<style scoped>
/* 样式可以根据需要自定义 */
</style>

131
src/views/liaowangtai/LineChart2.vue

@ -0,0 +1,131 @@
<template>
<div ref="chart" style="width: 350px; height: 200px;"></div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'SalesChart',
data() {
return {
chart: null,
};
},
mounted() {
this.initChart();
},
methods: {
initChart() {
// domecharts
this.chart = echarts.init(this.$refs.chart);
//
const option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
feature: {
dataView: { show: true, readOnly: false },
magicType: { show: true, type: ['line', 'bar'] },
restore: { show: true },
saveAsImage: { show: true }
}
},
legend: {
data: ['Evaporation', 'Temperature']
},
xAxis: [
{
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: 'Precipitation',
min: 0,
max: 250,
interval: 50,
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: 'Temperature',
min: 0,
max: 25,
interval: 5,
axisLabel: {
formatter: '{value} °C'
}
}
],
series: [
{
name: 'Evaporation',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' ml';
}
},
data: [
2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
]
},
// {
// name: 'Precipitation',
// type: 'bar',
// tooltip: {
// valueFormatter: function (value) {
// return value + ' ml';
// }
// },
// data: [
// 2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
// ]
// },
{
name: 'Temperature',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + ' °C';
}
},
data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]
};
// 使
this.chart.setOption(option);
},
},
beforeDestroy() {
if (this.chart) {
//
this.chart.dispose();
}
},
};
</script>
<style scoped>
/* 根据需要添加样式 */
</style>

64
src/views/liaowangtai/PieChart copy.vue

@ -0,0 +1,64 @@
<template>
<div ref="chart" style="width: 350px; height: 400px;"></div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'PieChart',
data() {
return {
chart: null,
options: {
title: {
text: '许可证类型分布',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: '许可证数量',
type: 'pie',
radius: '50%',
data: [
{ value: 1764, name: '公路建设项目施工许可' },
{ value: 200, name: '公路超限运输许可' }, //
{ value: 120, name: '公路水运工程建设项目设计文件审批' }, //
{ value: 80, name: '水上水下活动许可' }, //
{ value: 60, name: '通航水域岸线安全使用许可' }, //
{ value: 41, name: '公路养护作业单位资质审批' } //
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}
};
},
mounted() {
this.chart = echarts.init(this.$refs.chart);
this.chart.setOption(this.options);
},
beforeDestroy() {
if (this.chart) {
this.chart.dispose();
}
}
};
</script>
<style scoped>
/* 你可以在这里添加一些样式来调整图表的外观 */
</style>

105
src/views/liaowangtai/PieChart.vue

@ -0,0 +1,105 @@
<template>
<div ref="chart" style="width: 350px; height: 200px;"></div>
</template>
<script>
import * as echarts from 'echarts';
export default {
name: 'PieChart',
data() {
return {
chart: null,
};
},
mounted() {
this.initChart();
},
methods: {
initChart() {
// domecharts
this.chart = echarts.init(this.$refs.chart);
//
const option = {
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
left: 'center'
},
series: [
// {
// name: '',
// type: 'pie',
// radius: '50%',
// data: [
// { value: 1764, name: '' },
// { value: 200, name: '' }, //
// { value: 120, name: '' }, //
// { value: 80, name: '' }, //
// { value: 60, name: '线使' }, //
// { value: 41, name: '' } //
// ],
// emphasis: {
// itemStyle: {
// shadowBlur: 10,
// shadowOffsetX: 0,
// shadowColor: 'rgba(0, 0, 0, 0.5)'
// }
// }
// }
{
name: '公路建设项目施工许可',
type: 'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
itemStyle: {
borderRadius: 10,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: 40,
fontWeight: 'bold'
}
},
labelLine: {
show: false
},
data: [
{ value: 1764, name: '公路建设项目施工许可' },
{ value: 200, name: '公路超限运输许可' }, //
{ value: 120, name: '公路水运工程建设项目设计文件审批' }, //
{ value: 80, name: '水上水下活动许可' }, //
{ value: 60, name: '通航水域岸线安全使用许可' }, //
{ value: 41, name: '公路养护作业单位资质审批' } //
]
}
]
};
// 使
this.chart.setOption(option);
},
},
beforeDestroy() {
if (this.chart) {
//
this.chart.dispose();
}
},
};
</script>
<style scoped>
/* 根据需要添加样式 */
</style>
Loading…
Cancel
Save