Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-hs into develop

wangqin
hui 1 year ago
parent
commit
5f9be97aaa
  1. 3
      ruoyi-ui/package.json
  2. 9
      ruoyi-ui/src/common/menuData.js
  3. 54
      ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue
  4. 2
      ruoyi-ui/src/views/JiHeExpressway/components/Descriptions.vue
  5. 18
      ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue
  6. 1
      ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue
  7. 1
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/index.vue
  8. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
  9. 49
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  10. 464
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/data.json
  11. 20
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/data.js
  12. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue
  13. 148
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue
  14. 516
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalPlan/index.vue
  15. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue
  16. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  17. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue
  18. 527
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/assets/charts.js
  19. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/index.vue
  20. 459
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js
  21. 157
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js
  22. 144
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js
  23. 51
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue
  24. 12
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue
  25. BIN
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/maintainQuery/assets/online_bj.jpg
  26. 157
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/maintainQuery/index.vue
  27. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue
  28. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js
  29. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
  30. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventSource/assets/charts.js
  31. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherForecast/index.vue
  32. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue
  33. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/flowstate/assets/charts.js
  34. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/heightway/index.vue
  35. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue
  36. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue
  37. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
  38. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
  39. 3
      ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss

3
ruoyi-ui/package.json

@ -49,6 +49,7 @@
"crypto-js": "4.0.0",
"dayjs": "^1.11.7",
"debounce": "^1.2.0",
"deepmerge": "^4.3.1",
"dplayer": "^1.26.0",
"echarts": "^5.2.2",
"echarts-liquidfill": "^3.1.0",
@ -152,4 +153,4 @@
"> 1%",
"last 2 versions"
]
}
}

9
ruoyi-ui/src/common/menuData.js

