This commit is contained in:
fan 2020-04-21 18:45:05 +08:00
commit 5f4a211bf2
16 changed files with 518 additions and 134 deletions

View File

@ -285,3 +285,11 @@ export function realDeviceIsUsed(group, projectCode) {
} }
}); });
} }
// 获取仿真成员列表(新版地图)
export function getSimulationMembersNew(group) {
return request({
url: `/simulation/${group}/members`,
method: 'get'
});
}

View File

@ -187,12 +187,12 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
scope.webwork.onmessage = function (event) { scope.webwork.onmessage = function (event) {
//更新列车位置 //更新列车位置
if(scope.datatype == "new"){ // if(scope.datatype == "new"){
//
UpdateTrainNew(camera,trainlisttest); // UpdateTrainNew(camera,trainlisttest);
}else{ // }else{
UpdateTrain(camera,trainlisttest); // UpdateTrain(camera,trainlisttest);
} // }
if(camerarail.moveswitch == true){ if(camerarail.moveswitch == true){
// console.log(camerarail.progress); // console.log(camerarail.progress);

View File

@ -190,7 +190,7 @@ export default {
const operate = { const operate = {
over: true, over: true,
operation: OperationEvent.Switch.locate.menu.operation, operation: OperationEvent.Switch.locate.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}; };
this.sendCommand(operate); this.sendCommand(operate);
@ -200,7 +200,7 @@ export default {
const operate = { const operate = {
over: true, over: true,
operation: OperationEvent.Switch.reverse.menu.operation, operation: OperationEvent.Switch.reverse.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}; };
this.sendCommand(operate); this.sendCommand(operate);

View File

@ -45,11 +45,36 @@ export default {
Local: [ Local: [
], ],
Center: [ Center: [
// { {
// label: '', label: '道岔总定',
// handler: this.setSpeed, handler: this.locate,
// cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED cmdType:CMD.Switch.CMD_SWITCH_NORMAL_POSITION
// }, },
{
label: '道岔总反',
handler: this.reverse,
cmdType:CMD.Switch.CMD_SWITCH_REVERSE_POSITION
},
{
label: '道岔单锁',
handler: this.lock,
cmdType:CMD.Switch.CMD_SWITCH_SINGLE_LOCK
},
{
label: '道岔单解',
handler: this.unlock,
cmdType:CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
},
{
label: '道岔封闭',
handler: this.block,
cmdType:CMD.Switch.CMD_SWITCH_BLOCK
},
{
label: '道岔解封',
handler: this.unblock,
cmdType:CMD.Switch.CMD_SWITCH_UNBLOCK
}
] ]
}, },
menuForce: [ menuForce: [
@ -213,48 +238,84 @@ export default {
}, },
// //
locate(selectType) { locate(selectType) {
commitOperate(menuOperate.Switch.locate, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchControl.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.locate, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchControl.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
}, },
// //
reverse(selectType) { reverse(selectType) {
commitOperate(menuOperate.Switch.reverse, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchControl.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.reverse, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchControl.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
}, },
// //
lock(selectType) { lock(selectType) {
commitOperate(menuOperate.Switch.lock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchControl.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.lock, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchControl.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
}, },
// //
unlock(selectType) { unlock(selectType) {
commitOperate(menuOperate.Switch.unlock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchUnLock.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.unlock, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchUnLock.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
}, },
// //
block(selectType) { block(selectType) {
commitOperate(menuOperate.Switch.block, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchControl.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.block, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchControl.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
}, },
// //
unblock(selectType) { unblock(selectType) {
commitOperate(menuOperate.Switch.unblock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{ let code = selectType.code;
// this.$refs.switchUnLock.doShow(data.operate, this.selected); let type = 3;
if (!code) {
code = this.selected.code;
type = 0;
}
commitOperate(menuOperate.Switch.unblock, {switchCode: code}, type).then(({valid, operate})=>{
!selectType.code && this.$refs.switchUnLock.doShow(operate, this.selected);
}).catch(error=>{ }).catch(error=>{
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });

View File

@ -89,7 +89,7 @@ export default {
], ],
roleTypeNew:[ roleTypeNew:[
{label: '管理员', value: 'ADMIN', enLabel: 'Admin '}, {label: '管理员', value: 'ADMIN', enLabel: 'Admin '},
// {label: '教员', value: 'Instructor', enLabel: 'Instructor '}, {label: '教员', value: 'Instructor', enLabel: 'Instructor '},
{label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '}, {label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '},
{label: '行值', value: 'STATION_SUPERVISOR', enLabel: 'Attendant '}, {label: '行值', value: 'STATION_SUPERVISOR', enLabel: 'Attendant '},
{label: '观众', value: 'AUDIENCE', enLabel: 'Audience '}, {label: '观众', value: 'AUDIENCE', enLabel: 'Audience '},

View File

@ -1,5 +1,5 @@
<template> <template>
<div style="width:25%;height:100%;position:absolute;left:50%;"> <div style="width:100%;height:50%;position:absolute;bottom:4%">
<div id="start" class="panebutton2" style="bottom:1%;left:5%;"> <div id="start" class="panebutton2" style="bottom:1%;left:5%;">
<img class="buttonimg2" :src="start" /> <img class="buttonimg2" :src="start" />
</div> </div>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="drivepane"> <div class="drivepane">
<div style="position: absolute;left:50%;top:10%;z-index:10;background: #EBEBEB;"> <div style="position: absolute;right:50%;top:60%;z-index:10;background: #EBEBEB;">
<el-select v-model="value" placeholder="请选择列车" @change="currentsel" @visible-change="clickselect"> <el-select v-model="value" placeholder="请选择列车" @change="currentsel" @visible-change="clickselect">
<el-option <el-option
v-for="item in options" v-for="item in options"
@ -14,9 +14,9 @@
<Centerc-Pane ref="centercontrol" :draw-way="drawWay" :group-num="groupnum" :user-role="userrole" /> <Centerc-Pane ref="centercontrol" :draw-way="drawWay" :group-num="groupnum" :user-role="userrole" />
<Left-Pane ref="leftcontrol" /> <!-- <Left-Pane ref="leftcontrol" /> -->
<Right-Pane ref="rightcontrol" /> <!-- <Right-Pane ref="rightcontrol" /> -->
<TopRight-Pane ref="topcontrol" /> <TopRight-Pane ref="topcontrol" />
@ -148,13 +148,14 @@ import axios from 'axios';
<style> <style>
.drivepane{ .drivepane{
width:100%; width:30%;
height:160px; height:320px;
left:0; right:500px;
bottom:0; bottom:0;
position: absolute; position: absolute;
background-size: 100% 100%; background-size: 100% 100%;
background-image: url('/static/jl3d/control/scene.png'); background-image: url('/static/jl3d/control/scene.png');
border-radius:10px;
} }
.panebutton{ .panebutton{
height: 73px; height: 73px;

View File

@ -1,58 +1,73 @@
<template> <template>
<div style="width:25%;height:100%;position:absolute;bottom:0;left:0;"> <div style="width:25%;height:100%;position:absolute;bottom:0;left:0;">
<div id="breaker" class="panebutton" style="top:3%;left:3%;" @tap="breakerclick"> <!-- 高速断路器 -->
<!-- <div id="breaker" class="panebutton" style="top:3%;left:3%;" @tap="breakerclick">
<img class="buttonimg" :src="greenzimg" /> <img class="buttonimg" :src="greenzimg" />
<div class="buttontext">{{ $t('jlmap3d.highSpeedCircuitBreaker') }}</div> <div class="buttontext">{{ $t('jlmap3d.highSpeedCircuitBreaker') }}</div>
</div> </div> -->
<div id="carwash" class="panebutton" style="top:3%;left:14%;" @tap="carwashclick"> <!-- 洗车模式 -->
<!-- <div id="carwash" class="panebutton" style="top:3%;left:14%;" @tap="carwashclick">
<img class="buttonimg" :src="redzimg" /> <img class="buttonimg" :src="redzimg" />
<div class="buttontext">{{ $t('jlmap3d.washCarModel') }}</div> <div class="buttontext">{{ $t('jlmap3d.washCarModel') }}</div>
</div> </div> -->
<div id="aircom" class="panebutton" style="top:3%;left:28%;" @tap="aircomclick"> <!-- 空压机强迫启动 -->
<!-- <div id="aircom" class="panebutton" style="top:3%;left:28%;" @tap="aircomclick">
<img class="buttonimg" :src="aircomimg" /> <img class="buttonimg" :src="aircomimg" />
<div class="buttontext">{{ $t('jlmap3d.forcedAirCompressor') }}</div> <div class="buttontext">{{ $t('jlmap3d.forcedAirCompressor') }}</div>
</div> </div> -->
<!-- ATB启动 -->
<div id="atb" class="panebutton" style="top:3%;left:42%;" @tap="atbclick"> <div id="atb" class="panebutton" style="top:3%;left:42%;" @tap="atbclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div> <div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div>
</div> </div>
<!-- BM/CBTC -->
<div id="bmcbtc" class="panebutton" style="top:3%;left:56%;" @tap="bmcbtcclick"> <div id="bmcbtc" class="panebutton" style="top:3%;left:56%;" @tap="bmcbtcclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">BM/CBTC</div> <div class="buttontext">BM/CBTC</div>
</div> </div>
<!-- RM -->
<div id="rm" class="panebutton" style="top:3%;left:70%;" @tap="rmclick"> <div id="rm" class="panebutton" style="top:3%;left:70%;" @tap="rmclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">RM</div> <div class="buttontext">RM</div>
</div> </div>
<div id="relieve" class="panebutton" style="top:3%;left:84%;" @tap="relieveclick"> <!-- 强迫缓解 -->
<!-- <div id="relieve" class="panebutton" style="top:3%;left:84%;" @tap="relieveclick">
<img class="buttonimg" :src="aircomimg" /> <img class="buttonimg" :src="aircomimg" />
<div class="buttontext">{{ $t('jlmap3d.forcedRelieve') }}</div> <div class="buttontext">{{ $t('jlmap3d.forcedRelieve') }}</div>
</div> </div> -->
<!-- 关左门 -->
<div id="dlclose" class="panebutton" style="bottom:3%;left:3%;" @tap="dlcclick"> <div id="dlclose" class="panebutton" style="bottom:3%;left:3%;" @tap="dlcclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div>
</div> </div>
<!-- 开左门A -->
<div id="dlopen" class="panebutton" style="bottom:3%;left:14%;" @tap="dloclick"> <div id="dlopen" class="panebutton" style="bottom:3%;left:14%;" @tap="dloclick">
<img class="buttonimg" :src="redimg" /> <img class="buttonimg" :src="redimg" />
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
</div> </div>
<div id="dlopen" class="panebutton" style="bottom:3%;left:28%;" @tap="dloclick"> <!-- 开左门B -->
<!-- <div id="dlopen" class="panebutton" style="bottom:3%;left:28%;" @tap="dloclick">
<img class="buttonimg" :src="redimg" /> <img class="buttonimg" :src="redimg" />
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
</div> </div> -->
<!-- ATO启动A -->
<div id="atoa" class="panebutton" style="bottom:3%;left:42%;" @tap="atoaclick"> <div id="atoa" class="panebutton" style="bottom:3%;left:42%;" @tap="atoaclick">
<img class="buttonimg" :src="apoimg" /> <img class="buttonimg" :src="apoimg" />
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div> <div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div>
</div> </div>
<div id="atob" class="panebutton" style="bottom:3%;left:56%;" @tap="atobclick"> <!-- ATO启动B -->
<!-- <div id="atob" class="panebutton" style="bottom:3%;left:56%;" @tap="atobclick">
<img class="buttonimg" :src="apoimg" /> <img class="buttonimg" :src="apoimg" />
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div> <div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div>
</div> </div> -->
<!-- cbtc -->
<div id="cbtc" class="panebutton" style="bottom:3%;left:70%;" @tap="cbtcclick"> <div id="cbtc" class="panebutton" style="bottom:3%;left:70%;" @tap="cbtcclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">CBTC</div> <div class="buttontext">CBTC</div>
</div> </div>
<!-- 电笛按钮 -->
<div id="elflute" class="panebutton" style="bottom:3%;left:84%;" @tap="elfluteclick"> <div id="elflute" class="panebutton" style="bottom:3%;left:84%;" @tap="elfluteclick">
<img class="buttonimg" :src="grayimg" /> <img class="buttonimg" :src="grayimg" />
<div class="buttontext">{{ $t('jlmap3d.electricHornButton') }}</div> <div class="buttontext">{{ $t('jlmap3d.electricHornButton') }}</div>

View File

@ -1,22 +1,22 @@
<template> <template>
<div style="width:25%;height:100%;position:absolute;left:75%;"> <div style="width:25%;height:100%;position:absolute;left:75%;">
<div id="dropen" class="panebutton" style="bottom:1%;left:1%;" @tap="droclick"> <div id="dropen" class="panebutton" style="bottom:1%;left:1%;" @tap="droclick">
<img class="buttonimg" :src="redlimg" /> <img class="buttonimg" :src="redlimg" />
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div>
</div> </div>
<div id="dropen" class="panebutton" style="bottom:1%;left:21%;" @tap="droclick"> <!-- <div id="dropen" class="panebutton" style="bottom:1%;left:21%;" @tap="droclick">
<img class="buttonimg" :src="redlimg" /> <img class="buttonimg" :src="redlimg" />
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div>
</div> </div> -->
<div id="drclose" class="panebutton" style="bottom:1%;left:41%;" @tap="drcclick"> <div id="drclose" class="panebutton" style="bottom:1%;left:41%;" @tap="drcclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.closeRightDoor') }}</div> <div class="buttontext">{{ $t('jlmap3d.closeRightDoor') }}</div>
</div> </div>
<div id="waterswitch" class="panebutton2" style="bottom:1%;left:61%;" @tap="waterclick"> <!-- <div id="waterswitch" class="panebutton2" style="bottom:1%;left:61%;" @tap="waterclick">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:watertou}" @touchstart='watertouchstart' @touchmove='watertouchmove' @touchend='watertouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:watertou}" @touchstart='watertouchstart' @touchmove='watertouchmove' @touchend='watertouchend'/>
<div class="tfbutton" style="font-size:1px;top:5px;left:33px;">{{ $t('jlmap3d.close') }}</div> <div class="tfbutton" style="font-size:1px;top:5px;left:33px;">{{ $t('jlmap3d.close') }}</div>
@ -31,7 +31,7 @@
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.slow') }}</div> <div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.slow') }}</div>
<div class="tfbutton" style="font-size:1px;top:23px;left:50px;">{{ $t('jlmap3d.highSpeed') }}</div> <div class="tfbutton" style="font-size:1px;top:23px;left:50px;">{{ $t('jlmap3d.highSpeed') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.wiperSwitch') }}</div> <div class="buttontext2">{{ $t('jlmap3d.wiperSwitch') }}</div>
</div> </div> -->
<div id="urgestop" class="panebutton" style="top:1%;left:1%;"> <div id="urgestop" class="panebutton" style="top:1%;left:1%;">
<img class="buttonimg" :src="urgestopimg" /> <img class="buttonimg" :src="urgestopimg" />
@ -47,14 +47,14 @@
<div class="buttontext2">{{ $t('jlmap3d.doorSideChoose') }}</div> <div class="buttontext2">{{ $t('jlmap3d.doorSideChoose') }}</div>
</div> </div>
<div id="doormode" class="panebutton2" style="top:1%;left:66%;"> <!-- <div id="doormode" class="panebutton2" style="top:1%;left:66%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:doormodetou}" @touchstart='doormodetouchstart' @touchmove='doormodetouchmove' @touchend='doormodetouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:doormodetou}" @touchstart='doormodetouchstart' @touchmove='doormodetouchmove' @touchend='doormodetouchend'/>
<div class="tfbutton" style="font-size:1px;top:13px;left:5px;">AA</div> <div class="tfbutton" style="font-size:1px;top:13px;left:5px;">AA</div>
<div class="tfbutton" style="font-size:1px;top:5px;left:33px;">AM</div> <div class="tfbutton" style="font-size:1px;top:5px;left:33px;">AM</div>
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">MM</div> <div class="tfbutton" style="font-size:1px;top:13px;left:50px;">MM</div>
<div class="buttontext2">{{ $t('jlmap3d.doorModel') }}</div> <div class="buttontext2">{{ $t('jlmap3d.doorModel') }}</div>
</div> </div> -->
</div> </div>
</template> </template>

View File

@ -1,10 +1,50 @@
<template> <template>
<div style="width:25%;height:100%;position:absolute;left:25%;"> <div style="width:100%;height:48%;position:absolute;top:0px;">
<!-- ATB启动 -->
<div id="atb" class="panebutton" style="top:8%;left:3%;" @tap="atbclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div>
</div>
<!-- BM/CBTC -->
<div id="bmcbtc" class="panebutton" style="top:8%;left:17%;" @tap="bmcbtcclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">BM/CBTC</div>
</div>
<!-- RM -->
<div id="rm" class="panebutton" style="top:8%;left:31%;" @tap="rmclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">RM</div>
</div>
<!-- 关左门 -->
<div id="dlclose" class="panebutton" style="top:8%;left:45%;" @tap="dlcclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div>
</div>
<!-- 开左门A -->
<div id="dlopen" class="panebutton" style="top:8%;left:59%;" @tap="dloclick">
<img class="buttonimg" :src="redimg" />
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
</div>
<!-- ATO启动A -->
<div id="atoa" class="panebutton" style="top:8%;left:73%;" @tap="atoaclick">
<img class="buttonimg" :src="apoimg" />
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div>
</div>
<!-- cbtc -->
<div id="cbtc" class="panebutton" style="top:8%;left:87%;" @tap="cbtcclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">CBTC</div>
</div>
<!-- 电笛按钮 -->
<!-- <div id="elflute" class="panebutton" style="bottom:3%;left:84%;" @tap="elfluteclick">
<img class="buttonimg" :src="grayimg" />
<div class="buttontext">{{ $t('jlmap3d.electricHornButton') }}</div>
</div> -->
<div id="passlight" class="panebutton2" style="top:1%;left:1%;"> <!-- <div id="passlight" class="panebutton2" style="top:1%;left:1%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:passlighttf}" @touchstart='passlighttouchstart' @touchmove='passlighttouchmove' @touchend='passlighttouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:passlighttf}" @touchstart='passlighttouchstart' @touchmove='passlighttouchmove' @touchend='passlighttouchend'/>
<div class="tfbutton" style="font-size:1px;top:5px;left:33px;">{{ $t('jlmap3d.close') }}</div> <div class="tfbutton" style="font-size:1px;top:8px;left:33px;">{{ $t('jlmap3d.close') }}</div>
<div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div> <div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.roomLightingControl') }}</div> <div class="buttontext2">{{ $t('jlmap3d.roomLightingControl') }}</div>
</div> </div>
@ -12,15 +52,15 @@
<div id="siv" class="panebutton2" style="top:1%;left:20%;"> <div id="siv" class="panebutton2" style="top:1%;left:20%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:sivtf}" @touchstart='sivtouchstart' @touchmove='sivtouchmove' @touchend='sivtouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:sivtf}" @touchstart='sivtouchstart' @touchmove='sivtouchmove' @touchend='sivtouchend'/>
<div class="tfbutton" style="font-size:1px;top:5px;left:33px;">{{ $t('jlmap3d.close') }}</div> <div class="tfbutton" style="font-size:1px;top:8px;left:33px;">{{ $t('jlmap3d.close') }}</div>
<div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div> <div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.sivsControl') }}</div> <div class="buttontext2">{{ $t('jlmap3d.sivsControl') }}</div>
</div> </div> -->
<div id="driverlight" class="panebutton2" style="top:1%;left:40%;"> <!-- <div id="driverlight" class="panebutton2" style="top:1%;left:40%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:driverlighttf}" @touchstart='driverlighttouchstart' @touchmove='driverlighttouchmove' @touchend='driverlighttouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:driverlighttf}" @touchstart='driverlighttouchstart' @touchmove='driverlighttouchmove' @touchend='driverlighttouchend'/>
<div class="tfbutton" style="font-size:1px;top:5px;left:28px;">{{ $t('jlmap3d.shut') }}</div> <div class="tfbutton" style="font-size:1px;top:8px;left:28px;">{{ $t('jlmap3d.shut') }}</div>
<div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div> <div class="tfbutton" style="font-size:1px;top:25px;left:50px;">{{ $t('jlmap3d.open') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.driverRoomLights') }}</div> <div class="buttontext2">{{ $t('jlmap3d.driverRoomLights') }}</div>
</div> </div>
@ -28,41 +68,63 @@
<div id="headlight" class="panebutton2" style="top:1%;left:60%;"> <div id="headlight" class="panebutton2" style="top:1%;left:60%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:headlighttf}" @touchstart='headlighttouchstart' @touchmove='headlighttouchmove' @touchend='headlighttouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:headlighttf}" @touchstart='headlighttouchstart' @touchmove='headlighttouchmove' @touchend='headlighttouchend'/>
<div class="tfbutton" style="font-size:1px;top:5px;left:28px;">{{ $t('jlmap3d.shut') }}</div> <div class="tfbutton" style="font-size:1px;top:8px;left:28px;">{{ $t('jlmap3d.shut') }}</div>
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.passingBeam') }}</div> <div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.passingBeam') }}</div>
<div class="tfbutton" style="font-size:1px;top:25px;left:50px">{{ $t('jlmap3d.distanceLight') }}</div> <div class="tfbutton" style="font-size:1px;top:25px;left:50px">{{ $t('jlmap3d.distanceLight') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.headLamp') }}</div> <div class="buttontext2">{{ $t('jlmap3d.headLamp') }}</div>
</div> </div> -->
<!-- 受电弓升 -->
<div id="sg" class="panebutton" style="bottom:1%;left:1%;" @tap="sgclink"> <!-- <div id="sg" class="panebutton" style="bottom:6%;left:3%;" @tap="sgclink">
<img class="buttonimg" :src="sgimg" /> <img class="buttonimg" :src="sgimg" />
<div class="buttontext">{{ $t('jlmap3d.electricGongSheng') }}</div> <div class="buttontext">{{ $t('jlmap3d.electricGongSheng') }}</div>
</div> </div> -->
<!-- 受电弓降 -->
<div id="jg" class="panebutton" style="bottom:1%;left:20%;" @tap="jgclick"> <!-- <div id="jg" class="panebutton" style="bottom:6%;left:17%;" @tap="jgclick">
<img class="buttonimg" :src="jgimg" /> <img class="buttonimg" :src="jgimg" />
<div class="buttontext">{{ $t('jlmap3d.pantographFall') }}</div> <div class="buttontext">{{ $t('jlmap3d.pantographFall') }}</div>
</div> </div> -->
<!-- 试灯按钮 -->
<div id="sl" class="panebutton" style="bottom:1%;left:40%;" @tap="slclick"> <!-- <div id="sl" class="panebutton" style="bottom:6%;left:40%;" @tap="slclick">
<img class="buttonimg" :src="slimg" /> <img class="buttonimg" :src="slimg" />
<div class="buttontext">{{ $t('jlmap3d.lampButton') }}</div> <div class="buttontext">{{ $t('jlmap3d.lampButton') }}</div>
</div> </div> -->
<!-- ATP切除 -->
<div id="atp" class="panebutton" style="bottom:1%;left:60%;" @tap="atpclick"> <div id="atp" class="panebutton" style="bottom:6%;left:31%;" @tap="atpclick">
<img class="buttonimg" :src="atpimg" /> <img class="buttonimg" :src="atpimg" />
<div class="buttontext">{{ $t('jlmap3d.removalATP') }}</div> <div class="buttontext">{{ $t('jlmap3d.removalATP') }}</div>
</div> </div>
<div id="staymode" class="panebutton2" style="bottom:1%;left:80%;"> <!-- <div id="staymode" class="panebutton2" style="bottom:6%;left:80%;">
<img class="buttonimg2" :src="zuoimg" /> <img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:toutransform}" @touchstart='stopmodetouchstart' @touchmove='stopmodetouchmove' @touchend='stopmodetouchend'/> <img class="buttonimg2" :src="niuimg" :style="{transform:toutransform}" @touchstart='stopmodetouchstart' @touchmove='stopmodetouchmove' @touchend='stopmodetouchend'/>
<div class="tfbutton" style="top:25px;left:1px;">{{ $t('jlmap3d.infliction') }}</div> <div class="tfbutton" style="top:25px;left:1px;">{{ $t('jlmap3d.infliction') }}</div>
<div class="tfbutton" style="top:5px;left:25px;">{{ $t('jlmap3d.mesoPosition') }}</div> <div class="tfbutton" style="top:8px;left:25px;">{{ $t('jlmap3d.mesoPosition') }}</div>
<div class="tfbutton" style="top:25px;left:50px;">{{ $t('jlmap3d.remission') }}</div> <div class="tfbutton" style="top:25px;left:50px;">{{ $t('jlmap3d.remission') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.parkingBrakeMode') }}</div> <div class="buttontext2">{{ $t('jlmap3d.parkingBrakeMode') }}</div>
</div> -->
<div id="dropen" class="panebutton" style="bottom:6%;left:45%;" @tap="droclick">
<img class="buttonimg" :src="redlimg" />
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div>
</div> </div>
<div id="drclose" class="panebutton" style="bottom:6%;left:59%;" @tap="drcclick">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.closeRightDoor') }}</div>
</div>
<div id="urgestop" class="panebutton" style="bottom:6%;left:73%;">
<img class="buttonimg" :src="urgestopimg" />
<div class="buttontext">{{ $t('jlmap3d.emergencyBraking') }}</div>
</div>
<div id="doorpick" class="panebutton2" style="bottom:6%;left:85%;">
<img class="buttonimg2" :src="zuoimg" />
<img class="buttonimg2" :src="niuimg" :style="{transform:doordirecttou}" @touchstart='doordirecttouchstart' @touchmove='doordirecttouchmove' @touchend='doordirecttouchend'/>
<div class="tfbutton" style="font-size:1px;top:13px;left:5px;">{{ $t('jlmap3d.leftSide') }}</div>
<div class="tfbutton" style="font-size:1px;top:8px;left:33px;">{{ $t('jlmap3d.location0') }}</div>
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.rightSide') }}</div>
<div class="buttontext2">{{ $t('jlmap3d.doorSideChoose') }}</div>
</div>
</div> </div>
</template> </template>
@ -80,7 +142,7 @@
return { return {
move:0, move:0,
movex:"20%", movex:"20%",
apoimg:"", apoimg:"/static/jl3d/control/green.png",
sgimg:"/static/jl3d/control/redz.png", sgimg:"/static/jl3d/control/redz.png",
jgimg:"/static/jl3d/control/greenz.png", jgimg:"/static/jl3d/control/greenz.png",
atpimg:"/static/jl3d/control/atp.png", atpimg:"/static/jl3d/control/atp.png",
@ -88,6 +150,25 @@
zuoimg:"/static/jl3d/control/zuo.png", zuoimg:"/static/jl3d/control/zuo.png",
niuimg:"/static/jl3d/control/niu.png", niuimg:"/static/jl3d/control/niu.png",
toutransform:"rotate(0deg)", toutransform:"rotate(0deg)",
redlimg:"/static/jl3d/control/redl.png",
greenimg:"/static/jl3d/control/green.png",
urgestopimg:"/static/jl3d/control/urgestop.png",
doordirecttou:"rotate(0deg)",
doormodetou:"rotate(0deg)",
watertou:"rotate(0deg)",
washtou:"rotate(0deg)",
greenzimg:"/static/jl3d/control/greenz.png",
redzimg:"/static/jl3d/control/redz.png",
redimg:"/static/jl3d/control/red.png",
greenlimg:"/static/jl3d/control/greenl.png",
grayimg:"/static/jl3d/control/gray.png",
aircomimg:"/static/jl3d/control/aircom.png",
passlighttf:"rotate(0deg)",
sivtf:"rotate(0deg)",
driverlighttf:"rotate(0deg)",
headlighttf:"rotate(0deg)",
} }
}, },
watch: { watch: {

View File

@ -394,7 +394,7 @@ export default {
height:333px; height:333px;
background: black; background: black;
position:absolute; position:absolute;
bottom:160px; bottom:0;
} }
.meter{ .meter{
width:60%; width:60%;

View File

@ -47,7 +47,7 @@ export default {
background-size:100% 100%; background-size:100% 100%;
background-image:url('/static/jl3d/tms.png'); background-image:url('/static/jl3d/tms.png');
position:absolute; position:absolute;
bottom:160px; bottom:0;
right:0; right:0;
} }

View File

@ -0,0 +1,183 @@
<template>
<div class="chatBox">
<div v-show="!minimize" class="chat-box">
<div :class="showMembers?'memberAnimate chat-box-members':'chat-box-members'">
<div class="chat-member-title">成员列表</div>
<div class="chat-member-list">
<div v-for="member in memberList" :key="member.id" class="each-chat-member">{{ member.role+'-'+member.name }}</div>
</div>
</div>
<div class="chat-box-main">
<div class="chat-box-header">
<div class="chat-box-header-title">聊天窗口</div>
<div class="minimality" @click="handleMinimality('min')">
<i class="el-icon-remove" />
</div>
<div class="showMembers" @click="handleMembers()">
<i class="el-icon-user-solid" />
</div>
</div>
</div>
</div>
<div v-show="minimize" class="reminder-drag minimize-box">
<div class="chat-title">聊天窗口</div>
<div class="minimality" @click="handleMinimality('max')">
<i class="el-icon-circle-plus" />
</div>
</div>
</div>
</template>
<script>
import {getSimulationMembersNew} from '@/api/chat';
import ConstConfig from '@/scripts/ConstConfig';
import Cookies from 'js-cookie';
export default {
name: 'ChatBox',
data() {
return {
minimize:false,
showMembers:false,
memberList:[]
};
},
methods:{
handleMinimality(data) {
if (data == 'min') {
this.minimize = true;
} else {
this.minimize = false;
}
},
handleMembers() {
if (this.showMembers) {
this.showMembers = false;
} else {
getSimulationMembersNew(this.$route.query.group).then(resp => {
// this.memberList = netdata.data;
let lastData = JSON.stringify(resp.data);
const roleTypeList = ConstConfig.ConstSelect.roleTypeNew;
roleTypeList.forEach(function(element) {
const rolename = element.value;
if (Cookies.get('user_lang') == 'en') {
lastData = lastData.replace(new RegExp(rolename, 'g'), element.enLabel);
} else {
lastData = lastData.replace(new RegExp(rolename, 'g'), element.label);
}
});
lastData = JSON.parse(lastData);
this.memberList = lastData;
});
this.showMembers = true;
}
}
}
};
</script>
<style lang="scss" scoped>
.chatBox{
width: 400px;
height: 400px;
position: absolute;
padding-left:5px;
left: 0;
bottom:28px;
}
.chat-box{
width: 100%;
height: 100%;
}
.chat-box-header{
width: 100%;
height: 40px;
border-bottom: 1px #dedede solid;
}
.chat-box-header-title{
font-size: 15px;
margin-left: 15px;
display: inline-block;
margin-top: 10px;
}
.minimality {
float: right;
line-height: 40px;
margin-right: 10px;
cursor: pointer;
}
.chat-box-main{
position: absolute;
width: 100%;
left: 0;
height: 100%;
top: 0;
border-right: 1px #dedede solid;
z-index: 4;
background: #fff;
border-radius: 5px;
left:5px;
}
.chat-member-list{
margin-top: 13px;
font-size: 12px;
margin-left: 2px;
}
.each-chat-member{
margin-bottom: 10px;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.chat-box-members{
position: absolute;
width: 140px;
right: 0;
height: 100%;
background: #fff;
border-right: 1px #dedede solid;
border-radius: 0px 5px 5px 0px;
z-index: 2;
transition: transform 1s;
padding: 12px 11px 10px 16px;
font-size: 14px;
}
.chat-member-title{
}
.showMembers{
float: right;
line-height: 40px;
margin-right: 10px;
cursor: pointer;
font-size: 17px;
}
.memberAnimate{
transform: translateX(97%);
}
.minimize-box {
width: 97.5%;
height: 40px;
position: absolute;
left: 5px;
bottom: 0;
z-index: 222;
background: #fff;
border-radius: 5px;
.chat-title {
float: left;
font-size: 15px;
margin-left: 10px;
line-height: 40px;
}
.minimality {
float: right;
height: 40px;
line-height: 40px;
margin-right: 10px;
cursor: pointer;
}
}
</style>

View File

@ -1,5 +1,63 @@
<template> <template>
<div> <div>
<chat-box />
<!-- <div v-show="!minimize" class="reminder-drag">
<div v-if="userRole != '05' && userRole != ''">
<div class="tabs-roles">
<div
class="roles roles-first"
:class="activeName == 'first' ? 'roles-active':''"
@click="clickRoles('first')"
>角色
</div>
<div
class="roles"
:class="activeName == 'second' ? 'roles-active':''"
@click="clickRoles('second')"
>所有人
</div>
<div class="minimality" @click="handleMinimality('min')">
<i class="el-icon-remove" />
</div>
</div>
<div class="tabs-content">
<div v-show="activeName == 'first'">
<chart-view
ref="chatView"
:group="group"
:station-list="stationLists"
@showChatSpeak="showChatSpeak"
@showChat="showChat"
@showChatNone="showChatNone"
/>
</div>
<div style="flex-grow: 1">
<chart-window
ref="chat"
:group="group"
:chat-show="chatShow"
:speaking="isSpeaking"
:is-show-auto="isShowAuto"
@handleChatShow="handleChatShow"
@handleChatList="handleChatList"
/>
</div>
</div>
</div>
<div v-else>
<el-tabs v-model="activeName2" type="card">
<el-tab-pane label="所有人" name="second">
<chart-window :speaking="isSpeaking" :group="group" :is-show-auto="true" />
</el-tab-pane>
</el-tabs>
</div>
</div> -->
<!-- <div v-show="minimize" class="reminder-drag minimize-box">
<div class="chat-title">聊天窗口</div>
<div class="minimality" @click="handleMinimality('max')">
<i class="el-icon-circle-plus" />
</div>
</div> -->
<div class="display-draft" :class="{'display-type-hb': $route.query.lineCode == '07' && $store.state.training.prdType=='01'}"> <div class="display-draft" :class="{'display-type-hb': $route.query.lineCode == '07' && $store.state.training.prdType=='01'}">
<el-button-group> <el-button-group>
<el-button v-if="isProject" type="primary" @click="setRelDevice">{{ $t('joinTraining.connectRealDevices') }}</el-button> <el-button v-if="isProject" type="primary" @click="setRelDevice">{{ $t('joinTraining.connectRealDevices') }}</el-button>
@ -8,7 +66,7 @@
<el-button type="success" :disabled="isDisable" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button> <el-button type="success" :disabled="isDisable" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
<el-button type="danger" :disabled="!isDisable" @click="end">{{ $t('joinTraining.exitPlan') }}</el-button> <el-button type="danger" :disabled="!isDisable" @click="end">{{ $t('joinTraining.exitPlan') }}</el-button>
</template> </template>
<el-button type="primary" @click="back">{{ $t('global.back') }}</el-button> <el-button type="primary" :loading="backLoading" @click="back">{{ $t('global.back') }}</el-button>
</el-button-group> </el-button-group>
</div> </div>
<qr-code ref="qrCode" /> <qr-code ref="qrCode" />
@ -19,6 +77,9 @@
<script> <script>
import QrCode from '@/components/QrCode'; import QrCode from '@/components/QrCode';
// import ChartWindow from './chatWindow';
// import ChartView from './chartView';
import ChatBox from './chatBox';
import SetTime from '@/views/newMap/displayNew/demon/setTime'; import SetTime from '@/views/newMap/displayNew/demon/setTime';
import { ranAsPlan, exitRunPlan } from '@/api/simulation'; import { ranAsPlan, exitRunPlan } from '@/api/simulation';
import { exitFullscreen } from '@/utils/screen'; import { exitFullscreen } from '@/utils/screen';
@ -30,6 +91,9 @@ import RealDevice from './menuDraft/realDevice';
export default { export default {
name: 'MenuDemonJoint', name: 'MenuDemonJoint',
components: { components: {
// ChartView,
// ChartWindow,
ChatBox,
QrCode, QrCode,
SetTime, SetTime,
RealDevice RealDevice
@ -53,6 +117,7 @@ export default {
data() { data() {
return { return {
isDisable: false, isDisable: false,
backLoading:false,
timeNow: 0, timeNow: 0,
remainingTime: 0, remainingTime: 0,
recordStep: 'BGSetting', recordStep: 'BGSetting',
@ -69,7 +134,7 @@ export default {
activeName2: 'second', activeName2: 'second',
stationList: [], stationList: [],
stationLists: [], stationLists: [],
minimize: false minimize: true
}; };
}, },
computed: { computed: {
@ -115,6 +180,7 @@ export default {
}, },
async mounted() { async mounted() {
this.userId = this.$store.state.user.id; this.userId = this.$store.state.user.id;
this.backLoading = false;
await this.initLoadPage(); await this.initLoadPage();
}, },
beforeDestroy() { beforeDestroy() {
@ -151,35 +217,29 @@ export default {
} }
this.activeName = active; this.activeName = active;
}, },
handleMinimality(data) {
if (data == 'min') { // handleChatShow(data) {
this.minimize = true; // if (!this.minimize) { //
} else { // if (this.activeName == 'first') {
this.minimize = false; // this.$refs.chatView.select(data.id);
} // this.chatShow = false;
}, // this.isShowAuto = false;
handleChatShow(data) { // this.$refs.chat.handleTextList(data.conversationId);
if (!this.minimize) { // // } else {
if (this.activeName == 'first') { // this.activeName = 'first';
this.$refs.chatView.select(data.id); // this.handleChatShow(data);
this.chatShow = false; // }
this.isShowAuto = false; // } else { //
this.$refs.chat.handleTextList(data.conversationId); // this.minimize = false;
} else { // this.handleChatShow(data);
this.activeName = 'first'; // }
this.handleChatShow(data); // },
}
} else { //
this.minimize = false;
this.handleChatShow(data);
}
},
// //
showChatSpeak(data) { // showChatSpeak(data) {
this.chatShow = false; // this.chatShow = false;
this.isShowAuto = false; // this.isShowAuto = false;
this.$refs.chat.handleTextList(data.conversationId); // this.$refs.chat.handleTextList(data.conversationId);
}, // },
// list // list
showChat(obj) { showChat(obj) {
this.chatShow = false; this.chatShow = false;
@ -327,9 +387,11 @@ export default {
}, },
back() { back() {
this.$store.dispatch('training/over').then(() => { this.$store.dispatch('training/over').then(() => {
this.backLoading = true;
putJointTrainingSimulationUserNew(this.group).then(() => { putJointTrainingSimulationUserNew(this.group).then(() => {
this.$router.replace({ path: `/trainroom`, query: { lineCode: this.lineCode, group: this.group, drawWay: true } }); this.$router.replace({ path: `/trainroom`, query: { lineCode: this.lineCode, group: this.group, drawWay: true } });
exitFullscreen(); exitFullscreen();
this.backLoading = false;
}); });
}); });
}, },
@ -374,12 +436,6 @@ export default {
color: #409EFF; color: #409EFF;
} }
.minimality {
float: right;
line-height: 40px;
margin-right: 10px;
cursor: pointer;
}
} }
.tabs-content { .tabs-content {
@ -431,27 +487,6 @@ export default {
} }
} }
.minimize-box {
bottom: 10px;
width: 300px;
height: 40px;
.chat-title {
float: left;
font-size: 16px;
margin-left: 10px;
line-height: 40px;
}
.minimality {
float: right;
height: 40px;
line-height: 40px;
margin-right: 10px;
cursor: pointer;
}
}
.display-draft { .display-draft {
position: absolute; position: absolute;
float: right; float: right;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB