Browse Source

信息发布

wangqin
王钦 7 months ago
parent
commit
e785163235
  1. 2
      ruoyi-ui/src/App.vue
  2. 2
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/index.vue
  3. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/TrafficIncidents/index.vue
  4. 52
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue
  5. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/DetailCard.vue
  6. 34
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/index.vue
  7. 18
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/ListItem.vue
  8. 48
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/data.js
  9. 95
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/index.vue
  10. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/index.vue
  11. 4
      ruoyi-ui/vue.config.js

2
ruoyi-ui/src/App.vue

@ -9,7 +9,7 @@
<template> <template>
<div id="app"> <div id="app">
<router-view /> <router-view />
<!-- <websocket /> --> <websocket />
<!-- <websocket_phone /> --> <!-- <websocket_phone /> -->
</div> </div>
</template> </template>

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

@ -2,7 +2,7 @@
<div class="TimeLine2"> <div class="TimeLine2">
<!-- { "time": "2024/4/16 11:30:07", "name": "1", "desc": "111", "source": 1 } --> <!-- { "time": "2024/4/16 11:30:07", "name": "1", "desc": "111", "source": 1 } -->
<div class="node" v-for="(item, index) in data" :key="index"> <div class="node" v-for="(item, index) in data" :key="index">
<div class="content"> <div class="content" v-if="!item.onlyright">
<template v-if="item.source == 2"> <template v-if="item.source == 2">
<!-- <template v-if="direction === 'auto' ? !!((index + 1) & 1) : true"> --> <!-- <template v-if="direction === 'auto' ? !!((index + 1) & 1) : true"> -->
<span class="title" v-if="item.title">{{ item.title }}</span> <span class="title" v-if="item.title">{{ item.title }}</span>

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

@ -11,7 +11,7 @@
<Button @click.native="handleEventRelieve" style="width: 100px;"> <Button @click.native="handleEventRelieve" style="width: 100px;">
事件解除 事件解除
</Button> </Button>
<Button @click.native="goStrategy" style="width: 100px;"> <Button @click.native="goDispatch" style="width: 100px;">
设备管控 设备管控
</Button> </Button>
<Button @click.native="goDispatch" style="width: 100px;"> <Button @click.native="goDispatch" style="width: 100px;">

52
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue

@ -16,7 +16,7 @@
<span class="close" @click="() => { this.activeIcon = null; }"> <span class="close" @click="() => { this.activeIcon = null; }">
<i class="el-icon-close" /> <i class="el-icon-close" />
</span> </span>
<div v-if="tabAction === '1'" style="width:70vw;"> <div v-if="tabAction === '1'" style="width:70vw; min-height: 500px;">
<Form v-model="data" labelWidth="90px" column="2" class="form" ref="FormConfigRef" :formList="formList" /> <Form v-model="data" labelWidth="90px" column="2" class="form" ref="FormConfigRef" :formList="formList" />
<component ref="ControlComponent" :is="componentMap[DeviceTopics[data.deviceType]]" :isMultiControl="true" <component ref="ControlComponent" :is="componentMap[DeviceTopics[data.deviceType]]" :isMultiControl="true"
:visible="true" :selectItems="data.childType" @update:activeIcon="(val) => { this.activeIcon = val }" :visible="true" :selectItems="data.childType" @update:activeIcon="(val) => { this.activeIcon = val }"
@ -53,9 +53,10 @@
<div v-if="tabAction === '3'" style="width:70vw;height: 500px;display: flex;flex-direction: column; justify-content: center;align-items: flex-start;" > <div v-if="tabAction === '3'" style="width:70vw;height: 500px;display: flex;flex-direction: column; justify-content: center;align-items: flex-start;" >
<Form v-model="dataRecord" style="width:100%;" labelWidth="90px" column="2" class="form" ref="FormRecordRef" :formList="formRecord" /> <Form v-model="dataRecord" style="width:100%;" labelWidth="90px" column="2" class="form" ref="FormRecordRef" :formList="formRecord" />
<Table :data="tableData" height="500px" style="margin: 20px;width:95%"> <Table :data="tableData" height="500px" style="margin: 20px;width:95%">
<ElTableColumn label="管控时间" prop="operTime" width="300"/> <ElTableColumn label="管控时间" prop="operTime" width="200"/>
<ElTableColumn label="管控方式" prop="operType" width="200"/> <ElTableColumn label="设备名称" prop="dcDeviceName" width="300"/>
<ElTableColumn label="操作人" prop="operName" width="200"/> <ElTableColumn label="管控方式" prop="operType" width="100"/>
<ElTableColumn label="操作人" prop="operName" width="100"/>
<ElTableColumn label="执行结果" prop="stakeMark" > <ElTableColumn label="执行结果" prop="stakeMark" >
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover <el-popover
@ -71,7 +72,7 @@
<!-- 分页 --> <!-- 分页 -->
<div class="footer" style="margin-top:-20px;margin-bottom: 30px"> <div class="footer" style="margin-top:-20px;margin-bottom: 30px">
<ElPagination @current-change="bindResult" @size-change="onSizeChange" width="'100%'" :page-sizes="[10, 20, 30, 40, 50]" <ElPagination @current-change="bindRecord" @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" :page-size="searchData.pageSize" :current-page.sync="searchData.pageNum" layout="total, sizes, prev, pager, next"
:total="tableTotal" class="Pagination"> :total="tableTotal" class="Pagination">
</ElPagination> </ElPagination>
@ -310,6 +311,7 @@ export default {
key: "childType", key: "childType",
type: "select", type: "select",
isAlone: true, isAlone: true,
width: '100%',
options: { options: {
clearable: true, clearable: true,
options: [], options: [],
@ -375,7 +377,7 @@ export default {
required: false, required: false,
type: "datePicker", type: "datePicker",
options: { options: {
style: "width: auto", style: "width: 96%",
type: "datetimerange", type: "datetimerange",
format: "yyyy-MM-dd HH:mm:ss", format: "yyyy-MM-dd HH:mm:ss",
valueFormat: "yyyy-MM-dd HH:mm:ss", valueFormat: "yyyy-MM-dd HH:mm:ss",
@ -423,21 +425,10 @@ export default {
}, },
tabClick() { tabClick() {
if(this.tabAction === '2'){ if(this.tabAction === '2'){
request({ this.bindTimeing();
url: `/business/dcBatchFunctionsJobGroup/list`,
method: "get",
params: {},
})
.then((result) => {
if (result.code != 200) return;
this.tableTotal = result.total;
this.data = result.rows;
})
.finally(() => {
});
} else if(this.tabAction === '3'){ } else if(this.tabAction === '3'){
this.dataRecord.operTime = [moment().startOf('month').format('YYYY-MM-DD 00:00:00'),moment().endOf('month').format('YYYY-MM-DD 23:59:59'),] this.dataRecord.operTime = [moment().startOf('month').format('YYYY-MM-DD 00:00:00'),moment().endOf('month').format('YYYY-MM-DD 23:59:59'),]
this.bindResult(); this.bindRecord();
} }
}, },
handleClick(type) { handleClick(type) {
@ -466,11 +457,21 @@ export default {
Message.success(`操作成功!`); Message.success(`操作成功!`);
}) })
}, },
bindResult(){ bindTimeing(){
// dataRecord:{ request({
// operType: "0", url: `/business/dcBatchFunctionsJobGroup/list`,
// operTime:['2024-04-01 00:00:00','2024-04-25 23:59:59'] method: "get",
// }, params: {},
})
.then((result) => {
if (result.code != 200) return;
this.tableTotal = result.total;
this.data = result.rows;
})
.finally(() => {
});
},
bindRecord(){
request({ request({
url: `/business/dcOperLog/list`, url: `/business/dcOperLog/list`,
method: "get", method: "get",
@ -482,6 +483,7 @@ export default {
e.operTime = moment(e.operTime).format('YYYY-MM-DD HH:mm:ss') e.operTime = moment(e.operTime).format('YYYY-MM-DD HH:mm:ss')
e.operType = _.find(this.Enum_ControlType,{key:e.operType}).label e.operType = _.find(this.Enum_ControlType,{key:e.operType}).label
}); });
console.log(result.rows)
this.tableData = result.rows; this.tableData = result.rows;
this.tableTotal = result.total; this.tableTotal = result.total;
}) })
@ -492,7 +494,7 @@ export default {
this.tableData = []; this.tableData = [];
this.searchData.pageSize = pageSize; this.searchData.pageSize = pageSize;
this.searchData.pageNum = 1; this.searchData.pageNum = 1;
this.bindResult(); this.bindRecord();
}, },
showResult(res){ showResult(res){
this.digResultVisible = true this.digResultVisible = true

10
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/DetailCard.vue

@ -16,17 +16,17 @@
<div class="content"> <div class="content">
{{ data.desc }} {{ data.desc }}
</div> </div>
<div class="people"> <!-- <div class="people">
<img src="@screen/images/people.svg" alt=""> <img src="@screen/images/people.svg" alt="">
<span>发布对象: 甘易玫</span> <span>发布对象: 甘易玫</span>
</div> </div> -->
<div class="people"> <div class="people">
<img src="@screen/images/people.svg" alt=""> <img src="@screen/images/people.svg" alt="">
<span>当前管制: 甘易玫</span> <span>当前管制: {{data.posts}}</span>
</div> </div>
<div class="suffix remark"> <!-- <div class="suffix remark">
备注: 备注:
</div> </div> -->
<div class="suffix share-with"> <div class="suffix share-with">
分享至 分享至
<img v-for="item in shareWithData" :key="item" :src="require(`@screen/images/shareWith/${item}.svg`)"> <img v-for="item in shareWithData" :key="item" :src="require(`@screen/images/shareWith/${item}.svg`)">

34
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/index.vue

@ -1,5 +1,5 @@
<template> <template>
<Card2 class='AuditDetails' title="审核详情"> <Card2 class='AuditDetails' title="详情">
<TimeLine2 :data="timeLine2List" style="flex: 1;" direction="right"> <TimeLine2 :data="timeLine2List" style="flex: 1;" direction="right">
<template #content="{ data }"> <template #content="{ data }">
<DetailCard :data="data" /> <DetailCard :data="data" />
@ -12,6 +12,7 @@
import Card2 from "@screen/components/Card2/Card.vue"; import Card2 from "@screen/components/Card2/Card.vue";
import TimeLine2 from "@screen/components/TimeLine/TimeLine2/index"; import TimeLine2 from "@screen/components/TimeLine/TimeLine2/index";
import DetailCard from "./DetailCard.vue" import DetailCard from "./DetailCard.vue"
import request from '@/utils/request'
export default { export default {
name: 'AuditDetails', name: 'AuditDetails',
@ -22,14 +23,33 @@ export default {
}, },
data() { data() {
return { return {
timeLine2List: Array.from({ length: 6 }).map(() => ({ timeLine2List: [],
time: "2023-12-21 16:35:44", }
name: "甘易玫", },
methods:{
bind(id){
request({
url: '/business/manage/listEvent?eventId='+id,
method: 'get'
}).then(res=>{
console.log(id, res)
let list = []
res.data.forEach(e => {
list.push({
source: "1",
onlyright:true,
time: e.eventTime,
name: e.createBy,
descTitle: "事件详情", descTitle: "事件详情",
desc: "因改扩建施工,接交警通知,G3京台高速崮山(辅)、泰安西站双向入口临时关闭,万德站北京方向入口临时关闭,崮山(主)站北京方向出口临时关闭;济南崮山服务区(台北方向)入口临时关闭。泰安服务区(北京方向)入口临时关闭。泰山枢纽(G22青兰高速兰州方向转G3京台高速北京方向匝道、G22青兰高速青岛方向转G3京台高速北京方向匝道)临时关闭。", desc: e.contentDetails,
posts: '淄博发展公司管理员', posts: e.facilityName,
channel:e.publishChannels,
state: 0, state: 0,
})), })
});
this.timeLine2List = list;
})
} }
} }
} }

18
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/ListItem.vue

@ -1,7 +1,7 @@
<template> <template>
<div class='ListItem'> <div class='ListItem' v-on="$listeners">
<img class="prefix" :src="require(`@screen/images/ListItem/${eventTypeIcon[data.type]}.svg`)" /> <img class="prefix keep-ratio" :src="require(`@screen/images/ListItem/${data.icon}.svg`)" />
<div class="center"> <div class="center keep-ratio">
<div class="header"> <div class="header">
<span class="title">{{ data.title || '-' }}</span> <span class="title">{{ data.title || '-' }}</span>
<span class="state" :style="{ backgroundColor: state[data.isverify].color }">{{ state[data.isverify].text <span class="state" :style="{ backgroundColor: state[data.isverify].color }">{{ state[data.isverify].text
@ -9,7 +9,7 @@
</div> </div>
<div class="content">{{ data.content || '-' }}</div> <div class="content">{{ data.content || '-' }}</div>
</div> </div>
<img class="suffix" :src="require(`@screen/images/ListItem/${state[data.isverify].icon}.svg`)" /> <!-- <img class="suffix keep-ratio" :src="require(`@screen/images/ListItem/${state[data.isverify].icon}.svg`)" /> -->
</div> </div>
</template> </template>
@ -27,25 +27,21 @@ export default {
}, },
data() { data() {
return { return {
eventTypeIcon: {
0: 'AbnormalWeather',
1: 'TrafficControl',
},
state: { state: {
0: { 0: {
color: "#00B1A0", color: "#00B1A0",
text: "待审核", text: "待确认",
icon: 'ToBeReviewed' icon: 'ToBeReviewed'
}, },
1: { 1: {
color: "#057DD3", color: "#057DD3",
text: "已审核", text: "处理中",
icon: 'Reviewed' icon: 'Reviewed'
}, },
2: { 2: {
color: "#C55253", color: "#C55253",
text: "未通过", text: "已完成",
icon: 'Failed' icon: 'Failed'
}, },
} }

48
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditLists/data.js

@ -11,40 +11,40 @@ export const searchFormList = [
options: [ options: [
{ {
key: "0", key: "0",
label: "未解决", label: "待确认",
}, },
{ {
key: "1", key: "1",
label: "已解决", label: "处理中",
}, },
{ {
key: "2", key: "2",
label: "已关闭", label: "已完成",
},
],
},
},
{
label: "审核状态:",
key: "checkState",
type: "RadioGroup",
options: {
options: [
{
key: "0",
label: "待审核",
},
{
key: "1",
label: "已审核",
},
{
key: "2",
label: "未通过",
}, },
], ],
}, },
}, },
// {
// label: "审核状态:",
// key: "checkState",
// type: "RadioGroup",
// options: {
// options: [
// {
// key: "0",
// label: "待审核",
// },
// {
// key: "1",
// label: "已审核",
// },
// {
// key: "2",
// label: "未通过",
// },
// ],
// },
// },
{ {
label: "时间范围:", label: "时间范围:",
key: "daterange", key: "daterange",

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

@ -1,17 +1,20 @@
<template> <template>
<Card2 class="Auditlists" title="审核列表"> <Card2 class="Auditlists" title="审核列表">
<InputSearch style="width: 100%" :formList="searchFormList" /> <InputSearch style="width: 100%" :formList="searchFormList" @handleSearch="handleSearch" />
<div class="body"> <div class="body">
<ListItem <ListItem
v-for="item in list.rows" v-for="item in list.rows"
:key="item.id" :key="item.id"
:data="item" :data="item"
origin="left" origin="left"
class="middle-ratio" @click.native="onClick(item)"
/> />
</div> </div>
<div class="footer"> <div class="footer">
<Pagination layout="total,prev, pager, next, jumper" :total="list.total" /> <Pagination layout="total,prev, pager, next, jumper" :total="list.total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="bindList" />
</div> </div>
</Card2> </Card2>
</template> </template>
@ -25,6 +28,19 @@ import ListItem from "./ListItem.vue";
import { method } from "lodash"; import { method } from "lodash";
import request from '@/utils/request' import request from '@/utils/request'
import {DirectionTypes} from '@screen/utils/enum.js'; import {DirectionTypes} from '@screen/utils/enum.js';
const enum_event_type = [
{key:'1',value:'交通事故',icon:"TrafficControl"},
{key:'2',value:'车辆故障',icon:"TrafficControl"},
{key:'3',value:'交通管制',icon:"TrafficControl"},
{key:'4',value:'交通拥堵',icon:"TrafficControl"},
{key:'5',value:'非法上路',icon:"TrafficControl"},
{key:'6',value:'路障清除',icon:"TrafficControl"},
{key:'7',value:'施工建设',icon:"TrafficControl"},
{key:'8',value:'服务区异常',icon:"TrafficControl"},
{key:'9',value:'设施设备隐患',icon:"TrafficControl"},
{key:'10',value:'异常天气', icon:"AbnormalWeather"},
{key:'11',value:'其他事件',icon:"TrafficControl"}
]
export default { export default {
name: "Auditlists", name: "Auditlists",
components: { components: {
@ -38,65 +54,54 @@ export default {
return { return {
searchFormList, searchFormList,
list:{total:0,rows:[]}, list:{total:0,rows:[]},
eventType:[ queryParams: {
'交通事故', pageNum: 1,
'车辆故障', pageSize: 10,
'交通管制', },
'交通拥堵', p:{}
'非法上路',
'路障清除',
'施工建设',
'',
'',
'',
'',
],
list1: Array.from({ length: 3 }).map(() => ({
title: "异常天气",
content: "2023.12.23 13:00:00 济南方向K100+000 中雪",
type: 0,
isverify: (() => {
const min = 0;
const max = 2;
return Math.floor(Math.random() * (max - min + 1)) + min;
})(),
})),
list2: Array.from({ length: 10 }).map(() => ({
title: "交通事故",
content: "2023.12.23 13:00:00 济南方向K100+000 交通事故",
type: 1,
isverify: (() => {
const min = 0;
const max = 2;
return Math.floor(Math.random() * (max - min + 1)) + min;
})(),
})),
}; };
}, },
created() { created() {
this.bindList() this.bindList()
// axiosIns.get("/business/dcPublishInfo/list")
// .then((result) => {
// console.log("%c [ result ]-39-index.vue", "font-size:15px; background:#4bd543; color:#8fff87;", result);
// if (result.code !== 200) return this.list = [];
// this.list = result.rows;
// }).catch((err) => {
// });
}, },
methods:{ methods:{
onClick(e){
this.$emit("click",e.eventId);
},
handleSearch(e){
let p = {};
if(e.eventState){
p['eventState']= e.eventState
}
if(e.eventType){
p['eventState']= e.eventState
}
if(e.startStakeMark && e.startStakeMark.length === 2){
p['startStakeMarkValue']= `K${e.startStakeMark[0]}+${e.startStakeMark[1]}`
}
if(e.endStakeMark && e.endStakeMark.length === 2){
p['endStakeMarkValue']= `K${e.endStakeMark[0]}+${e.endStakeMark[1]}`
}
this.p = p;
this.list = [];
this.bindList()
},
bindList(){ bindList(){
request({ request({
url: '/business/manage/list', url: '/business/manage/list',
method: 'get', method: 'get',
data: {} params: this.p
}).then(res=>{ }).then(res=>{
res.rows.forEach(e => { res.rows.forEach(e => {
console.log(e) const ev = _.find(enum_event_type,{key:e.eventType})
e.content = `${e.eventTime} ${e.stakeMark} ${DirectionTypes[e.direction]} ${e.contentDetails}` e.content = `${e.eventTime} ${e.stakeMark} ${DirectionTypes[e.direction]} ${e.contentDetails}`
e.type = e.eventType e.type = e.eventType
e.icon = ev.icon
e.title = ev.value
e.isverify = e.eventState e.isverify = e.eventState
}); });
this.list = res this.list = res
this.$emit("click",res.rows[0].eventId);
}) })
} }
} }

10
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class='info_publish'> <div class='info_publish'>
<AuditLists class="card" /> <AuditLists @click="onListClick" class="card" />
<AuditDetails class="card" /> <AuditDetails ref="refDetail" class="card" />
</div> </div>
</template> </template>
@ -14,6 +14,12 @@ export default {
components: { components: {
AuditLists, AuditLists,
AuditDetails AuditDetails
},
methods:{
onListClick(id){
this.$refs.refDetail.bind(id)
}
} }
} }
</script> </script>

4
ruoyi-ui/vue.config.js

@ -44,7 +44,7 @@ module.exports = {
// target: `http://10.0.81.201:8080`, // target: `http://10.0.81.201:8080`,
// target: `http://10.168.73.36:8080`, // 周乐 // target: `http://10.168.73.36:8080`, // 周乐
// target: `http://10.168.77.209:8087`, // 刘朋 // target: `http://10.168.77.209:8087`, // 刘朋
target: `http://10.168.66.196:8087`, //刘文阁 // target: `http://10.168.66.196:8087`, //刘文阁
// target: `http://10.168.56.206:8087`, //孟 // target: `http://10.168.56.206:8087`, //孟
// target: `http://10.168.78.135:8087`, //孟 // target: `http://10.168.78.135:8087`, //孟
// target: `http://10.168.78.135:8087`, // target: `http://10.168.78.135:8087`,
@ -53,7 +53,7 @@ module.exports = {
// target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁 // target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
// target: `http://10.168.78.135:8087`, //王钦 // target: `http://10.168.78.135:8087`, //王钦
// target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2 // target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
// target: `http://10.168.68.42:8087`, //王思祥 target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.72.174:8087`, //赵祥龙 // target: `http://10.168.72.174:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟 // target: `http://10.168.65.156:8097`, //孟
// target: `http://10.168.56.165:8087`, //王家宝 // target: `http://10.168.56.165:8087`, //王家宝

Loading…
Cancel
Save