After Width: | Height: | Size: 1.7 KiB |
@ -0,0 +1,106 @@ |
|||||
|
<template> |
||||
|
<div class="Carousel"> |
||||
|
<img src="./images/arrow.svg" @click="prevSlide" class="arrow" /> |
||||
|
|
||||
|
<VueSlickCarousel v-bind="settings" ref="CarouselRef" class="vueSlickCarousel"> |
||||
|
<div v-for="(item, index) in carouselItems" :key="index" class="item"> |
||||
|
<img :src="require(`@screen/images/${item.imageURL}`)" style="height: 100%"> |
||||
|
</div> |
||||
|
</VueSlickCarousel> |
||||
|
|
||||
|
<img src="./images/arrow.svg" @click="nextSlide" class="arrow" /> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import VueSlickCarousel from 'vue-slick-carousel' |
||||
|
import 'vue-slick-carousel/dist/vue-slick-carousel.css' |
||||
|
// optional style for arrows & dots |
||||
|
import 'vue-slick-carousel/dist/vue-slick-carousel-theme.css' |
||||
|
|
||||
|
export default { |
||||
|
name: "Carousel", |
||||
|
components: { VueSlickCarousel }, |
||||
|
data() { |
||||
|
return { |
||||
|
carouselItems: [ |
||||
|
{ |
||||
|
"imageURL": "shareWith/message-active.svg" |
||||
|
}, |
||||
|
{ |
||||
|
"imageURL": "shareWith/message.svg" |
||||
|
}, |
||||
|
{ |
||||
|
"imageURL": "shareWith/website-active.svg" |
||||
|
}, |
||||
|
{ |
||||
|
"imageURL": "shareWith/website.svg" |
||||
|
}, |
||||
|
{ |
||||
|
"imageURL": "shareWith/weChat-active.svg" |
||||
|
}, |
||||
|
{ |
||||
|
"imageURL": "shareWith/weChat-active.svg" |
||||
|
} |
||||
|
], |
||||
|
settings: { |
||||
|
infinite: true, |
||||
|
arrows: false, |
||||
|
speed: 600, |
||||
|
slidesToShow: 3, |
||||
|
slidesToScroll: 1, |
||||
|
autoplay: true, |
||||
|
autoplaySpeed: 1800, |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
prevSlide() { |
||||
|
this.$refs.CarouselRef.prev() |
||||
|
}, |
||||
|
nextSlide() { |
||||
|
this.$refs.CarouselRef.next() |
||||
|
}, |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.Carousel { |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
display: flex; |
||||
|
gap: 9px; |
||||
|
|
||||
|
.vueSlickCarousel { |
||||
|
flex: 1; |
||||
|
overflow: hidden; |
||||
|
|
||||
|
::v-deep { |
||||
|
.slick-list { |
||||
|
height: 100%; |
||||
|
|
||||
|
div { |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.item { |
||||
|
img { |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.arrow { |
||||
|
cursor: pointer; |
||||
|
width: 15px; |
||||
|
|
||||
|
&:first-child { |
||||
|
transform: rotate(-180deg) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,131 @@ |
|||||
|
export const formList = [ |
||||
|
{ |
||||
|
label: "事件源:", |
||||
|
key: "stringEventSource", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "桩号:", |
||||
|
key: "stakeMark", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "行驶方向:", |
||||
|
key: "direction", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "事件类型:", |
||||
|
key: "stringEventType", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "事件原因:", |
||||
|
key: "eventCause", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "事件状态:", |
||||
|
key: "stringEventState", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "操作员:", |
||||
|
key: "nickName", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "发生时间:", |
||||
|
key: "startTime", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "完结时间:", |
||||
|
key: "endTime", |
||||
|
type: "input", |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "事件描述:", |
||||
|
key: "direction", |
||||
|
type: "input", |
||||
|
gridColumn: 3, |
||||
|
options: { |
||||
|
disabled: true, |
||||
|
placeholder: '' |
||||
|
} |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
export const timeLine1List = [ |
||||
|
{ |
||||
|
time: "16.36", |
||||
|
label: "接警记录", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "16.36", |
||||
|
label: "指令下达", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "16.36", |
||||
|
label: "清障到达", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "", |
||||
|
label: "安全防护", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "", |
||||
|
label: "开始清障", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "", |
||||
|
label: "清障结束", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
{ |
||||
|
time: "", |
||||
|
label: "恢复畅通", |
||||
|
isActive: false, |
||||
|
}, |
||||
|
]; |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
@ -0,0 +1,133 @@ |
|||||
|
<template> |
||||
|
<Dialog v-model="modelVisible" title="调度记录"> |
||||
|
<div class="EventDetail"> |
||||
|
<BlackBar class="left"> |
||||
|
<!-- <img src="./images/test.png" style="width: 100%;" /> --> |
||||
|
<div class="example"> |
||||
|
<div class="title"> |
||||
|
<h3>调度记录</h3> |
||||
|
<span> |
||||
|
{{ startTime }} 至 {{ endTime }} |
||||
|
</span> |
||||
|
</div> |
||||
|
<div class="body"> |
||||
|
<p v-for="(item, index) in data" :key="index">{{ `${beautifyOperationTime(item.operationTime)}, |
||||
|
${item.context},${item.operator}` }} |
||||
|
</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- <div style="width: 900px;height: 900px; background-color: #0F191E;"></div> --> |
||||
|
</BlackBar> |
||||
|
<div class="right"> |
||||
|
<img src="./images/image.svg"> |
||||
|
<img src="./images/printer.svg"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</Dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Dialog from "@screen/components/Dialog/index"; |
||||
|
import BlackBar from "@screen/components/Scrollbar/BlackBar.vue"; |
||||
|
import request from "@/utils/request"; |
||||
|
import moment from 'moment/moment'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'EventDetail', |
||||
|
components: { |
||||
|
Dialog, |
||||
|
BlackBar |
||||
|
}, |
||||
|
model: { |
||||
|
prop: 'visible', |
||||
|
event: 'update:value' |
||||
|
}, |
||||
|
props: { |
||||
|
visible: Boolean, |
||||
|
eventId: String |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
data: [], |
||||
|
startTime: '', |
||||
|
endTime: '' |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
modelVisible: { |
||||
|
get() { |
||||
|
if (this.visible) this.initData(); |
||||
|
return this.visible; |
||||
|
}, |
||||
|
set(val) { |
||||
|
this.$emit('update:value', val) |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
initData() { |
||||
|
request({ |
||||
|
url: `/system/process/eventProcessById/${this.eventId}`, |
||||
|
method: "get", |
||||
|
params: this.searchData, |
||||
|
}).then((result) => { |
||||
|
if (result.code != 200) return Message.error(result?.msg); |
||||
|
this.data = result.rows; |
||||
|
let length = result.rows.length; |
||||
|
if (length > 0 && result.rows[0].operationTime) { |
||||
|
this.startTime = moment(result.rows[0].operationTime).format("YYYY年MM月DD日 HH时mm分ss秒") || ''; |
||||
|
} |
||||
|
if (length > 1 && result.rows[length - 1].operationTime) { |
||||
|
this.endTime = moment(result.rows[length - 1].operationTime).format("YYYY年MM月DD日 HH时mm分ss秒") || ''; |
||||
|
} |
||||
|
// this.total = result.total; |
||||
|
}); |
||||
|
}, |
||||
|
beautifyOperationTime(time) { |
||||
|
return moment(time).format('YYYY-MM-DD HH:mm:ss') |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.EventDetail { |
||||
|
display: flex; |
||||
|
gap: 9px; |
||||
|
|
||||
|
.left { |
||||
|
flex: 1; |
||||
|
width: 600px; |
||||
|
height: 720px; |
||||
|
|
||||
|
.example { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 9px; |
||||
|
|
||||
|
>div { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
>.body { |
||||
|
gap: 6px; |
||||
|
font-size: 13px; |
||||
|
} |
||||
|
|
||||
|
>.title { |
||||
|
align-items: center; |
||||
|
border-bottom: 1px solid white; |
||||
|
padding-bottom: 6px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.right { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
gap: 9px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -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, |
||||
|
} |
||||
|
) |
||||
|
]; |