2020-06-12 11:31:30 +08:00
|
|
|
<template>
|
|
|
|
<el-scrollbar ref="elActionScrollbar" wrap-class="scrollbar-wrapper" class="scriptBottom" :style="{width:370+'px',height:size.height+'px'}">
|
|
|
|
<el-timeline :reverse="reverse" class="el_timeline">
|
|
|
|
<el-timeline-item v-for="(actionInfo,index) in actionInfoList" :key="index">
|
|
|
|
<el-card>
|
|
|
|
<div class="actionTable">
|
|
|
|
<span class="detail" v-html="actionInfo.detail" />
|
|
|
|
<span class="otherInfo" v-html="actionInfo.otherInfo" />
|
2020-06-12 17:44:18 +08:00
|
|
|
<span v-if="actionInfo.isStartCoversition">
|
2020-06-12 11:31:30 +08:00
|
|
|
<span class="roleClass">{{ actionInfo.memberName }}</span>
|
2020-06-12 17:44:18 +08:00
|
|
|
<span>邀请</span>
|
2020-06-12 11:31:30 +08:00
|
|
|
<span class="roleClass">{{ actionInfo.targetName }}</span>
|
2020-06-22 18:37:09 +08:00
|
|
|
<span>开始会话</span>
|
2020-06-12 17:44:18 +08:00
|
|
|
</span>
|
2020-06-19 19:08:33 +08:00
|
|
|
<span v-else-if="actionInfo.isDrive">
|
|
|
|
<span class="roleClass">{{ actionInfo.memberName }}</span>
|
|
|
|
<span>把车开到</span>
|
|
|
|
<span class="commandStyle">区段{{ actionInfo.targetName }}</span>
|
|
|
|
</span>
|
2020-07-08 18:56:32 +08:00
|
|
|
<span v-else-if="actionInfo.isClose">
|
|
|
|
<span class="roleClass">{{ actionInfo.memberName }}</span>
|
|
|
|
<span>结束了会话</span>
|
|
|
|
</span>
|
2020-06-12 18:29:14 +08:00
|
|
|
<span v-else-if="actionInfo.isCoversition">
|
2020-06-12 17:44:18 +08:00
|
|
|
<span class="roleClass">{{ actionInfo.memberName }}</span>
|
|
|
|
<!-- <span>{{ $t('scriptRecord.speakTo') }}</span> -->
|
|
|
|
<!-- <span class="roleClass">{{ actionInfo.targetName }}</span> -->
|
2020-06-12 11:31:30 +08:00
|
|
|
<span>: </span>
|
2020-06-23 14:17:35 +08:00
|
|
|
<span v-if="!actionInfo.isModify">{{ actionInfo.reply }}</span>
|
|
|
|
<textarea v-else v-model="actionInfo.modifyText" type="text" class="modifyText" />
|
2020-06-12 11:31:30 +08:00
|
|
|
</span>
|
|
|
|
<span v-else>
|
|
|
|
<span class="roleClass">{{ actionInfo.memberName }}</span>
|
|
|
|
<span>{{ $t('scriptRecord.executeCommandTips') }}</span>
|
|
|
|
<span class="commandStyle">{{ actionInfo.command }}</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div class="btnGroup">
|
2020-06-23 14:17:35 +08:00
|
|
|
<el-button v-if="actionInfo.visible && !actionInfo.isModify" type="primary" size="mini" style="margin-left:10px;" @click="modifyAction(actionInfo)">{{ $t('scriptRecord.modifyConversitionButton') }}</el-button>
|
|
|
|
<el-button v-if="actionInfo.visible && actionInfo.isModify" :loading="modifyTextLoading" type="danger" size="mini" style="margin-left:10px;" @click="confirmModify(actionInfo)">确定</el-button>
|
|
|
|
<el-button v-if="actionInfo.visible && actionInfo.isModify" type="" size="mini" style="margin-left:10px;" @click="cancleModify(actionInfo)">取消</el-button>
|
2020-06-12 11:31:30 +08:00
|
|
|
<!-- <el-button type="danger" size="mini" @click="deleteAction(actionInfo.id)">删除</el-button> -->
|
|
|
|
</div>
|
|
|
|
</el-card>
|
|
|
|
</el-timeline-item>
|
|
|
|
</el-timeline>
|
|
|
|
</el-scrollbar>
|
|
|
|
</template>
|
|
|
|
<script>
|
2020-07-08 13:05:09 +08:00
|
|
|
import {getScriptAllAction, modifyScriptActionNew } from '@/api/simulation';
|
2020-06-12 11:31:30 +08:00
|
|
|
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
2020-06-23 10:27:18 +08:00
|
|
|
// import CommandHandler from '@/scripts/cmdPlugin/CommandHandler';
|
2020-06-12 11:31:30 +08:00
|
|
|
export default {
|
|
|
|
name: 'GetActionNew',
|
|
|
|
props: {
|
|
|
|
group: {
|
|
|
|
type: String,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
size: {
|
|
|
|
type: Object,
|
|
|
|
required: true
|
2020-07-08 13:05:09 +08:00
|
|
|
},
|
|
|
|
memberList:{
|
|
|
|
type:Array,
|
|
|
|
required:true
|
2020-06-12 11:31:30 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
actionInfoList: [],
|
|
|
|
deviceCommandList: [],
|
|
|
|
reverse: false,
|
|
|
|
loading: true,
|
2020-06-23 14:17:35 +08:00
|
|
|
// isModify:false,
|
|
|
|
// modifyText:'',
|
2020-06-23 10:27:18 +08:00
|
|
|
modifyTextLoading:false,
|
2020-06-12 11:31:30 +08:00
|
|
|
// behaviorName:"",
|
|
|
|
memberName: ''
|
|
|
|
};
|
|
|
|
},
|
|
|
|
computed:{
|
|
|
|
// drawWay() {
|
|
|
|
// const drawWay = this.$route.query.drawWay;
|
|
|
|
// return drawWay && JSON.parse(drawWay);
|
|
|
|
// }
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
actionInfoList: function(val) {
|
|
|
|
this.$nextTick(function() {
|
|
|
|
var div = this.$refs['elActionScrollbar'].$refs['wrap'];
|
|
|
|
div.scrollTop = this.$refs['elActionScrollbar'].wrap.scrollHeight;
|
|
|
|
});
|
2020-06-12 17:44:18 +08:00
|
|
|
},
|
|
|
|
'$store.state.socket.scriptAction':function(val) {
|
2020-07-08 13:05:09 +08:00
|
|
|
this.covertData(this.memberList, val);
|
|
|
|
},
|
|
|
|
'memberList':function(val) {
|
|
|
|
this.loadInitData();
|
2020-06-12 11:31:30 +08:00
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
loadInitData() {
|
|
|
|
this.loadOtherData(this.$route.query);
|
|
|
|
},
|
2020-07-08 13:05:09 +08:00
|
|
|
covertData(memberList, element) {
|
|
|
|
const member = memberList.find(elem=>{ return elem.id == element.memberId; });
|
2020-06-12 18:29:14 +08:00
|
|
|
const memberName = member.name;
|
|
|
|
switch (element.type) {
|
|
|
|
case 'Start_Conversation': {
|
|
|
|
// isStartCoversition
|
|
|
|
const targetNameList = [];
|
|
|
|
element.conversationMemberIds.forEach(id=>{
|
2020-06-17 18:36:22 +08:00
|
|
|
if (member.id != id) {
|
2020-07-08 13:05:09 +08:00
|
|
|
const userName = memberList.find(elem=>{ return elem.id == id; });
|
2020-06-17 18:36:22 +08:00
|
|
|
targetNameList.push(userName.name);
|
|
|
|
}
|
2020-06-12 18:29:14 +08:00
|
|
|
});
|
|
|
|
this.actionInfoList.push({id: element.id, isStartCoversition: true, memberName: memberName, targetName:targetNameList.toString() });
|
|
|
|
break;
|
|
|
|
}
|
2020-06-19 19:08:33 +08:00
|
|
|
case 'Drive': {
|
|
|
|
this.actionInfoList.push({id: element.id, isDrive: true, memberName: memberName, targetName:this.covertSection(element.targetSectionCode)});
|
|
|
|
break;
|
|
|
|
}
|
2020-06-12 18:29:14 +08:00
|
|
|
case 'Conversation':
|
|
|
|
{
|
2020-06-23 14:17:35 +08:00
|
|
|
this.actionInfoList.push({id: element.id, isCoversition: true, memberName: memberName, reply: element.content, row: element, visible: true, isModify:false, modifyText:''});
|
2020-06-12 18:29:14 +08:00
|
|
|
break;
|
|
|
|
}
|
2020-07-08 18:56:32 +08:00
|
|
|
case 'Over_Conversation': {
|
|
|
|
this.actionInfoList.push({id: element.id, isClose: true, memberName: memberName});
|
|
|
|
break;
|
|
|
|
}
|
2020-06-12 18:29:14 +08:00
|
|
|
case 'Command':
|
|
|
|
{
|
2020-06-19 10:06:58 +08:00
|
|
|
// const command = CommandHandler.getScriptDefinition(element.operationType);
|
|
|
|
const commandName = element.operationType;
|
|
|
|
let operateType = commandName.split('_')[0];
|
2020-06-12 18:29:14 +08:00
|
|
|
if (operateType == 'CM') {
|
|
|
|
operateType = 'ControlConvertMenu';
|
|
|
|
}
|
2020-07-17 17:18:48 +08:00
|
|
|
const operateName = Object.values(CMD[operateType]).find(res=>{ return res.value == commandName; });
|
2020-06-18 18:49:19 +08:00
|
|
|
const deviceTypeList = {Section:'区段', Switch:'道岔', Signal:'信号机', Stand:'站台', Station:'车站', TrainWindow:'车次窗', ControlConvertMenu:'控制模式', Driver:'司机'};
|
2020-06-12 18:29:14 +08:00
|
|
|
const operateTypeName = deviceTypeList[operateType];
|
|
|
|
this.actionInfoList.push({id: element.id, isCoversition: false, memberName: memberName, command: operateTypeName + '(' + operateName.label + ')', row: element, visible: false});
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2020-06-19 19:08:33 +08:00
|
|
|
covertSection(sectionCode) {
|
|
|
|
const section = this.$store.getters['map/getDeviceByCode'](sectionCode);
|
|
|
|
if (section && section.name) {
|
|
|
|
return section.name;
|
|
|
|
} else {
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
},
|
2020-06-12 11:31:30 +08:00
|
|
|
loadOtherData(obj) {
|
|
|
|
const group = obj.group;
|
2020-07-08 13:05:09 +08:00
|
|
|
getScriptAllAction(group).then(resp=>{
|
|
|
|
this.actionInfoList = [];
|
|
|
|
const actionList = resp.data;
|
|
|
|
actionList.forEach(element => {
|
|
|
|
this.covertData(this.memberList, element);
|
2020-06-12 11:31:30 +08:00
|
|
|
});
|
|
|
|
}).catch(error => {
|
|
|
|
this.$message(error.message);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
reloadTable() {
|
|
|
|
this.loadInitData();
|
2020-06-23 10:27:18 +08:00
|
|
|
},
|
2020-06-23 14:17:35 +08:00
|
|
|
modifyAction(actionInfo) {
|
|
|
|
actionInfo.modifyText = actionInfo.row.content;
|
|
|
|
actionInfo.isModify = true;
|
2020-06-23 10:27:18 +08:00
|
|
|
},
|
2020-06-23 14:17:35 +08:00
|
|
|
cancleModify(actionInfo) {
|
|
|
|
actionInfo.modifyText = '';
|
|
|
|
actionInfo.isModify = false;
|
2020-06-23 10:57:35 +08:00
|
|
|
this.modifyTextLoading = false;
|
2020-06-23 10:27:18 +08:00
|
|
|
},
|
2020-06-23 14:17:35 +08:00
|
|
|
confirmModify(actionInfo) {
|
|
|
|
const row = actionInfo.row;
|
|
|
|
if (actionInfo.modifyText != row.content) {
|
2020-06-23 10:27:18 +08:00
|
|
|
const data = {id:row.id};
|
2020-06-23 14:17:35 +08:00
|
|
|
data.content = actionInfo.modifyText;
|
2020-06-23 10:27:18 +08:00
|
|
|
this.modifyTextLoading = true;
|
|
|
|
modifyScriptActionNew(this.group, data).then(response=>{
|
2020-06-23 14:17:35 +08:00
|
|
|
actionInfo.modifyText = '';
|
|
|
|
actionInfo.isModify = false;
|
2020-06-23 10:27:18 +08:00
|
|
|
this.modifyTextLoading = false;
|
2020-06-23 10:57:35 +08:00
|
|
|
this.reloadTable();
|
|
|
|
this.$store.dispatch('scriptRecord/updateCoversitionInfo');
|
2020-06-23 15:15:46 +08:00
|
|
|
}).catch(error=>{
|
|
|
|
this.modifyTextLoading = false;
|
|
|
|
this.$messageBox('修改会话失败:' + error.message);
|
2020-06-23 10:27:18 +08:00
|
|
|
});
|
|
|
|
} else {
|
2020-06-23 14:17:35 +08:00
|
|
|
if (!actionInfo.modifyText) {
|
2020-06-23 10:27:18 +08:00
|
|
|
this.$messageBox('请输入修改的会话');
|
|
|
|
} else {
|
2020-06-23 14:17:35 +08:00
|
|
|
actionInfo.modifyText = '';
|
|
|
|
actionInfo.isModify = false;
|
2020-06-23 10:27:18 +08:00
|
|
|
}
|
|
|
|
}
|
2020-06-12 11:31:30 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
|
|
@import "src/styles/mixin.scss";
|
|
|
|
.actionTable{
|
|
|
|
width:280px;
|
|
|
|
padding: 15px 0px 10px 15px;
|
|
|
|
display: inline-block;
|
|
|
|
line-height: 200%;
|
|
|
|
}
|
|
|
|
.btnGroup{
|
2020-06-23 10:27:18 +08:00
|
|
|
padding: 0px 10px 10px 10px;
|
2020-06-12 11:31:30 +08:00
|
|
|
float: right;
|
|
|
|
vertical-align: top;
|
|
|
|
display: inline-block;
|
|
|
|
}
|
|
|
|
.el_timeline{
|
|
|
|
width: 350px;
|
|
|
|
margin-top:5px;
|
|
|
|
padding-left: 25px;
|
|
|
|
}
|
|
|
|
.el-timeline{
|
|
|
|
font-size:13px;
|
|
|
|
}
|
|
|
|
.roleClass{
|
|
|
|
color:#409EFF
|
|
|
|
}
|
|
|
|
.commandStyle{
|
|
|
|
color:#F00;
|
|
|
|
}
|
|
|
|
.scriptPane{
|
|
|
|
height: 100%;
|
|
|
|
padding-top:200px;
|
|
|
|
}
|
|
|
|
.scriptBottom{
|
|
|
|
margin-left:300px;
|
|
|
|
margin-top: 0px;
|
|
|
|
font-size:13px;
|
|
|
|
}
|
2020-06-23 10:27:18 +08:00
|
|
|
.modifyText{
|
|
|
|
height: 70px;
|
|
|
|
border: 1px #ccc solid;
|
|
|
|
border-radius: 3px;
|
2020-06-23 10:57:35 +08:00
|
|
|
width: 270px;
|
2020-06-23 10:27:18 +08:00
|
|
|
outline: none;
|
|
|
|
font-size: 13px;
|
|
|
|
resize: none;
|
|
|
|
vertical-align: top;
|
|
|
|
padding: 5px;
|
|
|
|
line-height: 20px;
|
|
|
|
}
|
2020-06-12 11:31:30 +08:00
|
|
|
</style>
|