diff --git a/ruoyi-ui/src/common/menuData.js b/ruoyi-ui/src/common/menuData.js index bc4a9407..4f1472bf 100644 --- a/ruoyi-ui/src/common/menuData.js +++ b/ruoyi-ui/src/common/menuData.js @@ -123,6 +123,10 @@ export default [ name: "InformationReleaseManagement", path: "/service/InformationReleaseManagement", component: "service/InformationReleaseManagement/index.vue", + title: "公众服务统计", + name: "publicService", + path: "/service/publicService", + component: "service/publicService/index.vue", }, ], }, diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/publicService/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/publicService/index.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/publicService/statistics/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/publicService/statistics/index.vue deleted file mode 100644 index e69de29b..00000000 diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js new file mode 100644 index 00000000..249016a6 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js @@ -0,0 +1,391 @@ +var res = [ + { value: 50, name: '情报板发布' }, + { value: 1, name: '' }, + { value: 20, name: '微博发布' }, + { value: 1, name: '' }, + { value: 30, name: '服务网站' }, + { value: 1, name: '' }, + ]; + // var res = this.evaluatedCountList; + var data1 = [], data2 = [], data3 = [], legendData = []; + var curIndex = 0; + var index = 0; + let angle = 0; //角度,用来做简单的动画效果的 + + for (var i = 0; i < res.length; i++) { + + data1.push({ + value: res[i].value, + name: res[i].name, + }) + data2.push({ + value: res[i].value, + name: res[i].name, + itemStyle: { + 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); + } + + var options = { + color: ['#5CC5FF', 'transparent', '#54EFD5', 'transparent', '#FD9666', 'transparent', '#5C8CFE', 'transparent', '#51D5AD', 'transparent'], + title: [ + { + text:'999', + top: '25%', + textAlign: 'center', + left: '50%', + textStyle: { + color: '#ffffff', + fontSize: 30, + fontFamily: 'SourceHanSansCN', + }, + }, + { + text: '总数', + top: '38%', + textAlign: 'center', + left: '50%', + textStyle: { + color: 'rgba(242, 252, 253, 0.84)', + fontSize: 16, + fontFamily: 'SourceHanSansCN', + }, + }, + ], + grid: { + top: '3%', + left: '6%', + right: '6%', + bottom: '3%', + containLabel: true + }, + tooltip: { + trigger: 'item', + formatter: '{b} : {c}:{d}' + }, + legend: { + orient: '', + left: '10%', + top: '68%', + itemWidth: 10, + itemHeight: 10, + icon:"circle", + textStyle: { + color: "#ffffff", + fontSize: 14, + lineHeight: 22, + rich: { + text: { + marginLeft:32, + fontSize: 14, + }, + number: { + fontSize: 14, + color: "#37E7FF", + marginLeft:32, + fontWeight: 'bold' + }, + unit: { + fontSize: 14, + } + } + }, + data: legendData, + formatter(name) { + if ( name == "" ) return ""; + const newData = res; + let tarValue = 0; + let total = 0; + for (let i = 0; i < newData.length; i++) { + total += newData[i].value; + if (newData[i].name === name) { + tarValue = newData[i].value; + } + } + var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); + const arr = name + ' ' + tarValue; + return `{text|${name}} {number|${percert}%}`;; + }, + }, + series: [ + /** 饼图上刻度 */ + { + type: 'gauge', + center: ['50%', '35%'], + radius: '46%', // 错位调整此处 + startAngle: 0, + endAngle: 360, + splitNumber: 52, + axisLine: { show: false }, + splitLine: { + // length: 39, + length: '2', + lineStyle: { + width: 5, + color: '#5CC5FF' + } + }, + axisTick: { show: false }, + axisLabel: { show: false } + }, + /** 绘制外部圆弧-2-开始圆点 */ + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((350 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((350 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (350 + -angle) * Math.PI / 180, + endAngle: (120 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((150 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((150 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (150 + -angle) * Math.PI / 180, + endAngle: (-30 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.62; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((590 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((590 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.62, + startAngle: (590 + -angle) * Math.PI / 180, + endAngle: (350 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.62; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((90 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((90 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.62, + startAngle: (90 + -angle) * Math.PI / 180, + endAngle: (160 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'pie', + radius: ['50%', '40%'], + center: ['50%', '35%'], + z: 10, + label: { + show: false, + position: 'center', + formatter: (params) => { + return params.name + "\r\n" + params.value + }, + rich: { + total: { + fontSize: 16, + color: '#04F5FE', + }, + efficiency: { + fontSize: 12, + color: '#00FD6D', + }, + }, + color: '#FFFFFF', + fontSize: 12, + lineHeight: 16, + }, + data: data1, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 50, // 圆角 + } + } + }, + { + type: 'pie', + radius: ['29%', '45%'], + center: ['50%', '35%'], + label: { + show: false, + }, + data: data2, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 0, // 圆角 + } + } + }, + ], + + }; + + export default options \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue new file mode 100644 index 00000000..69bebb9b --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js new file mode 100644 index 00000000..e3908823 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js @@ -0,0 +1,392 @@ +var res = [ + { value: 20, name: '情报板发布' }, + { value: 1, name: '' }, + { value: 20, name: '微博发布' }, + { value: 1, name: '' }, + { value: 20, name: '服务网站' }, + { value: 1, name: '' }, + { value: 20, name: '短信发布' }, + { value: 1, name: '' }, + { value: 20, name: '微信发布' }, + { value: 1, name: '' }, + ]; + // var res = this.evaluatedCountList; + var data1 = [], data2 = [], data3 = [], legendData = []; + var curIndex = 0; + var index = 0; + + for (var i = 0; i < res.length; i++) { + data1.push({ + value: res[i].value, + name: res[i].name, + }) + data2.push({ + value: res[i].value, + name: res[i].name, + itemStyle: { + 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 angle = 0; //角度,用来做简单的动画效果的 + var options = { + color: ['#68F4DD', 'transparent', '#FFDD69', 'transparent', '#3CC3F0', 'transparent', '#5C8CFE', 'transparent', '#51D5AD', 'transparent'], + title: [ + { + text:'999', + top: '25%', + textAlign: 'center', + left: '50%', + textStyle: { + color: '#ffffff', + fontSize: 30, + fontFamily: 'SourceHanSansCN', + }, + }, + { + text: '总数', + top: '38%', + textAlign: 'center', + left: '50%', + textStyle: { + color: 'rgba(242, 252, 253, 0.84)', + fontSize: 16, + fontFamily: 'SourceHanSansCN', + }, + }, + ], + grid: { + top: '3%', + left: '6%', + right: '6%', + bottom: '3%', + containLabel: true + }, + tooltip: { + trigger: 'item', + formatter: '{b} : {c}:{d}' + }, + legend: { + orient: '', + left: '10%', + top: '68%', + itemWidth: 10, + itemHeight: 10, + icon:"circle", + textStyle: { + color: "#ffffff", + fontSize: 14, + lineHeight: 22, + rich: { + text: { + marginLeft:32, + fontSize: 14, + }, + number: { + fontSize: 14, + color: "#37E7FF", + marginLeft:32, + fontWeight: 'bold' + }, + unit: { + fontSize: 14, + } + } + }, + data: legendData, + formatter(name) { + const newData = res; + let tarValue = 0; + let total = 0; + for (let i = 0; i < newData.length; i++) { + total += newData[i].value; + if (newData[i].name === name) { + tarValue = newData[i].value; + } + } + var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); + const arr = name + ' ' + tarValue; + return `{text|${name}} {number|${percert}%}`;; + }, + }, + series: [ + /** 饼图上刻度 */ + { + type: 'gauge', + center: ['50%', '35%'], + radius: '46%', // 错位调整此处 + startAngle: 0, + endAngle: 360, + splitNumber: 52, + axisLine: { show: false }, + splitLine: { + // length: 39, + length: '2', + lineStyle: { + width: 5, + color: '#5CC5FF' + } + }, + axisTick: { show: false }, + axisLabel: { show: false } + }, + /** 绘制外部圆弧-2-开始圆点 */ + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((350 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((350 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (350 + -angle) * Math.PI / 180, + endAngle: (120 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((150 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((150 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (150 + -angle) * Math.PI / 180, + endAngle: (-30 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((590 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((590 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63, + startAngle: (590 + -angle) * Math.PI / 180, + endAngle: (350 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((90 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((90 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63, + startAngle: (90 + -angle) * Math.PI / 180, + endAngle: (160 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'pie', + radius: ['50%', '40%'], + center: ['50%', '35%'], + z: 10, + label: { + show: false, + position: 'center', + formatter: (params) => { + return params.name + "\r\n" + params.value + }, + rich: { + total: { + fontSize: 16, + color: '#04F5FE', + }, + efficiency: { + fontSize: 12, + color: '#00FD6D', + }, + }, + color: '#FFFFFF', + fontSize: 12, + lineHeight: 16, + }, + data: data1, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 50, // 圆角 + } + } + }, + { + type: 'pie', + radius: ['29%', '40%'], + center: ['50%', '35%'], + label: { + show: false, + }, + data: data2, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 0, // 圆角 + } + } + }, + ], + + }; + + export default options \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue new file mode 100644 index 00000000..a27cca54 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js new file mode 100644 index 00000000..550b10b9 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js @@ -0,0 +1,412 @@ +var res = [ + { value: 20, name: '交通事故' }, + { value: 1, name: '' }, + { value: 20, name: '车辆故障' }, + { value: 1, name: '' }, + { value: 15, name: '路障清除' }, + { value: 1, name: '' }, + { value: 10, name: '交通管制' }, + { value: 1, name: '' }, + { value: 5, name: '道路拥堵' }, + { value: 1, name: '' }, + { value: 5, name: '异常天气' }, + { value: 1, name: '' }, + { value: 5, name: '其他事件' }, + { value: 1, name: '' }, + { value: 10, name: '施工建设' }, + { value: 1, name: '' }, + { value: 10, name: '服务区异常' }, + { value: 1, name: '' }, + ]; + let angle = 0; //角度,用来做简单的动画效果的 + +//获取圆上面某点的坐标(x0,y0表示坐标,r半径,angle角度) +function getCirlPoint(x0, y0, r, angle) { + let x1 = x0 + r * Math.cos((angle * Math.PI) / 180); + let y1 = y0 + r * Math.sin((angle * Math.PI) / 180); + return { + x: x1, + y: y1, + }; +} + + // var res = this.evaluatedCountList; + var data1 = [], data2 = [], data3 = [], legendData = []; + var curIndex = 0; + var index = 0; + + for (var i = 0; i < res.length; i++) { + data1.push({ + value: res[i].value, + name: res[i].name, + }) + data2.push({ + value: res[i].value, + name: res[i].name, + itemStyle: { + 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); + } + + var options = { + color: ['#2867FF', 'transparent', '#58C3FF', 'transparent', '#FF6A3B', 'transparent','#FDA474', 'transparent','#FEE58F','transparent', '#8DFEBF','transparent', '#66F4DC', 'transparent','#33E27D', 'transparent','#5D8CFE','transparent',], + title: [ + { + text:'999', + top: '25%', + textAlign: 'center', + left: '50%', + textStyle: { + color: '#ffffff', + fontSize: 30, + fontFamily: 'SourceHanSansCN', + }, + }, + { + text: '总数', + top: '38%', + textAlign: 'center', + left: '50%', + textStyle: { + color: 'rgba(242, 252, 253, 0.84)', + fontSize: 16, + fontFamily: 'SourceHanSansCN', + }, + }, + ], + grid: { + top: '18%', + left: '6%', + right: '6%', + bottom: '3%', + containLabel: true + }, + tooltip: { + trigger: 'item', + formatter: '{b} : {c}:{d}' + }, + legend: { + orient: '', + left: '0%', + top: '68%', + itemWidth: 10, + itemHeight: 10, + icon:"circle", + textStyle: { + color: "#ffffff", + fontSize: 14, + lineHeight: 22, + rich: { + text: { + marginLeft:32, + fontSize: 14, + }, + number: { + fontSize: 14, + color: "#37E7FF", + marginLeft:32, + fontWeight: 'bold' + }, + unit: { + fontSize: 14, + } + } + }, + data: legendData, + formatter(name) { + const newData = res; + let tarValue = 0; + let total = 0; + for (let i = 0; i < newData.length; i++) { + total += newData[i].value; + if (newData[i].name === name) { + tarValue = newData[i].value; + } + } + var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); + const arr = name + ' ' + tarValue; + return `{text|${name}} {number|${percert}%}`;; + }, + }, + series: [ + /** 饼图上刻度 */ + { + type: 'gauge', + center: ['50%', '35%'], + radius: '46%', // 错位调整此处 + startAngle: 0, + endAngle: 360, + splitNumber: 52, + axisLine: { show: false }, + splitLine: { + // length: 39, + length: '2', + lineStyle: { + width: 5, + color: '#5CC5FF' + } + }, + axisTick: { show: false }, + axisLabel: { show: false } + }, + /** 绘制外部圆弧-2-开始圆点 */ + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((350 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((350 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (350 + -angle) * Math.PI / 180, + endAngle: (120 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((150 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((150 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.56, + startAngle: (150 + -angle) * Math.PI / 180, + endAngle: (-30 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((590 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((590 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63, + startAngle: (590 + -angle) * Math.PI / 180, + endAngle: (350 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + let x0 = api.getWidth() / 2; + let y0 = api.getHeight() / 2 - 59; + let r = Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63; + return { + type: 'circle', + shape: { + /** 角度175° 外弧2开始角度 */ + cx: x0 + r * Math.cos((90 + -angle) * Math.PI / 180), + cy: y0 + r * Math.sin((90 + -angle) * Math.PI / 180), + r: 4 + }, + style: { + fill: '#5BC4FF', + stroke: '#5BC4FF' + }, + silent: true + } + }, + data: [0] + }, + { + type: 'custom', + coordinateSystem: 'none', + renderItem: (params, api) => { + return { + type: 'arc', + shape: { + cx: api.getWidth() / 2, + cy: api.getHeight() / 2 - 59, + r: Math.min(api.getWidth(), api.getHeight()) / 2 * 0.63, + startAngle: (90 + -angle) * Math.PI / 180, + endAngle: (160 + -angle) * Math.PI / 180 + }, + style: { + fill: 'transparent', + stroke: '#5BC4FF66', + lineWidth: 2.6 + }, + silent: true + } + }, + data: [0] + }, + { + type: 'pie', + radius: ['50%', '40%'], + center: ['50%', '35%'], + z: 10, + label: { + show: false, + position: 'center', + formatter: (params) => { + return params.name + "\r\n" + params.value + }, + rich: { + total: { + fontSize: 16, + color: '#04F5FE', + }, + efficiency: { + fontSize: 12, + color: '#00FD6D', + }, + }, + color: '#FFFFFF', + fontSize: 12, + lineHeight: 16, + }, + data: data1, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 50, // 圆角 + } + } + }, + { + type: 'pie', + radius: ['29%', '40%'], + center: ['50%', '35%'], + label: { + show: false, + }, + data: data2, + labelLine: { + show: false, + }, + itemStyle: { + normal: { + borderWidth: 6, + shadowBlur: 10, + borderRadius: 0, // 圆角 + } + } + }, + ], + + }; + + export default options \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue new file mode 100644 index 00000000..78afb1da --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js new file mode 100644 index 00000000..44d47f95 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js @@ -0,0 +1,308 @@ +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:false, + trigger: "axis", + axisPointer: { + // 坐标轴指示器,坐标轴触发有效 + type: "shadow", // 默认为直线,可选为:'line' | 'shadow' + }, + textStyle: { + color: "#fff", + fontSize: 14, + }, + backgroundColor: "rgba(3, 31, 71, .0)", //设置背景颜色 + borderColor: "rgba(3, 31, 71, .0)", + formatter: "健康监测
{b1}:{c1}人", + }, + grid: { + left: "2%", + right: "4%", + top: "20%", + bottom: "10%", + containLabel: true, + }, + xAxis: { + data: xData, + show: true, + axisTick: { + show: false, + lineStyle: { + color: "#fff", + }, + }, + axisLine: { + lineStyle: { + color: "#1C82C5", + }, + }, + axisLabel: { + interval: 0, + align: "center", + rotate: "1", + margin: "20", + textStyle: { + fontSize: 12, + color: "#50A2C1", + }, + }, + }, + yAxis: [ + { + min: 0, + axisLine: { + lineStyle: { + color: "#1C82C5", + }, + }, + splitLine: { + show: true, + lineStyle: { + color: "rgba(28, 130, 197, .3)", + type: "solid", + }, + }, + axisLabel: { + color: "#DEEBFF", + textStyle: { + fontSize: 12, + }, + }, + axisTick: { + show: false, + }, + }, + ], + legend: { + // orient: 'vertical', + icon: "circle", + itemHeight: 6, + itemWidth: 6, + top: "5%", + right: "10%", + textStyle: { + color: "#fff", + }, + + data:[ + { + name:"审核通过", + itemStyle:{ + color:'#00A3FF', + }, + }, + { + 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: "#003B4E", // 100% 处的颜色 + }, + ], + false + ); + }, + }, + }, + itemStyle: { + // lenged文本 + opacity: 0.6, + 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: "#00E4BB53", // 100% 处的颜色 + }, + ], + false + ); + }, + }, + }, + itemStyle: { + // lenged文本 + opacity: 0.6, + 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: "#003B4E", // 100% 处的颜色 + }, + ], + false + ); + }, + }, + }, + itemStyle: { + // lenged文本 + opacity: 0.6, + 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; \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue new file mode 100644 index 00000000..9c27ba46 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js new file mode 100644 index 00000000..3bff0d09 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js @@ -0,0 +1,271 @@ + +/* 数据 */ +let nameList = ["00:00", "02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00"]; // 类别 +let valueList = [800, 520, 650, 950, 420, 600, 450, 720, 303, 503 , 203 ,703 , 903 ]; // 人数 +var yList = [ "1000","800","轻度拥堵","基本畅通","畅通"] +/* 数据整合 */ +let dataList = []; +nameList.map((item, index) => { + if (index === 4) { + dataList.push({ + name: item, + value: valueList[index], + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#FFB904' // 0% 处的颜色 + }, { + offset: 1, color: '#FF6969' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + borderRadius: 6 + }, + label: { show: false } + }) + } else { + dataList.push({ + name: item, + value: valueList[index], + itemStyle:{ + borderRadius: 6 + } + }) + } +}) + +var options = { + legend: { + // orient: 'vertical', + icon: "circle", + itemHeight: 8, + itemWidth: 8, + top: "5%", + x: "right", + textStyle: { + color: "#fff", + }, + }, + grid: { + top: '15%',//上边距 + right: '0',//右边距 + left: '0',//左边距 + bottom: "10%",//下边距 + containLabel: true, + }, + xAxis: { + type: 'category', + data: nameList, + axisTick: { + show: false //隐藏X轴刻度 + }, + axisLine: { + lineStyle: { + color: "rgba(49, 217, 255, 0.8)" + } + }, + axisLabel: { + show: true, + color: '#B6E6FF', + fontSize:8, + fontFamily: 'Source Han Sans CN-Regular', + }, + }, + yAxis: [{ + type: 'value', + name: "", + max: 1200, + min:0, + splitNumber:5, + nameTextStyle: { + color: '#B6E6FF', + fontSize: 13, + fontFamily: 'Source Han Sans CN-Regular', + align: "left", + verticalAlign: "center", + }, + axisLabel: { + fontSize: 13, + color: '#B6E6FF', + fontFamily: 'HarmonyOS Sans-Regular', + // formatter:function(value,index){ + // return yList[index] + // } + }, + axisLine: { + show: false, + }, + axisTick: { + show: false + }, + splitLine: { + lineStyle: { + color: 'rgba(49, 217, 255, 0.5)', + } + }, + }], + series: [ + { + 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: "#32BB8A90" }, + { offset: 1, color: "#32BB8A00" }, + ], + global: false, + }, + }, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: '#32BB8A', + }, + lineStyle: { + width:2, + }, + + data: [1000, 800, 520, 600, 900, 700, 700,1000, 800, 520, 600, 900, 700, 700], // 折线图的数据 + }, + { + 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: [600, 700, 900, 400, 500, 800, 600,600, 700, 900, 400, 500, 800, 600], // 折线图的数据 + }, + { + name: '微信发布', + type: 'line', + symbol: 'circle', + symbolSize: 0, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: '#E2BA74', + }, + smooth: true, + areaStyle: { + width: 4, + opacity: 0.25, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0.389, color: "#E2BA7490" }, + { offset: 1, color: "#E2BA7400" }, + ], + global: false, + }, + }, + lineStyle: { + width: 2, + }, + data: [850, 810, 712, 580, 480, 480, 780,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + },{ + name: '微博发布', + type: 'line', + symbol: 'circle', + symbolSize: 0, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: '#51BFA4', + }, + 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, + }, + }, + lineStyle: { + width: 2, + }, + data: [850, 810, 712, 580, 480, 480, 780,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + },{ + name: '短信发布', + type: 'line', + symbol: 'circle', + symbolSize: 0, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: '#08BAF4', + }, + 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, + }, + }, + lineStyle: { + width: 2, + }, + data: [850, 410, 712, 680, 50, 280, 480,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + }, + ] +} + +export default options; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue new file mode 100644 index 00000000..924b5dc9 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js new file mode 100644 index 00000000..9f9a2f2b --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js @@ -0,0 +1,271 @@ + +/* 数据 */ +let nameList = ["00:00", "02:00", "04:00", "06:00", "08:00", "10:00", "12:00", "14:00", "16:00", "18:00", "20:00", "22:00"]; // 类别 +let valueList = [800, 520, 650, 950, 420, 600, 450, 720, 303, 503 , 203 ,703 , 903 ]; // 人数 +var yList = [ "1000","800","轻度拥堵","基本畅通","畅通"] +/* 数据整合 */ +let dataList = []; +nameList.map((item, index) => { + if (index === 4) { + dataList.push({ + name: item, + value: valueList[index], + itemStyle: { + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [{ + offset: 0, color: '#FFB904' // 0% 处的颜色 + }, { + offset: 1, color: '#FF6969' // 100% 处的颜色 + }], + global: false // 缺省为 false + }, + borderRadius: 6 + }, + label: { show: false } + }) + } else { + dataList.push({ + name: item, + value: valueList[index], + itemStyle:{ + borderRadius: 6 + } + }) + } +}) + +var options = { + legend: { + // orient: 'vertical', + icon: "circle", + itemHeight: 8, + itemWidth: 8, + top: "5%", + x: "right", + textStyle: { + color: "#fff", + }, + }, + grid: { + top: '10%',//上边距 + right: '0',//右边距 + left: '0',//左边距 + bottom: "10%",//下边距 + containLabel: true, + }, + xAxis: { + type: 'category', + data: nameList, + axisTick: { + show: false //隐藏X轴刻度 + }, + axisLine: { + lineStyle: { + color: "rgba(49, 217, 255, 0.8)" + } + }, + axisLabel: { + show: true, + color: '#B6E6FF', + fontSize:8, + fontFamily: 'Source Han Sans CN-Regular', + }, + }, + yAxis: [{ + type: 'value', + name: "", + max: 1200, + min:0, + splitNumber:5, + nameTextStyle: { + color: '#B6E6FF', + fontSize: 13, + fontFamily: 'Source Han Sans CN-Regular', + align: "left", + verticalAlign: "center", + }, + axisLabel: { + fontSize: 13, + color: '#B6E6FF', + fontFamily: 'HarmonyOS Sans-Regular', + // formatter:function(value,index){ + // return yList[index] + // } + }, + axisLine: { + show: false, + }, + axisTick: { + show: false + }, + splitLine: { + lineStyle: { + color: 'rgba(49, 217, 255, 0.5)', + } + }, + }], + series: [ + { + 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: [1000, 800, 520, 600, 900, 700, 700,1000, 800, 520, 600, 900, 700, 700], // 折线图的数据 + }, + { + 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: [600, 700, 900, 400, 500, 800, 600,600, 700, 900, 400, 500, 800, 600], // 折线图的数据 + }, + { + name: '微信发布', + type: 'line', + symbol: 'circle', + symbolSize: 0, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + color: '#E2BA74', + }, + smooth: true, + areaStyle: { + width: 4, + opacity: 0.25, + color: { + type: 'linear', + x: 0, + y: 0, + x2: 0, + y2: 1, + colorStops: [ + { offset: 0.389, color: "#E2BA7490" }, + { offset: 1, color: "#E2BA7400" }, + ], + global: false, + }, + }, + lineStyle: { + width: 2, + }, + data: [850, 810, 712, 580, 480, 480, 780,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + },{ + name: '微博发布', + type: 'line', + symbol: 'circle', + symbolSize: 0, + // yAxisIndex: 1, // 与第二个 y 轴关联 + itemStyle: { + 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: [850, 810, 712, 580, 480, 480, 780,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + },{ + 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: [850, 410, 712, 680, 50, 280, 480,850, 810, 712, 580, 480, 480, 780], // 折线图的数据 + }, + ] +} + +export default options; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue new file mode 100644 index 00000000..a3fa9c0f --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue @@ -0,0 +1,66 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通事故.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通事故.png new file mode 100644 index 00000000..ca288136 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通事故.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通拥堵.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通拥堵.png new file mode 100644 index 00000000..9ee3ddeb Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通拥堵.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通管制.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通管制.png new file mode 100644 index 00000000..baf87026 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通管制.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/其他事件.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/其他事件.png new file mode 100644 index 00000000..e3f3da33 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/其他事件.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/异常天气.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/异常天气.png new file mode 100644 index 00000000..a4f41870 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/异常天气.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/施工建设.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/施工建设.png new file mode 100644 index 00000000..d1042784 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/施工建设.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/服务区异常.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/服务区异常.png new file mode 100644 index 00000000..12d1c69f Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/服务区异常.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/路障清除.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/路障清除.png new file mode 100644 index 00000000..e7be2ee1 Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/路障清除.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/车辆故障.png b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/车辆故障.png new file mode 100644 index 00000000..f002ed8c Binary files /dev/null and b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/车辆故障.png differ diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue new file mode 100644 index 00000000..96139f77 --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue @@ -0,0 +1,242 @@ + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue new file mode 100644 index 00000000..ef8fab4e --- /dev/null +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue @@ -0,0 +1,177 @@ + + + + + + \ No newline at end of file