Merge branch 'test' into test_conflictRoute

# Conflicts:
#	src/jmapNew/theme/components/menus/dialog/routeHandControl.vue
This commit is contained in:
walker-sheng 2021-08-03 14:33:47 +08:00
commit 4b5ff657c9
67 changed files with 12610 additions and 60524 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@ -7,6 +7,12 @@ export default {
surveillanceDisplay: 'In-vehicle surveillance - display', surveillanceDisplay: 'In-vehicle surveillance - display',
trainInstrumentationDisplay: 'Train instrumentation - display', trainInstrumentationDisplay: 'Train instrumentation - display',
trainInstrumentationHidden: 'Train instrumentation - hidden', trainInstrumentationHidden: 'Train instrumentation - hidden',
trainInstrumentationMmiDisplay: 'Train instrumentation mmi - display',
trainInstrumentationMmiHidden: 'Train instrumentation mmi - hidden',
trainInstrumentationTmsDisplay: 'Train instrumentation tms - display',
trainInstrumentationTmsHidden: 'Train instrumentation tms - hidden',
terminal: 'terminal:', terminal: 'terminal:',
nextStation: 'Next station:', nextStation: 'Next station:',
confirmSignalOpen: 'Please confirm that the signal ahead is open', confirmSignalOpen: 'Please confirm that the signal ahead is open',

View File

@ -5,8 +5,12 @@ export default {
stopTime:'停站时间:', stopTime:'停站时间:',
surveillanceHidden: '车内监控——隐藏', surveillanceHidden: '车内监控——隐藏',
surveillanceDisplay: '车内监控——显示', surveillanceDisplay: '车内监控——显示',
trainInstrumentationDisplay: '列车仪表——显示', trainInstrumentationDisplay: '列车mmi仪表——显示',
trainInstrumentationHidden: '列车仪表——隐藏', trainInstrumentationHidden: '列车mmi仪表——隐藏',
trainInstrumentationMmiDisplay: '列车mmi仪表——显示',
trainInstrumentationMmiHidden: '列车mmi仪表——隐藏',
trainInstrumentationTmsDisplay: '列车tms仪表——显示',
trainInstrumentationTmsHidden: '列车tms仪表——隐藏',
terminal: '终点站:', terminal: '终点站:',
nextStation: '下一站:', nextStation: '下一站:',
confirmSignalOpen: '请确认前方信号开放', confirmSignalOpen: '请确认前方信号开放',

View File

@ -305,10 +305,36 @@ export function JLmap3dEdit(dom, data, mapid) {
for(let i=0,leni=scope.mapdata.stationstandlist.list.length;i<leni;i++){ for(let i=0,leni=scope.mapdata.stationstandlist.list.length;i<leni;i++){
if(changeStation.code == scope.mapdata.stationstandlist.list[i].code){ if(changeStation.code == scope.mapdata.stationstandlist.list[i].code){
let changeData = scope.mapdata.stationstandlist.list[i]; let changeData = scope.mapdata.stationstandlist.list[i];
console.log(changeData);
let topStandTrack = scope.mapdata.sectionlist.sections.datalist[changeData.stands[0].section]; let topStandTrack = scope.mapdata.sectionlist.sections.datalist[changeData.stands[0].section];
let downStandTrack = scope.mapdata.sectionlist.sections.datalist[changeData.stands[changeData.stands.length-1].section]; let downStandTrack = scope.mapdata.sectionlist.sections.datalist[changeData.stands[changeData.stands.length-1].section];
changeStation.position.set(topStandTrack.railpoint[0].x+(topStandTrack.leftStopPointOffset+topStandTrack.rightStopPointOffset)/2,topStandTrack.railpoint[1].y,(topStandTrack.railpoint[1].z+downStandTrack.railpoint[1].z)/2);
console.log(scope.mapdata.sectionlist.sections);
console.log(topStandTrack.mesh.railpoint[0].x);
console.log(topStandTrack.mesh.railpoint[2].x);
console.log(downStandTrack.mesh.railpoint[0].x);
console.log(downStandTrack.mesh.railpoint[2].x);
let rightpos = topStandTrack.leftStopPercent*(topStandTrack.mesh.railpoint[2].x -topStandTrack.mesh.railpoint[0].x)+topStandTrack.mesh.railpoint[0].x;
let leftpos = downStandTrack.rightStopPercent*(downStandTrack.mesh.railpoint[2].x -downStandTrack.mesh.railpoint[0].x)+downStandTrack.mesh.railpoint[0].x;
let rightX = changeData.mesh.position.x-63.4 - rightpos;
let leftX = changeData.mesh.position.x+63.4 - leftpos;
console.log("----------------------------");
console.log(rightpos);
console.log(leftpos);
console.log("----------------------------");
console.log(rightX);
console.log(leftX);
topStandTrack.mesh.position.x = topStandTrack.mesh.position.z + rightX;
downStandTrack.mesh.position.x = downStandTrack.mesh.position.x + leftX;
//
// // changeStation.position.set(topStandTrack.railpoint[0].x+(topStandTrack.leftStopPointOffset+topStandTrack.rightStopPointOffset)/2,topStandTrack.railpoint[1].y,(topStandTrack.railpoint[1].z+downStandTrack.railpoint[1].z)/2);
topStandTrack.mesh.railpoint[0].x = topStandTrack.mesh.railpoint[0].x+rightX;
topStandTrack.mesh.railpoint[2].x = topStandTrack.mesh.railpoint[2].x+rightX;
downStandTrack.mesh.railpoint[0].x = downStandTrack.mesh.railpoint[0].x+leftX;
downStandTrack.mesh.railpoint[2].x = downStandTrack.mesh.railpoint[2].x+leftX;
} }
} }
} }

View File

@ -57,9 +57,11 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
renderer.domElement.style.top = '0'; renderer.domElement.style.top = '0';
var renderercctv = new THREE.WebGLRenderer(); var renderercctv = new THREE.WebGLRenderer();
renderercctv.setSize(dom.offsetWidth*0.2, dom.offsetHeight*0.2);
// renderercctv.setSize(dom.offsetWidth*0.2, dom.offsetHeight*0.2);
renderercctv.setSize(500, 333);
renderercctv.domElement.style.position = 'absolute'; renderercctv.domElement.style.position = 'absolute';
renderercctv.domElement.style.top = '0'; renderercctv.domElement.style.bottom = '0';
document.getElementById('jlsimulation').appendChild(renderer.domElement); document.getElementById('jlsimulation').appendChild(renderer.domElement);
document.getElementById('jlcctv').appendChild(renderercctv.domElement); document.getElementById('jlcctv').appendChild(renderercctv.domElement);

View File

@ -995,29 +995,29 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,dri
function signalupdate(data) { function signalupdate(data) {
code = data.code; code = data.code;
if(data.red == 1){ if(data.red == 1){
signallist.list[code].mesh.getObjectByName("red").material.map = materials[0]; signallist.list[code].mesh.getObjectByName("red").material.map = materials["red"];
signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("red").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("red").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true;
} }
if(data.yellow == 1){ if(data.yellow == 1){
signallist.list[code].mesh.getObjectByName("yellow").material.map = materials[1]; signallist.list[code].mesh.getObjectByName("yellow").material.map = materials["yellow"];
signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("yellow").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("yellow").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true;
} }
if(data.green == 1){ if(data.green == 1){
signallist.list[code].mesh.getObjectByName("green").material.map = materials[2]; signallist.list[code].mesh.getObjectByName("green").material.map = materials["green"];
signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("green").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("green").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true;
} }

View File

@ -956,6 +956,7 @@ export function jl3dFaultDeviceVr(dom,group,skinCode) {
} }
function squeezeStart(){ function squeezeStart(){
console.log("squeeze");
scope.modelmanager.otherDevice.action.play(); scope.modelmanager.otherDevice.action.play();
if(positionStatus == "dm"){ if(positionStatus == "dm"){
if(vrPlaneStatus){ if(vrPlaneStatus){

View File

@ -1,60 +1,24 @@
/** class VRButton {
* @author mrdoob / http://mrdoob.com
* @author Mugen87 / https://github.com/Mugen87
*/
var VRButton = { static createButton(originPos,vrPos, renderer, options ) {
createButton: function ( originPos,vrPos,renderer, options ) { if ( options ) {
if ( options && options.referenceSpaceType ) { console.error( 'THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.' );
renderer.vr.setReferenceSpaceType( options.referenceSpaceType );
} }
function showEnterVR( device ) { const button = document.createElement( 'button' );
button.style.display = ''; function showEnterVR( /*device*/ ) {
button.style.cursor = 'pointer'; let currentSession = null;
button.style.left = 'calc(50% - 50px)';
button.style.width = '100px';
button.textContent = 'ENTER_VR'; async function onSessionStarted( session ) {
button.onmouseenter = function () {
button.style.opacity = '1.0';
};
button.onmouseleave = function () {
button.style.opacity = '0.5';
};
button.onclick = function () {
device.isPresenting ? device.exitPresent() : device.requestPresent( [ { source: renderer.domElement } ] );
originPos.position.set(vrPos.x,vrPos.y,vrPos.z);
};
renderer.vr.setDevice( device );
}
function showEnterXR( /*device*/ ) {
var currentSession = null;
function onSessionStarted( session ) {
session.addEventListener( 'end', onSessionEnded ); session.addEventListener( 'end', onSessionEnded );
renderer.vr.setSession( session ); await renderer.vr.setSession( session );
button.textContent = 'EXIT VR'; button.textContent = 'EXIT VR';
currentSession = session; currentSession = session;
@ -65,7 +29,6 @@ var VRButton = {
currentSession.removeEventListener( 'end', onSessionEnded ); currentSession.removeEventListener( 'end', onSessionEnded );
renderer.vr.setSession( null );
button.textContent = 'ENTER VR'; button.textContent = 'ENTER VR';
currentSession = null; currentSession = null;
@ -105,9 +68,9 @@ var VRButton = {
// ('local' is always available for immersive sessions and doesn't need to // ('local' is always available for immersive sessions and doesn't need to
// be requested separately.) // be requested separately.)
var sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor' ] }; const sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking', 'layers' ] };
navigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted ); navigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted );
originPos.position.set(vrPos.x,vrPos.y,vrPos.z);
} else { } else {
currentSession.end(); currentSession.end();
@ -133,21 +96,11 @@ var VRButton = {
} }
function showVRNotFound() { function showWebXRNotFound() {
disableButton(); disableButton();
button.textContent = 'VR NOT FOUND'; button.textContent = 'VR NOT SUPPORTED';
renderer.vr.setDevice( null );
}
function showXRNotFound() {
disableButton();
button.textContent = 'VR NOT FOUND';
} }
@ -169,81 +122,35 @@ var VRButton = {
} }
if ( 'xr' in navigator ) { if ( 'xr' in navigator ) {
console.log("xr");
var button = document.createElement( 'button' ); button.id = 'VRButton';
button.style.display = 'none'; button.style.display = 'none';
stylizeElement( button ); stylizeElement( button );
navigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) { navigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) {
if ( supported ) { supported ? showEnterVR() : showWebXRNotFound();
showEnterXR();
} else {
showXRNotFound();
}
} ); } );
return button; return button;
} else if ( 'getVRDisplays' in navigator ) {
console.log("vr");
var button = document.createElement( 'button' );
button.style.display = 'none';
stylizeElement( button );
window.addEventListener( 'vrdisplayconnect', function ( event ) {
showEnterVR( event.display );
}, false );
window.addEventListener( 'vrdisplaydisconnect', function ( /*event*/ ) {
showVRNotFound();
}, false );
window.addEventListener( 'vrdisplaypresentchange', function ( event ) {
button.textContent = event.display.isPresenting ? 'EXIT_VR' : 'ENTER_VR';
}, false );
window.addEventListener( 'vrdisplayactivate', function ( event ) {
event.display.requestPresent( [ { source: renderer.domElement } ] );
}, false );
navigator.getVRDisplays()
.then( function ( displays ) {
if ( displays.length > 0 ) {
showEnterVR( displays[ 0 ] );
} else {
showVRNotFound();
}
} ).catch( showVRNotFound );
return button;
} else { } else {
var message = document.createElement( 'a' ); const message = document.createElement( 'a' );
message.href = 'https://immersive-web.github.io/webxr/';
message.innerHTML = 'WEBXR NOT SUPPORTED'; if ( window.isSecureContext === false ) {
message.href = document.location.href.replace( /^http:/, 'https:' );
message.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message
} else {
message.href = 'https://immersiveweb.dev/';
message.innerHTML = 'WEBXR NOT AVAILABLE';
}
message.style.left = 'calc(50% - 90px)'; message.style.left = 'calc(50% - 90px)';
message.style.width = '180px'; message.style.width = '180px';
@ -257,6 +164,6 @@ var VRButton = {
} }
}; }
export { VRButton }; export { VRButton };

View File

@ -54,6 +54,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
// this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; // this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
this.renderer.gammaInput = true; this.renderer.gammaInput = true;
this.renderer.gammaOutput = true; this.renderer.gammaOutput = true;
console.log( this.renderer);
this.renderer.vr.enabled = true; this.renderer.vr.enabled = true;
this.dom.appendChild(this.renderer.domElement); this.dom.appendChild(this.renderer.domElement);
document.body.appendChild( VRButton.createButton( human,{x:25,y:1.3,z:1},this.renderer ) ); document.body.appendChild( VRButton.createButton( human,{x:25,y:1.3,z:1},this.renderer ) );
@ -208,6 +209,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
function onSelectStart( event ) { function onSelectStart( event ) {
// console.log(); // console.log();
console.log("select");
var controller = event.target; var controller = event.target;
var intersections = getIntersections( controller ); var intersections = getIntersections( controller );
@ -249,6 +251,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
let controlMoveSwitch = false; let controlMoveSwitch = false;
let nowControlModel = null; let nowControlModel = null;
function squeezeStart(){ function squeezeStart(){
console.log("squeezestart");
TrainRescueStatic.handR.action.reset(); TrainRescueStatic.handR.action.reset();
TrainRescueStatic.handR.action.time = TrainRescueStatic.handR.action._clip.duration; TrainRescueStatic.handR.action.time = TrainRescueStatic.handR.action._clip.duration;
TrainRescueStatic.handR.action.timeScale = 1; TrainRescueStatic.handR.action.timeScale = 1;
@ -271,6 +274,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
} }
function squeezeEnd(){ function squeezeEnd(){
console.log("squeezeend");
TrainRescueStatic.handR.action.reset(); TrainRescueStatic.handR.action.reset();
TrainRescueStatic.handR.action.time = 0; TrainRescueStatic.handR.action.time = 0;
TrainRescueStatic.handR.action.timeScale = -1; TrainRescueStatic.handR.action.timeScale = -1;

View File

@ -798,29 +798,29 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
code = data.code; code = data.code;
if(signallist.list[code]){ if(signallist.list[code]){
if(data.red == 1){ if(data.red == 1){
signallist.list[code].mesh.getObjectByName("red").material.map = materials[0]; signallist.list[code].mesh.getObjectByName("red").material.map = materials["red"];
signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("red").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("red").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("red").material.map.needsUpdate = true;
} }
if(data.yellow == 1){ if(data.yellow == 1){
signallist.list[code].mesh.getObjectByName("yellow").material.map = materials[1]; signallist.list[code].mesh.getObjectByName("yellow").material.map = materials["yellow"];
signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("yellow").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("yellow").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("yellow").material.map.needsUpdate = true;
} }
if(data.green == 1){ if(data.green == 1){
signallist.list[code].mesh.getObjectByName("green").material.map = materials[2]; signallist.list[code].mesh.getObjectByName("green").material.map = materials["green"];
signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true;
}else{ }else{
signallist.list[code].mesh.getObjectByName("green").material.map = materials[3]; signallist.list[code].mesh.getObjectByName("green").material.map = materials["black"];
signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true; signallist.list[code].mesh.getObjectByName("green").material.map.needsUpdate = true;
} }

View File

@ -47,8 +47,8 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
light.position.set( 0, 4000, 0 ); light.position.set( 0, 4000, 0 );
scene.add( light ); scene.add( light );
let fire = new Fire(); // let fire = new Fire();
fire.init(scene); // fire.init(scene);
let animateManager = new AnimateManager(); let animateManager = new AnimateManager();
@ -60,8 +60,6 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
animateManager.initAnimation(assetModelManager); animateManager.initAnimation(assetModelManager);
controlManager.init(animateManager.actions,assetModelManager); controlManager.init(animateManager.actions,assetModelManager);
startLesson(); startLesson();
animate(); animate();
resolve("loadeend"); //['成功了', 'success'] resolve("loadeend"); //['成功了', 'success']
@ -90,12 +88,14 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
this.changeIndex = function(nowIndex){ this.changeIndex = function(nowIndex){
lessonIndex = nowIndex; lessonIndex = nowIndex;
scope.nowSceneType = lessonData.lessonProgress[nowIndex].progressScene; scope.nowSceneType = lessonData.lessonProgress[nowIndex].progressScene;
console.log(nowRole);
console.log(lessonData.lessonProgress[lessonIndex].roleName);
if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){ if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){
controlManager.initControlMode(lessonIndex); controlManager.initControlMode(lessonIndex);
controlManager.initRoleMode(true,nowRole); controlManager.initRoleMode(true,nowRole);
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,true,assetModelManager.lessonTriggerList[scope.nowSceneType]); controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,true,assetModelManager.lessonTriggerList[scope.nowSceneType]);
}else{ }else{
controlManager.initControlMode(lessonIndex);
controlManager.initRoleMode(false,nowRole); controlManager.initRoleMode(false,nowRole);
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,false,assetModelManager.lessonTriggerList[scope.nowSceneType]); controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,false,assetModelManager.lessonTriggerList[scope.nowSceneType]);
} }
@ -107,18 +107,23 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
} }
this.initNowRole = function(role){ this.initNowRole = function(role){
nowRole = role; if(role){
controlManager.initControlMode(lessonIndex); nowRole = role;
let roleMode = false; controlManager.initControlMode(lessonIndex);
if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){ let roleMode = false;
roleMode = true; if(lessonData.lessonProgress[lessonIndex].roleName == nowRole){
} roleMode = true;
}
controlManager.initRoleMode(roleMode); controlManager.initRoleMode(roleMode);
console.log(assetModelManager); console.log(assetModelManager);
// if(lessonData.lessonProgress[lessonIndex].action.length>0){ // if(lessonData.lessonProgress[lessonIndex].action.length>0){
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,roleMode,assetModelManager.lessonTriggerList[scope.nowSceneType]); controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,roleMode,assetModelManager.lessonTriggerList[scope.nowSceneType]);
// }
}else{
controlManager.changeIndexEvent(lessonData.lessonProgress[lessonIndex].action,false,assetModelManager.lessonTriggerList[scope.nowSceneType]);
}
// }
}; };
//循环渲染函数 //循环渲染函数
@ -133,7 +138,7 @@ export function Lesson3dPlayer(dom,lessonData,lessonIndex) {
if(controlManager.controlMode == "non"){ if(controlManager.controlMode == "non"){
controlManager.updateOrbitControl(); controlManager.updateOrbitControl();
} }
fire.update(); // fire.update();
animateManager.updateAnimation(); animateManager.updateAnimation();
requestAnimationFrame(animate); requestAnimationFrame(animate);

View File

@ -529,9 +529,8 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
} }
} }
} }
console.log(eventTrigger);
if(actions[i].actionType == "contact"){ if(actions[i].actionType == "contact"){
for(let j=0;j<eventTrigger.length;j++){ for(let j=0;j<eventTrigger.length;j++){
if(eventTrigger[j].label == actions[i].actionModel){ if(eventTrigger[j].label == actions[i].actionModel){
let eventTestBox = new THREE.Box3(new THREE.Vector3(), new THREE.Vector3()); let eventTestBox = new THREE.Box3(new THREE.Vector3(), new THREE.Vector3());
@ -575,6 +574,8 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
} }
} }
} }
}else if(actions.length>0){
console.log(actions);
} }
}; };

