Merge remote-tracking branch 'origin/test'

This commit is contained in:
jade 2021-11-04 18:18:38 +08:00
commit 2fd498aaf6
53 changed files with 839 additions and 180 deletions

View File

@ -37,38 +37,6 @@ export function getDeviceDetail(id) {
method: 'get' method: 'get'
}); });
} }
/** 添加/修改屏蔽门设备网关映射配置 */
export function setPsdConfig(id, data) {
return request({
url: `/api/device/${id}/config/psd`,
method: 'put',
data: data
});
}
/** 添加/修改信号机设备网关映射配置 */
export function setSignalConfig(id, data) {
return request({
url: `/api/device/${id}/config/signal`,
method: 'put',
data: data
});
}
/** 添加/修改信号机设备网关映射配置 */
export function setSwitchConfig(id, data) {
return request({
url: `/api/device/${id}/config/switch`,
method: 'put',
data: data
});
}
/** 添加/修改端头控制盒网关映射配置 */
export function setPslConfig(id, data) {
return request({
url: `/api/device/${id}/config/psl`,
method: 'put',
data: data
});
}
/** 添加/修改ibp盘网关映射配置 */ /** 添加/修改ibp盘网关映射配置 */
export function setIbpConfig(id, data) { export function setIbpConfig(id, data) {
return request({ return request({
@ -77,15 +45,6 @@ export function setIbpConfig(id, data) {
data: data data: data
}); });
} }
/** 添加/修改psc控制柜网关映射配置 */
export function setPscConfig(id, data) {
return request({
url: `/api/device/${id}/config/psc`,
method: 'put',
data: data
});
}
/** 添加/修改ibp设备配置 */ /** 添加/修改ibp设备配置 */
export function setVrIbpConfig(id, data) { export function setVrIbpConfig(id, data) {
return request({ return request({
@ -177,3 +136,11 @@ export function setIlwConfig(id, data) {
data: data data: data
}); });
} }
/** 添加/修改设备配置 */
export function setDeviceConfig(data) {
return request({
url: `/api/device/config/updateConfig`,
method: 'put',
data: data
});
}

View File

@ -1,7 +1,10 @@
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
export function SetCamera(dom) { export function SetCamera(dom) {
var camera = new THREE.PerspectiveCamera(60, dom.clientWidth/dom.clientHeight, 1, 2000); var camera = new THREE.PerspectiveCamera(60, dom.clientWidth/dom.clientHeight, 1, 3000);
camera.position.set( 0, 0, 0 ); camera.position.set( 0, 0, 0 );
camera.aspect = window.innerWidth / window.innerHeight; camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix(); camera.updateProjectionMatrix();
return camera; return camera;
} }

View File

@ -12,6 +12,7 @@ export function SetScene(project) {
bgTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/other.jpg"); bgTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/other.jpg");
} }
scene.background = bgTexture; scene.background = bgTexture;
// cubeTexture.dispos e(); // cubeTexture.dispos e();
return scene; return scene;
} }

View File

@ -0,0 +1,105 @@
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
export function WeatherManager(){
let scope = this;
let spriteSwitch = false;
let spriteSpeed = 0;
let spriteRota = 0;
let sunnyTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/sunny.jpg" );
let eveningTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/evening.jpg" );
let rainTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/rain.png" );
let rainPoint = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/sprite/rainsprite.png" );
let snowPoint = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/sprite/snowsprite.png" );
let geometry = new THREE.SphereGeometry( 3000, 32, 32 );
let material = new THREE.MeshBasicMaterial( {map:sunnyTexture,side:THREE.DoubleSide} );
scope.skybox = new THREE.Mesh( geometry, material);
scope.skybox.position.set( 0, 0, 0 );
let spritMaterial = new THREE.PointsMaterial({ //用图片初始化顶点材质
size: 2,
map: snowPoint,
transparent: true
});
let positions = [];
this.drops = 20000;
this.geom = new THREE.BufferGeometry();
this.velocityY = [];
for(let i = 0; i < this.drops; i++){
positions.push( Math.random() * 800 - 400 );
positions.push( Math.random() * 800 );
positions.push( Math.random() * 800 - 400 );
this.velocityY.push(0.5 + Math.random() / 2); //初始化每个粒子的坐标和粒子在Y方向的速度
}
//确定各个顶点的位置坐标
this.geom.setAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );
this.instance = new THREE.Points(this.geom, spritMaterial); //初始化粒子系统
this.changeweather = function(type){
if(type == "sunny"){
scope.skybox.material.map = sunnyTexture;
spriteSwitch = false;
}
if(type == "evening"){
scope.skybox.material.map = eveningTexture;
spriteSwitch = false;
}
if(type == "rain"){
scope.skybox.material.map = rainTexture;
scope.instance.material.map = rainPoint;
spriteSwitch = true;
spriteSpeed = 0.01;
spriteRota = 0;
scope.instance.material.size = 0.5;
}
if(type == "snow"){
scope.skybox.material.map = rainTexture;
scope.instance.material.map = snowPoint;
spriteSwitch = true;
spriteSpeed = 0.0001;
spriteRota = 0.002;
scope.instance.material.size = 1.5;
}
if(spriteSwitch == true){
if(scope.skybox.children.length == 0){
scope.skybox.add(scope.instance);
}
}else{
scope.skybox.remove(scope.instance);
}
scope.skybox.material.map.needsUpdate = true;
scope.instance.material.map.needsUpdate = true;
}
this.update = function(cameraPos){
scope.skybox.position.x = cameraPos.x;
scope.skybox.position.z = cameraPos.z;
if(spriteSwitch == true){
let positions = this.geom.attributes.position.array;
for(let i=0; i<this.drops * 3; i+=3){ //改变Y坐标加速运动
this.velocityY[i/3] += Math.random() * spriteSpeed;
positions[ i + 1 ] -= this.velocityY[i/3];
if(positions[ i + 1 ] < 30){
positions[ i + 1 ] = 800;
this.velocityY[i/3] = 0.5 + Math.random()* spriteSpeed;
}
}
this.instance.rotation.y += spriteRota;
this.geom.attributes.position.needsUpdate = true;
}
}
}

View File

