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',
trainInstrumentationDisplay: 'Train instrumentation - display',
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:',
nextStation: 'Next station:',
confirmSignalOpen: 'Please confirm that the signal ahead is open',

View File

@ -5,8 +5,12 @@ export default {
stopTime:'停站时间:',
surveillanceHidden: '车内监控——隐藏',
surveillanceDisplay: '车内监控——显示',
trainInstrumentationDisplay: '列车仪表——显示',
trainInstrumentationHidden: '列车仪表——隐藏',
trainInstrumentationDisplay: '列车mmi仪表——显示',
trainInstrumentationHidden: '列车mmi仪表——隐藏',
trainInstrumentationMmiDisplay: '列车mmi仪表——显示',
trainInstrumentationMmiHidden: '列车mmi仪表——隐藏',
trainInstrumentationTmsDisplay: '列车tms仪表——显示',
trainInstrumentationTmsHidden: '列车tms仪表——隐藏',
terminal: '终点站:',
nextStation: '下一站:',
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++){
if(changeStation.code == scope.mapdata.stationstandlist.list[i].code){
let changeData = scope.mapdata.stationstandlist.list[i];
console.log(changeData);
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];
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';
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.top = '0';
renderercctv.domElement.style.bottom = '0';
document.getElementById('jlsimulation').appendChild(renderer.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) {
code = data.code;
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;
}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;
}
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;
}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;
}
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;
}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;
}

View File

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

View File

@ -1,60 +1,24 @@
/**
* @author mrdoob / http://mrdoob.com
* @author Mugen87 / https://github.com/Mugen87
*/
class VRButton {
var VRButton = {
static createButton(originPos,vrPos, renderer, options ) {
createButton: function ( originPos,vrPos,renderer, options ) {
if ( options ) {
if ( options && options.referenceSpaceType ) {
renderer.vr.setReferenceSpaceType( options.referenceSpaceType );
console.error( 'THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.' );
}
function showEnterVR( device ) {
const button = document.createElement( 'button' );
button.style.display = '';
function showEnterVR( /*device*/ ) {
button.style.cursor = 'pointer';
button.style.left = 'calc(50% - 50px)';
button.style.width = '100px';
let currentSession = null;
button.textContent = 'ENTER_VR';
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 ) {
async function onSessionStarted( session ) {
session.addEventListener( 'end', onSessionEnded );
renderer.vr.setSession( session );
await renderer.vr.setSession( session );
button.textContent = 'EXIT VR';
currentSession = session;
@ -65,7 +29,6 @@ var VRButton = {
currentSession.removeEventListener( 'end', onSessionEnded );
renderer.vr.setSession( null );
button.textContent = 'ENTER VR';
currentSession = null;
@ -105,9 +68,9 @@ var VRButton = {
// ('local' is always available for immersive sessions and doesn't need to
// 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 );
originPos.position.set(vrPos.x,vrPos.y,vrPos.z);
} else {
currentSession.end();
@ -133,21 +96,11 @@ var VRButton = {
}
function showVRNotFound() {
function showWebXRNotFound() {
disableButton();
button.textContent = 'VR NOT FOUND';
renderer.vr.setDevice( null );
}
function showXRNotFound() {
disableButton();
button.textContent = 'VR NOT FOUND';
button.textContent = 'VR NOT SUPPORTED';
}
@ -169,81 +122,35 @@ var VRButton = {
}
if ( 'xr' in navigator ) {
console.log("xr");
var button = document.createElement( 'button' );
button.id = 'VRButton';
button.style.display = 'none';
stylizeElement( button );
navigator.xr.isSessionSupported( 'immersive-vr' ).then( function ( supported ) {
if ( supported ) {
showEnterXR();
} else {
showXRNotFound();
}
supported ? showEnterVR() : showWebXRNotFound();
} );
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 {
var message = document.createElement( 'a' );
message.href = 'https://immersive-web.github.io/webxr/';
message.innerHTML = 'WEBXR NOT SUPPORTED';
const message = document.createElement( 'a' );
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.width = '180px';
@ -257,6 +164,6 @@ var VRButton = {
}
};
}
export { VRButton };

View File

@ -54,6 +54,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
// this.renderer.shadowMap.type = THREE.PCFSoftShadowMap;
this.renderer.gammaInput = true;
this.renderer.gammaOutput = true;
console.log( this.renderer);
this.renderer.vr.enabled = true;
this.dom.appendChild(this.renderer.domElement);
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 ) {
// console.log();
console.log("select");
var controller = event.target;
var intersections = getIntersections( controller );
@ -249,6 +251,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
let controlMoveSwitch = false;
let nowControlModel = null;
function squeezeStart(){
console.log("squeezestart");
TrainRescueStatic.handR.action.reset();
TrainRescueStatic.handR.action.time = TrainRescueStatic.handR.action._clip.duration;
TrainRescueStatic.handR.action.timeScale = 1;
@ -271,6 +274,7 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
}
function squeezeEnd(){
console.log("squeezeend");
TrainRescueStatic.handR.action.reset();
TrainRescueStatic.handR.action.time = 0;
TrainRescueStatic.handR.action.timeScale = -1;

View File

@ -798,29 +798,29 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
code = data.code;
if(signallist.list[code]){
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;
}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;
}
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;
}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;
}
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;
}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;
}

View File

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

View File

@ -529,9 +529,8 @@ export function ControlManager(dom,scene,lessonData,lessonIndex) {
}
}
}
console.log(eventTrigger);
if(actions[i].actionType == "contact"){
for(let j=0;j<eventTrigger.length;j++){
if(eventTrigger[j].label == actions[i].actionModel){
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;
}
@ -218,9 +218,9 @@ export function AssetModelManager(editor,scene) {
this.deleteAsset = function(selectModel,nowSceneType){
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){
scope.lessonTriggerList.splice(i,1);
scope.lessonTriggerList[nowSceneType].splice(i,1);
updateTriggerList(scope.lessonTriggerList[nowSceneType]);
break;
}
@ -309,7 +309,8 @@ export function AssetModelManager(editor,scene) {
function fbxpromise(asset){
return new Promise(function(resolve, reject){
var loader = new THREE.FBXLoader();
console.log(asset);
// console.log(asset);
// console.log(asset.url);
if(asset.assetType == "static"){
loader.load( asset.url, function ( object ) {
if(asset.sceneType){

View File

@ -23,7 +23,7 @@ export function Lesson3dEditor(dom,lessonData) {
// let stats = new Stats();
// dom.appendChild( stats.dom );
let lessonIndex = 0;
let scope = this;
this.dom = dom;
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:"地铁公安",
value:"110",

View File

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

View File

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

View File

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

View File

@ -66,15 +66,7 @@ class ESafeDoor extends Group {
}
setState(model) {
if (model.fault) {
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();
}
model.screenDoorOpenStatus == 0 ? this.safeC.show() : this.safeC.hide();
if (model.interlockRelease) {
const style = this.model.style;
this.setColor(style.Psd.safetyDoorNormal.splitDoorColor);

View File

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

View File

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

View File

@ -171,7 +171,18 @@ class EMouse extends Group {
}
mouseover() {
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;
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();
}
if (this.device.style.Train.mouseOverStyle) {

View File

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

View File

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

View File

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

View File

@ -5,7 +5,7 @@
:class="systemName+' route-hand-control'"
:title="title"
:visible.sync="show"
:width="systemName == 'xian-01__systerm'?'400px':'300px'"
:width="width"
:before-close="doClose"
:z-index="2000"
:modal="false"
@ -63,6 +63,11 @@
<!-- :disabled="scope.row.disabled" -->
</template>
</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>
</div>
<el-row>
@ -132,7 +137,8 @@ export default {
computed: {
...mapGetters('map', [
'signalList',
'routeData'
'routeData',
'overlapData'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
@ -140,6 +146,9 @@ export default {
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
width() {
return this.systemName === 'xian-01__systerm' ? '500px' : '300px';
},
domIdChoose() {
if (this.dialogShow) {
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() {
this.changeList = [];
if (this.allSelect) {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -102,19 +102,13 @@ export default {
methods: {
getProtectedSectionName(row) {
let name = '';
if (row &&
row.overlapSectionList &&
row.overlapSectionList &&
row.overlapSectionList.length > 0) {
const protect = row.overlapSectionList[0];
name = `${protect.name}`;
if (protect.parentName) {
name = `${protect.parentName}${protect.name}`;
}
const station = this.$store.getters['map/getDeviceByCode'](protect.stationCode);
if (station) {
name = `${name}(${station.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;

View File

@ -74,7 +74,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar');
},
'$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);
} else {
this.popDoClose();
@ -118,30 +119,71 @@ export default {
},
initMenu() {
this.menuNormal = [];
this.$store.state.map.map.stationList.forEach(station => {
if (station.relStationCodeList && station.relStationCodeList.length) {
const node = {
label: station.name,
children: []
};
const relStationCodeList = [...station.relStationCodeList];
relStationCodeList.push(station.code);
relStationCodeList.sort((a, b) => {
if (this.$store.state.training.prdType == '02') {
this.$store.state.map.map.stationList.forEach(station => {
if (station.relStationCodeList && station.relStationCodeList.length) {
const node = {
label: station.name,
children: []
};
const relStationCodeList = [...station.relStationCodeList];
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 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;
});
relStationCodeList.forEach(item => {
const next = this.$store.getters['map/getDeviceByCode'](item);
node.children.push({
code: next.code,
label: next.name,
handler: this.mapLocation
});
const ciStaion = this.$store.getters['map/getDeviceByCode'](ciStaionCode);
const currentNode = {label: ciStaion.name, children: []};
codeList.forEach(code=>{
let node;
const station = this.$store.getters['map/getDeviceByCode'](code);
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];
},
popDoClose() {

View File

@ -5,7 +5,7 @@
<!--<div class="holdTrainStatus">H</div>-->
<!--<div class="jumpStopStatus">S</div>-->
<!--</div>-->
<station-control-convert ref="stationControlConvert" />
<station-control-convert ref="stationControlConvert" @warningInfoDoShow="warningInfoDoShow" />
<password-box ref="passwordBox" @setLoginResult="getLoginResult" />
<view-train-id ref="viewTrainId" />
<view-name ref="viewName" />
@ -15,6 +15,7 @@
<train-delete ref="trainDelete" />
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
<warning-info ref="warningInfo" />
<!-- <delete-runplan-line ref="deleteRunplanLine" /> -->
<!-- <add-runplan-line ref="addRunplanLine" /> -->
</div>
@ -23,6 +24,7 @@
import MenuBar from '@/jmapNew/theme/components/menus/menuBar';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler.js';
import StationControlConvert from './menuDialog/stationControlConvert';
import WarningInfo from './menuDialog/warningInfo';
import TrainAdd from './menuDialog/trainAdd';
// import AddRunplanLine from './menuDialog/addRunplanLine';
import TrainTranstalet from './menuDialog/trainTranstalet';
@ -50,7 +52,8 @@ export default {
TrainTranstalet,
TrainDelete,
ManageUser,
HelpAbout
HelpAbout,
WarningInfo
// DeleteRunplanLine
},
props: {
@ -484,6 +487,9 @@ export default {
blankClickClose() {
this.$refs.menuBar.doClose();
},
warningInfoDoShow(info) {
this.$refs.warningInfo.doShow(info);
},
undeveloped() {
this.$refs.menuBar.doClose();
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) {
controlTransferList.forEach(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() {
this.loadTableData();
// this.loadTableData();
},
methods: {
updateTableValue(controlTransfer) {
@ -241,15 +247,37 @@ export default {
}
},
initTableDataStatus() {
this.tableData.forEach(row => {
row.disabled = this.checkBoxDisabled(row);
row.check = false;
row.result = '';
const control = this.$store.getters['map/getDeviceByCode'](row.code);
if (control) {
row.control = this.controlProps[control.controlMode];
}
});
this.tableData = [];
if (this.$store.state.training.prdType === '02') {
this.stationList && this.stationList.forEach(station => {
if (station.createControlMode) {
const control = this.$store.getters['map/getDeviceByCode'](station.code);
this.tableData.push({
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) {
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() {
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) {
this.menu = this.menuForce;
}

View File

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

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
<template>
<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: jumpBackground}" @contextmenu="showJumpStationPop">S</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}" @mouseenter="showJumpStatus" @mouseleave="hideJumpStatus" @contextmenu="showJumpStationPop">S</div>
<pop-tip v-show="popShow" :position="position" :tip="tip" />
<pop-menu ref="popMenu" :menu="menu" pop-menu-class="statusIcon" />
</div>
@ -117,6 +117,44 @@ export default {
},
setCenter(val) {
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>
<div id="div1" class ="pane-box">
<img class="paneimg" :src="pane"/>
<div id="div1" class ="pane-box" >
<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: '70px'}">0</div>
<div class="panelb" :style="{right: isZh? '80px': '80px', top: isZh? '130px': '130px'}">{{ $t('jlmap3d.braking') }}</div>
@ -242,13 +242,16 @@
console.log(error);
})
,200,true);
updatemmic1(this.move);
// updatemmic1(this.move);
},
speedend: function(event){
document.getElementById("div1").onmousemove = null;
document.getElementById("div2").onmouseup = null;
},
speedout: function(event){
document.getElementById("div1").onmousemove = null;
document.getElementById("div2").onmouseup = null;
},
click:function(){//
@ -317,8 +320,8 @@
if(mx<px&&my<py){//鼠标在第二象限
angle = 360 - angle;
}
console.log(angle);
console.log(this.userRole );
// console.log(angle);
// console.log(this.userRole );
if(angle<127 && angle>46){
if(angle<63 && angle>46){
if(this.touchstate != "Drive"){
@ -327,7 +330,7 @@
gear:"Drive"
};
trainSimulationGear(this.group,data).then(netdata => {
console.log(netdata);
// console.log(netdata);
if(netdata.code == "200"){
this.toutransform = "rotate(140deg)";
this.touchstate = "Drive";

View File

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

View File

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

View File

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

View File

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

View File

@ -5,7 +5,9 @@
<el-tabs v-model="activeName" class="activediv" type="card" @tab-click="handleClick">
<el-tab-pane label="课程场景" name="progresslist" >
<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="delprogressdiv" @click="removeProgress(index)" >X</div>
</div>
@ -16,9 +18,14 @@
</el-tab-pane>
<el-tab-pane label="场景三维资源" name="assetlist" >
<div class="progressdiv" v-for="(elementtrigger,indextrigger) in triggerList" :key="elementtrigger.label">
<div class="changeprogressdiv" @click="selectModel(elementtrigger)">{{elementtrigger.label}}</div>
<div class="delprogressdiv" v-if="(elementtrigger.showType == 'loadModel')" @click="deleteModel(elementtrigger)" >X</div>
<div class="progressdiv"
v-for="(elementtrigger,indextrigger) in triggerList" :key="elementtrigger.label">
<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>
</el-tab-pane>
@ -74,7 +81,7 @@
e.target.classList.remove('hideShadow')
},
handleClick(tab, event) {
console.log(tab, event);
// console.log(tab, event);
},
addProgress(){
this.$emit('addProgress');
@ -120,13 +127,32 @@
top:5px;
}
.progressdiv{
width:100px;
width:80px;
height:100px;
// display:inline;
margin: 20px;
float:left;
border:solid 2px #000;
border:solid 1px #409EFF;
}
.progressdivimg{
width:70px;
height:70px;
margin-left: 5px;
left:5px;
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{
@ -140,11 +166,13 @@
.delprogressdiv{
// position: relative;
width: 100%;
height: 20%;
width: 20px;
height: 20px;
right: 0;
bottom: 0;
border:solid 2px #000;
top: 0;
float: right;
// position:absolute;
border:solid 2px #409EFF;
}
</style>

View File

@ -2,7 +2,7 @@
<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" >
<div v-for="(item,index) in lessonTools" class="tooldiv" >
<div>
@ -19,16 +19,23 @@
<el-tab-pane label="三维资源" name="modelTrigger">
<!-- <Assets-Model></Assets-Model> -->
<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)">
{{item.packageName}}
<div class="progressdiv" v-for="(item,index) in lessonAssetList"@dragend="createModel($event,item,index)">
<div class="progressdivimg"
:style="{'background-image': 'url('+localstatic+'/lesson3d/box.png)'}"/>
<div class="progressdivtext">{{item.packageName}}</div>
</div>
</draggable>
</el-tab-pane>
<el-tab-pane label="图片资源列表" name="picasset">
<draggable v-model="picAssetList" group="picasset" @start="drag=true" @end="drag=false">
<div class="progressdiv"
:style="{'background-image': 'url('+localStatic+item.url+')'}"
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>
</draggable>
<!-- <Assets-Model></Assets-Model> -->
@ -50,6 +57,8 @@
import { BASE_ASSET_API,getMap3dModelData } from '@/api/jlmap3d/assets3d.js'
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
export default {
name: 'LessonTools',
props:['lessonTools'],
@ -58,7 +67,8 @@
},
data() {
return {
localStatic:BASE_ASSET_API,
localStatic:JL3D_LOCAL_STATIC,
netStatic:BASE_ASSET_API,
activeName: 'lessoncomponent',
lessonAssetList:[],
picAssetList:[],
@ -73,9 +83,13 @@
},
watch: {
},
onReady(){
},
mounted() {
console.log(this.localStatic);
this.localstatic = JL3D_LOCAL_STATIC;
console.log(this.localstatic);
getMap3dModelData("三维课程").then(netdata => {
this.lessonAssetList = netdata.data;
}).catch(error => {
@ -121,13 +135,26 @@
<style rel="stylesheet/scss" lang="scss" scoped>
@import "src/styles/mixin.scss";
.lessontoolsdiv {
position: absolute;
width: 15%;
height: 100%;
height: 99%;
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{
@ -140,13 +167,32 @@
}
.progressdiv{
width:100px;
width:80px;
height:100px;
// display:inline;
margin: 20px;
float:left;
border:solid 1px #409EFF;
}
.progressdivimg{
width:70px;
height:70px;
margin-left: 5px;
left:5px;
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>
<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-form ref="form" class="camerapropertydiv" size="mini" v-if="selectLesson3dControl">
@ -470,6 +470,18 @@
border:solid 2px #000;
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{
// width:100%;

View File

@ -169,8 +169,13 @@
this.lessonData = new LessonData();
this.jobPaneData = new JobPaneData();
let loadData;
if(data.data.data){
loadData = JSON.parse(data.data.data);
if(loadData.setup.checkedRole.length == 0){
this.showSelectJob = false;
}
this.selectJobList = loadData.setup.checkedRole;
this.jobPaneData.dataList = loadData.toolJobPane;
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
@ -181,6 +186,7 @@
}else{
this.lessonData.initLessonProgress();
this.$refs.jobpane.initJobList(this.jobPaneData.dataList);
this.jl3d.initNowRole();
}
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="maintainerSelectButton selectButtonImg1"
:style="{'background-image': 'url('+localStatic+'/vrtest/maintainer.png)'}"
style="left:40%" @mouseenter="onMouseOverNormal"></div>
style="left:10%" @mouseenter="onMouseOverNormal"></div>
<div class="maintainerSelectButton selectButtonImg2"
: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="left:40%;" @mouseenter="onMouseOverVr"></div>
@ -24,7 +24,7 @@
<div class="maintainerSelectButton selectButtonImg6"
: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>

View File

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

View File

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

View File

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

View File

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

View File

@ -42,9 +42,20 @@
/>
</el-select>
</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="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 class="name">{{ getDeviceName(nor) }}</div>
<div class="close" @click="delList(nor, addModel.elementList)"><i class="el-icon-close" /></div>
@ -55,7 +66,7 @@
</el-card>
<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="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>
</div>
</el-scrollbar>
@ -82,6 +93,7 @@ export default {
tableData: [],
addModel: {
stationCodeList: [],
switchStationCodeList:[],
elementList: []
},
list: [],
@ -89,7 +101,8 @@ export default {
cardMode: 'generate',
index: '',
isPreview: true,
loading: false
loading: false,
dataLoading:false
};
},
computed: {
@ -181,12 +194,16 @@ export default {
},
updateOverlab() {
if (this.index || this.index == 0) {
this.clearData();
if (!this.addModel.stationCodeList.length) {
this.$messageBox('请选择车站!');
} else {
this.tableData.splice(this.index, 1, this.addModel);
return;
}
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,
mapId: this.$route.params.mapId
};
this.dataLoading = true;
saveMap(Object.assign(map, param)).then(response => {
this.$message.success('保存现地配置成功');
this.dataLoading = false;
this.cancelOverlab();
}).catch(() => {
this.dataLoading = false;
this.$messageBox('保存现地配置失败');
});
},
@ -220,25 +241,30 @@ export default {
generateOverlab() { //
if (!this.addModel.stationCodeList.length) {
this.$messageBox('请选择车站!');
} else {
this.tableData.push(this.addModel);
this.clearData();
return;
}
if (!this.addModel.switchStationCodeList.length) {
this.$messageBox('请选择可切换显示的车站!');
return;
}
this.tableData.push(this.addModel);
this.clearData();
},
clear() {
this.addModel = { stationCodeList: [], elementList: [] };
this.addModel = { stationCodeList: [], elementList: [], switchStationCodeList:[] };
},
clearData() {
this.addModel = { stationCodeList: [], elementList: [] };
this.addModel = { stationCodeList: [], elementList: [], switchStationCodeList:[] };
this.index = '';
this.cardMode = 'generate';
},
generateData() {
this.loading = true;
this.tableData = [];
// switchStationCodeList:[...item.switchStationCodeList, item.code]
this.stationList.forEach(item => {
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 => {
this.loading = false;
this.$message.success('保存现地配置成功');
this.cancelOverlab();
}).catch(() => {
this.loading = false;
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