Browse Source

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

wangqin
qingzhengli 12 months ago
parent
commit
89d4559cd9
  1. 66
      ruoyi-ui/src/api/MonthlyEquipment/index.js
  2. 6
      ruoyi-ui/src/common/menuData.js
  3. 2
      ruoyi-ui/src/layout/index.vue
  4. 2
      ruoyi-ui/src/router/routerCreater.js
  5. 4
      ruoyi-ui/src/store/index.js
  6. 22
      ruoyi-ui/src/store/modules/menu.js
  7. 8
      ruoyi-ui/src/views/JiHeExpressway/common/PresetFormItems.js
  8. 1
      ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/index.vue
  9. 1
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/CustomMenu.vue
  10. 21
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/index.vue
  11. 2
      ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
  12. 89
      ruoyi-ui/src/views/JiHeExpressway/components/RecentPages/index.vue
  13. 104
      ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
  14. 1
      ruoyi-ui/src/views/JiHeExpressway/components/empty.vue
  15. 7
      ruoyi-ui/src/views/JiHeExpressway/index.vue
  16. 162
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
  17. 617
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue
  18. 79
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js
  19. 343
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue
  20. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/images/refresh.svg
  21. 222
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue
  22. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/developing.vue
  23. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/assets/charts.js
  24. 36
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/data.js
  25. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/index.vue
  26. 74
      ruoyi-ui/src/views/JiHeExpressway/pages/service/PublishingChannelManagement/components/AddNEditDialog.vue
  27. 3
      ruoyi-ui/src/views/event/event/dispatchYuan.vue

66
ruoyi-ui/src/api/MonthlyEquipment/index.js

@ -1,49 +1,55 @@
import request from '@/utils/request' import request from "@/utils/request";
import { download } from '../../utils/request' import { download } from "../../utils/request";
// 全景数据 - 运行环境接口 // 全景数据 - 运行环境接口
// 设备状态柱状图按时间和类型 // 设备状态柱状图按时间和类型
export function getSystemStatusList(query) { export function getSystemStatusList(query) {
return request({ return request({
url: '/system/status/list', url: "/system/status/list",
method: 'get', method: "get",
params: { params: {
...query, ...query,
} },
}) });
} }
//设备状态列表按时间和类型 //设备状态列表按时间和类型
export function getSystemStatusTabList(query) { export function getSystemStatusTabList(query) {
//system/status/tablist //system/status/tablist
return request({ return request({
url: '/system/status/tablist', url: "/system/status/tablist",
method: 'get', method: "get",
params: { params: {
...query, ...query,
} },
}) });
} }
//设备状态列表按类型
//设备状态列表按类型 export function getSystemStatusType() {
export function getSystemStatusType() {
//system/status/tablist //system/status/tablist
return request({ return request({
url: '/system/status/type', url: "/system/status/type",
method: 'get', method: "get",
params: { });
// ...query, }
} //system/status/type
})
}
//system/status/type
//设备状态列表按类型 //设备状态列表按类型
export function getSystemStatusExport(query) { export function getSystemStatusExport(query) {
//system/status/export //system/status/export
//return download('/system/status/export',query,"file.xlsx"); //return download('/system/status/export',query,"file.xlsx");
return request.post('/system/status/export?startTime='+query.startTime+"&time="+ query.time +"&type="+query.type,{},{ headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, return request.post(
responseType: 'blob'}) "/system/status/export?startTime=" +
query.startTime +
"&time=" +
query.time +
"&type=" +
query.type,
{},
{
headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob",
} }
);
}

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

@ -64,6 +64,12 @@ export default [
name: "controlEventEvent", name: "controlEventEvent",
component: "control/event/event/index.vue", component: "control/event/event/index.vue",
}, },
{
title: "事件预案",
path: "/control/event/plan",
name: "controlEventPlam",
component: "control/event/plan/index.vue",
},
{ {
title: "协调调度记录", title: "协调调度记录",
path: "/control/event/coordinateSchedulingRecords", path: "/control/event/coordinateSchedulingRecords",

2
ruoyi-ui/src/layout/index.vue

@ -274,8 +274,6 @@ export default {
}, },
}, },
created() { created() {
console.log(this.titleHeader, "this.titleHeader");
console.log(this.$route.path, "路由");
if (this.$route.path == "/tunnel") { if (this.$route.path == "/tunnel") {
if ( if (
this.sideTheme == "theme-blue" || this.sideTheme == "theme-blue" ||

2
ruoyi-ui/src/router/routerCreater.js

@ -34,7 +34,7 @@ function processNode(node) {
path: item.path || "", path: item.path || "",
title: item.title, title: item.title,
name: item.name, name: item.name,
meta: { menuId : prev + "_" + ids.join("-") } meta: { menuId : prev + "_" + ids.join("-"), title : item.title}
}; };
if (item.redirect) { if (item.redirect) {

4
ruoyi-ui/src/store/index.js

@ -9,6 +9,7 @@ import settings from './modules/settings'
import wsData from './modules/wsData' import wsData from './modules/wsData'
import getters from './getters' import getters from './getters'
import manage from './modules/manage' import manage from './modules/manage'
import menu from './modules/menu'
Vue.use(Vuex) Vue.use(Vuex)
@ -21,7 +22,8 @@ const store = new Vuex.Store({
permission, permission,
settings, settings,
wsData, wsData,
manage manage,
menu,
}, },
getters getters
}) })

22
ruoyi-ui/src/store/modules/menu.js

@ -0,0 +1,22 @@
const state = {
recentPages: []
}
const mutations = {
addRecent(state, item) {
if (state.recentPages.find(unit => unit.path == item.path)) return;
state.recentPages.push(item);
},
removeRecent(state, item) {
let i = state.recentPages.findIndex(unit => unit.path == item.path);
state.recentPages.splice(i, 1);
}
}
export default {
namespaced: true,
state,
mutations,
}

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

@ -132,11 +132,12 @@ export const startStation = {
}, },
}, },
key: "startStakeMark[0]", key: "startStakeMark[0]",
default:55,
rules: [ rules: [
{ {
message: "请补全桩号", message: "请补全桩号",
callback(value, data) { callback(value, data) {
if (!value?.trim() && data.startStakeMark[1]?.trim()) return false if (!((value+'')?.trim() && data.startStakeMark[1]?.trim())) return false
else return true else return true
} }
} }
@ -149,6 +150,7 @@ export const startStation = {
color: "#3DE8FF", color: "#3DE8FF",
}, },
}, },
default: 378,
key: "startStakeMark[1]" key: "startStakeMark[1]"
}, },
], ],
@ -170,11 +172,12 @@ export const endStation = {
}, },
}, },
key: "endStakeMark[0]", key: "endStakeMark[0]",
default: 208,
rules: [ rules: [
{ {
message: "请补全桩号", message: "请补全桩号",
callback(value, data) { callback(value, data) {
if (!value?.trim() && data.endStakeMark[1]?.trim()) return false if (!((value + '')?.trim() && data.endStakeMark[1]?.trim())) return false
else return true else return true
} }
} }
@ -187,6 +190,7 @@ export const endStation = {
color: "#3DE8FF", color: "#3DE8FF",
}, },
}, },
default: 153,
key: "endStakeMark[1]", key: "endStakeMark[1]",
}, },
], ],

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

@ -228,7 +228,6 @@ export default {
* @type {{ callback?: (value: any) => boolean; type?: "phone"; message: string; }[]} * @type {{ callback?: (value: any) => boolean; type?: "phone"; message: string; }[]}
*/ */
const rules = item.rules || []; const rules = item.rules || [];
for (let index = 0; index < rules.length; index++) { for (let index = 0; index < rules.length; index++) {
const rule = rules[index]; const rule = rules[index];
// true false // true false

1
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/CustomMenu.vue

@ -79,6 +79,7 @@ export default {
} }
} }
this.$emit("onChange", node, key); this.$emit("onChange", node, key);
console.log(node , "菜单点击++========");
} }
} }
}; };

21
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/index.vue

@ -1,5 +1,6 @@
<template> <template>
<nav class="header"> <div class="header">
<div class="headerNavi">
<Clock class="time"></Clock> <Clock class="time"></Clock>
<!-- 左侧菜单 --> <!-- 左侧菜单 -->
<CustomMenu :menuData="menuLeft" @onChange="onChange" prefix="l" :activeIndex="activeIndex" class="leftMenu"> <CustomMenu :menuData="menuLeft" @onChange="onChange" prefix="l" :activeIndex="activeIndex" class="leftMenu">
@ -13,16 +14,16 @@
<CustomMenu :menuData="menuRight" @onChange="onChange" prefix="r" :activeIndex="activeIndex" class="rightMenu"> <CustomMenu :menuData="menuRight" @onChange="onChange" prefix="r" :activeIndex="activeIndex" class="rightMenu">
</CustomMenu> </CustomMenu>
<UserArea class="topButton"></UserArea> <UserArea class="topButton"></UserArea>
</nav> </div>
<RecentPages class="recent"></RecentPages>
</div>
</template> </template>
<script> <script>
import menuData from "@/common/menuData"; import menuData from "@/common/menuData";
import CustomMenu from "./CustomMenu.vue"; import CustomMenu from "./CustomMenu.vue";
import Clock from "./Clock.vue"; import Clock from "./Clock.vue";
import UserArea from './UserArea.vue' import UserArea from './UserArea.vue'
/** import RecentPages from "../RecentPages/index.vue";
*
*/
export default { export default {
name: "HeaderMenu", name: "HeaderMenu",
@ -36,7 +37,8 @@ export default {
components: { components: {
CustomMenu, CustomMenu,
Clock, Clock,
UserArea UserArea,
RecentPages
}, },
emit: ["change"], emit: ["change"],
created() { created() {
@ -66,7 +68,8 @@ export default {
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.header { .header{
.headerNavi { height: 68px;
display: flex; display: flex;
// justify-content: space-between; // justify-content: space-between;
align-items: center; align-items: center;
@ -158,5 +161,9 @@ export default {
height: 15px; height: 15px;
} }
} }
}
.recent{
height: 32px;
}
} }
</style> </style>

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

@ -118,7 +118,7 @@ export default {
}, },
}; };
}, },
emit: ["handleSearch"], emit: ["handleSearch", "handleResetForm"],
computed: { computed: {
getFormConfigOptions() { getFormConfigOptions() {
return { return {

89
ruoyi-ui/src/views/JiHeExpressway/components/RecentPages/index.vue

@ -0,0 +1,89 @@
<template>
<div class="recent_pages">
<h4>最近使用:</h4>
<div class="history_buttons">
<div class="unit" :class="isActive(item) ? 'active' : ''" v-for="item in recentPages">
<p class="btn_main" @click="onClickItem(item)" :key="item.path">{{
item.title
}}</p>
<p class="btn_close" @click="onRemoveItem(item)">x</p>
</div>
</div>
</div>
</template>
<script>
import { mapMutations, mapState } from 'vuex';
export default{
data(){
return {}
},
computed:{
...mapState("menu", ["recentPages"])
},
watch:{
$route:{
handler(newV){
this.addRecent({
title : newV.meta.title,
path : newV.path
});
},
immediate : true
}
},
methods:{
...mapMutations("menu", ["addRecent","removeRecent"]),
onClickItem(item){
this.$route.path != item.path && this.$router.push(item.path);
},
onRemoveItem(item){
this.removeRecent(item);
if(this.$route.path == item.path){
if(this.recentPages.length){
this.$router.push(this.recentPages[this.recentPages.length-1].path)
}else{
this.$router.push("/")
}
}
},
isActive(item) {
return this.$route.path == item.path;
}
}
}
</script>
<style lang="scss" scoped>
.recent_pages{
display: flex; flex-direction: row; align-items:stretch;
h4{ width: 100px; height: 32px; line-height: 32px; text-align: center; margin: 0; padding: 0; font-weight: bold;}
.history_buttons {
flex: 1;
display: flex;
flex-direction: row;
.unit {
cursor: default; margin-right: 3px;
position: relative;
height: 30px;
background-color: #048;
&.active {
background-color: #09C;
color: #FFF;
}
.btn_main {
height: 30px;
line-height: 30px;
padding: 0 12px
}
.btn_close {
background-color: #C00;
position: absolute;
right: 0;
top: 0;
}
}
}
}
</style>

104
ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue

@ -1,11 +1,18 @@
<template> <template>
<BorderRadiusImage class='RoadStateCard' borderRadius="2px" <BorderRadiusImage
borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" borderWidth="2px"> class="RoadStateCard"
borderRadius="2px"
borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))"
borderWidth="2px"
>
<div class="left"> <div class="left">
<!-- <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)"> --> <!-- <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)"> -->
<!-- <img :src="require(`./test.png`)"> --> <!-- <img :src="require(`./test.png`)"> -->
<ElImage style="width: 212px; height: 159px;" :src="cardData.pictures ? cardData.pictures[0] : null" <ElImage
:preview-src-list="cardData.pictures || []"> style="width: 212px; height: 159px"
:src="cardData.pictures ? cardData.pictures[0] : null"
:preview-src-list="cardData.pictures || []"
>
<div slot="error"> <div slot="error">
<i class="el-icon-picture-outline icon"></i> <i class="el-icon-picture-outline icon"></i>
</div> </div>
@ -19,27 +26,35 @@
</p> </p>
</div> </div>
<div class="controls"> <div class="controls">
<Button :style="{ background: firstBtnColor, width: '50%' }" <Button
@click.native="$emit('firstBtnClick', cardData.id)">{{ :style="{ background: firstBtnColor, width: '50%' }"
getFirstBtnText(cardData.state) @click.native="$emit('firstBtnClick', cardData.id)"
}}</Button> >{{ getFirstBtnText(cardData.state) }}</Button
<Button v-if="cardData.state == 4" :style="{ background: lastBtnColor, width: '50%' }" >
@click.native="$emit('lastBtnClick', cardData.id)">{{ getLastBtnText(cardData.state) <Button
}}</Button> v-if="cardData.state == 4"
:style="{ background: lastBtnColor, width: '50%' }"
@click.native="$emit('lastBtnClick', cardData.id)"
>{{ getLastBtnText(cardData.state) }}</Button
>
</div> </div>
</div> </div>
<img v-if="cardData.state" class="status" :src="require(`./images/${statusMap[cardData.state]}.svg`) " /> <img
v-if="cardData.state"
class="status"
:src="require(`./images/${statusMap[cardData.state]}.svg`)"
/>
</BorderRadiusImage> </BorderRadiusImage>
</template> </template>
<script> <script>
import Button from "@screen/components/Buttons/Button.vue"; import Button from "@screen/components/Buttons/Button.vue";
import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue"; import BorderRadiusImage from "@screen/components/BorderRadiusImage.vue";
import { statusMap } from "./data.js" import { statusMap } from "./data.js";
export default { export default {
name: 'RoadStateCard', name: "RoadStateCard",
props: { props: {
cardData: { cardData: {
type: Object, type: Object,
@ -48,80 +63,80 @@ export default {
source: "视频智能识别", source: "视频智能识别",
location: "k100+000", location: "k100+000",
direction: "济南方向", direction: "济南方向",
}) }),
}, },
firstBtnText: { firstBtnText: {
type: String, type: String,
default: "详情" default: "详情",
}, },
lastBtnText: { lastBtnText: {
type: String, type: String,
default: "调度记录" default: "调度记录",
}, },
firstBtnColor: { firstBtnColor: {
type: String, type: String,
default: "#00B3CC" default: "#00B3CC",
}, },
lastBtnColor: { lastBtnColor: {
type: String, type: String,
default: "#CB7A00" default: "#CB7A00",
}, },
keyMap: { keyMap: {
type: Array, type: Array,
default: () => ([ default: () => [
{ {
key: "stringEventType", key: "stringEventType",
label: "事件" label: "事件",
}, },
{ {
key: "stringEventSource", key: "stringEventSource",
label: "来源" label: "来源",
}, },
{ {
key: "stakeMark", key: "stakeMark",
label: "位置" label: "位置",
}, },
{ {
key: "stringDirection", key: "stringDirection",
label: "方向" label: "方向",
}, },
{ {
key: "startTime", key: "startTime",
label: "时间" label: "时间",
},
],
}, },
])
}
}, },
data() { data() {
return { return {
picUrl: './test.png' picUrl: "./test.png",
} };
}, },
emit: ['firstBtnClick', "lastBtnClick"], emit: ["firstBtnClick", "lastBtnClick"],
components: { components: {
Button, Button,
BorderRadiusImage BorderRadiusImage,
}, },
created() { created() {
this.statusMap = statusMap; this.statusMap = statusMap;
}, },
methods: { methods: {
getFirstBtnText(state) { getFirstBtnText(state) {
let text = '详情'; let text = "详情";
if (state == 5) text = '去确认' if (state == 5) text = "去确认";
if (state == 4) text = '详情' if (state == 4) text = "详情";
if (state == 3) text = '处置记录' if (state == 3) text = "处置记录";
return text; return text;
}, },
getLastBtnText(state) { getLastBtnText(state) {
let text = '去处置'; let text = "去处置";
return text; return text;
}, },
} },
} };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.RoadStateCard { .RoadStateCard {
color: #fff; color: #fff;
display: flex; display: flex;
@ -143,7 +158,7 @@ export default {
} }
.icon { .icon {
display:inline-block; display: inline-block;
width: 212px; width: 212px;
height: 159px; height: 159px;
line-height: 157px; line-height: 157px;
@ -165,13 +180,13 @@ export default {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
>p { > p {
font-size: 12px; font-size: 12px;
color: #f4f4f4; color: #f4f4f4;
line-height: 24px; line-height: 24px;
&:nth-child(-n+2) { &:nth-child(-n + 2) {
color: #37E7FF; color: #37e7ff;
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
} }
@ -179,7 +194,6 @@ export default {
&:nth-child(2) { &:nth-child(2) {
margin-bottom: 3px; margin-bottom: 3px;
} }
} }
.linText { .linText {
@ -198,7 +212,7 @@ export default {
display: flex; display: flex;
gap: 9px; gap: 9px;
>div { > div {
// flex: 1; // flex: 1;
} }
} }

1
ruoyi-ui/src/views/JiHeExpressway/components/empty.vue

@ -19,7 +19,6 @@ export default {
} }
}, },
mounted() { mounted() {
console.log(this.$route)
} }
} }
</script> </script>

7
ruoyi-ui/src/views/JiHeExpressway/index.vue

@ -12,24 +12,23 @@
<script> <script>
import HeaderMenu from "./components/HeaderMenu/index.vue"; import HeaderMenu from "./components/HeaderMenu/index.vue";
import Adaptation from "./components/Adaptation.vue"; import Adaptation from "./components/Adaptation.vue";
import getBoardBaseData from '@/common/getBoardBaseData' import getBoardBaseData from '@/common/getBoardBaseData'
export default { export default {
name: "ji_ze_gao_su", name: "ji_ze_gao_su",
components: { components: {
HeaderMenu, HeaderMenu,
Adaptation Adaptation,
// ...modules // ...modules
}, },
data() { data() {
return { return {
isShowContent:false, isShowContent:false,
headerHeight:68, headerHeight:100,
header: { header: {
scale: 1, scale: 1,
originW: 1920, originW: 1920,
originH: 68 originH: 100 //10068
}, },
}; };
}, },

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

@ -1,5 +1,5 @@
<template> <template>
<div class='DutyOfficer'> <div class="DutyOfficer">
<div class="filter"> <div class="filter">
<div> <div>
<ButtonGradient @click.native="handleExport"> <ButtonGradient @click.native="handleExport">
@ -35,24 +35,27 @@
</div> </div>
<InputSearch <InputSearch
style="width: 402px;" style="width: 402px"
:formList="searchFormList" :formList="searchFormList"
:formConfigOptions="{ labelWidth: '100px' }" :formConfigOptions="{ labelWidth: '100px' }"
placeholder="请输入姓名、电话,回车搜索" placeholder="请输入姓名、电话,回车搜索"
type="input" type="input"
:params="params" :params="params"
@handleSearch="handleSearch" /> @handleSearch="handleSearch"
/>
</div> </div>
<div class="body"> <div class="body">
<ElEmpty v-if="!data.length && !isFirst" description="暂无数据" style="width: 100%;height: 100%;position: absolute;" /> <ElEmpty
v-if="!data.length && !isFirst"
description="暂无数据"
style="width: 100%; height: 100%; position: absolute"
/>
<!-- <div v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</div> --> <!-- <div v-if="!data.length && !isFirst" class="no-data" style="position: absolute">暂无数据</div> -->
<SpecialTable v-else :columns="columns" :data="data" class="body"> <SpecialTable v-else :columns="columns" :data="data" class="body">
<template #title-DateDuty> <template #title-DateDuty>
<div class="special-title"> <div class="special-title">值班中心</div>
值班中心
</div>
</template> </template>
<template #content-date="{ data }"> <template #content-date="{ data }">
<div class="item"> <div class="item">
@ -64,46 +67,62 @@
<div class="parent"> <div class="parent">
<div class="item"> <div class="item">
<img src="@screen/images/form/location.svg" /> <img src="@screen/images/form/location.svg" />
{{ data['organizationName'] }} {{ data["organizationName"] }}
</div> </div>
</div> </div>
</template> </template>
<template #content-dayShift="{ data }"> <template #content-dayShift="{ data }">
<div class="item-parent" v-if="data.dayShift && data.dayShift.length"> <div class="item-parent" v-if="data.dayShift && data.dayShift.length">
<div class="item" v-for="(item,index) in data.dayShift" :key="index" > <div
class="item"
v-for="(item, index) in data.dayShift"
:key="index"
>
<img src="@screen/images/form/people.svg" /> <img src="@screen/images/form/people.svg" />
{{ item.name }} {{ item.name }}
</div> </div>
</div> </div>
<div class="no-data" v-else> <div class="no-data" v-else>无值班人员</div>
无值班人员
</div>
</template> </template>
<template #content-graveyardShift="{ data }"> <template #content-graveyardShift="{ data }">
<div class="item-parent" v-if="data.graveyardShift && data.graveyardShift.length"> <div
<div class="item" v-for="(item,index) in data.graveyardShift" :key="index"> class="item-parent"
v-if="data.graveyardShift && data.graveyardShift.length"
>
<div
class="item"
v-for="(item, index) in data.graveyardShift"
:key="index"
>
<img src="@screen/images/form/people.svg" /> <img src="@screen/images/form/people.svg" />
{{ item.name }} {{ item.name }}
</div> </div>
</div> </div>
<div class="no-data" v-else> <div class="no-data" v-else>无值班人员</div>
无值班人员
</div>
</template> </template>
<template #operation-content="{ data }"> <template #operation-content="{ data }">
<ButtonGradient class="operate-button" @click.native="handleModifyDutyInformationTable(true, data)"> <ButtonGradient
class="operate-button"
@click.native="handleModifyDutyInformationTable(true, data)"
>
<template #prefix> <template #prefix>
<img src="@screen/images/form/edit.svg" /> <img src="@screen/images/form/edit.svg" />
</template> </template>
修改 修改
</ButtonGradient> </ButtonGradient>
<ButtonGradient class="operate-button" @click.native="handleOperateRecord(true, data)"> <ButtonGradient
class="operate-button"
@click.native="handleOperateRecord(true, data)"
>
<template #prefix> <template #prefix>
<img src="@screen/images/form/record.svg" /> <img src="@screen/images/form/record.svg" />
</template> </template>
记录 记录
</ButtonGradient> </ButtonGradient>
<ButtonGradient class="operate-button" @click.native="handleDelete(data)"> <ButtonGradient
class="operate-button"
@click.native="handleDelete(data)"
>
<template #prefix> <template #prefix>
<img src="@screen/images/form/delete.svg" /> <img src="@screen/images/form/delete.svg" />
</template> </template>
@ -113,60 +132,66 @@
</SpecialTable> </SpecialTable>
</div> </div>
<OperateRecord
:visible="operateRecordVisible"
@close="handleOperateRecord(false)"
:data="dialogData"
/>
<OperateRecord :visible="operateRecordVisible" @close="handleOperateRecord(false)" :data="dialogData" /> <ModifyDutyInformationTable
:visible="modifyDutyInformationTableVisible"
<ModifyDutyInformationTable :visible="modifyDutyInformationTableVisible" :data="dialogData" :data="dialogData"
@close="handleModifyDutyInformationTable(false)" /> @close="handleModifyDutyInformationTable(false)"
/>
</div> </div>
</template> </template>
<script> <script>
import SpecialTable from "./../../components/SpecialTable.vue" import SpecialTable from "./../../components/SpecialTable.vue";
import OperateRecord from "./components/OperateRecord.vue" import OperateRecord from "./components/OperateRecord.vue";
import ModifyDutyInformationTable from "./components/ModifyDutyInformationTable.vue" import ModifyDutyInformationTable from "./components/ModifyDutyInformationTable.vue";
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue'; import ButtonGradient from "@screen/components/Buttons/ButtonGradient.vue";
import InputSearch from '@screen/components/InputSearch/index.vue'; import InputSearch from "@screen/components/InputSearch/index.vue";
import { searchFormList } from "./data"; import { searchFormList } from "./data";
import request from "@/utils/request"; import request from "@/utils/request";
import { setLoading } from "@screen/utils/index.js" import { setLoading } from "@screen/utils/index.js";
import { delay, exportFile, confirm, uploadFile } from "@screen/utils/common"; import { delay, exportFile, confirm, uploadFile } from "@screen/utils/common";
import { Message } from "element-ui"; import { Message } from "element-ui";
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: 'DutyOfficer', name: "DutyOfficer",
components: { components: {
SpecialTable, SpecialTable,
OperateRecord, OperateRecord,
ModifyDutyInformationTable, ModifyDutyInformationTable,
ButtonGradient, ButtonGradient,
InputSearch InputSearch,
}, },
inject: ['getPagination', 'setTotal', 'setCurrentPage'], inject: ["getPagination", "setTotal", "setCurrentPage"],
data() { data() {
return { return {
columns: [ columns: [
{ {
key: "date", key: "date",
title: "值班日期", title: "值班日期",
width: "210px" width: "210px",
}, },
{ {
key: "organizationName", key: "organizationName",
title: "驻点", title: "驻点",
width: "240px" width: "240px",
}, },
{ {
key: "dayShift", key: "dayShift",
title: "白班", title: "白班",
width: "510px" width: "510px",
}, },
{ {
key: "graveyardShift", key: "graveyardShift",
title: "夜班", title: "夜班",
width: "510px" width: "510px",
}, },
], ],
data: [], data: [],
@ -177,8 +202,8 @@ export default {
required: false, required: false,
type: "datePicker", type: "datePicker",
options: { options: {
valueFormat: "yyyy-MM-dd" valueFormat: "yyyy-MM-dd",
} },
}, },
{ {
label: "驻点:", label: "驻点:",
@ -195,7 +220,7 @@ export default {
dialogData: null, dialogData: null,
isFirst: true, isFirst: true,
params: "name", params: "name",
} };
}, },
created() { created() {
this.getData(); this.getData();
@ -203,7 +228,6 @@ export default {
}, },
methods: { methods: {
async getOptions() { async getOptions() {
const result = await getSelectOptionsStation(2); const result = await getSelectOptionsStation(2);
this.searchFormList[1].options.options = result; this.searchFormList[1].options.options = result;
@ -230,8 +254,8 @@ export default {
filename: "机构值班表", filename: "机构值班表",
data: { data: {
...this.searchData, ...this.searchData,
...this.getPagination() ...this.getPagination(),
} },
}); });
}, },
handleExportTemplate() { handleExportTemplate() {
@ -240,8 +264,8 @@ export default {
filename: "机构值班表面板", filename: "机构值班表面板",
data: { data: {
...this.searchData, ...this.searchData,
...this.getPagination() ...this.getPagination(),
} },
}); });
}, },
handleSearch(data) { handleSearch(data) {
@ -258,35 +282,36 @@ export default {
method: "get", method: "get",
params: { params: {
...this.searchData, ...this.searchData,
...this.getPagination() ...this.getPagination(),
} },
}) })
.then(result => { .then((result) => {
if (result.code != 200) return; if (result.code != 200) return;
this.data = result.rows.map(item => { this.data = result.rows.map((item) => {
const result = { const result = {
date: item.date, date: item.date,
organizationName: item.organizationName, organizationName: item.organizationName,
station: item.station, station: item.station,
id: item.id id: item.id,
} };
item.shiftsList.forEach(item => { item.shiftsList.forEach((item) => {
const key = { 1: 'dayShift', 2: 'graveyardShift' }[item.scheduling]; const key = { 1: "dayShift", 2: "graveyardShift" }[
item.scheduling
];
if (!result[key]) result[key] = []; if (!result[key]) result[key] = [];
result[key].push(item); result[key].push(item);
}) });
return result return result;
}); });
this.setTotal(result.total); this.setTotal(result.total);
}) })
.finally(() => { .finally(() => {
this.isFirst = false; this.isFirst = false;
closeLoading(); closeLoading();
}) });
}, },
async handleDelete(data) { async handleDelete(data) {
await confirm({ message: "是否要删除该值班信息?" }); await confirm({ message: "是否要删除该值班信息?" });
@ -297,31 +322,30 @@ export default {
data: { data: {
date: data.date, date: data.date,
station: data.station, station: data.station,
} },
}) })
.then(result => { .then((result) => {
if (result.code != 200) return Message.error("删除失败"); if (result.code != 200) return Message.error("删除失败");
this.setCurrentPage(1) this.setCurrentPage(1);
Message.success("删除成功") Message.success("删除成功");
}) })
.catch(() => { .catch(() => {
Message.error("删除失败") Message.error("删除失败");
}) });
}, },
uploadFile() { uploadFile() {
uploadFile({ url: "/business/shifts/importEquipment" }); uploadFile({ url: "/business/shifts/importEquipment" });
} },
} },
} };
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.DutyOfficer { .DutyOfficer {
.special-title { .special-title {
background: linear-gradient(180deg, #FFC071 0%, #D68D00 100%); background: linear-gradient(180deg, #ffc071 0%, #d68d00 100%);
background-clip: text; background-clip: text;
color: transparent; color: transparent;
} }

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

@ -0,0 +1,617 @@
<template>
<Dialog v-model="modelVisible" title="新增预案">
<div class="EventAddPlanDialog">
<ElForm :model="formData" inline :rules="rules" ref="ruleForm">
<div class="first">
<el-form-item prop="eventCategory">
<el-radio-group v-model="formData.eventCategory" @input="changeRadio">
<el-radio-button :label="1">交通事件</el-radio-button>
<el-radio-button :label="2">感知事件</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item required label="预案名称:" prop="planName">
<el-input v-model="formData.planName" placeholder="请输入预案名称"></el-input>
</el-form-item>
<el-form-item required label="事件类型:" prop="eventType">
<el-select v-model="formData.eventType" placeholder="请选择事件类型" @change="changeEventType">
<el-option v-for="item in eventOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item
v-if="(formData.eventCategory == 1 && formData.eventType !== 8) || formData.eventCategory == 2"
label="触发类型:" prop="triggerMechanism">
<el-select
v-if="(formData.eventCategory == 1 && formData.eventType !== 6) || formData.eventCategory == 2"
v-model="formData.triggerMechanism" placeholder="请选择触发类型">
<el-option v-for="item in mechanismOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-if="formData.eventCategory == 1 && formData.eventType == 6"
v-model="formData.triggerMechanism" placeholder="请选择触发类型">
<el-option-group label="主线">
<el-option label="主线封闭" value="1"></el-option>
<el-option label="主线限行" value="2"></el-option>
</el-option-group>
<el-option-group label="收费站">
<el-option label="收费站封闭" value="3"></el-option>
<el-option label="收费站限行" value="4"></el-option>
</el-option-group>
<el-option-group label="匝道立交">
<el-option label="匝道立交封闭" value="5"></el-option>
<el-option label="匝道立交限行" value="6"></el-option>
</el-option-group>
<el-option-group label="服务区">
<el-option label="服务区封闭" value="7"></el-option>
<el-option label="服务区限行" value="8"></el-option>
</el-option-group>
</el-select>
</el-form-item>
</div>
<div class="second">
<el-row>
<el-col :span="2">
<div class="text">执行操作:</div>
</el-col>
<el-col :span="22">
<FormTable ref="secondFormTable"></FormTable>
</el-col>
</el-row>
</div>
<!-- <div class="third">
<el-row>
<el-col :span="2">
<div class="text">恢复操作:</div>
</el-col>
<el-col :span="22">
<FormTable></FormTable>
</el-col>
</el-row>
</div> -->
</ElForm>
</div>
<template #footer>
<Button style="background: #C9C9C9;padding:0 24px;"
@click.native="modelVisible = false, submitting = false">取消</Button>
<Button style="padding:0 24px;" @click.native="handleSubmit" :loading="submitting">保存</Button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index";
import Form from '@screen/components/FormConfig';
import FormTable from '../formTable/index';
import Button from '@screen/components/Buttons/Button.vue';
import request from '@/utils/request';
import { Message } from "element-ui";
const optionsMap = {
1: {
1: [
{
value: 1,
label: '雨'
},
{
value: 2,
label: '雪'
},
{
value: 3,
label: '雾'
},
{
value: 4,
label: '大风'
},
{
value: 5,
label: '低温寒潮'
},
{
value: 6,
label: '路面积雪'
},
{
value: 7,
label: '路面结冰'
},
{
value: 8,
label: '路面积水'
},
{
value: 9,
label: '其他'
}
],
2: [
{
value: 1,
label: '侧翻'
},
{
value: 2,
label: '撞障碍物'
},
{
value: 3,
label: '货物洒落'
},
{
value: 4,
label: '撞护栏'
},
{
value: 5,
label: '自燃'
},
{
value: 6,
label: '追尾'
}
],
3: [
{
value: 1,
label: '行人'
},
{
value: 2,
label: '非机动车'
},
{
value: 3,
label: '摩托车'
},
{
value: 4,
label: '其他'
}
],
4: [
{
value: 1,
label: '高速主线'
},
{
value: 2,
label: '服务区'
},
{
value: 3,
label: '立交桥'
},
{
value: 4,
label: '收费站'
}
],
5: [
{
value: 1,
label: '道路拥堵'
},
{
value: 2,
label: '立交拥堵'
},
{
value: 3,
label: '收费站拥堵'
},
{
value: 4,
label: '收费站服务区拥堵'
}
],
6: [
],
7: [
{
value: 1,
label: '封闭、暂停营业'
},
{
value: 2,
label: '重要设施停用'
},
{
value: 3,
label: '其他异常'
}
],
8: [],
9: [
{
value: 1,
label: '烟雾'
},
{
value: 2,
label: '倒伏树木'
},
{
value: 3,
label: '洒落物'
},
{
value: 4,
label: '动物'
},
{
value: 5,
label: '其他'
}
]
},
2: {
1: [{
value: 1,
label: '雾'
}],
2: [],
3: [],
4: [],
5: [],
6: [],
7: [],
}
};
export default {
name: 'addAndEditDialog',
components: {
Dialog,
Form,
Button,
FormTable
},
model: {
prop: 'visible',
event: 'close'
},
props: {
visible: Boolean,
detail: {
type: Object,
default: () => { }
}
},
data() {
return {
activeName: "TrafficAccident",
submitting: false,
formConfig: {},
formData: {
eventCategory: 1,
eventType: 1,
triggeringCondition: 0
},
index: 1,
roads: [],
direction: [],
lwss: [],
eventOptions: [
{
value: 1,
label: '异常天气'
},
{
value: 2,
label: '交通事故'
},
{
value: 3,
label: '非法上路'
},
{
value: 4,
label: '车辆故障'
},
{
value: 5,
label: '交通拥堵'
},
{
value: 6,
label: '交通管制'
},
{
value: 7,
label: '服务区异常'
},
{
value: 8,
label: '施工建设'
},
{
value: 9,
label: '路障清除'
}
],
mechanismOptions: [{
value: 1,
label: '雨'
},
{
value: 2,
label: '雪'
},
{
value: 3,
label: '雾'
},
{
value: 4,
label: '大风'
},
{
value: 5,
label: '低温寒潮'
},
{
value: 6,
label: '路面积雪'
},
{
value: 7,
label: '路面结冰'
},
{
value: 8,
label: '路面积水'
},
{
value: 9,
label: '其他'
}],
conditionOptions: [
// {
// value: 1,
// label: '(>)'
// },
{
value: 1,
label: '小于(<)'
},
],
rules: {
planName: [
{ required: true, message: '请输入预案名称', trigger: 'blur' },
],
eventType: [
{ required: true, message: '请选择事件类型', trigger: 'change' }
],
}
}
},
created() {
// this.formConfig = tabConfigList[0].formConfig;
this.initData().then(() => {
this.handleChange({ index: 0 })
})
},
computed: {
modelVisible: {
get() {
return this.visible;
},
set(val) {
this.$emit('close', val)
}
},
getFormOptions() {
return {
column: 3,
...this.formConfig.formOptions
}
}
},
methods: {
initData() {
return Promise.all([
//
request({
url: `/business/road/query`,
method: "get",
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.data.forEach(it => {
this.roads.push({ key: it.id, label: it.roadName })
})
}).catch((err) => {
Message.error("查询失败4", err);
}),
//
request({
url: `/system/dict/data/type/iot_event_direction`,
method: "get",
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.data.forEach(it => {
this.direction.push({ key: it.dictValue, label: it.dictLabel })
})
}).catch((err) => {
Message.error("查询失败5", err);
}),
// 1 2 3 4 5 6
request({
url: `/business/facility/query`,
method: "get"
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.data.forEach(it => this.lwss.push({ key: it.id, label: it.facilityName, type: it.facilityType }))
}).catch((err) => {
console.log('err', err)
Message.error("查询失败6", err);
})
])
},
changeEventType(value = 1) {
this.mechanismOptions = optionsMap[this.formData.eventCategory || 1][value];
},
changeRadio(value = 1) {
const optionsMap = {
1: [{
value: 1,
label: '异常天气'
},
{
value: 2,
label: '交通事故'
},
{
value: 3,
label: '非法上路'
},
{
value: 4,
label: '车辆故障'
},
{
value: 5,
label: '交通拥堵'
},
{
value: 6,
label: '交通管制'
},
{
value: 7,
label: '服务区异常'
},
{
value: 8,
label: '施工建设'
},
{
value: 9,
label: '路障清除'
}],
2: [{
value: 1,
label: '异常天气'
},
{
value: 2,
label: '拥堵'
},
{
value: 3,
label: '非机动车'
},
{
value: 4,
label: '行人'
},
{
value: 5,
label: '烟火'
},
{
value: 6,
label: '抛洒物'
},
{
value: 7,
label: '逆行'
},
]
}
this.eventOptions = optionsMap[value];
this.changeEventType();
},
handleChange() {
},
handleSubmit() {
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
this.submitting = true;
console.log('formData', this.formData)
this.modelVisible = false;
this.submitting = false;
// this.$emit('queryData',true)
console.log(this.$refs['secondFormTable'].tableData)
return;
request({
url: `/dc/system/event`,
method: "post",
data: {
...formData,
eventType: Number(this.index) + 1,
eventState: 0,
stakeMark: (stakeMark && stakeMark[0] != null) ? ((stakeMark && stakeMark.length > 0) ? ('K' + stakeMark[0] + '+' + stakeMark[1]) : '') : '',
}
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
Message.success("提交成功");
this.modelVisible = false;
}).catch(() => {
Message.error("提交失败");
}).finally(() => {
this.submitting = false;
this.$emit('queryData', true);
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity .24s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
.EventAddPlanDialog {
gap: 9px;
width: 1080px;
height: 310px;
display: flex;
flex-direction: column;
.first,
.second,
.third {
padding: 5px 10px 8px;
background-color: #296887;
margin-bottom: 15px;
.text {
margin-top: 12px;
}
}
.form {
flex: 1;
overflow-y: auto;
}
.footer {
display: flex;
justify-content: end;
gap: 15px;
}
}
</style>

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

@ -0,0 +1,79 @@
import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
import { merge, cloneDeep } from "lodash";
export const searchFormList = [
{
label: "事件状态:",
key: "eventState",
type: "RadioGroup",
options: {
options: [
{
key: "0",
label: "未解决",
},
{
key: "1",
label: "已解决",
},
{
key: "2",
label: "已关闭",
},
],
},
},
PresetFormItems.eventSources,
PresetFormItems.eventType,
{
label: "方向:",
key: "direction",
type: "RadioGroup",
options: {
options: [
{
key: "济南方向",
label: "济南方向",
},
{
key: "菏泽方向",
label: "菏泽方向",
},
{
key: "双向",
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,
}),
];

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

@ -0,0 +1,343 @@
<template>
<div class="EventDetail">
<Table :data="tableData" :show-header="false">
<ElTableColumn prop="deviceType" width="160">
<template slot-scope="scope">
<el-select v-model="scope.row.deviceType" placeholder="请选择设备类型" @change="changeDeviceType">
<el-option v-for="item in deviceOptions" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</template>
</ElTableColumn>
<ElTableColumn prop="phrases2" width="260">
<template slot-scope="scope">
<el-select v-if="scope.row.deviceType == 1" v-model="scope.row.phrases2" 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>
<el-input-number v-model="scope.row.phrases2" :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>
<el-input-number v-model="scope.row.phrases2" :min="0" :max="9999"
style="width: 130px;"></el-input-number>
<p style="width: 56px;">公里</p>
</div>
</template>
</ElTableColumn>
<ElTableColumn prop="phrases3" 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-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>
<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-option label="工作模式" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases6" 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-option label="控制模式" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases5" placeholder="">
<el-option label="选择时间" :value="1"></el-option>
</el-select>
<el-select v-model="scope.row.phrases6" 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>
</div>
</template>
</ElTableColumn>
<ElTableColumn label="操作" width="100">
<template slot-scope="scope">
<ElButton class="elButton" icon="el-icon-plus" plain size="mini"
@click.native="onAdd(scope.row.id)" />
<ElButton class="elButton" icon="el-icon-delete" plain size="mini"
@click.native="onDel(scope.$index)" />
</template>
</ElTableColumn>
</Table>
</div>
</template>
<script>
import Table from '@screen/components/Table.vue';
import Button from '@screen/components/Buttons/Button.vue';
import request from "@/utils/request";
import { Message } from 'element-ui'
export default {
name: 'formTable',
components: {
Button,
Table,
},
model: {
prop: 'visible',
event: 'update:value'
},
props: {
visible: Boolean,
eventType: Number,
// process: {
// type: Array,
// default: () => []
// }
},
data() {
return {
tableData: [
{
deviceType: 1,
phrases2: 1,
phrases4: '安全行驶'
}
],
deviceOptions: [
{
value: 1,
label: '门架式可变信息标志'
},
{
value: 2,
label: '疲劳唤醒'
},
{
value: 3,
label: '行车诱导'
},
{
value: 4,
label: '路段广播'
}
],
zyOptions: [
{
value: 1,
label: '指定设备资源'
},
{
value: 2,
label: '事发上游最近'
},
{
value: 3,
label: '最近公里数'
},
],
options: [
{
value: 1,
label: '交通事故'
},
{
value: 2,
label: '车辆故障'
},
{
value: 3,
label: '交通管制'
},
{
value: 4,
label: '交通拥堵'
},
{
value: 5,
label: '非法上路'
},
{
value: 6,
label: '路障清除'
},
{
value: 7,
label: '施工建设'
},
{
value: 8,
label: '服务区异常'
},
{
value: 9,
label: '设施设备隐患'
},
{
value: 10,
label: '异常天气'
},
{
value: 11,
label: '其他事件'
}
],
deviceType: 1,
}
},
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: ''
})
},
onDel(index) {
if (this.tableData.length <= 1) {
return Message.warning('最后一项不可删除!');
}
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>
<style lang="scss" scoped>
.EventDetail {
display: flex;
gap: 9px;
width: 100%;
// height: 768px;
min-height: 50px;
margin-top: 5px;
flex-direction: column;
::v-deep {
.el-table .el-table__cell {
padding: 0 5px;
}
}
.mjs {
display: flex;
>div {
margin-right: 10px;
}
}
.plhx {
display: flex;
}
}
.elButton {
background: #2ba8c3;
border-radius: 2px 2px 2px 2px;
color: #FFFFFF;
}
.elButton:hover,
.elButton:focus {
background: #2ba8c3;
border-radius: 2px 2px 2px 2px;
border-color: #FFFFFF;
color: #FFFFFF;
}
</style>

22
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/images/refresh.svg

@ -0,0 +1,22 @@
<svg width="16" height="14" viewBox="0 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Group 1142814398">
<g id="Group 1142814396">
<path id="Rectangle 1304" d="M1.0437 2.41495L4.5636 2.01738L4.91112 6.00562" stroke="white" stroke-linecap="round"/>
<g id="Ellipse 835">
<mask id="path-2-inside-1_290_77" fill="white">
<path d="M4.29579 2.52494C4.09359 2.27296 3.71712 2.25216 3.51748 2.50144C2.86315 3.31847 2.39514 4.30903 2.15904 5.38649C1.87758 6.67096 1.93836 8.02122 2.3337 9.26652C2.72904 10.5118 3.44118 11.5962 4.38007 12.3826C5.16561 13.0406 6.08036 13.4652 7.0411 13.6229C7.35243 13.674 7.61901 13.4293 7.63212 13.1145C7.64523 12.7997 7.39954 12.5346 7.08935 12.4765C6.32757 12.3339 5.60349 11.9884 4.97813 11.4646C4.19938 10.8124 3.6087 9.91289 3.28078 8.87998C2.95287 7.84706 2.90245 6.72709 3.13591 5.66169C3.33404 4.75752 3.72906 3.92712 4.28182 3.24492C4.4503 3.03698 4.46523 2.7361 4.29579 2.52494Z"/>
</mask>
<path d="M4.29579 2.52494C4.09359 2.27296 3.71712 2.25216 3.51748 2.50144C2.86315 3.31847 2.39514 4.30903 2.15904 5.38649C1.87758 6.67096 1.93836 8.02122 2.3337 9.26652C2.72904 10.5118 3.44118 11.5962 4.38007 12.3826C5.16561 13.0406 6.08036 13.4652 7.0411 13.6229C7.35243 13.674 7.61901 13.4293 7.63212 13.1145C7.64523 12.7997 7.39954 12.5346 7.08935 12.4765C6.32757 12.3339 5.60349 11.9884 4.97813 11.4646C4.19938 10.8124 3.6087 9.91289 3.28078 8.87998C2.95287 7.84706 2.90245 6.72709 3.13591 5.66169C3.33404 4.75752 3.72906 3.92712 4.28182 3.24492C4.4503 3.03698 4.46523 2.7361 4.29579 2.52494Z" stroke="white" stroke-width="2" mask="url(#path-2-inside-1_290_77)"/>
</g>
</g>
<g id="Group 1142814397">
<path id="Rectangle 1304_2" d="M15.0437 11.585L11.5238 11.9826L11.1763 7.99438" stroke="white" stroke-linecap="round"/>
<g id="Ellipse 835_2">
<mask id="path-4-inside-2_290_77" fill="white">
<path d="M11.7916 11.4751C11.9938 11.727 12.3703 11.7478 12.5699 11.4986C13.2242 10.6815 13.6923 9.69097 13.9284 8.61351C14.2098 7.32904 14.149 5.97878 13.7537 4.73348C13.3584 3.48817 12.6462 2.40376 11.7073 1.61737C10.9218 0.95942 10.007 0.534814 9.0463 0.377109C8.73497 0.326006 8.46839 0.570722 8.45528 0.885536C8.44218 1.20035 8.68786 1.46544 8.99805 1.5235C9.75983 1.6661 10.4839 2.01159 11.1093 2.53538C11.888 3.18765 12.4787 4.08711 12.8066 5.12002C13.1345 6.15294 13.1849 7.27291 12.9515 8.33831C12.7534 9.24248 12.3583 10.0729 11.8056 10.7551C11.6371 10.963 11.6222 11.2639 11.7916 11.4751Z"/>
</mask>
<path d="M11.7916 11.4751C11.9938 11.727 12.3703 11.7478 12.5699 11.4986C13.2242 10.6815 13.6923 9.69097 13.9284 8.61351C14.2098 7.32904 14.149 5.97878 13.7537 4.73348C13.3584 3.48817 12.6462 2.40376 11.7073 1.61737C10.9218 0.95942 10.007 0.534814 9.0463 0.377109C8.73497 0.326006 8.46839 0.570722 8.45528 0.885536C8.44218 1.20035 8.68786 1.46544 8.99805 1.5235C9.75983 1.6661 10.4839 2.01159 11.1093 2.53538C11.888 3.18765 12.4787 4.08711 12.8066 5.12002C13.1345 6.15294 13.1849 7.27291 12.9515 8.33831C12.7534 9.24248 12.3583 10.0729 11.8056 10.7551C11.6371 10.963 11.6222 11.2639 11.7916 11.4751Z" stroke="white" stroke-width="2" mask="url(#path-4-inside-2_290_77)"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

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

@ -0,0 +1,222 @@
<template>
<div class='emergencyProcessManagement'>
<!-- 搜索栏 -->
<div class="filter">
<div>
<ButtonGradient @click="onAdd">
<template #prefix>
<img src="@screen/images/insert.svg" />
</template>
新增
</ButtonGradient>
<ButtonGradient @click="onRefresh" class="refresh-btn">
<template #prefix>
<img src="./images/refresh.svg" />
</template>
刷新
</ButtonGradient>
</div>
<InputSearch style="width: 402px;" :formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: 0 } }" @handleSearch="handleSearch" />
</div>
<!-- 内容 -->
<div class="body">
<Table :data="tableData">
<ElTableColumn prop="strEventCategory" label="事件分类" width="100" align="center" />
<ElTableColumn prop="strEventType" label="事件类型" width="100" align="center" />
<ElTableColumn prop="planName" label="预案名称" width="140" align="center" />
<ElTableColumn prop="triggeringCondition" label="检索条件" width="140" />
<ElTableColumn prop="deviceType" label="设备类型" width="140" />
<ElTableColumn prop="controllableDevice" label="可控设备" width="200" />
<ElTableColumn prop="controlCommand" label="控制指令" />
<ElTableColumn label="操作" width="210" align="center">
<template slot-scope="scope">
<ElButton type="text" style="color: #00D1FF;" @click="showDisposal(scope.row)">修改</ElButton>
<ElButton type="text" style="color: #00EBC1;" @click="handleDelete(scope.row)">删除</ElButton>
</template>
</ElTableColumn>
</Table>
</div>
<!-- 新增修改弹窗 -->
<AddAndEditDialog :visible="isShowDialog" :detail="detail" @close="onCloseAddNew"
@update:phrasesData="onUpdatePhrasesData" @reInitData="initData" />
<!-- 分页 -->
<div class="footer">
<Pagination @current-change="initData" @size-change="onSizeChange" width="'100%'"
:page-sizes="[10, 20, 30, 40, 50]" :page-size="searchData.pageSize"
:current-page.sync="searchData.pageNum" layout="total, sizes, prev, pager, next" :total="total">
</Pagination>
</div>
</div>
</template>
<script>
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Pagination from '@screen/components/Pagination.vue';
import Table from '@screen/components/Table.vue';
import InputSearch from '@screen/components/InputSearch/index.vue';
import AddAndEditDialog from './addAndEditDialog';
import request from "@/utils/request";
import { confirm } from "@screen/utils/common";
import { Message } from 'element-ui'
import { searchFormList } from './data';
const eventTypeMap = {
0: {
1: '交通事故',
2: '车辆故障',
3: '交通管制',
4: '交通拥堵',
5: '非法上路',
6: '路障清除',
7: '施工建设',
8: '服务区异常',
9: '设施设备隐患',
10: '异常天气',
11: '其他事件',
},
1: {
1: '异常天气',
2: '拥堵',
3: '非机动车',
4: '行人',
5: '烟火',
6: '抛洒物',
7: '逆行',
},
2: {}
}
export default {
name: 'controlEventPlan',
components: {
ButtonGradient,
Pagination,
Table,
InputSearch,
AddAndEditDialog
},
data() {
return {
tableData: [],
searchFormList,
isShowDialog: false,
total: 20,
eventType: 1,
searchData: {
pageSize: 20,
pageNum: 1,
},
phrasesData: [],
detail: {}
}
},
created() {
this.initData();
},
methods: {
initData() {
request({
url: `/business/plans/list`,
method: "get",
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
result.rows.forEach(it => {
it.strEventCategory = it.eventCategory == 0 ? '交通事件' : '感知事件';
it.strEventType = eventTypeMap[it.eventCategory || 0][it.eventType];
})
this.tableData = result.rows;
this.total = result.total;
});
},
onSizeChange(pageSize) {
// this.searchData.pageSize = pageSize;
// this.getData();
},
onRefresh() {
this.initData();
},
onAdd() {
this.isShowDialog = true
},
onCloseAddNew() {
this.isShowDialog = false
},
onUpdatePhrasesData() {
},
handleSearch() {
},
async handleDelete(data) {
await confirm({ message: "是否要删除该预案?" });
// return console.log('',data.id)
request({
url: `/business/plans/${data.id}`,
method: "DELETE",
}).then(result => {
if (result.code != 200) return Message.error("删除失败");
this.initData()
Message.success("删除成功")
}).catch(() => {
Message.error("删除失败")
})
}
}
}
</script>
<style lang='scss' scoped>
.emergencyProcessManagement {
padding: 21px;
height: 100%;
display: flex;
flex-direction: column;
z-index: 6;
width: 100%;
height: 100%;
.filter {
height: 60px;
display: flex;
justify-content: space-between;
align-items: center;
>div {
display: flex;
gap: 6px;
}
}
.body {
flex: 1;
position: relative;
overflow: hidden;
.content {
position: absolute;
width: 100%;
height: 100%;
overflow: auto;
}
}
.footer {
margin-top: 15px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
}
</style>

1
ruoyi-ui/src/views/JiHeExpressway/pages/developing.vue

@ -11,7 +11,6 @@ export default {
components: { components: {
}, },
mounted() { mounted() {
console.log(this.$route)
} }
} }
</script> </script>

4
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/assets/charts.js

@ -48,9 +48,7 @@ let options = {
}, },
yAxis: [ yAxis: [
{ {
min: 0, type: "category",
max: 100,
type: "value",
minInterval: 20, minInterval: 20,
maxInterval: 20, maxInterval: 20,
name: "", name: "",

36
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/statisticalAnalysis/data.js

@ -43,75 +43,75 @@ export const searchFormList = [
key: "type", key: "type",
required: true, required: true,
type: "select", type: "select",
default: "1", default: "1-1",
options: { options: {
options: [ options: [
{ {
value: "1", value: "1-1",
label: "高清网络枪型固定摄像机", label: "高清网络枪型固定摄像机",
}, },
{ {
value: "2", value: "1-2",
label: "高清网络球形摄像机", label: "高清网络球形摄像机",
}, },
{ {
value: "3", value: "1-3",
label: "桥下高清网络球形摄像机", label: "桥下高清网络球形摄像机",
}, },
{ {
value: "4", value: "1-4",
label: "360°全景摄像机", label: "360°全景摄像机",
}, },
{ {
value: "5", value: "1-5",
label: "180°全景摄像机", label: "180°全景摄像机",
}, },
{ {
value: "6", value: "2-1",
label: "门架式可变信息标志", label: "门架式可变信息标志",
}, },
{ {
value: "7", value: "2-3",
label: "雨棚可变信息标志", label: "雨棚可变信息标志",
}, },
{ {
value: "8", value: "2-4",
label: "站前悬臂式可变信息标志", label: "站前悬臂式可变信息标志",
}, },
{ {
value: "9", value: "3",
label: "气象检测器", label: "气象检测器",
}, },
{ {
value: "10", value: "5",
label: "路段语音广播系统", label: "路段语音广播系统",
}, },
{ {
value: "11", value: "6",
label: "护栏碰撞预警系统", label: "护栏碰撞预警系统",
}, },
{ {
value: "12", value: "7",
label: "毫米波雷达", label: "毫米波雷达",
}, },
{ {
value: "13", value: "8",
label: "合流区预警系统", label: "合流区预警系统",
}, },
{ {
value: "14", value: "10",
label: "激光疲劳唤醒", label: "激光疲劳唤醒",
}, },
{ {
value: "15", value: "11",
label: "一类交通量调查站", label: "一类交通量调查站",
}, },
{ {
value: "16", value: "12",
label: "智能行车诱导系统", label: "智能行车诱导系统",
}, },
{ {
value: "17", value: "13",
label: "智能设备箱", label: "智能设备箱",
}, },
], ],

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

@ -80,23 +80,23 @@
</el-table-column> </el-table-column>
<el-table-column prop="type" label="型号" width=""> <el-table-column prop="type" label="型号" width="">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.type == 1">高清网络枪型固定摄像机</div> <div v-if="scope.row.type == '1-1'">高清网络枪型固定摄像机</div>
<div v-if="scope.row.type == 2">高清网络球形摄像机</div> <div v-if="scope.row.type == '1-2'">高清网络球形摄像机</div>
<div v-if="scope.row.type == 3">桥下高清网络球形摄像机</div> <div v-if="scope.row.type == '1-3'">桥下高清网络球形摄像机</div>
<div v-if="scope.row.type == 4">360°全景摄像机</div> <div v-if="scope.row.type == '1-4'">360°全景摄像机</div>
<div v-if="scope.row.type == 5">180°全景摄像机</div> <div v-if="scope.row.type == '1-5'">180°全景摄像机</div>
<div v-if="scope.row.type == 6">门架式可变信息标志</div> <div v-if="scope.row.type == '2-1'">门架式可变信息标志</div>
<div v-if="scope.row.type == 7">雨棚可变信息标志</div> <div v-if="scope.row.type == '2-3'">雨棚可变信息标志</div>
<div v-if="scope.row.type == 8">站前悬臂式可变信息标志</div> <div v-if="scope.row.type == '2-4'">站前悬臂式可变信息标志</div>
<div v-if="scope.row.type == 9">气象检测器</div> <div v-if="scope.row.type == '3'">气象检测器</div>
<div v-if="scope.row.type == 10">路段语音广播系统</div> <div v-if="scope.row.type == '5'">路段语音广播系统</div>
<div v-if="scope.row.type == 11">护栏碰撞预警系统</div> <div v-if="scope.row.type == '6'">护栏碰撞预警系统</div>
<div v-if="scope.row.type == 12">毫米波雷达</div> <div v-if="scope.row.type == '7'">毫米波雷达</div>
<div v-if="scope.row.type == 13">合流区预警系统</div> <div v-if="scope.row.type == '8'">合流区预警系统</div>
<div v-if="scope.row.type == 14">激光疲劳唤醒</div> <div v-if="scope.row.type == '10'">激光疲劳唤醒</div>
<div v-if="scope.row.type == 15">一类交通量调查站</div> <div v-if="scope.row.type == '11'">一类交通量调查站</div>
<div v-if="scope.row.type == 16">智能行车诱导系统</div> <div v-if="scope.row.type == '12'">智能行车诱导系统</div>
<div v-if="scope.row.type == 17">智能设备箱</div> <div v-if="scope.row.type == '13'">智能设备箱</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="network" label="网段" width=""> <el-table-column prop="network" label="网段" width="">
@ -141,7 +141,7 @@ import {
getSystemStatusType, getSystemStatusType,
getSystemStatusExport, getSystemStatusExport,
} from "../../../../../api/MonthlyEquipment"; } from "../../../../../api/MonthlyEquipment";
import { download } from "../../../../../utils/request.js"; // import { download } from "../../../../../utils/request.js";
import Pagination from "@screen/components/Pagination.vue"; import Pagination from "@screen/components/Pagination.vue";
import InputSearch from "@screen/components/InputSearch/index.vue"; import InputSearch from "@screen/components/InputSearch/index.vue";
import { searchFormList } from "./data"; import { searchFormList } from "./data";
@ -249,7 +249,7 @@ export default {
this.startTime = moment(data.time[0]).format("YYYY-MM-DD HH:mm:ss"); this.startTime = moment(data.time[0]).format("YYYY-MM-DD HH:mm:ss");
this.time = moment(data.time[1]).format("YYYY-MM-DD HH:mm:ss"); this.time = moment(data.time[1]).format("YYYY-MM-DD HH:mm:ss");
let typeText = let typeText =
this.searchFormList[1].options.options[this.typeQuery - 1].label; this.searchFormList[1].options.options[this.typeQuery - 1]?.label;
this.searchText = `${moment(this.startTime).format( this.searchText = `${moment(this.startTime).format(
"YYYY年MM月DD日" "YYYY年MM月DD日"
)}-${moment(this.time).format("YYYY年MM月DD日")},${typeText}`; )}-${moment(this.time).format("YYYY年MM月DD日")},${typeText}`;
@ -327,6 +327,7 @@ export default {
} }
} }
this.equipments = allList; this.equipments = allList;
console.log("Equipments", allList);
}); });
}, },
setStatus(id, status) { setStatus(id, status) {
@ -413,7 +414,6 @@ export default {
}, },
}, },
async mounted() { async mounted() {
console.log("__________________", searchFormList[0].default);
await this.initData(); await this.initData();
}, },
}; };

74
ruoyi-ui/src/views/JiHeExpressway/pages/service/PublishingChannelManagement/components/AddNEditDialog.vue

@ -1,24 +1,32 @@
<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 request from "@/utils/request"; import request from "@/utils/request";
import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js"; import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js";
@ -26,21 +34,21 @@ import { Message } from "element-ui";
import * as PresetFormItems from "@screen/common/PresetFormItems.js"; import * as PresetFormItems from "@screen/common/PresetFormItems.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,
@ -68,7 +76,7 @@ export default {
PresetFormItems.releaseChannel, PresetFormItems.releaseChannel,
{ {
label: "审核方式:", label: "审核方式:",
key: "level", key: "process",
type: "RadioGroup", type: "RadioGroup",
isAlone: true, isAlone: true,
options: { options: {
@ -89,21 +97,20 @@ export default {
label: "启用日期:", label: "启用日期:",
key: "startDate", key: "startDate",
type: "DatePicker", type: "DatePicker",
required: true required: 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: {
@ -112,24 +119,21 @@ export default {
if (!bool) return; if (!bool) return;
this.formData = { this.formData = {
...this.data ...this.data,
} };
this.getOptions(); this.getOptions();
}
}
}, },
methods: {
getOptions() {
}, },
handleSubmit() {
}
}, },
} methods: {
getOptions() {},
handleSubmit() {},
},
};
</script> </script>
<style lang='scss' scoped> <style lang="scss" scoped>
.AddNEditDialog { .AddNEditDialog {
width: 450px; width: 450px;
height: 200px; height: 200px;

3
ruoyi-ui/src/views/event/event/dispatchYuan.vue

@ -711,8 +711,6 @@ export default {
}, },
deviceStatusChangeLog(event) { deviceStatusChangeLog(event) {
// console.log(event, "websockt"); // console.log(event, "websockt");
console.log(event, "已执行");
console.log(this.$route.query.id, "this.$route.query.id");
for (let item of event) { for (let item of event) {
if (this.$route.query.id == item.eventId) { if (this.$route.query.id == item.eventId) {
this.zxList.unshift(item); this.zxList.unshift(item);
@ -721,7 +719,6 @@ export default {
}, },
}, },
async created() { async created() {
console.log(this.$route.query.id, "this.$route.query.id");
await this.getEqTypeStateIcon(); await this.getEqTypeStateIcon();
// await this.getTunnelData(); // await this.getTunnelData();

Loading…
Cancel
Save