@ -14,6 +14,8 @@ import { SetRender } from '@/jlmap3d/config/SetRender';
import { SetScene } from '@/jlmap3d/config/SetScene'; import { SetScene } from '@/jlmap3d/config/SetScene';
import { SetLights } from '@/jlmap3d/config/SetLights'; import { SetLights } from '@/jlmap3d/config/SetLights';
import { WeatherManager } from '@/jlmap3d/config/WeatherManager';
//controls //controls
import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls'; import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls';
// import { DragControls } from '@/jlmap3d/main/control/DragControls'; // import { DragControls } from '@/jlmap3d/main/control/DragControls';
@ -55,12 +57,20 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
let scenestation = new THREE.Group(); let scenestation = new THREE.Group();
scene.add(scenesimulation); scene.add(scenesimulation);
scene.add(scenestation); scene.add(scenestation);
let weatherManager = new WeatherManager();
scene.add(weatherManager.skybox);
// scene.add(weatherManager.instance);
// scene.add(sphere);
//定义镜头操作 //定义镜头操作
let controls = new THREE.OrbitControls(camera); let controls = new THREE.OrbitControls(camera);
controls.maxPolarAngle = Math.PI/2; controls.maxPolarAngle = Math.PI/2;
// controls.screenSpacePanning = true; // controls.screenSpacePanning = true;
//controls.minPolarAngle = Math.PI/8; //controls.minPolarAngle = Math.PI/8;
controls.maxDistance = 1000; controls.maxDistance = 800;
//模型加载器 //模型加载器
this.assetloader = new AssetLoader(); this.assetloader = new AssetLoader();
//替换材质组,例:信号机不同灯光 //替换材质组,例:信号机不同灯光
@ -124,6 +134,14 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
//循环渲染 //循环渲染
requestAnimationFrame(animate); requestAnimationFrame(animate);
//根据相机渲染场景 //根据相机渲染场景
// sphere
// if(sphere){
// sphere.position.x = camera.position.x;
// sphere.position.z = camera.position.z;
// }
weatherManager.update(camera.position);
// console.log(camera.position);
renderer.render(scene,camera); renderer.render(scene,camera);
// stats.update(); // stats.update();
} }
@ -219,7 +237,6 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
//切换显示列车信息 //切换显示列车信息
this.showtrainmsg = function(showtype){ this.showtrainmsg = function(showtype){
console.log(trainlisttest);
if(showtype == "show"){ if(showtype == "show"){
for(let st=0;st<trainlisttest.textlist.length;st++){ for(let st=0;st<trainlisttest.textlist.length;st++){
trainlisttest.list[trainlisttest.textlist[st].name].children[0].add(trainlisttest.textlist[st]); trainlisttest.list[trainlisttest.textlist[st].name].children[0].add(trainlisttest.textlist[st]);
@ -230,7 +247,10 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
} }
} }
}; };
this.changeweather = function(weathertype){
// console.log(weathertype);
weatherManager.changeweather(weathertype);
}
//开启轨道镜头交互 //开启轨道镜头交互
this.animateon = function(){ this.animateon = function(){
controls.enabled = true; controls.enabled = true;

View File

@ -4,13 +4,13 @@ export default class EMouse {
} }
mouseover(e) { mouseover(e) {
if (this.device.prdType) { // if (this.device.prdType) {
this.device.setVisible(true); // this.device.setVisible(true);
const instance = this.device.getInstanceByCode(this.device.model.sectionCode); // const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) { // if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) {
instance.mouseEvent.mouseEnter(e); // instance.mouseEvent.mouseEnter(e);
} // }
} // }
} }
mouseout(e) { mouseout(e) {
@ -24,9 +24,9 @@ export default class EMouse {
} }
mouseEnter() { mouseEnter() {
if (this.device.prdType) { // if (this.device.prdType) {
this.device.setVisible(true); // this.device.setVisible(true);
} // }
} }
mouseLeave() { mouseLeave() {

View File

@ -207,7 +207,9 @@ export default {
{label: '虚拟电子沙盘', value: 'SANDBOX'}, {label: '虚拟电子沙盘', value: 'SANDBOX'},
{label: '联锁工作站', value: 'ILW'}, {label: '联锁工作站', value: 'ILW'},
{label: 'UDP下位机', value: 'UDP_LOW'}, {label: 'UDP下位机', value: 'UDP_LOW'},
{label: '区段', value: 'SECTION'} {label: '区段', value: 'SECTION'},
{label: '列车', value: 'TRAIN'},
{label: 'UDP客户端', value: 'UDP_CLIENT'}
], ],
ossList: [ ossList: [
{ name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' }, { name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' },

View File

@ -132,7 +132,7 @@ export const loginInfo = {
systemType: '011' systemType: '011'
}, },
drts: { drts: {
title: '2020年“新誉杯”全国行车调度员大赛训练系统', title: '全国行车调度员大赛训练系统',
loginPath: '/login?project=drts', loginPath: '/login?project=drts',
loginParam: 'DRTS', loginParam: 'DRTS',
loginTitle: '空串', loginTitle: '空串',
@ -149,6 +149,40 @@ export const loginInfo = {
navigationMarginLeft: '60px', navigationMarginLeft: '60px',
systemType: '020' systemType: '020'
}, },
// hls: {
// title: '城市轨道交通实训平台',
// loginPath: '/login?project=hls',
// loginTitle: '空串',
// logoWidth: '300px',
// linkIcon: Link_Hls,
// bottomColumn: '北京和利时系统工程有限公司',
// loginParam: 'DEFAULT',
// navigationLogoWidth: '180px',
// navigationMarginLeft: '195px',
// systemType: '011'
// },
hlsdrts: {
title: '城轨国赛竞赛系统',
loginPath: '/login?project=hlsdrts',
loginParam: 'DRTS',
logoWidth: '300px',
linkIcon: Link_Hls,
loginTitle: '空串',
navigationLogoWidth: '180px',
navigationMarginLeft: '195px',
systemType: '020'
},
designhlsdrts: {
title: '城轨国赛竞赛系统',
loginPath: '/design/login?project=hlsdrts',
loginParam: 'DRTS',
logoWidth: '300px',
linkIcon: Link_Hls,
loginTitle: '空串',
navigationLogoWidth: '180px',
navigationMarginLeft: '195px',
systemType: '020'
},
designbjd: { designbjd: {
title: '城市轨道交通列车运行智慧辅助系统', title: '城市轨道交通列车运行智慧辅助系统',
loginPath: '/design/login?project=bjd', loginPath: '/design/login?project=bjd',
@ -548,6 +582,8 @@ export const ProjectIcon = {
wjls: Favicon, wjls: Favicon,
drts: Favicon, drts: Favicon,
designdrts: Favicon, designdrts: Favicon,
hlsdrts: FaviconHls,
designhlsdrts: FaviconHls,
nty: FaviconNty, nty: FaviconNty,
designnty: FaviconNty, designnty: FaviconNty,
ntyc: FaviconNty, ntyc: FaviconNty,
@ -586,6 +622,8 @@ export const ProjectCode = {
wjls: 'WJLS', wjls: 'WJLS',
drts: 'DRTS', drts: 'DRTS',
designdrts: 'DRTS', designdrts: 'DRTS',
hlsdrts: 'DRTS',
designhlsdrts: 'DRTS',
nty: 'NTY', nty: 'NTY',
designnty: 'NTY', designnty: 'NTY',
ntyl: 'NTYL', ntyl: 'NTYL',
@ -608,12 +646,18 @@ export const ProjectCode = {
designsrsandbox: 'SR_SANDBOX' designsrsandbox: 'SR_SANDBOX'
}; };
export const BottomColumnOnlyConInfo = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'richor', 'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo']; // 底部栏仅展示公司信息不展示备案号 export const BottomColumnOnlyConInfo = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'richor', 'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo']; // 底部栏仅展示公司信息不展示备案号
export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb', 'xadt', 'designxadt', 'heb', 'designheb', 'designdrts', 'drts', 'wjls', 'nty', 'designnty', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'designbjd', 'cgy', 'designcgy', 'zzww', 'zzwwtest', 'richor', 'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox']; // 实训设计平台通过项目code获取地图列表的项目 export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb', 'xadt', 'designxadt', 'heb', 'designheb', 'designdrts', 'drts', 'wjls',
'nty', 'designnty', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'designbjd', 'cgy', 'designcgy', 'zzww', 'zzwwtest', 'richor',
'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts']; // 实训设计平台通过项目code获取地图列表的项目
export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy']; // 案例展示隐藏的项目 export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy']; // 案例展示隐藏的项目
export const VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt', 'designxadt', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox']; // 登录页右下角版本开发基于不展示 export const VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt',
export const MainBodyNoShow = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls', 'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt', 'designxadt', 'richor', 'richorlesson3d', 'richorjoint', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox']; // 登录页右下角主体不展示 'designxadt', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts']; // 登录页右下角版本开发基于不展示
export const MainBodyNoShow = ['heb', 'designheb', 'jyd', 'designjyd', 'tky', 'designtky', 'bxkc', 'designbxkc', 'crsc', 'designcrsc', 'hls',
'designhls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt', 'designxadt', 'richor', 'richorlesson3d', 'richorjoint', 'nologo', 'designnologo',
'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts']; // 登录页右下角主体不展示
export const ProjectLoginStyleList = ['gzb', 'designgzb', 'xty', 'designxty', 'xadt', 'designxadt', 'tky', 'designtky', 'jyd', 'designjyd', 'bxkc', 'designbxkc', export const ProjectLoginStyleList = ['gzb', 'designgzb', 'xty', 'designxty', 'xadt', 'designxadt', 'tky', 'designtky', 'jyd', 'designjyd', 'bxkc', 'designbxkc',
'crsc', 'designcrsc', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'nty', 'designnty', 'bjd', 'designbjd', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'cgy', 'designcgy', 'zzww', 'zzwwtest', 'srsandbox', 'designsrsandbox']; // 登录页样式 'crsc', 'designcrsc', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'nty', 'designnty', 'bjd', 'designbjd', 'sdy', 'designsdy', 'ntyc', 'designntyc',
'ntyl', 'designntyl', 'cgy', 'designcgy', 'zzww', 'zzwwtest', 'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts']; // 登录页样式
export const NoQrcodeList = ['heb', 'designheb', 'cgy', 'designcgy', 'ntyl', 'designntyl']; export const NoQrcodeList = ['heb', 'designheb', 'cgy', 'designcgy', 'ntyl', 'designntyl'];
export const NoSimulationQrCodeList = ['heb', 'bjd']; export const NoSimulationQrCodeList = ['heb', 'bjd'];
export const RegisterCodeList = ['cgy', 'designcgy']; export const RegisterCodeList = ['cgy', 'designcgy'];

View File

@ -57,7 +57,7 @@ export default {
pmsList: [] pmsList: []
}, },
lineCode:'', lineCode:'',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

View File

@ -49,7 +49,7 @@ export default {
node: { node: {
}, },
localParamName: 'publish_cityCode', localParamName: 'publish_cityCode',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

View File

@ -83,7 +83,7 @@ export default {
examList: [], examList: [],
trainingOperateTypeMap: {}, trainingOperateTypeMap: {},
lineCode: '', // 线 lineCode: '', // 线
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

View File

@ -93,7 +93,7 @@ export default {
deviceShow:true, deviceShow:true,
msgshow:false, msgshow:false,
controlmsg:'', controlmsg:'',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts']
}; };
}, },

View File

