This commit is contained in:
fan 2020-10-23 18:06:05 +08:00
commit 4f0f85c60c
5 changed files with 98 additions and 57 deletions

View File

@ -1,13 +1,15 @@
<template> <template>
<div class="chatBox" :class="{'active': drawer}" :style="{'bottom':bottom+'px'}"> <div class="chatBox" :class="{'active': drawer}" :style="{'bottom':bottom+'px'}">
<div class="menuTrainListBtn" @click="clickBtn"> <div class="menuTrainListBtn" @click="clickBtn">
<div v-if="userRole == 'DISPATCHER'" id="teleName"> <div v-if="userRole == 'DISPATCHER'">
<div id="teleName" />
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
</div> </div>
<div v-if="userRole != 'AUDIENCE' && userRole != 'DISPATCHER'" id="teleName"> <div v-if="userRole != 'AUDIENCE' && userRole != 'DISPATCHER'">
<div id="teleName" />
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
<p style="margin: 0;"></p> <p style="margin: 0;"></p>
</div> </div>
@ -798,6 +800,9 @@ export default {
this.quitLoading = true; this.quitLoading = true;
this.userString = ''; this.userString = '';
overSimulationConversition(this.group, this.conversitionId).then(resp => { overSimulationConversition(this.group, this.conversitionId).then(resp => {
if (this.recordSending) {
this.cancleRecording();
}
this.connectSuccess = false; this.connectSuccess = false;
this.conversitionMemberList = []; this.conversitionMemberList = [];
this.messageList = []; this.messageList = [];
@ -1229,6 +1234,17 @@ export default {
-webkit-animation: isInviting infinite 1s; /* Safari 和 Chrome */ -webkit-animation: isInviting infinite 1s; /* Safari 和 Chrome */
-o-animation: isInviting infinite 1s; /* Opera */ -o-animation: isInviting infinite 1s; /* Opera */
} }
#teleName{
background: #6BBE16;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 0px 5px 5px 0px;
z-index: -1;
opacity: 0;
}
</style> </style>
<style lang="scss"> <style lang="scss">
.isInviting::before{ .isInviting::before{

View File

@ -106,33 +106,23 @@ export default {
}, },
onZrMouseOver(e) { onZrMouseOver(e) {
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.model.choice == 'Plan') {
this.doSetSelected(args);
}
if (this.model.choice == 'Construction') { if (this.model.choice == 'Construction') {
this.doSetTarget(args);
if (this.model.action == 'Translate') { if (this.model.action == 'Translate') {
this.doSetTarget(args);
this.doSetAreaTranslate(args); this.doSetAreaTranslate(args);
} else if (this.model.action == 'Edit') { } else if (this.model.action == 'Edit') {
this.doSetTarget(args);
this.doSetAreaHorns(args); this.doSetAreaHorns(args);
} }
} }
}); });
}, },
onZrMouseDown(e) { onZrMouseDown(e) {
this.dragging = false;
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.model.choice == 'Plan') { if (this.model.choice == 'Plan') {
if (this.model.action == 'Add') { if (this.model.action == 'Add') {
this.doCreateMark(args); this.doCreateMark(args);
} else if (this.model.action == 'Translate') {
this.doSetSelected(args);
this.doCreateDrag(args);
} else if (this.model.action == 'Edit') {
this.doSetSelected(args);
} }
} else if (this.model.choice == 'Construction') { } else if (this.model.choice == 'Construction') {
if (this.model.action == 'Add') { if (this.model.action == 'Add') {
this.doCreateArea(args); this.doCreateArea(args);
@ -153,18 +143,15 @@ export default {
}, },
onZrMouseUp(e) { onZrMouseUp(e) {
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.dragging) { if(this.model.choice == 'Plan') {
this.dragging = false; if (this.model.action == 'Translate') {
if(this.model.choice == 'Plan') { this.doTranslate(args);
if (this.model.action == 'Translate') { }
this.doTranslate(args); } else if(this.model.choice == 'Construction') {
} if (this.model.action == 'Translate') {
} else if(this.model.choice == 'Construction') { this.doTranslate(args);
if (this.model.action == 'Translate') { } else if (this.model.action == 'Edit') {
this.doTranslate(args); this.doTranslate(args);
} else if (this.model.action == 'Edit') {
this.doTranslate(args);
}
} }
} }
}); });
@ -174,7 +161,10 @@ export default {
onMouseOver(e) { onMouseOver(e) {
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.model.choice == 'Plan') { if (this.model.choice == 'Plan') {
this.doSetSelected(args);
if (this.model.action == 'Translate') { if (this.model.action == 'Translate') {
this.doSetDrag(args);
this.doCreateDrag(args);
setTimeout(_ => { this.onShapeMouseOver(e); }, 200); setTimeout(_ => { this.onShapeMouseOver(e); }, 200);
} }
} }
@ -183,6 +173,7 @@ export default {
onMouseDown(e) { onMouseDown(e) {
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.model.choice == 'Plan') { if (this.model.choice == 'Plan') {
this.doSetSelected(args);
if (this.model.action == 'Edit') { if (this.model.action == 'Edit') {
this.doPopDialog(args); this.doPopDialog(args);
} }
@ -195,8 +186,8 @@ export default {
this.pixelExecCb(e, args => { this.pixelExecCb(e, args => {
if (this.model.choice == 'Plan') { if (this.model.choice == 'Plan') {
this.doSetSelected(args); this.doSetSelected(args);
if(this.model.action == 'Translate') { if (this.model.action == 'Translate') {
this.doCreateDrag(args) this.doCreateDrag(args);
} }
} }
}); });
@ -218,7 +209,9 @@ export default {
this.doSeriesDragging(args); this.doSeriesDragging(args);
} }
} }
} else if (this.target) { }
if (this.target) {
if (this.model.choice == 'Construction') { if (this.model.choice == 'Construction') {
if (this.model.action == 'Translate') { if (this.model.action == 'Translate') {
this.doAreaDragging(args); this.doAreaDragging(args);
@ -254,6 +247,17 @@ export default {
}); });
} }
}, },
doClearDrag({e}) {
if (this.selected &&
e.componentType == "series" &&
e.componentSubType == "line" &&
e.seriesName.includes('service')) {
const option = this.myChart.getOption();
const filters = option.graphic[0].elements.filter(el => { return el.subType != 'drag'});
option.graphic[0].elements = filters;
this.myChart.setOption(option, {notMerge: true});
}
},
doCreateMark({e, pointInGrid, pointInPixel, yObj}) { doCreateMark({e, pointInGrid, pointInPixel, yObj}) {
const option = this.myChart.getOption(); const option = this.myChart.getOption();
const graphic = option.graphic; const graphic = option.graphic;
@ -322,7 +326,8 @@ export default {
_y: pointInGrid[1] _y: pointInGrid[1]
}) })
if (this.target && this.target.name != e.target.name) { if (this.target &&
this.target.model.areaNo != e.target.model.areaNo) {
this.setTargetReset(); this.setTargetReset();
} }
@ -467,6 +472,7 @@ export default {
const option = this.myChart.getOption(); const option = this.myChart.getOption();
const model = option.series[this.selected.seriesIndex] const model = option.series[this.selected.seriesIndex]
model.data.forEach(el => { model.data.forEach(el => {
if (el instanceof Array) { if (el instanceof Array) {
el[0] += this.selected.dx; el[0] += this.selected.dx;
@ -586,23 +592,10 @@ export default {
} }
}, },
doTranslate({e}) { doTranslate({e}) {
this.$emit('translate'); if (this.dragging) {
}, this.dragging = false;
calcHornList(elemList, graph) { this.$emit('translate');
const p = graph.position; }
const w = graph.shape.width;
const h = graph.shape.height;
const point1 = [p[0], p[1]];
const point2 = [p[0]+w, p[1]];
const point3 = [p[0]+w, p[1]+h];
const point4 = [p[0], p[1]+h];
elemList.push(utils.buildHornDataObj(point1, this.myChart.convertFromPixel('grid', point1), this, 'horn-1'));
elemList.push(utils.buildHornDataObj(point2, this.myChart.convertFromPixel('grid', point2), this, 'horn-2'));
elemList.push(utils.buildHornDataObj(point3, this.myChart.convertFromPixel('grid', point3), this, 'horn-3'));
elemList.push(utils.buildHornDataObj(point4, this.myChart.convertFromPixel('grid', point4), this, 'horn-4'));
return elemList;
} }
} }
} }

View File

@ -11,6 +11,7 @@
</template> </template>
<script> <script>
import * as utils from './utils'
import echarts from 'echarts'; import echarts from 'echarts';
import Monitor from './monitor.js'; import Monitor from './monitor.js';
import { timeFormat } from '@/utils/date'; import { timeFormat } from '@/utils/date';
@ -264,17 +265,20 @@ export default {
this.pushModels(option.series, this.planUtil.parseDataToSeries(this.myChart, planData, this.stations)); this.pushModels(option.series, this.planUtil.parseDataToSeries(this.myChart, planData, this.stations));
this.pushModels(option.graphic[0].elements, this.planUtil.parseDataToGraph(this.myChart, planData, this.stations)); this.pushModels(option.graphic[0].elements, this.planUtil.parseDataToGraph(this.myChart, planData, this.stations));
if (this.model.choice == 'Construction') { if (this.model.choice == 'Construction') {
const target = this.target;
const elemList = option.graphic[0].elements.filter(el => { return el.subType == 'area'}); const elemList = option.graphic[0].elements.filter(el => { return el.subType == 'area'});
elemList.forEach(el => { elemList.forEach(el => {
el.draggable = false; el.draggable = false;
el.ondrag = echarts.util.curry(this.onShapeDragging); el.ondrag = echarts.util.curry(this.onShapeDragging);
if (this.model.action == 'Translate' && this.target) { if (this.model.action == 'Translate' &&
el.draggable = this.target && this.target.areaNo == el.model.areaNo; target &&
target.model.areaNo == el.model.areaNo) {
el.draggable = true;
} }
}) })
if (this.model.action == 'Edit' && this.target) { if (this.model.action == 'Edit' && target) {
const model = this.target.model; const model = target.model;
const elemList = option.graphic[0].elements.filter(el => { return !['drag'].includes(el.subType) }); const elemList = option.graphic[0].elements.filter(el => { return !['drag'].includes(el.subType) });
const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; }); const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; });
option.graphic[0].elements = this.calcHornList(elemList, graph); option.graphic[0].elements = this.calcHornList(elemList, graph);
@ -390,7 +394,9 @@ export default {
const option = this.myChart.getOption(); const option = this.myChart.getOption();
const model = this.target.model; const model = this.target.model;
const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; }); const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; });
graph.style.fill = 'rgb(255,0,0, 0.6)'; if (graph) {
graph.style.fill = 'rgb(255,0,0, 0.6)';
}
this.myChart.setOption({graphic: option.graphic}); this.myChart.setOption({graphic: option.graphic});
} }
}, },
@ -399,7 +405,9 @@ export default {
const option = this.myChart.getOption(); const option = this.myChart.getOption();
const model = this.target.model; const model = this.target.model;
const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; }); const graph = option.graphic[0].elements.find(el => { return ['area'].includes(el.subType) && el.model.areaNo == model.areaNo; });
graph.style.fill = 'rgb(255,0,0, 0.3)'; if (graph) {
graph.style.fill = 'rgb(255,0,0, 0.3)';
}
this.myChart.setOption({graphic: option.graphic}); this.myChart.setOption({graphic: option.graphic});
} }
}, },
@ -427,6 +435,22 @@ export default {
const elements = option.graphic[0].elements; const elements = option.graphic[0].elements;
option.graphic[0].elements = elements.filter(el => { return !labels.includes(el.subType)}); option.graphic[0].elements = elements.filter(el => { return !labels.includes(el.subType)});
this.myChart.setOption(option, {notMerge: true}); this.myChart.setOption(option, {notMerge: true});
},
calcHornList(elemList, graph) {
const p = graph.position;
const w = graph.shape.width;
const h = graph.shape.height;
const point1 = [p[0], p[1]];
const point2 = [p[0]+w, p[1]];
const point3 = [p[0]+w, p[1]+h];
const point4 = [p[0], p[1]+h];
elemList.push(utils.buildHornDataObj(point1, this.myChart.convertFromPixel('grid', point1), this, 'horn-1'));
elemList.push(utils.buildHornDataObj(point2, this.myChart.convertFromPixel('grid', point2), this, 'horn-2'));
elemList.push(utils.buildHornDataObj(point3, this.myChart.convertFromPixel('grid', point3), this, 'horn-3'));
elemList.push(utils.buildHornDataObj(point4, this.myChart.convertFromPixel('grid', point4), this, 'horn-4'));
return elemList;
} }
} }
}; };

