Merge remote-tracking branch 'origin/test'
@ -37,38 +37,6 @@ export function getDeviceDetail(id) {
|
||||
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盘网关映射配置 */
|
||||
export function setIbpConfig(id, data) {
|
||||
return request({
|
||||
@ -77,15 +45,6 @@ export function setIbpConfig(id, data) {
|
||||
data: data
|
||||
});
|
||||
}
|
||||
/** 添加/修改psc控制柜网关映射配置 */
|
||||
export function setPscConfig(id, data) {
|
||||
return request({
|
||||
url: `/api/device/${id}/config/psc`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
||||
/** 添加/修改ibp设备配置 */
|
||||
export function setVrIbpConfig(id, data) {
|
||||
return request({
|
||||
@ -177,3 +136,11 @@ export function setIlwConfig(id, data) {
|
||||
data: data
|
||||
});
|
||||
}
|
||||
/** 添加/修改设备配置 */
|
||||
export function setDeviceConfig(data) {
|
||||
return request({
|
||||
url: `/api/device/config/updateConfig`,
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
}
|
||||
|
@ -1,7 +1,10 @@
|
||||
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||
|
||||
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.aspect = window.innerWidth / window.innerHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
|
||||
return camera;
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ export function SetScene(project) {
|
||||
bgTexture = new THREE.TextureLoader().load(JL3D_LOCAL_STATIC+"/background/other.jpg");
|
||||
}
|
||||
scene.background = bgTexture;
|
||||
|
||||
// cubeTexture.dispos e();
|
||||
return scene;
|
||||
}
|
||||
|
105
src/jlmap3d/config/WeatherManager.js
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -14,6 +14,8 @@ import { SetRender } from '@/jlmap3d/config/SetRender';
|
||||
import { SetScene } from '@/jlmap3d/config/SetScene';
|
||||
import { SetLights } from '@/jlmap3d/config/SetLights';
|
||||
|
||||
import { WeatherManager } from '@/jlmap3d/config/WeatherManager';
|
||||
|
||||
//controls
|
||||
import { OrbitControls } from '@/jlmap3d/main/control/OrbitControls';
|
||||
// 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();
|
||||
scene.add(scenesimulation);
|
||||
scene.add(scenestation);
|
||||
|
||||
let weatherManager = new WeatherManager();
|
||||
scene.add(weatherManager.skybox);
|
||||
// scene.add(weatherManager.instance);
|
||||
|
||||
// scene.add(sphere);
|
||||
|
||||
//定义镜头操作
|
||||
let controls = new THREE.OrbitControls(camera);
|
||||
controls.maxPolarAngle = Math.PI/2;
|
||||
// controls.screenSpacePanning = true;
|
||||
//controls.minPolarAngle = Math.PI/8;
|
||||
controls.maxDistance = 1000;
|
||||
controls.maxDistance = 800;
|
||||
|
||||
//模型加载器
|
||||
this.assetloader = new AssetLoader();
|
||||
//替换材质组,例:信号机不同灯光
|
||||
@ -124,6 +134,14 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
//循环渲染
|
||||
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);
|
||||
// stats.update();
|
||||
}
|
||||
@ -219,7 +237,6 @@ export function JLmap3d(dom, data,skinCode,storemod,routegroup,project) {
|
||||
|
||||
//切换显示列车信息
|
||||
this.showtrainmsg = function(showtype){
|
||||
console.log(trainlisttest);
|
||||
if(showtype == "show"){
|
||||
for(let st=0;st<trainlisttest.textlist.length;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(){
|
||||
controls.enabled = true;
|
||||
|
@ -4,13 +4,13 @@ export default class EMouse {
|
||||
}
|
||||
|
||||
mouseover(e) {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) {
|
||||
instance.mouseEvent.mouseEnter(e);
|
||||
}
|
||||
}
|
||||
// if (this.device.prdType) {
|
||||
// this.device.setVisible(true);
|
||||
// const instance = this.device.getInstanceByCode(this.device.model.sectionCode);
|
||||
// if (instance && instance.mouseEvent && instance.mouseEvent.mouseover) {
|
||||
// instance.mouseEvent.mouseEnter(e);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
mouseout(e) {
|
||||
@ -24,9 +24,9 @@ export default class EMouse {
|
||||
}
|
||||
|
||||
mouseEnter() {
|
||||
if (this.device.prdType) {
|
||||
this.device.setVisible(true);
|
||||
}
|
||||
// if (this.device.prdType) {
|
||||
// this.device.setVisible(true);
|
||||
// }
|
||||
}
|
||||
|
||||
mouseLeave() {
|
||||
|
@ -207,7 +207,9 @@ export default {
|
||||
{label: '虚拟电子沙盘', value: 'SANDBOX'},
|
||||
{label: '联锁工作站', value: 'ILW'},
|
||||
{label: 'UDP下位机', value: 'UDP_LOW'},
|
||||
{label: '区段', value: 'SECTION'}
|
||||
{label: '区段', value: 'SECTION'},
|
||||
{label: '列车', value: 'TRAIN'},
|
||||
{label: 'UDP客户端', value: 'UDP_CLIENT'}
|
||||
],
|
||||
ossList: [
|
||||
{ name: '场景1', url: '场景1—桂花园道岔故障(配分版60分).pdf' },
|
||||
|
@ -132,7 +132,7 @@ export const loginInfo = {
|
||||
systemType: '011'
|
||||
},
|
||||
drts: {
|
||||
title: '2020年“新誉杯”全国行车调度员大赛训练系统',
|
||||
title: '全国行车调度员大赛训练系统',
|
||||
loginPath: '/login?project=drts',
|
||||
loginParam: 'DRTS',
|
||||
loginTitle: '空串',
|
||||
@ -149,6 +149,40 @@ export const loginInfo = {
|
||||
navigationMarginLeft: '60px',
|
||||
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: {
|
||||
title: '城市轨道交通列车运行智慧辅助系统',
|
||||
loginPath: '/design/login?project=bjd',
|
||||
@ -548,6 +582,8 @@ export const ProjectIcon = {
|
||||
wjls: Favicon,
|
||||
drts: Favicon,
|
||||
designdrts: Favicon,
|
||||
hlsdrts: FaviconHls,
|
||||
designhlsdrts: FaviconHls,
|
||||
nty: FaviconNty,
|
||||
designnty: FaviconNty,
|
||||
ntyc: FaviconNty,
|
||||
@ -586,6 +622,8 @@ export const ProjectCode = {
|
||||
wjls: 'WJLS',
|
||||
drts: 'DRTS',
|
||||
designdrts: 'DRTS',
|
||||
hlsdrts: 'DRTS',
|
||||
designhlsdrts: 'DRTS',
|
||||
nty: 'NTY',
|
||||
designnty: 'NTY',
|
||||
ntyl: 'NTYL',
|
||||
@ -608,12 +646,18 @@ export const ProjectCode = {
|
||||
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 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 VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt', 'designxadt', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox']; // 登录页右下角版本开发基于不展示
|
||||
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']; // 登录页右下角主体不展示
|
||||
export const VersionBaseNoShow = ['heb', 'designheb', 'hls', 'designhls', 'drts', 'wjls', 'hyd', 'designhyd', 'cgy', 'designcgy', 'xadt',
|
||||
'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',
|
||||
'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 NoSimulationQrCodeList = ['heb', 'bjd'];
|
||||
export const RegisterCodeList = ['cgy', 'designcgy'];
|
||||
|
@ -57,7 +57,7 @@ export default {
|
||||
pmsList: []
|
||||
},
|
||||
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: {
|
||||
|
@ -49,7 +49,7 @@ export default {
|
||||
node: {
|
||||
},
|
||||
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: {
|
||||
|
@ -83,7 +83,7 @@ export default {
|
||||
examList: [],
|
||||
trainingOperateTypeMap: {},
|
||||
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: {
|
||||
|
@ -93,7 +93,7 @@ export default {
|
||||
deviceShow:true,
|
||||
msgshow:false,
|
||||
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']
|
||||
|
||||
};
|
||||
},
|
||||
|
@ -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'}]}
|
||||
// ],
|
||||
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: {
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
<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 > -->
|
||||
@ -26,7 +26,6 @@
|
||||
<div id="testjlmap3d" class="jlmap3ddraw">
|
||||
<canvas id="canvastexture" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</template>
|
||||
@ -79,7 +78,7 @@ export default {
|
||||
mapid:null,
|
||||
group: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: {
|
||||
@ -167,6 +166,9 @@ export default {
|
||||
showtrainmsg(showtype) {
|
||||
this.jlmap3d.showtrainmsg(showtype);
|
||||
},
|
||||
changeweather(weathertype){
|
||||
this.jlmap3d.changeweather(weathertype);
|
||||
},
|
||||
updatemenulist(stationlist, trainlist) {
|
||||
const stations = [];
|
||||
for (const k in stationlist) {
|
||||
|
@ -2,9 +2,16 @@
|
||||
|
||||
<div class="configmenu">
|
||||
<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="showtrain">{{bt2name}}</el-button>
|
||||
</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>
|
||||
|
||||
</template>
|
||||
@ -12,6 +19,9 @@
|
||||
<script>
|
||||
|
||||
|
||||
import { JL3D_LOCAL_STATIC } from '@/api/jlmap3d/assets3d.js';
|
||||
|
||||
|
||||
export default {
|
||||
name: 'Jlmap3dConfig',
|
||||
components: {
|
||||
@ -19,8 +29,28 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
bt1name:this.$t('jlmap3d.stationInfoDisplay'),
|
||||
bt2name:this.$t('jlmap3d.trainInfoDisplay'),
|
||||
isActive:0,
|
||||
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() {
|
||||
@ -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() {
|
||||
|
||||
@ -75,4 +115,26 @@ export default {
|
||||
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>
|
||||
|
@ -60,7 +60,7 @@ export default {
|
||||
mapId:'',
|
||||
lineCode:'',
|
||||
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: {
|
||||
|
@ -146,7 +146,7 @@ export default {
|
||||
value:'',
|
||||
isCctv:true,
|
||||
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: {
|
||||
|
@ -35,7 +35,7 @@ export default {
|
||||
LimitControl: [],
|
||||
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,
|
||||
trainingTypeMap: {},
|
||||
pagerConfig: {
|
||||
|
@ -120,12 +120,12 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
</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 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('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>
|
||||
<!--<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('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('1')"><img :src="handRight" width="14" height="14" style="margin-right: 15px">“新誉杯”竞赛规程</div>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
<register ref="register" />
|
||||
</div>
|
||||
@ -452,7 +452,7 @@ export default {
|
||||
},
|
||||
handleLoginSucessRoute() {
|
||||
// 设置路由
|
||||
this.loading = this.project === 'drts' || false;
|
||||
this.loading = this.project === 'drts' || this.project === 'hlsdrts' || false;
|
||||
this.tipsMsg = '';
|
||||
removeSessionStorage('againEnter');
|
||||
if (this.$route.query.projectDevice) {
|
||||
@ -514,7 +514,7 @@ export default {
|
||||
projectDevice: this.$route.query.projectDevice,
|
||||
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: {
|
||||
group: res.data.group,
|
||||
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 => {
|
||||
if (this.project === 'wjls') {
|
||||
getSimulationInfoByGroup(res.data.group).then(resp =>{
|
||||
@ -566,8 +566,7 @@ export default {
|
||||
});
|
||||
} else {
|
||||
getSimulationInfoNew(res.data.group).then(resp => {
|
||||
this.$store.dispatch('app/transitionAnimations');
|
||||
if (this.project === 'drts') {
|
||||
if (this.project === 'drts' || this.project === 'hlsdrts') {
|
||||
this.$router.push({ path: `/displayNew/demon`, query: {
|
||||
lineCode: resp.data.map.lineCode,
|
||||
group: res.data.group,
|
||||
@ -578,6 +577,7 @@ export default {
|
||||
project:this.project
|
||||
}});
|
||||
} else {
|
||||
this.$store.dispatch('app/transitionAnimations');
|
||||
this.$router.push({ path: `/practiceDisplay`, query: {
|
||||
lineCode: resp.data.map.lineCode,
|
||||
group: res.data.group,
|
||||
@ -607,17 +607,17 @@ export default {
|
||||
this.$i18n.locale = this.lang;
|
||||
LangStorage.setLang(this.lang);
|
||||
},
|
||||
goCompetitionRules(val) {
|
||||
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');
|
||||
} 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');
|
||||
} else if (val === '3') {
|
||||
window.open('http://metroskills.camet.org.cn', '_blank');
|
||||
} 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');
|
||||
}
|
||||
},
|
||||
// goCompetitionRules(val) {
|
||||
// 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');
|
||||
// } 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');
|
||||
// } else if (val === '3') {
|
||||
// window.open('http://metroskills.camet.org.cn', '_blank');
|
||||
// } 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');
|
||||
// }
|
||||
// },
|
||||
registerUser() {
|
||||
this.$refs.register.doShow();
|
||||
}
|
||||
|
360
src/views/newMap/displayBaSiDi/baSiDiNew.vue
Normal 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>
|
@ -1,14 +1,6 @@
|
||||
<template>
|
||||
<div class="main" :style="{width: '100%',height:'100%',position:'absolute',overflow:'hidden'}" style="background: #000;">
|
||||
<ba-si-di
|
||||
ref="baSiDi"
|
||||
:is-run-plan="isRunPlan"
|
||||
:data-error="dataError"
|
||||
@handleDialogShow="handleDialogShow"
|
||||
@end="end"
|
||||
@back="back"
|
||||
@selectBeginTime="selectBeginTime"
|
||||
/>
|
||||
<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" />
|
||||
@ -19,6 +11,15 @@
|
||||
<atr-dialog ref="atrDialog" />
|
||||
<train-trunk-detail ref="trainTrunkDetail" @openTra="openTra" />
|
||||
<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>
|
||||
</template>
|
||||
<script>
|
||||
@ -34,7 +35,7 @@ import { loadMapDataById } from '@/utils/loaddata';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
import { getSimulationMemberList, getAllSimulationUser } from '@/api/simulation';
|
||||
import { getMemberListCommon, getUserListCommon } from '@/api/rtSimulation';
|
||||
import BaSiDi from './baSiDi';
|
||||
import BaSiDi from './baSiDiNew';
|
||||
import RpsDialog from './rps';
|
||||
import TroDialog from './tro';
|
||||
import CarPack from './carPack';
|
||||
@ -87,10 +88,10 @@ export default {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
isDemon() {
|
||||
return this.mode === 'demon' && this.project != 'drts';
|
||||
return this.mode === 'demon' && !this.project.includes('drts');
|
||||
},
|
||||
isContest() {
|
||||
return this.mode === 'demon' && this.project == 'drts';
|
||||
return this.mode === 'demon' && this.project.includes('drts');
|
||||
},
|
||||
mapId() {
|
||||
return this.$route.query.mapId;
|
||||
@ -408,6 +409,16 @@ export default {
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped rel="stylesheet/scss" lang="scss">
|
||||
.display-draft {
|
||||
position: fixed;
|
||||
right: 10px;
|
||||
bottom: 15px;
|
||||
.button-group-box{
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.nanjing-02__systerm .el-dialog {
|
||||
background: #d8d8d8;
|
||||
@ -469,5 +480,4 @@ export default {
|
||||
border: 1px solid #B1B1B1;
|
||||
color: #ABABAB;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -145,7 +145,7 @@
|
||||
</div>
|
||||
<div v-else-if="operationType === 'update'" style="display: flex;justify-content: flex-start;">
|
||||
<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 label="列车号" width="157">
|
||||
<template slot-scope="scope">
|
||||
@ -222,7 +222,7 @@
|
||||
</div>
|
||||
<div v-else-if="operationType === 'move'" style="display: flex;justify-content: flex-start;">
|
||||
<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="name" label="列车号" width="157">
|
||||
<template slot-scope="scope">
|
||||
@ -361,14 +361,19 @@ export default {
|
||||
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() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
},
|
||||
handleSelect(tab) {
|
||||
this.activeIndex = tab;
|
||||
},
|
||||
trainFind() {
|
||||
// this.$store.state.map.activeTrainList
|
||||
this.tableData = [];
|
||||
@ -396,6 +401,14 @@ export default {
|
||||
if (type === 'create') {
|
||||
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;
|
||||
},
|
||||
trainCommit() {
|
||||
|
@ -42,7 +42,7 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogShow: true,
|
||||
dialogShow: false,
|
||||
mapData: null,
|
||||
deviceCode: '',
|
||||
selfJmap: null,
|
||||
@ -128,7 +128,6 @@ export default {
|
||||
this.$jlmap.setUpdateScreen(size);
|
||||
} else {
|
||||
this.maskOpen = true;
|
||||
// this.$messageBox('该线路没有大屏切割位置信息, 请前往地图绘制编辑');
|
||||
}
|
||||
},
|
||||
back() {},
|
||||
|
@ -122,6 +122,7 @@ export default {
|
||||
this.$emit('goTroDialog');
|
||||
},
|
||||
changeStation(value) {
|
||||
this.deviceCode = this.deviceCode || this.stationList[0].code;
|
||||
const device = this.$store.getters['map/getDeviceByCode'](this.deviceCode);
|
||||
const stationSn = device.sn + value;
|
||||
const station = this.stationList.find((item) => {
|
||||
|
@ -112,7 +112,7 @@ export default {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
isContest() {
|
||||
return this.$route.params.mode === 'demon' && this.project == 'drts';
|
||||
return this.$route.params.mode === 'demon' && this.project.includes('drts');
|
||||
},
|
||||
running() {
|
||||
return this.$store.state.training.started;
|
||||
|
@ -58,10 +58,10 @@ export default {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
isDemon() {
|
||||
return this.mode === 'demon' && this.project != 'drts';
|
||||
return this.mode === 'demon' && !this.project.includes('drts');
|
||||
},
|
||||
isContest() {
|
||||
return this.mode === 'demon' && this.project == 'drts';
|
||||
return this.mode === 'demon' && this.project.includes('drts');
|
||||
},
|
||||
isExam() {
|
||||
return this.mode === 'exam';
|
||||
|
@ -136,7 +136,7 @@ export default {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
isContest() {
|
||||
return this.$route.params.mode === 'demon' && this.project == 'drts';
|
||||
return this.$route.params.mode === 'demon' && this.project.includes('drts');
|
||||
},
|
||||
running() {
|
||||
return this.$store.state.training.started;
|
||||
|
@ -65,10 +65,10 @@ export default {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
isDemon() {
|
||||
return this.mode === 'demon' && this.project != 'drts';
|
||||
return this.mode === 'demon' && !this.project.includes('drts');
|
||||
},
|
||||
isContest() {
|
||||
return this.mode === 'demon' && this.project == 'drts';
|
||||
return this.mode === 'demon' && this.project.includes('drts');
|
||||
},
|
||||
isExam() {
|
||||
return this.mode === 'exam';
|
||||
|
@ -30,7 +30,7 @@
|
||||
<el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button>
|
||||
</template>
|
||||
<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&& -->
|
||||
<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>
|
||||
|
@ -123,7 +123,7 @@ export default {
|
||||
return this.$route.query.type === 'DEPOT';
|
||||
},
|
||||
isContest() {
|
||||
return this.project === 'drts';
|
||||
return this.project.includes('drts');
|
||||
},
|
||||
isAdmin() {
|
||||
return this.$store.state.user.roles.includes('04') || this.$store.state.user.roles.includes('05');
|
||||
|
@ -405,4 +405,13 @@ export default {
|
||||
position: absolute;
|
||||
left: 5px;
|
||||
}
|
||||
.display-draft{
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 15px;
|
||||
}
|
||||
.schema{
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
}
|
||||
</style>
|
||||
|
@ -244,7 +244,7 @@ export default {
|
||||
const showMode = { '01': '03', '02': '02'}[prdType] || '';
|
||||
|
||||
Vue.prototype.$theme = new Theme();
|
||||
Vue.prototype.$jlmap = new Jlmap({
|
||||
this.selfJlmap = Vue.prototype.$jlmap = new Jlmap({
|
||||
dom: document.getElementById(this.canvasId),
|
||||
config: {
|
||||
renderer: 'canvas',
|
||||
|
@ -5,9 +5,20 @@
|
||||
<ibp-plate v-show="ibpShow" ref="ibpPlate" @hideIbp="hideIbp" />
|
||||
<template v-show="panelShow" :panelShow="panelShow">
|
||||
<transition name="el-zoom-in-bottom">
|
||||
<map-system-draft ref="mapCanvas" @back="back" />
|
||||
<map-system-draft v-show="!specialDispatch" ref="mapCanvas" @back="back" />
|
||||
</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
|
||||
ref="demonMenu"
|
||||
:group="group"
|
||||
@ -45,7 +56,7 @@
|
||||
/>
|
||||
<join-fault-choose ref="faultChoose" :group="group" :offset="offset" />
|
||||
<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" />
|
||||
<members-manage ref="membersManage" :is-admin="isAdmin" @addSimulationMember="addSimulationMember" /> <!-- 成员管理 -->
|
||||
<add-member ref="addMember" :station-list="stationList" />
|
||||
@ -84,6 +95,17 @@ import { Message } from 'element-ui';
|
||||
import { getToken } from '@/utils/auth';
|
||||
import MembersManage from './memberManage/membersManage';
|
||||
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 {
|
||||
name: 'JointTrainingDraft',
|
||||
@ -100,7 +122,17 @@ export default {
|
||||
IbpPlate,
|
||||
MembersManage,
|
||||
AddMember,
|
||||
Jl3dDevice
|
||||
Jl3dDevice,
|
||||
BaSiDi,
|
||||
RpsDialog,
|
||||
TroDialog,
|
||||
CarPack,
|
||||
TroDetail,
|
||||
TraDialog,
|
||||
TtlDialog,
|
||||
TmtDialog,
|
||||
AtrDialog,
|
||||
TrainTrunkDetail
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -127,7 +159,8 @@ export default {
|
||||
isAdmin: false,
|
||||
deviceif:false,
|
||||
deviceShow: true,
|
||||
centralizedStationMap: {}
|
||||
centralizedStationMap: {},
|
||||
selfJmap: null
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -139,7 +172,8 @@ export default {
|
||||
'bigScreenConfig',
|
||||
'stationList',
|
||||
'sectionList',
|
||||
'signalList'
|
||||
'signalList',
|
||||
'trainList'
|
||||
]),
|
||||
width() {
|
||||
return this.$store.state.app.width;
|
||||
@ -155,12 +189,25 @@ export default {
|
||||
},
|
||||
project() {
|
||||
return getSessionStorage('project');
|
||||
},
|
||||
specialDispatch() {
|
||||
return this.lineCode === '14' && this.$store.state.training.prdType === '02';
|
||||
},
|
||||
isRunPlan() {
|
||||
return this.$store.state.training.started;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.config.menuBarLoadedCount': function (val) { // menuBar加载完成
|
||||
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) {
|
||||
this.setPosition();
|
||||
if (prdType == '01') {
|
||||
@ -230,6 +277,7 @@ export default {
|
||||
async mounted() {
|
||||
await this.setWindowSize();
|
||||
await this.initLoadData();
|
||||
this.selfJmap = Vue.prototype.$jlmap;
|
||||
},
|
||||
async beforeDestroy() {
|
||||
await this.$store.dispatch('training/end', null);
|
||||
@ -363,10 +411,15 @@ export default {
|
||||
this.endViewLoading();
|
||||
}
|
||||
},
|
||||
handleDialogShow(type) {
|
||||
this.$refs[type].doShow();
|
||||
},
|
||||
// 设置prdType和role
|
||||
setSimulationPrdType(deviceCode) {
|
||||
// Dispatcher 行调 STATION_SUPERVISOR 车站 Audience 观众 Driver 司机 MAINTAINER 通号
|
||||
this.showStation = '';
|
||||
let tempData;
|
||||
let dataZoom;
|
||||
switch (this.userRole) {
|
||||
case 'DISPATCHER':
|
||||
this.$store.dispatch('training/setPrdType', '02');
|
||||
@ -379,11 +432,21 @@ export default {
|
||||
this.jl3dmaintainershow = false;
|
||||
break;
|
||||
case 'STATION_SUPERVISOR':
|
||||
if (this.selfJmap) { Vue.prototype.$jlmap = this.selfJmap; }
|
||||
this.$store.dispatch('training/setPrdType', '01');
|
||||
this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR');
|
||||
this.$refs.menuSchema.chiShowStation = deviceCode;
|
||||
this.showStation = deviceCode;
|
||||
// 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.mapViewLoadedOver && this.switchStationMode(deviceCode);
|
||||
this.jl3dmaintainershow = false;
|
||||
@ -404,8 +467,8 @@ export default {
|
||||
}
|
||||
this.$jlmap.updateShowStation(list, showStation);
|
||||
}
|
||||
const 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 };
|
||||
tempData = this.$store.state.map.map.displayList.find(item => { return item.stationCodeList.includes(deviceCode); });
|
||||
dataZoom = { offsetX: tempData.offsetX, offsetY: tempData.offsetY, scaleRate: tempData.scaleRate };
|
||||
this.$store.commit('map/setDataZoom', dataZoom);
|
||||
this.$jlmap.setDepot(dataZoom);
|
||||
this.jl3dmaintainershow = false;
|
||||
@ -629,6 +692,15 @@ export default {
|
||||
addSimulationMember() {
|
||||
this.$refs.addMember.doShow();
|
||||
},
|
||||
troClick() {
|
||||
this.$refs.troDialog.doShow();
|
||||
},
|
||||
openTrainTrunkDetail(index) {
|
||||
this.$refs.trainTrunkDetail.doShow(index);
|
||||
},
|
||||
openTra() {
|
||||
this.$refs.traDialog.doShow();
|
||||
},
|
||||
checkRoleChange(data) {
|
||||
data.forEach(item => {
|
||||
if (item.messageType === 'KICK_OUT' && item.userId == this.userId) {
|
||||
@ -651,9 +723,10 @@ export default {
|
||||
<style scoped lang="scss" rel="stylesheep/scss">
|
||||
.main {
|
||||
display: block;
|
||||
width: 100%;
|
||||
width: 100% !important;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
background: #000000;
|
||||
}
|
||||
</style>
|
||||
|
@ -33,7 +33,7 @@
|
||||
<template v-if="!dataError"> <!-- 地图错误判断 -->
|
||||
<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 type="danger" size="small" @click="end">{{ $t('joinTraining.initialize') }}</el-button>
|
||||
</template>
|
||||
|
@ -77,7 +77,7 @@ export default {
|
||||
},
|
||||
editModel: {},
|
||||
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: {
|
||||
|
@ -132,6 +132,9 @@ export default {
|
||||
const dataList = convertSheetToList(wb.Sheets[index], true);
|
||||
if (dataList.length) {
|
||||
const accountMap = {};
|
||||
if (!dataList[0][0].includes('学号') || !dataList[1][0].includes('姓名')) {
|
||||
throw new Error('检测到Excel格式错误,请使用模板格式导入!');
|
||||
}
|
||||
for ( let i = 1; i <= dataList[0].length; i++) {
|
||||
const studentId = dataList[0][i];
|
||||
const name = dataList[1][i];
|
||||
|
@ -109,6 +109,7 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadInitData();
|
||||
},
|
||||
methods: {
|
||||
loadInitData() {
|
||||
|
@ -46,7 +46,7 @@ export default {
|
||||
reset: true,
|
||||
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: {
|
||||
query: this.queryFunction,
|
||||
selectCheckShow: false,
|
||||
|
@ -84,7 +84,6 @@ export default {
|
||||
'switchNRTurnChain',
|
||||
'switchSingleLockChain',
|
||||
'switchLossChain',
|
||||
'signalForceCancelRoute',
|
||||
'initSingleLockSwitch',
|
||||
'ctcOverlapOnlyTurnBackStationLock',
|
||||
'guideNeedRouteSettingFirst',
|
||||
@ -115,7 +114,7 @@ export default {
|
||||
'setManualWhenHeadTrainArriveTarget',
|
||||
'routeDefaultCheckConflict'
|
||||
],
|
||||
selectList: ['runMode'],
|
||||
selectList: ['runMode', 'singleApproachLockCancelRoute'],
|
||||
generalConfig: [
|
||||
'lockFirst',
|
||||
'switchSingleHandle',
|
||||
@ -123,7 +122,7 @@ export default {
|
||||
'switchNRTurnChain',
|
||||
'switchSingleLockChain',
|
||||
'switchLossChain',
|
||||
'signalForceCancelRoute',
|
||||
'singleApproachLockCancelRoute',
|
||||
'runMode',
|
||||
'initSingleLockSwitch',
|
||||
'ctcOverlapOnlyTurnBackStationLock',
|
||||
@ -165,7 +164,8 @@ export default {
|
||||
speedList: ['rmAtpSpeed', 'urmAtpSpeed'],
|
||||
numberList: ['figuresOfTripNumber', 'figuresOfServiceNumber'],
|
||||
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: {
|
||||
lockFirst: '是否先锁闭——办理过程直接先锁闭区段',
|
||||
@ -173,7 +173,7 @@ export default {
|
||||
switchSingleHandle: '道岔区段状态改变按单个道岔处理',
|
||||
switchNRTurnChain:'道岔正/反操是否联动',
|
||||
switchSingleLockChain:'道岔单解/锁是否联动',
|
||||
signalForceCancelRoute:'是否强制取消进路/在接近区段占用时是否依旧强制执行取消进路',
|
||||
singleApproachLockCancelRoute:'接近区段占用时取消进路方式',
|
||||
runMode:'列车控制模式/级别',
|
||||
initSingleLockSwitch: '初始加载设备时是否默认单锁正线道岔',
|
||||
ctcOverlapOnlyTurnBackStationLock: 'CTC列车进路延续保护仅折返站处锁闭',
|
||||
|
@ -51,7 +51,7 @@
|
||||
</template>
|
||||
|
||||
<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';
|
||||
|
||||
export default {
|
||||
@ -66,9 +66,17 @@ export default {
|
||||
leftRules: {},
|
||||
rightRules: {},
|
||||
setDeviceConfigFunction: null,
|
||||
addrName: '',
|
||||
data: {},
|
||||
titleMap: { SWITCH: '道岔', PSD:'屏蔽门', SIGNAL: '信号机', PSL:'端头控制盒', PSC: 'PSC控制柜' },
|
||||
titleMap: {
|
||||
SWITCH: '道岔',
|
||||
PSD:'屏蔽门',
|
||||
SIGNAL: '信号机',
|
||||
PSL:'端头控制盒',
|
||||
PSC: 'PSC控制柜',
|
||||
SECTION: '区段',
|
||||
TRAIN: '列车',
|
||||
UDP_CLIENT: 'UDP客户端'
|
||||
},
|
||||
mapId: '',
|
||||
mapList: [],
|
||||
stationCode: '',
|
||||
@ -92,33 +100,6 @@ export default {
|
||||
}
|
||||
},
|
||||
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) {
|
||||
this.jsonConfig = '{}';
|
||||
getDeviceDetail(row.id).then(resp => {
|
||||
@ -143,7 +124,7 @@ export default {
|
||||
},
|
||||
doShow(row) {
|
||||
this.initData(row);
|
||||
this.initForm(row);
|
||||
// this.initForm(row);
|
||||
this.dialogVisible = true;
|
||||
this.data = row;
|
||||
},
|
||||
@ -155,7 +136,7 @@ export default {
|
||||
flag = valid;
|
||||
});
|
||||
}
|
||||
const form = JSON.parse(this.jsonConfig);
|
||||
// const form = JSON.parse(this.jsonConfig);
|
||||
// if (this.data.type === 'PSC' || this.data.type === 'PSL') {
|
||||
// form.psdCode = this.formModel.psdCode;
|
||||
// flag && self.setDeviceConfigFunction(this.data.id, form).then(response => {
|
||||
@ -166,7 +147,8 @@ export default {
|
||||
// self.$message.error(this.$t('tip.modifyTheFailure') + error.message);
|
||||
// });
|
||||
// } 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.handleClose();
|
||||
self.$emit('reloadTable');
|
||||
|
@ -29,7 +29,7 @@ export default {
|
||||
EditConfigIbp
|
||||
},
|
||||
data() {
|
||||
const noShowPathType = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'IBP'];
|
||||
const noShowPathType = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'IBP', 'SECTION', 'TRAIN', 'UDP_CLIENT'];
|
||||
return {
|
||||
examResultList: [],
|
||||
url: '',
|
||||
@ -51,7 +51,8 @@ export default {
|
||||
designgzb: 'GZB',
|
||||
designheb: 'HEB',
|
||||
designsdy: 'SDY',
|
||||
designrichorjoint: 'RICHOR_JOINT'
|
||||
designrichorjoint: 'RICHOR_JOINT',
|
||||
designsrsandbox: 'SR_SANDBOX'
|
||||
},
|
||||
queryForm: {
|
||||
labelWidth: '120px',
|
||||
@ -188,9 +189,10 @@ export default {
|
||||
});
|
||||
},
|
||||
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') {
|
||||
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);
|
||||
} 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);
|
||||
|
@ -76,7 +76,7 @@ export default {
|
||||
},
|
||||
lineCode: '', // 线路皮肤码
|
||||
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: {
|
||||
|
BIN
static/background/evening.jpg
Normal file
After Width: | Height: | Size: 1.0 MiB |
BIN
static/background/rain.png
Normal file
After Width: | Height: | Size: 1.9 MiB |
BIN
static/background/sand.jpg
Normal file
After Width: | Height: | Size: 1002 KiB |
BIN
static/background/sands.jpg
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
static/background/sunny.jpg
Normal file
After Width: | Height: | Size: 2.4 MiB |
BIN
static/sprite/evening.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
static/sprite/rain.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
static/sprite/rainsprite.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
static/sprite/snow.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
static/sprite/snowsprite.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
static/sprite/sunny.png
Normal file
After Width: | Height: | Size: 4.1 KiB |