@ -75,7 +75,7 @@ export default {
// {sources: [{ type:'application/x-mpegURL', src: 'http://192.168.3.6/hls/vlc.m3u8'}]}, // {sources: [{ type:'application/x-mpegURL', src: 'http://192.168.3.6/hls/vlc.m3u8'}]},
// {sources: [{ type:'application/x-mpegURL', src: 'http://192.168.3.6/hls/vlc.m3u8'}]} // {sources: [{ type:'application/x-mpegURL', src: 'http://192.168.3.6/hls/vlc.m3u8'}]}
// ], // ],
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'], loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts'],
} }
}, },
computed: { computed: {

View File

@ -18,7 +18,7 @@
<Jlmap3d-Menu :trainlist="trainlist" :stationlist="stationlist" @sstation="sstation" @strain="strain" /> <Jlmap3d-Menu :trainlist="trainlist" :stationlist="stationlist" @sstation="sstation" @strain="strain" />
<Jlmap3d-Config @showstationmsg="showstationmsg" @showtrainmsg="showtrainmsg" /> <Jlmap3d-Config @showstationmsg="showstationmsg" @showtrainmsg="showtrainmsg" @changeweather="changeweather"/>
<!-- <Jlmap3d-Msg v-bind:msgdata="msgdata" > <!-- <Jlmap3d-Msg v-bind:msgdata="msgdata" >
</Jlmap3d-Msg > --> </Jlmap3d-Msg > -->
@ -26,7 +26,6 @@
<div id="testjlmap3d" class="jlmap3ddraw"> <div id="testjlmap3d" class="jlmap3ddraw">
<canvas id="canvastexture" /> <canvas id="canvastexture" />
</div> </div>
</div> </div>
</template> </template>
@ -79,7 +78,7 @@ export default {
mapid:null, mapid:null,
group:null, group:null,
token:null, token:null,
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts']
}; };
}, },
watch: { watch: {
@ -167,6 +166,9 @@ export default {
showtrainmsg(showtype) { showtrainmsg(showtype) {
this.jlmap3d.showtrainmsg(showtype); this.jlmap3d.showtrainmsg(showtype);
}, },
changeweather(weathertype){
this.jlmap3d.changeweather(weathertype);
},
updatemenulist(stationlist, trainlist) { updatemenulist(stationlist, trainlist) {
const stations = []; const stations = [];
for (const k in stationlist) { for (const k in stationlist) {

View File

@ -2,9 +2,16 @@
<div class="configmenu"> <div class="configmenu">
<el-button-group> <el-button-group>
<el-button type="primary" @click="showweather">天气设置</el-button>
<el-button type="primary" @click="showstation">{{bt1name}}</el-button> <el-button type="primary" @click="showstation">{{bt1name}}</el-button>
<el-button type="primary" @click="showtrain">{{bt2name}}</el-button> <el-button type="primary" @click="showtrain">{{bt2name}}</el-button>
</el-button-group> </el-button-group>
<div class="weathermanager"v-if="isShowWeather" >
<div class="weatherbtn" v-for="(element,index) in weatherMenu" @click="changeweather(element.type,index)" :class="{active:index==isActive}" :style="{'background-image': 'url('+element.pic+')'}"></div>
</div>
</div> </div>
</template> </template>
@ -12,6 +19,9 @@
<script> <script>
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
export default { export default {
name: 'Jlmap3dConfig', name: 'Jlmap3dConfig',
components: { components: {
@ -19,8 +29,28 @@ export default {
}, },
data() { data() {
return { return {
bt1name:this.$t('jlmap3d.stationInfoDisplay'), isActive:0,
bt2name:this.$t('jlmap3d.trainInfoDisplay'), isShowWeather:false,
bt1name:this.$t('jlmap3d.stationInfoDisplay'),
bt2name:this.$t('jlmap3d.trainInfoDisplay'),
weatherMenu:[
{
type:'sunny',
pic:JL3D_LOCAL_STATIC+'/sprite/sunny.png',
},
{
type:'evening',
pic:JL3D_LOCAL_STATIC+'/sprite/evening.png',
},
{
type:'rain',
pic:JL3D_LOCAL_STATIC+'/sprite/rain.png',
},
{
type:'snow',
pic:JL3D_LOCAL_STATIC+'/sprite/snow.png',
}
],
} }
}, },
beforeDestroy() { beforeDestroy() {
@ -56,7 +86,17 @@ export default {
} }
}, },
showweather(){
if(this.isShowWeather == true){
this.isShowWeather = false;
}else{
this.isShowWeather = true;
}
},
changeweather(type,index){
this.isActive=index;
this.$emit('changeweather',type);
},
}, },
mounted() { mounted() {
@ -75,4 +115,26 @@ export default {
top: 28px; top: 28px;
} }
.weathermanager{
position:absolute;
width:240px;
height:60px;
//
// display: inline;
}
.weatherbtn{
float: left;
border-radius: 8px;
border-color: #409EFF;
// background-color: #ffffff;
width:60px;
height:60px;
}
.active{
background-color:#409EFF;
}
</style> </style>

View File

@ -60,7 +60,7 @@ export default {
mapId:'', mapId:'',
lineCode:'', lineCode:'',
deviceCode:'', deviceCode:'',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','bjd'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','bjd', 'hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

View File

@ -146,7 +146,7 @@ export default {
value:'', value:'',
isCctv:true, isCctv:true,
allPassers:0, allPassers:0,
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','bjd'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','bjd', 'hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

View File

@ -35,7 +35,7 @@ export default {
LimitControl: [], LimitControl: [],
TrainWindow: [] TrainWindow: []
}, },
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'], loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts'],
isLeaving:false, isLeaving:false,
trainingTypeMap: {}, trainingTypeMap: {},
pagerConfig: { pagerConfig: {

View File

@ -120,12 +120,12 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<div v-if="project === 'drts'" style="position: absolute; bottom: 50px; font-size: 20px;left: 20px;color:#3D3D3D;width: 220px;height: 150px;background: #FFF;padding: 10px;border: 5px solid #CCC;border-radius: 8px;cursor: pointer;"> <!--<div v-if="project === 'drts'" style="position: absolute; bottom: 50px; font-size: 20px;left: 20px;color:#3D3D3D;width: 220px;height: 150px;background: #FFF;padding: 10px;border: 5px solid #CCC;border-radius: 8px;cursor: pointer;">-->
<div class="news-box" @click="goCompetitionRules('4')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">行车调度员赛项成绩发布</div> <!--<div class="news-box" @click="goCompetitionRules('4')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">行车调度员赛项成绩发布</div>-->
<div class="news-box" @click="goCompetitionRules('3')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯官方网站</div> <!--<div class="news-box" @click="goCompetitionRules('3')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯官方网站</div>-->
<div class="news-box" @click="goCompetitionRules('2')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯决赛事项通知</div> <!--<div class="news-box" @click="goCompetitionRules('2')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯决赛事项通知</div>-->
<div class="news-box" @click="goCompetitionRules('1')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯竞赛规程</div> <!--<div class="news-box" @click="goCompetitionRules('1')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">新誉杯竞赛规程</div>-->
</div> <!--</div>-->
</div> </div>
<register ref="register" /> <register ref="register" />
</div> </div>
@ -452,7 +452,7 @@ export default {
}, },
handleLoginSucessRoute() { handleLoginSucessRoute() {
// //
this.loading = this.project === 'drts' || false; this.loading = this.project === 'drts' || this.project === 'hlsdrts' || false;
this.tipsMsg = ''; this.tipsMsg = '';
removeSessionStorage('againEnter'); removeSessionStorage('againEnter');
if (this.$route.query.projectDevice) { if (this.$route.query.projectDevice) {
@ -514,7 +514,7 @@ export default {
projectDevice: this.$route.query.projectDevice, projectDevice: this.$route.query.projectDevice,
type: this.$route.query.type type: this.$route.query.type
}}); }});
} else if (this.$route.query.type === 'DEPOT'){ } else if (this.$route.query.type === 'DEPOT') {
this.$router.push({ path: `/displayNew/demon`, query: { this.$router.push({ path: `/displayNew/demon`, query: {
group: res.data.group, group: res.data.group,
lineCode: resp.data.map.lineCode, lineCode: resp.data.map.lineCode,
@ -547,7 +547,7 @@ export default {
} }
}); });
}); });
} else if (this.project === 'drts' || this.project === 'bjd' || this.project === 'wjls') { } else if (this.project === 'drts' || this.project === 'hlsdrts' || this.project === 'bjd' || this.project === 'wjls') {
getLoginInfo(getToken()).then(res => { getLoginInfo(getToken()).then(res => {
if (this.project === 'wjls') { if (this.project === 'wjls') {
getSimulationInfoByGroup(res.data.group).then(resp =>{ getSimulationInfoByGroup(res.data.group).then(resp =>{
@ -566,8 +566,7 @@ export default {
}); });
} else { } else {
getSimulationInfoNew(res.data.group).then(resp => { getSimulationInfoNew(res.data.group).then(resp => {
this.$store.dispatch('app/transitionAnimations'); if (this.project === 'drts' || this.project === 'hlsdrts') {
if (this.project === 'drts') {
this.$router.push({ path: `/displayNew/demon`, query: { this.$router.push({ path: `/displayNew/demon`, query: {
lineCode: resp.data.map.lineCode, lineCode: resp.data.map.lineCode,
group: res.data.group, group: res.data.group,
@ -578,6 +577,7 @@ export default {
project:this.project project:this.project
}}); }});
} else { } else {
this.$store.dispatch('app/transitionAnimations');
this.$router.push({ path: `/practiceDisplay`, query: { this.$router.push({ path: `/practiceDisplay`, query: {
lineCode: resp.data.map.lineCode, lineCode: resp.data.map.lineCode,
group: res.data.group, group: res.data.group,
@ -607,17 +607,17 @@ export default {
this.$i18n.locale = this.lang; this.$i18n.locale = this.lang;
LangStorage.setLang(this.lang); LangStorage.setLang(this.lang);
}, },
goCompetitionRules(val) { // goCompetitionRules(val) {
if (val === '1') { // if (val === '1') {
window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247506304&idx=1&sn=77708ca228404cee2b28e131cdfb9735&chksm=eb6aade8dc1d24fe6eb9f1334aadda239f47dafc79de7d522e0f3f00e2d3ba1dd213dda6764c&xtrack=1&scene=90&subscene=93&sessionid=1598522875&clicktime=1598523062&enterid=1598523062&ascene=56&devicetype=android-29&version=3.0.27.2701&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=AQZ2cTPSob%2B5kBDiWnKw0Js%3D&pass_ticket=12Xyhe%2BbZsC9Vuzfs0iYUUn0i%2Br5JlZiOGCxWoExuthBhnIrpkmUyjVRi6bjyA1I&wx_header=1&platform=win', '_blank'); // window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247506304&idx=1&sn=77708ca228404cee2b28e131cdfb9735&chksm=eb6aade8dc1d24fe6eb9f1334aadda239f47dafc79de7d522e0f3f00e2d3ba1dd213dda6764c&xtrack=1&scene=90&subscene=93&sessionid=1598522875&clicktime=1598523062&enterid=1598523062&ascene=56&devicetype=android-29&version=3.0.27.2701&nettype=WIFI&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=AQZ2cTPSob%2B5kBDiWnKw0Js%3D&pass_ticket=12Xyhe%2BbZsC9Vuzfs0iYUUn0i%2Br5JlZiOGCxWoExuthBhnIrpkmUyjVRi6bjyA1I&wx_header=1&platform=win', '_blank');
} else if (val === '2') { // } else if (val === '2') {
window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247506789&idx=1&sn=5b5c1e6e0ca7dc54a935f57cee4eb1a2&chksm=eb6aaf0ddc1d261ba2ba7b9bed810b12b3317d45b1a484095d13b3d7e075b091d92fc7b9afb8&mpshare=1&scene=1&srcid=0910Yd3PVFs0WjWZyumLN9Jo&sharer_sharetime=1599740490862&sharer_shareid=98d62529ea7e8d0f6fb2281f854f3ea1&version=3.0.30.2006&platform=win&rd2werd=1#wechat_redirect', '_blank'); // window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247506789&idx=1&sn=5b5c1e6e0ca7dc54a935f57cee4eb1a2&chksm=eb6aaf0ddc1d261ba2ba7b9bed810b12b3317d45b1a484095d13b3d7e075b091d92fc7b9afb8&mpshare=1&scene=1&srcid=0910Yd3PVFs0WjWZyumLN9Jo&sharer_sharetime=1599740490862&sharer_shareid=98d62529ea7e8d0f6fb2281f854f3ea1&version=3.0.30.2006&platform=win&rd2werd=1#wechat_redirect', '_blank');
} else if (val === '3') { // } else if (val === '3') {
window.open('http://metroskills.camet.org.cn', '_blank'); // window.open('http://metroskills.camet.org.cn', '_blank');
} else if (val === '4') { // } else if (val === '4') {
window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247510328&idx=1&sn=b9ba74efd9688513ae8c28f297268bd5&chksm=eb6add50dc1d54460f6a965a6b96fb7adb5205327dba5f7b57ec963ee87e1e2694e7b230fd65&xtrack=1&scene=90&subscene=93&sessionid=1607077432&clicktime=1607077443&enterid=1607077443&ascene=56&devicetype=android-29&version=3.0.36.2008&nettype=ctnet&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=AX5YNBACCv37GORQdECX6PA%3D&pass_ticket=hZngvACKkOr5GKVNY2vl3nM0vWwylSDF51O5A12K38n8Sok%2FWQv2S8OMQD2sYBA1&wx_header=1&platform=win'); // window.open('https://mp.weixin.qq.com/s?__biz=MzI3NzMwODY3OQ==&mid=2247510328&idx=1&sn=b9ba74efd9688513ae8c28f297268bd5&chksm=eb6add50dc1d54460f6a965a6b96fb7adb5205327dba5f7b57ec963ee87e1e2694e7b230fd65&xtrack=1&scene=90&subscene=93&sessionid=1607077432&clicktime=1607077443&enterid=1607077443&ascene=56&devicetype=android-29&version=3.0.36.2008&nettype=ctnet&abtest_cookie=AAACAA%3D%3D&lang=zh_CN&exportkey=AX5YNBACCv37GORQdECX6PA%3D&pass_ticket=hZngvACKkOr5GKVNY2vl3nM0vWwylSDF51O5A12K38n8Sok%2FWQv2S8OMQD2sYBA1&wx_header=1&platform=win');
} // }
}, // },
registerUser() { registerUser() {
this.$refs.register.doShow(); this.$refs.register.doShow();
} }

View File

@ -0,0 +1,360 @@
<template>
<div v-dialogDrag>
<div style="height: 130px;width: 100%;" class="el-dialog">
<div class="el-dialog__header" />
<div class="haerbin-01__systerm nav el-dialog__body">
<el-row style="padding: 3px;">
<el-col :span="20">
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;height: 132px;">
<el-row style="padding: 4px;">
<div class="tip-content-box">
<div v-if="tipContent[0]">{{ `${tipContent[0].level}` }}</div>
<div v-if="tipContent[0]">{{ `${tipContent[0].time}` }}</div>
<div v-if="tipContent[0]">{{ `${tipContent[0].confirm ? '确认': '未确认'}` }}</div>
</div>
<div class="tip-content-box">
<div v-if="tipContent[1]">{{ `${tipContent[1].level}` }}</div>
<div v-if="tipContent[1]">{{ `${tipContent[1].time}` }}</div>
<div v-if="tipContent[1]">{{ `${tipContent[1].confirm ? '确认': '未确认'}` }}</div>
</div>
<div class="tip-content-box">
<div v-if="tipContent[2]">{{ `${tipContent[2].level}` }}</div>
<div v-if="tipContent[2]">{{ `${tipContent[2].time}` }}</div>
<div v-if="tipContent[2]">{{ `${tipContent[2].confirm ? '确认': '未确认'}` }}</div>
</div>
</el-row>
<div style="padding: 5px;height:20px;line-height: 20px;border-top: 2px solid #DDD9CA;display: flex;justify-content: space-between;">
<div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('rpsDialog')">背投</div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('carPack')">车场</div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('troDialog')">轨道</div>
<div class="div-simulate-button" style="width: 40px;">系统</div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('traDialog')">列车</div>
</div>
<div>
<div class="div-simulate-button" style="width: 40px;">联锁</div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('tmtDialog')">列监</div>
<div class="div-simulate-button" style="width: 40px;">运图</div>
<div class="div-simulate-button" style="width: 55px;" @click="handleDialogShow('ttlDialog')">时刻表</div>
<div class="div-simulate-button" style="width: 40px;">编表</div>
<div class="div-simulate-button" style="width: 40px;" @click="handleDialogShow('atrDialog')">调度</div>
<div class="div-simulate-button" style="width: 40px;">站控</div>
<div class="div-simulate-button" style="width: 40px;">计划</div>
</div>
<div>
<div class="div-simulate-button" style="width: 40px;">SDM</div>
</div>
<div>
<div class="div-simulate-button" style="width: 55px;">管理员</div>
<div class="div-simulate-button" style="width: 40px;">职权</div>
</div>
<div>
<div class="div-simulate-button" style="width: 40px;">拷屏</div>
<div class="div-simulate-button" style="width: 40px;">录放</div>
<div class="div-simulate-button" style="width: 40px;">布局</div>
</div>
</div>
</div>
</el-col>
<el-col :span="2">
<div style="width: calc(100% - 10px);border: 2px solid #DDD9CA;border-radius: 1px;">
<el-row style="margin-top: 20px;margin-bottom: 18px;">
<el-col :span="16">
<el-row class="button-row">
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelA || isNoConfirmLevelA?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelA}" @click="showHimAlarm('A')">A</div>
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelB || isNoConfirmLevelB?'#F00':'#DDD' }" :class="{'headerBox' :isNoConfirmLevelB}" @click="showHimAlarm('B')">B</div>
<div style="width: 25px;" class="div-simulate-button" :style="{background:isNoRecoverLevelC?'#F00':'#DDD' }" @click="showHimAlarm('C')">C</div>
</el-row>
<el-row class="button-row" style="margin-top: 20px;">
<div style="width: 40px;" class="div-simulate-button" @click="showDiary">日记</div>
<div style="width: 40px;" class="div-simulate-button" @click="showDiary">命令</div>
</el-row>
</el-col>
<el-col :span="8">
<div style="width: 40px;height: 60px;line-height: 60px;" class="div-simulate-button" @click="controlAudio(false)">静音</div>
</el-col>
</el-row>
<el-row class="button-row" style="margin: 10px 0;">
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">档案</div>
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">归档</div>
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">统计</div>
</el-row>
</div>
</el-col>
<el-col :span="2" style="border: 2px solid #DDD9CA;border-radius: 1px;">
<el-row style="height: 88px;">
<div style="font-size: 15px;color: #000;display: flex;justify-content: space-around;align-items: center;margin-top: 40px;">
<span>{{ dateString }}</span>
<span>{{ time }}</span>
</div>
</el-row>
<el-row class="button-row" style="margin: 10px 0;">
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">锁屏</div>
<div style="width: 40px;" class="div-simulate-button" @click="undeveloped">退出</div>
</el-row>
</el-col>
</el-row>
</div>
<alarm-table-hmi ref="alarmTableHmi" />
<log-detail ref="logDetail" />
<audio id="buzzer" controls loop="loop" style="width: 0;height: 0">
<source :src="buzzerAudio" type="audio/mpeg">
</audio>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { timeFormat } from '@/utils/date';
import BuzzerAudio from '@/assets/buzzer.mp3';
import AlarmTableHmi from '@/jmapNew/theme/nanjing_02/menus/menuDialog/alarmTableHmi';
import LogDetail from '@/jmapNew/theme/nanjing_02/menus/menuDialog/logDetail';
import { prefixIntrger } from '@/utils/date';
export default {
name: 'BaSiDi',
components: {
AlarmTableHmi,
LogDetail
},
data() {
return {
dialogVisible: true,
tipContent: [],
buzzerAudio: BuzzerAudio,
sound: false,
noConfirmMapA: {},
noConfirmMapB: {},
confirmNoRecoverMapA: {},
confirmNoRecoverMapB: {},
confirmNoRecoverMapC: {},
noConfirmMapAString: '{}',
noConfirmMapBString: '{}',
confirmNoRecoverMapAString: '{}',
confirmNoRecoverMapBString: '{}',
confirmNoRecoverMapCString: '{}',
time: '00:00:00',
dateString: '00.00.0000'
};
},
computed: {
...mapGetters('training', [
'mode',
'started',
'steps',
'order'
]),
...mapGetters('map', [
'stationList',
'trainList'
]),
userId() {
return this.$store.state.user ? this.$store.state.user.id : '';
},
isNoConfirmLevelA() {
return this.noConfirmMapAString !== '{}';
},
isNoConfirmLevelB() {
return this.noConfirmMapBString !== '{}';
},
isNoRecoverLevelA() {
return this.confirmNoRecoverMapAString !== '{}';
},
isNoRecoverLevelB() {
return this.confirmNoRecoverMapBString !== '{}';
},
isNoRecoverLevelC() {
return this.confirmNoRecoverMapCString !== '{}';
}
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.initDate(date);
},
'$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
},
'$store.state.socket.simulationAlarmInfo': function(val) {
(val || []).forEach(item => {
if (!item.confirmed) {
this.tipContent.push(item);
this.handleAlarm(item);
if (this.tipContent.length > 3) {
this.tipContent.shift();
}
if (item.level === 'A') {
this.noConfirmMapA[item.code] = item;
this.noConfirmMapAString = JSON.stringify(this.noConfirmMapA);
} else if (item.level === 'B') {
this.noConfirmMapB[item.code] = item;
this.noConfirmMapBString = JSON.stringify(this.noConfirmMapB);
}
} else if (!item.recovered) {
if (item.level === 'A') {
delete this.noConfirmMapA[item.code];
this.confirmNoRecoverMapA[item.code] = item;
this.noConfirmMapAString = JSON.stringify(this.noConfirmMapA);
this.confirmNoRecoverMapAString = JSON.stringify(this.confirmNoRecoverMapA);
} else if (item.level === 'B') {
delete this.noConfirmMapB[item.code];
this.confirmNoRecoverMapB[item.code] = item;
this.noConfirmMapBString = JSON.stringify(this.noConfirmMapB);
this.confirmNoRecoverMapBString = JSON.stringify(this.confirmNoRecoverMapB);
} else if (item.level === 'C') {
this.confirmNoRecoverMapC[item.code] = item;
this.confirmNoRecoverMapCString = JSON.stringify(this.confirmNoRecoverMapC);
}
} else {
if (item.level === 'A') {
delete this.noConfirmMapA[item.code];
delete this.confirmNoRecoverMapA[item.code];
this.noConfirmMapAString = JSON.stringify(this.noConfirmMapA);
this.confirmNoRecoverMapAString = JSON.stringify(this.confirmNoRecoverMapA);
} else if (item.level === 'B') {
delete this.noConfirmMapB[item.code];
delete this.confirmNoRecoverMapB[item.code];
this.noConfirmMapBString = JSON.stringify(this.noConfirmMapB);
this.confirmNoRecoverMapBString = JSON.stringify(this.confirmNoRecoverMapB);
} else if (item.level === 'C') {
delete this.confirmNoRecoverMapC[item.code];
this.confirmNoRecoverMapCString = JSON.stringify(this.confirmNoRecoverMapC);
}
}
});
}
},
methods: {
undeveloped() {
this.doClose();
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
callback: action => {
}
});
},
showHimAlarm(level) {
this.$refs.alarmTableHmi.doShow(level);
},
showDiary() {
this.$refs.logDetail.doShow();
},
controlAudio(val) {
const audio = document.getElementById('buzzer');
this.sound = val;
if (audio !== null) {
if (val) {
audio.play();
} else if (val === false) {
audio.pause();
}
}
},
handleDialogShow(type) {
this.$emit('handleDialogShow', type);
},
selectBeginTime() {
this.$emit('selectBeginTime');
},
end() {
this.$emit('end');
},
back() {
this.$emit('back');
},
initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`;
const years = date.getFullYear() + '';
let months = date.getMonth() + 1 + '';
let dates = date.getDate() + '';
if (months.length < 2) { months = '0' + months; }
if (dates.length < 2) { dates = '0' + dates; }
this.dateString = dates + '.' + months + '.' + years;
}
}
};
</script>
<style scoped rel="stylesheet/scss" lang="scss">
@import "src/styles/mixin.scss";
$width: 30px;
$height: 90px;
$menuPadding: 10px;
$menuItemHeight: 30px;
$menuItemWidth: 190px;
$menuItemPadding: 5px;
.nav {
display: block;
cursor: pointer;
color: #0000;
background: -webkit-linear-gradient(#FDFDFE, #DEE3F3);
background: -o-linear-gradient(#FDFDFE, #DEE3F3);
background: -moz-linear-gradient(#FDFDFE, #DEE3F3);
background: linear-gradient(#FDFDFE, #DEE3F3);
border: 1px solid #B6BCCC !important;
border-bottom: 2px solid #B6BCCC !important;
list-style: none;
}
.div-simulate-button{
height: 20px;
line-height: 20px;
display: inline-block;
font-size: 14px;
color: #303030;
border: 1px solid #44556D;
background: #DDD;
text-align: center;
border-radius: 1px;
width: 80px;
}
.tip-content-box{
height: 30px;
width: 100%;
line-height: 30px;
background: #001528;
color: #C20F29;
font-size: 14px;
display: flex;
justify-content: space-around;
}
.button-row{
height: 20px;
line-height: 20px;
display: flex;
justify-content:space-between;
}
@keyframes fade {
from {
opacity: 1.0;
}
50% {
opacity: 0.4;
}
to {
opacity: 1.0;
}
}
@-webkit-keyframes fade {
from {
opacity: 1.0;
}
50% {
opacity: 0.4;
}
to {
opacity: 1.0;
}
}
.headerBox {
background: #f00;
animation: fade 600ms infinite;
-webkit-animation: fade 600ms infinite;
}
/deep/.el-dialog__body{
padding: 0;
}
</style>

View File

@ -1,14 +1,6 @@
<template> <template>
<div class="main" :style="{width: '100%',height:'100%',position:'absolute',overflow:'hidden'}" style="background: #000;"> <div class="main" :style="{width: '100%',height:'100%',position:'absolute',overflow:'hidden'}" style="background: #000;">
<ba-si-di <ba-si-di ref="baSiDi" @handleDialogShow="handleDialogShow" />
ref="baSiDi"
:is-run-plan="isRunPlan"
:data-error="dataError"
@handleDialogShow="handleDialogShow"
@end="end"
@back="back"
@selectBeginTime="selectBeginTime"
/>
<rps-dialog ref="rpsDialog" :is-run-plan="isRunPlan" :train-list="trainList" /> <rps-dialog ref="rpsDialog" :is-run-plan="isRunPlan" :train-list="trainList" />
<tro-dialog ref="troDialog" :is-run-plan="isRunPlan" :train-list="trainList" :station-list="stationList" /> <tro-dialog ref="troDialog" :is-run-plan="isRunPlan" :train-list="trainList" :station-list="stationList" />
<car-pack ref="carPack" /> <car-pack ref="carPack" />
@ -19,6 +11,15 @@
<atr-dialog ref="atrDialog" /> <atr-dialog ref="atrDialog" />
<train-trunk-detail ref="trainTrunkDetail" @openTra="openTra" /> <train-trunk-detail ref="trainTrunkDetail" @openTra="openTra" />
<set-time ref="setTime" @ConfirmSelectBeginTime="start" /> <set-time ref="setTime" @ConfirmSelectBeginTime="start" />
<div class="display-draft">
<el-button-group class="button-group-box">
<template v-if="!dataError">
<el-button type="success" :disabled="isRunPlan" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>
</template>
<el-button type="primary" size="small" @click="back">{{ $t('display.demon.back') }}</el-button>
</el-button-group>
</div>
</div> </div>
</template> </template>
<script> <script>
@ -34,7 +35,7 @@ import { loadMapDataById } from '@/utils/loaddata';
import { EventBus } from '@/scripts/event-bus'; import { EventBus } from '@/scripts/event-bus';
import { getSimulationMemberList, getAllSimulationUser } from '@/api/simulation'; import { getSimulationMemberList, getAllSimulationUser } from '@/api/simulation';
import { getMemberListCommon, getUserListCommon } from '@/api/rtSimulation'; import { getMemberListCommon, getUserListCommon } from '@/api/rtSimulation';
import BaSiDi from './baSiDi'; import BaSiDi from './baSiDiNew';
import RpsDialog from './rps'; import RpsDialog from './rps';
import TroDialog from './tro'; import TroDialog from './tro';
import CarPack from './carPack'; import CarPack from './carPack';
@ -87,10 +88,10 @@ export default {
return getSessionStorage('project'); return getSessionStorage('project');
}, },
isDemon() { isDemon() {
return this.mode === 'demon' && this.project != 'drts'; return this.mode === 'demon' && !this.project.includes('drts');
}, },
isContest() { isContest() {
return this.mode === 'demon' && this.project == 'drts'; return this.mode === 'demon' && this.project.includes('drts');
}, },
mapId() { mapId() {
return this.$route.query.mapId; return this.$route.query.mapId;
@ -408,6 +409,16 @@ export default {
} }
}; };
</script> </script>
<style scoped rel="stylesheet/scss" lang="scss">
.display-draft {
position: fixed;
right: 10px;
bottom: 15px;
.button-group-box{
float: right;
}
}
</style>
<style> <style>
.nanjing-02__systerm .el-dialog { .nanjing-02__systerm .el-dialog {
background: #d8d8d8; background: #d8d8d8;
@ -469,5 +480,4 @@ export default {
border: 1px solid #B1B1B1; border: 1px solid #B1B1B1;
color: #ABABAB; color: #ABABAB;
} }
</style> </style>

View File

@ -145,7 +145,7 @@
</div> </div>
<div v-else-if="operationType === 'update'" style="display: flex;justify-content: flex-start;"> <div v-else-if="operationType === 'update'" style="display: flex;justify-content: flex-start;">
<div> <div>
<el-table :data="tableData" border style="width: 280px;margin-top: 20px;" height="200"> <el-table :data="tableData" border style="width: 280px;margin-top: 20px;" height="200" @current-change="handleCurrentChange">
<el-table-column prop="date" label="方向" width="60" /> <el-table-column prop="date" label="方向" width="60" />
<el-table-column label="列车号" width="157"> <el-table-column label="列车号" width="157">
<template slot-scope="scope"> <template slot-scope="scope">
@ -222,7 +222,7 @@
</div> </div>
<div v-else-if="operationType === 'move'" style="display: flex;justify-content: flex-start;"> <div v-else-if="operationType === 'move'" style="display: flex;justify-content: flex-start;">
<div> <div>
<el-table :data="tableData" border style="width: 280px;margin-top: 20px;" height="200"> <el-table :data="tableData" border style="width: 280px;margin-top: 20px;" height="200" @current-change="handleCurrentChange">
<el-table-column prop="date" label="方向" width="60" /> <el-table-column prop="date" label="方向" width="60" />
<el-table-column prop="name" label="列车号" width="157"> <el-table-column prop="name" label="列车号" width="157">
<template slot-scope="scope"> <template slot-scope="scope">
@ -361,14 +361,19 @@ export default {
this.$store.dispatch('training/emitTipFresh'); this.$store.dispatch('training/emitTipFresh');
}); });
}, },
handleCurrentChange(val) {
const train = this.$store.getters['map/getDeviceByCode'](val.code);
this.selected = train;
this.nowTrainCode = train.destinationCode + (train.serviceNumber.substr(1)) + (train.tripNumber.substr(train.tripNumber.length - 2));
this.nowSectionCode = train.sectionCode;
this.groupNumber1 = train.code;
this.direction = train.right ? 'right' : 'left';
},
doClose() { doClose() {
this.loading = false; this.loading = false;
this.dialogShow = false; this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh'); this.$store.dispatch('training/emitTipFresh');
}, },
handleSelect(tab) {
this.activeIndex = tab;
},
trainFind() { trainFind() {
// this.$store.state.map.activeTrainList // this.$store.state.map.activeTrainList
this.tableData = []; this.tableData = [];
@ -396,6 +401,14 @@ export default {
if (type === 'create') { if (type === 'create') {
this.changeShowMode(); this.changeShowMode();
} }
if (type === 'create' || type === 'update' || type === 'move' || type === 'delete') {
this.$store.state.map.activeTrainList.forEach(item => {
const train = this.$store.getters['map/getDeviceByCode'](item);
this.tableData.push(train);
});
} else if (type === 'show') {
this.trainFind();
}
this.operationType = type; this.operationType = type;
}, },
trainCommit() { trainCommit() {

View File

@ -42,7 +42,7 @@ export default {
}, },
data() { data() {
return { return {
dialogShow: true, dialogShow: false,
mapData: null, mapData: null,
deviceCode: '', deviceCode: '',
selfJmap: null, selfJmap: null,
@ -128,7 +128,6 @@ export default {
this.$jlmap.setUpdateScreen(size); this.$jlmap.setUpdateScreen(size);
} else { } else {
this.maskOpen = true; this.maskOpen = true;
// this.$messageBox('线, ');
} }
}, },
back() {}, back() {},

View File

@ -122,6 +122,7 @@ export default {
this.$emit('goTroDialog'); this.$emit('goTroDialog');
}, },
changeStation(value) { changeStation(value) {
this.deviceCode = this.deviceCode || this.stationList[0].code;
const device = this.$store.getters['map/getDeviceByCode'](this.deviceCode); const device = this.$store.getters['map/getDeviceByCode'](this.deviceCode);
const stationSn = device.sn + value; const stationSn = device.sn + value;
const station = this.stationList.find((item) => { const station = this.stationList.find((item) => {

View File

@ -112,7 +112,7 @@ export default {
return getSessionStorage('project'); return getSessionStorage('project');
}, },
isContest() { isContest() {
return this.$route.params.mode === 'demon' && this.project == 'drts'; return this.$route.params.mode === 'demon' && this.project.includes('drts');
}, },
running() { running() {
return this.$store.state.training.started; return this.$store.state.training.started;

View File

@ -58,10 +58,10 @@ export default {
return getSessionStorage('project'); return getSessionStorage('project');
}, },
isDemon() { isDemon() {
return this.mode === 'demon' && this.project != 'drts'; return this.mode === 'demon' && !this.project.includes('drts');
}, },
isContest() { isContest() {
return this.mode === 'demon' && this.project == 'drts'; return this.mode === 'demon' && this.project.includes('drts');
}, },
isExam() { isExam() {
return this.mode === 'exam'; return this.mode === 'exam';

View File

@ -136,7 +136,7 @@ export default {
return getSessionStorage('project'); return getSessionStorage('project');
}, },
isContest() { isContest() {
return this.$route.params.mode === 'demon' && this.project == 'drts'; return this.$route.params.mode === 'demon' && this.project.includes('drts');
}, },
running() { running() {
return this.$store.state.training.started; return this.$store.state.training.started;

View File

@ -65,10 +65,10 @@ export default {
return getSessionStorage('project'); return getSessionStorage('project');
}, },
isDemon() { isDemon() {
return this.mode === 'demon' && this.project != 'drts'; return this.mode === 'demon' && !this.project.includes('drts');
}, },
isContest() { isContest() {
return this.mode === 'demon' && this.project == 'drts'; return this.mode === 'demon' && this.project.includes('drts');
}, },
isExam() { isExam() {
return this.mode === 'exam'; return this.mode === 'exam';

View File

@ -30,7 +30,7 @@
<el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button> <el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button>
</template> </template>
<template v-else-if="!projectDevice"> <template v-else-if="!projectDevice">
<el-button v-if="!isDepoltSim" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button> <el-button v-if="!isDepoltSim && project !== 'srsandbox'" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
<!-- isDisable&& --> <!-- isDisable&& -->
<el-button v-if="isAdmin&&!isDepoltSim" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button> <el-button v-if="isAdmin&&!isDepoltSim" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button> <el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>

View File

@ -123,7 +123,7 @@ export default {
return this.$route.query.type === 'DEPOT'; return this.$route.query.type === 'DEPOT';
}, },
isContest() { isContest() {
return this.project === 'drts'; return this.project.includes('drts');
}, },
isAdmin() { isAdmin() {
return this.$store.state.user.roles.includes('04') || this.$store.state.user.roles.includes('05'); return this.$store.state.user.roles.includes('04') || this.$store.state.user.roles.includes('05');

View File

@ -405,4 +405,13 @@ export default {
position: absolute; position: absolute;
left: 5px; left: 5px;
} }
.display-draft{
position: absolute;
right: 10px;
bottom: 15px;
}
.schema{
position: absolute;
right: 10px;
}
</style> </style>

View File

@ -244,7 +244,7 @@ export default {
const showMode = { '01': '03', '02': '02'}[prdType] || ''; const showMode = { '01': '03', '02': '02'}[prdType] || '';
Vue.prototype.$theme = new Theme(); Vue.prototype.$theme = new Theme();
Vue.prototype.$jlmap = new Jlmap({ this.selfJlmap = Vue.prototype.$jlmap = new Jlmap({
dom: document.getElementById(this.canvasId), dom: document.getElementById(this.canvasId),
config: { config: {
renderer: 'canvas', renderer: 'canvas',

View File

@ -5,9 +5,20 @@
<ibp-plate v-show="ibpShow" ref="ibpPlate" @hideIbp="hideIbp" /> <ibp-plate v-show="ibpShow" ref="ibpPlate" @hideIbp="hideIbp" />
<template v-show="panelShow" :panelShow="panelShow"> <template v-show="panelShow" :panelShow="panelShow">
<transition name="el-zoom-in-bottom"> <transition name="el-zoom-in-bottom">
<map-system-draft ref="mapCanvas" @back="back" /> <map-system-draft v-show="!specialDispatch" ref="mapCanvas" @back="back" />
</transition> </transition>
<div v-if="lineCode === '14'" v-show="prdType=='02'">
<ba-si-di ref="baSiDi" @handleDialogShow="handleDialogShow" />
<rps-dialog ref="rpsDialog" :is-run-plan="isRunPlan" :train-list="trainList" />
<tro-dialog ref="troDialog" :is-run-plan="isRunPlan" :train-list="trainList" :station-list="stationList" />
<car-pack ref="carPack" />
<tro-detail ref="troDetail" :is-run-plan="isRunPlan" :train-list="trainList" :station-list="stationList" @goTroDialog="troClick" />
<tra-dialog ref="traDialog" @openTrainTrunkDetail="openTrainTrunkDetail" />
<ttl-dialog ref="ttlDialog" />
<tmt-dialog ref="tmtDialog" />
<atr-dialog ref="atrDialog" />
<train-trunk-detail ref="trainTrunkDetail" @openTra="openTra" />
</div>
<menu-demon-joint <menu-demon-joint
ref="demonMenu" ref="demonMenu"
:group="group" :group="group"
@ -45,7 +56,7 @@
/> />
<join-fault-choose ref="faultChoose" :group="group" :offset="offset" /> <join-fault-choose ref="faultChoose" :group="group" :offset="offset" />
<join-run-plan-Load ref="runPlanLoad" :group="group" /> <join-run-plan-Load ref="runPlanLoad" :group="group" />
<menu-system-time ref="menuSystemTime" :offset="offset" :group="group" /> <menu-system-time v-show="!specialDispatch" ref="menuSystemTime" :offset="offset" :group="group" />
<menu-train-list v-if="prdType=='02'" @setCenter="setCenter" /> <menu-train-list v-if="prdType=='02'" @setCenter="setCenter" />
<members-manage ref="membersManage" :is-admin="isAdmin" @addSimulationMember="addSimulationMember" /> <!-- 成员管理 --> <members-manage ref="membersManage" :is-admin="isAdmin" @addSimulationMember="addSimulationMember" /> <!-- 成员管理 -->
<add-member ref="addMember" :station-list="stationList" /> <add-member ref="addMember" :station-list="stationList" />
@ -84,6 +95,17 @@ import { Message } from 'element-ui';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import MembersManage from './memberManage/membersManage'; import MembersManage from './memberManage/membersManage';
import AddMember from './memberManage/addMember'; import AddMember from './memberManage/addMember';
import BaSiDi from '@/views/newMap/displayBaSiDi/baSiDiNew';
import RpsDialog from '@/views/newMap/displayBaSiDi/rps';
import TroDialog from '@/views/newMap/displayBaSiDi/tro';
import CarPack from '@/views/newMap/displayBaSiDi/carPack';
import TroDetail from '@/views/newMap/displayBaSiDi/troDetail';
import TraDialog from '@/views/newMap/displayBaSiDi/tra';
import TtlDialog from '@/views/newMap/displayBaSiDi/ttl';
import TmtDialog from '@/views/newMap/displayBaSiDi/tmt';
import AtrDialog from '@/views/newMap/displayBaSiDi/atr';
import TrainTrunkDetail from '@/views/newMap/displayBaSiDi/trainTrunkDetail';
import Vue from 'vue';
export default { export default {
name: 'JointTrainingDraft', name: 'JointTrainingDraft',
@ -100,7 +122,17 @@ export default {
IbpPlate, IbpPlate,
MembersManage, MembersManage,
AddMember, AddMember,
Jl3dDevice Jl3dDevice,
BaSiDi,
RpsDialog,
TroDialog,
CarPack,
TroDetail,
TraDialog,
TtlDialog,
TmtDialog,
AtrDialog,
TrainTrunkDetail
}, },
data() { data() {
return { return {
@ -127,7 +159,8 @@ export default {
isAdmin: false, isAdmin: false,
deviceif:false, deviceif:false,
deviceShow: true, deviceShow: true,
centralizedStationMap: {} centralizedStationMap: {},
selfJmap: null
}; };
}, },
computed: { computed: {
@ -139,7 +172,8 @@ export default {
'bigScreenConfig', 'bigScreenConfig',
'stationList', 'stationList',
'sectionList', 'sectionList',
'signalList' 'signalList',
'trainList'
]), ]),
width() { width() {
return this.$store.state.app.width; return this.$store.state.app.width;
@ -155,12 +189,25 @@ export default {
}, },
project() { project() {
return getSessionStorage('project'); return getSessionStorage('project');
},
specialDispatch() {
return this.lineCode === '14' && this.$store.state.training.prdType === '02';
},
isRunPlan() {
return this.$store.state.training.started;
} }
}, },
watch: { watch: {
'$store.state.config.menuBarLoadedCount': function (val) { // menuBar '$store.state.config.menuBarLoadedCount': function (val) { // menuBar
this.setPosition(); this.setPosition();
}, },
'$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected;
if (device && device._type === 'Station' && this.$store.state.menuOperation.subType === 'troButton') {
this.$refs.troDialog.doClose();
this.$refs.troDetail.doShow(device.code);
}
},
'$store.state.training.prdType': function (prdType) { '$store.state.training.prdType': function (prdType) {
this.setPosition(); this.setPosition();
if (prdType == '01') { if (prdType == '01') {
@ -230,6 +277,7 @@ export default {
async mounted() { async mounted() {
await this.setWindowSize(); await this.setWindowSize();
await this.initLoadData(); await this.initLoadData();
this.selfJmap = Vue.prototype.$jlmap;
}, },
async beforeDestroy() { async beforeDestroy() {
await this.$store.dispatch('training/end', null); await this.$store.dispatch('training/end', null);
@ -363,10 +411,15 @@ export default {
this.endViewLoading(); this.endViewLoading();
} }
}, },
handleDialogShow(type) {
this.$refs[type].doShow();
},
// prdTyperole // prdTyperole
setSimulationPrdType(deviceCode) { setSimulationPrdType(deviceCode) {
// Dispatcher STATION_SUPERVISOR Audience Driver MAINTAINER // Dispatcher STATION_SUPERVISOR Audience Driver MAINTAINER
this.showStation = ''; this.showStation = '';
let tempData;
let dataZoom;
switch (this.userRole) { switch (this.userRole) {
case 'DISPATCHER': case 'DISPATCHER':
this.$store.dispatch('training/setPrdType', '02'); this.$store.dispatch('training/setPrdType', '02');
@ -379,11 +432,21 @@ export default {
this.jl3dmaintainershow = false; this.jl3dmaintainershow = false;
break; break;
case 'STATION_SUPERVISOR': case 'STATION_SUPERVISOR':
if (this.selfJmap) { Vue.prototype.$jlmap = this.selfJmap; }
this.$store.dispatch('training/setPrdType', '01'); this.$store.dispatch('training/setPrdType', '01');
this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR'); this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR');
this.$refs.menuSchema.chiShowStation = deviceCode; this.$refs.menuSchema.chiShowStation = deviceCode;
this.showStation = deviceCode; this.showStation = deviceCode;
// this.changePrdType('01'); // this.changePrdType('01');
if (this.lineCode === '14') {
const list = [];
const mapDevice = this.$store.state.map.mapDevice;
this.$jlmap.setMap(this.$store.state.map.map, this.$store.state.map.mapDevice, {routeData:this.$store.state.map.routeData, autoReentryData: this.$store.state.map.autoReentryData});
for (const key in mapDevice) {
list.push(mapDevice[key]);
}
this.$jlmap.updateShowMode(list, '02');
}
this.$jlmap.amendDevice([...this.sectionList, ...this.signalList]); this.$jlmap.amendDevice([...this.sectionList, ...this.signalList]);
this.mapViewLoadedOver && this.switchStationMode(deviceCode); this.mapViewLoadedOver && this.switchStationMode(deviceCode);
this.jl3dmaintainershow = false; this.jl3dmaintainershow = false;
@ -404,8 +467,8 @@ export default {
} }
this.$jlmap.updateShowStation(list, showStation); this.$jlmap.updateShowStation(list, showStation);
} }
const tempData = this.$store.state.map.map.displayList.find(item => { return item.stationCodeList.includes(deviceCode); }); tempData = this.$store.state.map.map.displayList.find(item => { return item.stationCodeList.includes(deviceCode); });
const dataZoom = { offsetX: tempData.offsetX, offsetY: tempData.offsetY, scaleRate: tempData.scaleRate }; dataZoom = { offsetX: tempData.offsetX, offsetY: tempData.offsetY, scaleRate: tempData.scaleRate };
this.$store.commit('map/setDataZoom', dataZoom); this.$store.commit('map/setDataZoom', dataZoom);
this.$jlmap.setDepot(dataZoom); this.$jlmap.setDepot(dataZoom);
this.jl3dmaintainershow = false; this.jl3dmaintainershow = false;
@ -629,6 +692,15 @@ export default {
addSimulationMember() { addSimulationMember() {
this.$refs.addMember.doShow(); this.$refs.addMember.doShow();
}, },
troClick() {
this.$refs.troDialog.doShow();
},
openTrainTrunkDetail(index) {
this.$refs.trainTrunkDetail.doShow(index);
},
openTra() {
this.$refs.traDialog.doShow();
},
checkRoleChange(data) { checkRoleChange(data) {
data.forEach(item => { data.forEach(item => {
if (item.messageType === 'KICK_OUT' && item.userId == this.userId) { if (item.messageType === 'KICK_OUT' && item.userId == this.userId) {
@ -651,9 +723,10 @@ export default {
<style scoped lang="scss" rel="stylesheep/scss"> <style scoped lang="scss" rel="stylesheep/scss">
.main { .main {
display: block; display: block;
width: 100%; width: 100% !important;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
background: #000000;
} }
</style> </style>

View File

@ -33,7 +33,7 @@
<template v-if="!dataError"> <!-- 地图错误判断 --> <template v-if="!dataError"> <!-- 地图错误判断 -->
<template v-if="isAdmin && project != 'refereeJsxt' && $route.query.type !== 'ILW'"> <template v-if="isAdmin && project != 'refereeJsxt' && $route.query.type !== 'ILW'">
<!-- 按计划行车 --> <!-- 按计划行车 -->
<el-button type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button> <el-button v-if="project !== 'srsandbox'" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
<el-button v-if="isAdministrator" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button> <el-button v-if="isAdministrator" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
<el-button type="danger" size="small" @click="end">{{ $t('joinTraining.initialize') }}</el-button> <el-button type="danger" size="small" @click="end">{{ $t('joinTraining.initialize') }}</el-button>
</template> </template>

View File

@ -77,7 +77,7 @@ export default {
}, },
editModel: {}, editModel: {},
lineCode: '', lineCode: '',
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'], loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts'],
} }
}, },
computed: { computed: {

View File

@ -132,6 +132,9 @@ export default {
const dataList = convertSheetToList(wb.Sheets[index], true); const dataList = convertSheetToList(wb.Sheets[index], true);
if (dataList.length) { if (dataList.length) {
const accountMap = {}; const accountMap = {};
if (!dataList[0][0].includes('学号') || !dataList[1][0].includes('姓名')) {
throw new Error('检测到Excel格式错误请使用模板格式导入');
}
for ( let i = 1; i <= dataList[0].length; i++) { for ( let i = 1; i <= dataList[0].length; i++) {
const studentId = dataList[0][i]; const studentId = dataList[0][i];
const name = dataList[1][i]; const name = dataList[1][i];

View File

@ -109,6 +109,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.loadInitData();
}, },
methods: { methods: {
loadInitData() { loadInitData() {

View File

@ -46,7 +46,7 @@ export default {
reset: true, reset: true,
show:false show:false
}, },
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'], loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts', 'hlsdrts', 'designhlsdrts'],
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,

View File

@ -84,7 +84,6 @@ export default {
'switchNRTurnChain', 'switchNRTurnChain',
'switchSingleLockChain', 'switchSingleLockChain',
'switchLossChain', 'switchLossChain',
'signalForceCancelRoute',
'initSingleLockSwitch', 'initSingleLockSwitch',
'ctcOverlapOnlyTurnBackStationLock', 'ctcOverlapOnlyTurnBackStationLock',
'guideNeedRouteSettingFirst', 'guideNeedRouteSettingFirst',
@ -115,7 +114,7 @@ export default {
'setManualWhenHeadTrainArriveTarget', 'setManualWhenHeadTrainArriveTarget',
'routeDefaultCheckConflict' 'routeDefaultCheckConflict'
], ],
selectList: ['runMode'], selectList: ['runMode', 'singleApproachLockCancelRoute'],
generalConfig: [ generalConfig: [
'lockFirst', 'lockFirst',
'switchSingleHandle', 'switchSingleHandle',
@ -123,7 +122,7 @@ export default {
'switchNRTurnChain', 'switchNRTurnChain',
'switchSingleLockChain', 'switchSingleLockChain',
'switchLossChain', 'switchLossChain',
'signalForceCancelRoute', 'singleApproachLockCancelRoute',
'runMode', 'runMode',
'initSingleLockSwitch', 'initSingleLockSwitch',
'ctcOverlapOnlyTurnBackStationLock', 'ctcOverlapOnlyTurnBackStationLock',
@ -165,7 +164,8 @@ export default {
speedList: ['rmAtpSpeed', 'urmAtpSpeed'], speedList: ['rmAtpSpeed', 'urmAtpSpeed'],
numberList: ['figuresOfTripNumber', 'figuresOfServiceNumber'], numberList: ['figuresOfTripNumber', 'figuresOfServiceNumber'],
optionsMap: { optionsMap: {
runMode:[{label: 'CBTC级别', value: 'CBTC'}, {label: '点式通信', value: 'ITC'}, {label: '联锁级', value: 'IL'}] runMode:[{label: 'CBTC级别', value: 'CBTC'}, {label: '点式通信', value: 'ITC'}, {label: '联锁级', value: 'IL'}],
singleApproachLockCancelRoute: [{label: '不能取消', value: 'NOT'}, {label: '延时取消', value: 'DELAY'}, {label: '直接取消', value: 'DIRECT'}]
}, },
remarkMap: { remarkMap: {
lockFirst: '是否先锁闭——办理过程直接先锁闭区段', lockFirst: '是否先锁闭——办理过程直接先锁闭区段',
@ -173,7 +173,7 @@ export default {
switchSingleHandle: '道岔区段状态改变按单个道岔处理', switchSingleHandle: '道岔区段状态改变按单个道岔处理',
switchNRTurnChain:'道岔正/反操是否联动', switchNRTurnChain:'道岔正/反操是否联动',
switchSingleLockChain:'道岔单解/锁是否联动', switchSingleLockChain:'道岔单解/锁是否联动',
signalForceCancelRoute:'是否强制取消进路/在接近区段占用时是否依旧强制执行取消进路', singleApproachLockCancelRoute:'接近区段占用时取消进路方式',
runMode:'列车控制模式/级别', runMode:'列车控制模式/级别',
initSingleLockSwitch: '初始加载设备时是否默认单锁正线道岔', initSingleLockSwitch: '初始加载设备时是否默认单锁正线道岔',
ctcOverlapOnlyTurnBackStationLock: 'CTC列车进路延续保护仅折返站处锁闭', ctcOverlapOnlyTurnBackStationLock: 'CTC列车进路延续保护仅折返站处锁闭',

View File

@ -51,7 +51,7 @@
</template> </template>
<script> <script>
import { getDeviceDetail, setPsdConfig, setSignalConfig, setSwitchConfig, setPslConfig, setPscConfig } from '@/api/project'; import { setDeviceConfig, getDeviceDetail } from '@/api/project';
import { getAllMapOnline, getStationListNeedAttendant, getPsdListByStandCode, getStandListByStationCode } from '@/api/jmap/map'; import { getAllMapOnline, getStationListNeedAttendant, getPsdListByStandCode, getStandListByStationCode } from '@/api/jmap/map';
export default { export default {
@ -66,9 +66,17 @@ export default {
leftRules: {}, leftRules: {},
rightRules: {}, rightRules: {},
setDeviceConfigFunction: null, setDeviceConfigFunction: null,
addrName: '',
data: {}, data: {},
titleMap: { SWITCH: '道岔', PSD:'屏蔽门', SIGNAL: '信号机', PSL:'端头控制盒', PSC: 'PSC控制柜' }, titleMap: {
SWITCH: '道岔',
PSD:'屏蔽门',
SIGNAL: '信号机',
PSL:'端头控制盒',
PSC: 'PSC控制柜',
SECTION: '区段',
TRAIN: '列车',
UDP_CLIENT: 'UDP客户端'
},
mapId: '', mapId: '',
mapList: [], mapList: [],
stationCode: '', stationCode: '',
@ -92,33 +100,6 @@ export default {
} }
}, },
methods: { methods: {
initForm(row) {
switch (row.type) {
case 'PSD': {
this.setDeviceConfigFunction = setPsdConfig;
break;
}
case 'SIGNAL': {
this.setDeviceConfigFunction = setSignalConfig;
break;
}
case 'SWITCH': {
this.setDeviceConfigFunction = setSwitchConfig;
this.addrName = '网关地址:';
break;
}
case 'PSL': {
this.setDeviceConfigFunction = setPslConfig;
this.addrName = '网关地址:';
break;
}
case 'PSC': {
this.setDeviceConfigFunction = setPscConfig;
this.addrName = '网关位地址:';
break;
}
}
},
initData(row) { initData(row) {
this.jsonConfig = '{}'; this.jsonConfig = '{}';
getDeviceDetail(row.id).then(resp => { getDeviceDetail(row.id).then(resp => {
@ -143,7 +124,7 @@ export default {
}, },
doShow(row) { doShow(row) {
this.initData(row); this.initData(row);
this.initForm(row); // this.initForm(row);
this.dialogVisible = true; this.dialogVisible = true;
this.data = row; this.data = row;
}, },
@ -155,7 +136,7 @@ export default {
flag = valid; flag = valid;
}); });
} }
const form = JSON.parse(this.jsonConfig); // const form = JSON.parse(this.jsonConfig);
// if (this.data.type === 'PSC' || this.data.type === 'PSL') { // if (this.data.type === 'PSC' || this.data.type === 'PSL') {
// form.psdCode = this.formModel.psdCode; // form.psdCode = this.formModel.psdCode;
// flag && self.setDeviceConfigFunction(this.data.id, form).then(response => { // flag && self.setDeviceConfigFunction(this.data.id, form).then(response => {
@ -166,7 +147,8 @@ export default {
// self.$message.error(this.$t('tip.modifyTheFailure') + error.message); // self.$message.error(this.$t('tip.modifyTheFailure') + error.message);
// }); // });
// } else { // } else {
flag && self.setDeviceConfigFunction(this.data.id, form).then(response => { const data = {id: this.data.id, project: this.data.project, code: this.data.code, type: this.data.type, config: this.jsonConfig };
flag && setDeviceConfig(data).then(response => {
self.$message.success('设置设备网关映射配置成功'); self.$message.success('设置设备网关映射配置成功');
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');

View File

@ -29,7 +29,7 @@ export default {
EditConfigIbp EditConfigIbp
}, },
data() { data() {
const noShowPathType = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'IBP']; const noShowPathType = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'IBP', 'SECTION', 'TRAIN', 'UDP_CLIENT'];
return { return {
examResultList: [], examResultList: [],
url: '', url: '',
@ -51,7 +51,8 @@ export default {
designgzb: 'GZB', designgzb: 'GZB',
designheb: 'HEB', designheb: 'HEB',
designsdy: 'SDY', designsdy: 'SDY',
designrichorjoint: 'RICHOR_JOINT' designrichorjoint: 'RICHOR_JOINT',
designsrsandbox: 'SR_SANDBOX'
}, },
queryForm: { queryForm: {
labelWidth: '120px', labelWidth: '120px',
@ -188,9 +189,10 @@ export default {
}); });
}, },
editConfig(index, row) { editConfig(index, row) {
const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT'];
if (row.type === 'LW' || row.type === 'VR_IBP' || row.type === 'ISCS_LW' || row.type === 'ISCS_CW') { if (row.type === 'LW' || row.type === 'VR_IBP' || row.type === 'ISCS_LW' || row.type === 'ISCS_CW') {
this.$refs.editConfig.doShow(row); this.$refs.editConfig.doShow(row);
} else if (row.type === 'SWITCH' || row.type === 'SIGNAL' || row.type === 'PSD' || row.type === 'PSL' || row.type === 'PSC' || row.type === 'UDP_LOW' || row.type === 'SECTION') { } else if (configGatewayList.includes(row.type)) {
this.$refs.editConfigGateway.doShow(row); this.$refs.editConfigGateway.doShow(row);
} else if (row.type == 'LSW' || row.type == 'CCTV' || row.type == 'VR_PSD' || row.type === 'PLC_GATEWAY' || row.type === 'SANDBOX' || row.type === 'ILW') { } else if (row.type == 'LSW' || row.type == 'CCTV' || row.type == 'VR_PSD' || row.type === 'PLC_GATEWAY' || row.type === 'SANDBOX' || row.type === 'ILW') {
this.$refs.editConfigScreen.doShow(row); this.$refs.editConfigScreen.doShow(row);

View File

@ -76,7 +76,7 @@ export default {
}, },
lineCode: '', // 线 lineCode: '', // 线
expandList: [], expandList: [],
loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts'] loadingProjectList: ['login', 'design', 'xty', 'designxty', 'gzb', 'designxty', 'xadt', 'designxadt', 'drts', 'designdrts','hlsdrts', 'designhlsdrts']
}; };
}, },
computed: { computed: {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

BIN
static/background/rain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

BIN
static/background/sand.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 KiB

BIN
static/background/sands.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
static/background/sunny.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

BIN
static/sprite/evening.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
static/sprite/rain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
static/sprite/snow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
static/sprite/sunny.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB