Browse Source

公共服务统计

wangqin
王钦 7 months ago
parent
commit
73f17ec1e5
  1. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Broadcast/components/BroadcastReleases.vue
  2. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue
  3. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  4. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
  5. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
  6. 17
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue
  7. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
  8. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
  9. 100
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue
  10. 11
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
  11. 107
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue
  12. 366
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js
  13. 58
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
  14. 305
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThroughLine/assets/charts3.js
  15. 153
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThroughLine/index.vue
  16. 120
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js
  17. 35
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue
  18. 99
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
  19. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
  20. BIN
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/设备设施隐患.png
  21. BIN
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/非法上路.png
  22. 152
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue
  23. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Broadcast/components/BroadcastReleases.vue

@ -85,7 +85,6 @@ export default {
},
created() {
getDeviceList(5).then((data) => {
console.log('-00--------------',data)
if (Array.isArray(data))
this.musicList = data.map((item) => ({
...item,

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue

@ -62,7 +62,7 @@
<ElTableColumn label="设备名称" prop="dcDeviceName"/>
<ElTableColumn label="管控方式" prop="operType" width="200"/>
<ElTableColumn label="操作人" prop="operName" width="200"/>
<ElTableColumn label="执行结果" prop="stakeMark" width="150" >
<ElTableColumn label="执行结果" prop="remark" width="150" >
<template slot-scope="scope">
<el-popover
placement="top-start"

4
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js

@ -115,9 +115,9 @@ function resolveDataOptions(data, config, component, isDefault) {
// 兼容不同的返回类型
let formData = extData.otherConfig;
try{
formData = JSON.parse(otherConfig)
formData = JSON.parse(extData.otherConfig)
}catch(e){
formData = null;
// formData = null;
}
// formData.pictures = ["https://pic1.zhimg.com/80/v2-c00beaae1f6e3c09a6d77c16c70002fe_1440w.webp?source=1def8aca","https://pic1.zhimg.com/80/v2-c56626621906417a453d262ac11f3385_1440w.webp?source=1def8aca"]
// console.log(component, "DialogComponent",extData);

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js

@ -205,7 +205,6 @@ const DeviceTypeMap = {
14: "光线在线监测",
*/
export function getDeviceList(deviceType, options) {
console.log(deviceType, options, "------------");
return new Promise((resolve, reject) => {
if (!deviceType) {
// Message.error(`${DeviceTypeMap[deviceType]}设备加载失败!`);

3
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue

@ -298,8 +298,7 @@ export default {
self.addMarker(center, icon, 1);
mapIns.setZoomAndCenter(12, center);
//
console.log(mapIns, AMap, "--------");
console.log(self.detailData, "############");
// console.log(self.detailData,mapIns, AMap, "############");
}, 500);
},
addMarker(position, icon, state, fn = null) {

17
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue

@ -98,7 +98,24 @@ export default {
],
};
},
mounted() {
//
this.bindChannels();
},
methods: {
bindChannels(){
setTimeout(() => {
request({
url: `/business/channels/eventPublishChannels`,
method: "post",
data: {eventId: this.detailData.id},
})
.then((result) => {
console.log(result,'信息发布:eventPublishChannels')
})
}, 500);
},
async handleSubmit() {
await this.$refs.FormMsgRef.validate()
.then(async (res) => {

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue

@ -813,7 +813,6 @@ export default {
await getDeviceRealtimeProperty(deviceId, "3A", { async: false })
.then((res) => {
if ("3A" in res.data) {
console.log("回读消息------------------------");
console.log(res.data);
var contents = res.data["3A"].content;
for (let i = 0; i < contents.length; i++) {

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js

@ -41,7 +41,7 @@ var options = {
color: ["#68F4DD", "#FFDD69", "#3CC3F0", "#5C8CFE", "#51D5AD"],
title: [
{
text: "999",
text: "0",
// top: "27%",
top: "33%",
textAlign: "center",

100
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue

@ -26,6 +26,7 @@
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import request from "@/utils/request";
export default {
name: "RailWayDay",
components: {
@ -33,43 +34,80 @@ export default {
},
data() {
return {
enum_channels: [
'手机短信',
'微信公众号',
'微博',
'情报板',
'服务网站',
'微信小程序',
'语音广播'
],
dataList: [],
};
},
created() {},
methods: {},
methods: {
bindStatisticsPublishManage(){
request({
url: `/business/manage/statisticsPublishManage`,
method: "post",
data: {},
})
.then((result) => {
if (result.code != 200) return;
let total = 0;
result.data.forEach((e,i) => {
total += e.number;
})
let legendData = [];
let data1=[],data2=[];
chartsStatistics.title[0].text = total.toString();
let _dataList = [];
result.data.forEach((e,i) => {
const _name = this.enum_channels[i];
if(e.number > 0){
_dataList.push({
name: _name,
value: e.number,
percert: total?(e.number/total*100).toFixed(2):0.00
})
legendData.push(_name)
data1.push({
value: e.number,
name: _name,
})
data2.push({
value: e.number,
name: _name,
itemStyle: {
opacity: 0.4,
},
})
}
});
chartsStatistics.data = legendData;
chartsStatistics.series[9].data = data1;
chartsStatistics.series[10].data = data2;
var myChart = echarts.init(document.getElementById("channelAnalytics"));
myChart.setOption(chartsStatistics);
const list = _dataList.reduce((acc, curr, index) => {
if (index % 2 === 0) acc.push([]);
acc[Math.floor(index / 2)].push(curr);
return acc;
}, []);
this.dataList = list;
this.dataList = list;
})
},
},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById("channelAnalytics"));
myChart.setOption(chartsStatistics);
let data = chartsStatistics.series[9].data;
let total = null;
for (let i = 0; i < data.length; i++) {
if (data[i].name != "") {
total += data[i].value;
}
}
for (let i = 0; i < data.length; i++) {
if (data[i].name != "") {
this.dataList.push({
name: data[i].name,
value: data[i].value,
percert:
total == 0 ? 0 : ((data[i].value / total) * 100).toFixed(2),
});
}
}
const list = this.dataList.reduce((acc, curr, index) => {
if (index % 2 === 0) acc.push([]);
acc[Math.floor(index / 2)].push(curr);
return acc;
}, []);
this.dataList = list;
});
});
this.bindStatisticsPublishManage();
},
};
</script>

11
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js

@ -24,7 +24,6 @@ function getCirlPoint(x0, y0, r, angle) {
// var res = this.evaluatedCountList;
var data1 = [],
data2 = [],
data3 = [],
legendData = [];
var curIndex = 0;
var index = 0;
@ -41,14 +40,6 @@ for (var i = 0; i < res.length; i++) {
opacity: 0.4,
},
});
data3.push({
value: res[i].value,
name: res[i].name,
itemStyle: {
opacity: 0.1,
},
});
if (res[i].name != "") legendData.push(res[i].name);
}
// let decoDelta = 48;
@ -62,8 +53,10 @@ var options = {
"#FEE58F",
"#8DFEBF",
"#66F4DC",
"#58C3FF",
"#33E27D",
"#5D8CFE",
"#FDA474",
],
title: [
{

107
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue

@ -26,50 +26,89 @@
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import request from "@/utils/request";
export default {
name: "RailWayDay",
components: {
WgtTitle,
},
data() {
return { dataList: [] };
return {
enum_channels: [
'交通事故',
'车辆故障',
'交通管制',
'交通拥堵',
'非法上路',
'路障清除',
'施工建设',
'服务区异常',
'设施设备隐患',
'异常天气',
'其他事件'
],
dataList: []
};
},
created() {},
methods: {},
methods: {
bindEventTypePublishManage() {
request({
url: `/business/manage/eventTypePublishManage`,
method: "post",
data: {},
})
.then((result) => {
if (result.code != 200) return;
let total = 0;
result.data.forEach((e,i) => {
total += e.number;
})
let legendData = [];
let data1=[],data2=[];
chartsStatistics.title[0].text = total.toString();
let _dataList = [];
result.data.forEach((e,i) => {
const _name = this.enum_channels[i];
if(e.number > 0){
_dataList.push({
name: _name,
value: e.number,
percert: total?(e.number/total*100).toFixed(2):0.00
})
legendData.push(_name)
data1.push({
value: e.number,
name: _name,
})
data2.push({
value: e.number,
name: _name,
itemStyle: {
opacity: 0.4,
},
})
}
});
chartsStatistics.data = legendData;
chartsStatistics.series[9].data = data1;
chartsStatistics.series[10].data = data2;
var myChart = echarts.init(document.getElementById("eventTypeAnalysis"));
myChart.setOption(chartsStatistics);
const list = _dataList.reduce((acc, curr, index) => {
if (index % 2 === 0) acc.push([]);
acc[Math.floor(index / 2)].push(curr);
return acc;
}, []);
this.dataList = list;
this.dataList = list;
})
},
},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(
document.getElementById("eventTypeAnalysis")
);
myChart.setOption(chartsStatistics);
let data = chartsStatistics.series[9].data;
let total = null;
for (let i = 0; i < data.length; i++) {
if (data[i].name != "") {
total += data[i].value;
}
}
for (let i = 0; i < data.length; i++) {
if (data[i].name != "") {
this.dataList.push({
name: data[i].name,
value: data[i].value,
percert:
total == 0 ? 0 : ((data[i].value / total) * 100).toFixed(2),
});
}
}
const list = this.dataList.reduce((acc, curr, index) => {
if (index % 2 === 0) acc.push([]);
acc[Math.floor(index / 2)].push(curr);
return acc;
}, []);
this.dataList = list;
});
});
this.bindEventTypePublishManage();
},
};
</script>

366
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js

@ -1,51 +1,80 @@
import * as echarts from "echarts";
const event_type = [
'交通事故',
'车辆故障',
'交通管制',
'交通拥堵',
'非法上路',
'路障清除',
'施工建设',
'服务区异常',
'设施设备隐患',
'异常天气',
'其他事件'
]
const event_channel = [
'手机短信',
'微信公众号',
'微博',
'情报板',
'服务网站',
'微信小程序',
'语音广播'
]
let xData = [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月",
];
let data1 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120, 570, 800];
let data2 = [120, 340, 750, 600, 400, 700, 900, 200, 540, 320, 370, 500];
let data3 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120, 570, 800];
let options = {
const series = event_channel.map((name, sid) => {
return {
name,
type: 'bar',
stack: 'total',
barWidth: '60%',
label: {
show: true,
formatter: (params) => {
if(params.value === 0){
return ''
} else {
return Math.round(params.value * 1000) / 10 + '%'
}
}
},
data: []
};
});
var options = {
legend: {
icon: "circle",
itemHeight: 8,
itemWidth: 8,
top: "5%",
right: "10%",
textStyle: {
color: "#fff",
},
},
tooltip: {
show: true,
trigger: "axis",
valueFormatter: function (value) {
return value + " 起";
return Math.round(value * 1000) / 10 + "%";
},
},
grid: {
grid:{
left: "0",
right: "0",
top: "80px",
bottom: "25px",
bottom: "0px",
containLabel: true,
},
yAxis: {
type: 'value'
},
xAxis: {
data: xData,
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2CC9EC",
},
},
type: 'category',
data: event_type,
axisLabel: {
interval: 0,
align: "center",
@ -55,251 +84,30 @@ let options = {
fontSize: 10,
color: "#fff",
},
formatter:function(value)
{
var ret = "";//拼接加\n返回的类目项
var maxLength = 2;//每项显示文字个数
var valLength = value.length;//X轴类目项的文字个数
var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
if (rowN > 1)//如果类目项的文字大于3,
{
for (var i = 0; i < rowN; i++) {
var temp = "";//每次截取的字符串
var start = i * maxLength;//开始截取的位置
var end = start + maxLength;//结束截取的位置
//这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
temp = value.substring(start, end) + "\n";
ret += temp; //凭借最终的字符串
}
return ret;
}
else {
return value;
}
}
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#fff",
fontSize: 10,
align: "right",
verticalAlign: "center",
},
axisLine: {
lineStyle: {
color: "#1D7B93",
},
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(28, 130, 197, .3)",
type: "solid",
},
},
axisLabel: {
color: "#fff",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
// orient: 'vertical',
icon: "circle",
itemHeight: 8,
itemWidth: 8,
top: "5%",
right: "10%",
textStyle: {
color: "#fff",
},
data: [
{
name: "审核通过",
itemStyle: {
color: "#08BAF4",
},
},
{
name: "待审核",
itemStyle: {
color: "#51BFA4",
},
},
{
name: "审核不通过",
itemStyle: {
color: "#E2BA74",
},
},
],
},
series: [
{
name: "审核通过",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#08BAF4", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
// 下半截柱状图linear-gradient(180deg, #61D8FF 0%, #003B4E 100%); linear-gradient(180deg, #06D7B1 0%, #003B4E 100%)
{
name: "待审核",
type: "bar",
barWidth: "10px",
barGap: "120%",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00E4BB53", // 0% 处的颜色
},
{
offset: 1,
color: "#51BFA4", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00E4BB", // 0% 处的颜色
},
{
offset: 1,
color: "#00E4BB00", // 100% 处的颜色
},
],
false
);
},
},
data: data1,
},
{
name: "审核不通过",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#E2BA74", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#FCBE39", // 0% 处的颜色
},
{
offset: 1,
color: "#FCBE3900", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
],
series
};
export default options;
export default options;

58
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue

@ -1,6 +1,6 @@
<template>
<div class="congestion">
<WgtTitle :title="'月审核通过趋势分析'"></WgtTitle>
<WgtTitle :title="'月发布事件类型分析'"></WgtTitle>
<div class="board">
<div class="searchPanel_1 keep-ratio">
<el-date-picker
@ -40,6 +40,7 @@
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts3";
import request from "@/utils/request";
export default {
name: "nucleusThrough",
components: {
@ -52,14 +53,53 @@ export default {
},
created() {},
methods: {},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById("nucleusThrough"));
methods: {
init(){
this.dateTime = new Date();
this.bindEventTypePublishManageMonth();
},
bindEventTypePublishManageMonth(){
request({
url: `/business/manage/eventTypePublishManageMonth`,
method: "post",
data: {publishTime:moment(this.dateTime).format('YYYY-MM-DD HH:mm:ss')},
})
.then((result) => {
if (result.code != 200) return;
const total = [0,0,0,0,0,0,0];
result.data.forEach(e => {
total[e.publishChannels-1] = total[e.publishChannels-1] + e.number
});
const data = [[],[],[],[],[],[],[]]
result.data.forEach(e => {
data[e.publishChannels-1].push(total[e.publishChannels-1] ? e.number/total[e.publishChannels-1]:0)
});
chartsStatistics.series.forEach((e,i) => {
e.data = data[i]
});
var myChart = echarts.init(document.getElementById("nucleusThrough"));
myChart.setOption(chartsStatistics);
});
});
// let sdata = [[],[],[],[],[],[],[]]
// for(let i of result.data){
// sdata[i.publishChannels-1].push(i.number)
// }
// chartsStatistics.series.forEach((e,i) => {
// e.data = sdata[i]
// });
// var myChart = echarts.init(document.getElementById("postTrendsMonth"));
// myChart.setOption(chartsStatistics);
})
},
},
mounted() {
this.init();
// setTimeout(() => {
// this.$nextTick(() => {
// var myChart = echarts.init(document.getElementById("nucleusThrough"));
// myChart.setOption(chartsStatistics);
// });
// });
},
};
</script>
@ -147,7 +187,7 @@ export default {
}
.charts {
height: 300px;
height: 100%;
width: 100%;
}
</style>

305
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThroughLine/assets/charts3.js

@ -0,0 +1,305 @@
import * as echarts from "echarts";
let xData = [
"1月",
"2月",
"3月",
"4月",
"5月",
"6月",
"7月",
"8月",
"9月",
"10月",
"11月",
"12月",
];
let data1 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120, 570, 800];
let data2 = [120, 340, 750, 600, 400, 700, 900, 200, 540, 320, 370, 500];
let data3 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120, 570, 800];
let options = {
tooltip: {
show: true,
trigger: "axis",
valueFormatter: function (value) {
return value + " 起";
},
},
grid: {
left: "0",
right: "0",
top: "80px",
bottom: "25px",
containLabel: true,
},
xAxis: {
data: xData,
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2CC9EC",
},
},
axisLabel: {
interval: 0,
align: "center",
rotate: "1",
margin: "20",
textStyle: {
fontSize: 10,
color: "#fff",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#fff",
fontSize: 10,
align: "right",
verticalAlign: "center",
},
axisLine: {
lineStyle: {
color: "#1D7B93",
},
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(28, 130, 197, .3)",
type: "solid",
},
},
axisLabel: {
color: "#fff",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
// orient: 'vertical',
icon: "circle",
itemHeight: 8,
itemWidth: 8,
top: "5%",
right: "10%",
textStyle: {
color: "#fff",
},
data: [
{
name: "审核通过",
itemStyle: {
color: "#08BAF4",
},
},
{
name: "待审核",
itemStyle: {
color: "#51BFA4",
},
},
{
name: "审核不通过",
itemStyle: {
color: "#E2BA74",
},
},
],
},
series: [
{
name: "审核通过",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#08BAF4", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
// 下半截柱状图linear-gradient(180deg, #61D8FF 0%, #003B4E 100%); linear-gradient(180deg, #06D7B1 0%, #003B4E 100%)
{
name: "待审核",
type: "bar",
barWidth: "10px",
barGap: "120%",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00E4BB53", // 0% 处的颜色
},
{
offset: 1,
color: "#51BFA4", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00E4BB", // 0% 处的颜色
},
{
offset: 1,
color: "#00E4BB00", // 100% 处的颜色
},
],
false
);
},
},
data: data1,
},
{
name: "审核不通过",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#1AC5FD", // 0% 处的颜色
},
{
offset: 1,
color: "#E2BA74", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
// lenged文本
opacity: 0.9,
color: function (params) {
var a = params.name;
// console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#FCBE39", // 0% 处的颜色
},
{
offset: 1,
color: "#FCBE3900", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
],
};
export default options;

153
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThroughLine/index.vue

@ -0,0 +1,153 @@
<template>
<div class="congestion">
<WgtTitle :title="'月审核通过趋势分析'"></WgtTitle>
<div class="board">
<div class="searchPanel_1 keep-ratio">
<el-date-picker
size="mini"
type="month"
class="selectRoad"
v-model="dateTime"
style="width: 140px"
placeholder="请选择"
/>
<!-- <el-quarter-picker
size="mini"
class="selectRoad"
style="width: 180px"
v-if="year == 'quarter'"
v-model="quarter"
aria-placeholder="请选季度"
/> -->
<el-button
type="primary"
size="mini"
class="btnSearch"
icon="el-icon-search"
>查询</el-button
>
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left"
>重置</el-button
>
</div>
<div class="charts keep-ratio" id="nucleusThrough"></div>
</div>
</div>
</template>
<script>
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts3";
export default {
name: "nucleusThrough",
components: {
WgtTitle,
},
data() {
return {
dateTime: "",
};
},
created() {},
methods: {},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById("nucleusThrough"));
myChart.setOption(chartsStatistics);
});
});
},
};
</script>
<style lang="scss" scoped>
.congestion {
display: flex; flex-direction: column;
.board {
position: relative;
flex: 1;
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6, 66, 88, 0.2) 0%, #064258 100%);
border-radius: 5px 5px 5px 5px;
opacity: 1;
border: 1px solid;
border-image: linear-gradient(
360deg,
rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0)
)
1 1;
display: flex;
justify-content: space-between;
align-items: center;
.searchPanel_1 {
position: absolute;
display: flex;
align-items: center;
height: 40px;
width: 50%;
font-size: 14px;
margin-bottom: 10px;
left: 20px;
top: 2px;
z-index: 9;
div {
white-space: nowrap;
margin-right: 4px;
}
.inputZh {
width: 47px;
::v-deep {
.el-input__inner {
background-color: #064258 !important;
border-width: 0px !important;
}
}
}
.inputJl {
margin-left: 5px;
margin-right: 10px;
}
.selectRoad {
width: 89px;
border: 1px solid #00b3cc;
::v-deep {
.el-input__inner {
background-color: #064258 !important;
border-width: 0px !important;
}
}
}
.btnSearch {
background: linear-gradient(180deg, #005c79 0%, #009bcc 100%);
margin-left: 10px;
border-color: transparent;
}
.btnReset {
background: linear-gradient(180deg, #005c79 0%, #009bcc 100%);
border-color: transparent;
color: white;
}
}
}
}
.charts {
height: 300px;
width: 100%;
}
</style>

120
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js

@ -1,17 +1,29 @@
/* 数据 */
let nameList = [
"00:00",
"01:00",
"02:00",
"03:00",
"04:00",
"05:00",
"06:00",
"07:00",
"08:00",
"09:00",
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00",
"19:00",
"20:00",
"21:00",
"22:00",
"23:00",
]; // 类别
let valueList = [
800, 520, 650, 950, 420, 600, 450, 720, 303, 503, 203, 703, 903,
@ -133,7 +145,7 @@ var options = {
],
series: [
{
name: "情报板发布",
name: "手机短信",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -148,26 +160,23 @@ var options = {
x2: 0,
y2: 1,
colorStops: [
{ offset: 0.389, color: "#32BB8A90" },
{ offset: 1, color: "#32BB8A00" },
{ offset: 0.389, color: "#51BFA490" },
{ offset: 1, color: "#51BFA400" },
],
global: false,
},
},
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#32BB8A",
color: "#51BFA4",
},
lineStyle: {
width: 2,
},
data: [
1000, 800, 520, 600, 900, 700, 700, 1000, 800, 520, 600, 900, 700, 700,
], // 折线图的数据
data: [],
},
{
name: "服务网站",
name: "微信公众号",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -196,12 +205,10 @@ var options = {
global: false,
},
},
data: [
600, 700, 900, 400, 500, 800, 600, 600, 700, 900, 400, 500, 800, 600,
], // 折线图的数据
data: [],
},
{
name: "微信发布",
name: "微",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -229,20 +236,76 @@ var options = {
lineStyle: {
width: 2,
},
data: [
850, 810, 712, 580, 480, 480, 780, 850, 810, 712, 580, 480, 480, 780,
], // 折线图的数据
data: [],
},
{
name: "微博发布",
name: "情报板",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#51BFA4",
color: "#FB6D07",
},
smooth: true,
areaStyle: {
width: 4,
opacity: 0.25,
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0.389, color: "#FB6D0799" },
{ offset: 1, color: "#FB6D0700" },
],
global: false,
},
},
lineStyle: {
width: 2,
},
data: [],
},
{
name: "服务网站",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#07DEFB",
},
smooth: true,
areaStyle: {
width: 4,
opacity: 0.25,
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0.389, color: "#07DEFB90" },
{ offset: 1, color: "#07DEFB00" },
],
global: false,
},
},
lineStyle: {
width: 2,
},
data: [],
},
{
name: "微信小程序",
type: "line",
symbol: "circle",
symbolSize: 0,
smooth: true,
areaStyle: {
width: 4,
opacity: 0.25,
@ -259,22 +322,28 @@ var options = {
global: false,
},
},
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#51BFA4",
},
lineStyle: {
width: 2,
},
data: [
850, 810, 712, 580, 480, 480, 780, 850, 810, 712, 580, 480, 480, 780,
], // 折线图的数据
data: [],
},
{
name: "短信发布",
name: "语音广播",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#08BAF4",
},
lineStyle: {
width: 2,
},
smooth: true,
areaStyle: {
width: 4,
@ -292,12 +361,7 @@ var options = {
global: false,
},
},
lineStyle: {
width: 2,
},
data: [
850, 410, 712, 680, 50, 280, 480, 850, 810, 712, 580, 480, 480, 780,
], // 折线图的数据
data: [],
},
],
};

35
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue

@ -11,6 +11,7 @@
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import request from "@/utils/request";
export default {
name: 'RailWayDay',
components: {
@ -26,15 +27,35 @@ export default {
},
methods: {
bindTrendsPublishManage(){
request({
url: `/business/manage/trendsPublishManage`,
method: "post",
data: {},
})
.then((result) => {
if (result.code != 200) return;
// console.log(result,'-----------------')
let sdata = [[],[],[],[],[],[],[]]
for(let i of result.data){
sdata[i.publishChannels-1].push(i.number)
}
chartsStatistics.series.forEach((e,i) => {
e.data = sdata[i]
});
var myChart = echarts.init(document.getElementById("postTrendsDay"));
myChart.setOption(chartsStatistics);
})
},
},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById('postTrendsDay'));
myChart.setOption(chartsStatistics);
});
});
this.bindTrendsPublishManage();
// setTimeout(() => {
// this.$nextTick(() => {
// var myChart = echarts.init(document.getElementById('postTrendsDay'));
// myChart.setOption(chartsStatistics);
// });
// });
},
}
</script>

99
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js

@ -1,22 +1,33 @@
/* 数据 */
let nameList = [
"00:00",
"01:00",
"02:00",
"03:00",
"04:00",
"05:00",
"06:00",
"07:00",
"08:00",
"09:00",
"10:00",
"11:00",
"12:00",
"13:00",
"14:00",
"15:00",
"16:00",
"17:00",
"18:00",
"19:00",
"20:00",
"21:00",
"22:00",
"23:00",
]; // 类别
let valueList = [
800, 520, 650, 950, 420, 600, 450, 720, 303, 503, 203, 703, 903, 903,
]; // 人数
var yList = ["1000", "800", "轻度拥堵", "基本畅通", "畅通"];
/* 数据整合 */
let dataList = [];
nameList.map((item, index) => {
@ -81,7 +92,7 @@ var options = {
top: "80px", //上边距
right: "0", //右边距
left: "0", //左边距
bottom: "10px", //下边距
bottom: "20px", //下边距
containLabel: true,
},
xAxis: {
@ -134,7 +145,7 @@ var options = {
],
series: [
{
name: "情报板发布",
name: "手机短信",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -162,11 +173,10 @@ var options = {
lineStyle: {
width: 2,
},
data: [1000, 800, 520, 600, 900, 700, 700, 1000, 800, 520, 600, 900], // 折线图的数据
data: [],
},
{
name: "服务网站",
name: "微信公众号",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -195,10 +205,10 @@ var options = {
global: false,
},
},
data: [600, 700, 900, 400, 500, 800, 600, 600, 700, 900, 400, 500], // 折线图的数据
data: [],
},
{
name: "微信发布",
name: "微",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -226,10 +236,10 @@ var options = {
lineStyle: {
width: 2,
},
data: [850, 810, 712, 580, 480, 480, 780, 850, 810, 712, 580, 480], // 折线图的数据
data: [],
},
{
name: "微博发布",
name: "情报板",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -257,10 +267,10 @@ var options = {
lineStyle: {
width: 2,
},
data: [850, 810, 712, 580, 480, 480, 780, 850, 810, 712, 580, 480], // 折线图的数据
data: [],
},
{
name: "短信发布",
name: "服务网站",
type: "line",
symbol: "circle",
symbolSize: 0,
@ -288,7 +298,70 @@ var options = {
lineStyle: {
width: 2,
},
data: [850, 410, 712, 680, 50, 280, 480, 850, 810, 712, 580, 480], // 折线图的数据
data: [],
},
{
name: "微信小程序",
type: "line",
symbol: "circle",
symbolSize: 0,
smooth: true,
areaStyle: {
width: 4,
opacity: 0.25,
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0.389, color: "#51BFA490" },
{ offset: 1, color: "#51BFA400" },
],
global: false,
},
},
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#51BFA4",
},
lineStyle: {
width: 2,
},
data: [],
},
{
name: "语音广播",
type: "line",
symbol: "circle",
symbolSize: 0,
// yAxisIndex: 1, // 与第二个 y 轴关联
itemStyle: {
color: "#08BAF4",
},
lineStyle: {
width: 2,
},
smooth: true,
areaStyle: {
width: 4,
opacity: 0.25,
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0.389, color: "#08BAF490" },
{ offset: 1, color: "#08BAF400" },
],
global: false,
},
},
data: [],
},
],
};

40
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue

@ -17,9 +17,10 @@
size="mini"
class="btnSearch"
icon="el-icon-search"
@click="bindMonthTrendsPublishManage()"
>查询</el-button
>
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left"
<el-button class="btnReset" @click="init()" size="mini" icon="el-icon-refresh-left"
>重置</el-button
>
</div>
@ -32,6 +33,8 @@
import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import request from "@/utils/request";
import moment from "moment";
export default {
name: "postTrendsMonth",
components: {
@ -44,14 +47,33 @@ export default {
},
created() {},
methods: {},
methods: {
bindMonthTrendsPublishManage(){
request({
url: `/business/manage/monthTrendsPublishManage`,
method: "post",
data: {publishTime:moment(this.dateTime).format('YYYY-MM-DD HH:mm:ss')},
})
.then((result) => {
if (result.code != 200) return;
let sdata = [[],[],[],[],[],[],[]]
for(let i of result.data){
sdata[i.publishChannels-1].push(i.number)
}
chartsStatistics.series.forEach((e,i) => {
e.data = sdata[i]
});
var myChart = echarts.init(document.getElementById("postTrendsMonth"));
myChart.setOption(chartsStatistics);
})
},
init(){
this.dateTime = new Date();
this.bindMonthTrendsPublishManage();
}
},
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById("postTrendsMonth"));
myChart.setOption(chartsStatistics);
});
});
this.init();
},
};
</script>
@ -139,7 +161,7 @@ export default {
}
.charts {
height: 300px;
height: 100%;
width: 100%;
}
</style>

