Browse Source

合并

wangqin
hui 9 months ago
parent
commit
433b650848
  1. 2
      ruoyi-ui/src/assets/styles/JiHeExpressway.scss
  2. 52
      ruoyi-ui/src/views/JiHeExpressway/common/PresetFormItems.js
  3. 32
      ruoyi-ui/src/views/JiHeExpressway/components/Descriptions.vue
  4. 42
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue
  5. 21
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue
  6. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue
  7. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  8. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  9. 47
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
  10. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
  11. 12
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
  12. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/data.js
  13. 93
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/index.vue
  14. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  15. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue
  16. 1253
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  17. 99
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js
  18. 138
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue
  19. 27
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue
  20. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue
  21. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/components/flowstate/assets/charts.js
  22. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/index.vue
  23. 18
      ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
  24. 1
      ruoyi-ui/src/views/login.vue
  25. 6
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/assets/styles/JiHeExpressway.scss

@ -11,7 +11,7 @@
}
.el-form-item {
margin-bottom: 8px;
margin-bottom: 15px;
}
.el-form-item__label {

52
ruoyi-ui/src/views/JiHeExpressway/common/PresetFormItems.js

@ -114,7 +114,7 @@ export const station = {
key: "stakeMark[1]",
},
],
}
},
};
export const startStation = {
@ -132,16 +132,20 @@ export const startStation = {
},
},
key: "startStakeMark[0]",
default:55,
default: "55",
rules: [
{
message: "请补全桩号",
callback(value, data) {
if (!((value+'')?.trim() && data.startStakeMark[1]?.trim())) return false
else return true
}
}
]
console.log(value, data.startStakeMark);
if (
!((value + "")?.trim() && (data.startStakeMark[1] + "")?.trim())
)
return false;
else return true;
},
},
],
},
{
prefix: {
@ -150,11 +154,11 @@ export const startStation = {
color: "#3DE8FF",
},
},
default: 378,
key: "startStakeMark[1]"
default: "378",
key: "startStakeMark[1]",
},
],
}
},
};
export const endStation = {
@ -172,16 +176,19 @@ export const endStation = {
},
},
key: "endStakeMark[0]",
default: 208,
default: "208",
rules: [
{
message: "请补全桩号",
callback(value, data) {
if (!((value + '')?.trim() && data.endStakeMark[1]?.trim())) return false
else return true
}
}
]
if (
!((value + "")?.trim() && (data.endStakeMark[1] + "")?.trim())
)
return false;
else return true;
},
},
],
},
{
prefix: {
@ -190,11 +197,11 @@ export const endStation = {
color: "#3DE8FF",
},
},
default: 153,
default: "153",
key: "endStakeMark[1]",
},
],
}
},
};
export const startEndStation = {
@ -345,7 +352,6 @@ export const eventLevel = {
},
};
export const laneOccupancy = {
label: "车道占用:",
key: "lang",
@ -1238,7 +1244,7 @@ export const congestionCause = {
label: "备注项添加",
},
],
2 : [
2: [
{
key: "1",
label: "主线车流量大",
@ -1247,9 +1253,9 @@ export const congestionCause = {
key: "2",
label: "收费站出口车流量大导致主线压车",
},
]
}
config.options.options = (value != 1 ? ad[1] : ad[2]);
],
};
config.options.options = value != 1 ? ad[1] : ad[2];
},
},
};

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

@ -1,18 +1,11 @@
<template>
<div class="Descriptions keep-ratio" origin="left" :style="getStyle()">
<div
class="item"
v-for="(item, index) in getResolveList"
:key="`${item.key || item.label}${index}`"
:style="[gridStyle(item, index), transformStyle(itemStyle)]"
>
<div
class="text title"
:style="{
...transformStyle(titleStyle),
width: labelWidth,
}"
>
<div class="item" v-for="(item, index) in getResolveList" :key="`${item.key || item.label}${index}`"
:style="[gridStyle(item, index), transformStyle(itemStyle)]">
<div class="text title" :style="{
...transformStyle(titleStyle),
width: labelWidth,
}">
<p>
<slot :name="`title-${item.key || item.label}`" :data="item">
{{ item.label || "-" }}
@ -20,18 +13,9 @@
</p>
:
</div>
<ContentText
:style="transformStyle(titleStyle)"
class="content text"
:data="data"
:_config="item"
>
<ContentText :style="transformStyle(titleStyle)" class="content text" :data="data" :_config="item">
<template #default="{ value }">
<slot
:name="`content-${item.key || item.label}`"
:value="value"
:data="item"
>
<slot :name="`content-${item.key || item.label}`" :value="value" :data="item">
{{ value }}
</slot>
</template>

