From 628a6ddc2bade729f0828ed6cf1e12d26289376e Mon Sep 17 00:00:00 2001 From: yyl <279235553@qq.com> Date: Fri, 12 Jan 2024 17:34:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=9C=80=E6=96=B0=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=85=AC=E4=BC=97=E6=9C=8D=E5=8A=A1=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/common/menuData.js | 4 + .../pages/publicService/index.vue | 0 .../pages/publicService/statistics/index.vue | 0 .../auditAnalytics/assets/charts.js | 391 +++++++++++++++++ .../components/auditAnalytics/index.vue | 66 +++ .../channelAnalytics/assets/charts.js | 392 +++++++++++++++++ .../components/channelAnalytics/index.vue | 66 +++ .../eventTypeAnalysis/assets/charts.js | 412 ++++++++++++++++++ .../components/eventTypeAnalysis/index.vue | 66 +++ .../nucleusThrough/assets/charts3.js | 308 +++++++++++++ .../components/nucleusThrough/index.vue | 66 +++ .../components/postTrendsDay/assets/charts.js | 271 ++++++++++++ .../components/postTrendsDay/index.vue | 66 +++ .../postTrendsMonth/assets/charts.js | 271 ++++++++++++ .../components/postTrendsMonth/index.vue | 66 +++ .../topComponent/assets/交通事故.png | Bin 0 -> 2389 bytes .../topComponent/assets/交通拥堵.png | Bin 0 -> 2399 bytes .../topComponent/assets/交通管制.png | Bin 0 -> 3013 bytes .../topComponent/assets/其他事件.png | Bin 0 -> 2322 bytes .../topComponent/assets/异常天气.png | Bin 0 -> 2258 bytes .../topComponent/assets/施工建设.png | Bin 0 -> 2227 bytes .../topComponent/assets/服务区异常.png | Bin 0 -> 2293 bytes .../topComponent/assets/路障清除.png | Bin 0 -> 2359 bytes .../topComponent/assets/车辆故障.png | Bin 0 -> 2244 bytes .../components/topComponent/index.vue | 242 ++++++++++ .../pages/service/publicService/index.vue | 177 ++++++++ 26 files changed, 2864 insertions(+) delete mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/publicService/index.vue delete mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/publicService/statistics/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通事故.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通拥堵.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/交通管制.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/其他事件.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/异常天气.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/施工建设.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/服务区异常.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/路障清除.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/assets/车辆故障.png create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/topComponent/index.vue create mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/index.vue 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 0000000000000000000000000000000000000000..ca2881360d6b44a91cc5b7fa4787f6c8d3a74613 GIT binary patch literal 2389 zcmV-b399yqP)Px;4@pEpRA@uZnhR{3)fLBo=lkp=cH)wf5(r~78mJSfK-Yw_Zj}l{dqA7A7PJjU zDRdh!#(0!!Oq$rrLug`@Y=Vt9qZC#)ULq;#RJOt5AP zdzSlsv6Hr`{n_aTSCJk2yZ7AxIrqHoITj{5R=g15q*yD_$Xw9r2-8tH2GM$u2xtzZ z8}vUQZ=obn_a$EIeU%kwg>VYUgJ9PAl06hdbuOw`fNa5au3_HH_rj132YzjG3Cc=D zR-O%GI3Hx~dcd#lc%+Y?;)K>U_}UIL@|G1SkC5m}W%Ufwgp{ zt}15K2M7QA7iwszdj??=D%a!4z=VN?C16hhZzVXrbnjinC1(tdw{(2)R^l`3IuWAa z-hk*(*nJP#ynun5!5N}!?}G78V0`eM$-6;M26y=<0z5B){0XQeS(@d$<+_c!8w!3XYeGwAm!GR}Cs zj-!tG14iHG-FKEF-oagI^R#<$ofeGuci!Lj)1u41Y%2?A7o5hv;5(DnK(~XG zbW`I>YwGbg;ksudD4EPEc5J)LpEsrP1mcOsWHWzZ=Z+27)0y1xnEz~O=po*J@4ljp z2Af^zN9eYe1^K;4!9Savhas* zvv>C;^mM<$v7fsg*PTte{{}w%U_&S)w`qp*Btj(=)zlM>#{94P(z^<}tgh?-Zy74(iHdQhx)?RJESU8J!4F7@k8oviMcH9Z zyop%sblm7HT$zqC84>jr(x`p?5Tjd3r&f~g-%+--4|MKL7=47URHM-G${dK?iz646 zO?Yy{QXS-8~mj9d87kf@qq-!EJb6`DusI$1p4r zI+E8ToQ%jFWr2^yrxB}t49`4Dx_=GX!Gr6tJ)L;%Gvu=O6OCS8*hjIKl`Z6Q8%Xbc z3NLILqCdf~N$5;I0rCdI+OohWCN0H{oKNq^Uk$bHu=;kCDsn@&Ax;8F;5ZH7d=^*c z;+d_a_WV2)E!DG7{k+h*@wH)MD}nOdR&C;Tz@tBPeW(p%wPz8H+(ag`kj&tIx*v&? zsC}OP^w%-jz7X_Iz%$ob$=fU35=44JEE=6sm)JlqcMpRDe+swGsiv;>d5rEvy?-z? zbl*Pu9snmm6VJj_mY*oBGOuNL4HEC>Q)?QM9;Mk zm2TAZLEhM;4q*z&;Uf_|aGU;%22@mE#xrY&6Tt1kXGsuoPDhzNY!|nZ8`@YBkLt$q zB_D~d3&4#ttUI(mJ^&a1E?`y5VxNWtq^iaWx|UMr2($u>-l>0|@I8eH(RLzj!2a&WJ)= zT^UjC{U{a~(*Z>OiLKYb0E$ft2SC4pF-wS6rHV`5w1J!$L|B-KBe#VHpUt#`%sFuW zh@R)wCQupsH=;%(IZvSHHYm>bPs+FF5r(5xrhB2ZmQ#@BeqS17x_zaTY7UPEn)A-y=-gGvvsy9>03Xm#KS2Kui-84-{|qM`(6RD z$=!D1wTp_YjCV9RtAec34x7)b^x^PmDCzh2FG0O43v(lp<Abv1@l5W1*M{I-O?Ukp-BTkEjo?Xcx)ai2!?yik!g-Pb}kdk>HS-XR{l zmS|0R=|w0hjWfw;2QG_jS$xzVcP3u|d9m#5vQiKgt<%#{J(spqzvSC^frhQSV^)Wj zenp#4V39R=HLFJ|$bKDv-?~jlveR$9gw_2CU@3d4axw53+FA+*y)XD@UT!85O`>{P zMHREM5rte}Qwq;}5Z66rY~x}4TBTtH(a7S8?w29)gq{|t%O6p0C|;|~Q|#P$r=Rty zd^)Pc$m_JVUa>#JMe6gDIuNQrKEe9D-VA1luD&wr^Oi-wGcxIE91i=xpMYQ1R-0?} z(%n~PXC!|Px;8A(JzRA@uZnhlIp)fLBo=e^mPWp`&?WV-@l*#wlLC@ri|TNBhq(iRpfY84B9 zwrZ%Q6-Y@mMu^q6TB`LUg;b+J32hWCyAo4V14a@=W)XtMT2WCDln)))Wj|)--P67A z&CGtV?z~+n^k$QtdGFqP{^#8Db520we;O0XYQv z8OSb_1nO?$t>hLKU7k4+^3w0c>$cS3xObpjgYY@Z4uqYE>_)x)AdQIQp~eNNK%@#~ z1n7AP-^4JqozWL?c$z6STl#~e@8IjUO+w5fU<9gbaGh6C_V<~%Fa*`fC|9F=g7O=t z*R1c$KHf2Jc%$CJq5fa;3PS8bOyIv-rCdBp21s*k1MN3C<6CB zL{nkup0s%Z0}p_cqT%SYo=%`=@b!s5gI)ygg3|&#CxP4vs3e$HGq<~7jt3tYr{(y% z(+WI?)YSoGSb<@2cO&i!K5&OSKyN!G#u-+}0wZ2VCSAi-m*kyBSMc=-YoL2T3c9Ht z=~fJ?V({5_;Ybxo3?Yg!9^$zEd`nG9f$>lpX>HlWNAIr*$-^u^Lf4L;mYd%JeqCY; zjywi(W53nq+;7}YQ`770-}`PsKoQsF+zTG({deY)@d^h!n`S64fX-&xgx7Mi2LH96@!&Q(ku-w>!xec~?&E&bN@Sn&Xc zRX+x_0WLxeWI$HOJK@S{sY&^|ui8w+9nF#CVm{xuIUEBz8#Sd&oA5Ki4@mKYxH7w6 z*`cL4_?*cU7hhtn5fQ7KC5TjH4Yvv*Fjz$p)c^09e`3->0#+2gk`LayHWYZ9jT&7+ zLt~Xt_r|3VS%xDwhFWZ;Tvj%MNVE#atw4w)63c>9R9i4!5@QaNZad&Vuc%xF8bKrg zZW;LE;53dTgH(F>h^2h|!JVP#+et=OVYo@CODsgV2$4UAT0Cs{gBab7$ut4YzRNS( z;VoQBz=n3Iz;#EE&NL8>T!s_56x71DJ~KnAp!x$; zM+x;?-$I-vKw;lpdDdN|Qm=CK%ffSWgsO(zOH@|Xx@meO@O@`Hqq9656LgX z8EmlcXgo9DO5W<-O^6)sm2+334E)+M+L|q+F`P(QR?lOI6V0y`ZAR5YHHCU9+}JQ& z=R6J{e5A|%1J9gFQS^R1?==n|To797zSdaA&1x(8H1OSmx1)+dPvOW!|GY(1tqKHR za%#{)-&c?9^W5i5`eBYFpU+P!Egem)_%=MN=T^BN&tmGAunu2T27?>b= zc%sjw8>yfy{;w|JElAZ@P_q-2&oSvEfie5JO*83K3tlE!kWSbMs$0WLK3=|+#-kVK z_bw~9H~q6Z(b`GNu{lJGZ7F1kb&xnx<_D|5?`Kfcg3yR!89RXIZKti}&9Hd$^YW6f zOB_VZ^@!WMR7y&>2HwKg7VEA3n3T^I)mz+tNss&bpUJ%IgEXWNn!A7#iD%~xAR@Ck z*7Wm&D%+hq)j_~>fwwWv65ImbCR+SA(2;q#dADWZJ4b14{XVhiL$tLl3=O6zb~||6 zNoV>dePhl?nJ3h3U5Uthh`ikE@!1^Rai4C#6b!+b^xh z)_AQeC96^**P}8QHG2!v&rL8oAJ}1Y8=DS4hsaMtEFO;WDv`*}E*BPKW&uA28nb&; zgT{hf#=2DhubWGieW=d171J zJRA<-x^Mcamhol=dYK)$6L9>j(hiSE(Jg*LXOrc0<`H7W(?ii#bF+UxuB~a8ydAb& zE$&)GuL5>x(4df!}t6V1X0*zPoku(BZloXbsO+-)=B=%xNw+QoDapPH5??=$?IjPUQO-AzDjn0 zw{>^S%6?1#SmR_eX$xQnC1rOP1d>jTC7pT{k?q9KxU=Ai+v=H`mDviiU&rrSx2a3i z`>mJ$=zde<1ln4jLY&QjPj?G&J?0K5yCaJ0s<5 zaX90YpMYQ1R-0=jIn>n0&PeVo{GL?V6DU)_y&FgW_dO|*YCQ7?8~54PIIn*_sm{t| z8xDp);jjXAR`;n)#WDzU##% zB>Mh??`+iHDw~MNr3m9uMj{LbDuIa2?tQPJ>_y~lRNuj{k?oBQC;F?8{{k{QxKrAQ Ra(e&(002ovPDHLkV1fu1kLv&c literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..baf87026c8ddc98595639ce5a3293c789af9fa1e GIT binary patch literal 3013 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 Hu0mjf#An{j literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e3f3da33e5596de61bdcf44ff61b35833f78459e GIT binary patch literal 2322 zcmV+t3GMcYP)Px-%t=H+RA@uZntP1Y)fLA-=l*`Pz&g8vC<;nkqt!wbEW2VKBxswqX>lQMX>hO~p1QKz3%8s8JLRinxkyUD*|OXXbZL z_x^q}yEE)`_wGWqH=Ar`?&EyVx#xAy8R1yRy6qtsOllz&E(ARv;e1riKy)%l2wDXB z0Q6muy(n2Uc$Vk7cd_o$;<1pIac_QdR|_UsiE<^vdnmgRUO;3Y8g+v7ASOa>05Tbo zX((rdo{MlHmKg(#K8oS@ENa;`9vou_pXpeL*mc0!s6Iwu{(;gtX5zwhRKJFD12s_f_^sLHC>s#j zjM|5e8|X@eDs_nc4wh?Ce#DZN2S;OIWbn=yn;SQxdKu{L7_)D*1CM#$+9pIc0$a)T z+%%F=|99|z+&+=1=_e2xQCWkLBgYKP_W*YbL>s_#^TDB|eD~76T3c&_cM_kMZbL{x za0jA!U%JO_UBbYfVDjV+Ev|I~wZXS#?*W|y!R?<4@UjHTH=vSbam!6d3uZX@#5f(t z-}+R6myrfKi6Wb@tUua_tHCGka5w1pKM~{f)v?5g@1s~~;qosGI*n@ZZCPia`$0x^ zQ@(VMRS!NNi z{G1^8IwFc%K}_ktXmX^wzvOIjAKX_egR+YExzBE1l)l6Fu=kZejLJY+`o>(&WzD(d zfVS-K5RQ23`m8xSQ4M3zC9DY(gWyZwmM2SW#PfjF(%P6I$M}9;d12|O;1eM%L+uGH zp1(qf15(5L1hULKJ3M!Gwj@t5j<{pN;d0>060N+Ax{YhAkG7l`!n`kp1; z^sR2evRuey*C5P6Bmv?x&iYI{QPja(Z>;oLKH{3Db23;9Z@u9s`NV*JjHN?p%RU0~ zBEnX0AT!U(Vr`ZKZ?2-QK20iU@ZMWqSS)nY-*<#FnlkZMZ}0O5ulfyC&lB3(pF_+B z;AL+BGiGM7QI2=tS;?u>R}h3N6VFr9_p%o$A6V&G5~CCP``6KRa4R!rW@3Bj-0u$_ zW)a!joaEgTZaE@d-r!F=y&Y?F9PC`hl&K3zr7rQ_TVB}T_g6mZ-p#2qGN>pA5BTf6 z%4Dz)Ims7*FOB7OB&VF#t~TnR>;2JnzAlw!V*PwfI1?eDkbjeW-!Afn-k6V*PFah{ ze7X+$OWp-ZiqAU9D00Cb+(uuygwr5%g$OZZ5Hr*Xiw9 zjg9N_A0D&63X^?t~xFpB8qCi18RY?dK<9YQc9Q(N=q1{DNz38IZgiu3Rm_0m9w4>U=r265K zFBF=IiuWdJlO*}Ey9`oS6Pix?`-i~Cj}rxBZl`YI=+94w)oO--rLHVK^v-O{ZU=eB zE4%!-=kKUasd_oN=y}u-kvOKtEQH~W1g4Ar{y$e4t1&yNPyf(M>gXk?UP0?cUyN;j zaFeUMV>f$A|M1~vqP#0b)K__qvJRX0VRaI!O;w<(qOQA{;5F(ettLqQdsOhQdZu=B zse&BW@vC3>nQU9!dhyl$ktk}hj-H<76r<}9>S9_+UgJg)BahI~a1SQsSHM-S15T&4 zdGM`U4gQH8O@t{IJy#yLidnutO<&)9Y?R!BG5eX=u!FiF$trz@NE1hdtk9V6E&%LLlm??TMH0r&a;Q6)y6r?usVVGg0DK;m*p zV;+|CcE|f(O z+=9{neNQSjPWvkt_vz@lb$mUkN_}z-2g`3UY(mXL*9 zbZ#^VHzIOAmU{{0nbGig%{$PRZzA$NM4rdUjmNhSTZtm6&ta_-?RLh$hA(}mc5vW9}N87z_s69?PoWluOepeKsWm!gxyFK zC68s>fT(NNH=$er%te?6JQ}xaE^E&D0{kinTh%7*8j$cv2X~4-Y9g9-| s=QWhK5qS~Sm#{p;^F6s^{nf{R0B)ewQ#mGG)&Kwi07*qoM6N<$f`EX7C;$Ke literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a4f41870672597d4bb2dbd6d5d244520e6cf3b68 GIT binary patch literal 2258 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d10427841ea0b8409d7be652efb88df3e5d86067 GIT binary patch literal 2227 zcmV;k2u$~hP)Px-ZAnByRA@uZnh$JM^%ciI=ib*xfwpwCls|%0LFNdGgAT_=0&dBY4GIx-n~s0` zr_MMLs58sPglQ&@G9YYGx3MYAkVU}JLP%H~n2;dpD?()1#?Vx36rtGCSNey(`#bCJ z-acCJmG^GjiNBID>4&w62c@@MkAUJ5&=zs z)PbG>IfW8K-9x%&CHf*>dj0V3BPBTQgDCePe28)!;VndJQ11hfIO2GyaY6DC zDMA?sIsxGh45K;}-GRd&nO$ zP_wO|4^9Jhjq~~LU9G7eO%2{!d`eCwLKe8I z5WSSC+IIYIt zx~{;JNL?LBf~^?VTph$$f)CQ+anSF7BEgxdj|D;e0*Uq#?w)=*XI%7qBSup+;#tr*7n^obd-@<=dw<8tLjQy=ojNxuy9@m8*lZlx2(mboyWDv5Oa|vH zK*$9r%B8k_M5EL3ypxoeI ziR?t=@|Ii^d~RL=BS!z6w$}ZeerKOgJ7Hou@7Ang%-Cf#UHBVk-ap}gJ}57T;loSG z8Zd)I`$_8Sc2j@8ce|0azT@1@oT=4;v^AK3#Il1LmT;k`}#{A)B^ zILo*R<@vWkhKDmec4fu8n#clzY}uGbdo z&)rXBV{KX-MqkFTM5u^8fp9w_ze)R$B^Yy)1>YS^=l`7`FXu4}TqW3`P9^O7q%u~q zq{>|i)KFVkdM&DvPN+gl^LAP{9D0nl2nl$uqxj1@#|oLX1a#;o~&atqbU!1Z}P93qaMcqxxB)vg*x_bhjS(S4QA_ zA{sVwU55cm5V2Rn;k37{rv7~Dv|BiAAiJNryX*`LERE3M`26>bS4 zoxv88O_F@*uyP!k<@-BYOIzz|;*G~sa?8n^h9fyNH@!~oXC9}%Zfz*3D*0fxTg$ft zU+(kmD1YcW9A_4)4X9qgYu`vbp4x4q(E_pu-b-8C-~H1#-uRbr;9VCIhpgolk&;jk zry|Z9vetJOqzKXBB)pZrWmB!}L9@updJapJrfWEwdWPd2J zYDz&S1}7{`!I58wVsJIFYB_KR@FD0JkX1dF*Tzi1aRSAR{tj`Lhq^-;T?rhwwT&%@ zUqs|PeFE<#euOd)w6HU1%Wxy9-6qk#7B^ydssUr3$8jDCm8xxFruslvRf#OZ=|#^m zsd0PTGE~2bG9UmiWkjQ?!F%3Vyu>n}HsbEYjr=2H!>Kn4oR@;C(k@%it2E&dF6z5W zY;9hL(Hs2?B8*1dGP1KXyOm{(+*VX(DaZgyOFArXmu**zy9?2KLTz7np-qj}=WUO^ z38aQd*6+z4n7%#_13ZY43S8#fws_Yawla1A&r1}Q)RHC(Z?8+le#5pFe;`?b)^pZeX3fw^H)cHvcSAu`_a50gr7^)9`syb#O z#dzKpTz7K!!9(g^rC~K$kwti3`ddve4Vm#{fxG+_W!1HNl}V13RhtoKN=N$qbaaW4 zW0aOWe6_;Y=+Ea>AVh;>{(AN2^(ioysBQ|;pSLRdlaah#I1Ks3cffCJtF5&fsA~#2 z8APx-uSrBfRA@uZnrm=X)fLBo>zsQpNyy`pKorUhP$U!ur6i(QXQ(>Ev_fD6OJ4+} zrM2T!5k>vb+T!S!TB!=17EvpLfuSl&qT>uREyZsMb+Iu_lL=*{+W!Hd_|mEpMequh(|1IC>7gYU@PAECPn3`Zlif50s-l-dq@n>LipICpk z8t9G)RYHjQF^1VF^O;umdO8JCgSWw0n*ThiQ$QEuIQ!BG?DcnJh9dGj@E-Ne52Xs~ z?!mvdF^i(ycM$SXc>+gTdJQa70rnK|7K777!&lRpd&lXnmUa!^T6|n?H9`>FClQTh zy6;7smsH?saAMSdHMOe~=o)-=K@gZL#9@iOk2(4I8T1z#Pp0eTQ5ZJNq- z--|eJmVZN+mriYyc^3To$YdOO0c7@7;V$QEZOaVhEzk<4j<2dFKD-qPyp2fvkzAeN&sg7a?qN!4ebVyPk(Uu#Qu_M0#yp4P4o4*H zuMwKhDCnZ2O?+J#c`18JMTF8ODon2C0myx69gZ4qS3D0Z9OEj^6&xS4)u+^y1mDD#E z3soQ94uO|&WOiCt8E|b0{fjH{619B#zlELVe{Gl!J$66Fb@D{~gH6Vc4)* z6hTltvjZDp8BX5H2KzJ`L_=3U`3X77KKk!*+@HsiT6c4Ha671W3 zt1qu#;b001D-p>-Rq(tz4jgz0@jUXwLn#{YrvLxs@f_yhfgiNTOm~1(zmMujp?b?l zh_e{zK1kYx6ogC24_D%OwH!Iv8GK%N2n7Xiqtd|Pecx-}yJ*08vimLpTt7L-;(w>% z*o$0q&0lcbv8dJ&JH3uCPu3Cp`ea%o!YDlRsI|O(!p%XXG3}z$j(yRU z+sq;qnvdtL=lJK(oFlKOcqW0sUBTWbvLrJ#}f$N zg&UZTF^#l*J(qZ_=MQ+*Ej_b*C{RKmYc)cIcs!Y%L_HEFnVZv%U|ozqQllf*=DM$W*ICp|>#xu!RksBBbW?3s| z69ATD%<^=H=YKcmdXz_msx7M!`2>*<(k?W{vR#!ZwKz`Z;61MbVLoseH#iqHC))Qi zItS5TpZWU<#QA4h9BRrzu20^uFb+qaO}i+bC_xje!Kon>$_#uwHXd||U%a`&2XWo4 zo%V@EmjV+&qli0?U@-NaWAssAyRB_(IlKaqpQZ;NEg>Ga0sAkqa~GtYABzqo5nBOL zh~vIMR(55VYvNv*c#HjJ`OKq)Lh}fQQq?vqQT^rFsuHQdNx?bBqhX@aDR|z)2uBEI zEx>h;5e&7J#+`9BH!Z>FZMd?L-0)*5m5sKHB^q6ZY5>PsOJ2bryPU7yAaGt!R+V|rb z&Fk9t)!YZthw`#k%iCe;YH`;gdT&NIZCZc1gcFQb;WFLQ;%DEm)sc-LH5pZxmk?WO z(fVCfXHb6gZT|h(KH2i_m{nJ;_3b66X4M%6+2`@kBgZd%(|I75&ag z{yH2AF8c}iw6@w>tBHn_J?xCMosZv>%3X>w8QcXpdg*&oesG%S?7h#{=0`59C)Lrx zY{S9uA`UB2XU!#Hk(15lpP)Jml}CHu4eY3ZO`~q$c|=BIScWT>pXvRupbd8;@-sxX z;mCs*w-4J9Vv@)I4XQ&BT?e`WagX#^i)3|p7s_;m-Kcr0jd#yfR%T7)uB5#mxdo4T zt-m+0?RWe7-;U^~h_k!3n|%xdO+FXnKbB1%qPAT>6lDx>6GAcYmfxPx-@kvBMRA@uZntzN`)fLA-=f0W!#qP3zQWi08)k11eTG(Q3iTI;pT3853tJVc< zZN=IYS}~H=YN56^X+$uPQd1QKff{}oXE8Rm^+!sAlv$LjF;$vqL9imYxXb>SnRie3 zzPB?wz%IO<-B#aUGxP2}_j}GgKfd?e5&HWqc_GHdrM1LklR?KKj74P>qE#R<&6#gZ#C{aIcLp8WK#T8uXzWj4ZpQ1&9chR8dpe+Z-*F+OTNkSaum zqg((w8sQ6AMs_N?1;Zmut=&}!j=qCW?3s+%CBOx!ZpAZyMLE>x#f55Ar=VPi@^6%1 zF{AdGzQ~CV{+T`J;oDUR<3Jt-`)pv@fp}CWqk22YYk20zOdbDj6tU63Z%@ucS%%1Z z)NUFu(D?{eiV%AvmboYknNj=rnG`rZco&QlDwm@=4fIZodFM<5`~BY98bp=@+i7fG zaJr!G9sHUXN*GrD6hb8`i!svHZ(vacxLv?s2BwJ*Kc2;Ru59mVYR}-E#mAR7AjHAD z2hmj2bq8!*sK9+-QZ#-%y{8@M8GJ)>HRvVa-T8?C&sre611d?T*Dg5OFsFhKgVSkz z{U-`Mi`3InGOWY0^yDBu5qy{q_k!Niui!j?^bAVMZpAahNT+x3-htoH{LztuT`COX zhsmUCnR!_*X`BeYA?X5iKgb!=RIfnJId?2W&t8LSC|g9yWEy$%AGZ|@KAcz|ROq@1 z)3b8A!9Sgxijfr{bNl5kpBuZ7;-dOs0jGcikHXt;Urt9$;Tg-(3}p-G9HvivDX>e< z8j0jigw2QqFA9EYM%PnTy3pYbqz4LcoHyRM3i10_krh{OCR0~?RX6y=%U?!fTM@}^ zNx|SNDu*#*)EY!a=G>;eeHHKSE8G=x*{93;#>`~egvQYF4aq+sv_FoSWG2g;iI*oq>|u<|jkM6< zs?k&q*%%x!((S8JiYYF+1MtH6F3X4pzTVz;7l+?}K9bzN46?cb%RC{GT#RrDA`eEI zKjNGR@M4omryk^kLz{5Q4658124|iGK~eiA2MR?0y9?%YZi{ zfv+5L8O6o-Bb1ZLJWtG<6u6Gd=T3oaiVVI3>C{6s9epB_?C66&k8c+_%ey1oJVc_G z?~<}=$_6b5y)Z07T~D?sS-Th2CXBfPtBo`rnI9cjgpn#$U^h9-r-85b`E=w-5fxQW zfeb%oxsKF=0DMXDI#8eHrpxgMkXEbbL1u@uydqK?LElq{lvg~7nDfIV<9uBmmuaQ7 z`D+2#ipm5~O~${Sw&S}CTBEl~s=EufyyF^Pyo#du6g+PhN=-lr!Ys3w_RP;HF1it+ z9&15qUQHWG%%re*ubfbF$PIUg~s%JAv~svJ#{^hy|6ISZgt|IX5p%tnT&p zPGy!xUSDk;$VFj=h4C2qZS=`H3AHN_u{*Kr$1hu0!rwpyxQ;;HlTYa2Sz_^fBVlmFO!d}oR*B5PMC>_sv?Wm2D3!Gom#oSy zm`Z&U^%n=k%*1XY9t&Be>M&C6i2!`}=_({}j>rX7`J_3$rbvGzn8!m_=^n@DRa!8d zxs0bfMw3oER;k2`<`R#0(~5NJ0y61824IX?KuPJ&Kz>`x{U}p%)j05U2fB+(IQSAk z`8%b9et25ztGyYdn7Z0d%e%+5tHs-fX!ln4CZVPI7S!H`$iFDByy1jlZLQPDq?aIc zP*#2|#%rOyZ7i8|_COv6r~{ha0kz#b5EvvjpOQg)dR4$`0*_g)E#7^GZAiWV^5PlU z<*}oW0ORnyRg@1t@o0DKqYa&n*fDsqjZ_Q{b9eBYjtPoa=t6m5b7{7_(;(7F<&a)F z4SEHt*HQPSuLL&8Y3Tay*!5?${?WsKLbZ&_irK_VKgi8*Ya32m%Lc%wwBja8OO9~7 zbu{hnw=S|Dx`tCAw0`~*xKNlDko?wQ*4T^;10kAI?sM6w~cdWquur*+K# z!As?4;2i2E3fyg1sis+M9lck^!e%N5+kotS9|-(_Bc&{zB18O?mxl)yxs>kMPo}J z`twf3;AW(98-~IE_ZLT|R$l+!4w^6M}Wl{fc1M?ShY1E4?M`SFP-{Z-P z1Cmf2Xv;Sc`7R=_V&q2ydk>qBGVJ5ujp})bZUcP|@ecM`5e?Yk)hM$%&$;_hyENN( zk18wLC2~*Fo=IMc&-Xh2Z{V)qUGHZvqHiH)U*~Q12M}ut`tiYG*;XLxuIp=1E)KYn z;94eIg6o=T6B?re&L3Ae`23*$V)>io*Z^ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..f002ed8c5e04c4771a9f690d002e768a387bbbf5 GIT binary patch literal 2244 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 S#i5q~0000 +
+
+
+
+ {{ item.text }} {{ item.textNum }}{{ item.textEnd }} +
+
+
+ +
+
+
+ 已审核 {{ item.reviewed }} 起 +
+
+ 未审核 {{ item.noReviewed }} 起 +
+
+
+
+
+
+ + + + + + \ 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