Browse Source

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

wangqin
qingzhengli 2 years ago
parent
commit
e9e033ba52
  1. 2
      ruoyi-ui/src/api/board/board.js
  2. 38
      ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
  3. 4
      ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
  4. 11
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
  5. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
  6. 215
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
  7. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
  8. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue
  9. 49
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
  10. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/assets/charts.js
  11. 59
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue
  12. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/assets/charts.js
  13. 59
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue
  14. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsDay/assets/charts.js
  15. 26
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js
  16. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js
  17. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js
  18. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue
  19. 17
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js
  20. 205
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js
  21. 139
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js
  22. 339
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue
  23. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js
  24. 256
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
  25. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js
  26. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js
  27. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js
  28. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json
  29. 182
      ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
  30. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
  31. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
  32. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
  33. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js
  34. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
  35. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js
  36. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
  37. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
  38. 3
      ruoyi-ui/src/views/websocket.vue
  39. 5
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/api/board/board.js

@ -43,7 +43,7 @@ export function saveBoardReleaseLog(data) {
export function publishToBoard(data) { export function publishToBoard(data) {
return request({ return request({
url: '/business/board/publish', url: '/business/board/batch/publish',
method: 'post', method: 'post',
data: data data: data
}) })

38
ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue

@ -23,8 +23,8 @@
v-model="value" v-model="value"
:placeholder="placeholder" :placeholder="placeholder"
clearable clearable
@change="handleSearch" @keyup.enter.native="handleSearch"
></ElInput> ></ElInput>
<img src="./search.svg" v-show="!disable" @click="onOpenPop" /> <img src="./search.svg" v-show="!disable" @click="onOpenPop" />
</div> </div>
<div <div
@ -35,7 +35,7 @@
@click="onOpenPop" @click="onOpenPop"
> >
<span>{{ placeholder }}</span> <span>{{ placeholder }}</span>
<img src="./search.svg"/> <img src="./search.svg" />
</div> </div>
<div style="width: 100%; max-height: 360px" v-show="visible"> <div style="width: 100%; max-height: 360px" v-show="visible">
@ -128,24 +128,28 @@ export default {
}; };
}, },
}, },
mounted(){ mounted() {
// document.getElementById("app") // document.getElementById("app")
document.addEventListener("click" , ()=>{ document.addEventListener(
if(!this.isClickedBtn){ "click",
setTimeout(() => { () => {
this.visible = false; if (!this.isClickedBtn) {
}, 100) setTimeout(() => {
} this.visible = false;
this.isClickedBtn = false; }, 100);
} , false) }
this.isClickedBtn = false;
},
false
);
}, },
methods: { methods: {
onOpenPop(){ onOpenPop() {
this.isClickedBtn = true; this.isClickedBtn = true;
this.visible = !this.visible; this.visible = !this.visible;
}, },
onClickMask(){ onClickMask() {
this.visible = false; this.visible = false;
}, },
handleShow() { handleShow() {
@ -193,7 +197,7 @@ export default {
console.log("catch"); console.log("catch");
}); });
} }
} },
}, },
}; };
</script> </script>

4
ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js

