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. 70
      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. 38
      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>
<div id="app">
<router-view />
<!-- <websocket /> -->
<websocket />
<!-- <websocket_phone /> -->
</div>
</template>

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

@ -2,7 +2,7 @@
<div class="TimeLine2">
<!-- { "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="content">
<div class="content" v-if="!item.onlyright">
<template v-if="item.source == 2">
<!-- <template v-if="direction === 'auto' ? !!((index + 1) & 1) : true"> -->
<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>
<Button @click.native="goStrategy" style="width: 100px;">
<Button @click.native="goDispatch" style="width: 100px;">
设备管控
</Button>
<Button @click.native="goDispatch" style="width: 100px;">

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

@ -16,12 +16,12 @@
<span class="close" @click="() => { this.activeIcon = null; }">
<i class="el-icon-close" />
</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" />
<component ref="ControlComponent" :is="componentMap[DeviceTopics[data.deviceType]]" :isMultiControl="true"
:visible="true" :selectItems="data.childType" @update:activeIcon="(val) => { this.activeIcon = val }"
@update:submitting="(val) => { submitting = val }"></component>
<div v-if="hiddenDevices.indexOf(componentMap[DeviceTopics[data.deviceType]]) == -1" class="footer">
<component ref="ControlComponent" :is="componentMap[DeviceTopics[data.deviceType]]" :isMultiControl="true"
:visible="true" :selectItems="data.childType" @update:activeIcon="(val) => { this.activeIcon = val }"
@update:submitting="(val) => { submitting = val }"></component>
<div v-if="hiddenDevices.indexOf(componentMap[DeviceTopics[data.deviceType]]) == -1" class="footer">
<Button @click.native="submitClick" :loading="submitting">
确认
</Button>
@ -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;" >
<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%">
<ElTableColumn label="管控时间" prop="operTime" width="300"/>
<ElTableColumn label="管控方式" prop="operType" width="200"/>
<ElTableColumn label="操作人" prop="operName" width="200"/>
<ElTableColumn label="管控时间" prop="operTime" width="200"/>
<ElTableColumn label="设备名称" prop="dcDeviceName" width="300"/>
<ElTableColumn label="管控方式" prop="operType" width="100"/>
<ElTableColumn label="操作人" prop="operName" width="100"/>
<ElTableColumn label="执行结果" prop="stakeMark" >
<template slot-scope="scope">
<el-popover
@ -71,7 +72,7 @@
<!-- 分页 -->
<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"
:total="tableTotal" class="Pagination">
</ElPagination>
@ -310,6 +311,7 @@ export default {
key: "childType",
type: "select",
isAlone: true,
width: '100%',
options: {
clearable: true,
options: [],
@ -362,11 +364,11 @@ export default {
type: "select",
options: {
options: [
{ key: "0", label: "手动控制" },
{ key: "1", label: "定时控制" },
{ key: "2", label: "批量控制" },
{ key: "3", label: "预案控制" }
],
{ key: "0", label: "手动控制" },
{ key: "1", label: "定时控制" },
{ key: "2", label: "批量控制" },
{ key: "3", label: "预案控制" }
],
},
},
{
@ -375,7 +377,7 @@ export default {
required: false,
type: "datePicker",
options: {
style: "width: auto",
style: "width: 96%",
type: "datetimerange",
format: "yyyy-MM-dd HH:mm:ss",
valueFormat: "yyyy-MM-dd HH:mm:ss",
@ -423,21 +425,10 @@ export default {
},
tabClick() {
if(this.tabAction === '2'){
request({
url: `/business/dcBatchFunctionsJobGroup/list`,
method: "get",
params: {},
})
.then((result) => {
if (result.code != 200) return;
this.tableTotal = result.total;
this.data = result.rows;
})
.finally(() => {
});
this.bindTimeing();
} 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.bindResult();
this.bindRecord();
}
},
handleClick(type) {
@ -466,11 +457,21 @@ export default {
Message.success(`操作成功!`);
})
},
bindResult(){
// dataRecord:{
// operType: "0",
// operTime:['2024-04-01 00:00:00','2024-04-25 23:59:59']
// },
bindTimeing(){
request({
url: `/business/dcBatchFunctionsJobGroup/list`,
method: "get",
params: {},
})
.then((result) => {
if (result.code != 200) return;
this.tableTotal = result.total;
this.data = result.rows;
})
.finally(() => {
});
},
bindRecord(){
request({
url: `/business/dcOperLog/list`,
method: "get",
@ -482,6 +483,7 @@ export default {
e.operTime = moment(e.operTime).format('YYYY-MM-DD HH:mm:ss')
e.operType = _.find(this.Enum_ControlType,{key:e.operType}).label
});
console.log(result.rows)
this.tableData = result.rows;
this.tableTotal = result.total;
})
@ -492,7 +494,7 @@ export default {
this.tableData = [];
this.searchData.pageSize = pageSize;
this.searchData.pageNum = 1;
this.bindResult();
this.bindRecord();
},
showResult(res){
this.digResultVisible = true

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

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

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

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

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

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

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

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

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

@ -1,17 +1,20 @@
<template>
<Card2 class="Auditlists" title="审核列表">
<InputSearch style="width: 100%" :formList="searchFormList" />
<InputSearch style="width: 100%" :formList="searchFormList" @handleSearch="handleSearch" />
<div class="body">
<ListItem
v-for="item in list.rows"
:key="item.id"
:data="item"
origin="left"
class="middle-ratio"
@click.native="onClick(item)"
/>
</div>
<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>
</Card2>
</template>
@ -25,6 +28,19 @@ import ListItem from "./ListItem.vue";
import { method } from "lodash";
import request from '@/utils/request'
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 {
name: "Auditlists",
components: {
@ -38,65 +54,54 @@ export default {
return {
searchFormList,
list:{total:0,rows:[]},
eventType:[
'交通事故',
'车辆故障',
'交通管制',
'交通拥堵',
'非法上路',
'路障清除',
'施工建设',
'',
'',
'',
'',
],
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;
})(),
})),
queryParams: {
pageNum: 1,
pageSize: 10,
},
p:{}
};
},
created() {
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:{
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(){
request({
url: '/business/manage/list',
method: 'get',
data: {}
params: this.p
}).then(res=>{
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.type = e.eventType
e.icon = ev.icon
e.title = ev.value
e.isverify = e.eventState
});
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>
<div class='info_publish'>
<AuditLists class="card" />
<AuditDetails class="card" />
<AuditLists @click="onListClick" class="card" />
<AuditDetails ref="refDetail" class="card" />
</div>
</template>
@ -14,6 +14,12 @@ export default {
components: {
AuditLists,
AuditDetails
},
methods:{
onListClick(id){
this.$refs.refDetail.bind(id)
}
}
}
</script>

4
ruoyi-ui/vue.config.js

@ -44,7 +44,7 @@ module.exports = {
// target: `http://10.0.81.201:8080`,
// target: `http://10.168.73.36:8080`, // 周乐
// 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.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.78.135:8087`, //王钦
// 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.65.156:8097`, //孟
// target: `http://10.168.56.165:8087`, //王家宝

Loading…
Cancel
Save