42
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/Camera/index.vue

@ -7,19 +7,11 @@
<Descriptions :list="list" :data="data" style="gap: 18px">
<template #content-deviceName>
<span>{{ dialogData.deviceName || "-" }}</span>
<img
@click="controlDialogVisible = true"
v-if="
[0, '0'].includes(
dialogData.parseOtherConfig &&
dialogData.parseOtherConfig.ptzCtrl
)
"
src="@screen/images/camera-control-icon.svg"
width="18px"
height="18px"
style="cursor: pointer"
/>
<img @click="controlDialogVisible = true" v-if="[0, '0'].includes(
dialogData.parseOtherConfig &&
dialogData.parseOtherConfig.ptzCtrl
)
" src="@screen/images/camera-control-icon.svg" width="18px" height="18px" style="cursor: pointer" />
</template>
</Descriptions>
</ElTabPane>
@ -33,10 +25,7 @@
</div>
</div>
<CameraControlDialog
:deviceId="dialogData.iotDeviceId"
v-model="controlDialogVisible"
/>
<CameraControlDialog :deviceId="dialogData.iotDeviceId" v-model="controlDialogVisible" />
</Dialog>
</template>
@ -79,14 +68,14 @@ export default {
label: "道路名称",
key: "roadName",
},
{
label: "设备编号",
key: "deviceCode",
},
{
label: "所属机构",
key: "organizationName",
},
// {
// label: "",
// key: "deviceCode",
// },
// {
// label: "",
// key: "organizationName",
// },
{
label: "设备桩号",
key: "stakeMark",
@ -126,6 +115,7 @@ export default {
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark);
if (roadInfo) this.data.roadName = roadInfo.roadName;
console.log(this.data, "this.data");
},
methods: {
visibleClose(bool) {
@ -190,7 +180,7 @@ export default {
align-items: center;
justify-content: end;
> div {
>div {
font-size: 16px;
padding: 6px 12px;
}

21
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue

@ -1,7 +1,12 @@
<template>
<Dialog v-model="obverseVisible" title="感知事件">
<div class="PerceiveEvent">
<Video class="item-video" />
<!-- <Video class="item-video" /> -->
<div class="video-pic">
<Video style="height: 100%;flex:1" :showHeader="activeName != '-1'" :url="dialogData.formData.videoList[0]"
videoType="mp4" />
<Carousel style="flex: 1;height: 100%;" :pictures="dialogData.formData.pictures" />
</div>
<LineChart class="chart" />
<Form class="form" v-loading="loading" v-model="data" ref="FormConfigRef" :formList="formList" column="1" />
</div>
@ -24,7 +29,7 @@ import Form from '@screen/components/FormConfig';
import request from "@/utils/request";
import { Message } from "element-ui";
import moment from "moment";
import Carousel from "@screen/pages/control/event/event/EventDetailDialog/Carousel"
import { WarningTypeList, WarningSubclassList } from "@screen/utils/enum.js"
// import { getRoadInfoByStakeMark, getProduct } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"
import { dialogDelayVisible } from "./../mixin"
@ -42,6 +47,7 @@ export default {
Descriptions,
LineChart,
Video,
Carousel,
Form
},
data() {
@ -215,7 +221,7 @@ export default {
// };
data.duration = this.convertSecToHHmmss(data.duration);
this.data = { ...data, roadName: null, lane: data.lane?.split(",") || [] };
this.formList[4].options.options = WarningSubclassList[data.warningType] || [];
setTimeout(() => {
@ -223,7 +229,7 @@ export default {
});
})
.catch((e) => {
Message.error("详情获取失败"+e);
Message.error("详情获取失败" + e);
})
.finally(() => {
this.loading = false;
@ -276,6 +282,13 @@ export default {
grid-template-rows: repeat(2, 1fr);
gap: 9px;
.video-pic {
display: flex;
height: 190px;
gap: 15px;
justify-content: space-around;
}
.item-video {
grid-area: 1/1/1/1;
}

9
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue

@ -47,6 +47,7 @@ export default {
key: "childType",
type: "select",
options: {
clearable: true,
options: [],
},
visible: data => {
@ -62,15 +63,13 @@ export default {
type: "select",
default: null,
options: {
clearable: true,
options: [{
label: "所有",
value: null
}, {
label: "在线",
value: 1
value: "1"
}, {
label: "离线",
value: 0
value: "0"
}]
},
visible: data => {

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

@ -193,10 +193,10 @@ export default {
await eventMap[`${key}${status ? "" : "_close"}`]?.call(this, item, this.filterData, isDefault);
}
await Promise.allSettled(tabContentData.map(item => eventMapCall(item, true)))
Object.keys(lngLatMap).forEach(key => {
addInGraphHandle(lngLatMap[key]);
});
// Object.keys(lngLatMap).forEach(key => {
// addInGraphHandle(lngLatMap[key]);
// });
},

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

@ -97,10 +97,14 @@ function resolveDataOptions(data, config, component, isDefault) {
name: "",
config: {
markerClick: (extData, item) => {
const formData = extData?.otherConfig
? JSON.parse(extData.otherConfig)
: null;
this.dialogConfig = {
component,
data: {
...extData,
formData,
parseOtherConfig: JSON.parse(extData.otherConfig || "{}"),
_itemData: item,
},
@ -239,7 +243,7 @@ export const eventMap = {
});
}
const warningState = 1;
const data = await getPerceiveEventList({ warningState })
const data = await getPerceiveEventList({ warningState }, filterData)
.then(async (data) => {
await delay(600);
return data;

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

@ -269,20 +269,40 @@ export function getProduct(productId) {
});
});
}
function padZero(num) {
num = num.toString();
while (num.length < 3) {
num = "0" + num;
}
return num;
}
/**
* 交通事件 列表 根据类型获取
* @param {number} eventType
*/
export function getEventTopicList(eventType, options) {
export function getEventTopicList(eventType, options = {}) {
return new Promise((resolve, reject) => {
if (!eventType) {
Message.error(`事件加载失败!`);
return reject();
}
// console.log(options, "options xxxx");
const { endStakeMark, startStakeMark } = options;
let url = `/business/trafficIncidents/getEventList?eventType=${eventType}`;
if (endStakeMark) {
let formatEndStakeMark = `K${padZero(endStakeMark[0])}%2B${padZero(
endStakeMark[1]
)}`;
url += `&endStakeMark=${formatEndStakeMark}`;
}
if (startStakeMark) {
let formatStartStakeMark = `K${padZero(startStakeMark[0])}%2B${padZero(
startStakeMark[1]
)}`;
url += `&startStakeMark=${formatStartStakeMark}`;
}
request({
url: `/business/trafficIncidents/getEventList?eventType=${eventType}`,
url: url,
method: "post",
})
.then(({ code, data }) => {
@ -304,12 +324,27 @@ export function getEventTopicList(eventType, options) {
* 感知事件根据类型获取
* @param {number} eventType
*/
export function getPerceiveEventList(data = {}) {
export function getPerceiveEventList(data = {}, options = {}) {
return new Promise((resolve, reject) => {
const completeTime = moment().format("YYYY-MM-DD");
const completeTime = moment().add(1, "d").format("YYYY-MM-DD");
const startTime = moment().add(-30, "d").format("YYYY-MM-DD");
data.startTime = startTime;
data.completeTime = completeTime;
const { endStakeMark, startStakeMark } = options;
if (endStakeMark) {
let formatEndStakeMark = `K${padZero(endStakeMark[0])}+${padZero(
endStakeMark[1]
)}`;
data.endStakeMark = formatEndStakeMark;
}
if (startStakeMark) {
let formatStartStakeMark = `K${padZero(startStakeMark[0])}+${padZero(
startStakeMark[1]
)}`;
data.startStakeMark = formatStartStakeMark;
}
request({
url: `/perceivedEvents/warning/warningList`,
method: "POST",

9
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js

@ -102,6 +102,13 @@ export class MarkerCluster {
"font-size:15px; background:#6f5757; color:#b39b9b;",
this.infoWindow
);
//data.length 大于 5 取前5个数, 否则直接返回data
const pageSize = 6;
let pageNum = 1;
const dataFisrtPage =
data.length > pageSize
? data.slice((pageNum - 1) * pageSize, pageSize)
: data;
this.infoWindow.setContent(`<div
style="
@ -119,7 +126,7 @@ export class MarkerCluster {
<img class="info-close" style="width: 12px;cursor: pointer;" src="${require("@screen/images/dialog/icon-close.svg")}" />
</div>
<div style="padding: 15px 9px;flex: 1; overflow: auto;" class="info-window-content">
${data
${dataFisrtPage
.map(
(item) => `
<div style="cursor: pointer; padding: 3px 6px;display: flex;align-items: center; gap: 6px;" class="info-window-item">

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

@ -206,12 +206,12 @@ export default {
this.formList[0].options.options = result;
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);
// this.formList[0].options.options.push({
// disabled: false,
// key: 0,
// label: "",
// });
// console.log(this.formList[0].options.options);
},
handleSubmit() {
this.$refs.FormConfigRef.validate().then((data) => {

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/data.js

@ -6,6 +6,7 @@ export const searchFormList = [
label: "事件状态:",
key: "eventState",
type: "RadioGroup",
default: "0",
options: {
options: [
{
@ -29,6 +30,7 @@ export const searchFormList = [
label: "方向:",
key: "direction",
type: "RadioGroup",
default: "济南方向",
options: {
options: [
{

93
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/index.vue

@ -1,5 +1,5 @@
<template>
<div class='RoadNetworkMonitoring'>
<div class="RoadNetworkMonitoring">
<!-- 搜索栏 -->
<div class="filter">
<ButtonGradient @click="onRefresh" class="refresh-btn">
@ -9,47 +9,71 @@
刷新
</ButtonGradient>
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{ dFormData: { eventState: 0 } }"
@handleSearch="handleSearch" />
<InputSearch
style="width: 402px"
:formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }"
@handleSearch="handleSearch"
/>
</div>
<!-- 内容 -->
<div class="body">
<RoadStateCard v-for="(item, index) in data" :key="index" :cardData="item" @firstBtnClick="firstBtnClick"
@lastBtnClick="lastBtnClick" />
<RoadStateCard
v-for="(item, index) in data"
:key="index"
:cardData="item"
@firstBtnClick="firstBtnClick"
@lastBtnClick="lastBtnClick"
/>
</div>
<!-- 分页 -->
<div class="footer">
<Pagination @current-change="initData" @size-change="onSizeChange" width="'100%'" :page-sizes="[12, 16, 20, 30, 50]"
:page-size="searchData.pageSize" :current-page.sync="searchData.pageNum" layout="total, sizes, prev, pager, next"
:total="total">
<Pagination
@current-change="initData"
@size-change="onSizeChange"
width="'100%'"
:page-sizes="[12, 16, 20, 30, 50]"
:page-size="searchData.pageSize"
:current-page.sync="searchData.pageNum"
layout="total, sizes, prev, pager, next"
:total="total"
>
</Pagination>
</div>
<EventDetailDialog :visible="eventDetailDialogVisible" :formData="detailDialogFormData" @update:value="handleClose" />
<EventDispatchDialog :visible="eventDispatchDialogVisible" @update:value="handleClose" :eventId="eventId" />
<EventDetailDialog
:visible="eventDetailDialogVisible"
:formData="detailDialogFormData"
@update:value="handleClose"
/>
<EventDispatchDialog
:visible="eventDispatchDialogVisible"
@update:value="handleClose"
:eventId="eventId"
/>
</div>
</template>
<script>
import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import Pagination from '@screen/components/Pagination.vue';
import InputSearch from '@screen/components/InputSearch/index.vue';
import RoadStateCard from '@screen/components/RoadStateCard/index.vue';
import Pagination from "@screen/components/Pagination.vue";
import InputSearch from "@screen/components/InputSearch/index.vue";
import RoadStateCard from "@screen/components/RoadStateCard/index.vue";
import EventDetailDialog from "./EventDetailDialog/index";
import EventDispatchDialog from "./EventDispatchDialog/index";
import { searchFormList } from './data';
import { searchFormList } from "./data";
import request from "@/utils/request";
const directionMapping = {
'1': '菏泽方向',
'2': '双向',
'3': '济南方向'
}
1: "菏泽方向",
2: "双向",
3: "济南方向",
};
export default {
name: 'RoadNetworkMonitoring',
name: "RoadNetworkMonitoring",
components: {
Pagination,
RoadStateCard,
@ -57,7 +81,7 @@ export default {
EventDispatchDialog,
EventDetailDialog,
Pagination,
ButtonGradient
ButtonGradient,
},
data() {
return {
@ -67,13 +91,13 @@ export default {
detailDialogFormData: {},
total: 0,
data: [],
eventId: '0',
eventId: "0",
searchData: {
pageSize: 16,
pageNum: 1,
eventState: 0,
eventState: "0",
},
}
};
},
created() {
this.initData();
@ -82,15 +106,15 @@ export default {
initData() {
request({
// url: `/dc/system/event/dispatchEventList`,
url: '/dc/system/event/list',
url: "/dc/system/event/list",
method: "get",
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.total = result.total;
result.rows.forEach(it => {
result.rows.forEach((it) => {
it.stringDirection = directionMapping[it.direction] || it.direction;
})
});
this.data = result.rows;
});
},
@ -126,7 +150,7 @@ export default {
});
},
lastBtnClick(id) {
console.log(id)
console.log(id);
this.eventDispatchDialogVisible = true;
this.eventId = id;
},
@ -137,8 +161,10 @@ export default {
let dStakeMark = data.stakeMark;
let dendStakeMark = data.endStakeMark;
let stakeMark = dStakeMark[0] ? `K${dStakeMark[0]}+${dStakeMark[1]}` : '';
let endStakeMark = dendStakeMark[0] ? `K${dendStakeMark[0]}+${dendStakeMark[1]}` : '';
let stakeMark = dStakeMark[0] ? `K${dStakeMark[0]}+${dStakeMark[1]}` : "";
let endStakeMark = dendStakeMark[0]
? `K${dendStakeMark[0]}+${dendStakeMark[1]}`
: "";
this.searchData = {
...this.searchData,
@ -155,12 +181,12 @@ export default {
handleClose() {
this.eventDetailDialogVisible = false;
this.eventDispatchDialogVisible = false;
}
}
}
},
},
};
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.RoadNetworkMonitoring {
padding: 21px;
@ -175,7 +201,6 @@ export default {
// justify-content: flex-end;
justify-content: space-between;
.refresh-btn {
}
}

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

@ -243,7 +243,7 @@ export default {
url: `/perceivedEvents/warning/perceivedEventsList`,
method: "post",
params: { pageNum: this.searchData.pageNum, pageSize: this.searchData.pageSize },
data: this.searchData
data: { ...this.searchData, warningState: 1 }
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.rows.forEach(it => {

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

@ -1,6 +1,5 @@
<template>
<Dialog v-model="modelVisible" title="收费站管制统计" style="width: 100%">
{{ modelVisible }}
<div class="search">
<InputSearch
:formList="searchFormList"

1253
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue

File diff suppressed because it is too large

99
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js

@ -3,77 +3,54 @@ import { merge, cloneDeep } from "lodash";
export const searchFormList = [
{
label: "事件状态:",
key: "eventState",
type: "RadioGroup",
options: {
options: [
{
key: "0",
label: "未解决",
},
{
key: "1",
label: "已解决",
},
{
key: "2",
label: "已关闭",
},
],
},
label: "预案名称:",
key: "planName",
},
PresetFormItems.eventSources,
PresetFormItems.eventType,
{
label: "方向:",
key: "direction",
label: "事件分类:",
key: "eventCategory",
type: "RadioGroup",
options: {
options: [
{
key: "济南方向",
label: "济南方向",
},
{
key: "菏泽方向",
label: "菏泽方向",
key: "1",
label: "交通事件",
},
{
key: "双向",
label: "双向",
key: "2",
label: "感知事件",
},
],
},
},
{
label: "时间范围:",
key: "daterange",
required: false,
type: "datePicker",
options: {
type: "daterange",
format: "yyyy-MM-dd HH:mm:ss",
valueFormat: "yyyy-MM-dd HH:mm:ss",
},
},
{
...PresetFormItems.station,
label: "开始桩号:",
required: false,
},
merge(cloneDeep(PresetFormItems.station), {
options: {
options: [
{
key: "endStakeMark[0]",
},
{
key: "endStakeMark[1]",
},
],
},
label: "结束桩号:",
required: false,
}),
// {
// label: "时间范围:",
// key: "daterange",
// required: false,
// type: "datePicker",
// options: {
// type: "daterange",
// format: "yyyy-MM-dd HH:mm:ss",
// valueFormat: "yyyy-MM-dd HH:mm:ss",
// },
// },
// {
// ...PresetFormItems.station,
// label: "开始桩号:",
// required: false,
// },
// merge(cloneDeep(PresetFormItems.station), {
// options: {
// options: [
// {
// key: "endStakeMark[0]",
// },
// {
// key: "endStakeMark[1]",
// },
// ],
// },
// label: "结束桩号:",
// required: false,
// }),
];

138
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue

@ -11,26 +11,30 @@
</template>
</ElTableColumn>
<ElTableColumn prop="phrases2" width="260">
<ElTableColumn prop="searchRule" width="260">
<template slot-scope="scope">
<el-select v-if="scope.row.deviceType == 1" v-model="scope.row.phrases2" placeholder="检索规则条件">
<el-select v-if="scope.row.deviceType == 1" v-model="scope.row.searchRule" placeholder="检索规则条件">
<el-option v-for="item in zyOptions" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<div v-if="scope.row.deviceType == 2" class="plhx">
<el-select v-model="scope.row.phrases1" placeholder="">
<el-option label="事发上游最近" :value="1"></el-option>
<el-select v-model="scope.row.searchRule" placeholder="">
<el-option v-for="item in zyOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input-number v-model="scope.row.phrases2" :min="0" :max="9999"
<el-input-number v-model="scope.row.number" :min="0" :max="9999"
style="width: 130px;"></el-input-number>
</div>
<div v-if="scope.row.deviceType == 3 || scope.row.deviceType == 4" class="plhx">
<el-select v-model="scope.row.phrases1" placeholder="">
<el-option label="最近公里数" :value="1"></el-option>
<el-select v-model="scope.row.searchRule" placeholder="">
<el-option v-for="item in zyOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input-number v-model="scope.row.phrases2" :min="0" :max="9999"
<el-input-number v-model="scope.row.number" :min="0" :max="9999"
style="width: 130px;"></el-input-number>
<p style="width: 56px;">公里</p>
</div>
@ -38,42 +42,42 @@
</template>
</ElTableColumn>
<ElTableColumn prop="phrases3" width="370">
<ElTableColumn prop="deviceList" width="370">
<template slot-scope="scope">
<div v-if="scope.row.deviceType == 1" class="mjs">
<el-select v-model="scope.row.phrases3" placeholder="" multiple collapse-tags>
<el-select v-model="scope.row.deviceList" placeholder="" multiple collapse-tags>
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-input placeholder="请选择" v-model="scope.row.phrases4" readonly>
<el-input placeholder="请选择" v-model="scope.row.qbb" readonly>
<i slot="suffix" class="el-input__icon el-icon-search"></i>
</el-input>
</div>
<div v-if="scope.row.deviceType == 2" class="mjs">
<el-select v-model="scope.row.phrases4" placeholder="">
<el-select v-model="scope.row.gzms" placeholder="">
<el-option label="工作模式" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases6" placeholder="">
<el-select v-model="scope.row.czsc" placeholder="">
<el-option label="操作时长" :value="1"></el-option>
</el-select>
</div>
<div v-if="scope.row.deviceType == 3" class="mjs">
<el-select v-model="scope.row.phrases4" placeholder="">
<el-select v-model="scope.row.kzms" placeholder="">
<el-option label="控制模式" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases5" placeholder="">
<el-select v-model="scope.row.sj" placeholder="">
<el-option label="选择时间" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases6" placeholder="">
<el-select v-model="scope.row.gzzt" placeholder="">
<el-option label="工作状态" :value="1"></el-option>
</el-select>
</div>
<div v-if="scope.row.deviceType == 4" class="mjs">
<el-input v-model="scope.row.phrases4" placeholder="请输入发布内容"></el-input>
<el-input v-model="scope.row.fbnr" placeholder="请输入发布内容"></el-input>
</div>
</template>
@ -112,20 +116,24 @@ export default {
props: {
visible: Boolean,
eventType: Number,
// process: {
// type: Array,
// default: () => []
// }
tableData: {
type: Array,
default: () => [{
deviceType: 1,
searchRule: 1,
qbb: '安全行驶'
}]
}
},
data() {
return {
tableData: [
{
deviceType: 1,
phrases2: 1,
phrases4: '安全行驶'
}
],
// tableData: [
// {
// deviceType: 1,
// searchRule: 1,
// qbb: ''
// }
// ],
deviceOptions: [
{
value: 1,
@ -208,53 +216,14 @@ export default {
}
},
methods: {
getProcess() {
this.tableData = [];
request({
url: `/business/dcEventType/${this.eventType}`,
method: "get",
}).then(result => {
if (result.code != 200) return Message.error(result.msg);
//
this.process = [];
this.tableData = [];
result.data.processConfigList?.forEach((it, index) => {
let commonPhrasesArr = it.commonPhrases ? it.commonPhrases.split(',') : [''];
let phrs = [];
commonPhrasesArr?.forEach(phr => {
phrs.push({ id: it.id, phrases: phr })
})
this.process.push({
...it,
phrs: phrs,
label: it.processNode,
isActive: index == 0 ? true : false,
})
if (index == 0) {
this.id = it.id;
this.tableData = phrs;
}
})
})
},
changeDeviceType(value) {
this.deviceType = value;
},
getTableData() {
let rows = this.process.find(item => item.id == this.id);
return rows?.phrs || [];
},
updateTableData(id = 1) {
this.id = id;
this.tableData = [];
let pros = this.process.find(item => item.id == id);
this.tableData = pros.phrs;
},
onAdd(id) {
this.tableData.push({
id: id,
phrases: ''
deviceType: 1,
// searchRule: 1,
// qbb: ''
})
},
onDel(index) {
@ -263,35 +232,6 @@ export default {
}
this.tableData.splice(index, 1)
},
submitTable() {
let data = []
this.process.forEach((lc) => {
let commonPhrases = [];
lc.phrs.forEach(phr => { if (phr.phrases) commonPhrases.push(phr.phrases) })
data.push({
commonPhrases: commonPhrases.join(','),
id: lc.id,
eventType: lc.eventType,
nodeNode: lc.nodeNode,
processNode: lc.processNode
})
})
console.log('data', data)
// return;
request({
url: `/business/dcEventType/updateDcProcessConfig`,
method: "post",
data: {
eventType: this.eventType,
processConfigList: data
}
}).then(result => {
if (result.code != 200) return Message.error(result.msg);
Message.success(result.msg);
this.modelVisible = false;
this.$emit('reInitData', true)
})
}
}
}
</script>

27
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue

@ -17,8 +17,8 @@
刷新
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" :formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: 0 } }" @handleSearch="handleSearch" />
<InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{}"
@handleSearch="handleSearch" />
</div>
<!-- 内容 -->
@ -41,8 +41,7 @@
</div>
<!-- 新增修改弹窗 -->
<AddAndEditDialog :visible="isShowDialog" :detail="detail" @close="onCloseAddNew"
@update:phrasesData="onUpdatePhrasesData" @reInitData="initData" />
<AddAndEditDialog :visible="isShowDialog" :detail="detail" @close="onCloseAddNew" @reInitData="initData" />
<!-- 分页 -->
<div class="footer">
@ -137,23 +136,27 @@ export default {
});
},
onSizeChange(pageSize) {
// this.searchData.pageSize = pageSize;
// this.getData();
this.searchData.pageSize = pageSize;
this.initData();
},
onRefresh() {
this.initData();
},
onAdd() {
this.isShowDialog = true
this.detail = {}
this.isShowDialog = true;
},
onCloseAddNew() {
this.isShowDialog = false
this.isShowDialog = false;
},
onUpdatePhrasesData() {
showDisposal(data) {
this.detail = { ...data }
this.isShowDialog = true;
},
handleSearch() {
handleSearch(data) {
console.log(data);
this.searchData = { ...this.searchData, ...data }
this.initData();
},
async handleDelete(data) {
await confirm({ message: "是否要删除该预案?" });

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

@ -46,7 +46,7 @@
></Empty>
<div ref="queryChart" class="keep-ratio"></div>
</div>
<div style="position: relative">
<div style="position: relative; bottom: 15px">
<Empty
v-if="isEmpty02"
class="floatEmpty"
@ -55,7 +55,7 @@
<el-table
:border="false"
:data="tableData"
height="480"
height="420"
header-align="left"
empty-text=" "
>
@ -112,7 +112,7 @@
</template>
</el-table-column>
</el-table>
<div class="foot">
<div class="footer">
<Pagination
@current-change="changePage"
width="'100%'"
@ -327,7 +327,6 @@ export default {
}
}
this.equipments = allList;
console.log("Equipments", allList);
});
},
setStatus(id, status) {
@ -630,4 +629,11 @@ export default {
}
}
}
.footer {
margin: 15px 0;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
</style>

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

@ -106,7 +106,7 @@ var options = {
"梁山-枢纽",
"鄄郓-枢纽",
"嘉祥西-枢纽",
"王官-枢纽",
"王官-枢纽",
],
position: "top",
axisLabel: {

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/sensitive/index.vue

@ -32,6 +32,7 @@
type="input"
params="word"
:disable="true"
placeholder="请输入敏感词,回车搜索"
@handleSearch="handleSearch"
/>
</div>
@ -83,6 +84,7 @@
<Pagination
:total="numTotal"
:current-page.sync="currentPage"
:page-sizes="[35, 70, 105, 140, 175]"
:page-size="pageSize"
layout="total,sizes,prev, pager, next, jumper"
@size-change="handleSizeChange"

18
ruoyi-ui/src/views/JiHeExpressway/utils/enum.js

@ -265,18 +265,18 @@ export const SchedulingEnum = {
};
const CameraChildTypes = {
11: "高清网络枪型固定摄像机",
12: "高清网络球形摄像机",
13: "桥下高清网络球形摄像机",
14: "360°全景摄像机",
15: "180°全景摄像机",
"1-1": "高清网络枪型固定摄像机",
"1-2": "高清网络球形摄像机",
"1-3": "桥下高清网络球形摄像机",
"1-4": "360°全景摄像机",
"1-5": "180°全景摄像机",
};
const BoardChildTypes = {
21: "门架式可变信息标志",
22: "大学城入口站前板",
23: "雨棚可变信息标志",
24: "站前悬臂式可变信息标志",
"2-1": "门架式可变信息标志",
"2-2": "大学城入口站前板",
"2-3": "雨棚可变信息标志",
"2-4": "站前悬臂式可变信息标志",
};
export const ChildTypes = {

1
ruoyi-ui/src/views/login.vue

@ -263,6 +263,7 @@ export default {
font-weight: 400;
color: #999999;
border: 1px solid rgba(0, 145, 67, 0.5);
caret-color: #39adff;
// margin-left: 20px;
}

6
ruoyi-ui/vue.config.js

@ -52,8 +52,10 @@ module.exports = {
// target: `http://10.0.81.204:8087`, //现场后台 刘文阁
// target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
// target: `http://10.168.78.135:8087`, //王钦
target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
// target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.65.194:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save