@ -115,7 +115,14 @@ export default [
name: "statisticalAnalysis",
path: "/maintain/statisticalAnalysis",
component: "maintenanceOperations/statisticalAnalysis/index.vue",
}]
},
{
title: "设备查询",
name: "maintainQuery",
path: "/maintain/maintainQuery",
component: "maintenanceOperations/maintainQuery/index.vue",
}
]
},
{
title: "公众服务",

54
ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue

@ -63,14 +63,22 @@ export default {
'--reverse-scale',
''
],
[
'--middle-scale',
''
],
];
if (scaleX > scaleY) {
cssGlobalVariable[0][1] = `scaleX(${1 / scaleX * scaleY})`;
// cssGlobalVariable[0][1] = `scaleX(${1 / scaleX * scaleY})`;
cssGlobalVariable[0][1] = `scaleX(${1 - (scaleX - scaleY)})`;
cssGlobalVariable[1][1] = `scaleY(${1 / scaleX})`;
cssGlobalVariable[2][1] = `scaleX(${1 - (scaleX - scaleY) / 2})`;
} else {
cssGlobalVariable[0][1] = `scaleY(${1 / scaleY * scaleX})`;
// cssGlobalVariable[0][1] = `scaleY(${1 / scaleY * scaleX})`;
cssGlobalVariable[0][1] = `scaleX(${1 - (scaleY - scaleX)})`;
cssGlobalVariable[1][1] = `scaleX(${1 / scaleY})`;
cssGlobalVariable[2][1] = `scaleX(${1 - (scaleY - scaleX) / 2})`;
}
cssGlobalVariable.forEach((data) => {
@ -94,47 +102,35 @@ export default {
body {
.keep-ratio {
transform: var(--keep-ratio);
transition: all .15s linear;
&[origin] {
transform-origin: attr(origin);
}
&-left {
transform-origin: left;
}
&-right {
transform-origin: right;
}
}
&-bottom {
transform-origin: bottom;
}
.reverse-ratio {
transform: var(--reverse-scale);
}
&-top {
transform-origin: top;
}
.middle-ratio {
transform: var(--middle-scale);
}
.reverse-scale {
transform: var(--reverse-scale);
.keep-ratio,
.reverse-ratio,
.middle-ratio {
transition: all .15s linear;
&-left {
&[origin="left"] {
transform-origin: left;
}
&-right {
&[origin="right"] {
transform-origin: right;
}
&-bottom {
transform-origin: bottom;
&[origin="top"] {
transform-origin: top;
}
&-top {
transform-origin: top;
&[origin="bottom"] {
transform-origin: bottom;
}
}
}

2
ruoyi-ui/src/views/JiHeExpressway/components/Descriptions.vue

@ -1,5 +1,5 @@
<template>
<div class='Descriptions' :style="getStyle()">
<div class='Descriptions keep-ratio' origin="left" :style="getStyle()">
<div class="item" v-for="(item, index) in list" :key="`${item.key || item.label}${index}`"
:style="[gridStyle(item, index), transformStyle(itemStyle)]">
<div class="title text" :style="transformStyle(titleStyle)">

18
ruoyi-ui/src/views/JiHeExpressway/components/Dialog/index.vue

@ -17,6 +17,10 @@
</div>
<img class="bottom-right" src="@screen/images/dialog/right-bottom.svg">
<div class="footer" v-if="$slots.footer">
<slot name="footer"></slot>
</div>
</BackgroundClip>
</div>
</Transition>
@ -127,7 +131,7 @@ export default {
}
.dialog-content {
padding: 10px 20px 20px 20px;
padding: 9px 21px 21px 21px;
max-height: 96vh;
}
@ -136,5 +140,17 @@ export default {
right: 0;
bottom: 0;
}
.footer {
display: flex;
align-items: center;
gap: 9px;
width: 100%;
justify-content: flex-end;
margin-bottom: 21px;
padding: 0 36px;
// padding: 21px 36px;
// padding-top: 9px;
}
}
</style>

1
ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue

@ -171,6 +171,7 @@ export default {
width: 100%;
gap: 15px 15px;
overflow-x: hidden;
padding-right: 9px;
.formItem {
display: flex;

1
ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/index.vue

@ -79,6 +79,7 @@ export default {
color: #fff;
overflow-y: auto;
height: 100%;
padding-right: 9px;
.node {
width: 100%;

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

@ -544,7 +544,7 @@ export default {
text-shadow: 0px 1px 4px #f29600;
.num {
font-size: 10px;
// font-size: 10px;
}
.unit {

49
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue

@ -30,9 +30,6 @@
<!-- <Camera :data="dialogConfig.data" :visible="dialogConfig.visibleType === 1" /> -->
<component :dialogData="dialogConfig.data" visible :device="dialogConfig.data" :is="dialogConfig.component"
@change="handleCameraChange" @update:visible="handleCameraChange" />
<!-- <InfoBoard :device="testData.device" :visible.sync="testData.visible"></InfoBoard> -->
</Bg1>
</template>
@ -55,31 +52,31 @@ export default {
DrivingGuidance,
InfoBoard,
Bg1
},
},
data() {
return {
testData:{
visible:true,
device: {
"id": 904,
"iotDeviceId": "81221-65535",
"groupId": null,
"productId": 0,
"stakeMarkId": "k59+289",
"direction": "1",
"deviceName": "大学城入口站前板",
"deviceType": 2,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": "{\"screenSize\":\"160*80\"}",
"remark": null,
"createTime": "2024-01-10T15:48:59.000+08:00",
"updateTime": null
}
},
// testData:{
// visible:true,
// device: {
// "id": 904,
// "iotDeviceId": "81221-65535",
// "groupId": null,
// "productId": 0,
// "stakeMarkId": "k59+289",
// "direction": "1",
// "deviceName": "",
// "deviceType": 2,
// "installationDate": null,
// "productionDate": null,
// "durableYears": null,
// "installationSite": null,
// "useState": null,
// "otherConfig": "{\"screenSize\":\"160*80\"}",
// "remark": null,
// "createTime": "2024-01-10T15:48:59.000+08:00",
// "updateTime": null
// }
// },
layerData: [],
active: "事件专题",
tabContentData: [],

464
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/data.json

@ -0,0 +1,464 @@
[
{
"id": 1882,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K60+000—K65+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1883,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K75+000—K81+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1884,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K101+000—K104+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1885,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K110+000—K112+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1886,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K147+000—K152+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1887,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K162+000—K166+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1888,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K205+000—K207+000",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1889,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K59+290",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1890,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K72+844",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1891,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K83+885",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1892,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K86+499",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1893,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K99+750",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1894,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K105+904",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1895,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K117+878",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1896,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K126+224",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1897,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K145+934",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1898,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K155+652",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1899,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K163+250",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1900,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K173+600",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1901,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K179+140",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": null,
"latitude": null
},
{
"id": 1902,
"iotDeviceId": null,
"groupId": null,
"productId": 285,
"stakeMarkId": "K190+500",
"direction": null,
"deviceName": "智能行车诱导系统",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": "2024-01-17T22:50:56.000+08:00",
"updateTime": null,
"longitude": "116.147183",
"latitude": "35.612834"
},
{
"id": 99999,
"iotDeviceId": null,
"groupId": null,
"productId": 286,
"stakeMarkId": "k59+289",
"direction": "2",
"deviceName": "不知",
"deviceType": 12,
"installationDate": null,
"productionDate": null,
"durableYears": null,
"installationSite": null,
"useState": null,
"otherConfig": null,
"remark": null,
"createTime": null,
"updateTime": null,
"longitude": null,
"latitude": null
}
]

20
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/data.js

@ -0,0 +1,20 @@
// import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
export const searchFormList = [
{
label: "岗位:",
key: "key009",
type: "select",
options: {
type: "daterange",
},
},
{
label: "驻点:",
key: "key018",
type: "select",
options: {
type: "daterange",
},
},
];

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/index.vue

@ -22,7 +22,7 @@
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" />
<InputSearch style="width: 402px;" :formList="searchFormList" />
</div>
<div class='body'>
@ -35,6 +35,7 @@
import PeopleCard from "./../../components/PeopleCard/index.vue";
import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import { searchFormList } from "./data";
export default {
name: 'FirstResponders',
@ -45,6 +46,7 @@ export default {
},
data() {
return {
searchFormList
}
}
}

148
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue

@ -1,26 +1,26 @@
<template>
<Card class='DispatchLiaison' title="调度联络">
<template #title-suffix>
<ButtonGradient class="title-button">
调度
</ButtonGradient>
</template>
<Descriptions :list="list" style="gap: 24px; flex: 1;">
<template #content-phone1="{ data: { text } }">
{{ text }}
<img src="./images/phone.svg" />
</template>
<template #content-phone2="{ data: { text } }">
{{ text }}
<img src="./images/phone.svg" />
<img src="./images/camera.svg" />
</template>
<template #content-rescueVehicles="{ data: { text } }">
{{ text }}
<img src="./images/rescueVehicles.svg" />
</template>
</Descriptions>
</Card>
<Card class='DispatchLiaison' title="调度联络">
<template #title-suffix>
<ButtonGradient class="title-button">
调度
</ButtonGradient>
</template>
<Descriptions :list="list" style="gap: 24px; flex: 1;">
<template #content-phone1="{ data: { text } }">
{{ text }}
<img src="./images/phone.svg" />
</template>
<template #content-phone2="{ data: { text } }">
{{ text }}
<img src="./images/phone.svg" />
<img src="./images/camera.svg" />
</template>
<template #content-rescueVehicles="{ data: { text } }">
{{ text }}
<img src="./images/rescueVehicles.svg" />
</template>
</Descriptions>
</Card>
</template>
<script>
@ -29,62 +29,62 @@ import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Descriptions from '@screen/components/Descriptions.vue';
export default {
name: 'DispatchLiaison',
components: {
Card,
ButtonGradient,
Descriptions
},
data() {
return {
list: [
{
label: '业务单位',
text: '山东正晨科技股份有限公司',
gridColumn: 2
},
{
label: '值班领导',
text: '张亮亮',
},
{
label: '手机',
key: "phone1",
text: '18888888888',
},
{
label: '调度人员',
text: '',
gridColumn: 2
},
{
label: '路管人员',
text: '王一博',
},
{
label: '手机',
key: "phone2",
text: '16666666666',
},
{
label: '救援车辆',
key: "rescueVehicles",
text: '鲁A34567 (大型清障车)',
gridColumn: 2
},
]
}
}
name: 'DispatchLiaison',
components: {
Card,
ButtonGradient,
Descriptions
},
data() {
return {
list: [
{
label: '业务单位',
text: '山东正晨科技股份有限公司',
gridColumn: 2
},
{
label: '值班领导',
text: '张亮亮',
},
{
label: '手机',
key: "phone1",
text: '18888888888',
},
{
label: '调度人员',
text: '',
gridColumn: 2
},
{
label: '路管人员',
text: '王一博',
},
{
label: '手机',
key: "phone2",
text: '16666666666',
},
{
label: '救援车辆',
key: "rescueVehicles",
text: '鲁A34567 (大型清障车)',
gridColumn: 2
},
]
}
}
}
</script>
<style lang='scss' scoped>
.DispatchLiaison {
::v-deep {
.content {
display: flex;
align-items: center;
}
}
::v-deep {
.content {
display: flex;
align-items: center;
}
}
}
</style>

516
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalPlan/index.vue

@ -1,7 +1,7 @@
<template>
<Card class='DisposalPlan' title="处置预案">
<canvas ref="FlowCanvasRef" />
</Card>
<Card class='DisposalPlan' title="处置预案">
<canvas ref="FlowCanvasRef" class="keep-ratio" />
</Card>
</template>
<script>
@ -11,291 +11,291 @@ import { CanvasFlow } from "./utils";
import { merge } from "lodash";
function getDefaultBlockOption() {
return {
width: 100,
height: 30,
radius: 9,
linearGradient: "linear-gradient(180deg, #005C79 0%, #009BCC 100%)",
text: {
font: "PingFang SC",
fontSize: 14,
color: "#FFFFFF"
},
}
return {
width: 100,
height: 30,
radius: 9,
linearGradient: "linear-gradient(180deg, #005C79 0%, #009BCC 100%)",
text: {
font: "PingFang SC",
fontSize: 14,
color: "#FFFFFF"
},
}
}
function getDefaultLegendOption() {
return {
width: 9,
height: 9,
y: 0,
text: {
font: "PingFang SC",
fontSize: 9,
align: 'left',
color: "#FFFFFF"
},
}
return {
width: 9,
height: 9,
y: 0,
text: {
font: "PingFang SC",
fontSize: 9,
align: 'left',
color: "#FFFFFF"
},
}
}
const status = {
0: `linear-gradient(180deg, #004960 0%, #004B62 100%)`,
1: `linear-gradient(90deg, #006121 0%, #488000 100%)`,
2: `linear-gradient(180deg, #005C79 0%, #009BCC 100%)`,
0: `linear-gradient(180deg, #004960 0%, #004B62 100%)`,
1: `linear-gradient(90deg, #006121 0%, #488000 100%)`,
2: `linear-gradient(180deg, #005C79 0%, #009BCC 100%)`,
}
export default {
name: 'DisposalPlan',
components: {
Card
},
data() {
return {
data: null
}
},
watch: {
data() {
this.draw();
}
},
mounted() {
this.canvasFlow = new CanvasFlow(this.$refs.FlowCanvasRef);
name: 'DisposalPlan',
components: {
Card
},
data() {
return {
data: null
}
},
watch: {
data() {
this.draw();
}
},
mounted() {
this.canvasFlow = new CanvasFlow(this.$refs.FlowCanvasRef);
this.draw();
},
methods: {
drawBlock({ x, y, width, height, backgroundColor, linearGradient,
radius,
text: {
color, text, fontSize, fontWeight, fontFamily
} = {} }) {
this.draw();
},
methods: {
drawBlock({ x, y, width, height, backgroundColor, linearGradient,
radius,
text: {
color, text, fontSize, fontWeight, fontFamily
} = {} }) {
if (linearGradient) this.canvasFlow.setLinearGradient(...this.canvasFlow.transformCssLinearGradient(x, y, width, height, linearGradient))
if (linearGradient) this.canvasFlow.setLinearGradient(...this.canvasFlow.transformCssLinearGradient(x, y, width, height, linearGradient))
this.canvasFlow.drawRectangle({ x, y, width, height, backgroundColor, radius });
this.canvasFlow.drawRectangle({ x, y, width, height, backgroundColor, radius });
if (text) {
this.canvasFlow.fillText(text, { x, y, color, fontSize, fontWeight, fontFamily }, { width, height });
}
},
drawLegend({ x, y, width, height, backgroundColor, linearGradient,
radius,
text: {
text, ...textOptions
} = {} }) {
if (text) {
this.canvasFlow.fillText(text, { x, y, color, fontSize, fontWeight, fontFamily }, { width, height });
}
},
drawLegend({ x, y, width, height, backgroundColor, linearGradient,
radius,
text: {
text, ...textOptions
} = {} }) {
if (linearGradient) this.canvasFlow.setLinearGradient(...this.canvasFlow.transformCssLinearGradient(x, y, width, height, linearGradient))
if (linearGradient) this.canvasFlow.setLinearGradient(...this.canvasFlow.transformCssLinearGradient(x, y, width, height, linearGradient))
this.canvasFlow.drawRectangle({ x, y, width, height, backgroundColor, radius });
this.canvasFlow.drawRectangle({ x, y, width, height, backgroundColor, radius });
if (text) {
this.canvasFlow.fillText(text, { ...textOptions, x: x + width + 3, y: y + height / 2, }, { height });
}
},
drawLine({ x, y, vertices }) {
this.canvasFlow.drawLine({ x, y, color: '#154D6A', lineWidth: 6 }, vertices);
},
draw() {
const { clientWidth } = this.$refs.FlowCanvasRef;
if (text) {
this.canvasFlow.fillText(text, { ...textOptions, x: x + width + 3, y: y + height / 2, }, { height });
}
},
drawLine({ x, y, vertices }) {
this.canvasFlow.drawLine({ x, y, color: '#154D6A', lineWidth: 6 }, vertices);
},
draw() {
const { clientWidth } = this.$refs.FlowCanvasRef;
const defaultBlockOption = getDefaultBlockOption();
const defaultBlockOption = getDefaultBlockOption();
const halfWidth = defaultBlockOption.width / 2;
const halfWidth = defaultBlockOption.width / 2;
this.canvasFlow.clear();
this.canvasFlow.clear();
const legends = [
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 150,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "未完成"
}
})
},
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 210,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "进行中"
}
})
},
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 270,
linearGradient: "linear-gradient(180deg, #005C79 0%, #009BCC 100%)",
text: {
text: "已完成"
}
})
}
]
const legends = [
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 150,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "未完成"
}
})
},
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 210,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "进行中"
}
})
},
{
type: 'drawLegend',
options: merge(getDefaultLegendOption(), {
x: 270,
linearGradient: "linear-gradient(180deg, #005C79 0%, #009BCC 100%)",
text: {
text: "已完成"
}
})
}
]
const blockList = [
{
type: 'drawBlock',
key: "DisposalPlan",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 24,
text: {
text: "处置预案"
}
})
},
{
type: 'drawBlock',
key: "AnalyzeConfirm",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 75,
text: {
text: "分析确认"
}
})
},
{
type: 'drawBlock',
key: "InstructionsGiven",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 7 - halfWidth,
y: 123,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "指令下达"
}
})
},
{
type: 'drawBlock',
key: "OnSiteConfirmation",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 7 * 6 - halfWidth,
y: 123,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "现场确认"
}
})
},
{
type: 'drawBlock',
key: "OnSiteDisposal",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 170,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "现场处置"
}
})
},
{
type: 'drawBlock',
key: "FollowUpProcessing",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 225,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "后续处理"
}
})
},
];
const blockList = [
{
type: 'drawBlock',
key: "DisposalPlan",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 24,
text: {
text: "处置预案"
}
})
},
{
type: 'drawBlock',
key: "AnalyzeConfirm",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 75,
text: {
text: "分析确认"
}
})
},
{
type: 'drawBlock',
key: "InstructionsGiven",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 7 - halfWidth,
y: 123,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "指令下达"
}
})
},
{
type: 'drawBlock',
key: "OnSiteConfirmation",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 7 * 6 - halfWidth,
y: 123,
linearGradient: "linear-gradient(90deg, #006121 0%, #488000 100%)",
text: {
text: "现场确认"
}
})
},
{
type: 'drawBlock',
key: "OnSiteDisposal",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 170,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "现场处置"
}
})
},
{
type: 'drawBlock',
key: "FollowUpProcessing",
options: merge(getDefaultBlockOption(), {
x: clientWidth / 2 - halfWidth,
y: 225,
linearGradient: "linear-gradient(180deg, #004960 0%, #004B62 100%)",
text: {
text: "后续处理"
}
})
},
];
const linePoints = [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[0].options.y + blockList[0].options.height,
vertices: [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2
}
]
},
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2,
vertices: [
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2,
}
]
},
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[4].options.y,
vertices: [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[5].options.y,
}
]
},
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height,
vertices: [
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[4].options.y + blockList[4].options.height / 2,
},
{
x: blockList[4].options.x,
y: blockList[4].options.y + blockList[4].options.height / 2,
}
]
},
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[3].options.y + blockList[3].options.height,
vertices: [
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[4].options.y + blockList[4].options.height / 2,
},
{
x: blockList[4].options.x - blockList[3].options.width,
y: blockList[4].options.y + blockList[4].options.height / 2,
}
]
},
];
const linePoints = [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[0].options.y + blockList[0].options.height,
vertices: [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2
}
]
},
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2,
vertices: [
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height / 2,
}
]
},
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[4].options.y,
vertices: [
{
x: blockList[0].options.x + blockList[0].options.width / 2,
y: blockList[5].options.y,
}
]
},
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[2].options.y + blockList[2].options.height,
vertices: [
{
x: blockList[2].options.x + blockList[2].options.width / 2,
y: blockList[4].options.y + blockList[4].options.height / 2,
},
{
x: blockList[4].options.x,
y: blockList[4].options.y + blockList[4].options.height / 2,
}
]
},
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[3].options.y + blockList[3].options.height,
vertices: [
{
x: blockList[3].options.x + blockList[3].options.width / 2,
y: blockList[4].options.y + blockList[4].options.height / 2,
},
{
x: blockList[4].options.x - blockList[3].options.width,
y: blockList[4].options.y + blockList[4].options.height / 2,
}
]
},
];
linePoints.forEach(item => this.drawLine(item));
linePoints.forEach(item => this.drawLine(item));
[...blockList, ...legends].forEach(item => {
this[item.type]?.(item.options)
})
}
},
[...blockList, ...legends].forEach(item => {
this[item.type]?.(item.options)
})
}
},
}
</script>
<style lang='scss' scoped>
.DisposalPlan {
::v-deep {
.content {
display: flex;
flex-direction: column;
}
}
::v-deep {
.content {
display: flex;
flex-direction: column;
}
}
canvas {
flex: 1;
width: 100%;
height: 100%;
}
canvas {
flex: 1;
width: 100%;
height: 100%;
}
}
</style>

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