View File

@ -146,7 +146,7 @@ export function AssetModelManager(editor,scene) {
} }
// console.log(modelList); console.log(modelList);
return modelList; return modelList;
} }
@ -218,9 +218,9 @@ export function AssetModelManager(editor,scene) {
this.deleteAsset = function(selectModel,nowSceneType){ this.deleteAsset = function(selectModel,nowSceneType){
scope.otherModel.remove(selectModel); scope.otherModel.remove(selectModel);
for(let i=0;i<scope.lessonTriggerList.length;i++){ for(let i=0;i<scope.lessonTriggerList[nowSceneType].length;i++){
if(scope.lessonTriggerList[nowSceneType][i].uuid == selectModel.uuid){ if(scope.lessonTriggerList[nowSceneType][i].uuid == selectModel.uuid){
scope.lessonTriggerList.splice(i,1); scope.lessonTriggerList[nowSceneType].splice(i,1);
updateTriggerList(scope.lessonTriggerList[nowSceneType]); updateTriggerList(scope.lessonTriggerList[nowSceneType]);
break; break;
} }
@ -309,7 +309,8 @@ export function AssetModelManager(editor,scene) {
function fbxpromise(asset){ function fbxpromise(asset){
return new Promise(function(resolve, reject){ return new Promise(function(resolve, reject){
var loader = new THREE.FBXLoader(); var loader = new THREE.FBXLoader();
console.log(asset); // console.log(asset);
// console.log(asset.url);
if(asset.assetType == "static"){ if(asset.assetType == "static"){
loader.load( asset.url, function ( object ) { loader.load( asset.url, function ( object ) {
if(asset.sceneType){ if(asset.sceneType){

View File

@ -23,7 +23,7 @@ export function Lesson3dEditor(dom,lessonData) {
// let stats = new Stats(); // let stats = new Stats();
// dom.appendChild( stats.dom ); // dom.appendChild( stats.dom );
let lessonIndex = 0;
let scope = this; let scope = this;
this.dom = dom; this.dom = dom;
this.nowSceneType = ""; this.nowSceneType = "";

View File

@ -257,6 +257,52 @@ export function JobPaneData() {
}, },
], ],
}, },
{
name:"工程部门",
value:"gcbm",
text:"负责修复设备。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"报警中心",
value:"bjzx",
text:"报告,处理突发应急事件。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{ {
name:"地铁公安", name:"地铁公安",
value:"110", value:"110",

View File

@ -33,7 +33,7 @@ function settexture(materiallist,name,textureurl){
// onLoad回调 // onLoad回调
function ( texture ) { function ( texture ) {
texture.name = name; texture.name = name;
materiallist.push(texture); materiallist[name] = texture;
}, },
// 目前暂不支持onProgress的回调 // 目前暂不支持onProgress的回调

View File

@ -473,7 +473,7 @@ class SkinCode extends defaultStyle {
borderColor: '#FE0000', // 道岔边框颜色 borderColor: '#FE0000', // 道岔边框颜色
lossColor: '#FFFFFF', // 道岔失去颜色 lossColor: '#FFFFFF', // 道岔失去颜色
locateColor: '#00FF00', // 道岔定位颜色 locateColor: '#00FF00', // 道岔定位颜色
inversionColor: '#9C9D09', // 道岔反位颜色 inversionColor: '#EDBD65', // 道岔反位颜色
monolockLocationColor: '#ea282c', // 道岔单锁'定位'颜色 monolockLocationColor: '#ea282c', // 道岔单锁'定位'颜色
monolockInversionColor: '#ea282c', // 道岔单锁'反位'颜色 monolockInversionColor: '#ea282c', // 道岔单锁'反位'颜色
block: true, // 封锁名称 block: true, // 封锁名称

View File

@ -153,6 +153,8 @@ class Painter {
trainDevice.overLapIndex = index; trainDevice.overLapIndex = index;
trainDevice.instance && this.mapInstanceLevel[deviceType.Train].remove(trainDevice.instance); trainDevice.instance && this.mapInstanceLevel[deviceType.Train].remove(trainDevice.instance);
trainDevice.instance = null; trainDevice.instance = null;
trainDevice.zrOffsetX = this.$jmap.$options.offsetX;
trainDevice.zrOffsetY = this.$jmap.$options.offsetY;
this.add(trainDevice); this.add(trainDevice);
}); });

View File

@ -66,15 +66,7 @@ class ESafeDoor extends Group {
} }
setState(model) { setState(model) {
if (model.fault) { model.screenDoorOpenStatus == 0 ? this.safeC.show() : this.safeC.hide();
if (model.fault == 'PSD_CANNOT_BE_OPENED') {
this.safeC.hide();
} else if (model.fault == 'PSD_CANNOT_BE_CLOSED') {
this.safeC.show();
}
} else {
model.screenDoorOpenStatus == 0 ? this.safeC.show() : this.safeC.hide();
}
if (model.interlockRelease) { if (model.interlockRelease) {
const style = this.model.style; const style = this.model.style;
this.setColor(style.Psd.safetyDoorNormal.splitDoorColor); this.setColor(style.Psd.safetyDoorNormal.splitDoorColor);

View File

@ -612,8 +612,12 @@ class Signal extends Group {
} }
} else { } else {
this.cbtcStatus = ''; this.cbtcStatus = '';
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.greenColor); if (parseInt(this.model.lampPositionType) === 2) {
this.lamps[1] && this.lamps[1].setColor(this.style.backgroundColor); // 设置黑色 this.lamps[1] && this.lamps[1].setColor(this.style.Signal.lamp.greenColor);
this.lamps[0] && this.lamps[0].setColor(this.style.backgroundColor); // 设置黑色
} else {
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.greenColor);
}
this.virtualSignal && this.virtualSignal.setColor(this.style.Signal.lamp.blueColor); this.virtualSignal && this.virtualSignal.setColor(this.style.Signal.lamp.blueColor);
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色 if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
this.sigPost.setColor('#00FF00'); this.sigPost.setColor('#00FF00');
@ -636,8 +640,12 @@ class Signal extends Group {
} }
} else { } else {
this.cbtcStatus = ''; this.cbtcStatus = '';
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.yellowColor); if (parseInt(this.model.lampPositionType) === 2) {
this.lamps[1] && this.lamps[1].setColor(this.style.backgroundColor); this.lamps[1] && this.lamps[1].setColor(this.style.Signal.lamp.yellowColor);
this.lamps[0] && this.lamps[0].setColor(this.style.backgroundColor);
} else {
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.yellowColor);
}
if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色 if (this.style.Signal.lamp.guidName === 'doubleAndBase') { // 设置底座颜色
this.sigPost.setColor('#00FF00'); this.sigPost.setColor('#00FF00');
if (this.model.logicLight) { // 设置哈尔滨逻辑点灯 颜色 if (this.model.logicLight) { // 设置哈尔滨逻辑点灯 颜色

View File

@ -38,7 +38,7 @@ class EReentry extends Group {
setColor(color) { setColor(color) {
this.create(); this.create();
this.reentry.setStyle('textFill', color); this.reentry.setStyle('fill', color);
} }
hideMode() { hideMode() {
@ -56,16 +56,16 @@ class EReentry extends Group {
setState(model) { setState(model) {
const style = this.model.style; const style = this.model.style;
let reentryStrategy = ''; let typeStrategy = '';
if (model.reentryStrategy !== '04') { if (model.typeStrategy !== '04') {
reentryStrategy = model.reentryStrategy; typeStrategy = model.typeStrategy;
} else { } else {
reentryStrategy = model.defaultReentryStrategy; typeStrategy = model.defaultReentryStrategy;
} }
switch (reentryStrategy) { switch (typeStrategy) {
case 'DEFAULT': /** 默认*/ case 'DEFAULT': /** 默认*/
case 'NONE': { case 'NONE': {
this.reentry && this.reentry.hideMode(); /** 无折返策略*/ this.reentry && this.hideMode(); /** 无折返策略*/
break; break;
} }
case 'UNMANNED': { case 'UNMANNED': {

View File

@ -171,7 +171,18 @@ class EMouse extends Group {
} }
mouseover() { mouseover() {
if (this.device.model.style.Train.common.trainTip) { if (this.device.model.style.Train.common.trainTip) {
const zrRect = { x: this.device.model.model.zrOffsetX, y: this.device.model.model.zrOffsetY, width: store.state.config.width, height: store.state.config.height };
this.device.deviceModel.__down = true; this.device.deviceModel.__down = true;
const arrowTextRect = this.arrowText.getBoundingRect();
const zrRectX = zrRect.x + zrRect.width;
const zrRectY = zrRect.y + zrRect.height;
const arrowTextRectX = arrowTextRect.x + arrowTextRect.width;
const arrowTextRectY = arrowTextRect.y + arrowTextRect.height;
if (arrowTextRectX > zrRectX || arrowTextRectY > zrRectY) {
const offsetX = arrowTextRectX > zrRectX ? arrowTextRectX - zrRectX : 0;
const offsetY = arrowTextRectY > zrRectY ? arrowTextRectY - zrRectY : 0;
this.arrowText.setStyle({ x: this.device.model.point.x + 50 - offsetX, y: this.device.model.point.y + 25 - offsetY });
}
this.arrowText.show(); this.arrowText.show();
} }
if (this.device.style.Train.mouseOverStyle) { if (this.device.style.Train.mouseOverStyle) {

View File

@ -223,6 +223,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -365,6 +369,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -136,6 +136,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -275,6 +279,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -119,6 +119,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -246,6 +250,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -5,7 +5,7 @@
:class="systemName+' route-hand-control'" :class="systemName+' route-hand-control'"
:title="title" :title="title"
:visible.sync="show" :visible.sync="show"
:width="systemName == 'xian-01__systerm'?'400px':'300px'" :width="width"
:before-close="doClose" :before-close="doClose"
:z-index="2000" :z-index="2000"
:modal="false" :modal="false"
@ -63,6 +63,11 @@
<!-- :disabled="scope.row.disabled" --> <!-- :disabled="scope.row.disabled" -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="systemName === 'xian-01__systerm'" width="200">
<template slot-scope="scope">
<span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ getProtectedSectionName(scope.row) }}</span>
</template>
</el-table-column>
</el-table> </el-table>
</div> </div>
<el-row> <el-row>
@ -132,7 +137,8 @@ export default {
computed: { computed: {
...mapGetters('map', [ ...mapGetters('map', [
'signalList', 'signalList',
'routeData' 'routeData',
'overlapData'
]), ]),
show() { show() {
return this.dialogShow && !this.$store.state.menuOperation.break; return this.dialogShow && !this.$store.state.menuOperation.break;
@ -140,6 +146,9 @@ export default {
domIdCancel() { domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : ''; return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
}, },
width() {
return this.systemName === 'xian-01__systerm' ? '500px' : '300px';
},
domIdChoose() { domIdChoose() {
if (this.dialogShow) { if (this.dialogShow) {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) { if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
@ -291,6 +300,19 @@ export default {
}); });
}, },
getProtectedSectionName(row) {
let name = '';
if (row && row.overlapCode && this.overlapData[row.overlapCode] &&
this.overlapData[row.overlapCode].pathList.length &&
this.overlapData[row.overlapCode].pathList[0].switchPositionList.length) {
const switchLength = this.overlapData[row.overlapCode].pathList[0].switchPositionList.length;
const switchDevice = this.$store.getters['map/getDeviceByCode'](this.overlapData[row.overlapCode].pathList[0].switchPositionList[switchLength - 1].switchCode);
if (switchDevice) {
name = switchDevice.name + (this.overlapData[row.overlapCode].pathList[0].switchPositionList[switchLength - 1].normal ? '定位保护' : '反位保护');
}
}
return name;
},
allSelectChange() { allSelectChange() {
this.changeList = []; this.changeList = [];
if (this.allSelect) { if (this.allSelect) {

View File

@ -116,6 +116,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -209,6 +213,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -127,6 +127,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -262,6 +266,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -96,6 +96,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -237,6 +241,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -207,6 +207,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -335,6 +339,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -208,6 +208,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -335,6 +339,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
nextStation() { nextStation() {
const group = this.$route.query.group; const group = this.$route.query.group;
const param = { const param = {

View File

@ -211,6 +211,10 @@ export default {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
}, },
{
label: '触发故障管理',
handler: this.triggerFaultManagement
},
{ {
label: '托管', label: '托管',
handler: this.setCollocation handler: this.setCollocation
@ -361,6 +365,9 @@ export default {
} }
}); });
}, },
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
},
// //
setLink() { setLink() {
commitOperate(menuOperate.Common.setLink, { code: this.selected.code }, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Common.setLink, { code: this.selected.code }, 0).then(({valid, operate})=>{

View File

@ -102,19 +102,13 @@ export default {
methods: { methods: {
getProtectedSectionName(row) { getProtectedSectionName(row) {
let name = ''; let name = '';
if (row && if (row && row.overlapCode && this.overlapData[row.overlapCode] &&
row.overlapSectionList && this.overlapData[row.overlapCode].pathList.length &&
row.overlapSectionList && this.overlapData[row.overlapCode].pathList[0].switchPositionList.length) {
row.overlapSectionList.length > 0) { const switchLength = this.overlapData[row.overlapCode].pathList[0].switchPositionList.length;
const switchDevice = this.$store.getters['map/getDeviceByCode'](this.overlapData[row.overlapCode].pathList[0].switchPositionList[switchLength - 1].switchCode);
const protect = row.overlapSectionList[0]; if (switchDevice) {
name = `${protect.name}`; name = switchDevice.name + (this.overlapData[row.overlapCode].pathList[0].switchPositionList[switchLength - 1].normal ? '定位保护' : '反位保护');
if (protect.parentName) {
name = `${protect.parentName}${protect.name}`;
}
const station = this.$store.getters['map/getDeviceByCode'](protect.stationCode);
if (station) {
name = `${name}(${station.name})`;
} }
} }
return name; return name;

View File

@ -74,7 +74,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar'); val && this.$store.dispatch('config/updateMenuBar');
}, },
'$store.state.menuOperation.menuCount': function (val) { '$store.state.menuOperation.menuCount': function (val) {
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Cancel) && this.$store.state.training.prdType == '02') { // && this.$store.state.training.prdType == '02'
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Cancel)) {
this.popDoShow(this.$store.state.menuOperation.menuPosition); this.popDoShow(this.$store.state.menuOperation.menuPosition);
} else { } else {
this.popDoClose(); this.popDoClose();
@ -118,30 +119,71 @@ export default {
}, },
initMenu() { initMenu() {
this.menuNormal = []; this.menuNormal = [];
this.$store.state.map.map.stationList.forEach(station => { if (this.$store.state.training.prdType == '02') {
if (station.relStationCodeList && station.relStationCodeList.length) { this.$store.state.map.map.stationList.forEach(station => {
const node = { if (station.relStationCodeList && station.relStationCodeList.length) {
label: station.name, const node = {
children: [] label: station.name,
}; children: []
const relStationCodeList = [...station.relStationCodeList]; };
relStationCodeList.push(station.code); const relStationCodeList = [...station.relStationCodeList];
relStationCodeList.sort((a, b) => { relStationCodeList.push(station.code);
relStationCodeList.sort((a, b) => {
const stationA = this.$store.getters['map/getDeviceByCode'](a);
const stationB = this.$store.getters['map/getDeviceByCode'](b);
return stationA.kmRange - stationB.kmRange;
});
relStationCodeList.forEach(item => {
const next = this.$store.getters['map/getDeviceByCode'](item);
node.children.push({
code: next.code,
label: next.name,
handler: this.mapLocation
});
});
this.menuNormal.push(node);
}
});
} else if (this.$store.state.training.prdType == '01') {
const roleDeviceCode = this.$store.state.training.roleDeviceCode;
const displayList = this.$store.state.map.map.displayList;
const display = displayList.find(each=>{
return each.stationCodeList.includes(roleDeviceCode);
});
if (display) {
const codeList = [...display.switchStationCodeList];
let relStationCodeList = [];
let ciStaionCode = '';
codeList.sort((a, b) => {
const stationA = this.$store.getters['map/getDeviceByCode'](a); const stationA = this.$store.getters['map/getDeviceByCode'](a);
const stationB = this.$store.getters['map/getDeviceByCode'](b); const stationB = this.$store.getters['map/getDeviceByCode'](b);
if (stationA.relStationCodeList && stationA.relStationCodeList.length > 0 && relStationCodeList.length <= 0) {
relStationCodeList = [...stationA.relStationCodeList];
ciStaionCode = stationA.code;
relStationCodeList.push(stationA.code);
}
return stationA.kmRange - stationB.kmRange; return stationA.kmRange - stationB.kmRange;
}); });
relStationCodeList.forEach(item => { const ciStaion = this.$store.getters['map/getDeviceByCode'](ciStaionCode);
const next = this.$store.getters['map/getDeviceByCode'](item); const currentNode = {label: ciStaion.name, children: []};
node.children.push({ codeList.forEach(code=>{
code: next.code, let node;
label: next.name, const station = this.$store.getters['map/getDeviceByCode'](code);
handler: this.mapLocation if (station.depot) {
}); return;
}
if (relStationCodeList.includes(code)) {
currentNode.children.push({label: station.name, code: station.code, handler: this.mapLocation});
if (currentNode.children.length == relStationCodeList.length) {
this.menuNormal.push(currentNode);
}
} else {
node = {label: station.name, code: station.code, handler: this.mapLocation};
this.menuNormal.push(node);
}
}); });
this.menuNormal.push(node);
} }
}); }
this.menu = [...this.menuNormal]; this.menu = [...this.menuNormal];
}, },
popDoClose() { popDoClose() {

View File

@ -5,7 +5,7 @@
<!--<div class="holdTrainStatus">H</div>--> <!--<div class="holdTrainStatus">H</div>-->
<!--<div class="jumpStopStatus">S</div>--> <!--<div class="jumpStopStatus">S</div>-->
<!--</div>--> <!--</div>-->
<station-control-convert ref="stationControlConvert" /> <station-control-convert ref="stationControlConvert" @warningInfoDoShow="warningInfoDoShow" />
<password-box ref="passwordBox" @setLoginResult="getLoginResult" /> <password-box ref="passwordBox" @setLoginResult="getLoginResult" />
<view-train-id ref="viewTrainId" /> <view-train-id ref="viewTrainId" />
<view-name ref="viewName" /> <view-name ref="viewName" />
@ -15,6 +15,7 @@
<train-delete ref="trainDelete" /> <train-delete ref="trainDelete" />
<manage-user ref="manageUser" /> <manage-user ref="manageUser" />
<help-about ref="helpAbout" /> <help-about ref="helpAbout" />
<warning-info ref="warningInfo" />
<!-- <delete-runplan-line ref="deleteRunplanLine" /> --> <!-- <delete-runplan-line ref="deleteRunplanLine" /> -->
<!-- <add-runplan-line ref="addRunplanLine" /> --> <!-- <add-runplan-line ref="addRunplanLine" /> -->
</div> </div>
@ -23,6 +24,7 @@
import MenuBar from '@/jmapNew/theme/components/menus/menuBar'; import MenuBar from '@/jmapNew/theme/components/menus/menuBar';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js';
import StationControlConvert from './menuDialog/stationControlConvert'; import StationControlConvert from './menuDialog/stationControlConvert';
import WarningInfo from './menuDialog/warningInfo';
import TrainAdd from './menuDialog/trainAdd'; import TrainAdd from './menuDialog/trainAdd';
// import AddRunplanLine from './menuDialog/addRunplanLine'; // import AddRunplanLine from './menuDialog/addRunplanLine';
import TrainTranstalet from './menuDialog/trainTranstalet'; import TrainTranstalet from './menuDialog/trainTranstalet';
@ -50,7 +52,8 @@ export default {
TrainTranstalet, TrainTranstalet,
TrainDelete, TrainDelete,
ManageUser, ManageUser,
HelpAbout HelpAbout,
WarningInfo
// DeleteRunplanLine // DeleteRunplanLine
}, },
props: { props: {
@ -484,6 +487,9 @@ export default {
blankClickClose() { blankClickClose() {
this.$refs.menuBar.doClose(); this.$refs.menuBar.doClose();
}, },
warningInfoDoShow(info) {
this.$refs.warningInfo.doShow(info);
},
undeveloped() { undeveloped() {
this.$refs.menuBar.doClose(); this.$refs.menuBar.doClose();
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), { this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {

View File

@ -153,6 +153,12 @@ export default {
'$store.state.map.controlTransfer':function (controlTransferList) { '$store.state.map.controlTransfer':function (controlTransferList) {
controlTransferList.forEach(controlTransfer=>{ controlTransferList.forEach(controlTransfer=>{
this.updateTableValue(controlTransfer); this.updateTableValue(controlTransfer);
if (controlTransfer.applicantId && this.$store.state.training.memberData[controlTransfer.applicantId] &&
this.$store.state.training.memberData[controlTransfer.applicantId].userId == this.$store.state.user.id &&
this.$store.state.training.prdType === '01'
) {
this.$emit('warningInfoDoShow', controlTransfer);
}
}); });
}, },
// //
@ -164,7 +170,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.loadTableData(); // this.loadTableData();
}, },
methods: { methods: {
updateTableValue(controlTransfer) { updateTableValue(controlTransfer) {
@ -241,15 +247,37 @@ export default {
} }
}, },
initTableDataStatus() { initTableDataStatus() {
this.tableData.forEach(row => { this.tableData = [];
row.disabled = this.checkBoxDisabled(row); if (this.$store.state.training.prdType === '02') {
row.check = false; this.stationList && this.stationList.forEach(station => {
row.result = ''; if (station.createControlMode) {
const control = this.$store.getters['map/getDeviceByCode'](row.code); const control = this.$store.getters['map/getDeviceByCode'](station.code);
if (control) { this.tableData.push({
row.control = this.controlProps[control.controlMode]; code: station.code,
} operate: station.name || '',
}); control: control ? this.controlProps[control.controlMode] : '',
check: false,
disabled: this.checkBoxDisabled(station),
status: '正常',
result: ''
});
}
});
} else if (this.$store.state.training.prdType === '01') {
const stationCodeList = this.$store.state.map.stationControlMap[this.$store.state.training.roleDeviceCode];
stationCodeList && stationCodeList.forEach(stationCode => {
const station = this.$store.getters['map/getDeviceByCode'](stationCode);
this.tableData.push({
code: station.code,
operate: station.name || '',
control: station ? this.controlProps[station.controlMode] : '',
check: false,
disabled: this.checkBoxDisabled(station),
status: '正常',
result: ''
});
});
}
}, },
doShow(operate) { doShow(operate) {
if (!this.dialogShow) { if (!this.dialogShow) {

View File

@ -0,0 +1,105 @@
<template>
<el-dialog
v-dialogDrag
class="xian-01__systerm station-control-convert"
title="0级报警详细信息"
:visible.sync="show"
width="900px"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div style="font-size: 14px;color: #000;">
<el-row>
<el-col :span="8" style="display: flex;">
<div>线路名称</div>
<div style="width: 180px;" class="border-style">{{ $store.state.map.mapName }}</div>
</el-col>
<el-col :span="8" style="display: flex;">
<div>单位名称</div>
<div style="width: 180px;" class="border-style">{{ stationName }}</div>
</el-col>
<el-col :span="8" style="display: flex;">
<div>模块名称</div>
<div style="width: 180px;" class="border-style">CMM控制模式转换模块</div>
</el-col>
</el-row>
<el-row style="margin-top: 10px;">
<el-col :span="8" style="display: flex;">
<div>报警时间</div>
<div style="width: 180px;" class="border-style">{{ time }}</div>
</el-col>
<el-col :span="8" style="display: flex;">
<div>&#12288&#12288</div>
<div style="width: 180px;" class="border-style">0级告警</div>
</el-col>
<el-col :span="8" style="display: flex;">
<div>确认状态</div>
<div style="width: 180px;" class="border-style">未确认</div>
</el-col>
</el-row>
<el-row style="margin-top: 10px;">
<el-col :span="12" style="display: flex;">
<div>&#12288&#12288</div>
<div style="width: 325px;" class="border-style">系统事件</div>
</el-col>
<el-col :span="12" style="display: flex;">
<div>&#8194&#8194</div>
<div style="width: 325px;" class="border-style">依据信号设备操作命令设置控制模式</div>
</el-col>
</el-row>
<el-row style="display: flex;margin-top: 10px;">
<div>事件摘要</div>
<div style="width: 760px;" class="border-style">控制模式转换</div>
</el-row>
<el-row style="display: flex;margin-top: 10px;">
<div>推荐操作</div>
<div style="width: 760px;" class="border-style" />
</el-row>
<el-row style="margin-top: 10px;">
<span>报警详细描述</span>
<div style="width: 825px;margin-left: 0;height: 80px;" class="border-style">{{ `控制模式转换:${stationName}由中控模式转为站控模式!` }}</div>
</el-row>
<div style="text-align: center;margin-top: 10px;">
<el-button @click="doClose">确认</el-button>
<span>未确认0级报警数目1</span>
</div>
</div>
</el-dialog>
</template>
<script>
import { parseTime } from '@/utils/index';
export default {
name: 'WarningInfo',
data() {
return {
show: false,
stationName: '',
time: ''
};
},
methods: {
doClose() {
this.show = false;
},
doShow(info) {
const station = this.$store.getters['map/getDeviceByCode'](info.code);
this.stationName = station.name;
this.time = parseTime(this.$store.state.training.initTime);
this.show = true;
}
}
};
</script>
<style scoped>
.border-style {
border-top: 2px solid #858585;
border-left: 2px solid #858585;
border-right: 2px solid #F2F2F2;
border-bottom: 2px solid #F2F2F2;
padding: 0 10px;
margin-left: 10px;
}
</style>

View File

@ -263,6 +263,14 @@ export default {
initMenu() { initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal); this.menu = MenuContextHandler.covert(this.menuNormal);
// //
const menuItem = this.menu.find( item => item.cmdType === CMD.Signal.CMD_SIGNAL_SET_CI_AUTO);
const menuItemDisabled = menuItem.disabled;
menuItem.disabled = true;
this.routeList.forEach(route => {
if (route.startSignalCode === this.selected.code && route.flt) {
menuItem.disabled = menuItemDisabled;
}
});
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT) {
this.menu = this.menuForce; this.menu = this.menuForce;
} }

View File

@ -120,6 +120,10 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '触发故障管理',
handler: this.triggerFaultManagement
} }
], ],
menuDirective: [ menuDirective: [
@ -528,6 +532,9 @@ export default {
callback: action => { callback: action => {
} }
}); });
},
triggerFaultManagement() {
this.$store.dispatch('training/setTriggerFaultCount', this.selected);
} }
// // // //
// switchTrainId() { // switchTrainId() {

View File

@ -29,7 +29,7 @@ export const MapDeviceType = {
/** 设备故障类型 */ /** 设备故障类型 */
export const deviceFaultType = { export const deviceFaultType = {
Section: [ Section: [
{label: '计轴故障', value: 'FAULT'}, {label: '红光带故障', value: 'FAULT'},
{label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'}, {label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'},
{label: '橙光带故障', value: 'ARB'} {label: '橙光带故障', value: 'ARB'}
// {label: '计轴干扰', value: 'DISTURBANCE'} // {label: '计轴干扰', value: 'DISTURBANCE'}
@ -43,7 +43,7 @@ export const deviceFaultType = {
{label: '反位失表', value: 'REVERSE_SPLIT'}, {label: '反位失表', value: 'REVERSE_SPLIT'},
{label: '挤岔', value: 'SQUEEZE'}, {label: '挤岔', value: 'SQUEEZE'},
{label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'}, {label: '通信车占用', value: 'CBTC_OCCUPIED_FAULT'},
{label: '计轴故障', value: 'AXLE_FAULT'}, {label: '红光带故障', value: 'AXLE_FAULT'},
{label: '橙光带故障', value: 'ARB'} {label: '橙光带故障', value: 'ARB'}
// {label: '道岔区段计轴故障', value: 'AXLE_FAULT'} // {label: '道岔区段计轴故障', value: 'AXLE_FAULT'}
], ],
@ -61,7 +61,8 @@ export const deviceFaultType = {
], ],
Train: [ Train: [
{label: '通信异常', value: 'COMMUNICATION_ABNORMAL'}, {label: '通信异常', value: 'COMMUNICATION_ABNORMAL'},
{label: '驾驶故障', value: 'DRIVE_FAULT'} {label: '驾驶故障', value: 'DRIVE_FAULT'},
{label: '突然EB', value: 'SUDDEN_EB' }
], ],
Power:[ Power:[
{label: '供电故障', value: 'FAULT'} {label: '供电故障', value: 'FAULT'}
@ -70,7 +71,7 @@ export const deviceFaultType = {
/** 设备故障类型map */ /** 设备故障类型map */
export const deviceFaultMap = { export const deviceFaultMap = {
Section: { Section: {
FAULT: '计轴故障', FAULT: '红光带故障',
CBTC_OCCUPIED_FAULT: '通信车占用', CBTC_OCCUPIED_FAULT: '通信车占用',
ARB: '橙光带故障' ARB: '橙光带故障'
}, },
@ -83,7 +84,7 @@ export const deviceFaultMap = {
REVERSE_SPLIT: '反位失表', REVERSE_SPLIT: '反位失表',
SQUEEZE: '挤岔', SQUEEZE: '挤岔',
CBTC_OCCUPIED_FAULT: '通信车占用', CBTC_OCCUPIED_FAULT: '通信车占用',
AXLE_FAULT: '计轴故障', AXLE_FAULT: '红光带故障',
ARB: '橙光带故障' ARB: '橙光带故障'
}, },
StationStand: { StationStand: {

View File

@ -246,7 +246,8 @@ const map = {
controlTransfer:[], // 控制权转移消息 controlTransfer:[], // 控制权转移消息
mapDataParseCount: 0, mapDataParseCount: 0,
foldLineMap: {}, // 现地折行线map数据 foldLineMap: {}, // 现地折行线map数据
clearButtonCount: 0 // 清除操作按钮计数器 clearButtonCount: 0, // 清除操作按钮计数器
stationControlMap: {} // 站控显示的map { 当前车站:显示车站列表 }
}, },
getters: { getters: {
@ -718,6 +719,18 @@ const map = {
state.foldLineMap = foldLineMap; state.foldLineMap = foldLineMap;
const parser = parserFactory(ParserType.Graph.value); const parser = parserFactory(ParserType.Graph.value);
state.mapDevice = parser.parser(map, map.skinVO.code, showConfig); state.mapDevice = parser.parser(map, map.skinVO.code, showConfig);
state.stationControlMap = {};
map.stationList.forEach(station => {
if (station.ciStation) {
const centrailzedList = [station.code];
station.relStationCodeList.forEach(relStationCode => {
state.stationControlMap[relStationCode] = centrailzedList;
if (state.mapDevice[relStationCode].centralized) {
centrailzedList.push(relStationCode);
}
});
}
});
Vue.prototype.$jlmap && Vue.prototype.$jlmap.setMapDevice(state.mapDevice); Vue.prototype.$jlmap && Vue.prototype.$jlmap.setMapDevice(state.mapDevice);
} else { } else {
state.map = null; state.map = null;
@ -905,9 +918,9 @@ const map = {
const holdIndex = state.holdStandList.indexOf(status.code); const holdIndex = state.holdStandList.indexOf(status.code);
const jumpIndex = state.jumpStandList.indexOf(status.code); const jumpIndex = state.jumpStandList.indexOf(status.code);
const device = state.mapDevice[status.code]; const device = state.mapDevice[status.code];
if ((device.stationHoldTrain || device.centerHoldTrain) && holdIndex < 0) { if ((device.stationHoldTrain || device.centerHoldTrain || device.ibpHoldTrain) && holdIndex < 0) {
state.holdStandList.push(device.code); state.holdStandList.push(device.code);
} else if (!(device.stationHoldTrain || device.centerHoldTrain) && holdIndex > -1) { } else if (!(device.stationHoldTrain || device.centerHoldTrain || device.ibpHoldTrain) && holdIndex > -1) {
state.holdStandList.splice(holdIndex, 1); state.holdStandList.splice(holdIndex, 1);
} }
state.holdStatus = state.holdStandList.length > 0; state.holdStatus = state.holdStandList.length > 0;

View File

@ -2,11 +2,11 @@ export function getBaseUrl() {
let BASE_API; let BASE_API;
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud'; // 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.107:9000'; // 袁琪 // BASE_API = 'http://192.168.8.107:9000'; // 袁琪
// BASE_API = 'http://192.168.2.175:9000'; // 旭强 有线 // BASE_API = 'http://192.168.2.175:9000'; // 旭强 有线
// BASE_API = 'http://192.168.8.114:9000'; // 旭强 无线 // BASE_API = 'http://192.168.8.114:9000'; // 旭强 无线
BASE_API = 'http://192.168.2.183:9000'; // 张赛 // BASE_API = 'http://192.168.2.183:9000'; // 张赛
// BASE_API = 'http://192.168.8.140:9000'; // 杜康 // BASE_API = 'http://192.168.8.140:9000'; // 杜康
// BASE_API = 'http://b29z135112.zicp.vip'; // BASE_API = 'http://b29z135112.zicp.vip';
// BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康 // BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康

View File

@ -1,7 +1,7 @@
<template> <template>
<div id="textStatus" class="icon-box" :style="{top: offset+'px'}"> <div id="textStatus" class="icon-box" :style="{top: offset+'px'}">
<div class="textStatus" style="cursor: pointer;" :style="{background: holdBackground}" @contextmenu="showHoldStationPop">H</div> <div class="textStatus" style="cursor: pointer;" :style="{background: holdBackground}" @mouseenter="showHoldStatus" @mouseleave="hideHoldStatus" @contextmenu="showHoldStationPop">H</div>
<div class="textStatus" style="cursor: pointer;" :style="{background: jumpBackground}" @contextmenu="showJumpStationPop">S</div> <div class="textStatus" style="cursor: pointer;" :style="{background: jumpBackground}" @mouseenter="showJumpStatus" @mouseleave="hideJumpStatus" @contextmenu="showJumpStationPop">S</div>
<pop-tip v-show="popShow" :position="position" :tip="tip" /> <pop-tip v-show="popShow" :position="position" :tip="tip" />
<pop-menu ref="popMenu" :menu="menu" pop-menu-class="statusIcon" /> <pop-menu ref="popMenu" :menu="menu" pop-menu-class="statusIcon" />
</div> </div>
@ -117,6 +117,44 @@ export default {
}, },
setCenter(val) { setCenter(val) {
this.$jlmap && this.$jlmap.setCenter(val.code); this.$jlmap && this.$jlmap.setCenter(val.code);
},
showHoldStatus(e) {
if (this.$store.state.map.holdStandList.length) {
this.popShow = true;
this.position.x = e.clientX;
this.position.y = e.clientY;
this.tip = '扣车提示:<br>';
this.$store.state.map.holdStandList.forEach(item => {
const stand = this.$store.getters['map/getDeviceByCode'](item);
const station = this.$store.getters['map/getDeviceByCode'](stand.stationCode);
const dir = stand.right ? '上行站台' : '下行站台';
if (stand) {
this.tip = this.tip + station.name + ':<br>' + dir + '站台存在扣车命令<br>';
}
});
}
},
hideHoldStatus(e) {
this.popShow = false;
},
showJumpStatus(e) {
if (this.$store.state.map.jumpStandList.length) {
this.popShow = true;
this.position.x = e.clientX;
this.position.y = e.clientY;
this.tip = '跳停提示:<br>';
this.$store.state.map.jumpStandList.forEach(item => {
const stand = this.$store.getters['map/getDeviceByCode'](item);
const station = this.$store.getters['map/getDeviceByCode'](stand.stationCode);
const dir = stand.right ? '上行站台' : '下行站台';
if (stand) {
this.tip = this.tip + station.name + ':<br>' + dir + '站台存在跳停命令<br>';
}
});
}
},
hideJumpStatus(e) {
this.popShow = false;
} }
} }
}; };

View File

@ -12,8 +12,8 @@
<div class="directbutton" style="top:36px;right:0;">{{ $t('jlmap3d.later') }}</div> <div class="directbutton" style="top:36px;right:0;">{{ $t('jlmap3d.later') }}</div>
</div> </div>
<div id="div1" class ="pane-box"> <div id="div1" class ="pane-box" >
<img class="paneimg" :src="pane"/> <img class="paneimg" :src="pane" @mouseout="speedout"/>
<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: 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: '70px'}">0</div>
<div class="panelb" :style="{right: isZh? '80px': '80px', top: isZh? '130px': '130px'}">{{ $t('jlmap3d.braking') }}</div> <div class="panelb" :style="{right: isZh? '80px': '80px', top: isZh? '130px': '130px'}">{{ $t('jlmap3d.braking') }}</div>
@ -242,13 +242,16 @@
console.log(error); console.log(error);
}) })
,200,true); ,200,true);
updatemmic1(this.move); // updatemmic1(this.move);
}, },
speedend: function(event){ speedend: function(event){
document.getElementById("div1").onmousemove = null; document.getElementById("div1").onmousemove = null;
document.getElementById("div2").onmouseup = null; document.getElementById("div2").onmouseup = null;
}, },
speedout: function(event){
document.getElementById("div1").onmousemove = null;
document.getElementById("div2").onmouseup = null;
},
click:function(){// click:function(){//
@ -317,8 +320,8 @@
if(mx<px&&my<py){//鼠标在第二象限 if(mx<px&&my<py){//鼠标在第二象限
angle = 360 - angle; angle = 360 - angle;
} }
console.log(angle); // console.log(angle);
console.log(this.userRole ); // console.log(this.userRole );
if(angle<127 && angle>46){ if(angle<127 && angle>46){
if(angle<63 && angle>46){ if(angle<63 && angle>46){
if(this.touchstate != "Drive"){ if(this.touchstate != "Drive"){
@ -327,7 +330,7 @@
gear:"Drive" gear:"Drive"
}; };
trainSimulationGear(this.group,data).then(netdata => { trainSimulationGear(this.group,data).then(netdata => {
console.log(netdata); // console.log(netdata);
if(netdata.code == "200"){ if(netdata.code == "200"){
this.toutransform = "rotate(140deg)"; this.toutransform = "rotate(140deg)";
this.touchstate = "Drive"; this.touchstate = "Drive";

View File

@ -141,7 +141,7 @@ import axios from 'axios';
methods: { methods: {
changeTrainSelect(mode){ changeTrainSelect(mode){
if(mode == "isTraining"){ if(mode == "isTraining"){
this.isTraining = false; // this.isTraining = false;
} }
}, },
currentsel(selVal){ currentsel(selVal){
@ -380,9 +380,9 @@ import axios from 'axios';
<style> <style>
.drivepane{ .drivepane{
width:30%; width:500px;
height:320px; height:333px;
right:500px; right:0;
bottom:0; bottom:0;
position: absolute; position: absolute;
background-size: 100% 100%; background-size: 100% 100%;

View File

@ -11,7 +11,8 @@
<!-- <el-button type="primary" @click="raystand">站台选择</el-button> --> <!-- <el-button type="primary" @click="raystand">站台选择</el-button> -->
<el-button type="primary" @click="cctvplane">{{ cctvbuttonmsg }}</el-button> <el-button type="primary" @click="cctvplane">{{ cctvbuttonmsg }}</el-button>
<el-button type="primary" @click="showplane">{{ showbuttonmsg }}</el-button> <el-button type="primary" @click="showmmiplane">{{ showbuttonmmimsg }}</el-button>
<el-button type="primary" @click="showtmsplane">{{ showbuttontmsmsg }}</el-button>
<el-button type="primary" @click="back">{{backmsg}}</el-button> <el-button type="primary" @click="back">{{backmsg}}</el-button>
</el-button-group> </el-button-group>
</div> </div>
@ -32,8 +33,7 @@
</div> </div>
<Drive-Mmi v-if="mmishow" ref="mmiui" /> <Drive-Mmi v-if="mmishow" ref="mmiui" />
<Drive-Tms v-if="tmsshow" />
<Drive-Tms v-if="mmishow" />
<Drive-Control v-if="dcontrolshow" ref="dcontrol" @warningmsg="warningmsg" @warningmsgoff="warningmsgoff" /> <Drive-Control v-if="dcontrolshow" ref="dcontrol" @warningmsg="warningmsg" @warningmsgoff="warningmsgoff" />
</div> </div>
@ -86,7 +86,9 @@ export default {
cctvshow:true, cctvshow:true,
cctvbuttonmsg: this.$t('jlmap3d.surveillanceHidden'), cctvbuttonmsg: this.$t('jlmap3d.surveillanceHidden'),
mmishow: false, mmishow: false,
showbuttonmsg: this.$t('jlmap3d.trainInstrumentationDisplay'), tmsshow: false,
showbuttonmmimsg: this.$t('jlmap3d.trainInstrumentationMmiDisplay'),
showbuttontmsmsg: this.$t('jlmap3d.trainInstrumentationTmsDisplay'),
backmsg:this.$t('global.back'), backmsg:this.$t('global.back'),
// trainnum: '', // trainnum: '',
// stoptimes: '', // stoptimes: '',
@ -177,6 +179,7 @@ export default {
}, },
mounted() { mounted() {
this.mmishow = true; this.mmishow = true;
this.tmsshow = true;
// window.datanew = this.datanew; // window.datanew = this.datanew;
window.updatestatus = this.updatestatus; window.updatestatus = this.updatestatus;
@ -290,16 +293,26 @@ export default {
}, },
showplane() { showmmiplane() {
if (this.mmishow == true) { if (this.mmishow == true) {
this.showbuttonmsg = this.$t('jlmap3d.trainInstrumentationHidden'); this.showbuttonmmimsg = this.$t('jlmap3d.trainInstrumentationMmiHidden');
this.mmishow = false; this.mmishow = false;
} else { } else {
this.showbuttonmsg = this.$t('jlmap3d.trainInstrumentationDisplay'); this.showbuttonmmimsg = this.$t('jlmap3d.trainInstrumentationMmiDisplay');
this.mmishow = true; this.mmishow = true;
} }
}, },
showtmsplane() {
if (this.tmsshow == true) {
this.showbuttontmsmsg = this.$t('jlmap3d.trainInstrumentationTmsHidden');
this.tmsshow = false;
} else {
this.showbuttontmsmsg = this.$t('jlmap3d.trainInstrumentationTmsDisplay');
this.tmsshow = true;
}
},
datanew(){ datanew(){
this.dcontrolshow = true; this.dcontrolshow = true;
}, },
@ -425,10 +438,10 @@ export default {
.jlmap3cctv{ .jlmap3cctv{
float: left; float: left;
left: 0; left: 0;
top:0; bottom:333px;
//left:20%; //left:20%;
width: 20%; width:500px;
height: 20%; height:333px;
position:absolute; position:absolute;
z-index: -1; z-index: -1;
} }

View File

@ -27,7 +27,7 @@
</div> </div>
<div class = "right"> <div class = "right">
<div class = "rightstatus narea n-tiaoting" :style="{backgroundImage: 'url(' + nimage + ')' }"> <div class = "rightstatus narea n-tiaoting" :style="{backgroundImage: 'url(' + tiaotingimage + ')' }">
</div> </div>
<div class = "rightstatus darea d-info" :style="{backgroundImage: 'url(' + dimage + ')' }"> <div class = "rightstatus darea d-info" :style="{backgroundImage: 'url(' + dimage + ')' }">
</div> </div>
@ -111,11 +111,13 @@ export default {
nowspeed:0, nowspeed:0,
nowatpspeed:0, nowatpspeed:0,
nowatospeed:0, nowatospeed:0,
oldspeed:0,
endstation:'', endstation:'',
nextstation:'', nextstation:'',
mmimodel:null, mmimodel:null,
nstate:"tiaoting", tiaotingjump:"false",
nimage:null, tiaotinghold:"false",
tiaotingimage:null,
dstate:"info", dstate:"info",
dimage:null, dimage:null,
m1state:null, m1state:null,
@ -125,13 +127,15 @@ export default {
m3state:"zhefan", m3state:"zhefan",
m3image:null, m3image:null,
m4state:"out", m4state:"out",
m4parking:false,
m4inTheStandArea:false,
m4image:null, m4image:null,
m5stateleft:false, m5stateleft:false,
m5stateright:false, m5stateright:false,
m5image:null, m5image:null,
m6state:"fache", m6state:"fache",
m6image:null, m6image:null,
m7state:"aoac", m7state:"aomc",
m7image:null, m7image:null,
m8state:"jinjizhidong", m8state:"jinjizhidong",
m8image:null, m8image:null,
@ -179,18 +183,18 @@ export default {
this.setimage(); this.setimage();
}, },
setimage(){ setimage(){
this.nimage = this.images.n['tiaoting']; this.tiaotingimage = this.images.n['none'];
this.dimage = this.images.d['info']; this.dimage = this.images.d['info'];
this.m1image = this.images.m1['rm']; this.m1image = this.images.m1['rm'];
this.m2image = this.images.m2['cbtc']; this.m2image = this.images.m2['cbtc'];
this.m3image = this.images.m3['zhefan']; this.m3image = this.images.m3['none'];
this.m4image = this.images.m4['out']; this.m4image = this.images.m4['none'];
this.m5image = this.images.m5['noalloffdoor']; this.m5image = this.images.m5['noalloffdoor'];
this.m6image = this.images.m6['fache']; this.m6image = this.images.m6['none'];
this.m7image = this.images.m7['aoac']; this.m7image = this.images.m7['aomc'];
this.m8image = this.images.m8['none']; this.m8image = this.images.m8['none'];
this.m9image = this.images.m9['ato']; this.m9image = this.images.m9['none'];
this.m10image = this.images.m10['jinduan']; this.m10image = this.images.m10['none'];
this.c1image = this.images.c1['none']; this.c1image = this.images.c1['none'];
this.c2image = this.images.c2['none']; this.c2image = this.images.c2['none'];
this.c3image = this.images.c3['normal']; this.c3image = this.images.c3['normal'];
@ -211,7 +215,6 @@ export default {
}, },
updatetrainstatus(newdata){ updatetrainstatus(newdata){
if(typeof(newdata.eb) != "undefined"){ if(typeof(newdata.eb) != "undefined"){
this.updateEbStatus(newdata.eb); this.updateEbStatus(newdata.eb);
@ -227,6 +230,7 @@ export default {
this.updatemmidrivemodelevel(newdata.runLevel,newdata.driveMode,newdata.atoOn,newdata.atpOn); this.updatemmidrivemodelevel(newdata.runLevel,newdata.driveMode,newdata.atoOn,newdata.atpOn);
// this.updatammirunlevel(newdata.runLevel); // this.updatammirunlevel(newdata.runLevel);
// //
@ -241,6 +245,32 @@ export default {
this.updateMmiEndStation(newdata.endStation); this.updateMmiEndStation(newdata.endStation);
} }
if(newdata.jump){
}
if(newdata.parking != undefined){
this.m4parking = newdata.parking;
this.updateM4(newdata);
}
if(newdata.inTheStandArea != undefined){
this.m4inTheStandArea = newdata.inTheStandArea;
this.updateM4(newdata);
}
if(newdata.jump != undefined){
this.tiaotingjump = newdata.jump;
this.updateTiaoting(newdata);
}
if(newdata.hold != undefined){
this.tiaotinghold = newdata.hold;
this.updateTiaoting(newdata);
}
if(newdata.tow != undefined){
updatemmic1(newdata.tow);
}
this.updatemmidoormode(newdata.leftDoorCanClose,newdata.rightDoorCanClose); this.updatemmidoormode(newdata.leftDoorCanClose,newdata.rightDoorCanClose);
}, },
updatemmistate(aaa){ updatemmistate(aaa){
@ -283,6 +313,7 @@ export default {
} }
}else{ }else{
this.nowspeed = parseInt(speed); this.nowspeed = parseInt(speed);
if(this.mmimodel.updatezz){ if(this.mmimodel.updatezz){
this.mmimodel.updatezz(speed); this.mmimodel.updatezz(speed);
} }
@ -303,14 +334,49 @@ export default {
} }
if(this.newa1state != this.a1state){ if(this.newa1state != this.a1state){
this.a1state = this.newa1state; this.a1state = this.newa1state;
} }
this.oldspeed=this.nowspeed;
} }
}, },
updateM4(newdata){
if(newdata.parking != undefined){
if(newdata.parking == true){
this.m4image = this.images.m4['in'];
}
}
if(newdata.inTheStandArea != undefined){
if(newdata.inTheStandArea == true){
this.m4image = this.images.m4['out'];
}
}
if(this.m4parking == false && this.m4inTheStandArea == false){
this.m4image = this.images.m4['none'];
}
},
updateTiaoting(newdata){
if(newdata.jump != undefined){
if(newdata.jump == true){
this.tiaotingimage = this.images.n['tiaoting'];
}
}
if(newdata.hold != undefined){
if(newdata.hold == true){
this.tiaotingimage = this.images.n['kouche'];
}
}
if(this.tiaotingjump == false&& this.tiaotinghold == false){
this.tiaotingimage = this.images.n['none'];
}
},
updatedrivedata(drivedata){ updatedrivedata(drivedata){
// if(drivedata == "breaker"){ // if(drivedata == "breaker"){
// //
@ -409,24 +475,24 @@ export default {
} }
} }
// //
if(this.m9state1){ // if(this.m9state1){
this.m9state1 = atoon; // this.m9state1 = atoon;
if(atoon){ // if(atoon){
//
}else{ // }else{
this.m9image = this.images.m9["ato"]; // this.m9image = this.images.m9["ato"];
// this.c2image = this.images.c2['none']; // // this.c2image = this.images.c2['none'];
} // }
} // }
//
if(this.m9state2 != atpon){ // if(this.m9state2 != atpon){
this.m9state2 = atpon; // this.m9state2 = atpon;
if(atpon){ // if(atpon){
//
}else{ // }else{
this.m9image = this.images.m9["atp"]; // this.m9image = this.images.m9["atp"];
} // }
} // }
}, },
updatemmidoormode(leftDoorCanClose,rightDoorCanClose){ updatemmidoormode(leftDoorCanClose,rightDoorCanClose){
@ -482,25 +548,27 @@ export default {
this.malen = +parseInt(len)/2*10+"px"; this.malen = +parseInt(len)/2*10+"px";
} }
}, },
updatemmic1(qspeed){ updatemmic1(tow){
if(this.nowspeed != 0 ){ if(tow == "1"){
this.newc1state = 'duoxing'; this.c1image = this.images.c1["qianyin"];
}else{
this.newc1state = 'none';
} }
if(qspeed>0){ if(tow == "2"){
this.c1image = this.images.c1["zhidong"];
this.newc1state = 'qianyin';
}else if(qspeed<0){
this.newc1state = 'zhidong';
} }
if(tow == "3"){
this.c1image = this.images.c1["duoxing"];
if(this.c1state != this.newc1state){
this.c1state = this.newc1state;
this.c1image = this.images.c1[this.c1state];
} }
if(tow == "4"){
this.c1image = this.images.c1["none"];
}
// if(tow){
// this.newc1state = 'duoxing';
// }
//
// if(this.c1state != this.newc1state){
// this.c1state = this.newc1state;
// this.c1image = this.images.c1[this.c1state];
// }
}, },
updateMmiNextStation(next){ updateMmiNextStation(next){
if(next){ if(next){
@ -529,7 +597,9 @@ export default {
height:333px; height:333px;
background: black; background: black;
position:absolute; position:absolute;
bottom:0; bottom:333px;
right:0;
// border: 0.1px solid #ffffff;
} }
.meter{ .meter{
width:60%; width:60%;

View File

@ -51,7 +51,8 @@ export default {
background-size:100% 100%; background-size:100% 100%;
position:absolute; position:absolute;
bottom:0; bottom:0;
right:0; left:0;
// border: 0.1px solid #ffffff;
} }
</style> </style>

View File

@ -5,7 +5,9 @@
<el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick"> <el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick">
<el-tab-pane label="课程场景" name="progresslist" > <el-tab-pane label="课程场景" name="progresslist" >
<draggable v-model="lessonData.lessonData.lessonProgress" group="people" @start="drag=true" @end="drag=false" > <draggable v-model="lessonData.lessonData.lessonProgress" group="people" @start="drag=true" @end="drag=false" >
<div class="progressdiv" v-for="(element,index) in lessonData.lessonData.lessonProgress"> <div class="progressdiv"
:style="{'background-image': 'url('+localstatic+'/lesson3d/sc.png)'}"
v-for="(element,index) in lessonData.lessonData.lessonProgress">
<div class="changeprogressdiv" @click="changeProgressView(index)">{{element.progressName}}</div> <div class="changeprogressdiv" @click="changeProgressView(index)">{{element.progressName}}</div>
<div class="delprogressdiv" @click="removeProgress(index)" >X</div> <div class="delprogressdiv" @click="removeProgress(index)" >X</div>
</div> </div>
@ -16,9 +18,14 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="场景三维资源" name="assetlist" > <el-tab-pane label="场景三维资源" name="assetlist" >
<div class="progressdiv" v-for="(elementtrigger,indextrigger) in triggerList" :key="elementtrigger.label"> <div class="progressdiv"
<div class="changeprogressdiv" @click="selectModel(elementtrigger)">{{elementtrigger.label}}</div> v-for="(elementtrigger,indextrigger) in triggerList" :key="elementtrigger.label">
<div class="delprogressdiv" v-if="(elementtrigger.showType == 'loadModel')" @click="deleteModel(elementtrigger)" >X</div>
<div class="progressdivimg"
:style="{'background-image': 'url('+localstatic+'/lesson3d/box.png)'}"/>
<div class="progressdivtext" @click="selectModel(elementtrigger)">{{elementtrigger.label}}</div>
<div class="delprogressdiv" v-if="(elementtrigger.showType == 'loadModel')" @click="deleteModel(elementtrigger)" >删除</div>
</div> </div>
</el-tab-pane> </el-tab-pane>
@ -74,7 +81,7 @@
e.target.classList.remove('hideShadow') e.target.classList.remove('hideShadow')
}, },
handleClick(tab, event) { handleClick(tab, event) {
console.log(tab, event); // console.log(tab, event);
}, },
addProgress(){ addProgress(){
this.$emit('addProgress'); this.$emit('addProgress');
@ -120,13 +127,32 @@
top:5px; top:5px;
} }
.progressdiv{ .progressdiv{
width:100px; width:80px;
height:100px; height:100px;
// display:inline; // display:inline;
margin: 20px; margin: 20px;
float:left; float:left;
border:solid 2px #000; border:solid 1px #409EFF;
}
.progressdivimg{
width:70px;
height:70px;
margin-left: 5px;
left:5px;
background-size: 100%; background-size: 100%;
// display:inline;
float:left;
}
.progressdivtext{
width:80px;
height:30px;
margin: 0;
// display:inline;
float:left;
bottom: 0;
border:solid 1px #409EFF;
font-size: 15px;
} }
.changeprogressdiv{ .changeprogressdiv{
@ -140,11 +166,13 @@
.delprogressdiv{ .delprogressdiv{
// position: relative; // position: relative;
width: 100%; width: 20px;
height: 20%; height: 20px;
right: 0; right: 0;
bottom: 0; top: 0;
border:solid 2px #000; float: right;
// position:absolute;
border:solid 2px #409EFF;
} }
</style> </style>

View File

@ -2,7 +2,7 @@
<div id="lessontoolsdiv" class="lessontoolsdiv"> <div id="lessontoolsdiv" class="lessontoolsdiv">
<el-tabs v-model="activeName" class="activediv" @tab-click="handleClick"> <el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick" tab-position="left" >
<el-tab-pane label="课程组件" style="height:400px" name="lessoncomponent" > <el-tab-pane label="课程组件" style="height:400px" name="lessoncomponent" >
<div v-for="(item,index) in lessonTools" class="tooldiv" > <div v-for="(item,index) in lessonTools" class="tooldiv" >
<div> <div>
@ -19,16 +19,23 @@
<el-tab-pane label="三维资源" name="modelTrigger"> <el-tab-pane label="三维资源" name="modelTrigger">
<!-- <Assets-Model></Assets-Model> --> <!-- <Assets-Model></Assets-Model> -->
<draggable v-model="lessonAssetList" group="lessonAssetList" @start="drag=true" @end="drag=false" > <draggable v-model="lessonAssetList" group="lessonAssetList" @start="drag=true" @end="drag=false" >
<div class="progressdiv" v-for="(item,index) in lessonAssetList" @dragend="createModel($event,item,index)"> <div class="progressdiv" v-for="(item,index) in lessonAssetList"@dragend="createModel($event,item,index)">
{{item.packageName}} <div class="progressdivimg"
:style="{'background-image': 'url('+localstatic+'/lesson3d/box.png)'}"/>
<div class="progressdivtext">{{item.packageName}}</div>
</div> </div>
</draggable> </draggable>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="图片资源列表" name="picasset"> <el-tab-pane label="图片资源列表" name="picasset">
<draggable v-model="picAssetList" group="picasset" @start="drag=true" @end="drag=false"> <draggable v-model="picAssetList" group="picasset" @start="drag=true" @end="drag=false">
<div class="progressdiv" <div class="progressdiv"
:style="{'background-image': 'url('+localStatic+item.url+')'}"
v-for="item in picAssetList" @click="changePicUrl($event,item)"> v-for="item in picAssetList" @click="changePicUrl($event,item)">
<div class="progressdivimg"
:style="{'background-image': 'url('+netStatic+item.url+')'}"/>
<div class="progressdivtext">{{item.packageName}}</div>
</div> </div>
</draggable> </draggable>
<!-- <Assets-Model></Assets-Model> --> <!-- <Assets-Model></Assets-Model> -->
@ -50,6 +57,8 @@
import { BASE_ASSET_API,getMap3dModelData } from '@/api/jlmap3d/assets3d.js' import { BASE_ASSET_API,getMap3dModelData } from '@/api/jlmap3d/assets3d.js'
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
export default { export default {
name: 'LessonTools', name: 'LessonTools',
props:['lessonTools'], props:['lessonTools'],
@ -58,7 +67,8 @@
}, },
data() { data() {
return { return {
localStatic:BASE_ASSET_API, localStatic:JL3D_LOCAL_STATIC,
netStatic:BASE_ASSET_API,
activeName: 'lessoncomponent', activeName: 'lessoncomponent',
lessonAssetList:[], lessonAssetList:[],
picAssetList:[], picAssetList:[],
@ -73,9 +83,13 @@
}, },
watch: { watch: {
},
onReady(){
}, },
mounted() { mounted() {
console.log(this.localStatic); this.localstatic = JL3D_LOCAL_STATIC;
console.log(this.localstatic);
getMap3dModelData("三维课程").then(netdata => { getMap3dModelData("三维课程").then(netdata => {
this.lessonAssetList = netdata.data; this.lessonAssetList = netdata.data;
}).catch(error => { }).catch(error => {
@ -121,13 +135,26 @@
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss"; @import "src/styles/mixin.scss";
.lessontoolsdiv { .lessontoolsdiv {
position: absolute; position: absolute;
width: 15%; width: 15%;
height: 100%; height: 99%;
overflow-y: auto; overflow-y: auto;
// background-color: #abc; margin-top: 10px;
border-radius:10px;
border:solid 2px #000;
}
.lessontoolsdiv /deep/ .el-tabs--left{
height: auto !important;
}
.lessontoolsdiv /deep/ .el-tabs--left .el-tabs__item{
width: 60px;
line-height: 24px;
height: auto;
word-wrap: break-word;
white-space: pre-line;
margin-bottom: 20px;
} }
.tooldiv{ .tooldiv{
@ -140,13 +167,32 @@
} }
.progressdiv{ .progressdiv{
width:100px; width:80px;
height:100px; height:100px;
// display:inline; // display:inline;
margin: 20px; margin: 20px;
float:left; float:left;
border:solid 1px #409EFF;
}
.progressdivimg{
width:70px;
height:70px;
margin-left: 5px;
left:5px;
background-size: 100%; background-size: 100%;
border:solid 2px #000; // display:inline;
float:left;
}
.progressdivtext{
width:80px;
height:30px;
margin: 0;
// display:inline;
float:left;
bottom: 0;
border:solid 1px #409EFF;
font-size: 15px;
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div id="propertydiv" class="propertydiv"> <div id="propertydiv" class="propertydiv">
<el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick"> <el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick" tab-position="left">
<el-tab-pane label="当前场景信息" name="cameraproperty"> <el-tab-pane label="当前场景信息" name="cameraproperty">
<el-form ref="form" class="camerapropertydiv" size="mini" v-if="selectLesson3dControl"> <el-form ref="form" class="camerapropertydiv" size="mini" v-if="selectLesson3dControl">
@ -470,6 +470,18 @@
border:solid 2px #000; border:solid 2px #000;
overflow-y: auto; overflow-y: auto;
} }
.propertydiv /deep/ .el-tabs--left{
height: auto !important;
}
.propertydiv /deep/ .el-tabs--left .el-tabs__item{
width: 60px;
line-height: 24px;
height: auto;
word-wrap: break-word;
white-space: pre-line;
// margin-bottom: 20px;
}
.camerapropertydiv{ .camerapropertydiv{
// width:100%; // width:100%;

View File

@ -169,8 +169,13 @@
this.lessonData = new LessonData(); this.lessonData = new LessonData();
this.jobPaneData = new JobPaneData(); this.jobPaneData = new JobPaneData();
let loadData; let loadData;
if(data.data.data){ if(data.data.data){
loadData = JSON.parse(data.data.data); loadData = JSON.parse(data.data.data);
if(loadData.setup.checkedRole.length == 0){
this.showSelectJob = false;
}
this.selectJobList = loadData.setup.checkedRole; this.selectJobList = loadData.setup.checkedRole;
this.jobPaneData.dataList = loadData.toolJobPane; this.jobPaneData.dataList = loadData.toolJobPane;
this.$refs.jobpane.initJobList(this.jobPaneData.dataList); this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
@ -181,6 +186,7 @@
}else{ }else{
this.lessonData.initLessonProgress(); this.lessonData.initLessonProgress();
this.$refs.jobpane.initJobList(this.jobPaneData.dataList); this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
this.jl3d.initNowRole();
} }
console.log("loaddata----------------"); console.log("loaddata----------------");
console.log(loadData); console.log(loadData);

View File

@ -4,13 +4,13 @@
<div class="jl3dmap3dMaintainerSelect" :style="{'background-image': 'url('+localStatic+'/background/other.jpg)'}"> <div class="jl3dmap3dMaintainerSelect" :style="{'background-image': 'url('+localStatic+'/background/other.jpg)'}">
<div class="maintainerSelectButton selectButtonImg1" <div class="maintainerSelectButton selectButtonImg1"
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainer.png)'}" :style="{'background-image': 'url('+localStatic+'/vrtest/maintainer.png)'}"
style="left:40%" @mouseenter="onMouseOverNormal"></div> style="left:10%" @mouseenter="onMouseOverNormal"></div>
<div class="maintainerSelectButton selectButtonImg2" <div class="maintainerSelectButton selectButtonImg2"
:style="{'background-image': 'url('+localStatic+'/vrtest/zc.png)'}" :style="{'background-image': 'url('+localStatic+'/vrtest/zc.png)'}"
style="left:40%;" v-show="normalShow"@mouseleave="onMouseOutNormal" @click="initNormal"></div> style="left:10%;" v-show="normalShow"@mouseleave="onMouseOutNormal" @click="initNormal"></div>
<!-- <div class="maintainerSelectButton selectButtonImg3" <div class="maintainerSelectButton selectButtonImg3"
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainervr.png)'}" :style="{'background-image': 'url('+localStatic+'/vrtest/maintainervr.png)'}"
style="left:40%;" @mouseenter="onMouseOverVr"></div> style="left:40%;" @mouseenter="onMouseOverVr"></div>
@ -24,7 +24,7 @@
<div class="maintainerSelectButton selectButtonImg6" <div class="maintainerSelectButton selectButtonImg6"
:style="{'background-image': 'url('+localStatic+'/vrtest/trvr.png)'}" :style="{'background-image': 'url('+localStatic+'/vrtest/trvr.png)'}"
style="left:70%;" v-show="trainRescueShow" @mouseleave="onMouseOutRescue" @click="initTrainRescueVr"></div> --> style="left:70%;" v-show="trainRescueShow" @mouseleave="onMouseOutRescue" @click="initTrainRescueVr"></div>
</div> </div>

View File

@ -1434,5 +1434,6 @@ export default {
.teleNameIn{ .teleNameIn{
width: 16px; width: 16px;
white-space: pre-wrap; white-space: pre-wrap;
font-size:16px;
} }
</style> </style>

View File

@ -149,6 +149,7 @@ export default {
background: #404040; background: #404040;
color: #1DEA1E; color: #1DEA1E;
text-align: center; text-align: center;
font-size: 16px;
} }
</style> </style>

View File

@ -149,6 +149,7 @@ export default {
background: #404040; background: #404040;
color: #1DEA1E; color: #1DEA1E;
text-align: center; text-align: center;
font-size: 16px;
} }
</style> </style>

View File

@ -71,7 +71,7 @@ export default {
for (const key in mapDevice) { for (const key in mapDevice) {
list.push(mapDevice[key]); list.push(mapDevice[key]);
} }
this.$store.dispatch('training/setRoleDeviceCode', station.code);
this.$jlmap.updateShowStation(list, showStationCode); this.$jlmap.updateShowStation(list, showStationCode);
this.setCenter(showStationCode); this.setCenter(showStationCode);
} }

View File

@ -42,9 +42,20 @@
/> />
</el-select> </el-select>
</div> </div>
<div style="margin-top:10px">
<span>可切换显示的车站</span>
<el-select v-model="addModel.switchStationCodeList" size="mini" style="width:200px;" multiple placeholder="请选择">
<el-option
v-for="item in stationList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
</div>
<div class="content-box-list" style="margin-top: 10px;"> <div class="content-box-list" style="margin-top: 10px;">
<div class="title-box">设备列表</div> <div class="title-box">设备列表</div>
<div class="list-box"> <div class="list-box" style="height:400px;overflow:auto">
<div v-for="nor in addModel.elementList" :key="nor.code" class="list-content"> <div v-for="nor in addModel.elementList" :key="nor.code" class="list-content">
<div class="name">{{ getDeviceName(nor) }}</div> <div class="name">{{ getDeviceName(nor) }}</div>
<div class="close" @click="delList(nor, addModel.elementList)"><i class="el-icon-close" /></div> <div class="close" @click="delList(nor, addModel.elementList)"><i class="el-icon-close" /></div>
@ -55,7 +66,7 @@
</el-card> </el-card>
<div style="display: table; margin-left: 90px; margin-top: 12px; margin-bottom: 20px;"> <div style="display: table; margin-left: 90px; margin-top: 12px; margin-bottom: 20px;">
<el-button type="primary" size="small" @click="generateData">按集中站生成并保存</el-button> <el-button type="primary" size="small" @click="generateData">按集中站生成并保存</el-button>
<el-button type="primary" size="small" @click="save">保存</el-button> <el-button type="primary" size="small" :loading="dataLoading" @click="save">保存</el-button>
<el-button type="primary" size="small" @click="back">返回</el-button> <el-button type="primary" size="small" @click="back">返回</el-button>
</div> </div>
</el-scrollbar> </el-scrollbar>
@ -82,6 +93,7 @@ export default {
tableData: [], tableData: [],
addModel: { addModel: {
stationCodeList: [], stationCodeList: [],
switchStationCodeList:[],
elementList: [] elementList: []
}, },
list: [], list: [],
@ -89,7 +101,8 @@ export default {
cardMode: 'generate', cardMode: 'generate',
index: '', index: '',
isPreview: true, isPreview: true,
loading: false loading: false,
dataLoading:false
}; };
}, },
computed: { computed: {
@ -181,12 +194,16 @@ export default {
}, },
updateOverlab() { updateOverlab() {
if (this.index || this.index == 0) { if (this.index || this.index == 0) {
this.clearData();
if (!this.addModel.stationCodeList.length) { if (!this.addModel.stationCodeList.length) {
this.$messageBox('请选择车站!'); this.$messageBox('请选择车站!');
} else { return;
this.tableData.splice(this.index, 1, this.addModel);
} }
this.clearData(); if (!this.addModel.switchStationCodeList.length) {
this.$messageBox('请选择可切换显示的车站!');
return;
}
this.tableData.splice(this.index, 1, this.addModel);
} }
}, },
// //
@ -208,9 +225,13 @@ export default {
displayList: this.tableData, displayList: this.tableData,
mapId: this.$route.params.mapId mapId: this.$route.params.mapId
}; };
this.dataLoading = true;
saveMap(Object.assign(map, param)).then(response => { saveMap(Object.assign(map, param)).then(response => {
this.$message.success('保存现地配置成功'); this.$message.success('保存现地配置成功');
this.dataLoading = false;
this.cancelOverlab();
}).catch(() => { }).catch(() => {
this.dataLoading = false;
this.$messageBox('保存现地配置失败'); this.$messageBox('保存现地配置失败');
}); });
}, },
@ -220,25 +241,30 @@ export default {
generateOverlab() { // generateOverlab() { //
if (!this.addModel.stationCodeList.length) { if (!this.addModel.stationCodeList.length) {
this.$messageBox('请选择车站!'); this.$messageBox('请选择车站!');
} else { return;
this.tableData.push(this.addModel);
this.clearData();
} }
if (!this.addModel.switchStationCodeList.length) {
this.$messageBox('请选择可切换显示的车站!');
return;
}
this.tableData.push(this.addModel);
this.clearData();
}, },
clear() { clear() {
this.addModel = { stationCodeList: [], elementList: [] }; this.addModel = { stationCodeList: [], elementList: [], switchStationCodeList:[] };
}, },
clearData() { clearData() {
this.addModel = { stationCodeList: [], elementList: [] }; this.addModel = { stationCodeList: [], elementList: [], switchStationCodeList:[] };
this.index = ''; this.index = '';
this.cardMode = 'generate'; this.cardMode = 'generate';
}, },
generateData() { generateData() {
this.loading = true; this.loading = true;
this.tableData = []; this.tableData = [];
// switchStationCodeList:[...item.switchStationCodeList, item.code]
this.stationList.forEach(item => { this.stationList.forEach(item => {
if (item.centralized) { if (item.centralized) {
this.tableData.push({stationCodeList: [...item.chargeStationCodeList, item.code], elementList: [...item.chargeStationCodeList, item.code]}); this.tableData.push({stationCodeList: [...item.chargeStationCodeList, item.code], elementList: [...item.chargeStationCodeList, item.code], switchStationCodeList:[...item.chargeStationCodeList, item.code]});
} }
}); });
@ -265,6 +291,7 @@ export default {
saveMap(Object.assign(map, param)).then(response => { saveMap(Object.assign(map, param)).then(response => {
this.loading = false; this.loading = false;
this.$message.success('保存现地配置成功'); this.$message.success('保存现地配置成功');
this.cancelOverlab();
}).catch(() => { }).catch(() => {
this.loading = false; this.loading = false;
this.$messageBox('保存现地配置失败'); this.$messageBox('保存现地配置失败');

BIN
static/lesson3d/box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/lesson3d/sc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

2
static/three.min.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long