修改三维列车驾驶
@ -76,8 +76,8 @@ export default {
|
||||
open: '开',
|
||||
front: '前',
|
||||
later: '后',
|
||||
electricGongSheng: '受电弓升',
|
||||
pantographFall: '受电弓降',
|
||||
electricGongSheng: '升弓',
|
||||
pantographFall: '降弓',
|
||||
lampButton: '试灯按钮',
|
||||
removalATP: 'ATP切除',
|
||||
infliction: '施加',
|
||||
|
@ -146,3 +146,11 @@ export function trainSimulationDoorMode(group, data) {
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
export function trainSimulationCommand(group,data,operate) {
|
||||
return request({
|
||||
url: `/simulation/${group}/operate/${operate}`,
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
@ -1006,7 +1006,7 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,dri
|
||||
}
|
||||
function signalupdate(data) {
|
||||
code = data.code;
|
||||
console.log(data);
|
||||
|
||||
if(data.command == 'No'){
|
||||
signallist.list[code].mesh.getObjectByName("red").material.map = materials["black"];
|
||||
signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true;
|
||||
|
@ -183,7 +183,8 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
||||
updatePlayer( deltaTime );
|
||||
|
||||
updateSpheres( deltaTime );
|
||||
|
||||
// console.log(scope.eventHitMode);
|
||||
// console.log(roleMode);
|
||||
if(scope.eventHitMode == true && roleMode){
|
||||
if(eventBoxs.length>0){
|
||||
attachBox.position.copy(fpsCamera.position);
|
||||
@ -268,9 +269,9 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
||||
document.addEventListener( 'mousedown', (event) => {
|
||||
fpsMouseStatus = true;
|
||||
// document.body.requestPointerLock();
|
||||
// console.log("mousedown-----------------------");
|
||||
// console.log(raycasterBoxs);
|
||||
// console.log(roleMode);
|
||||
console.log("mousedown-----------------------");
|
||||
console.log(raycasterBoxs);
|
||||
console.log(roleMode);
|
||||
|
||||
if(raycasterBoxs.length>0 && roleMode){
|
||||
var mouse = new THREE.Vector2();
|
||||
@ -328,7 +329,7 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
|
||||
if(intersects.length>0){
|
||||
|
||||
jl3dZzwwTrainTestUpdate(intersects[0].object.name);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -415,7 +415,7 @@ export function ZzwwTrain() {
|
||||
text:"",
|
||||
devices:[
|
||||
{
|
||||
id:"GWS",
|
||||
id:"GWX",
|
||||
name:"钩尾销",
|
||||
color:"#ff0000",
|
||||
status:"",
|
||||
|
@ -17,6 +17,9 @@ const Jlmap3dLesson3dEdit = () => import('@/views/jlmap3d/lesson3dedit/lesson3de
|
||||
const Jlmap3dLesson3dPlayer = () => import('@/views/jlmap3d/lesson3dplayer/lesson3dplayer');
|
||||
const Jlmap3dLesson3dSelect = () => import('@/views/jlmap3d/lesson3dplayer/lesson3dselect');
|
||||
|
||||
const Jlmap3dZzwwTest = () => import('@/views/jlmap3d/zzwwtest/zzwwtest');
|
||||
|
||||
|
||||
const Jlmap3d = () => import('@/views/jlmap3d/drive/jl3ddrive');
|
||||
const Jlmap3dSandbox = () => import('@/views/jlmap3d/simulation/jl3dsimulation');
|
||||
const Jlmap3dPassFlow = () => import('@/views/jlmap3d/passflow/jl3dpassflow');
|
||||
@ -296,6 +299,12 @@ export const constantRoutes = [
|
||||
component: Jlmap3dLesson3dSelect,
|
||||
hidden: true
|
||||
},
|
||||
{
|
||||
path: '/jlmap3d/zzwwtest',
|
||||
component: Jlmap3dZzwwTest,
|
||||
hidden: true
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
path: '/data2json',
|
||||
|
@ -2,10 +2,10 @@ export function getBaseUrl() {
|
||||
let BASE_API;
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
// BASE_API = 'https://joylink.club/jlcloud';
|
||||
BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'http://192.168.8.152:9000'; // 袁琪
|
||||
// BASE_API = 'http://192.168.8.177:9000'; // 旭强
|
||||
// BASE_API = 'http://192.168.2.183:9000'; // 张赛
|
||||
BASE_API = 'http://192.168.8.109:9000'; // 张赛
|
||||
// BASE_API = 'http://192.168.8.140:9000'; // 杜康
|
||||
// BASE_API = 'http://b29z135112.zicp.vip';
|
||||
// BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康
|
||||
|
@ -1,19 +1,21 @@
|
||||
<template>
|
||||
<div style="width:100%;height:50%;position:absolute;bottom:4%">
|
||||
<div id="start" class="panebutton2" style="bottom:1%;left:5%;" >
|
||||
<div style="width:100%;height:50%;position:absolute;bottom:4%;z-index:3;">
|
||||
<!-- <div id="start" class="panebutton2" style="bottom:1%;left:5%;" >
|
||||
<img class="buttonimg2" :src="start" />
|
||||
</div> -->
|
||||
|
||||
<div id="direct" class="directpanediv" style="bottom:1%;right:10px;">
|
||||
<img class="directimg" :src="direct" />
|
||||
<img id="directimg" class="directimg" :src="directoffpng" :style="{transform:toutransform}" />
|
||||
<div class="directbutton" style="top:55px;left:-5px;" @click="directSelect('0')">后退</div>
|
||||
<div class="directbutton" style="top:28px;left:1px;"@click="directSelect('1')">断开</div>
|
||||
<div class="directbutton" style="top:8px;left:20px;"@click="directSelect('2')">洗车</div>
|
||||
<div class="directbutton" style="top:0px;left:50px;"@click="directSelect('3')">手动</div>
|
||||
<div class="directbutton" style="top:5px;left:80px;"@click="directSelect('4')">ATO</div>
|
||||
</div>
|
||||
|
||||
<div id="direct" class="panebutton2" style="bottom:1%;left:25%;">
|
||||
<img class="buttonimg2" :src="direct" />
|
||||
<img id="directimg" class="buttonimg2" :src="directoffpng" :style="{transform:toutransform}" @mousedown="touchstart" />
|
||||
<div class="directbutton" style="top:0px;right:0;">{{ $t('jlmap3d.front') }}</div>
|
||||
<div class="directbutton" style="top:18px;right:0;">0</div>
|
||||
<div class="directbutton" style="top:36px;right:0;">{{ $t('jlmap3d.later') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="div1" class ="pane-box" >
|
||||
<img class="paneimg" :src="pane" @mouseout="speedout"/>
|
||||
<div id="div1" class ="pane-box" @mouseleave="speedout" >
|
||||
<img class="paneimg" :src="pane" />
|
||||
<div class="panelb" :style="{right: isZh? '80px': '80px', top: isZh? '0px': '0px'}">{{ $t('jlmap3d.traction') }}</div>
|
||||
<div class="panelb" :style="{right: isZh? '80px': '80px', top: '70px'}">0</div>
|
||||
<div class="panelb" :style="{right: isZh? '80px': '80px', top: isZh? '130px': '130px'}">{{ $t('jlmap3d.braking') }}</div>
|
||||
@ -51,7 +53,7 @@
|
||||
apoimg:"",
|
||||
touchcontrol:true,
|
||||
touchstate:"Neutral",
|
||||
toutransform:"rotate(175deg)",
|
||||
toutransform:"rotate(300deg)",
|
||||
start:JL3D_LOCAL_STATIC+"/jl3d/control/start.png",
|
||||
direct:JL3D_LOCAL_STATIC+"/jl3d/control/direct.png",
|
||||
directz:JL3D_LOCAL_STATIC+"/jl3d/control/directfront.png",
|
||||
@ -144,12 +146,17 @@
|
||||
methods: {
|
||||
centerstate : function(gear){
|
||||
this.touchstate = gear;
|
||||
if(this.touchstate == "Drive"){
|
||||
this.toutransform = "rotate(140deg)";
|
||||
}else if(this.touchstate == "Neutral"){
|
||||
this.toutransform = "rotate(175deg)";
|
||||
}else if(this.touchstate == "Reverse"){
|
||||
this.toutransform = "rotate(205deg)";
|
||||
console.log(gear);
|
||||
if(this.touchstate == "ATO"){
|
||||
this.toutransform = "rotate(30deg)";
|
||||
}else if(this.touchstate == "MANUAL"){
|
||||
this.toutransform = "rotate(360deg)";
|
||||
}else if(this.touchstate == "WASH"){
|
||||
this.toutransform = "rotate(330deg)";
|
||||
}else if(this.touchstate == "DISCONNECT"){
|
||||
this.toutransform = "rotate(300deg)";
|
||||
}else if(this.touchstate == "REVERSE"){
|
||||
this.toutransform = "rotate(270deg)";
|
||||
}
|
||||
},
|
||||
centercontrol : function(){
|
||||
@ -200,9 +207,9 @@
|
||||
speedchange: function(event){
|
||||
this.moveheight = event.pageY-this.movelimit.y;
|
||||
this.movex = this.moveheight-7 +"px";
|
||||
// if(this.atostate == true){
|
||||
// this.$store.dispatch('app/setAtoState', false);
|
||||
// }
|
||||
if(this.atostate == true){
|
||||
this.$store.dispatch('app/setAtoState', false);
|
||||
}
|
||||
if(this.moveheight<=1){
|
||||
this.moveheight=1;
|
||||
this.movex=-6+"px";
|
||||
@ -242,13 +249,14 @@
|
||||
console.log(error);
|
||||
})
|
||||
,200,true);
|
||||
// updatemmic1(this.move);
|
||||
updatemmic1(this.move);
|
||||
},
|
||||
speedend: function(event){
|
||||
document.getElementById("div1").onmousemove = null;
|
||||
document.getElementById("div2").onmouseup = null;
|
||||
},
|
||||
speedout: function(event){
|
||||
// console.log("out");
|
||||
document.getElementById("div1").onmousemove = null;
|
||||
document.getElementById("div2").onmouseup = null;
|
||||
},
|
||||
@ -261,119 +269,39 @@
|
||||
this.iconrotate=0;
|
||||
}
|
||||
},
|
||||
touchstart:function(e){
|
||||
|
||||
|
||||
let domoffset = document.getElementById("directimg").getBoundingClientRect();
|
||||
// movelimit
|
||||
this.angleoffset.x = domoffset.x;
|
||||
this.angleoffset.y = domoffset.y;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
document.getElementById("directimg").onmousemove = this.touchmove;
|
||||
document.getElementById("directimg").onmouseup = this.touchend;
|
||||
|
||||
|
||||
},
|
||||
touchmove:function(e){//finger move 触发
|
||||
// console.log(e);
|
||||
this.getAngle(e.pageX-this.angleoffset.x ,e.pageY-this.angleoffset.y);
|
||||
},
|
||||
touchend:function(e){
|
||||
document.getElementById("directimg").onmousemove = null;
|
||||
document.getElementById("directimg").onmouseup = null;
|
||||
},
|
||||
getAngle:function(mx,my){
|
||||
//圆心坐标
|
||||
// console.log(mx);
|
||||
// console.log(my);
|
||||
let px=30;
|
||||
let py=30;
|
||||
let x = Math.abs(px-mx);
|
||||
let y = Math.abs(py-my);
|
||||
let z = Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
|
||||
let cos = y/z;
|
||||
let radina = Math.acos(cos);//用反三角函数求弧度
|
||||
let angle = Math.floor(180/(Math.PI/radina));//将弧度转换成角度
|
||||
|
||||
if(mx>px&&my>py){//鼠标在第四象限
|
||||
angle = 180 - angle;
|
||||
directSelect:function(type){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
gear:"Neutral"
|
||||
};
|
||||
let directAngle = "";
|
||||
if(type == "0"){
|
||||
directAngle = "rotate(270deg)";
|
||||
data.gear = "REVERSE";
|
||||
}
|
||||
|
||||
if(mx==px&&my>py){//鼠标在y轴负方向上
|
||||
angle = 180;
|
||||
if(type == "1"){
|
||||
directAngle = "rotate(300deg)";
|
||||
data.gear = "DISCONNECT";
|
||||
}
|
||||
|
||||
if(mx>px&&my==py){//鼠标在x轴正方向上
|
||||
angle = 90;
|
||||
if(type == "2"){
|
||||
directAngle = "rotate(330deg)";
|
||||
data.gear = "WASH";
|
||||
}
|
||||
|
||||
if(mx<px&&my>py){//鼠标在第三象限
|
||||
angle = 180+angle;
|
||||
if(type == "3"){
|
||||
directAngle = "rotate(360deg)";
|
||||
data.gear = "MANUAL";
|
||||
}
|
||||
|
||||
if(mx<px&&my==py){//鼠标在x轴负方向
|
||||
angle = 270;
|
||||
if(type == "4"){
|
||||
directAngle = "rotate(30deg)";
|
||||
data.gear = "ATO";
|
||||
}
|
||||
|
||||
if(mx<px&&my<py){//鼠标在第二象限
|
||||
angle = 360 - angle;
|
||||
}
|
||||
// console.log(angle);
|
||||
// console.log(this.userRole );
|
||||
if(angle<127 && angle>46){
|
||||
if(angle<63 && angle>46){
|
||||
if(this.touchstate != "Drive"){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
gear:"Drive"
|
||||
};
|
||||
trainSimulationGear(this.group,data).then(netdata => {
|
||||
// console.log(netdata);
|
||||
if(netdata.code == "200"){
|
||||
this.toutransform = "rotate(140deg)";
|
||||
this.touchstate = "Drive";
|
||||
document.getElementById("directimg").onmousemove = null;
|
||||
document.getElementById("directimg").onmouseup = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}else if(angle<93 && angle>68){
|
||||
if(this.touchstate != "Neutral"){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
gear:"Neutral"
|
||||
};
|
||||
trainSimulationGear(this.group,data).then(netdata => {
|
||||
if(netdata.code == "200"){
|
||||
this.toutransform = "rotate(175deg)";
|
||||
this.touchstate = "Neutral";
|
||||
document.getElementById("directimg").onmousemove = null;
|
||||
document.getElementById("directimg").onmouseup = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}else if(angle<127 && angle>101){
|
||||
if(this.touchstate != "Reverse"){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
gear:"Reverse"
|
||||
};
|
||||
trainSimulationGear(this.group,data).then(netdata => {
|
||||
if(netdata.code == "200"){
|
||||
this.toutransform = "rotate(205deg)";
|
||||
this.touchstate = "Reverse";
|
||||
document.getElementById("directimg").onmousemove = null;
|
||||
document.getElementById("directimg").onmouseup = null;
|
||||
}
|
||||
});
|
||||
}
|
||||
trainSimulationGear(this.group,data).then(netdata => {
|
||||
if(netdata.code == "200"){
|
||||
this.toutransform = directAngle;
|
||||
this.touchstate = data.gear;
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
},
|
||||
@ -382,7 +310,7 @@
|
||||
|
||||
<style >
|
||||
.pane-box{
|
||||
right: 30px;
|
||||
left: 230px;
|
||||
top: 0px;
|
||||
width:120px;
|
||||
height:160px;
|
||||
@ -429,4 +357,17 @@
|
||||
position:absolute;
|
||||
}
|
||||
|
||||
.directpanediv{
|
||||
width:120px;
|
||||
height:120px;
|
||||
position:absolute;
|
||||
}
|
||||
.directimg{
|
||||
top:10px;
|
||||
left:10px;
|
||||
position: absolute;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -2,27 +2,15 @@
|
||||
<div class="drivepane" :style="{'background-image': 'url('+localStatic+'/jl3d/control/scene.png)'}">
|
||||
|
||||
|
||||
<div style="position: absolute;right:50%;top:50%;z-index:10;background: #EBEBEB;" v-show="tuoguanbutton" @click="tuoguan">{{ tuoguanbuttonmsg }}</div>
|
||||
<div style="position: absolute;right:50%;top:60%;z-index:10;background: #EBEBEB;" v-show="isTraining" >
|
||||
<el-select v-model="value" :placeholder="initMsg" @change="currentsel" @visible-change="clickselect" >
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:disabled="item.disabled"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<Centerc-Pane ref="centercontrol" :group-num="groupnum" :user-role="userrole" />
|
||||
|
||||
<Centerc-Pane ref="centercontrol" :group-num="groupNum" :user-role="userRole" />
|
||||
|
||||
<!-- <Left-Pane ref="leftcontrol" /> -->
|
||||
|
||||
<!-- <Right-Pane ref="rightcontrol" /> -->
|
||||
|
||||
<TopRight-Pane ref="topcontrol" :group-num="groupnum" />
|
||||
<TopRight-Pane ref="topcontrol" :group-num="groupNum" />
|
||||
|
||||
|
||||
|
||||
@ -56,8 +44,7 @@
|
||||
import RightPane from '@/views/jlmap3d/drive/drivecontrol/rightpane';
|
||||
import TopRightPane from '@/views/jlmap3d/drive/drivecontrol/toprightpane';
|
||||
|
||||
import { bindSimulationTrain,getSimulationTrainlistNew,getSimulationMembersNew,trainSimulationEb,trainSimulationForce,trainSimulationGear} from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js';
|
||||
import { getSimulationInfoNew } from '@/api/simulation';
|
||||
|
||||
import { tuoguan3ddrive } from '@/api/jlmap3d/load3ddata';
|
||||
|
||||
|
||||
@ -70,24 +57,23 @@ import axios from 'axios';
|
||||
RightPane,
|
||||
TopRightPane,
|
||||
},
|
||||
props: {
|
||||
groupNum: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
userRole: {
|
||||
type: String,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
isTraining:true,
|
||||
localStatic:JL3D_LOCAL_STATIC,
|
||||
options: [],
|
||||
initMsg:"请选择列车",
|
||||
value: '',
|
||||
teststomp:null,
|
||||
topid:null,
|
||||
trainlist:null,
|
||||
groupnum:"",
|
||||
userrole:'',
|
||||
nowdrive:null,
|
||||
|
||||
tuoguanbutton:false,
|
||||
tuoguanbuttonmsg:"托管",
|
||||
tuoguanstatus:false,
|
||||
|
||||
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@ -107,267 +93,21 @@ import axios from 'axios';
|
||||
|
||||
},
|
||||
computed: {
|
||||
group() {
|
||||
return this.$route.query.group;
|
||||
},
|
||||
userId() {
|
||||
return this.$store.state.user ? this.$store.state.user.id : '';
|
||||
},
|
||||
|
||||
},
|
||||
async mounted() {
|
||||
if(this.$route.query.group){
|
||||
getSimulationInfoNew(this.$route.query.group).then(netdata => {
|
||||
|
||||
if(netdata.data.type == "SCRIPT_MAKING"){
|
||||
this.tuoguanbutton = true;
|
||||
}
|
||||
this.inittrainlist();
|
||||
});
|
||||
}
|
||||
|
||||
window.updateDriverTrust = this.updateDriverTrust;
|
||||
window.updateDriveValue = this.updateDriveValue;
|
||||
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
},
|
||||
methods: {
|
||||
changeTrainSelect(mode){
|
||||
if(mode == "isTraining"){
|
||||
// this.isTraining = false;
|
||||
}
|
||||
|
||||
centerstate : function(gear){
|
||||
|
||||
this.$refs.centercontrol.centerstate(gear);
|
||||
},
|
||||
currentsel(selVal){
|
||||
let oldgroupnum = this.groupnum;
|
||||
this.groupnum = selVal;
|
||||
bindSimulationTrain(this.group,this.groupnum).then(netdata => {
|
||||
this.selVal = selVal;
|
||||
this.dialogVisible = true;
|
||||
// this.groupnum = selVal;
|
||||
for(let i=0;i<this.trainlist.length;i++){
|
||||
if(this.trainlist[i].groupNumber == this.groupnum){
|
||||
// console.log(this.trainlist[i].gear);
|
||||
// this.groupnum
|
||||
this.$refs.centercontrol.centerstate(this.trainlist[i].gear);
|
||||
}
|
||||
}
|
||||
|
||||
this.nowdrive = this.groupnum;
|
||||
}).catch(error => {
|
||||
this.groupnum = oldgroupnum;
|
||||
this.selVal = oldgroupnum;
|
||||
this.$emit('warningmsg',error.message);
|
||||
this.value = this.nowdrive;
|
||||
});
|
||||
},
|
||||
clickselect(e){
|
||||
if(e == true){
|
||||
|
||||
this.updatetrainlist();
|
||||
}
|
||||
},
|
||||
tuoguan(){
|
||||
let posttrust = null;
|
||||
if(this.tuoguanstatus){
|
||||
posttrust = false;
|
||||
}else{
|
||||
posttrust = true;
|
||||
}
|
||||
|
||||
tuoguan3ddrive(this.$route.query.group,{}).then(netdata => {
|
||||
// this.$store.dispatch('training/updateMemberListInScript', {oldMemberId:this.oldMemberId, newMemberId:role, userId:this.userId});
|
||||
this.tuoguanstatus = posttrust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}).catch((error) => {
|
||||
|
||||
});
|
||||
},
|
||||
updateDriverTrust(code,trustStatus){
|
||||
if(this.tuoguanstatus != trustStatus){
|
||||
this.tuoguanstatus = trustStatus;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
this.$store.dispatch('training/updateMemberTrust', {deviceCode:code,trust:trustStatus});
|
||||
}
|
||||
},
|
||||
inittrainlist(){
|
||||
getSimulationTrainlistNew(this.group).then(netdata => {
|
||||
this.options = [];
|
||||
this.trainlist = netdata.data;
|
||||
for(let i=0;i<netdata.data.length;i++){
|
||||
let option= {
|
||||
value: netdata.data[i].groupNumber,
|
||||
label: netdata.data[i].groupNumber,
|
||||
name:null,
|
||||
}
|
||||
option.disabled = false;
|
||||
|
||||
if(netdata.data[i].name){
|
||||
option.label = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.initMsg = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.groupNumber = netdata.data[i].groupNumber;
|
||||
option.disabled = true;
|
||||
}
|
||||
|
||||
|
||||
if(netdata.data[i].driverId){
|
||||
if(netdata.data[i].driverId == this.userId){
|
||||
|
||||
this.selVal = netdata.data[i].groupNumber;
|
||||
this.groupnum = netdata.data[i].groupNumber;
|
||||
this.dialogVisible = true;
|
||||
for(let i=0;i<this.trainlist.length;i++){
|
||||
if(this.trainlist[i].groupNumber == this.groupnum){
|
||||
// console.log(this.trainlist[i].gear);
|
||||
// this.groupnum
|
||||
this.$refs.centercontrol.centerstate(this.trainlist[i].gear);
|
||||
}
|
||||
}
|
||||
|
||||
this.value = this.groupnum;
|
||||
this.nowdrive = this.groupnum;
|
||||
// bindSimulationTrain(this.group,this.selVal).then(netdata => {
|
||||
//
|
||||
//
|
||||
// }).catch(error => {
|
||||
// });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.options.push(option);
|
||||
}
|
||||
this.options.sort(
|
||||
function(obj1,obj2) {
|
||||
let val1 = obj1.value;
|
||||
let val2 = obj2.value;
|
||||
return val1 - val2;
|
||||
}
|
||||
);
|
||||
});
|
||||
//获取当前录制托管状态
|
||||
if(this.tuoguanbutton == true){
|
||||
|
||||
let netdata = this.$store.state.training.memberData;
|
||||
for(let k in netdata){
|
||||
if(netdata[k].userId == this.userId){
|
||||
// console.log(this.$store.state.scriptRecord.type);
|
||||
this.userrole = netdata[k].type;
|
||||
if(netdata[k].trust){
|
||||
this.tuoguanstatus = netdata[k].trust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
updateDriveValue(newvalue){
|
||||
|
||||
if(newvalue != this.value){
|
||||
this.value = newvalue;
|
||||
this.groupnum = newvalue;
|
||||
}
|
||||
},
|
||||
updatetrainlist(){
|
||||
getSimulationTrainlistNew(this.group).then(netdata => {
|
||||
this.options = [];
|
||||
this.trainlist = netdata.data;
|
||||
for(let i=0;i<netdata.data.length;i++){
|
||||
let option= {
|
||||
value: netdata.data[i].groupNumber,
|
||||
label: netdata.data[i].groupNumber,
|
||||
name:null,
|
||||
}
|
||||
option.disabled = false;
|
||||
|
||||
if(netdata.data[i].name){
|
||||
option.label = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.initMsg = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.groupNumber = netdata.data[i].groupNumber;
|
||||
option.disabled = true;
|
||||
}
|
||||
if(netdata.data[i].driverId){
|
||||
if(netdata.data[i].driverId == this.userId){
|
||||
this.selVal = netdata.data[i].groupNumber;
|
||||
this.groupnum = netdata.data[i].groupNumber;
|
||||
}
|
||||
}
|
||||
this.options.push(option);
|
||||
}
|
||||
this.options.sort(
|
||||
function(obj1,obj2) {
|
||||
let val1 = obj1.value;
|
||||
let val2 = obj2.value;
|
||||
return val1 - val2;
|
||||
}
|
||||
);
|
||||
});
|
||||
//获取当前录制托管状态
|
||||
if(this.tuoguanbutton == true){
|
||||
|
||||
let netdata = this.$store.state.training.memberData;
|
||||
for(let k in netdata){
|
||||
if(netdata[k].userId == this.userId){
|
||||
// console.log(this.$store.state.scriptRecord.type);
|
||||
this.userrole = netdata[k].type;
|
||||
if(netdata[k].trust){
|
||||
this.tuoguanstatus = netdata[k].trust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
// getSimulationMembersNew(this.group).then(netdata => {
|
||||
|
||||
// for(let i=0,leni=netdata.data.length;i<leni;i++){
|
||||
// if(netdata.data[i].userId){
|
||||
// if(netdata.data[i].userId == this.userId){
|
||||
// this.userrole = netdata.data[i].role;
|
||||
// if(netdata.data[i].trust){
|
||||
// this.tuoguanstatus = netdata.data[i].trust;
|
||||
// if(this.tuoguanstatus){
|
||||
// this.tuoguanbuttonmsg = "取消托管";
|
||||
// }else{
|
||||
// this.tuoguanbuttonmsg = "托管";
|
||||
// }
|
||||
// }
|
||||
// i=leni;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// this.userrole = netdata.data.role;
|
||||
// if(netdata.data.trust){
|
||||
// this.tuoguanstatus = netdata.data.trust;
|
||||
// if(this.tuoguanstatus){
|
||||
// this.tuoguanbuttonmsg = "取消托管";
|
||||
// }else{
|
||||
// this.tuoguanbuttonmsg = "托管";
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
@ -1,442 +0,0 @@
|
||||
<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">
|
||||
<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">
|
||||
<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">
|
||||
<img class="buttonimg" :src="aircomimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.forcedAirCompressor') }}</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">
|
||||
<img class="buttonimg" :src="aircomimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.forcedRelieve') }}</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>
|
||||
<!-- 开左门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> -->
|
||||
<!-- 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>
|
||||
<!-- 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> -->
|
||||
<!-- 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>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import Vue from 'vue';
|
||||
// import { sendSimulationCommand } from '@/api/simulation.js';
|
||||
|
||||
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||
|
||||
export default {
|
||||
name: 'LeftPane',
|
||||
components: {
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
apoimg:JL3D_LOCAL_STATIC+"/jl3d/control/green.png",
|
||||
greenzimg:JL3D_LOCAL_STATIC+"/jl3d/control/greenz.png",
|
||||
redzimg:JL3D_LOCAL_STATIC+"/jl3d/control/redz.png",
|
||||
greenimg:JL3D_LOCAL_STATIC+"/jl3d/control/green.png",
|
||||
redimg:JL3D_LOCAL_STATIC+"/jl3d/control/red.png",
|
||||
greenlimg:JL3D_LOCAL_STATIC+"/jl3d/control/greenl.png",
|
||||
grayimg:JL3D_LOCAL_STATIC+"/jl3d/control/gray.png",
|
||||
zuoimg:JL3D_LOCAL_STATIC+"/jl3d/control/zuo.png",
|
||||
niuimg:JL3D_LOCAL_STATIC+"/jl3d/control/niu.png",
|
||||
aircomimg:JL3D_LOCAL_STATIC+"/jl3d/control/aircom.png",
|
||||
passlighttf:"rotate(0deg)",
|
||||
sivtf:"rotate(0deg)",
|
||||
driverlighttf:"rotate(0deg)",
|
||||
headlighttf:"rotate(0deg)",
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.app.atostate': function (val,newval) {
|
||||
if(val != newval){
|
||||
if(newval == true){
|
||||
this.apoimg = this.greenimg;
|
||||
this.$store.dispatch('app/setAtoState', false);
|
||||
}else{
|
||||
this.apoimg = this.greenlimg;
|
||||
this.$store.dispatch('app/setAtoState', true);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
group() {
|
||||
return this.$store.state.app.group;
|
||||
},
|
||||
code() {
|
||||
return this.$store.state.app.code;
|
||||
},
|
||||
traincode() {
|
||||
return this.$store.state.app.driverTrain;
|
||||
},
|
||||
movespeed() {
|
||||
return this.$store.state.app.movespeed;
|
||||
},
|
||||
drivedirect() {
|
||||
return this.$store.state.app.drivedirect;
|
||||
},
|
||||
atostate(){
|
||||
return this.$store.state.app.atostate;
|
||||
}
|
||||
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
leftstate : function(lefts){
|
||||
if(lefts.ato == true){
|
||||
this.apoimg = this.greenlimg;
|
||||
this.$store.dispatch('app/setAtoState', true);
|
||||
}else{
|
||||
this.apoimg = this.greenimg;
|
||||
this.$store.dispatch('app/setAtoState', false);
|
||||
|
||||
}
|
||||
},
|
||||
leftcontrol : function(){
|
||||
|
||||
},
|
||||
showmsg:function(data){
|
||||
wx.showToast({
|
||||
title: data,
|
||||
icon: 'loading',
|
||||
duration: 2000
|
||||
});
|
||||
},
|
||||
setData : function(){
|
||||
this.msgshow = false;
|
||||
},
|
||||
showcontrolmsg:function(data,callback){
|
||||
this.controlmsg = data;
|
||||
this.msgshow = true;
|
||||
|
||||
callback = callback || function(){
|
||||
this.setData();
|
||||
};
|
||||
setTimeout( callback.bind(this),2000);
|
||||
|
||||
},
|
||||
//左侧车门开
|
||||
dloclick: function (e){
|
||||
console.log(this.$t('jlmap3d.leftDoorOpen'));
|
||||
if(this.movespeed == 0){
|
||||
//this.showcontrolmsg("左侧车门开");
|
||||
this.controlsend(this.traincode,"603","07","");
|
||||
}
|
||||
},
|
||||
//左侧车门关
|
||||
dlcclick: function (e){
|
||||
console.log(this.$t('jlmap3d.leftDoorClose'));
|
||||
if(this.movespeed == 0){
|
||||
//this.showcontrolmsg("左侧车门关");
|
||||
this.controlsend(this.traincode,"605","07","");
|
||||
}
|
||||
},
|
||||
//断路器
|
||||
breakerclick: function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","breaker");
|
||||
},
|
||||
//洗车模式
|
||||
carwashclick: function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","carwash");
|
||||
},
|
||||
//空压机
|
||||
aircomclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","aircom");
|
||||
},
|
||||
//ATB
|
||||
atbclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","atb");
|
||||
},
|
||||
//BMCBTC
|
||||
bmcbtcclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","bm");
|
||||
},
|
||||
//RM
|
||||
rmclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","rm");
|
||||
},
|
||||
//强迫缓解
|
||||
relieveclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","relieve");
|
||||
},
|
||||
//ATOA
|
||||
atoaclick : function (e){
|
||||
//console.log("ato自动驾驶");
|
||||
if(this.movespeed == 0){
|
||||
if(this.drivedirect == "Drive"){
|
||||
this.controlsend(this.traincode,"601","07","");
|
||||
this.apoimg = this.greenlimg;
|
||||
this.showcontrolmsg(this.$t('jlmap3d.ATOStart'));
|
||||
this.$store.dispatch('app/setAtoState', true);
|
||||
}
|
||||
}
|
||||
},
|
||||
//ATOB
|
||||
atobclick : function (e){
|
||||
if(this.movespeed == 0){
|
||||
if(this.drivedirect == "Drive"){
|
||||
this.controlsend(this.traincode,"601","07","");
|
||||
this.apoimg = this.greenimg;
|
||||
this.showcontrolmsg(this.$t('jlmap3d.ATOStart'));
|
||||
this.$store.dispatch('app/setAtoState', true);
|
||||
}
|
||||
}
|
||||
},
|
||||
//CBTC
|
||||
cbtcclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","cbtc");
|
||||
},
|
||||
//电笛
|
||||
elfluteclick : function (e){
|
||||
Vue.prototype.$stomp.send("/app/topic/simulation/drive","elflute");
|
||||
},
|
||||
controlsend:function(traincode,operation,type,param){
|
||||
if(this.$store.state.app.userRole == "Driver"){
|
||||
let command ={
|
||||
code: traincode,
|
||||
operation: operation,
|
||||
type: type,
|
||||
param: param
|
||||
};
|
||||
// sendSimulationCommand(this.group,command);
|
||||
}else{
|
||||
|
||||
}
|
||||
},
|
||||
passlighttouchstart:function(e){
|
||||
// let command ={
|
||||
// code:this.traincode,
|
||||
// operation:"607",
|
||||
// type:"07",
|
||||
// param:""
|
||||
// };
|
||||
// command.param = this.touchstate;
|
||||
// sendSimulationCommand(this.group,command).then(netdata => {
|
||||
// if(netdata.data == true){
|
||||
this.touchcontrol = true;
|
||||
// }
|
||||
// });
|
||||
},
|
||||
passlighttouchmove:function(e){//finger move 触发
|
||||
if(this.touchcontrol == true){
|
||||
let px=75;
|
||||
let py=155;
|
||||
let angle = this.getAngle(px,py,e.changedTouches[0].clientX,e.changedTouches[0].clientY);
|
||||
if(angle<360 && angle>245){
|
||||
if(angle<327 && angle>245){
|
||||
this.passlighttf = "rotate(359deg)";
|
||||
}else if(angle<360 && angle>327){
|
||||
this.passlighttf = "rotate(90deg)";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
passlighttouchend:function(e){
|
||||
this.touchcontrol = false;
|
||||
},
|
||||
sivtouchstart:function(e){
|
||||
// let command ={
|
||||
// code:this.traincode,
|
||||
// operation:"607",
|
||||
// type:"07",
|
||||
// param:""
|
||||
// };
|
||||
// command.param = this.touchstate;
|
||||
// sendSimulationCommand(this.group,command).then(netdata => {
|
||||
// if(netdata.data == true){
|
||||
this.touchcontrol = true;
|
||||
// }
|
||||
// });
|
||||
},
|
||||
sivtouchmove:function(e){//finger move 触发
|
||||
if(this.touchcontrol == true){
|
||||
let px=75;
|
||||
let py=255;
|
||||
let angle = this.getAngle(px,py,e.changedTouches[0].clientX,e.changedTouches[0].clientY);
|
||||
if(angle<360 && angle>245){
|
||||
if(angle<327 && angle>245){
|
||||
this.sivtf = "rotate(359deg)";
|
||||
}else if(angle<360 && angle>327){
|
||||
this.sivtf = "rotate(90deg)";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
sivtouchend:function(e){
|
||||
this.touchcontrol = false;
|
||||
},
|
||||
driverlighttouchstart:function(e){
|
||||
// let command ={
|
||||
// code:this.traincode,
|
||||
// operation:"607",
|
||||
// type:"07",
|
||||
// param:""
|
||||
// };
|
||||
// command.param = this.touchstate;
|
||||
// sendSimulationCommand(this.group,command).then(netdata => {
|
||||
// if(netdata.data == true){
|
||||
this.touchcontrol = true;
|
||||
// }
|
||||
// });
|
||||
},
|
||||
driverlighttouchmove:function(e){//finger move 触发
|
||||
if(this.touchcontrol == true){
|
||||
let px=75;
|
||||
let py=355;
|
||||
let angle = this.getAngle(px,py,e.changedTouches[0].clientX,e.changedTouches[0].clientY);
|
||||
if(angle<360 && angle>245){
|
||||
if(angle<327 && angle>245){
|
||||
this.driverlighttf = "rotate(359deg)";
|
||||
}else if(angle<360 && angle>327){
|
||||
this.driverlighttf = "rotate(90deg)";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
driverlighttouchend:function(e){
|
||||
this.touchcontrol = false;
|
||||
},
|
||||
headlighttouchstart:function(e){
|
||||
// let command ={
|
||||
// code:this.traincode,
|
||||
// operation:"607",
|
||||
// type:"07",
|
||||
// param:""
|
||||
// };
|
||||
// command.param = this.touchstate;
|
||||
// sendSimulationCommand(this.group,command).then(netdata => {
|
||||
// if(netdata.data == true){
|
||||
this.touchcontrol = true;
|
||||
// }
|
||||
// });
|
||||
},
|
||||
headlighttouchmove:function(e){//finger move 触发
|
||||
if(this.touchcontrol == true){
|
||||
let px=75;
|
||||
let py=455;
|
||||
let angle = this.getAngle(px,py,e.changedTouches[0].clientX,e.changedTouches[0].clientY);
|
||||
if(angle<360 && angle>245){
|
||||
if(angle<295 && angle>245){
|
||||
this.headlighttf = "rotate(359deg)";
|
||||
}else if(angle<338 && angle>295){
|
||||
this.headlighttf = "rotate(405deg)";
|
||||
}else if(angle<360 && angle>338){
|
||||
this.headlighttf = "rotate(90deg)";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
headlighttouchend:function(e){
|
||||
this.touchcontrol = false;
|
||||
},
|
||||
getAngle:function(px,py,mx,my){
|
||||
//圆心坐标
|
||||
let x = Math.abs(px-mx);
|
||||
let y = Math.abs(py-my);
|
||||
let z = Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
|
||||
let cos = y/z;
|
||||
let radina = Math.acos(cos);//用反三角函数求弧度
|
||||
let angle = Math.floor(180/(Math.PI/radina));//将弧度转换成角度
|
||||
|
||||
if(mx>px&&my>py){//鼠标在第四象限
|
||||
angle = 180 - angle;
|
||||
}
|
||||
|
||||
if(mx==px&&my>py){//鼠标在y轴负方向上
|
||||
angle = 180;
|
||||
}
|
||||
|
||||
if(mx>px&&my==py){//鼠标在x轴正方向上
|
||||
angle = 90;
|
||||
}
|
||||
|
||||
if(mx<px&&my>py){//鼠标在第三象限
|
||||
angle = 180+angle;
|
||||
}
|
||||
|
||||
if(mx<px&&my==py){//鼠标在x轴负方向
|
||||
angle = 270;
|
||||
}
|
||||
|
||||
if(mx<px&&my<py){//鼠标在第二象限
|
||||
angle = 360 - angle;
|
||||
}
|
||||
return angle;
|
||||
},
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div style="width:100%;height:48%;position:absolute;top:0px;">
|
||||
<div style="width:100%;height:100%;position:absolute;top:0px;z-index:2;">
|
||||
<!-- ATB启动 -->
|
||||
<!-- <div id="atb" class="panebutton" style="top:8%;left:3%;" @click="atbclick">
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
@ -12,32 +12,48 @@
|
||||
<img class="buttonimg" :src="greenimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.ChangeHead') }}</div>
|
||||
</div>
|
||||
<!-- 紧急制动 -->
|
||||
<div id="urgestop" class="panebutton" style="top:8%;left:17%;" @click="ebstop">
|
||||
<img class="buttonimg" :style="urgestopStyle" :src="urgestopimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.emergencyBraking') }}</div>
|
||||
</div>
|
||||
|
||||
<!-- BM/CBTC -->
|
||||
|
||||
<div id="bmcbtc" class="panebutton" style="top:8%;left:17%;" @click="bmcbtcclick">
|
||||
<!-- <div id="bmcbtc" class="panebutton" style="top:8%;left:17%;" @click="bmcbtcclick">
|
||||
<img class="buttonimg" :src="cbtcbuttonimg" />
|
||||
<div class="buttontext">BM/CBTC</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- RM -->
|
||||
<div id="rm" class="panebutton" style="top:8%;left:31%;" @click="rmclick">
|
||||
<!-- <div id="rm" class="panebutton" style="top:8%;left:31%;" @click="rmclick">
|
||||
<img class="buttonimg" :src="rmbuttonimg" />
|
||||
<div class="buttontext">RM</div>
|
||||
</div> -->
|
||||
|
||||
|
||||
<!-- 模式升级 -->
|
||||
<div id="atoa" class="panebutton" style="top:8%;left:73%;" @click="modechange('up')">
|
||||
<img class="buttonimg" :src="otherbuttonimg" />
|
||||
<div class="buttontext">模式升级</div>
|
||||
</div>
|
||||
<!-- 关左门 -->
|
||||
<div id="dlclose" class="panebutton" style="top:8%;left:45%;" @click="dlcclick">
|
||||
<img class="buttonimg" :src="doorleftimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div>
|
||||
</div>
|
||||
<!-- 开左门A -->
|
||||
<div id="dlopen" class="panebutton" style="top:8%;left:59%;" @click="dloclick">
|
||||
<img class="buttonimg" :src="redimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
|
||||
|
||||
<!-- 模式降级 -->
|
||||
<div id="atoa" class="panebutton" style="top:8%;left:87%;" @click="modechange('down')">
|
||||
<img class="buttonimg" :src="otherbuttonimg" />
|
||||
<div class="buttontext">模式降级</div>
|
||||
</div>
|
||||
|
||||
<!-- ATO启动A -->
|
||||
<div id="atoa" class="panebutton" style="top:8%;left:73%;" @click="atoaclick">
|
||||
<div id="atoa" class="panebutton" style="top:28%;left:73%;" @click="atoaclick">
|
||||
<img class="buttonimg" :src="atobuttonimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.ATOStart') }}</div>
|
||||
</div>
|
||||
|
||||
<!-- 确认 -->
|
||||
<div id="atoa" class="panebutton" style="top:28%;left:87%;" @click="modeconfirm">
|
||||
<img class="buttonimg" :src="otherbuttonimg" />
|
||||
<div class="buttontext">确认</div>
|
||||
</div>
|
||||
<!-- cbtc -->
|
||||
<!-- <div id="cbtc" class="panebutton" style="top:8%;left:87%;" @click="cbtcclick">
|
||||
<img class="buttonimg" :src="cbtcbuttonimg" />
|
||||
@ -83,39 +99,41 @@
|
||||
</div> -->
|
||||
|
||||
<!-- 受电弓升 -->
|
||||
<div id="sg" class="panebutton" style="bottom:6%;left:3%;" @click="sgclink">
|
||||
<div id="sg" class="panebutton" style="top:28%;left:3%;" @click="sgclink">
|
||||
<img class="buttonimg" :src="sgimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.electricGongSheng') }}</div>
|
||||
</div>
|
||||
<!-- 受电弓降 -->
|
||||
<div id="jg" class="panebutton" style="bottom:6%;left:17%;" @click="jgclick">
|
||||
<div id="jg" class="panebutton" style="top:28%;left:17%;" @click="jgclick">
|
||||
<img class="buttonimg" :src="jgimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.pantographFall') }}</div>
|
||||
</div>
|
||||
<!-- 试灯按钮 -->
|
||||
<!-- <div id="sl" class="panebutton" style="bottom:6%;left:40%;" @click="slclick">
|
||||
<!-- <div id="sl" class="panebutton" style="top:28%;left:40%;" @click="slclick">
|
||||
<img class="buttonimg" :src="slimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.lampButton') }}</div>
|
||||
</div> -->
|
||||
|
||||
<!-- 关左门 -->
|
||||
<div id="dlclose" class="panebutton" style="top:50%;left:3%;" @click="dlcclick">
|
||||
<img class="buttonimg" :src="doorleftimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.closeLeftDoor') }}</div>
|
||||
</div>
|
||||
<!-- ATP切除 -->
|
||||
<div id="atp" class="panebutton" style="bottom:6%;left:31%;" @click="atpclick">
|
||||
<img class="buttonimg" :src="atpimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.removalATP') }}</div>
|
||||
<!-- 开左门A -->
|
||||
<div id="dlopen" class="panebutton" style="top:50%;left:17%;" @click="dloclick">
|
||||
<img class="buttonimg" :src="redimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openLeftDoor') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="dropen" class="panebutton" style="bottom:6%;left:45%;" @click="droclick">
|
||||
<div id="dropen" class="panebutton" style="top:72%;left:3%;" @click="droclick">
|
||||
<img class="buttonimg" :src="redlimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.openRightDoor') }}</div>
|
||||
</div>
|
||||
<div id="drclose" class="panebutton" style="bottom:6%;left:59%;" @click="drcclick">
|
||||
<div id="drclose" class="panebutton" style="top:72%;left:17%;" @click="drcclick">
|
||||
<img class="buttonimg" :src="doorrightimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.closeRightDoor') }}</div>
|
||||
</div>
|
||||
<div id="urgestop" class="panebutton" style="bottom:6%;left:73%;" @click="ebstop">
|
||||
<img class="buttonimg" :style="urgestopStyle" :src="urgestopimg" />
|
||||
<div class="buttontext">{{ $t('jlmap3d.emergencyBraking') }}</div>
|
||||
</div>
|
||||
<div id="doorpick" class="panebutton2" style="top:6%;left:85%;">
|
||||
<div id="doorpick" class="panebutton2" style="top:6%;left:31%;">
|
||||
<img class="buttonimg2" :src="zuoimg" @mouseout='doorModeOut'/>
|
||||
<img id="doormodeniu" class="buttonimg2" :src="niuimg" :style="{transform:doormodetou}" @mousedown='doormodetouchstart'/>
|
||||
<div class="tfbutton" style="font-size:8px;top:11px;left:18px;">AA</div>
|
||||
@ -124,7 +142,7 @@
|
||||
<div class="buttontext2">{{ $t('jlmap3d.doorModel') }}</div>
|
||||
</div>
|
||||
|
||||
<div id="doorpick" class="panebutton2" style="bottom:6%;left:85%;">
|
||||
<div id="doorpick" class="panebutton2" style="top:28%;left:31%;">
|
||||
<img class="buttonimg2" :src="zuoimg" @mouseout='doorSelectionOut'/>
|
||||
<img id="doorpickniu" class="buttonimg2" :src="niuimg" :style="{transform:doordirecttou}" @mousedown='doordirecttouchstart'/>
|
||||
<div class="tfbutton" style="font-size:8px;top:11px;left:18px;">{{ $t('jlmap3d.leftSide') }}</div>
|
||||
@ -144,12 +162,12 @@
|
||||
import {
|
||||
trainSimulationDriveMode,
|
||||
trainSimulationAto ,
|
||||
trainSimulationAtp,
|
||||
trainSimulationChangeHead,
|
||||
trainSimulationDoorControl,
|
||||
trainSimulationEb,
|
||||
trainSimulationDoorSelection,
|
||||
trainSimulationDoorMode
|
||||
trainSimulationDoorMode,
|
||||
trainSimulationCommand
|
||||
} from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js';
|
||||
|
||||
|
||||
@ -193,6 +211,7 @@
|
||||
driverlighttf:"rotate(0deg)",
|
||||
headlighttf:"rotate(0deg)",
|
||||
|
||||
otherbuttonimg:JL3D_LOCAL_STATIC+"/jl3d/control/green.png",
|
||||
// atoOn:null,
|
||||
atobuttonimg:JL3D_LOCAL_STATIC+"/jl3d/control/green.png",
|
||||
// driveMode:null,
|
||||
@ -425,16 +444,7 @@
|
||||
slclick: function (e){
|
||||
//console.log("试灯");
|
||||
},
|
||||
atpclick: function (e){
|
||||
//console.log("atp");
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
cutOff:true,
|
||||
};
|
||||
trainSimulationAtp(this.group,data).then(netdata => {
|
||||
// console.log(netdata);
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
atbclick: function (e){
|
||||
|
||||
@ -536,6 +546,27 @@
|
||||
// console.log(netdata);
|
||||
});
|
||||
},
|
||||
modechange: function (type){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
};
|
||||
if(type == "up"){
|
||||
trainSimulationCommand(this.group,data,"Driver_Preselection_Mode_Up").then(netdata => {});
|
||||
}
|
||||
if(type == "down"){
|
||||
trainSimulationCommand(this.group,data,"Driver_Preselection_Mode_Down").then(netdata => {});
|
||||
}
|
||||
},
|
||||
modeconfirm: function (){
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
};
|
||||
trainSimulationCommand(this.group,data,"Driver_Confirm").then(netdata => {
|
||||
// console.log(netdata);
|
||||
jl3dUpdateMmiMsg("");
|
||||
});
|
||||
},
|
||||
|
||||
cbtcclick: function (e){
|
||||
|
||||
},
|
||||
|
@ -103,7 +103,7 @@
|
||||
|
||||
<div id="doorpick" class="ebpanebutton2" style="top:33%;left:70%;">
|
||||
<img class="ebbuttonimg2" :src="zuoimg" />
|
||||
<img class="ebbuttonimg2" :src="niuimg"/>
|
||||
<img class="ebbuttonimg2" :src="niuimg" @click="atpclick"/>
|
||||
<div class="tfbutton" style="font-size:1px;top:13px;left:5px;">{{ $t('jlmap3d.leftSide') }}</div>
|
||||
<div class="tfbutton" style="font-size:1px;top:5px;left:33px;">{{ $t('jlmap3d.location0') }}</div>
|
||||
<div class="tfbutton" style="font-size:1px;top:13px;left:50px;">{{ $t('jlmap3d.rightSide') }}</div>
|
||||
@ -160,7 +160,9 @@
|
||||
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||
|
||||
import { EbUiData } from '@/views/jlmap3d/drive/equipbox/ebuidata';
|
||||
|
||||
import {
|
||||
trainSimulationAtp,
|
||||
} from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js';
|
||||
export default {
|
||||
name: 'EquipBox',
|
||||
components: {
|
||||
@ -215,7 +217,18 @@
|
||||
switchbt.statuspic = JL3D_LOCAL_STATIC+"/jl3d/equipbox/open2.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
atpclick: function (e){
|
||||
//console.log("atp");
|
||||
let data = {
|
||||
groupNumber:this.groupNum,
|
||||
cutOff:true,
|
||||
};
|
||||
trainSimulationAtp(this.group,data).then(netdata => {
|
||||
// console.log(netdata);
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
|
@ -2,6 +2,20 @@
|
||||
|
||||
<div id="drivediv" class="jalmap3ddiv" >
|
||||
|
||||
<div style="position: absolute;right:50%;top:40px;z-index:10;background: #EBEBEB;" v-show="tuoguanbutton" @click="tuoguan">{{ tuoguanbuttonmsg }}</div>
|
||||
<div style="position: absolute;right:50%;top:0%;z-index:10;background: #EBEBEB;" v-show="isTraining" >
|
||||
<el-select v-model="value" :placeholder="initMsg" @change="currentsel" @visible-change="clickselect" >
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:disabled="item.disabled"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
|
||||
<!-- <div class="trainstatus">
|
||||
{{$t('jlmap3d.trainGroupNumber')}}{{ trainnum }}</br>
|
||||
{{ stoptimes }}
|
||||
@ -36,7 +50,7 @@
|
||||
|
||||
<Drive-Mmi v-if="mmishow" ref="mmiui" />
|
||||
<Drive-Tms v-if="tmsshow" ref="tmsui"/>
|
||||
<Drive-Control v-if="dcontrolshow" ref="dcontrol" @warningmsg="warningmsg" @warningmsgoff="warningmsgoff" />
|
||||
<Drive-Control v-if="dcontrolshow" ref="dcontrol" :group-num="groupnum" :user-role="userrole"/>
|
||||
<Equip-Box v-if="equipboxshow" />
|
||||
</div>
|
||||
|
||||
@ -55,6 +69,8 @@ import { mapGetters } from 'vuex';
|
||||
import { simulationNotify, setTrainingCbtcInitTime } from '@/api/simulation';
|
||||
|
||||
import { getPublishMapDetail, getPublish3dMapDetail } from '@/api/jlmap3d/load3ddata';
|
||||
import { getSimulationInfoNew } from '@/api/simulation';
|
||||
import { bindSimulationTrain,getSimulationTrainlistNew,getSimulationMembersNew,trainSimulationEb,trainSimulationForce,trainSimulationGear} from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js';
|
||||
|
||||
import { UrlConfig } from '@/scripts/ConstDic';
|
||||
|
||||
@ -77,6 +93,9 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
groupnum:"",
|
||||
userrole:'',
|
||||
|
||||
driveIndex:1500,
|
||||
trainlist: null,
|
||||
stationlist: null,
|
||||
@ -104,6 +123,18 @@ export default {
|
||||
msgshow:false,
|
||||
controlmsg:"不能选择其它列车",
|
||||
|
||||
tuoguanbutton:false,
|
||||
tuoguanbuttonmsg:"托管",
|
||||
tuoguanstatus:false,
|
||||
isTraining:true,
|
||||
options: [],
|
||||
initMsg:"请选择列车",
|
||||
value: '',
|
||||
topid:null,
|
||||
trainlist:null,
|
||||
groupnum:"",
|
||||
userrole:'',
|
||||
nowdrive:null,
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
@ -184,6 +215,9 @@ export default {
|
||||
// window.removeEventListener('popstate', this.goBack, false);
|
||||
},
|
||||
computed: {
|
||||
group() {
|
||||
return this.$route.query.group;
|
||||
},
|
||||
userId() {
|
||||
return this.$store.state.user ? this.$store.state.user.id : '';
|
||||
},
|
||||
@ -194,6 +228,19 @@ export default {
|
||||
// window.datanew = this.datanew;
|
||||
window.updatestatus = this.updatestatus;
|
||||
|
||||
window.updateDriverTrust = this.updateDriverTrust;
|
||||
window.updateDriveValue = this.updateDriveValue;
|
||||
|
||||
if(this.$route.query.group){
|
||||
getSimulationInfoNew(this.$route.query.group).then(netdata => {
|
||||
|
||||
if(netdata.data.type == "SCRIPT_MAKING"){
|
||||
this.tuoguanbutton = true;
|
||||
}
|
||||
this.inittrainlist();
|
||||
});
|
||||
}
|
||||
|
||||
if(this.$route.query.type == "DRIVE"){
|
||||
this.backmsg = "退出";
|
||||
}
|
||||
@ -374,8 +421,211 @@ export default {
|
||||
},
|
||||
warningmsgoff(){
|
||||
this.msgshow = false;
|
||||
|
||||
},
|
||||
tuoguan(){
|
||||
let posttrust = null;
|
||||
if(this.tuoguanstatus){
|
||||
posttrust = false;
|
||||
}else{
|
||||
posttrust = true;
|
||||
}
|
||||
|
||||
tuoguan3ddrive(this.$route.query.group,{}).then(netdata => {
|
||||
// this.$store.dispatch('training/updateMemberListInScript', {oldMemberId:this.oldMemberId, newMemberId:role, userId:this.userId});
|
||||
this.tuoguanstatus = posttrust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}).catch((error) => {
|
||||
|
||||
});
|
||||
},
|
||||
currentsel(selVal){
|
||||
let oldgroupnum = this.groupnum;
|
||||
this.groupnum = selVal;
|
||||
bindSimulationTrain(this.group,this.groupnum).then(netdata => {
|
||||
this.selVal = selVal;
|
||||
this.dialogVisible = true;
|
||||
// this.groupnum = selVal;
|
||||
for(let i=0;i<this.trainlist.length;i++){
|
||||
if(this.trainlist[i].groupNumber == this.groupnum){
|
||||
// console.log(this.trainlist[i].gear);
|
||||
// this.groupnum
|
||||
this.$refs.dcontrol.centerstate(this.trainlist[i].gear);
|
||||
}
|
||||
}
|
||||
|
||||
this.nowdrive = this.groupnum;
|
||||
}).catch(error => {
|
||||
this.groupnum = oldgroupnum;
|
||||
this.selVal = oldgroupnum;
|
||||
this.$emit('warningmsg',error.message);
|
||||
this.value = this.nowdrive;
|
||||
});
|
||||
},
|
||||
clickselect(e){
|
||||
if(e == true){
|
||||
|
||||
this.updatetrainlist();
|
||||
}
|
||||
},
|
||||
|
||||
updateDriverTrust(code,trustStatus){
|
||||
if(this.tuoguanstatus != trustStatus){
|
||||
this.tuoguanstatus = trustStatus;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
this.$store.dispatch('training/updateMemberTrust', {deviceCode:code,trust:trustStatus});
|
||||
}
|
||||
},
|
||||
inittrainlist(){
|
||||
getSimulationTrainlistNew(this.group).then(netdata => {
|
||||
this.options = [];
|
||||
this.trainlist = netdata.data;
|
||||
for(let i=0;i<netdata.data.length;i++){
|
||||
let option= {
|
||||
value: netdata.data[i].groupNumber,
|
||||
label: netdata.data[i].groupNumber,
|
||||
name:null,
|
||||
}
|
||||
option.disabled = false;
|
||||
|
||||
if(netdata.data[i].name){
|
||||
option.label = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.initMsg = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.groupNumber = netdata.data[i].groupNumber;
|
||||
option.disabled = true;
|
||||
}
|
||||
|
||||
|
||||
if(netdata.data[i].driverId){
|
||||
if(netdata.data[i].driverId == this.userId){
|
||||
|
||||
this.selVal = netdata.data[i].groupNumber;
|
||||
this.groupnum = netdata.data[i].groupNumber;
|
||||
this.dialogVisible = true;
|
||||
for(let i=0;i<this.trainlist.length;i++){
|
||||
if(this.trainlist[i].groupNumber == this.groupnum){
|
||||
// console.log(this.trainlist[i].gear);
|
||||
// this.groupnum
|
||||
this.$refs.dcontrol.centerstate(this.trainlist[i].gear);
|
||||
}
|
||||
}
|
||||
|
||||
this.value = this.groupnum;
|
||||
this.nowdrive = this.groupnum;
|
||||
// bindSimulationTrain(this.group,this.selVal).then(netdata => {
|
||||
//
|
||||
//
|
||||
// }).catch(error => {
|
||||
// });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.options.push(option);
|
||||
}
|
||||
this.options.sort(
|
||||
function(obj1,obj2) {
|
||||
let val1 = obj1.value;
|
||||
let val2 = obj2.value;
|
||||
return val1 - val2;
|
||||
}
|
||||
);
|
||||
});
|
||||
//获取当前录制托管状态
|
||||
if(this.tuoguanbutton == true){
|
||||
|
||||
let netdata = this.$store.state.training.memberData;
|
||||
for(let k in netdata){
|
||||
if(netdata[k].userId == this.userId){
|
||||
// console.log(this.$store.state.scriptRecord.type);
|
||||
this.userrole = netdata[k].type;
|
||||
if(netdata[k].trust){
|
||||
this.tuoguanstatus = netdata[k].trust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
updateDriveValue(newvalue){
|
||||
|
||||
if(newvalue != this.value){
|
||||
this.value = newvalue;
|
||||
this.groupnum = newvalue;
|
||||
}
|
||||
},
|
||||
updatetrainlist(){
|
||||
getSimulationTrainlistNew(this.group).then(netdata => {
|
||||
this.options = [];
|
||||
this.trainlist = netdata.data;
|
||||
for(let i=0;i<netdata.data.length;i++){
|
||||
let option= {
|
||||
value: netdata.data[i].groupNumber,
|
||||
label: netdata.data[i].groupNumber,
|
||||
name:null,
|
||||
}
|
||||
option.disabled = false;
|
||||
|
||||
if(netdata.data[i].name){
|
||||
option.label = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.initMsg = netdata.data[i].name+"正在驾驶"+netdata.data[i].groupNumber;
|
||||
this.groupNumber = netdata.data[i].groupNumber;
|
||||
option.disabled = true;
|
||||
}
|
||||
if(netdata.data[i].driverId){
|
||||
if(netdata.data[i].driverId == this.userId){
|
||||
this.selVal = netdata.data[i].groupNumber;
|
||||
this.groupnum = netdata.data[i].groupNumber;
|
||||
}
|
||||
}
|
||||
this.options.push(option);
|
||||
}
|
||||
this.options.sort(
|
||||
function(obj1,obj2) {
|
||||
let val1 = obj1.value;
|
||||
let val2 = obj2.value;
|
||||
return val1 - val2;
|
||||
}
|
||||
);
|
||||
});
|
||||
//获取当前录制托管状态
|
||||
if(this.tuoguanbutton == true){
|
||||
|
||||
let netdata = this.$store.state.training.memberData;
|
||||
for(let k in netdata){
|
||||
if(netdata[k].userId == this.userId){
|
||||
// console.log(this.$store.state.scriptRecord.type);
|
||||
this.userrole = netdata[k].type;
|
||||
if(netdata[k].trust){
|
||||
this.tuoguanstatus = netdata[k].trust;
|
||||
if(this.tuoguanstatus){
|
||||
this.tuoguanbuttonmsg = "取消托管";
|
||||
}else{
|
||||
this.tuoguanbuttonmsg = "托管";
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
@ -19,12 +19,17 @@ export function mmiimage() {
|
||||
this.m1['am'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m1-am.png';
|
||||
this.m1['cm'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m1-cm.png';
|
||||
this.m1['rm'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m1-rm.png';
|
||||
this.m1['sm'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/ m1-sm.png';
|
||||
|
||||
|
||||
this.m2 = [];
|
||||
this.m2['start'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/none.png';
|
||||
this.m2['il'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m2-il.png';
|
||||
this.m2['itc'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m2-itc.png';
|
||||
this.m2['cbtc'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m2-cbtc.png';
|
||||
this.m2['ctc'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m2-ctc.png';
|
||||
this.m2['ixl'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/ixl.png';
|
||||
|
||||
|
||||
this.m3 = [];
|
||||
this.m3['zhefan'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m3-zhefan.png';
|
||||
@ -80,11 +85,13 @@ export function mmiimage() {
|
||||
|
||||
|
||||
this.c2 = [];
|
||||
this.c2['rm'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m1-rm.png';
|
||||
this.c2['RM'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/m1-rm.png';
|
||||
this.c2['cmi'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-cm-i.png';
|
||||
this.c2['cmc'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-cm-c.png';
|
||||
this.c2['ami'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-am-i.png';
|
||||
this.c2['amc'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-am-c.png';
|
||||
this.c2['AM_I'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-am-i.png';
|
||||
this.c2['AM_C'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-am-c.png';
|
||||
this.c2['SM_I'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-sm-i.png';
|
||||
this.c2['SM_C'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/c2-sm-c.png';
|
||||
this.c2['none'] = JL3D_LOCAL_STATIC+'/jl3d/mmi/none.png';
|
||||
|
||||
this.c3 = [];
|
||||
|
@ -58,7 +58,7 @@
|
||||
</div>
|
||||
|
||||
<div class = "righttext" style="left:0px;bottom:0;">
|
||||
{{$t('jlmap3d.confirmSignalOpen')}}
|
||||
{{mmimsg}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
</div>
|
||||
|
||||
<div class="errortext">
|
||||
{{$t('jlmap3d.faultInformation')}}
|
||||
|
||||
</div>
|
||||
|
||||
<div id="time" class="timetext">
|
||||
@ -157,10 +157,12 @@ export default {
|
||||
newa1state:"black",
|
||||
a1state:"black",
|
||||
ebStatus:false,
|
||||
mmimsg:"",
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
window.updatemmic1 = this.updatemmic1;
|
||||
window.jl3dUpdateMmiMsg = this.jl3dUpdateMmiMsg;
|
||||
this.init();
|
||||
},
|
||||
beforeDestroy() {
|
||||
@ -186,7 +188,7 @@ export default {
|
||||
this.tiaotingimage = this.images.n['none'];
|
||||
this.dimage = this.images.d['info'];
|
||||
this.m1image = this.images.m1['rm'];
|
||||
this.m2image = this.images.m2['cbtc'];
|
||||
this.m2image = this.images.m2['ctc'];
|
||||
this.m3image = this.images.m3['none'];
|
||||
this.m4image = this.images.m4['none'];
|
||||
this.m5image = this.images.m5['noalloffdoor'];
|
||||
@ -215,6 +217,7 @@ export default {
|
||||
|
||||
},
|
||||
updatetrainstatus(newdata){
|
||||
|
||||
if(typeof(newdata.eb) != "undefined"){
|
||||
|
||||
this.updateEbStatus(newdata.eb);
|
||||
@ -276,7 +279,18 @@ export default {
|
||||
}
|
||||
|
||||
this.updatemmidoormode(newdata.leftDoorCanClose,newdata.rightDoorCanClose);
|
||||
|
||||
if(newdata.preselectionMode){
|
||||
this.updateBfhm(newdata.preselectionMode);
|
||||
}
|
||||
console.log(newdata);
|
||||
if(newdata.message){
|
||||
|
||||
this.jl3dUpdateMmiMsg("",newdata.message);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
updatemmistate(aaa){
|
||||
|
||||
},
|
||||
@ -464,10 +478,13 @@ export default {
|
||||
if(runlevel){
|
||||
if(runlevel == "CBTC"){
|
||||
this.m2state = runlevel;
|
||||
this.m2image = this.images.m2['cbtc'];
|
||||
this.m2image = this.images.m2['ctc'];
|
||||
}else if(runlevel == "ITC"){
|
||||
this.m2state = runlevel;
|
||||
this.m2image = this.images.m2['itc'];
|
||||
}else if(runlevel == "IL"){
|
||||
this.m2state = runlevel;
|
||||
this.m2image = this.images.m2['il'];
|
||||
this.m2image = this.images.m2['ixl'];
|
||||
}else{
|
||||
this.m2state = runlevel;
|
||||
this.m2image = this.images.m2['start'];
|
||||
@ -477,7 +494,7 @@ export default {
|
||||
if(dirvemode){
|
||||
if(dirvemode == "CM"){
|
||||
this.m1state = dirvemode;
|
||||
this.m1image = this.images.m1['cm'];
|
||||
this.m1image = this.images.m1['sm'];
|
||||
}else if(dirvemode == "RM"){
|
||||
this.m1state = dirvemode;
|
||||
this.m1image = this.images.m1['rm'];
|
||||
@ -596,6 +613,34 @@ export default {
|
||||
this.endstation = end;
|
||||
}
|
||||
},
|
||||
updateBfhm(type){
|
||||
this.c2state = type;
|
||||
this.c2image = this.images.c2[type];
|
||||
},
|
||||
jl3dUpdateMmiMsg(msg,type){
|
||||
|
||||
|
||||
if(type){
|
||||
if(type == "Exit_TGMT"){
|
||||
msg = "由于离开TGMT区域,确认转换到RM模式的请求";
|
||||
}
|
||||
if(type == "Confirm_Release_Speed"){
|
||||
msg = "确认释放速度";
|
||||
}
|
||||
if(type == "Confirm_Preselection"){
|
||||
msg = "确认模式/级别预选";
|
||||
}
|
||||
if(type == "Confirm_Control_Level_Down"){
|
||||
msg = "确认控制级别降级的请求";
|
||||
}
|
||||
if(type == "Switch_To_RM"){
|
||||
msg = "确认切换到RM模式";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.mmimsg = msg;
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
}
|
||||
|
586
src/views/jlmap3d/zzwwtest/zzwwtest.vue
Normal file
@ -0,0 +1,586 @@
|
||||
<template>
|
||||
|
||||
<div id="lesson3ddiv" class="lesson3ddiv">
|
||||
|
||||
<div class="selectjobdiv"
|
||||
:style="{'background-image': 'url('+staticImg+'/texture/bg.jpg)'}"
|
||||
v-if="showSelectJob">
|
||||
<div class="selectjobbuttondiv">
|
||||
<div
|
||||
class="selectjobimg"
|
||||
v-for="(job,index) in selectJobList"
|
||||
@click="selectJob(job)"
|
||||
:style="{'background-image': 'url('+staticImg+'/lesson3d/mst.png)'}">
|
||||
<!-- <div>{{job}}</div> -->
|
||||
<div style="width:100%;position:absolute;bottom:0;font-size:30px;textAlign:center;">{{job}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lessontopdiv"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||
<div class="lessontopdivtittle"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||
课程:{{lessonMsg.lessonTittle}}
|
||||
</div>
|
||||
<div class="lessontopdivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
@click="openBack">
|
||||
退出
|
||||
</div>
|
||||
|
||||
<div class="lessontopdivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||
用户ID:{{lessonMsg.userId}}
|
||||
</div>
|
||||
|
||||
<div class="lessontopdivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
v-if="lessonMsg.userJob">
|
||||
当前岗位:{{lessonMsg.userJob}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson3dplayer">
|
||||
<Step-Tips
|
||||
:lessonData='lessonData'
|
||||
:lessonPlayIndex='lessonPlayIndex'
|
||||
:nowRole ='nowRole'
|
||||
v-show="lessonTools[0].isShow"
|
||||
@jumpEvent="jumpEvent">
|
||||
</Step-Tips>
|
||||
|
||||
<Process-Log
|
||||
:lessonData='lessonData'
|
||||
:lessonPlayIndex='lessonPlayIndex'
|
||||
ref="processlog"
|
||||
v-show="lessonTools[1].isShow">
|
||||
</Process-Log>
|
||||
|
||||
<Explain-Pane
|
||||
:lessonData='lessonData'
|
||||
:lessonPlayIndex='lessonPlayIndex'
|
||||
v-show="lessonTools[2].isShow && !examMode"
|
||||
>
|
||||
</Explain-Pane>
|
||||
|
||||
<Job-Pane
|
||||
:jobPaneData='jobPaneData'
|
||||
:lessonData='lessonData'
|
||||
:lessonPlayIndex='lessonPlayIndex'
|
||||
:nowRole='nowRole'
|
||||
ref="jobpane"
|
||||
v-show="lessonTools[3].isShow">
|
||||
</Job-Pane>
|
||||
|
||||
<Tool-Bar
|
||||
v-show="lessonTools[4].isShow "
|
||||
@changeCameraPos="changeCameraPos">
|
||||
</Tool-Bar>
|
||||
|
||||
<TrainTest-Pane
|
||||
:trainDeviceData='trainDeviceData'
|
||||
:lessonData='lessonData'
|
||||
:lessonPlayIndex='lessonPlayIndex'
|
||||
ref="jobpane"
|
||||
v-show="lessonTools[5].isShow ">
|
||||
</TrainTest-Pane>
|
||||
|
||||
<Result-Tips
|
||||
:examStatus='examStatus'
|
||||
ref="rtui">
|
||||
</Result-Tips>
|
||||
|
||||
<div id="lesson3ddraw" class="lesson3ddraw">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lessondowndiv"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||
|
||||
<div class="lessondowndivroommsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}">
|
||||
房间编号:1
|
||||
</div>
|
||||
|
||||
|
||||
<div class="lessondowndivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
v-show = "endExam && examMode"
|
||||
@click="showResult">
|
||||
考试成绩分析
|
||||
</div>
|
||||
|
||||
<div class="lessondowndivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
v-show = "examMode">
|
||||
考试计时:{{this.lastPlayTime}}
|
||||
</div>
|
||||
<div class="lessondowndivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
v-show = "examMode">
|
||||
考核步骤:{{examStatus.nowStep}}/{{examStatus.allStep}}
|
||||
</div>
|
||||
<div class="lessondowndivmsg"
|
||||
:style="{'background-image': 'url('+lessonbg+')'}"
|
||||
v-show = "examMode">
|
||||
考试得分:{{examStatus.lastScore}}/{{examStatus.allScore}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<canvas id="canvastexture" width="128px" height="64px"></canvas>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import Vue from 'vue';
|
||||
import localStore from 'storejs';
|
||||
|
||||
// import AssetsModel from '@/views/jlmap3d/lesson3dedit/component/assetsmodel';
|
||||
import ResultTips from '@/views/jlmap3d/lesson3dplayer/tools/resulttips';
|
||||
|
||||
import StepTips from '@/views/jlmap3d/lesson3dplayer/tools/stepstips';
|
||||
import ProcessLog from '@/views/jlmap3d/lesson3dplayer/tools/processlog';
|
||||
import ExplainPane from '@/views/jlmap3d/lesson3dplayer/tools/explainpane';
|
||||
import JobPane from '@/views/jlmap3d/lesson3dplayer/tools/jobpane';
|
||||
import ToolBar from '@/views/jlmap3d/lesson3dplayer/tools/toolbar';
|
||||
import TrainTestPane from '@/views/jlmap3d/lesson3dplayer/tools/traintestpane';
|
||||
|
||||
|
||||
import { Lesson3dPlayer } from '@/jlmap3d/lesson3d/lesson3dplayer.js';
|
||||
|
||||
import { LessonData } from '@/jlmap3d/lesson3d/model/lessondata.js';
|
||||
import { JobPaneData } from '@/jlmap3d/lesson3d/toolsmodel/jobpanedata.js';
|
||||
import { ZzwwTrain } from '@/jlmap3d/lesson3dedit/toolsmodel/zzwwtrain.js';
|
||||
|
||||
import { getLesson3dData,updateLesson3dData } from '@/api/jmap/lesson3d';
|
||||
|
||||
import { JL3D_LOCAL_STATIC,BASE_ASSET_API } from '@/api/jlmap3d/assets3d.js';
|
||||
|
||||
export default {
|
||||
name: 'ZzwwTest',
|
||||
components: {
|
||||
|
||||
// AssetsModel,
|
||||
|
||||
StepTips,
|
||||
ProcessLog,
|
||||
ExplainPane,
|
||||
JobPane,
|
||||
ToolBar,
|
||||
ResultTips,
|
||||
TrainTestPane
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
lessonbg:JL3D_LOCAL_STATIC+"/lesson3d/lessonbg.png",
|
||||
staticImg:JL3D_LOCAL_STATIC,
|
||||
examMode:false,
|
||||
examStatus:{
|
||||
allScore:0,
|
||||
nowStep:0,
|
||||
lastScore:0,
|
||||
allStep:0,
|
||||
trueStep:[],
|
||||
falseStep:[],
|
||||
time:0,
|
||||
},
|
||||
playTime:{
|
||||
h:0,
|
||||
m:0,
|
||||
s:0,
|
||||
},
|
||||
time:'',
|
||||
ms:0,
|
||||
lastPlayTime:"",
|
||||
endExam:false,
|
||||
examResultShow:false,
|
||||
showSelectJob:true,
|
||||
lessonMsg:{},
|
||||
selectJobList:[],
|
||||
nowRole:"",
|
||||
jl3d: null,
|
||||
netData:{
|
||||
name:'',
|
||||
type:'',
|
||||
data:{},
|
||||
},
|
||||
triggerList:[],
|
||||
lessonData:{
|
||||
lessonData:{
|
||||
lessonProgress:[
|
||||
|
||||
]
|
||||
}
|
||||
},
|
||||
jobPaneData:{},
|
||||
trainDeviceData:{},
|
||||
lessonPlayIndex:0,
|
||||
lessonTools:[
|
||||
{
|
||||
name:"步骤组件",
|
||||
isShow:false,
|
||||
},
|
||||
{
|
||||
name:"步骤进程日志",
|
||||
isShow:false,
|
||||
},
|
||||
{
|
||||
name:"步骤提示组件",
|
||||
isShow:false,
|
||||
},
|
||||
{
|
||||
name:"岗位联络操作",
|
||||
isShow:false,
|
||||
},
|
||||
{
|
||||
name:"导航工具栏",
|
||||
isShow:false,
|
||||
},
|
||||
{
|
||||
name:"大铁车检组件",
|
||||
type:"",
|
||||
isShow:false,
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
||||
},
|
||||
watch: {
|
||||
|
||||
},
|
||||
mounted() {
|
||||
window.updateTriggerList = this.updateTriggerList;
|
||||
window.jumpEvent = this.jumpEvent;
|
||||
window.actionEvent = this.actionEvent;
|
||||
window.startLesson = this.startLesson;
|
||||
window.updataExamStatus = this.updataExamStatus;
|
||||
window.lessonEnd = this.lessonEnd;
|
||||
this.init(this.$route.query.lessonId);
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
init(lessonId){
|
||||
|
||||
getLesson3dData(lessonId).then(data => {
|
||||
this.netData.name = data.data.name;
|
||||
this.netData.type = data.data.type;
|
||||
|
||||
let dom = document.getElementById('lesson3ddraw');
|
||||
|
||||
this.lessonData = new LessonData();
|
||||
this.jobPaneData = new JobPaneData();
|
||||
this.trainDeviceData = new ZzwwTrain();
|
||||
let loadData;
|
||||
|
||||
if(data.data.data){
|
||||
this.lessonMsg = {
|
||||
lessonTittle:data.data.name,
|
||||
userId:data.data.userId,
|
||||
userJob:"",
|
||||
};
|
||||
loadData = JSON.parse(data.data.data);
|
||||
if(this.$route.query.examMode == 1){
|
||||
this.examMode = true;
|
||||
}else{
|
||||
this.examMode = loadData.setup.examMode;
|
||||
}
|
||||
if(loadData.setup.checkedRole.length == 0){
|
||||
this.showSelectJob = false;
|
||||
}
|
||||
this.selectJobList = loadData.setup.checkedRole;
|
||||
this.jobPaneData.dataList = loadData.toolJobPane;
|
||||
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
||||
console.log(loadData.lessonTools);
|
||||
this.lessonTools = loadData.lessonTools;
|
||||
this.lessonData.loadLessonProgress(loadData.lessonProgress);
|
||||
if(this.lessonTools[5].isShow){
|
||||
loadData.trainDeviceData = this.trainDeviceData.deviceList;
|
||||
}
|
||||
}else{
|
||||
|
||||
this.lessonData.initLessonProgress();
|
||||
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
|
||||
this.jl3d.initNowRole();
|
||||
}
|
||||
// console.log("loaddata----------------");
|
||||
// console.log(loadData);
|
||||
// console.log(this.lessonMsg);
|
||||
this.jl3d = new Lesson3dPlayer(dom,loadData,this.lessonPlayIndex);
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
updataExamStatus(newExamStatus){
|
||||
this.examStatus = newExamStatus;
|
||||
},
|
||||
lessonEnd(){
|
||||
if(this.examMode == true){
|
||||
this.endExam = true;
|
||||
this.showResult();
|
||||
this.examStatus.time = this.lastPlayTime;
|
||||
this.stopTime();
|
||||
}
|
||||
},
|
||||
showResult(){
|
||||
this.$refs.rtui.showdiv();
|
||||
},
|
||||
selectJob(job){
|
||||
this.showSelectJob = false;
|
||||
for(let i=0;i<this.jobPaneData.dataList.length;i++){
|
||||
if(job == this.jobPaneData.dataList[i].name){
|
||||
this.nowRole = this.jobPaneData.dataList[i].value;
|
||||
|
||||
this.lessonMsg.userJob = job;
|
||||
this.jl3d.initNowRole(this.nowRole);
|
||||
this.timeStart();
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
timeStart(){
|
||||
this.time =setInterval(this.timer,100)
|
||||
},
|
||||
timer () {//定义计时函数
|
||||
this.ms =this.ms +100 //毫秒
|
||||
if (this.ms >=1000) {
|
||||
this.ms =0
|
||||
this.playTime.s =this.playTime.s +1 //秒
|
||||
}
|
||||
|
||||
if (this.playTime.s >=60) {
|
||||
this.playTime.s =0;
|
||||
this.playTime.m =this.playTime.m +1 //分钟
|
||||
}
|
||||
|
||||
if (this.playTime.m >=60) {
|
||||
this.playTime.m;
|
||||
this.playTime.h =this.playTime.h +1 //小时
|
||||
}
|
||||
this.lastPlayTime =this.toDub(this.playTime.h) +':' +this.toDub(this.playTime.m) +':' +this.toDub(this.playTime.s)/*+""+this.toDubms(this.ms)+"毫秒"*/
|
||||
|
||||
},
|
||||
toDub (n) {//补0操作
|
||||
if (n <10) {
|
||||
return '0' + n
|
||||
}else {
|
||||
return '' + n
|
||||
}
|
||||
},
|
||||
stopTime () {
|
||||
clearInterval(this.time);
|
||||
},
|
||||
|
||||
startLesson(){
|
||||
this.$refs.processlog.startLog();
|
||||
},
|
||||
saveLesson3dData(){
|
||||
this.lessonData.lessonData.lessonTools = this.lessonTools;
|
||||
let saveData = this.lessonData.lessonData;
|
||||
saveData.toolJobPane = this.jobPaneData.dataList;
|
||||
|
||||
let assetModelData = this.jl3d.saveAssetModel();
|
||||
saveData.assetList = assetModelData.assetList;
|
||||
saveData.modelList = assetModelData.modelList;
|
||||
|
||||
this.netData.data = JSON.stringify(saveData);
|
||||
// console.log();
|
||||
updateLesson3dData(this.$route.query.lessonId,this.netData).then(data => {
|
||||
console.log(data);
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
|
||||
jumpEvent(type,action){
|
||||
if(type == "action"){
|
||||
this.lessonPlayIndex = action.jumpNode;
|
||||
}
|
||||
if(type == "tools"){
|
||||
this.lessonPlayIndex = action.nextNode;
|
||||
}
|
||||
if(type == "jump"){
|
||||
this.lessonPlayIndex = action.nextNode;
|
||||
}
|
||||
|
||||
this.jl3d.changeIndex(this.lessonPlayIndex);
|
||||
},
|
||||
actionEvent(type,action,mesh){
|
||||
this.jl3d.actionModelControl(type,mesh);
|
||||
// this.jl3d.actionRemove(mesh);
|
||||
},
|
||||
updateTriggerList(newTriggerList){
|
||||
this.triggerList = newTriggerList;
|
||||
},
|
||||
changeCameraPos(pos){
|
||||
this.jl3d.changeCameraPos(pos);
|
||||
},
|
||||
openBack(){
|
||||
history.go(-1);
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
@import "src/styles/mixin.scss";
|
||||
|
||||
* {
|
||||
touch-action: none;
|
||||
}
|
||||
|
||||
.selectjobdiv{
|
||||
width:100%;
|
||||
height:100%;
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
background-size: 100%;
|
||||
}
|
||||
|
||||
.selectjobimg{
|
||||
width:250px;
|
||||
height:250px;
|
||||
background-size: 100%;
|
||||
// float:left;
|
||||
display: inline-block;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
.selectjobbuttondiv{
|
||||
position:absolute;
|
||||
width:80%;
|
||||
height:30%;
|
||||
left:10%;
|
||||
top:35%;
|
||||
overflow-x:scroll;
|
||||
overflow-y:hidden;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.selectjobbackdiv{
|
||||
|
||||
}
|
||||
|
||||
|
||||
.lessontopdiv{
|
||||
width:100%;
|
||||
height: 50px;
|
||||
position: absolute;
|
||||
top:0;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
z-index: 10;
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.lessontopdivtittle{
|
||||
width: 33%;
|
||||
height:50px;
|
||||
position: absolute;
|
||||
left:0;
|
||||
text-align: center;
|
||||
font-size: 30px;
|
||||
line-height: 40px;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
|
||||
.lessontopdivmsg{
|
||||
width: 20%;
|
||||
height:49px;
|
||||
position: relative;
|
||||
float:right;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
line-height: 40px;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
|
||||
.lessondowndiv{
|
||||
width:100%;
|
||||
height: 40px;
|
||||
position: absolute;
|
||||
bottom:0;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
z-index: 10;
|
||||
color:#fff;
|
||||
font-size: 18px;
|
||||
line-height: 25px;
|
||||
}
|
||||
|
||||
.lessondowndivroommsg{
|
||||
width: 20%;
|
||||
height:38px;
|
||||
position: absolute;
|
||||
left:0;
|
||||
text-align: center;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
|
||||
.lessondowndivmsg{
|
||||
width: 20%;
|
||||
height:38px;
|
||||
position: relative;
|
||||
float:right;
|
||||
text-align: center;
|
||||
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
|
||||
.lesson3ddiv {
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.lesson3dplayer{
|
||||
width:100%;
|
||||
height:100%;
|
||||
position: absolute;
|
||||
// top: 0;
|
||||
// left:15%;
|
||||
// border:solid 2px #000;
|
||||
}
|
||||
.lesson3ddraw {
|
||||
float: left;
|
||||
//left:20%;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-inde: -1;
|
||||
}
|
||||
|
||||
.activediv{
|
||||
position: absolute;
|
||||
width: 15%;
|
||||
height:100%;
|
||||
left:0;
|
||||
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
}
|
||||
|
||||
.lessonsetup {
|
||||
position: absolute;
|
||||
width: 15%;
|
||||
height: 20%;
|
||||
right:0;
|
||||
top:0;
|
||||
border-radius:10px;
|
||||
border:solid 2px #000;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.el-tabs__content{
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
</style>
|
@ -581,7 +581,7 @@ export default {
|
||||
}
|
||||
});
|
||||
} else if (this.project === 'zzwwtest') {
|
||||
this.$router.push({ path: '/design/jlmap3d/lesson3dplayer', query: {lessonId:'31'} });
|
||||
this.$router.push({ path: '/jlmap3d/zzwwtest', query: {lessonId:'35'} });
|
||||
} else if (this.project === 'richorlesson3d') {
|
||||
this.$router.push({ path: '/jlmap3d/lesson3dselect', query: {} });
|
||||
} else {
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 7.9 KiB |
BIN
static/jl3d/mmi/c2-sm-c.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
static/jl3d/mmi/c2-sm-i.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
static/jl3d/mmi/m1-sm.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
static/jl3d/mmi/m2-ctc.png
Normal file
After Width: | Height: | Size: 2.5 KiB |