@ -29,7 +29,7 @@
<div class="bottom">
<ElSelect placeholder="请选择关键点" />
<RadioGroup :list="[{ key: 'input', label: '输入' }, { key: 'upload', label: '上传' }]" value="input" type="button" />
<ElInput placeholder="请输入调度指令" />
<ElInput v-model="test" placeholder="请输入调度指令" />
<ButtonGradient class="title-button special-button">
发送
</ButtonGradient>
@ -63,6 +63,7 @@ export default {
emit: ['fullHeight'],
data() {
return {
test: null,
timeLine1List,
// timeLine2List: Array.from({ length: 6 }).map(() => ({
// title: "",

9
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue

@ -11,7 +11,12 @@
<TimeLine1 :data="timeLine1List" />
<TimeLine2 :data="timeLine2List" style="flex: 1;" />
</div>
<template #footer>
<Button style="padding: 0 24px;">确认</Button>
<Button :style="{ backgroundColor: '#C9C9C9', padding: '0 24px' }"> 取消</Button>
</template>
</Dialog>
</template>
@ -24,6 +29,7 @@ import { formList, timeLine1List } from "./data"
import { timeLine2List } from "@screen/pages/control/event/commandDispatch/Cards/DisposalProcess/data.js"
import Video from "@screen/components/Video";
import Carousel from "./Carousel/index.vue"
import Button from '@screen/components/Buttons/Button.vue';
export default {
name: 'EventDetail',
@ -33,7 +39,8 @@ export default {
TimeLine1,
TimeLine2,
Video,
Carousel
Carousel,
Button
},
model: {
prop: 'visible',

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/index.vue

@ -10,8 +10,8 @@
</Transition>
<div class="footer">
<Button>修改</Button>
<Button style="background: #C9C9C9;">取消</Button>
<Button style="padding:0 24px;">保存</Button>
<Button style="background: #C9C9C9;padding:0 24px;">取消</Button>
</div>
</div>
</Dialog>

527
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/assets/charts.js

@ -1,391 +1,176 @@
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,
import * as echarts from "echarts";
var options = {
tooltip: {
showContent: true,
trigger: 'axis',
backgroundColor: 'rgba(8,36,68,.7)',
color: '#fff',
textStyle: {
color: '#fff',
},
})
data3.push({
value: res[i].value,
name: res[i].name,
itemStyle: {
opacity: 0.1,
},
legend: {
top: '5%',
right: '10',
icon: 'circle',
itemWidth: 10,
itemHeight: 10,
textStyle: {
color: '#fff',
fontSize: 12,
},
})
if ( res[i].name != "" )
legendData.push(res[i].name);
}
var options = {
color: ['#5CC5FF', 'transparent', '#54EFD5', 'transparent', '#FD9666', 'transparent', '#5C8CFE', 'transparent', '#51D5AD', 'transparent'],
title: [
},
grid: {
left: '30%',
right: '20%',
top: '10%',
bottom: '10%',
// width: 250,
},
xAxis: [
{
text:'999',
top: '25%',
textAlign: 'center',
left: '50%',
textStyle: {
color: '#ffffff',
fontSize: 30,
fontFamily: 'SourceHanSansCN',
},
splitLine: {
show: false,
},
type: 'value',
show: false,
},
],
yAxis: [
{
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,
splitLine: {
show: false,
},
number: {
fontSize: 14,
color: "#37E7FF",
marginLeft:32,
fontWeight: 'bold'
axisLine: {
//y轴
show: false,
},
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: '40%', // 错位调整此处
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-开始圆点 <left-top> */
{
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.50;
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
type: 'category',
axisTick: {
show: false,
},
style: {
fill: '#5BC4FF',
stroke: '#5BC4FF'
inverse: true,
data: [
'大学城收费站',
'大学城收费站',
'大学城收费站',
'大学城收费站',
'大学城收费站',
],
axisLabel: {
color: '#fff',
fontSize: 14,
margin:20,
},
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.50,
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.50;
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.50,
startAngle: (150 + -angle) * Math.PI / 180,
endAngle: (-30 + -angle) * Math.PI / 180
},
style: {
fill: 'transparent',
stroke: '#5BC4FF66',
lineWidth: 2.6
type: 'category',
inverse: true,
axisTick: 'none',
axisLine: 'none',
show: true,
axisLabel: {
textStyle: {
color: '#A7D6F4',
fontSize: '14',
},
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((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.56,
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.56;
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.56,
startAngle: (90 + -angle) * Math.PI / 180,
endAngle: (160 + -angle) * Math.PI / 180
},
style: {
fill: 'transparent',
stroke: '#5BC4FF66',
lineWidth: 2.6
},
silent: true
}
},
data: [0]
// data: value,
data: [900, 380, 360, 340, 320],
},
],
series: [
{
type: 'pie',
radius: ['45%', '39%'],
center: ['50%', '35%'],
z: 10,
label: {
show: false,
position: 'center',
formatter: (params) => {
return params.name + "\r\n" + params.value
name: '收费站限行(次)',
type: 'bar',
barGap: '120%',
barWidth: 10, // 柱子宽度
showBackground: true,
MaxSize: 0,
backgroundStyle: {
color: '#0BA7DA32',
},
rich: {
total: {
fontSize: 16,
color: '#04F5FE',
},
efficiency: {
fontSize: 12,
color: '#00FD6D',
},
label: {
show: false,
// color: '#A7D6F4',
// fontSize: 14,
// distance: 20, // 距离
// formatter: '{c} ', // 这里是数据展示的时候显示的数据
// align: "center",
// position: [290, 0]
}, // 柱子上方的数值
itemStyle: {
barBorderRadius: [0, 4, 4, 0], // 圆角(左上、右上、右下、左下)
color: new echarts.graphic.LinearGradient(
1,
0,
0,
0,
[
{
offset: 0,
color: '#48d0ca',
},
{
offset: 0.5,
color: '#61D8FF',
},
{
offset: 1,
color: '#61D8FF00',
},
],
false
), // 渐变
},
color: '#FFFFFF',
fontSize: 12,
lineHeight: 16,
},
data: data1,
labelLine: {
show: false,
},
itemStyle: {
normal: {
borderWidth: 6,
shadowBlur: 10,
borderRadius: 50, // 圆角
}
}
},
{
type: 'pie',
radius: ['25%', '39%'],
center: ['50%', '35%'],
label: {
show: false,
},
data: data2,
labelLine: {
show: false,
},
itemStyle: {
normal: {
borderWidth: 6,
shadowBlur: 10,
borderRadius: 0, // 圆角
}
}
data: [900, 380, 360, 340, 320],
},
{
name: '收费站封闭(次)',
type: 'bar',
barWidth: 10, // 柱子宽度
showBackground: true,
MaxSize: 0,
backgroundStyle: {
color: '#0BA7DA32',
},
label: {
show: false,
// color: '#A7D6F4',
// fontSize: 14,
// distance: 20, // 距离
// formatter: '{c} ', // 这里是数据展示的时候显示的数据
// align: "center",
position: ['100%', 0]
}, // 柱子上方的数值
itemStyle: {
barBorderRadius: [0, 4, 4, 0], // 圆角(左上、右上、右下、左下)
color: new echarts.graphic.LinearGradient(
1,
0,
0,
0,
[
{
offset: 0,
color: '#FF6969',
},
{
offset: 0.5,
color: '#FF696955',
},
{
offset: 1,
color: '#FFB90410',
},
],
false
), // 渐变
},
data: [900, 380, 360, 340, 320, 300, 280, 260, 400, 380, 360, 340, 320, 300, 280, 260],
},
],
],
};
};
export default options
export default options;

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/index.vue

@ -58,7 +58,7 @@
}
}
.charts {
height:376px;
height:326px;
width: 100%;
}

459
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js

@ -1,180 +1,317 @@
import * as echarts from "echarts";
/* 数据 */
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",
let xData = [
"大学城-长清",
"长清-孝里",
"孝里-平阴北",
"平阴北-平阴",
"平阴-平阴南",
"平阴南-东平",
"东平-梁山东",
"梁山东-梁山",
"梁山-嘉祥西",
"梁山东-梁山",
];
let data1 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120];
let data2= [120, 340, 750, 600, 400, 700, 900, 200, 540, 320];
let data3 = [200, 530, 920, 400, 600, 700, 300, 800, 900, 120];
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: "健康监测<br>{b1}:{c1}人",
},
grid: {
top: '20%',//上边距
right: '0',//右边距
left: '0',//左边距
bottom: "10%",//下边距
grid: {
left: "2%",
right: "4%",
top: "10%",
bottom: "5%",
containLabel: true,
},
xAxis: {
type: 'category',
data: nameList,
},
xAxis: {
data: xData,
show: true,
axisTick: {
show: false //隐藏X轴刻度
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "rgba(49, 217, 255, 0.8)"
}
lineStyle: {
color: "#1C82C5",
},
},
axisLabel: {
show: true,
color: '#B6E6FF',
fontSize:8,
fontFamily: 'Source Han Sans CN-Regular',
interval: 0,
align: "center",
rotate: "1",
margin: "20",
textStyle: {
fontSize: 12,
color: "#50A2C1",
},
},
},
yAxis: [{
type: 'value',
name: "",
max: 1000,
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,
},
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,
},
},
axisTick: {
show: false
],
legend: {
// orient: 'vertical',
icon: "circle",
itemHeight: 6,
itemWidth: 6,
top: "5%",
right: "10%",
textStyle: {
color: "#fff",
},
splitLine: {
lineStyle: {
color: 'rgba(49, 217, 255, 0.5)',
}
data:[
{
name:"交通特征",
itemStyle:{
color:'#51BFA4',
},
},
{
name:"饱和度",
itemStyle:{
color:'#08BAF4',
},
},
{
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: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00A3FF", // 0% 处的颜色
},
{
offset: 1,
color: "#00A3FF00", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
}],
series: [
// 下半截柱状图linear-gradient(180deg, #61D8FF 0%, #003B4E 100%); linear-gradient(180deg, #06D7B1 0%, #003B4E 100%)
{
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: "#32BB8A99" },
{ offset: 1, color: "#32BB8A00" },
],
global: false,
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
);
},
},
// 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: '#E2BA74',
},
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: "##E2BA7490" },
{ offset: 1, color: "##E2BA7400" },
],
global: false,
},
},
itemStyle: {
// lenged文本
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
opacity: 1,
color: function (params) {
var a = params.name;
console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#01D2EE", // 0% 处的颜色
},
{
offset: 1,
color: "#01D2EE00", // 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% 处的颜色
},
},
data: [600, 700, 900, 400, 500, 800, 600,600, 700, 900, 400, 500, 800, 600], // 折线图的数据
},
]
}
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity:1,
color: function (params) {
var a = params.name;
console.log("==========a=============",a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#32BB8A", // 0% 处的颜色
},
{
offset: 1,
color: "#32BB8A00", // 100% 处的颜色
},
],
false
);
},
},
data: data2,
},
{
name: '路段里程数',
stack: '我不叠加',//添加stack属性,相同的stack值的数据类型将会叠加不并列,值为自定义值
type: 'line',//换为line 实现折线与柱状图
data: data3,
color:"#E2BA74"
}
],
};
export default options;
export default options;

157
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js

@ -0,0 +1,157 @@
let zData = ["侧翻", "撞障碍物", "自燃", "追尾", "撞护栏", "货物洒落"];
let lc = [450, 500, 250, 340,450, 500];
let lc2 = [400, 550, 200, 140,400, 550];
let options = {
tooltip: {
show: true,
trigger: "axis",
backgroundColor: "rgba(17,95,182,0.5)", //设置背景颜色
textStyle: {
color: "#fff",
},
formatter: "{b}:{c}人",
},
grid: {
right: "4%",
top: "12%",
left: "2%",
bottom: "0%",
containLabel: true,
},
xAxis: {
type: "category",
boundaryGap: true,
data: zData,
axisLabel: {
interval: 0,
textStyle: {
color: "rgba(255, 255, 255, 0.80)",
fontSize: 16
},
},
axisTick: {
//坐标轴刻度相关设置。
show: false,
},
axisLine: {
//坐标轴轴线相关设置
lineStyle: {
color: "#fff",
},
},
splitLine: {
//坐标轴在 grid 区域中的分隔线。
show: false,
},
},
yAxis: [
{
type: "value",
splitNumber: 6,
axisLabel: {
show: true,
textStyle: {
color: "rgba(255, 255, 255, 0.90)",
fontSize: 16
},
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
color: "rgba(255, 255, 255, 0.40)",
},
},
},
],
series: [
{
name: "从业人员",
type: "pictorialBar",
stack: "数量",
label: {
normal: {
show: false,
position: "top",
textStyle: {
color: "#FFFFFF",
fontSize: 16,
},
},
},
itemStyle: {
normal: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "#0085FF", // 0% 处的颜色
},
{
offset: 1,
color: "#0085FF00", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
}
},
},
symbol: "path://M48 0 L49 17 C52 72 68 125 96 173 H0 C25 125 41 73 46 19 L48 0Z",
data: lc,
},
{
name: "去年同期数量",
type: "pictorialBar",
stack: "else",
barGap: "10%",
boundaryGap:"100%",
label: {
normal: {
show: false,
position: "top",
textStyle: {
color: "#FFFFFF",
fontSize: 16,
},
},
},
itemStyle: {
normal: {
color: {
type: "linear",
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: "#01D2EE", // 0% 处的颜色
},
{
offset: 1,
color: "rgba(0, 194, 255,0)", // 100% 处的颜色
},
],
globalCoord: false, // 缺省为 false
}
},
},
symbol: "path://M48 0 L49 17 C52 72 68 125 96 173 H0 C25 125 41 73 46 19 L48 0Z",
data: lc2,
},
],
};
export default options;

144
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js

@ -0,0 +1,144 @@
const sxnja = [
400,400,400
];
const sxnja2 = [
700,700,700
];
const minNumber = 90;
const minArray = [];
sxnja.map((value) => {
minArray.push(parseFloat((value - minNumber).toFixed(2)))
})
console.log(minArray)
let xaxisData = [
'客车',
'货车',
'专项车',
];
var options = {
title: {
text: '单位/%',
top: '4%',
left: '3%',
textStyle: {
fontSize: '10px',
fontWeight: 300,
color: '#B5C5D4',
opacity: 0.8
}
},
tooltip: {
valueFormatter: function (value) {
return (value + minNumber).toFixed(2) + ' %';
}
},
legend: {
// orient: 'vertical',
icon: "circle",
itemHeight: 6,
itemWidth: 6,
top: "5%",
right: "0%",
textStyle: {
fontSize:10,
color: "#fff",
},
},
grid: {
left: '1%',
right: '0%',
top: '16%',
bottom: '0%',
containLabel: true
},
xAxis: {
type: 'category',
data: xaxisData,
axisLine: {
show: true,
lineStyle: {
width: 1,
color: '#545454'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#B5C5D4',
fontSize: '10px',
interval: 0
}
},
yAxis: [
{
// type: 'value',
// min: function (value) {
// return value.min*0.9;
// },
type: 'value',
min: 0,
max:900,
splitNumber: 9,
// max: yAxisMax,
axisLine: {
show: false,
lineStyle: {
width: 1,
color: '#545454'
}
},
splitLine: {
show: true,
lineStyle: {
color: '#B2C2D3',
opacity: 0.3,
type: 'dotted'
}
},
axisTick: {
show: false
},
axisLabel: {
color: '#B5C5D4',
fontSize: '12px',
formatter: (value) => {
return value + minNumber
}
}
}
],
series: [
{
name: '事件数量(起)',
data: minArray,
type: 'pictorialBar',
symbol: 'roundRect',
symbolRepeat: true,
symbolSize: [12, 5],
// symbolOffset: symbolOffset,
// barWidth:'40%',
itemStyle: {
color: '#20E7FF'
}
},
{
barGap: "10%",
name: '平均处置时长(分钟)',
data: sxnja2 ,
type: 'pictorialBar',
symbol: 'roundRect',
symbolRepeat: true,
symbolSize: [12, 5],
// symbolOffset: symbolOffset,
// barWidth:'40%',
itemStyle: {
color: '#20FFC9'
}
}
]
};
export default options;

51
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue

@ -1,7 +1,8 @@
<template>
<div class='congestion'>
<WgtTitle :title="'今日发布趋势分析'"></WgtTitle>
<div class="board">
<WgtTitle :title="'事件分析'"></WgtTitle>
<div class="main-board" >
<div class="board board-m">
<div class="searchPanel_1" >
<el-date-picker
size="mini"
@ -17,8 +18,16 @@
<el-button type="primary" size="mini" class="btnSearch" icon="el-icon-search">查询</el-button>
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left" >重置</el-button>
</div>
<div class="charts" id="postTrendsMonth"></div>
<div class="charts" id="chart1"></div>
</div>
<div class="board board-l">
<div class="charts" id="chart2"></div>
</div>
<div class="board board-s">
<div class="charts" id="chart3"></div>
</div>
</div>
</div>
</template>
@ -26,6 +35,9 @@
import WgtTitle from "../../../../../perception/widgets/title";
import * as echarts from "echarts";
import chartsStatistics from "./assets/charts";
import charts2 from "./assets/charts2";
import charts3 from "./assets/charts3";
export default {
name: 'postTrendsMonth',
components: {
@ -46,8 +58,14 @@
mounted() {
setTimeout(() => {
this.$nextTick(() => {
var myChart = echarts.init(document.getElementById('postTrendsMonth'));
var myChart = echarts.init(document.getElementById('chart1'));
myChart.setOption(chartsStatistics);
var myChart1 = echarts.init(document.getElementById('chart2'));
myChart1.setOption(charts2);
var myChart2 = echarts.init(document.getElementById('chart3'));
myChart2.setOption(charts3);
});
});
},
@ -57,9 +75,32 @@
<style lang='scss' scoped>
.congestion {
width: 100%;
.main-board {
display: inline-flex;
width:100%;
height:350px;
flex-direction: row;
}
.board-m {
width: calc(100% / 6 * 3) !important;
margin-right:15px;
}
.board-l {
width: calc(100% / 6 * 2) !important;
margin-right:15px;
}
.board-s {
width: calc(100% / 6 * 1) !important;
}
.board{
position: relative;
height:300px;
height:350px;
width: 100%;
padding: 0px 20px;
background: linear-gradient(180deg, rgba(6,66,88,0.2) 0%, #064258 100%);

12
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue

@ -1,8 +1,6 @@
<template>
<div class='TrafficFlow'>
<section class="foot">
<el-tabs class="footTabs" v-model="activeName" @tab-click="changeTabs">
<el-tab-pane label="公众服务统计分析" name="first">
<div class="header-shot" >
<TopComponent />
</div>
@ -14,13 +12,7 @@
</div>
<div class="content" >
<PostTrendsMonth class="content-mi" />
<NucleusThrough class="content-mi" />
</div>
</el-tab-pane>
<el-tab-pane label="公众服务统计查询" name="second">
</el-tab-pane>
</el-tabs>
</section>
</div>
</template>
@ -123,7 +115,7 @@
}
.content-mi {
width: calc(50%);
width: calc(100%);
margin-right:20px;
}
@ -150,6 +142,8 @@
width: 98%;
margin: auto;
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 1;
pointer-events: none;

BIN
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/maintainQuery/assets/online_bj.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

157
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/maintainQuery/index.vue

@ -0,0 +1,157 @@
<template>
<div class='TrafficFlow'>
</div>
</template>
<script>
export default {
name: 'maintainQuery',
components: {
},
data(){
return {
}
},
methods:{
changeTabs(){
}
}
}
</script>
<style lang='scss' scoped>
::v-deep .el-tabs__item{
display: inline-flex;
justify-content: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #FFFFFF;
min-width:128px;
position: relative;
left:10px;
}
::v-deep .el-tabs__active-bar {
min-width:128px;
}
::v-deep .el-tabs__nav-wrap::after {
background-color: #133242;
opacity: 0.1;
}
.footTabs {
display: inline;
width:100%;
}
.TrafficFlow {
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
padding-top: 15px;
background-image: url('./assets/online_bj.jpg');
background-size: 100% 100%;
.header-shot{
width: 98%;
margin: auto;
margin-top: 15px;
height:160px;
}
.content {
width: 100%;
margin: auto;
display: flex;
flex: 1;
pointer-events: none;
margin-top: 0px;
>div {
pointer-events: auto;
}
.content-l {
width: calc(32.2%);
margin-right:20px;
display: inline-flex;
flex-direction: column;
>div {
margin-bottom:15px;
}
}
.content-r {
width: calc(33%);
display: inline-flex;
}
.content-rm {
width: calc(33%);
margin-right:10px;
}
.content-mi {
width: calc(50%);
margin-right:20px;
}
.content-mi:last-child {
margin-right:10px;
}
.content-m {
display: inline-flex;
width: 66%;
margin-right:20px;
}
}
.foot{
width: 98%;
margin: auto;
display: flex;
justify-content: space-between;
flex: 1;
pointer-events: none;
margin-top: 8px;
>div {
pointer-events: auto;
}
.foot-w {
width:100%;
}
.foot-l {
width: 726px;
}
.foot-m {
width: 613px;
}
.foot-r {
width: 493px;
}
}
}
</style>

6
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue

@ -148,7 +148,7 @@
width="'100%'"
:page-size="pageSize"
:current-page.sync="pageIndex"
layout="prev, pager, next"
layout="total, sizes, prev, pager, next"
:total="pageTotal">
</Pagination>
</div>
@ -545,6 +545,10 @@ import * as echarts from "echarts";
this.pageSize = pageSize;
this.pageTotal = res.total;
this.tableData = res.rows;
this.tableData.forEach((it,index)=>{
it.nem = (pageIndex - 1 ) * ( pageSize ) + index + 1;
})
}
})
}

4
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js

@ -68,7 +68,7 @@ let data = [{
tooltip: {
confine: true,
textStyle: {
fontSize: 10 // 字体大小
fontSize: 14 // 字体大小
},
},
title:{ //圆环中间内容
@ -108,11 +108,13 @@ let data = [{
color: "#fff",
rich:{
a:{
width:45,
fontSize: 12,
},
b:{
fontSize:14,
color:"#37E7FF",
marginLeft:-0,
}
},
},

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue

@ -160,7 +160,7 @@
}
],
quarter:"",
year:"2024",
year:"year",
list:[
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'},
{name:'大学城-长清', direction:'济南方向', state:"正常",speed:'108.14km/h', follow:'161'},

5
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventSource/assets/charts.js

@ -59,8 +59,11 @@ var options = {
tooltip: {
confine: true,
textStyle: {
fontSize: 10 // 字体大小
fontSize: 10, // 字体大小
color:'#fff',
},
color:'#fff',
backgroundColor:"#064258",
},
title:{ //圆环中间内容
text: '99% ',

6
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherForecast/index.vue

@ -190,13 +190,13 @@
justify-content: center;
align-items: center;
margin-top:23px;
width: 47px;
height: 16px;
width: 67px;
height: 18px;
background: rgba(245,80,80,0.4);
border-radius: 2px 2px 2px 2px;
opacity: 1;
border: 1px solid #F55050;
font-size: 10px;
font-size: 12px;
font-family: Source Han Sans SC, Source Han Sans SC;
font-weight: 400;
color: #F55050;

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/index.vue

@ -2,7 +2,7 @@
<div class='congestion'>
<div class="board">
<div class="queryList" >
<Card v-for="(item, index) in data" :cardData="item" :keyMap="keyMap" :gap="'10px'" :key="index">
<Card v-for="(item, index) in data" :cardData="item" :keyMap="keyMap" :hasBtn="false" :gap="'10px'" :key="index">
<template #form-start="{ data }">
<div class="endSpecial">
{{ data.start }} <img src="./assets/weater.png" />

4
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/flowstate/assets/charts.js

@ -54,6 +54,7 @@ var options = {
name: '车流量',
type: 'value',
max: 300,
interval:100,
axisLabel: {
color: '#FFF'
},
@ -68,11 +69,12 @@ var options = {
}
},
{
interval:100,
gridIndex: 1,
name: '',
type: 'value',
inverse: true,
max: 250,
max: 300,
axisLabel: {
color: '#FFF'
},

9
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/heightway/index.vue

@ -5,10 +5,10 @@
<div class="searchPanel">
<div >起始桩号k</div>
<el-input class="inputZh" v-model="start"></el-input>
<el-input class="inputZh inputJl" v-model="start"></el-input>
<el-input class="inputZh inputJl" v-model="start1"></el-input>
<div >结束桩号k</div>
<el-input class="inputZh" v-model="start"></el-input>
<el-input class="inputZh inputJl" v-model="start"></el-input>
<el-input class="inputZh" v-model="start2"></el-input>
<el-input class="inputZh inputJl" v-model="start3"></el-input>
<div >路段方向</div>
<el-select v-model="area" class="selectRoad" placeholder="请选择">
<el-option
@ -52,6 +52,9 @@ export default {
data() {
return {
start:'',
start1:'',
start2:'',
start3:'',
areaOptions: [{
value: '济南',
label: '济南'

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue

@ -14,7 +14,7 @@
<el-table
:border="false"
:data="tableData"
height="670"
height="790"
style="width: 100%">
<el-table-column
prop="nem"

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue

@ -2,7 +2,7 @@
<Card2 class='Auditlists' title="审核列表">
<InputSearch style="width: 100%;" />
<div class="body">
<ListItem v-for="item in list" :key="item.id" :data="item" />
<ListItem v-for="item in list" :key="item.id" :data="item" origin="left" class="middle-ratio" />
</div>
<div class="footer">
<Pagination :total="90" />

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

@ -5,7 +5,6 @@
<div class="searchPanel_1" >
<el-date-picker
size="mini"
v-if="year != 'quarter'"
class="selectRoad"
v-model="dateTime"
style="width:140px;"
@ -33,7 +32,7 @@
},
data() {
return {
dateTime:"",
}
},
@ -82,7 +81,8 @@
margin-bottom: 10px;
left:20px;
top:2px;
z-index: 10000;
z-index:100000;
div{
white-space: nowrap;
margin-right: 4px;

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

@ -1,6 +1,6 @@
<template>
<div class='congestion'>
<WgtTitle :title="'今日发布趋势分析'"></WgtTitle>
<WgtTitle :title="'月发布渠道趋势分析'"></WgtTitle>
<div class="board">
<div class="searchPanel_1" >
<el-date-picker

3
ruoyi-ui/src/views/JiHeExpressway/scss/el-reset.scss

@ -260,7 +260,8 @@ div.el-picker-panel.el-date-range-picker.el-popper {
}
}
.current span {
.current span,
.current a {
background-color: #56cefe;
}
td.in-range div {

Loading…
Cancel
Save