Browse Source

处置流程完善

wangqin
zhangzhang 10 months ago
parent
commit
14e9539c0d
  1. 2
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine1/index.vue
  2. 27
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue
  3. 53
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/index.vue
  4. 44
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue

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

@ -230,7 +230,7 @@ div.auto-size {
.top-label {
line-height: 12px;
height: 60px;
height: 35px;
font-size: 12px;
text-align: center;
}

27
ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue

@ -1,5 +1,5 @@
<template>
<div class='DescCard'>
<div class="DescCard">
<span class="time">{{ data.time }}</span>
<div class="info">
<img src="./images/avatar.svg" />
@ -13,23 +13,22 @@
<script>
export default {
name: 'DescCard',
name: "DescCard",
props: {
data: {
type: Object,
default: () => ({})
}
}
}
default: () => ({}),
},
},
};
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.DescCard {
font-size: 14px;
// font-family: PingFang SC, PingFang SC;
font-weight: 400;
color: #FFFFFF;
color: #ffffff;
line-height: 16px;
// -webkit-background-clip: text;
// -webkit-text-fill-color: transparent;
@ -37,14 +36,15 @@ export default {
display: flex;
flex-direction: column;
gap: 6px;
background: #0D5F79;
background: #0d5f79;
border-radius: 6px 6px 6px 6px;
opacity: 1;
border: 1px solid #00B3CC;
border: 1px solid #00b3cc;
padding: 9px 15px;
.time {}
.time {
}
.info {
display: flex;
@ -57,7 +57,8 @@ export default {
line-height: 19px;
}
.posts {}
.posts {
}
}
.desc {

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

@ -1,9 +1,10 @@
<template>
<div class='TimeLine2'>
<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" v-if="direction != 'right'">
<div class="content">
<template v-if="item.source == 2">
<!-- <template v-if="direction === 'auto' ? !!((index + 1) & 1) : true"> -->
<template v-if="getDirection(item, index, 'left')">
<span class="title" v-if="item.title">{{ item.title }}</span>
<DescCard :data="item" />
</template>
@ -12,13 +13,15 @@
<div class="circle"></div>
<div class="line"></div>
</div>
<div class="content" v-if="direction != 'left'">
<div class="content">
<template v-if="item.source == 1">
<!-- <template v-if="direction === 'auto' ? !((index + 1) & 1) : true"> -->
<template v-if="getDirection(item, index, 'right')">
<!-- <template v-if="getDirection(item, index, 'right')"> -->
<span class="title" v-if="item.title">{{ item.title }}</span>
<slot name="content" :data="item">
<DescCard :data="item" />
</slot>
<!-- </template> -->
</template>
</div>
</div>
@ -26,12 +29,12 @@
</template>
<script>
import DescCard from "./DescCard.vue"
import DescCard from "./DescCard.vue";
export default {
name: 'TimeLine2',
name: "TimeLine2",
components: {
DescCard
DescCard,
},
props: {
/**
@ -46,7 +49,7 @@ export default {
*/
data: {
type: Array,
default: () => []
default: () => [],
},
/**
* auto 左右 显示
@ -55,26 +58,26 @@ export default {
*/
direction: {
type: String,
default: "auto"
}
default: "auto",
},
},
methods: {
getDirection(item, index, position) {
if (this.direction != 'auto') return this.direction === position;
if (this.direction != "auto") return this.direction === position;
if (item.direction) return item.direction === position;
switch (position) {
case 'left':
return !!((index + 1) & 1)
case 'right':
return !((index + 1) & 1)
}
}
case "left":
return !!((index + 1) & 1);
case "right":
return !((index + 1) & 1);
}
}
},
},
};
</script>
<style lang='scss' scoped>
<style lang="scss" scoped>
.TimeLine2 {
color: #fff;
overflow-y: auto;
@ -90,7 +93,7 @@ export default {
margin-top: 24px;
}
>.content {
> .content {
flex: 1;
display: flex;
flex-direction: column;
@ -105,7 +108,7 @@ export default {
.title {
font-size: 16px;
font-weight: 500;
color: #FFC368;
color: #ffc368;
line-height: 19px;
}
}
@ -123,7 +126,7 @@ export default {
border-radius: 50%;
opacity: 1;
border: 1px solid var(--active-color, #39D5BF);
border: 1px solid var(--active-color, #39d5bf);
position: relative;
&::before {
@ -135,14 +138,14 @@ export default {
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background-color: var(--active-color, #39D5BF);
background-color: var(--active-color, #39d5bf);
}
}
.line {
width: 2px;
min-height: 100%;
background: #00B3CC;
background: #00b3cc;
border-radius: 0px 0px 0px 0px;
opacity: 1;
}

44
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue

@ -31,7 +31,7 @@
<TimeLine2 :data="timeLine2List" style="flex: 1" />
<div v-if="!timeLine2List.length" class="no-data">暂无数据</div>
<div class="bottom">
<ElSelect v-model="processId" placeholder="请选择关键点">
<ElSelect v-model="processId" clearable placeholder="请选择关键点">
<ElOption
v-for="item in options"
:key="item.nodeNode"
@ -67,6 +67,15 @@
>
<el-button class="input">点击上传</el-button>
</el-upload>
<ElSelect v-model="context" clearable placeholder="请选择常用语">
<ElOption
v-for="item in phrasesOptions"
:key="item"
:label="item"
:value="item"
>
</ElOption>
</ElSelect>
<ButtonGradient class="title-button special-button" @click="onSubmit">
发送
</ButtonGradient>
@ -98,14 +107,14 @@ import {
postNoSkipClear,
} from "@/api/commandDispatch";
import { provideMixin } from "./../../mixin";
// import { provideMixin } from "./../../mixin";
import { timeLine2List } from "./data";
import request from "@/utils/request";
export default {
name: "DisposalProcess",
inject: ["adpScale"],
mixins: [provideMixin],
// mixins: [provideMixin],
components: {
Card,
ButtonGradient,
@ -127,6 +136,7 @@ export default {
options: [],
processId: "",
context: "",
phrasesOptions: [],
headers: {
Authorization: "Bearer " + getToken(),
},
@ -136,6 +146,17 @@ export default {
imageUrl: "",
};
},
watch: {
processId(newVlaue, oldValue) {
this.options.forEach((element) => {
if (newVlaue == element.nodeNode) {
if (element.commonPhrases) {
this.phrasesOptions = element.commonPhrase.split(",");
}
}
});
},
},
methods: {
filterDistance(distance) {
return (1 / this.adpScale.scaleX) * distance;
@ -158,15 +179,15 @@ export default {
isActive: item.status == 1 ? true : false,
};
});
this.options = result.data.filter((item) => {
item.status == 0;
return item;
});
let index = result.data.findLastIndex((item) => item.status == 1);
this.options = result.data.slice(index + 1);
});
},
//
async detailChange(id) {
async disposalRecords(id) {
let processIdMap = {};
getProcessList(id).then((result) => {
console.log("处置过程记录", result);
@ -182,6 +203,7 @@ export default {
: null,
name: item.operator,
desc: item.context,
source: item.source,
// posts: ''
};
});
@ -217,7 +239,7 @@ export default {
postProcess(data).then((result) => {
if (result.code != 200) return [];
this.getProcess();
// this.detailChange(this.eventId);
this.disposalRecords(this.eventId);
});
} else {
this.$message.warning("调度指令不能为空");
@ -252,7 +274,7 @@ export default {
},
async mounted() {
this.getProcess();
// await this.detailChange(this.eventId);
await this.disposalRecords(this.eventId);
},
};
</script>
@ -279,7 +301,7 @@ export default {
.bottom {
display: grid;
grid-template-columns: 0.5fr auto 1fr 90px;
grid-template-columns: 0.5fr auto 1fr 130px 90px;
width: 100%;
gap: 6px;
}

Loading…
Cancel
Save