Merge branch 'test' of https://git.code.tencent.com/lian-cbtc/jl-client into test
This commit is contained in:
commit
5f4a211bf2
@ -285,3 +285,11 @@ export function realDeviceIsUsed(group, projectCode) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取仿真成员列表(新版地图)
|
||||
export function getSimulationMembersNew(group) {
|
||||
return request({
|
||||
url: `/simulation/${group}/members`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
@ -187,12 +187,12 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
|
||||
scope.webwork.onmessage = function (event) {
|
||||
//更新列车位置
|
||||
if(scope.datatype == "new"){
|
||||
|
||||
UpdateTrainNew(camera,trainlisttest);
|
||||
}else{
|
||||
UpdateTrain(camera,trainlisttest);
|
||||
}
|
||||
// if(scope.datatype == "new"){
|
||||
//
|
||||
// UpdateTrainNew(camera,trainlisttest);
|
||||
// }else{
|
||||
// UpdateTrain(camera,trainlisttest);
|
||||
// }
|
||||
|
||||
if(camerarail.moveswitch == true){
|
||||
// console.log(camerarail.progress);
|
||||
|
@ -190,7 +190,7 @@ export default {
|
||||
const operate = {
|
||||
over: true,
|
||||
operation: OperationEvent.Switch.locate.menu.operation,
|
||||
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN
|
||||
cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
|
||||
};
|
||||
|
||||
this.sendCommand(operate);
|
||||
@ -200,7 +200,7 @@ export default {
|
||||
const operate = {
|
||||
over: true,
|
||||
operation: OperationEvent.Switch.reverse.menu.operation,
|
||||
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN
|
||||
cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
|
||||
};
|
||||
|
||||
this.sendCommand(operate);
|
||||
|
@ -45,11 +45,36 @@ export default {
|
||||
Local: [
|
||||
],
|
||||
Center: [
|
||||
// {
|
||||
// label: '设置临时限速',
|
||||
// handler: this.setSpeed,
|
||||
// cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED
|
||||
// },
|
||||
{
|
||||
label: '道岔总定',
|
||||
handler: this.locate,
|
||||
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: [
|
||||
@ -213,48 +238,84 @@ export default {
|
||||
},
|
||||
// 单操到定位
|
||||
locate(selectType) {
|
||||
commitOperate(menuOperate.Switch.locate, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchControl.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
},
|
||||
// 单操到反位
|
||||
reverse(selectType) {
|
||||
commitOperate(menuOperate.Switch.reverse, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchControl.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
},
|
||||
// 道岔单锁
|
||||
lock(selectType) {
|
||||
commitOperate(menuOperate.Switch.lock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchControl.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
},
|
||||
// 道岔解锁
|
||||
unlock(selectType) {
|
||||
commitOperate(menuOperate.Switch.unlock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchUnLock.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
},
|
||||
// 道岔封锁
|
||||
block(selectType) {
|
||||
commitOperate(menuOperate.Switch.block, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchControl.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
},
|
||||
// 道岔解封
|
||||
unblock(selectType) {
|
||||
commitOperate(menuOperate.Switch.unblock, {switchCode:selectType.code}, 3).then(({valid, operate})=>{
|
||||
// this.$refs.switchUnLock.doShow(data.operate, this.selected);
|
||||
let code = selectType.code;
|
||||
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=>{
|
||||
this.$refs.noticeInfo.doShow({}, error.message);
|
||||
});
|
||||
|
@ -89,7 +89,7 @@ export default {
|
||||
],
|
||||
roleTypeNew:[
|
||||
{label: '管理员', value: 'ADMIN', enLabel: 'Admin '},
|
||||
// {label: '教员', value: 'Instructor', enLabel: 'Instructor '},
|
||||
{label: '教员', value: 'Instructor', enLabel: 'Instructor '},
|
||||
{label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '},
|
||||
{label: '行值', value: 'STATION_SUPERVISOR', enLabel: 'Attendant '},
|
||||
{label: '观众', value: 'AUDIENCE', enLabel: 'Audience '},
|
||||
|
@ -1,5 +1,5 @@
|
||||
<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%;">
|
||||
<img class="buttonimg2" :src="start" />
|
||||
</div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<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-option
|
||||
v-for="item in options"
|
||||
@ -14,9 +14,9 @@
|
||||
|
||||
<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" />
|
||||
|
||||
@ -148,13 +148,14 @@ import axios from 'axios';
|
||||
|
||||
<style>
|
||||
.drivepane{
|
||||
width:100%;
|
||||
height:160px;
|
||||
left:0;
|
||||
width:30%;
|
||||
height:320px;
|
||||
right:500px;
|
||||
bottom:0;
|
||||
position: absolute;
|
||||
background-size: 100% 100%;
|
||||
background-image: url('/static/jl3d/control/scene.png');
|
||||
border-radius:10px;
|
||||
}
|
||||
.panebutton{
|
||||
height: 73px;
|
||||
|
@ -1,58 +1,73 @@
|
||||
<template>
|
||||
<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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.highSpeedCircuitBreaker') }}</div>
|
||||
</div>
|
||||
<div id="carwash" class="panebutton" style="top:3%;left:14%;" @tap="carwashclick">
|
||||
</div> -->
|
||||
<!-- 洗车模式 -->
|
||||
<!-- <div id="carwash" class="panebutton" style="top:3%;left:14%;" @tap="carwashclick">
|
||||
<img class="buttonimg" :src="redzimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.washCarModel') }}</div>
|
||||
</div>
|
||||
<div id="aircom" class="panebutton" style="top:3%;left:28%;" @tap="aircomclick">
|
||||
</div> -->
|
||||
<!-- 空压机强迫启动 -->
|
||||
<!-- <div id="aircom" class="panebutton" style="top:3%;left:28%;" @tap="aircomclick">
|
||||
<img class="buttonimg" :src="aircomimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.forcedAirCompressor') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- ATB启动 -->
|
||||
<div id="atb" class="panebutton" style="top:3%;left:42%;" @tap="atbclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div>
|
||||
</div>
|
||||
<!-- BM/CBTC -->
|
||||
<div id="bmcbtc" class="panebutton" style="top:3%;left:56%;" @tap="bmcbtcclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">BM/CBTC</div>
|
||||
</div>
|
||||
<!-- RM -->
|
||||
<div id="rm" class="panebutton" style="top:3%;left:70%;" @tap="rmclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">RM</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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.forcedRelieve') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- 关左门 -->
|
||||
<div id="dlclose" class="panebutton" style="bottom:3%;left:3%;" @tap="dlcclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div>
|
||||
</div>
|
||||
<!-- 开左门A -->
|
||||
<div id="dlopen" class="panebutton" style="bottom:3%;left:14%;" @tap="dloclick">
|
||||
<img class="buttonimg" :src="redimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- ATO启动A -->
|
||||
<div id="atoa" class="panebutton" style="bottom:3%;left:42%;" @tap="atoaclick">
|
||||
<img class="buttonimg" :src="apoimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- cbtc -->
|
||||
<div id="cbtc" class="panebutton" style="bottom:3%;left:70%;" @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>
|
||||
|
@ -6,17 +6,17 @@
|
||||
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div id="drclose" class="panebutton" style="bottom:1%;left:41%;" @tap="drcclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.closeRightDoor') }}</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="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>
|
||||
@ -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:23px;left:50px;">{{ $t('jlmap3d.highSpeed') }}</div>
|
||||
<div class="buttontext2">{{ $t('jlmap3d.wiperSwitch') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<div id="urgestop" class="panebutton" style="top:1%;left:1%;">
|
||||
<img class="buttonimg" :src="urgestopimg" />
|
||||
@ -47,14 +47,14 @@
|
||||
<div class="buttontext2">{{ $t('jlmap3d.doorSideChoose') }}</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="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:5px;left:33px;">AM</div>
|
||||
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">MM</div>
|
||||
<div class="buttontext2">{{ $t('jlmap3d.doorModel') }}</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
@ -1,10 +1,50 @@
|
||||
<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="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="buttontext2">{{ $t('jlmap3d.roomLightingControl') }}</div>
|
||||
</div>
|
||||
@ -12,15 +52,15 @@
|
||||
<div id="siv" class="panebutton2" style="top:1%;left:20%;">
|
||||
<img class="buttonimg2" :src="zuoimg" />
|
||||
<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="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="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="buttontext2">{{ $t('jlmap3d.driverRoomLights') }}</div>
|
||||
</div>
|
||||
@ -28,41 +68,63 @@
|
||||
<div id="headlight" class="panebutton2" style="top:1%;left:60%;">
|
||||
<img class="buttonimg2" :src="zuoimg" />
|
||||
<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:25px;left:50px">{{ $t('jlmap3d.distanceLight') }}</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" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.electricGongSheng') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="jg" class="panebutton" style="bottom:1%;left:20%;" @tap="jgclick">
|
||||
</div> -->
|
||||
<!-- 受电弓降 -->
|
||||
<!-- <div id="jg" class="panebutton" style="bottom:6%;left:17%;" @tap="jgclick">
|
||||
<img class="buttonimg" :src="jgimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.pantographFall') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="sl" class="panebutton" style="bottom:1%;left:40%;" @tap="slclick">
|
||||
</div> -->
|
||||
<!-- 试灯按钮 -->
|
||||
<!-- <div id="sl" class="panebutton" style="bottom:6%;left:40%;" @tap="slclick">
|
||||
<img class="buttonimg" :src="slimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.lampButton') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="atp" class="panebutton" style="bottom:1%;left:60%;" @tap="atpclick">
|
||||
</div> -->
|
||||
<!-- ATP切除 -->
|
||||
<div id="atp" class="panebutton" style="bottom:6%;left:31%;" @tap="atpclick">
|
||||
<img class="buttonimg" :src="atpimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.removalATP') }}</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="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: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="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 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>
|
||||
|
||||
</template>
|
||||
@ -80,7 +142,7 @@
|
||||
return {
|
||||
move:0,
|
||||
movex:"20%",
|
||||
apoimg:"",
|
||||
apoimg:"/static/jl3d/control/green.png",
|
||||
sgimg:"/static/jl3d/control/redz.png",
|
||||
jgimg:"/static/jl3d/control/greenz.png",
|
||||
atpimg:"/static/jl3d/control/atp.png",
|
||||
@ -88,6 +150,25 @@
|
||||
zuoimg:"/static/jl3d/control/zuo.png",
|
||||
niuimg:"/static/jl3d/control/niu.png",
|
||||
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: {
|
||||
|
@ -394,7 +394,7 @@ export default {
|
||||
height:333px;
|
||||
background: black;
|
||||
position:absolute;
|
||||
bottom:160px;
|
||||
bottom:0;
|
||||
}
|
||||
.meter{
|
||||
width:60%;
|
||||
|
@ -47,7 +47,7 @@ export default {
|
||||
background-size:100% 100%;
|
||||
background-image:url('/static/jl3d/tms.png');
|
||||
position:absolute;
|
||||
bottom:160px;
|
||||
bottom:0;
|
||||
right:0;
|
||||
}
|
||||
|
||||
|
183
src/views/newMap/jointTrainingNew/chatBox.vue
Normal file
183
src/views/newMap/jointTrainingNew/chatBox.vue
Normal 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>
|
@ -1,5 +1,63 @@
|
||||
<template>
|
||||
<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'}">
|
||||
<el-button-group>
|
||||
<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="danger" :disabled="!isDisable" @click="end">{{ $t('joinTraining.exitPlan') }}</el-button>
|
||||
</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>
|
||||
</div>
|
||||
<qr-code ref="qrCode" />
|
||||
@ -19,6 +77,9 @@
|
||||
|
||||
<script>
|
||||
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 { ranAsPlan, exitRunPlan } from '@/api/simulation';
|
||||
import { exitFullscreen } from '@/utils/screen';
|
||||
@ -30,6 +91,9 @@ import RealDevice from './menuDraft/realDevice';
|
||||
export default {
|
||||
name: 'MenuDemonJoint',
|
||||
components: {
|
||||
// ChartView,
|
||||
// ChartWindow,
|
||||
ChatBox,
|
||||
QrCode,
|
||||
SetTime,
|
||||
RealDevice
|
||||
@ -53,6 +117,7 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
isDisable: false,
|
||||
backLoading:false,
|
||||
timeNow: 0,
|
||||
remainingTime: 0,
|
||||
recordStep: 'BGSetting',
|
||||
@ -69,7 +134,7 @@ export default {
|
||||
activeName2: 'second',
|
||||
stationList: [],
|
||||
stationLists: [],
|
||||
minimize: false
|
||||
minimize: true
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -115,6 +180,7 @@ export default {
|
||||
},
|
||||
async mounted() {
|
||||
this.userId = this.$store.state.user.id;
|
||||
this.backLoading = false;
|
||||
await this.initLoadPage();
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -151,35 +217,29 @@ export default {
|
||||
}
|
||||
this.activeName = active;
|
||||
},
|
||||
handleMinimality(data) {
|
||||
if (data == 'min') {
|
||||
this.minimize = true;
|
||||
} else {
|
||||
this.minimize = false;
|
||||
}
|
||||
},
|
||||
handleChatShow(data) {
|
||||
if (!this.minimize) { // 最大化状态
|
||||
if (this.activeName == 'first') {
|
||||
this.$refs.chatView.select(data.id);
|
||||
this.chatShow = false;
|
||||
this.isShowAuto = false;
|
||||
this.$refs.chat.handleTextList(data.conversationId);
|
||||
} else {
|
||||
this.activeName = 'first';
|
||||
this.handleChatShow(data);
|
||||
}
|
||||
} else { // 最小化状态
|
||||
this.minimize = false;
|
||||
this.handleChatShow(data);
|
||||
}
|
||||
},
|
||||
|
||||
// handleChatShow(data) {
|
||||
// if (!this.minimize) { // 最大化状态
|
||||
// if (this.activeName == 'first') {
|
||||
// this.$refs.chatView.select(data.id);
|
||||
// this.chatShow = false;
|
||||
// this.isShowAuto = false;
|
||||
// this.$refs.chat.handleTextList(data.conversationId);
|
||||
// } else {
|
||||
// this.activeName = 'first';
|
||||
// this.handleChatShow(data);
|
||||
// }
|
||||
// } else { // 最小化状态
|
||||
// this.minimize = false;
|
||||
// this.handleChatShow(data);
|
||||
// }
|
||||
// },
|
||||
// 切到未读消息并说话
|
||||
showChatSpeak(data) {
|
||||
this.chatShow = false;
|
||||
this.isShowAuto = false;
|
||||
this.$refs.chat.handleTextList(data.conversationId);
|
||||
},
|
||||
// showChatSpeak(data) {
|
||||
// this.chatShow = false;
|
||||
// this.isShowAuto = false;
|
||||
// this.$refs.chat.handleTextList(data.conversationId);
|
||||
// },
|
||||
// 获取历史纪录list
|
||||
showChat(obj) {
|
||||
this.chatShow = false;
|
||||
@ -327,9 +387,11 @@ export default {
|
||||
},
|
||||
back() {
|
||||
this.$store.dispatch('training/over').then(() => {
|
||||
this.backLoading = true;
|
||||
putJointTrainingSimulationUserNew(this.group).then(() => {
|
||||
this.$router.replace({ path: `/trainroom`, query: { lineCode: this.lineCode, group: this.group, drawWay: true } });
|
||||
exitFullscreen();
|
||||
this.backLoading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
@ -374,12 +436,6 @@ export default {
|
||||
color: #409EFF;
|
||||
}
|
||||
|
||||
.minimality {
|
||||
float: right;
|
||||
line-height: 40px;
|
||||
margin-right: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.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 {
|
||||
position: absolute;
|
||||
float: right;
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 211 KiB After Width: | Height: | Size: 6.7 KiB |
BIN
static/jl3d/control/scene1.png
Normal file
BIN
static/jl3d/control/scene1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 211 KiB |
Loading…
Reference in New Issue
Block a user