@ -78,7 +78,7 @@ export default{
}) })
}) })
let data = { content: content, deviceId: this.selectedDevice.iotDeviceId } let data = { content: content, deviceIdList: this.checkedDeviceIds }
if (IS_TESTING) { if (IS_TESTING) {
// this.saveLog(content); // this.saveLog(content);
@ -107,7 +107,7 @@ export default{
// //
saveLog(content){ saveLog(content){
let time = moment().format("YYYY-MM-DD HH:mm:ss"); let time = moment().format("YYYY-MM-DD HH:mm:ss");
let device = this.selectedDevice; let device = this.selectedDevices;
let data = { let data = {
"createBy": store.getters.name, "createBy": store.getters.name,
"createTime": time, "createTime": time,

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

@ -9,14 +9,21 @@ import request from "@/utils/request";
* @param {1 | 2 | 3} media 参数说明: 1: http+flv; 2: rtmp; 3: hls * @param {1 | 2 | 3} media 参数说明: 1: http+flv; 2: rtmp; 3: hls
* @returns * @returns
*/ */
export function getCameraStream(camId, media = 1) { export async function getCameraStream(camId, media = 1) {
return request({ let data = await request({
url: "/video/externalVideoStreaming", url: "/video/externalVideoStreaming",
method: "get", method: "get",
params: { params: {
camId, camId,
}, },
}); });
if (data.code == 200) {
data.data.liveUrl =
"https://10.0.81.202/camera?target=" + data.data.liveUrl.substring(7);
}
return data;
} }
/** /**

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue

@ -281,7 +281,7 @@ export default {
return result return result
}); });
this.total = result.total; this.setTotal(result.total);
}) })
.finally(() => { .finally(() => {
this.isFirst = false; this.isFirst = false;

215
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue

@ -1,48 +1,56 @@
<template> <template>
<Dialog v-model="modelVisible" :title="data ? '修改' : '新增'"> <Dialog v-model="modelVisible" :title="data ? '修改' : '新增'">
<div class='AddNEditDialog'> <div class="AddNEditDialog">
<Form v-model="formData" class="form" ref="FormConfigRef" :formList="formList" column="1" labelWidth="90px" /> <Form
v-model="formData"
class="form"
ref="FormConfigRef"
:formList="formList"
column="1"
labelWidth="90px"
/>
</div> </div>
<template #footer> <template #footer>
<Button style="background-color: rgba(0, 179, 204, .3);" @click.native="modelVisible = false, submitting = false"> <Button
style="background-color: rgba(0, 179, 204, 0.3)"
@click.native="(modelVisible = false), (submitting = false)"
>
取消 取消
</Button> </Button>
<Button @click.native="handleSubmit" :loading="submitting"> <Button @click.native="handleSubmit" :loading="submitting"> 确定 </Button>
确定
</Button>
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script> <script>
import Dialog from "@screen/components/Dialog/index.vue"; import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue" import Button from "@screen/components/Buttons/Button.vue";
import Form from '@screen/components/FormConfig'; import Form from "@screen/components/FormConfig";
import * as PresetFormItems from "@screen/common/PresetFormItems.js"; import * as PresetFormItems from "@screen/common/PresetFormItems.js";
import request from "@/utils/request"; import request from "@/utils/request";
import { CameraDirectionEnumList } from "@screen/utils/enum.js" import { CameraDirectionEnumList } from "@screen/utils/enum.js";
import { Message } from "element-ui"; import { Message } from "element-ui";
import { cloneDeep, merge } from 'lodash'; import { cloneDeep, merge } from "lodash";
import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js"; import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js";
export default { export default {
name: 'AddNEditDialog', name: "AddNEditDialog",
components: { components: {
Dialog, Dialog,
Button, Button,
Form Form,
}, },
model: { model: {
prop: 'visible', prop: "visible",
event: "update:value" event: "update:value",
}, },
props: { props: {
visible: Boolean, visible: Boolean,
data: Object data: Object,
}, },
inject: ['setCurrentPage'], inject: ["setCurrentPage"],
data() { data() {
return { return {
submitting: false, submitting: false,
@ -51,11 +59,11 @@ export default {
{ {
label: "父级:", label: "父级:",
key: "parentId", key: "parentId",
type: 'select', type: "select",
options: { options: {
clearable: false, clearable: false,
options: [] options: [],
} },
}, },
// { // {
// label: "2233:", // label: "2233:",
@ -89,16 +97,16 @@ export default {
{ {
label: "机构名称:", label: "机构名称:",
key: "organizationName", key: "organizationName",
required: true required: true,
}, },
{ {
label: "方向:", label: "方向:",
key: "direction", key: "direction",
required: true, required: true,
type: 'select', type: "select",
options: { options: {
options: [CameraDirectionEnumList[0], CameraDirectionEnumList[2]], options: [CameraDirectionEnumList[0], CameraDirectionEnumList[2]],
} },
}, },
{ {
label: "地址:", label: "地址:",
@ -113,30 +121,32 @@ export default {
{ {
message: "请补全桩号", message: "请补全桩号",
callback(value, data) { callback(value, data) {
if (!value?.trim() && data.stakeMark[1]?.trim()) return false if (!value?.trim() && data.stakeMark[1]?.trim())
else return true return false;
} else return true;
} },
] },
],
}, },
{ {
rules: [ rules: [
{ {
message: "请补全桩号", message: "请补全桩号",
callback(value, data) { callback(value, data) {
if (!value?.trim() && data.stakeMark[0]?.trim()) return false if (!value?.trim() && data.stakeMark[0]?.trim())
else return true return false;
} else return true;
} },
] },
],
}, },
] ],
} },
}), }),
{ // {
label: "救援单位:", // label: ":",
key: "rescueUnit" // key: "rescueUnit"
}, // },
{ {
label: "描述:", label: "描述:",
key: "description", key: "description",
@ -148,19 +158,19 @@ export default {
autosize: { minRows: 6, maxRows: 6 }, autosize: { minRows: 6, maxRows: 6 },
showWordLimit: true, showWordLimit: true,
}, },
} },
] ],
} };
}, },
computed: { computed: {
modelVisible: { modelVisible: {
get() { get() {
return this.visible return this.visible;
}, },
set(val) { set(val) {
this.$emit('update:value', val) this.$emit("update:value", val);
} },
} },
}, },
watch: { watch: {
modelVisible: { modelVisible: {
@ -168,72 +178,89 @@ export default {
handler(bool) { handler(bool) {
if (!bool) return; if (!bool) return;
this.formData = this.formData = !this.data
!this.data ? null : { ? null
"parentId": this.data.dcOrganizations.parentId, : {
// "organizationType": this.data.dcOrganizations.organizationType, parentId: this.data.dcOrganizations.parentId,
"organizationName": this.data.dcOrganizations.organizationName, // "organizationType": this.data.dcOrganizations.organizationType,
"direction": this.data.dcOrganizations.direction, organizationName: this.data.dcOrganizations.organizationName,
"organizationAddress": this.data.dcOrganizations.organizationAddress, direction: this.data.dcOrganizations.direction,
"stakeMark": this.data.dcOrganizations.stakeMark ? [...(this.data.dcOrganizations.stakeMark || "").match(/[0-9]+/g)] : ["", ""], organizationAddress:
"rescueUnit": this.data.dcOrganizations.rescueUnit, this.data.dcOrganizations.organizationAddress,
"description": this.data.dcOrganizations.description stakeMark: this.data.dcOrganizations.stakeMark
} ? [
...(this.data.dcOrganizations.stakeMark || "").match(
this.getOptions(); /[0-9]+/g
} ),
} ]
: ["", ""],
rescueUnit: this.data.dcOrganizations.rescueUnit,
description: this.data.dcOrganizations.description,
};
},
},
}, },
methods: { methods: {
async getOptions() { async getOptions() {
const result = await getSelectOptionsStation(1); const result = await getSelectOptionsStation(1);
this.formList[0].options.options = result; this.formList[0].options.options = result;
this.formList[0].default = result[0]?.key; this.formList[0].default = result[0].key;
this.formList[0].options.options.push({
disabled: false,
key: 0,
label: "无",
});
console.log(this.formList[0].options.options);
}, },
handleSubmit() { handleSubmit() {
this.$refs.FormConfigRef.validate() this.$refs.FormConfigRef.validate().then((data) => {
.then((data) => { this.submitting = true;
this.submitting = true;
if (this.data) data.id = this.data.dcOrganizations.id; if (this.data) data.id = this.data.dcOrganizations.id;
if (typeof data.parentId != 'number') data.parentId = 0; if (typeof data.parentId != "number") data.parentId = 0;
if (data.stakeMark[0]) { if (data.stakeMark[0]) {
data.stakeMark = `K${data.stakeMark[0]}+${data.stakeMark[1]}`; data.stakeMark = `K${data.stakeMark[0]}+${data.stakeMark[1]}`;
}else{ } else {
data.stakeMark = ''; data.stakeMark = "";
} }
request({ request({
url: `/business/organization`, url: `/business/organization`,
method: this.data ? 'PUT' : 'POST', method: this.data ? "PUT" : "POST",
data data,
}) })
.then(result => { .then((result) => {
if (result.code != 200) return Message.error(`提交失败!`); if (result.code != 200) return Message.error(`提交失败!`);
Message.success(`提交成功!`); Message.success(`提交成功!`);
this.modelVisible = false; this.modelVisible = false;
this.setCurrentPage(1) this.setCurrentPage(1);
}) })
.catch((err) => { .catch((err) => {
console.log("%c [ err ]-110-「DeviceControlDialog.vue」", "font-size:15px; background:#547bf2; color:#98bfff;", err); console.log(
Message.error(`提交失败!`); "%c [ err ]-110-「DeviceControlDialog.vue」",
}) "font-size:15px; background:#547bf2; color:#98bfff;",
.finally(() => { err
this.submitting = false; );
}) Message.error(`提交失败!`);
}) })
} .finally(() => {
this.submitting = false;
});
});
},
}, },
} mounted() {
this.getOptions();
},
};
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.AddNEditDialog { .AddNEditDialog {
width: 450px; width: 450px;
display: flex; display: flex;

10
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue

@ -131,11 +131,11 @@ export default {
// }, // },
{ {
key: "cars", key: "cars",
label: "驻点车辆", label: "应急车辆",
}, },
{ {
key: "employeesNum", key: "employeesNum",
label: "驻点人员", label: "应急人员",
suffix: "人", suffix: "人",
}, },
], ],
@ -157,7 +157,6 @@ export default {
params: {}, params: {},
}) })
.then(({ data, code }) => { .then(({ data, code }) => {
console.log("Success", data);
if (code != 200) return; //Message.error(""); if (code != 200) return; //Message.error("");
this.vehicleTypeList = data; this.vehicleTypeList = data;
}) })
@ -184,6 +183,7 @@ export default {
handleOpenDialogAddEdit(data) { handleOpenDialogAddEdit(data) {
this.addNEditDialogVisible = true; this.addNEditDialogVisible = true;
this.dialogData = data; this.dialogData = data;
console.log("Dialog", data);
}, },
handleSearch(data) { handleSearch(data) {
@ -223,7 +223,6 @@ export default {
if (item.car.length > 0) { if (item.car.length > 0) {
for (var i = 0; i < item.car.length; i++) { for (var i = 0; i < item.car.length; i++) {
if (item.car[i].vehicleType == items.dictValue) { if (item.car[i].vehicleType == items.dictValue) {
// let data =
data.push(items.dictLabel + "*" + item.car[i].carNum); data.push(items.dictLabel + "*" + item.car[i].carNum);
// item.cars = items.dictLabel + "*" + item.car[i].carNum; // item.cars = items.dictLabel + "*" + item.car[i].carNum;
} }
@ -231,8 +230,7 @@ export default {
} }
}); });
}); });
console.log(999, this.dataList);
console.log(999, data);
this.dataList.forEach((item) => { this.dataList.forEach((item) => {
if (item.car.length > 0) { if (item.car.length > 0) {
item.cars = data.join("、"); item.cars = data.join("、");

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

@ -115,8 +115,8 @@ export default {
data: {} data: {}
}), }),
// // ,
getSelectOptionsStation() getSelectOptionsStation(2)
]) ])
.then(([post, organization]) => { .then(([post, organization]) => {

49
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js

@ -1,11 +1,20 @@
import { cloneDeep, merge } from "lodash"; import { cloneDeep, merge } from "lodash";
import * as PresetFormItems from "@screen/common/PresetFormItems.js"; import * as PresetFormItems from "@screen/common/PresetFormItems.js";
import { formList } from "../../../dispatch/EventDetailDialog/data";
export const searchFormList = [ export const searchFormList = [
PresetFormItems.startStation, PresetFormItems.startStation,
PresetFormItems.endStation PresetFormItems.endStation
]; ];
//里程计算
const mileCal = (data) => {
const { startStakeMark, endStakeMark } = data;
const start = startStakeMark[0] + "." + Number(startStakeMark[1]);
const end = endStakeMark[0] + "." + Number(endStakeMark[1]);
data.mileage = (Number(end) - Number(start)).toFixed(3);
}
export const addEditFormList = [ export const addEditFormList = [
{ {
label: "部门:", label: "部门:",
@ -38,9 +47,49 @@ export const addEditFormList = [
merge(cloneDeep(PresetFormItems.startStation), { merge(cloneDeep(PresetFormItems.startStation), {
required: true, required: true,
options: {
options: [
{
ons: {
input(value, ...args) {
const { data, formList } = args.slice(-1)[0];
mileCal(data);
}
},
},
{
ons: {
input(value, ...args) {
const { data, formList } = args.slice(-1)[0];
mileCal(data);
}
},
},
]
}
}), }),
merge(cloneDeep(PresetFormItems.endStation), { merge(cloneDeep(PresetFormItems.endStation), {
required: true, required: true,
options: {
options: [
{
ons: {
input(value, ...args) {
const { data, formList } = args.slice(-1)[0];
mileCal(data);
}
},
},
{
ons: {
input(value, ...args) {
const { data, formList } = args.slice(-1)[0];
mileCal(data);
}
},
},
]
}
}), }),
{ {

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

@ -65,8 +65,9 @@ var options = {
}, },
tooltip: { tooltip: {
show: true, show: true,
// trigger: "item", valueFormatter: function (value) {
// formatter: "{b} : {c}", return value + " 起";
},
}, },
legend: { legend: {
width: "300px", width: "300px",

59
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue

@ -1,8 +1,8 @@
<template> <template>
<div class='congestion'> <div class="congestion">
<WgtTitle :title="'事件源分析'"></WgtTitle> <WgtTitle :title="'事件源分析'"></WgtTitle>
<div class="board"> <div class="board">
<div class="charts keep-ratio " id="channelAnalytics"></div> <div class="charts keep-ratio" id="channelAnalytics"></div>
</div> </div>
</div> </div>
</template> </template>
@ -11,46 +11,42 @@
import WgtTitle from "@screen/pages/perception/widgets/title"; import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts"; import * as echarts from "echarts";
import chartsStatistics from "./assets/charts"; import chartsStatistics from "./assets/charts";
import { eventSourceRatio } from "@/api/event/governanceAnalysis" import { eventSourceRatio } from "@/api/event/governanceAnalysis";
export default { export default {
name: 'RailWayDay', name: "RailWayDay",
components: { components: {
WgtTitle WgtTitle,
}, },
data() { data() {
return { return {};
}
}, },
created() { created() {},
},
methods: { methods: {
getEventSourceRatio() { getEventSourceRatio() {
return eventSourceRatio().then((response) => { return eventSourceRatio().then((response) => {
console.log("response", response) console.log("response", response);
let data = [] let data = [];
let total = null let total = null;
let nameData = [] let nameData = [];
const newObj = { value: 1, name: "" }; const newObj = { value: 1, name: "" };
for (let i = 0; i < response.data.length; i++) { for (let i = 0; i < response.data.length; i++) {
data.push({ data.push({
value: response.data[i].num, value: response.data[i].num,
name: response.data[i].eventSourceName name: response.data[i].eventSourceName,
}) });
total += response.data[i].num; total += response.data[i].num;
} }
console.log("total", total) console.log("total", total);
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
// if (i % 2 === 0) { // if (i % 2 === 0) {
// data.splice(i + 1, 0, newObj) // data.splice(i + 1, 0, newObj)
// } // }
if (data[i].name != "") { if (data[i].name != "") {
nameData.push(data[i].name) nameData.push(data[i].name);
} }
} }
console.log(6666, data, nameData) console.log(6666, data, nameData);
chartsStatistics.legend.formatter = function (name) { chartsStatistics.legend.formatter = function (name) {
let tarValue = 0; let tarValue = 0;
for (let i = 0; i < response.data.length; i++) { for (let i = 0; i < response.data.length; i++) {
@ -59,30 +55,30 @@ export default {
} }
} }
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
return `{text|${name}} {number|${percert}%}`; return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`;
}; };
chartsStatistics.legend.data = nameData; chartsStatistics.legend.data = nameData;
chartsStatistics.title[0].text = total; chartsStatistics.title[0].text = total;
// chartsStatistics.tooltip.show = false; // chartsStatistics.tooltip.show = false;
// chartsStatistics.series[1].data[0].value = total; // chartsStatistics.series[1].data[0].value = total;
chartsStatistics.series[2].data = data; chartsStatistics.series[2].data = data;
}) });
} },
}, },
async mounted() { async mounted() {
await this.getEventSourceRatio() await this.getEventSourceRatio();
setTimeout(() => { setTimeout(() => {
this.$nextTick(() => { this.$nextTick(() => {
var myChart = echarts.init(document.getElementById('channelAnalytics')); var myChart = echarts.init(document.getElementById("channelAnalytics"));
myChart.setOption(chartsStatistics); myChart.setOption(chartsStatistics);
}); });
}); });
}, },
} };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.congestion { .congestion {
width: 100%; width: 100%;
@ -94,11 +90,15 @@ export default {
border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px;
opacity: 1; opacity: 1;
border: 1px solid; border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0)) 1 1; border-image: linear-gradient(
360deg,
rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0)
)
1 1;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
} }
@ -107,4 +107,3 @@ export default {
width: 100%; width: 100%;
} }
</style> </style>

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

@ -81,7 +81,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "item", trigger: "item",
// formatter: "{b} : {c}:{d}", valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
width: "300px", width: "300px",

59
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue

@ -1,8 +1,8 @@
<template> <template>
<div class='congestion'> <div class="congestion">
<WgtTitle :title="'事件类型分析'"></WgtTitle> <WgtTitle :title="'事件类型分析'"></WgtTitle>
<div class="board"> <div class="board">
<div class="charts keep-ratio " id="eventTypeAnalysis"></div> <div class="charts keep-ratio" id="eventTypeAnalysis"></div>
</div> </div>
</div> </div>
</template> </template>
@ -11,43 +11,39 @@
import WgtTitle from "@screen/pages/perception/widgets/title"; import WgtTitle from "@screen/pages/perception/widgets/title";
import * as echarts from "echarts"; import * as echarts from "echarts";
import chartsStatistics from "./assets/charts"; import chartsStatistics from "./assets/charts";
import { allEventNum } from "@/api/event/governanceAnalysis" import { allEventNum } from "@/api/event/governanceAnalysis";
export default { export default {
name: 'RailWayDay', name: "RailWayDay",
components: { components: {
WgtTitle WgtTitle,
}, },
data() { data() {
return { return {};
}
}, },
created() { created() {},
},
methods: { methods: {
getAllEventNum() { getAllEventNum() {
return allEventNum().then((response) => { return allEventNum().then((response) => {
console.log("response", response) console.log("response", response);
let data = [] let data = [];
let total = null let total = null;
let nameData = [] let nameData = [];
const newObj = { value: 1, name: "" }; const newObj = { value: 1, name: "" };
for (let i = 0; i < response.data.length; i++) { for (let i = 0; i < response.data.length; i++) {
data.push({ data.push({
value: response.data[i].num, value: response.data[i].num,
name: response.data[i].eventName name: response.data[i].eventName,
}) });
total += response.data[i].num; total += response.data[i].num;
} }
console.log("total88", total) console.log("total88", total);
for (let i = 0; i < data.length; i++) { for (let i = 0; i < data.length; i++) {
// if (i % 2 === 0) { // if (i % 2 === 0) {
// data.splice(i + 1, 0, newObj) // data.splice(i + 1, 0, newObj)
// } // }
if (data[i].name != "") { if (data[i].name != "") {
nameData.push(data[i].name) nameData.push(data[i].name);
} }
} }
chartsStatistics.legend.data = nameData; chartsStatistics.legend.data = nameData;
@ -59,27 +55,29 @@ export default {
} }
} }
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
return `{text|${name}} {number|${percert}%}`; return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`;
}; };
chartsStatistics.title[0].text = total; chartsStatistics.title[0].text = total;
chartsStatistics.series[2].data = data; chartsStatistics.series[2].data = data;
}) });
} },
}, },
async mounted() { async mounted() {
await this.getAllEventNum() await this.getAllEventNum();
setTimeout(() => { setTimeout(() => {
this.$nextTick(() => { this.$nextTick(() => {
var myChart = echarts.init(document.getElementById('eventTypeAnalysis')); var myChart = echarts.init(
document.getElementById("eventTypeAnalysis")
);
myChart.setOption(chartsStatistics); myChart.setOption(chartsStatistics);
}); });
}); });
}, },
} };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.congestion { .congestion {
width: 100%; width: 100%;
@ -91,11 +89,15 @@ export default {
border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px;
opacity: 1; opacity: 1;
border: 1px solid; border: 1px solid;
border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0)) 1 1; border-image: linear-gradient(
360deg,
rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0)
)
1 1;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
} }
@ -104,4 +106,3 @@ export default {
width: 100%; width: 100%;
} }
</style> </style>

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

@ -3,7 +3,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
// formatter: "{b}:{c}人", valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
icon: "circle", icon: "circle",

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

@ -23,14 +23,14 @@ let options = {
// 坐标轴指示器,坐标轴触发有效 // 坐标轴指示器,坐标轴触发有效
type: "shadow", // 默认为直线,可选为:'line' | 'shadow' type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
}, },
// backgroundColor: "rgba(3, 31, 71, .0)", //设置背景颜色 valueFormatter: function (value) {
// borderColor: "rgba(3, 31, 71, .0)", return value + " 起";
// formatter: "健康监测<br>{b}:{c}人", },
}, },
grid: { grid: {
left: "0", left: "0",
right: "0", right: "0",
top: "70px", top: "90px",
bottom: "20px", bottom: "20px",
containLabel: true, containLabel: true,
}, },
@ -61,9 +61,12 @@ let options = {
}, },
yAxis: [ yAxis: [
{ {
// max: 900, name: "(起)",
// min: 0, nameTextStyle: {
// interval: 100, color: "#E5E7E8",
fomtSize: 10,
align: "right",
},
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: "#1C82C5", color: "#1C82C5",
@ -87,9 +90,12 @@ let options = {
}, },
}, },
{ {
// max: 90, name: " (分钟)",
// min: 60, nameTextStyle: {
// interval: 10, color: "#E5E7E8",
fomtSize: 10,
align: "center",
},
axisLine: { axisLine: {
show: false, show: false,
// lineStyle: { // lineStyle: {

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

@ -5,11 +5,13 @@ let options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
// formatter: "{b}:{c}人", valueFormatter: function (value) {
return value + " 起";
},
}, },
grid: { grid: {
right: "4%", right: "4%",
top: "20%", top: "90px",
left: "2%", left: "2%",
bottom: "0%", bottom: "0%",
containLabel: true, containLabel: true,

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

@ -23,10 +23,9 @@ var options = {
}, },
tooltip: { tooltip: {
show: true, show: true,
// valueFormatter: function (value) { valueFormatter: function (value) {
// return value; return value + " 起";
// // return (value + minNumber).toFixed(2) + " %"; },
// },
}, },
legend: { legend: {
// orient: 'vertical', // orient: 'vertical',

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

@ -324,7 +324,7 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
left: 20px; left: 20px;
top: 10px; top: 10px;
z-index: 100; z-index: 0;
div { div {
white-space: nowrap; white-space: nowrap;

17
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js

@ -21,16 +21,13 @@ let options = {
}, },
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
// axisPointer: { formatter: function (params) {
// type: "shadow", if (params[0].seriesName == "收费金额") {
// }, return `<div>${params[0].marker} ${params[0].name} <span style="font-weight: bold;">${params[0].value} 万元</span></div>`;
// backgroundColor: "rgba(255,255,255,0.75)", } else {
// extraCssText: "box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.3);", return `<div>${params[0].marker} ${params[0].name} <span style="font-weight: bold;">${params[0].value} 万辆</span></div>`;
// textStyle: { }
// fontSize: 14, },
// color: "#000",
// },
// formatter: "{a}<br/>{b} :\n\n{c} ",
}, },
legend: { legend: {
top: 10, top: 10,

205
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js

@ -4,20 +4,14 @@ var data1 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15]; var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
var options = { var options = {
tooltip: { tooltip: {
// trigger: "axis", formatter: function (params) {
// backgroundColor: 'rgba(17,95,182,0.5)', console.log("params", params);
// textStyle: { if (params.seriesName == "增收金额") {
// color: "#fff" return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} 万元</span></div>`;
// }, } else {
// formatter: function (params) { return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} %</span></div>`;
// return params[1].marker + '' + params[1].name + '\n' + }
// "<div>" + },
// "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#007AFF;option:0.5'></span>" +
// "<span style=''> " + params[1].seriesName + ': ' + params[1].value + "\n" + ' </span>' +
// "</div>" +
// "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#FF9B61;'></span>" +
// '' + "<span style=''> " + params[3].seriesName + ': ' + params[3].value;
// }
}, },
grid: { grid: {
left: "5%", left: "5%",
@ -67,11 +61,11 @@ var options = {
}, },
yAxis: [ yAxis: [
{ {
min: 0, // min: 0,
max: 18, // max: 18,
type: "value", type: "value",
minInterval: 3, // minInterval: 3,
maxInterval: 3, // maxInterval: 3,
name: "(单位:万)", name: "(单位:万)",
nameTextStyle: { nameTextStyle: {
align: "left", align: "left",
@ -105,17 +99,9 @@ var options = {
data: ["0", "3", "6", "9", "12", "15", "18"], data: ["0", "3", "6", "9", "12", "15", "18"],
}, },
{ {
show: true, // show: true,
name: "", name: "",
min: 0,
max: 18,
type: "value", type: "value",
minInterval: 3,
maxInterval: 3,
splitNumber: 3,
formatter: function (e) {
console.log("---------------", e);
},
nameTextStyle: { nameTextStyle: {
align: "left", align: "left",
color: "rgba(255,255,255,0.8)", color: "rgba(255,255,255,0.8)",
@ -187,7 +173,8 @@ var options = {
itemStyle: { itemStyle: {
// lenged文本 // lenged文本
opacity: 1, opacity: 1,
borderCap: "round", barBorderRadius: [13, 13, 13, 13],
// borderCap: "round",
color: function (params) { color: function (params) {
var a = params.name.slice(0, 2); var a = params.name.slice(0, 2);
return new echarts.graphic.LinearGradient( return new echarts.graphic.LinearGradient(
@ -202,7 +189,7 @@ var options = {
}, },
{ {
offset: 1, offset: 1,
color: "#2CAEE3", // 100% 处的颜色 color: "#003B4E", // 100% 处的颜色
}, },
], ],
false false
@ -213,40 +200,40 @@ var options = {
data: data1, data: data1,
}, },
{ // {
name: "", // name: "",
type: "pictorialBar", // type: "pictorialBar",
symbolSize: [12, 12], // symbolSize: [12, 12],
symbolOffset: [0, -4], // symbolOffset: [0, -4],
z: 5, // z: 5,
itemStyle: { // itemStyle: {
opacity: 1, // opacity: 1,
borderCap: "round", // borderCap: "round",
color: function (params) { // color: function (params) {
var a = params.name.slice(0, 2); // var a = params.name.slice(0, 2);
return new echarts.graphic.LinearGradient( // return new echarts.graphic.LinearGradient(
0, // 0,
0, // 0,
0, // 0,
1, // 1,
[ // [
{ // {
offset: 0, // offset: 0,
color: "#0BA7DA", // 0% 处的颜色 // color: "#0BA7DA", // 0% 处的颜色
}, // },
{ // {
offset: 1, // offset: 1,
color: "#0BA7DA30", // 100% 处的颜色 // color: "#0BA7DA30", // 100% 处的颜色
}, // },
], // ],
false // false
); // );
}, // },
}, // },
symbolPosition: "end", // symbolPosition: "end",
data: data1, // data: data1,
}, // },
{ {
name: "增涨率", name: "增涨率",
z: 9, z: 9,
@ -270,54 +257,54 @@ var options = {
}, },
}, },
{ // {
name: "", // name: "",
type: "bar", // type: "bar",
barWidth: 12, // barWidth: 12,
barGap: "-100%", // barGap: "-100%",
z: 0, // z: 0,
itemStyle: { // itemStyle: {
borderCap: "round", // borderCap: "round",
color: "#163F7A", // color: "#163F7A",
opacity: 0.7, // opacity: 0.7,
}, // },
data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18], // data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
}, // },
{ // {
name: "", // name: "",
type: "pictorialBar", // type: "pictorialBar",
symbolSize: [12, 12], // symbolSize: [12, 12],
symbolOffset: [0, -5], // symbolOffset: [0, -5],
z: 5, // z: 5,
itemStyle: { // itemStyle: {
barBorderRadius: [13, 13, 13, 13], // barBorderRadius: [13, 13, 13, 13],
opacity: 1, // opacity: 1,
borderCap: "round", // borderCap: "round",
color: function (params) { // color: function (params) {
var a = params.name.slice(0, 2); // var a = params.name.slice(0, 2);
return new echarts.graphic.LinearGradient( // return new echarts.graphic.LinearGradient(
0, // 0,
0, // 0,
0, // 0,
1, // 1,
[ // [
{ // {
offset: 0, // offset: 0,
color: "#2CAEE3", // 0% 处的颜色 // color: "#2CAEE3", // 0% 处的颜色
}, // },
{ // {
offset: 1, // offset: 1,
color: "#2CAEE3", // 100% 处的颜色 // color: "#2CAEE3", // 100% 处的颜色
}, // },
], // ],
false // false
); // );
}, // },
}, // },
symbolPosition: "end", // symbolPosition: "end",
data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], // data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
}, // },
], ],
}; };

139
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js

@ -4,21 +4,15 @@ var data1 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15]; var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
var options = { var options = {
tooltip: { tooltip: {
show:true show: true,
// trigger: "axis", formatter: function (params) {
// backgroundColor: 'rgba(17,95,182,0.5)', console.log("params", params);
// textStyle: { if (params.seriesName == "增收金额") {
// color: "#fff" return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} 万元</span></div>`;
// }, } else {
// formatter: function (params) { return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} %</span></div>`;
// return params[1].marker + '' + params[1].name + '\n' + }
// "<div>" + },
// "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#007AFF;option:0.5'></span>" +
// "<span style=''> " + params[1].seriesName + ': ' + params[1].value + "\n" + ' </span>' +
// "</div>" +
// "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#FF9B61;'></span>" +
// '' + "<span style=''> " + params[3].seriesName + ': ' + params[3].value;
// }
}, },
grid: { grid: {
left: "5%", left: "5%",
@ -68,10 +62,11 @@ var options = {
}, },
yAxis: [ yAxis: [
{ {
min: 0, // min: 0,
max: 18, // max: 18,
minInterval: 1, // minInterval: 1,
maxInterval: 1, // maxInterval: 1,
type: "value",
name: "(单位:万)", name: "(单位:万)",
nameTextStyle: { nameTextStyle: {
align: "left", align: "left",
@ -107,9 +102,9 @@ var options = {
{ {
show: true, show: true,
name: "", name: "",
min: 0, // min: 0,
max: 18, // max: 18,
splitNumber: 3, // splitNumber: 3,
nameTextStyle: { nameTextStyle: {
align: "left", align: "left",
color: "rgba(255,255,255,0.8)", color: "rgba(255,255,255,0.8)",
@ -207,45 +202,46 @@ var options = {
data: data1, data: data1,
}, },
{ // {
name: "", // name: "",
type: "pictorialBar", // type: "pictorialBar",
symbolSize: [12, 12], // symbolSize: [12, 12],
symbolOffset: [0, -4], // symbolOffset: [0, -4],
z: 5, // z: 5,
itemStyle: { // itemStyle: {
opacity: 1, // opacity: 1,
color: function (params) { // color: function (params) {
var a = params.name.slice(0, 2); // var a = params.name.slice(0, 2);
return new echarts.graphic.LinearGradient( // return new echarts.graphic.LinearGradient(
0, // 0,
0, // 0,
0, // 0,
1, // 1,
[ // [
{ // {
offset: 0, // offset: 0,
color: "#00E4BB", // 0% 处的颜色 // color: "#00E4BB", // 0% 处的颜色
}, // },
{ // {
offset: 1, // offset: 1,
color: "#00E4BB30", // 100% 处的颜色 // color: "#00E4BB30", // 100% 处的颜色
}, // },
], // ],
false // false
); // );
}, // },
}, // },
symbolPosition: "end", // symbolPosition: "end",
data: data1, // data: data1,
tooltip: { // tooltip: {
show:false} // show: false,
}, // },
// },
{ {
name: "增涨率", name: "增涨率",
z: 9, z: 9,
yAxisIndex: 1, // yAxisIndex: 1,
type: "line", type: "line",
data: data2, data: data2,
symbol: symbol:
@ -261,20 +257,21 @@ var options = {
}, },
}, },
{ // {
name: "", // name: "",
type: "bar", // type: "bar",
barWidth: 12, // barWidth: 12,
barGap: "-100%", // barGap: "-100%",
z: 0, // z: 0,
itemStyle: { // itemStyle: {
color: "#163F7A", // color: "#163F7A",
opacity: 0.7, // opacity: 0.7,
}, // },
data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18], // data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
tooltip: { // tooltip: {
show:false} // show: false,
}, // },
// },
], ],
}; };

339
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue

@ -1,196 +1,185 @@
<template> <template>
<div class='TrafficFlow'> <div class="TrafficFlow">
<section class="foot"> <section class="foot">
<div class="content" > <div class="content">
<div class="content-l" > <div class="content-l">
<RoadNetwork /> <RoadNetwork />
<LaneTolls /> <LaneTolls />
</div>
<div class="content-l" >
<VehicleTolls />
<TruckLaneTolls />
</div>
<RoadSectionTolls class="content-r" />
</div>
</section>
<section class="foot">
<div class="content " style="position: relative;top:-10px;" >
<AccessAnalysis class="content-m" />
<AuxiliaryFlowcharts class="content-rm" />
</div> </div>
</section> <div class="content-l">
<section class="foot"> <VehicleTolls />
<div class="content " > <TruckLaneTolls />
<MonthlyAnalysis class="content-mi" />
<DaylyAnalysis class="content-mi" />
</div> </div>
</section> <RoadSectionTolls class="content-r" />
</div> </div>
</template> </section>
<section class="foot">
<script> <div class="content" style="position: relative; top: -10px">
import RoadNetwork from './components/roadNetworkTraffic'; <AccessAnalysis class="content-m" />
import LaneTolls from './components/laneTolls'; <AuxiliaryFlowcharts class="content-rm" />
import VehicleTolls from './components/vehicleTolls'; </div>
import TruckLaneTolls from './components/truckLaneTolls'; </section>
import RoadSectionTolls from './components/RoadSectionTolls'; <section class="foot">
import AccessAnalysis from './components/accessAnalysis'; <div class="content">
import AuxiliaryFlowcharts from './components/auxiliaryFlowcharts'; <MonthlyAnalysis class="content-mi" />
import MonthlyAnalysis from './components/monthlyAnalysis'; <DaylyAnalysis class="content-mi" />
import DaylyAnalysis from './components/daylyAnalysis'; </div>
</section>
export default { </div>
name: 'publicService', </template>
components: {
RoadNetwork, <script>
LaneTolls, import RoadNetwork from "./components/roadNetworkTraffic";
VehicleTolls, import LaneTolls from "./components/laneTolls";
TruckLaneTolls, import VehicleTolls from "./components/vehicleTolls";
RoadSectionTolls, import TruckLaneTolls from "./components/truckLaneTolls";
AccessAnalysis, import RoadSectionTolls from "./components/RoadSectionTolls";
AuxiliaryFlowcharts, import AccessAnalysis from "./components/accessAnalysis";
MonthlyAnalysis, import AuxiliaryFlowcharts from "./components/auxiliaryFlowcharts";
DaylyAnalysis, import MonthlyAnalysis from "./components/monthlyAnalysis";
}, import DaylyAnalysis from "./components/daylyAnalysis";
data(){
return { export default {
activeName:"first" name: "publicService",
} components: {
}, RoadNetwork,
methods:{ LaneTolls,
changeTabs(){ VehicleTolls,
TruckLaneTolls,
} RoadSectionTolls,
} AccessAnalysis,
AuxiliaryFlowcharts,
MonthlyAnalysis,
DaylyAnalysis,
},
data() {
return {
activeName: "first",
};
},
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;
.header-shot {
width: 98%;
margin: auto;
margin-top: 15px;
height: 160px;
} }
</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;
.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 { .content-l {
width: 100%; width: calc(32.2%);
margin: auto; margin-right: 20px;
display: flex; display: inline-flex;
flex: 1; flex-direction: column;
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 { > div {
margin-bottom:15px; 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 { .content-r {
margin-right:10px; width: calc(33%);
} display: inline-flex;
}
.content-rm {
width: calc(33%);
margin-right: 10px;
}
.content-m { .content-mi {
display: inline-flex; width: calc(50%);
width: 66%;
margin-right:20px;
}
margin-right: 20px;
}
.content-mi:last-child {
margin-right: 10px;
} }
.foot{ .content-m {
width: 98%; display: inline-flex;
margin: auto; width: 66%;
display: flex; margin-right: 20px;
justify-content: space-between; }
flex: 1; }
pointer-events: none;
margin-top: 8px;
>div {
pointer-events: auto;
}
.foot-w { .foot {
width:100%; 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 { .foot-l {
width: 726px; width: 726px;
} }
.foot-m { .foot-m {
width: 613px; width: 613px;
} }
.foot-r { .foot-r {
width: 493px; width: 493px;
}
} }
} }
</style> }
</style>

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

@ -132,8 +132,8 @@ var options = {
}, },
color: colorList, color: colorList,
legend: { legend: {
top: 10, top: 100,
right: 0, right: 20,
orient: "vertical", //改变排列方式 orient: "vertical", //改变排列方式
icon: "circle", //改变legend小图标形状 icon: "circle", //改变legend小图标形状
itemGap: 20, // 设置legend的间距 itemGap: 20, // 设置legend的间距

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

@ -1,35 +1,87 @@
<template> <template>
<div class="congestion"> <div class="congestion">
<div class="board"> <div class="board">
<ProgressBar class="keep-ratio" @selectItem="selectProgress" :dataList="dataList" :selectIndex="selectIndex" <ProgressBar
:reset="reset" /> class="keep-ratio"
@selectItem="selectProgress"
:dataList="dataList"
:selectIndex="selectIndex"
:reset="reset"
/>
<div class="searchPanel"> <div class="searchPanel">
<RadioGroup :options="[ <RadioGroup
{ key: '1', label: '菏泽' }, :options="[
{ key: '3', label: '济南' }, { key: '1', label: '菏泽' },
]" v-model="direction" type="button" /> { key: '3', label: '济南' },
<el-select v-model="type" size="mini" class="selectRoad" placeholder="请选择" @change="changeType"> ]"
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value"> v-model="direction"
type="button"
/>
<el-select
v-model="type"
size="mini"
class="selectRoad"
placeholder="请选择"
@change="changeType"
>
<el-option
v-for="item in typeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="quarter" size="medium" v-if="type == 'quarter'" class="selectRoad-medium" placeholder="请选择"> <el-select
<el-option v-for="item in quarterOptions" :key="item.value" :label="item.label" :value="item.value" v-model="quarter"
style="width: 140px"> size="medium"
v-if="type == 'quarter'"
class="selectRoad-medium"
placeholder="请选择"
>
<el-option
v-for="item in quarterOptions"
:key="item.value"
:label="item.label"
:value="item.value"
style="width: 140px"
>
</el-option> </el-option>
</el-select> </el-select>
<el-date-picker size="mini" v-if="type != 'quarter'" class="selectRoad" v-model="dateTime" style="width: 140px" <el-date-picker
:type="type == 'date' size="mini"
? 'date' v-if="type != 'quarter'"
: type == 'month' class="selectRoad"
? 'month' v-model="dateTime"
: type == 'year' style="width: 140px"
? 'year' :type="
: '' type == 'date'
" placeholder="请选择" :clearable="false" /> ? 'date'
: type == 'month'
<el-button type="primary" size="mini" class="btnSearch" @click="searchQuery" ? 'month'
icon="el-icon-search">查询</el-button> : type == 'year'
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left" @click="onReset">重置</el-button> ? 'year'
: ''
"
placeholder="请选择"
:clearable="false"
/>
<el-button
type="primary"
size="mini"
class="btnSearch"
@click="searchQuery"
icon="el-icon-search"
>查询</el-button
>
<el-button
class="btnReset"
size="mini"
icon="el-icon-refresh-left"
@click="onReset"
>重置</el-button
>
</div> </div>
</div> </div>
@ -43,14 +95,28 @@
<div> <div>
<WgtTitle :title="'感知事件类型分析'"></WgtTitle> <WgtTitle :title="'感知事件类型分析'"></WgtTitle>
<Empty v-show="!chart2List || chart2List.length <= 0" text="暂无数据..."></Empty> <Empty
<div v-show="chart2List || chart2List.length > 0" id="chart2" class="btnChart" /> v-show="!chart2List || chart2List.length <= 0"
text="暂无数据..."
></Empty>
<div
v-show="chart2List || chart2List.length > 0"
id="chart2"
class="btnChart"
/>
</div> </div>
<div> <div>
<WgtTitle :title="'桩号范围内事件分析趋势'"></WgtTitle> <WgtTitle :title="'桩号范围内事件分析趋势'"></WgtTitle>
<Empty v-show="!chart3List || chart3List.length <= 0" text="暂无数据..."></Empty> <Empty
<div v-show="chart3List || chart3List.length > 0" id="chart3" class="btnChart" /> v-show="!chart3List || chart3List.length <= 0"
text="暂无数据..."
></Empty>
<div
v-show="chart3List || chart3List.length > 0"
id="chart3"
class="btnChart"
/>
</div> </div>
</div> </div>
</div> </div>
@ -65,7 +131,7 @@ import chart1 from "./assets/charts";
import chart2 from "./assets/charts2"; import chart2 from "./assets/charts2";
import chart3 from "./assets/charts3"; import chart3 from "./assets/charts3";
import ElQuarterPicker from "./ElQuarterPicker"; import ElQuarterPicker from "./ElQuarterPicker";
import moment from 'moment'; import moment from "moment";
import { import {
getWarningTrend, getWarningTrend,
getWarningSectionType, getWarningSectionType,
@ -204,7 +270,7 @@ export default {
], ],
}; };
}, },
created() { }, created() {},
methods: { methods: {
selectProgress(item, index) { selectProgress(item, index) {
this.selectIndex = index; this.selectIndex = index;
@ -255,18 +321,19 @@ export default {
chart1.series[0].data = []; chart1.series[0].data = [];
chart1.xAxis.data = []; chart1.xAxis.data = [];
// //
if (this.type == "month") { if (this.type == "month") {
let daysInMonth = moment(this.dateTime, "YYYY-MM").daysInMonth(); let daysInMonth = moment(this.dateTime, "YYYY-MM").daysInMonth();
let sData = {}; let sData = {};
data.forEach(it => sData[parseInt(it.day.slice(-2))] = it.number) data.forEach(
let pData = [] (it) => (sData[parseInt(it.day.slice(-2))] = it.number)
);
let pData = [];
for (let index = 1; index <= daysInMonth; index++) { for (let index = 1; index <= daysInMonth; index++) {
pData.push({ pData.push({
day: index, day: index,
number: sData[index] || 0 number: sData[index] || 0,
}) });
} }
data = pData; data = pData;
} }
@ -278,15 +345,15 @@ export default {
3: [7, 8, 9], 3: [7, 8, 9],
4: [10, 11, 12], 4: [10, 11, 12],
}; };
let sData = {} let sData = {};
data.forEach(it => sData[it.month] = it.number); data.forEach((it) => (sData[it.month] = it.number));
let pData = [] let pData = [];
for (let index = 0; index < 3; index++) { for (let index = 0; index < 3; index++) {
let month = quarterMap[this.quarter][index]; let month = quarterMap[this.quarter][index];
pData.push({ pData.push({
month: month, month: month,
number: sData[month] || 0 number: sData[month] || 0,
}) });
} }
data = pData; data = pData;
} }
@ -515,10 +582,10 @@ export default {
// this.type = "date"; // this.type = "date";
}, },
changeType() { changeType() {
if (this.type == 'date') { if (this.type == "date") {
this.dateTime = moment(new Date()).format("YYYY-MM-DD") this.dateTime = moment(new Date()).format("YYYY-MM-DD");
} }
} },
}, },
mounted() { mounted() {
setTimeout(() => { setTimeout(() => {
@ -569,28 +636,28 @@ export default {
// //
// //
// var gr = context.createLinearGradient(247, 63, 450, 0); var gr = context.createLinearGradient(247, 63, 450, 0);
// gr.addColorStop(1, 'rgba(92,197,255,0)'); gr.addColorStop(1, "rgba(92,197,255,0)");
// gr.addColorStop(0, 'rgba(92,197,255,0.5)'); gr.addColorStop(0, "rgba(92,197,255,0.5)");
// drawRoundRect(context, 267, 57, 140, 24, 12, gr) drawRoundRect(context, 357, 98, 140, 24, 12, gr);
// // // //
// var gr = context.createLinearGradient(247, 63, 450, 0); var gr = context.createLinearGradient(247, 63, 450, 0);
// gr.addColorStop(1, 'rgba(92,197,255,0)'); gr.addColorStop(1, "rgba(92,197,255,0)");
// gr.addColorStop(0, 'rgba(92,197,255,0.5)'); gr.addColorStop(0, "rgba(92,197,255,0.5)");
// drawRoundRect(context, 267, 108, 140, 24, 12, gr) drawRoundRect(context, 357, 130, 140, 24, 12, gr);
// // // //
// var gr = context.createLinearGradient(240, 63, 450, 0); var gr = context.createLinearGradient(240, 63, 450, 0);
// gr.addColorStop(1, 'rgba(92,197,255,0)'); gr.addColorStop(1, "rgba(92,197,255,0)");
// gr.addColorStop(0, 'rgba(92,197,255,0.5)'); gr.addColorStop(0, "rgba(92,197,255,0.5)");
// drawRoundRect(context, 267, 157, 140, 24, 12, gr) drawRoundRect(context, 357, 162, 140, 24, 12, gr);
// // // //
// var gr = context.createLinearGradient(240, 63, 450, 0); var gr = context.createLinearGradient(240, 63, 450, 0);
// gr.addColorStop(1, 'rgba(92,197,255,0)'); gr.addColorStop(1, "rgba(92,197,255,0)");
// gr.addColorStop(0, 'rgba(92,197,255,0.5)'); gr.addColorStop(0, "rgba(92,197,255,0.5)");
// drawRoundRect(context, 267, 208, 140, 24, 12, gr) drawRoundRect(context, 357, 194, 140, 24, 12, gr);
// // // //
// var gr = context.createLinearGradient(240, 63, 450, 0); // var gr = context.createLinearGradient(240, 63, 450, 0);
@ -638,16 +705,21 @@ export default {
justify-content: space-evenly; justify-content: space-evenly;
font-size: 14px; font-size: 14px;
>div { > div {
width: 33%; width: 33%;
height: 470px; height: 470px;
background: linear-gradient(180deg, background: linear-gradient(
rgba(6, 66, 88, 0.2) 0%, 180deg,
#064258 100%); rgba(6, 66, 88, 0.2) 0%,
#064258 100%
);
border: 1px solid; border: 1px solid;
border-image: linear-gradient(360deg, border-image: linear-gradient(
360deg,
rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0.3),
rgba(55, 231, 255, 0)) 1 1; rgba(55, 231, 255, 0)
)
1 1;
} }
:nth-child(1) { :nth-child(1) {
@ -763,12 +835,54 @@ export default {
</style> </style>
<style lang="scss"> <style lang="scss">
div.el-popover:has(> .el-date-picker) div .el-picker-panel__body .el-picker-panel__content table tr td.today span, div.el-popover:has(> .el-date-picker)
div.el-popover:has(> .el-date-picker) div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell, div
div.el-picker-panel.el-date-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today span, .el-picker-panel__body
div.el-picker-panel.el-date-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell, .el-picker-panel__content
div.el-picker-panel.el-date-range-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today span, table
div.el-picker-panel.el-date-range-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell { tr
td.today
span,
div.el-popover:has(> .el-date-picker)
div
.el-picker-panel__body
.el-picker-panel__content
table
tr
td.today
.cell,
div.el-picker-panel.el-date-picker.el-popper
div
.el-picker-panel__body
.el-picker-panel__content
table
tr
td.today
span,
div.el-picker-panel.el-date-picker.el-popper
div
.el-picker-panel__body
.el-picker-panel__content
table
tr
td.today
.cell,
div.el-picker-panel.el-date-range-picker.el-popper
div
.el-picker-panel__body
.el-picker-panel__content
table
tr
td.today
span,
div.el-picker-panel.el-date-range-picker.el-popper
div
.el-picker-panel__body
.el-picker-panel__content
table
tr
td.today
.cell {
color: #fff; color: #fff;
} }
</style> </style>

3
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js

@ -3,6 +3,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
valueFormatter: function (value) {
return value + " ℃";
},
}, },
color: "#FFD15C", color: "#FFD15C",
grid: { grid: {

8
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js

@ -4,11 +4,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
// backgroundColor: "rgba(0,0,0,.6)", valueFormatter: function (value) {
// borderColor: "rgba(147, 235, 248, .8)", return value + " M";
// textStyle: { },
// color: "#FFF",
// },
}, },
grid: { grid: {
left: "0", left: "0",

5
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js

@ -21,6 +21,9 @@ let options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "item", trigger: "item",
valueFormatter: function (value) {
return value + " 指标";
},
}, },
grid: { grid: {
left: 0, left: 0,
@ -57,7 +60,7 @@ let options = {
yAxis: [ yAxis: [
{ {
min: 0, min: 0,
name: '(指标)', name: "(指标)",
nameTextStyle: { nameTextStyle: {
color: "#fff", color: "#fff",
fontSize: 10, fontSize: 10,

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json

@ -1 +0,0 @@
"{\"support\":{\"PROTOCOL_TYPE\":\"GUANGDIAN_V33\",\"FONT_SIZE\":\"3232,2424,1616\",\"DEVICEID\":\"102111101\",\"COLOR\":\"红色,绿色,蓝色,黄色\",\"FONT\":\"宋体,黑体,楷体\"},\"content\":[{\"ITEM000\":[{\"SPEED\":\"1\",\"FONT_SIZE\":\"3232\",\"ACTION\":\"1\",\"COLOR\":\"黄色\",\"STATE\":true,\"CONTENT\":\"进入隧道 请开大灯1\",\"COORDINATE\":\"063004\",\"FONT\":\"黑体\",\"STAY\":\"500\"}]}]}"

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

@ -83,15 +83,21 @@
<el-checkbox-group <el-checkbox-group
class="deviceList" class="deviceList"
v-model="checkedDeviceIds" v-model="checkedDeviceIds"
:max="2"
@change="____onSelectDevices" @change="____onSelectDevices"
> >
<el-checkbox <el-checkbox
v-for="(itm, index) in item.list" v-for="(itm, index) in item.list"
:label="itm.iotDeviceId" :label="itm.iotDeviceId"
:key="index" :key="index"
:disabled="!itm.iotDeviceId || itm.iotDeviceId.includes('null') || itm.deviceState == 0 || itm.deviceState == null"
> >
<div class="title">{{ itm.deviceName }}</div> <el-tooltip content="设备未接入" placement="top" v-if="!itm.iotDeviceId || itm.iotDeviceId.includes('null_')">
<div class="title">{{ itm.deviceName }}</div>
</el-tooltip>
<el-tooltip content="设备离线" placement="top" v-else-if="itm.deviceState == 0 || itm.deviceState == null">
<div class="title">{{ itm.deviceName }}</div>
</el-tooltip>
<div v-else class="title">{{ itm.deviceName }}</div>
<el-tooltip :content="(itm.deviceState == 0 || itm.deviceState == null) ? '离线' : '在线'" placement="top"> <el-tooltip :content="(itm.deviceState == 0 || itm.deviceState == null) ? '离线' : '在线'" placement="top">
<img src="@/assets/jihe/images/offline.svg" class="state" v-if="itm.deviceState=='0' || itm.deviceState==null"> <img src="@/assets/jihe/images/offline.svg" class="state" v-if="itm.deviceState=='0' || itm.deviceState==null">
<img src="@/assets/jihe/images/online.svg" class="state" v-else> <img src="@/assets/jihe/images/online.svg" class="state" v-else>
@ -307,29 +313,12 @@
<script> <script>
import Sortable from "sortablejs"; import Sortable from "sortablejs";
import editInfo from "./editInfo"; import editInfo from "./editInfo";
import boardData from "./boardData";
import { getUserDeptId } from "@/api/system/user";
import {
listTunnels,
devicessize,
information,
getBoardInfo,
getBoardEditInfo,
getboardSizeDic,
getBoardContentData,
deviceControl,
} from "@/api/information/api.js";
import { import {
uploadBoardEditInfo,
getAllVmsTemplate,
addTemplate, addTemplate,
addTemplateContent, addTemplateContent,
getBoardContent,
deleteTemplate, deleteTemplate,
splicingBoard,
} from "@/api/board/template"; } from "@/api/board/template";
import { import {
invokedFunction,
getDeviceRealtimeProperty, getDeviceRealtimeProperty,
} from "@/api/device/device"; } from "@/api/device/device";
import { getBoardList, getBoardDeviceInfo } from "@/api/board/board"; import { getBoardList, getBoardDeviceInfo } from "@/api/board/board";
@ -341,8 +330,6 @@ import BoardInfoEditor from "@screen/components/infoBoard/BoardInfoEditor";
import vuescroll from "vuescroll"; import vuescroll from "vuescroll";
import scrollOptions from "@/common/scrollbar.js"; import scrollOptions from "@/common/scrollbar.js";
import infoBoardUtils from "@screen/utils/infoBoard.js";
import testDeviceList from "@screen/testData/deviceList.js"; import testDeviceList from "@screen/testData/deviceList.js";
import testDeviceInfo from "@screen/testData/infoBoard.js"; import testDeviceInfo from "@screen/testData/infoBoard.js";
@ -365,13 +352,14 @@ export default {
data() { data() {
return { return {
multiPublish: true,
toggleIndex: 0, toggleIndex: 0,
toRightCategory: "", // toRightCategory: "", //
arrowRightVisible: false, // arrowRightVisible: false, //
loading: false, loading: false,
submitButton: false, // submitButton: false, //
selectedSize: "", // selectedSize: "", //
selectedDevice: {}, selectedDevices: [],
boardSizeDic: {}, // boardSizeDic: {}, //
boardDirectionList: [], // boardDirectionList: [], //
userQueryParams: { userQueryParams: {
@ -574,12 +562,11 @@ export default {
if (!this.selectedSize) { if (!this.selectedSize) {
this.selectedSize = item.otherConfig.screenSize; this.selectedSize = item.otherConfig.screenSize;
} }
// if (!this.selectedDevice.deviceName) { // if (!this.selectedDevices.deviceName) {
// this.selectedDevice = item; // this.selectedDevices = item;
// } // }
}); });
this.____onChangeSize(); this.____onChangeSize();
// this.____getDeviceInfo();
} else { } else {
getBoardList(param).then((res) => { getBoardList(param).then((res) => {
res.data.forEach((item, index) => { res.data.forEach((item, index) => {
@ -596,8 +583,8 @@ export default {
if (!this.selectedSize) { if (!this.selectedSize) {
this.selectedSize = item.otherConfig.screenSize; this.selectedSize = item.otherConfig.screenSize;
} }
// if (!this.selectedDevice.deviceName) { // if (!this.selectedDevices.deviceName) {
// this.selectedDevice = item; // this.selectedDevices = item;
// } // }
}); });
this.____onChangeSize(); this.____onChangeSize();
@ -605,22 +592,6 @@ export default {
}); });
} }
}, },
____getDeviceInfo() {
if (IS_TESTING) {
this.selectedBdMsg = _.cloneDeep(testDeviceInfo.data["3A"].content);
} else {
if (!this.selectedDevice.iotDeviceId) {
return;
}
getBoardDeviceInfo(this.selectedDevice.iotDeviceId)
.then((res) => {
this.selectedBdMsg = res.data["3A"].content;
})
.catch((err) => {});
}
},
____forkDeviceInfo(deviceFrom) { ____forkDeviceInfo(deviceFrom) {
// //
@ -819,7 +790,7 @@ export default {
// //
____onPublish() { ____onPublish() {
if (!this.selectedDevice.iotDeviceId) { if (!this.selectedDevices.length) {
this.$message.warning("请选择设备!"); this.$message.warning("请选择设备!");
return; return;
} }
@ -827,57 +798,33 @@ export default {
}, },
// form // form
receiveForm(form) { receiveForm(form) {
console.log(form, "接收子组件form表单 修改"); console.log(form, "接收子组件form表单 修改");
this.contentList.splice(this.index_, 1, form); this.contentList.splice(this.index_, 1, form);
this.$forceUpdate(); this.$forceUpdate();
this.allVmsTemplate("no"); this.allVmsTemplate("no");
}, },
//
handleCheckAllChange(val) {
this.checkedDeviceIds = val ? this.deviceList : [];
},
// //
____onSelectDevices(arr) { ____onSelectDevices(arr) {
if (arr.length == 0) {
this.selectedDevice = {}; this.selectedDevices = [];
if (this.checkedDeviceIds.length == 0) {
return; return;
} }
this.checkedDeviceIds = [arr.pop()];
if (!this.checkedDeviceIds[0] || this.checkedDeviceIds[0].includes("null_")) { this.selectedDevices = _.filter(this.boardSizeDic[this.selectedSize].list, (item)=>{
this.$message.warning("设备未接入!"); return this.checkedDeviceIds.includes(item.iotDeviceId)
}
this.selectedDevice = _.find(this.boardSizeDic[this.selectedSize].list, {
iotDeviceId: this.checkedDeviceIds[0],
}); });
// this.____forkDeviceInfo(this.selectedDevice);
// this.____forkDeviceInfo(this.selectedDevices);
}, },
// ____onCheckDeviceInfo(item) {
// this.selectedDevice = _.find(this.boardSizeDic[this.selectedSize].list, { iotDeviceId: value[0] });
// this.selectedDevice = item;
// this.selectedDevice = this.deviceList
// this.____forkDeviceInfo();
// this.checkedDeviceIds = value
// let val = JSON.parse(JSON.stringify(value))
// for (let itm of this.deviceList) {
// if (val.indexOf(itm) > -1) {
// this.checkAll = true
// } else {
// this.checkAll = false
// return
// }
// }
// this.$forceUpdate()
// },
// //
____onChangeSize(val) { ____onChangeSize(val) {
console.log("777777");
this.____setAvailableTemplate(); this.____setAvailableTemplate();
this.checkedDeviceIds = []; this.checkedDeviceIds = [];
this.selectedDevice = {}; this.selectedDevices = [];
this.selectedBdMsg = []; this.selectedBdMsg = [];
// this.contentList = [] // this.contentList = []
// this.deviceList = [] // this.deviceList = []
@ -1012,39 +959,6 @@ export default {
return value; return value;
}, },
//
getColorStyle(font) {
if (font == "黄色" || font == "yellow" || font == "4") {
return "#FFFF00";
} else if (font == "红色" || font == "red" || font == "1") {
return "#FF0000";
} else if (
font == "绿色" ||
font == "GreenYellow" ||
font == "000255000000" ||
font == "2"
) {
return "#00FF00";
} else if (font == "蓝色" || font == "blue" || font == "3") {
return "#0000FF";
} else if (font == "7" || font == "white") {
return "#FFFFFF";
} else {
return "#" + font;
}
},
//
getTextAlign(font) {
if (font == "0") {
return "left";
} else if (font == "1") {
return "right";
} else {
return "center";
}
},
// //
getCoordinate(coordinate, type, screenSize) { getCoordinate(coordinate, type, screenSize) {
let width = ""; let width = "";
@ -1082,50 +996,6 @@ export default {
} }
} }
}, },
getFontStyle(font) {
if (font == "宋体") {
return "Simsun";
} else if (font == "黑体") {
return "SimHei";
} else if (font == "楷体") {
return "KaiTi";
} else {
return font;
}
},
getFont(font) {
if (font == "KaiTi" || font == "k") {
return "楷体";
} else if (font == "SimSun" || font == "s") {
return "宋体";
} else if (font == "SimHei" || font == "h") {
return "黑体";
} else if (font == "FangSong" || font == "f") {
return "仿宋";
} else if (font == "LiSu" || font == "l") {
return "隶书";
} else {
return font;
}
},
// //
// moveTop(i, item) {
// if (item && i) {
// let obj = { ...this.contentList[i - 1] };
// this.contentList.splice(i - 1, 1, item);
// this.contentList.splice(i, 1, obj);
// this.$forceUpdate();
// }
// },
// //
// moveBottom(i, item) {
// if (item && typeof i === "number") {
// let obj = { ...this.contentList[i + 1] };
// this.contentList.splice(i + 1, 1, item);
// this.contentList.splice(i, 1, obj);
// this.$forceUpdate();
// }
// },
dialogClose() { dialogClose() {
this.showEmit = false; this.showEmit = false;
this.arrowRightVisible = false; this.arrowRightVisible = false;

6
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js

@ -70,7 +70,9 @@ var options = {
}, },
tooltip: { tooltip: {
trigger: "item", trigger: "item",
// formatter: '{b} : {c}:{d}' valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",
@ -115,7 +117,7 @@ var options = {
} }
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
const arr = name + " " + tarValue; const arr = name + " " + tarValue;
return `{text|${name}} {number|${percert}%}`; return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`;
}, },
pageIconColor: "#fff", pageIconColor: "#fff",
pageIconSize: 10, pageIconSize: 10,

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

@ -71,7 +71,9 @@ var options = {
}, },
tooltip: { tooltip: {
trigger: "item", trigger: "item",
// formatter: "{b} : {c}:{d}", valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",
@ -116,7 +118,7 @@ var options = {
} }
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
const arr = name + " " + tarValue; const arr = name + " " + tarValue;
return `{text|${name}} {number|${percert}%}`; return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`;
}, },
pageIconColor: "#fff", pageIconColor: "#fff",
pageIconSize: 10, pageIconSize: 10,

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

@ -97,7 +97,9 @@ var options = {
}, },
tooltip: { tooltip: {
trigger: "item", trigger: "item",
// formatter: "{b} : {c}:{d}", valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",
@ -141,7 +143,7 @@ var options = {
} }
var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2); var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
const arr = name + " " + tarValue; const arr = name + " " + tarValue;
return `{text|${name}} {number|${percert}%}`; return `{text|${name}} {number|${tarValue} 起 } {number|${percert}%}`;
}, },
pageIconColor: "#fff", pageIconColor: "#fff",
pageIconSize: 10, pageIconSize: 10,

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

@ -21,17 +21,9 @@ let options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
// axisPointer: { valueFormatter: function (value) {
// // 坐标轴指示器,坐标轴触发有效 return value + " 起";
// 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: { grid: {
left: "0", left: "0",

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

@ -97,7 +97,7 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
left: 20px; left: 20px;
top: 2px; top: 2px;
z-index: 100000; z-index: 0;
div { div {
white-space: nowrap; white-space: nowrap;

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

@ -62,6 +62,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
// orient: 'vertical', // orient: 'vertical',

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

@ -62,6 +62,9 @@ var options = {
tooltip: { tooltip: {
show: true, show: true,
trigger: "axis", trigger: "axis",
valueFormatter: function (value) {
return value + " 起";
},
}, },
legend: { legend: {
// orient: 'vertical', // orient: 'vertical',

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

@ -99,7 +99,7 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
left: 20px; left: 20px;
top: 2px; top: 2px;
z-index: 100; z-index: 0;
div { div {
white-space: nowrap; white-space: nowrap;

3
ruoyi-ui/src/views/websocket.vue

@ -30,7 +30,8 @@ export default {
// console.log(location.hostname ) // console.log(location.hostname )
// websocket // websocket
this.socket.initialize({ this.socket.initialize({
url: 'ws://' + location.hostname + ':' + port + path, // url: 'ws://' + location.hostname + ':' + port + path,
url: 'wss://' + location.hostname + ':' + window.location.port + '/ws' || 80 + '/ws',
// url: "ws://10.7.179.15" + ":" + port + path, // url: "ws://10.7.179.15" + ":" + port + path,
// url: "ws://10.168.64.171" + ":" + port + path, // url: "ws://10.168.64.171" + ":" + port + path,
// url: 'ws://10.168.78.127'+ ':' + port + path, // url: 'ws://10.168.78.127'+ ':' + port + path,

5
ruoyi-ui/vue.config.js

@ -31,6 +31,7 @@ module.exports = {
devServer: { devServer: {
host: "0.0.0.0", host: "0.0.0.0",
port: port, port: port,
https: true,
open: true, open: true,
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
@ -51,8 +52,8 @@ module.exports = {
// target: `http://10.0.81.204:8087`, //现场后台 刘文阁 // target: `http://10.0.81.204:8087`, //现场后台 刘文阁
// target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁 // target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
// target: `http://10.168.78.135:8087`, //王钦 // target: `http://10.168.78.135:8087`, //王钦
target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2 // target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
// target: `http://10.168.68.42:8087`, //王思祥 target: `http://10.168.68.42:8087`, //王思祥
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "", ["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save