View File

@ -20,15 +20,13 @@ export function buildHornDataObj(position, point, that, name='') {
shape: { shape: {
cx: 0, cx: 0,
cy: 0, cy: 0,
r: 8 r: 6
}, },
style: { style: {
fill: 'rgba(0,0,0,0.3)' fill: 'rgba(0,0,0,0.3)'
}, },
draggable: 'true', draggable: 'true',
onmouseover: echarts.util.curry(that.onShapeMouseOver),
ondrag: echarts.util.curry(that.onShapeDragging), ondrag: echarts.util.curry(that.onShapeDragging),
onmouseout: echarts.util.curry(that.onShapeMouseOut),
z: 100 z: 100
} }
} }

View File

@ -187,7 +187,17 @@ export default {
this.quickChangeMember = {list:quickChangeMember}; this.quickChangeMember = {list:quickChangeMember};
const memberdata = this.quickChangeMember.list.find(mem=>{ return mem.id == newRole.id; }); const memberdata = this.quickChangeMember.list.find(mem=>{ return mem.id == newRole.id; });
if (!memberdata) { if (!memberdata) {
newRole.userId = this.$store.state.user.id; this.quickChangeMember.list.push(newRole); newRole.userId = this.$store.state.user.id;
const roleTypeEnumMap = {
'STATION_SUPERVISOR':'行值',
'DISPATCHER':'行调',
'DRIVER':'司机',
'MAINTAINER':'通号',
'DEPOT_DISPATCHER':'车辆段调度',
'PARENT_DEPARTMENT':'上级部门'
};
newRole.type = roleTypeEnumMap[newRole.type];
this.quickChangeMember.list.push(newRole);
} }
}, },
addMember() { addMember() {