BIN
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/设备设施隐患.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/非法上路.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

152
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue

@ -1,7 +1,8 @@
<template>
<div class="TrafficFlow">
<section class="foot">
<div class="item keep-ratio" v-for="(item, index) in topDatas">
<template v-for="(item, index) in topDatas">
<div class="item keep-ratio">
<div class="item-title">
<span>
{{ item.text }} <span class="num">{{ item.textNum }}</span
@ -13,103 +14,138 @@
<img :src="item.icon" />
</div>
<div class="text-right">
<div class="topText">
已审核 <span class="num">{{ item.reviewed }}</span>
</div>
<div class="bottomText">
未审核 <span class="num">{{ item.noReviewed }}</span>
<div class="topText" v-for="(e,idx) in enum_channels">
{{e}} <span class="num">{{ item.reviewed[idx] }}</span>
</div>
</div>
</div>
</div>
<div class="item-line" v-if="index !== 10"></div>
</template>
</section>
</div>
</template>
<script>
import request from "@/utils/request";
export default {
name: "publicService",
components: {},
data() {
return {
activeName: "first",
enum_channels: [
'手机短信',
'微信公众号',
'微博',
'情报板',
'服务网站',
'微信小程序',
'语音广播'
],
topDatas: [
{
text: "其他事件",
textEnd: "起",
textNum: 9,
icon: require("./assets/其他事件.png"),
reviewed: 4,
noReviewed: 5,
},
{
text: "路障清除",
text: "交通事故",
textEnd: "起",
textNum: 9,
icon: require("./assets/路障清除.png"),
reviewed: 4,
noReviewed: 5,
icon: require("./assets/交通事故.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "车辆故障",
textEnd: "起",
textNum: 9,
icon: require("./assets/车辆故障.png"),
reviewed: 4,
noReviewed: 5,
},
{
text: "服务区异常",
textEnd: "起",
textNum: 9,
icon: require("./assets/服务区异常.png"),
reviewed: 4,
noReviewed: 5,
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "交通管制",
textEnd: "起",
textNum: 9,
icon: require("./assets/交通管制.png"),
reviewed: 4,
noReviewed: 5,
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "交通拥堵",
textEnd: "起",
textNum: 9,
icon: require("./assets/交通拥堵.png"),
reviewed: 4,
noReviewed: 5,
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "非法上路",
textEnd: "起",
icon: require("./assets/非法上路.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "路障清除",
textEnd: "起",
icon: require("./assets/路障清除.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "施工建设",
textEnd: "起",
textNum: 9,
icon: require("./assets/施工建设.png"),
reviewed: 4,
noReviewed: 5,
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "服务区异常",
textEnd: "起",
icon: require("./assets/服务区异常.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "设备设施隐患",
textEnd: "起",
icon: require("./assets/设备设施隐患.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "异常天气",
textEnd: "起",
textNum: 9,
icon: require("./assets/异常天气.png"),
reviewed: 4,
noReviewed: 5,
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
{
text: "交通事故",
text: "其他事件",
textEnd: "起",
textNum: 9,
icon: require("./assets/交通事故.png"),
reviewed: 4,
noReviewed: 5,
icon: require("./assets/其他事件.png"),
textNum: 0,
reviewed: [0,0,0,0,0,0,0],
},
],
};
},
mounted() {
this.bindTypePublishManageSum();
},
methods: {
bindTypePublishManageSum(){
request({
url: `/business/manage/eventTypePublishManageSum`,
method: "POST",
data: {},
})
.then((result) => {
if (result.code != 200) return;
if(result.data.length !== 77){
this.$message.warning('返回数据数量异常')
return;
}
result.data.forEach(e => {
this.topDatas[e.eventType-1].textNum = this.topDatas[e.eventType-1].textNum + e.number;
this.topDatas[e.eventType-1].reviewed[e.publishChannels-1] = e.number;
});
})
},
changeTabs() {},
},
};
@ -156,6 +192,8 @@ export default {
flex-direction: row;
width: 100%;
height: 100%;
justify-content: space-between;
align-items: center;
.item {
position: relative;
@ -210,12 +248,15 @@ export default {
font-weight: 400;
color: #ffffff;
margin-top: 15px;
.text-right{
height: 80px;
font-size: 13px;
overflow-y: auto;
}
img {
width: 47px;
height: 47px;
margin: 0 10px;
margin-right: 20px;
width: 40px;
height: 40px;
margin-right: 0px;
}
span.num {
@ -227,9 +268,7 @@ export default {
}
}
.item::after {
content: "";
position: absolute;
.item-line {
display: inline-flex;
top: 20px;
right: 0px;
@ -242,9 +281,6 @@ export default {
rgba(3, 60, 81, 0.2)
);
opacity: 1;
flex-direction: row;
justify-content: center;
align-items: center;
}
.item:last-child::after{ background: none;}
}

7
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue

@ -7,12 +7,12 @@
<div class="line_02">
<ChannelAnalytics class="unit" />
<EventTypeAnalysis class="unit" />
<AuditAnalytics class="unit" />
<PostTrendsDay class="unit" />
<NucleusThrough class="unit2" />
<!-- <PostTrendsDay class="unit" /> -->
</div>
<div class="line_03">
<PostTrendsMonth class="unit" />
<NucleusThrough class="unit" />
<PostTrendsDay class="unit" />
</div>
</el-tab-pane>
<el-tab-pane label="公众服务统计查询" name="second" class="con_tab"> </el-tab-pane>
@ -102,6 +102,7 @@ export default {
display: flex;
margin-bottom: 16px;
.unit{ margin-right: 16px; flex: 1; width: 0;}
.unit2{width: 50%;margin-left:-4px}
.unit:last-child{ margin-right: 0;}
}
.line_03{

Loading…
Cancel
Save