Merge remote-tracking branch 'origin/test'
@ -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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
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 { 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;
|
||||||
|
@ -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() {
|
||||||
|
@ -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' },
|
||||||
|
@ -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'];
|
||||||
|
@ -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: {
|
||||||
|
@ -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: {
|
||||||
|
@ -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: {
|
||||||
|
@ -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']
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -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: {
|
||||||
|
@ -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) {
|
||||||
|
@ -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>
|
||||||
|
@ -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: {
|
||||||
|
@ -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: {
|
||||||
|
@ -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: {
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
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>
|
<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>
|
||||||
|
@ -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() {
|
||||||
|
@ -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() {},
|
||||||
|
@ -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) => {
|
||||||
|
@ -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;
|
||||||
|
@ -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';
|
||||||
|
@ -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;
|
||||||
|
@ -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';
|
||||||
|
@ -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>
|
||||||
|
@ -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');
|
||||||
|
@ -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>
|
||||||
|
@ -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',
|
||||||
|
@ -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();
|
||||||
|
},
|
||||||
// 设置prdType和role
|
// 设置prdType和role
|
||||||
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>
|
||||||
|
@ -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>
|
||||||
|
@ -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: {
|
||||||
|
@ -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];
|
||||||
|
@ -109,6 +109,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
this.loadInitData();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
loadInitData() {
|
loadInitData() {
|
||||||
|
@ -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,
|
||||||
|
@ -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列车进路延续保护仅折返站处锁闭',
|
||||||
|
@ -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');
|
||||||
|
@ -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);
|
||||||
|
@ -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: {
|
||||||
|
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 |