Merge remote-tracking branch 'origin/test'

This commit is contained in:
program-walker 2020-06-09 16:36:51 +08:00
commit 8d25428411
96 changed files with 2392 additions and 1213 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@ -37,6 +37,7 @@ export default {
washCarModel: 'Wash', washCarModel: 'Wash',
forcedAirCompressor: 'Compressor Forced Start', forcedAirCompressor: 'Compressor Forced Start',
ATBStart: 'ATB', ATBStart: 'ATB',
ChangeHead: 'Change Head',
forcedRelieve: 'Forced Relief', forcedRelieve: 'Forced Relief',
closeLeftDoor: 'L Door Close', closeLeftDoor: 'L Door Close',
openLeftDoor: 'L Door Open', openLeftDoor: 'L Door Open',

View File

@ -37,6 +37,7 @@ export default {
washCarModel: '洗车模式', washCarModel: '洗车模式',
forcedAirCompressor: '空压机强迫启动', forcedAirCompressor: '空压机强迫启动',
ATBStart: 'ATB启动', ATBStart: 'ATB启动',
ChangeHead: '换端',
forcedRelieve: '强迫缓解', forcedRelieve: '强迫缓解',
closeLeftDoor: '关左门', closeLeftDoor: '关左门',
openLeftDoor: '开左门', openLeftDoor: '开左门',

View File

@ -1,6 +1,6 @@
import Group from 'zrender/src/container/Group'; import Group from 'zrender/src/container/Group';
import Text from 'zrender/src/graphic/Text'; import Text from 'zrender/src/graphic/Text';
import Rect from 'zrender/src/graphic/shape/Rect'; // import Rect from 'zrender/src/graphic/shape/Rect';
export default class ibpText extends Group { export default class ibpText extends Group {
constructor(device) { constructor(device) {

File diff suppressed because one or more lines are too long

View File

@ -224,6 +224,17 @@ class Iscs {
return this.iscsDevice[code]; return this.iscsDevice[code];
} }
copySelect(list) {
this.copyList = list.map(item => {
if (item._type != 'CheckBox') {
return item.model;
}
});
}
getCopyList() {
return this.copyList;
}
resize(opt) { resize(opt) {
this.$iscsZr.resize(opt); this.$iscsZr.resize(opt);
this.$painter.updateZrSize(opt); this.$painter.updateZrSize(opt);

View File

@ -7,7 +7,6 @@ class KeyboardController extends Eventful {
this.$iscs = iscs; this.$iscs = iscs;
this.$zr = iscs.getZr(); this.$zr = iscs.getZr();
this.events = iscs.getEvents(); this.events = iscs.getEvents();
this.initData();
this.initHandler(this.$zr); this.initHandler(this.$zr);
} }
@ -32,10 +31,6 @@ class KeyboardController extends Eventful {
} }
} }
initData() {
}
keydown(e) { keydown(e) {
if (this._keyOnDownUp && !e.repeat) { if (this._keyOnDownUp && !e.repeat) {
const currentEvent = keyboardEvents[e.key.toUpperCase()]; const currentEvent = keyboardEvents[e.key.toUpperCase()];

View File

@ -97,8 +97,6 @@ class MouseController extends Eventful {
this.handleMouseDownRight(e); this.handleMouseDownRight(e);
} else if (e.which === 1) { } else if (e.which === 1) {
this.handleMouseDownLeft(e); this.handleMouseDownLeft(e);
} else if (e.which === 2) {
this.handleMouseDownWheel(e);
} }
} }
@ -119,27 +117,11 @@ class MouseController extends Eventful {
} }
mouseup(e) { mouseup(e) {
if (eventTool.notLeftMouse(e) || !this.eventTarget ) { if (e.which === 3) {
return; this.handleMouseUpRight(e);
} else if (e.which === 1) {
this.handleMouseUpLeft(e);
} }
if (this.deviceList.length) {
this.deviceList.forEach(item => {
item.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
});
this.deviceList = [];
this.$iscs.deleteCheckBox('check_box');
this.eventTarget = '';
this._dragging = false;
this.deviceList = [];
return;
}
if (this.isAllowDragging) {
this.eventTarget.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
this.eventTarget.dirty();
}
this.eventTarget = '';
this._dragging = false;
this.deviceList = [];
} }
contextmenu(e) { contextmenu(e) {
@ -195,24 +177,31 @@ class MouseController extends Eventful {
} }
/** 处理鼠标右键按下事件 */ /** 处理鼠标右键按下事件 */
handleMouseDownRight(e) { handleMouseDownRight(e) {
this.deviceList = [];
this.eventTarget = '';
this.$iscs.deleteCheckBox('check_box'); // 清空上次操作
this.$iscs.copySelect(this.deviceList);
this.rightClickPoint.x = e.offsetX; this.rightClickPoint.x = e.offsetX;
this.rightClickPoint.y = e.offsetY; this.rightClickPoint.y = e.offsetY;
} }
/** 处理鼠标左键按下事件 */ /** 处理鼠标左键按下事件 */
handleMouseDownLeft(e) { handleMouseDownLeft(e) {
if (this.eventTarget && this.eventTarget._type === deviceType.CheckBox) { if (this.$iscs.iscsDevice['check_box']) { // 判断点击点是否在 checkBox 范围
this.handleBoundingRect(this.eventTarget); const boundingRect = this.$iscs.iscsDevice['check_box'].instance.getBoundingRect().clone();
const x1 = e.event.zrX + this.$iscs.$options.offsetX;
const y1 = e.event.zrY + this.$iscs.$options.offsetY;
if (!this.contain(boundingRect, x1, y1)) {
this._dragging = false;
this.deviceList = [];
this.eventTarget = '';
this.$iscs.deleteCheckBox('check_box'); // 清空上次操作
this.$iscs.copySelect(this.deviceList);
}
} else { } else {
this.$iscs.deleteCheckBox('check_box'); this.$iscs.deleteCheckBox('check_box');
} }
} }
/** 处理滚轮按下事件 */
handleMouseDownWheel(e) {
this.deviceList = [];
Object.values(this.$iscs.iscsDevice).forEach(item => {
this.deviceList.push(item.instance);
});
}
/** 处理右键拖动事件--- 改变选中区域大小 */ /** 处理右键拖动事件--- 改变选中区域大小 */
handleMouseMoveRight(point2) { handleMouseMoveRight(point2) {
const point1 = this.rightClickPoint; const point1 = this.rightClickPoint;
@ -244,35 +233,80 @@ class MouseController extends Eventful {
this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y });
} }
} }
// 右键抬起事件
handleMouseUpRight() {
if (this.$iscs.iscsDevice['check_box']) {
this.handleBoundingRect(this.$iscs.iscsDevice['check_box'].instance);
}
}
// 左键抬起事件
handleMouseUpLeft(e) {
if (this.deviceList.length) {
this.deviceList.forEach(item => {
item.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
});
return;
}
if (this.isAllowDragging && this.eventTarget) {
this.eventTarget.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
this.eventTarget.dirty();
}
}
/** 通过包围盒筛选选中区域的元素 */ /** 通过包围盒筛选选中区域的元素 */
handleBoundingRect(eventTarget) { handleBoundingRect(eventTarget) {
this.deviceList = []; this.deviceList = [];
let boundingRect = eventTarget.grouper.getBoundingRect(); let boundingRect = eventTarget.grouper.getBoundingRect().clone();
boundingRect = this.createFakeBoundingRect(eventTarget, boundingRect); boundingRect = this.createFakeBoundingRect(eventTarget, boundingRect);
const deviceList = Object.values(this.$iscs.iscsDevice); const deviceList = Object.values(this.$iscs.iscsDevice);
const includeDeviceList = [];
deviceList.forEach(item =>{ deviceList.forEach(item =>{
let deviceBoundingRect = item.instance.grouper.getBoundingRect(); let deviceBoundingRect = item.instance.grouper.getBoundingRect().clone();
deviceBoundingRect = this.createFakeBoundingRect(item.instance, deviceBoundingRect); deviceBoundingRect = this.createFakeBoundingRect(item.instance, deviceBoundingRect);
if (this.whetherInclude(boundingRect, deviceBoundingRect)) { if (this.whetherInclude(boundingRect, deviceBoundingRect)) {
includeDeviceList.push(item.instance); this.deviceList.push(item.instance);
} }
}); });
this.deviceList = includeDeviceList; this.$iscs.copySelect(this.deviceList);
} }
/** 创建假包围盒对象 */ /** 创建假包围盒对象 */
createFakeBoundingRect(instance, boundingRect) { createFakeBoundingRect(instance, boundingRect) {
const x1 = instance.model.point.x;
const y1 = instance.model.point.y;
return { return {
x1: instance.model.point.x + boundingRect.x, // x: x1 + boundingRect.x,
y1: instance.model.point.y + boundingRect.y, // y: y1 + boundingRect.y,
x2: instance.model.point.x + boundingRect.width, // width: boundingRect.width,
y2: instance.model.point.y + boundingRect.height // height: boundingRect.height
x1: x1 + boundingRect.x,
y1: y1 + boundingRect.y,
x2: x1 + boundingRect.width,
y2: y1 + boundingRect.height
}; };
} }
/** 判断元素包围盒是否在选中区域 */ /** 判断元素包围盒是否在选中区域 */
whetherInclude(boundingRect1, boundingRect2) { whetherInclude(boundingRect1, boundingRect2) {
return boundingRect1.x1 <= boundingRect2.x1 && boundingRect1.y1 <= boundingRect2.y1 && boundingRect1.x2 >= boundingRect2.x2 && boundingRect1.y2 >= boundingRect2.y2; return boundingRect1.x1 <= boundingRect2.x1 && boundingRect1.y1 <= boundingRect2.y1 && boundingRect1.x2 >= boundingRect2.x2 && boundingRect1.y2 >= boundingRect2.y2;
} }
// 判断元素包围盒是否在选中区域
intersect(a, b) {
var ax0 = a.x;
var ax1 = a.x + a.width;
var ay0 = a.y;
var ay1 = a.y + a.height;
var bx0 = b.x;
var bx1 = b.x + b.width;
var by0 = b.y;
var by1 = b.y + b.height;
return !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);
}
contain (rect, x, y) {
return x >= rect.x &&
x <= (rect.x + rect.width) &&
y >= rect.y &&
y <= (rect.y + rect.height);
}
} }
export default MouseController; export default MouseController;

View File

@ -29,7 +29,7 @@ class MouseController extends Eventful {
this.$zr = iscs.getZr(); this.$zr = iscs.getZr();
this.isAllowDragging = iscs.isAllowDragging || false; // 是否在绘图中,仅绘图状态下可拖拽 this.isAllowDragging = iscs.isAllowDragging || false; // 是否在绘图中,仅绘图状态下可拖拽
this.events = iscs.getEvents(); this.events = iscs.getEvents();
// this._dragging = false; // 是否在拖拽状态 this._dragging = false; // 是否在拖拽状态
this.deviceList = []; this.deviceList = [];
this.rightClickPoint = { this.rightClickPoint = {
x: 0, x: 0,
@ -75,7 +75,7 @@ class MouseController extends Eventful {
this.disable(); this.disable();
}; };
// this.isDragging = function () { return this._dragging; }; this.isDragging = function () { return this._dragging; };
} }
} }
@ -92,14 +92,14 @@ class MouseController extends Eventful {
this._offsetY = e.offsetY; this._offsetY = e.offsetY;
this._x = e.offsetX; this._x = e.offsetX;
this._y = e.offsetY; this._y = e.offsetY;
// this._dragging = true; this._dragging = true;
console.log(e, e.which);
if (e.which === 3) { if (e.which === 3) {
this.handleMouseDownRight(e); this.handleMouseDownRight(e);
} else if (e.which === 1) { } else if (e.which === 1) {
this.handleMouseDownLeft(e); this.handleMouseDownLeft(e);
} else if (e.which === 2) {
this.handleMouseDownWheel(e);
} }
console.log(this.deviceList);
} }
mousemove(e) { mousemove(e) {
@ -119,28 +119,27 @@ class MouseController extends Eventful {
} }
mouseup(e) { mouseup(e) {
console.log(e);
if (eventTool.notLeftMouse(e) || !this.eventTarget ) { if (eventTool.notLeftMouse(e) || !this.eventTarget ) {
return; return;
} }
// if (this.deviceList.length) { if (this.deviceList.length) {
// this.deviceList.forEach(item => { this.deviceList.forEach(item => {
// item.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY); item.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
// }); });
// this.deviceList = []; this.deviceList = [];
// this.$iscs.deleteCheckBox('check_box'); this.$iscs.deleteCheckBox('check_box');
// this.eventTarget = ''; this.eventTarget = '';
// // this._dragging = false; this._dragging = false;
// this.deviceList = []; this.deviceList = [];
// return; return;
// } }
// if (this.isAllowDragging) { if (this.isAllowDragging) {
// this.eventTarget.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY); this.eventTarget.setModel(e.offsetX - this._offsetX, e.offsetY - this._offsetY);
// this.eventTarget.dirty(); this.eventTarget.dirty();
// } }
// this.eventTarget = ''; this.eventTarget = '';
// // this._dragging = false; this._dragging = false;
// this.deviceList = []; this.deviceList = [];
} }
contextmenu(e) { contextmenu(e) {
@ -196,9 +195,6 @@ class MouseController extends Eventful {
} }
/** 处理鼠标右键按下事件 */ /** 处理鼠标右键按下事件 */
handleMouseDownRight(e) { handleMouseDownRight(e) {
this.deviceList = [];
this.$iscs.deleteCheckBox('check_box'); // 清空上次操作
this.rightClickPoint.x = e.offsetX; this.rightClickPoint.x = e.offsetX;
this.rightClickPoint.y = e.offsetY; this.rightClickPoint.y = e.offsetY;
} }
@ -210,6 +206,13 @@ class MouseController extends Eventful {
this.$iscs.deleteCheckBox('check_box'); this.$iscs.deleteCheckBox('check_box');
} }
} }
/** 处理滚轮按下事件 */
handleMouseDownWheel(e) {
this.deviceList = [];
Object.values(this.$iscs.iscsDevice).forEach(item => {
this.deviceList.push(item.instance);
});
}
/** 处理右键拖动事件--- 改变选中区域大小 */ /** 处理右键拖动事件--- 改变选中区域大小 */
handleMouseMoveRight(point2) { handleMouseMoveRight(point2) {
const point1 = this.rightClickPoint; const point1 = this.rightClickPoint;
@ -221,25 +224,25 @@ class MouseController extends Eventful {
} }
/** 处理左键拖动事件--- 图形移动 */ /** 处理左键拖动事件--- 图形移动 */
handleMouseMoveLeft(e, dx, dy, oldX, oldY) { handleMouseMoveLeft(e, dx, dy, oldX, oldY) {
// if (!this._moveOnMouseMove || !this._dragging || !this.isAllowDragging) { if (!this._moveOnMouseMove || !this._dragging || !this.isAllowDragging) {
// return; return;
// } }
// 选中区域图形移动 // 选中区域图形移动
// if (this.deviceList.length) { if (this.deviceList.length) {
// this.deviceList.forEach(item => { this.deviceList.forEach(item => {
// item.grouper.drift(dx, dy, e); item.grouper.drift(dx, dy, e);
// }); });
// } else if (this._dragging && this.eventTarget) { // 选中元素图形移动 } else if (this._dragging && this.eventTarget) { // 选中元素图形移动
// if (!this.isAllowDragging) { if (!this.isAllowDragging) {
// this._preventDefaultMouseMove && eventTool.stop(e.event); this._preventDefaultMouseMove && eventTool.stop(e.event);
// this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y });
// } else if (this.isAllowDragging) { } else if (this.isAllowDragging) {
// this.eventTarget.grouper.drift(dx, dy, e); this.eventTarget.grouper.drift(dx, dy, e);
// } }
// } else if (this._dragging) { } else if (this._dragging) {
// this._preventDefaultMouseMove && eventTool.stop(e.event); this._preventDefaultMouseMove && eventTool.stop(e.event);
// this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y });
// } }
} }
/** 通过包围盒筛选选中区域的元素 */ /** 通过包围盒筛选选中区域的元素 */
handleBoundingRect(eventTarget) { handleBoundingRect(eventTarget) {

View File

@ -1,5 +1,5 @@
import Group from 'zrender/src/container/Group'; import Group from 'zrender/src/container/Group';
import Text from 'zrender/src/graphic/Text'; // import Text from 'zrender/src/graphic/Text';
import Rect from 'zrender/src/graphic/shape/Rect'; import Rect from 'zrender/src/graphic/shape/Rect';
import Line from 'zrender/src/graphic/shape/Line'; import Line from 'zrender/src/graphic/shape/Line';
import PsdClose from './psdClose'; import PsdClose from './psdClose';

View File

@ -190,7 +190,8 @@ export function StationStandList() {
if(jlmapstanddata[j].code == standsdata[i].direction1.code){ if(jlmapstanddata[j].code == standsdata[i].direction1.code){
if(standsdata[i].code != "Station96090"){ if(standsdata[i].code != "Station96090"){
if(jlmapstanddata[j].inside == true){
if(standsdata[i].inside == true){
newstationmesh = assetloader.modellist[num].mesh.clone(true); newstationmesh = assetloader.modellist[num].mesh.clone(true);
}else{ }else{
newstationmesh = assetloader.modellist[num2].mesh.clone(true); newstationmesh = assetloader.modellist[num2].mesh.clone(true);
@ -202,7 +203,7 @@ export function StationStandList() {
newstationstand.direction1.name = standsdata[i].direction1.name; newstationstand.direction1.name = standsdata[i].direction1.name;
newstationstand.direction2.code = standsdata[i].direction2.code; newstationstand.direction2.code = standsdata[i].direction2.code;
newstationstand.direction2.name = standsdata[i].direction2.name; newstationstand.direction2.name = standsdata[i].direction2.name;
newstationstand.inside = jlmapstanddata[j].inside; newstationstand.inside = standsdata[i].inside;
// console.log(standsdata[i]); // console.log(standsdata[i]);
newstationmesh.position.x = standsdata[i].position.x; newstationmesh.position.x = standsdata[i].position.x;
newstationmesh.position.y = standsdata[i].position.y; newstationmesh.position.y = standsdata[i].position.y;

View File

@ -129,3 +129,12 @@ export function trainSimulationAto(group,groupNumber) {
params: '' params: ''
}) })
} }
//换端
export function trainSimulationChangeHead(group,groupNumber) {
return request({
url: `/simulation/driving/${group}/train/${groupNumber}/changeHead`,
method: 'put',
params: ''
})
}

View File

@ -42,7 +42,9 @@ var clock = new THREE.Clock();
export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,project) { export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,project) {
let scope = this; let scope = this;
let stats =null;
// let stats = new Stats();
// dom.appendChild( stats.dom );
//界面更新函数 //界面更新函数
let updatemmi = {}; let updatemmi = {};
this.dom = dom; this.dom = dom;
@ -232,9 +234,7 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
// getPublish3dMapDetail(mapId).then(netdata => { // getPublish3dMapDetail(mapId).then(netdata => {
// DriverLoad(data, scope, netdata.data, sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails, camera, controls3, scene,mixers,storemod); // DriverLoad(data, scope, netdata.data, sectionlist,linklist,signallist,stationstandlist,trainlisttest,realsectionlist,rails, camera, controls3, scene,mixers,storemod);
// }); // });
let stats =null;
// let stats = new Stats();
// dom.appendChild( stats.dom );
// 开启渲染 // 开启渲染
animate(); animate();
startWorker(); startWorker();
@ -269,9 +269,6 @@ export function JLmapDriving(dom,data,mapId,storemod,translation,routegroup,proj
controls3.getObject().position.x = trainlisttest.list[drivingcode].matrixWorld.elements[12]-27; controls3.getObject().position.x = trainlisttest.list[drivingcode].matrixWorld.elements[12]-27;
controls3.getObject().position.y=5; controls3.getObject().position.y=5;
controls3.getObject().position.z = trainlisttest.list[drivingcode].children[0].matrixWorld.elements[14]; controls3.getObject().position.z = trainlisttest.list[drivingcode].children[0].matrixWorld.elements[14];
// console.log(controls3);
} }
} }

View File

@ -94,11 +94,11 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
// 对象化数据 // 对象化数据
let data = JSON.parse(Response.body); let data = JSON.parse(Response.body);
// stats.update();
// 遍历后台数据 // 遍历后台数据
// console.log(data); // console.log(data);
if(data.type == "Train_Position"){ if(data.type == "Train_Position"){
// stats.update();
trainrun(data.body); trainrun(data.body);
return; return;

View File

@ -256,6 +256,9 @@ export function Jl3dfaultdevice(dom,group,token,skinCode) {
if (data.type == "SWITCH") { if (data.type == "SWITCH") {
scope.modelmanager.switchmodel.normalPosition = "0"; scope.modelmanager.switchmodel.normalPosition = "0";
scope.showmodel = scope.modelmanager.switchmodel.mesh; scope.showmodel = scope.modelmanager.switchmodel.mesh;
scope.devicetext.initdevicetext(scope.modelmanager.switchmodel.mesh);
scope.nowobject = scope.modelmanager.switchmodel.mesh;
updatemenulist(scope.devicetext.devicelist);
scope.scene.add(scope.showmodel); scope.scene.add(scope.showmodel);
// if (data.normalPosition == "0") { // if (data.normalPosition == "0") {
// scope.modelmanager.switchmodel.normalPosition = "0"; // scope.modelmanager.switchmodel.normalPosition = "0";

View File

@ -3,14 +3,10 @@ import { getBaseUrl } from '@/utils/baseUrl'
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
// 定于仿真socket接口 // 定于仿真socket接口
export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,routegroup) { export function PassflowConnect(jl3dpass,deviceaction,toptrain,downtrain,routegroup) {
const scope = this; const scope = this;
this.controlstation = nowstation;
this.teststomp = new StompClient(); this.teststomp = new StompClient();
let traintopnow = null;
let traindownnow = null;
let topic = '/user/queue/simulation/jl3d/'+routegroup; let topic = '/user/queue/simulation/jl3d/'+routegroup;
let header = {'X-Token': getToken() }; let header = {'X-Token': getToken() };
@ -33,9 +29,8 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
function callback(Response) { function callback(Response) {
const data = JSON.parse(Response.body); const data = JSON.parse(Response.body);
if(data.type == "DeviceCtrl_3D"){ if(data.type == "DeviceCtrl_3D"){
//PS目前模型车门位置颠倒
if(data.body.type == "PSD"){ if(data.body.type == "PSD"){
if(data.body.code == nowstation.toppsd){ if(data.body.code == jl3dpass.nowstation.toppsd){
if(data.body.open == 0){ if(data.body.open == 0){
deviceaction.top.action.reset(); deviceaction.top.action.reset();
@ -43,19 +38,21 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
deviceaction.top.action.timeScale = -1; deviceaction.top.action.timeScale = -1;
deviceaction.top.action.play(); deviceaction.top.action.play();
}else{ }else{
jl3dpass.passerout("top")
deviceaction.top.action.reset(); deviceaction.top.action.reset();
deviceaction.top.action.time = 0; deviceaction.top.action.time = 0;
deviceaction.top.action.timeScale = 1; deviceaction.top.action.timeScale = 1;
deviceaction.top.action.play(); deviceaction.top.action.play();
} }
} }
if(data.body.code == nowstation.downpsd){ if(data.body.code == jl3dpass.nowstation.downpsd){
if(data.body.open == 0){ if(data.body.open == 0){
deviceaction.down.action.reset(); deviceaction.down.action.reset();
deviceaction.down.action.time = deviceaction.down.action._clip.duration; deviceaction.down.action.time = deviceaction.down.action._clip.duration;
deviceaction.down.action.timeScale = -1; deviceaction.down.action.timeScale = -1;
deviceaction.down.action.play(); deviceaction.down.action.play();
}else{ }else{
jl3dpass.passerout("down");
deviceaction.down.action.reset(); deviceaction.down.action.reset();
deviceaction.down.action.time = 0; deviceaction.down.action.time = 0;
deviceaction.down.action.timeScale = 1; deviceaction.down.action.timeScale = 1;
@ -65,23 +62,27 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
} }
} }
if(data.body.type == "TRAIN_DOOR"){ if(data.body.type == "TRAIN_DOOR"){
if(traintopnow == data.body.code){ if(toptrain.nowcode == data.body.code){
if(data.body.open == "0"){ if(data.body.open == "0"){
closetraindoor(toptrain,data.body.doorCode,"top"); closetraindoor(toptrain,data.body.doorCode,"top");
}else{ }else{
opentraindoor(toptrain,data.body.doorCode,"top"); opentraindoor(toptrain,data.body.doorCode,"top");
;
} }
} }
if(traindownnow == data.body.code){ if(downtrain.nowcode == data.body.code){
// console.log(data.body); // console.log(data.body);
if(data.body.open == "0"){ if(data.body.open == "0"){
closetraindoor(downtrain,data.body.doorCode,"down"); closetraindoor(downtrain,data.body.doorCode,"down");
}else{ }else{
opentraindoor(downtrain,data.body.doorCode,"down"); opentraindoor(downtrain,data.body.doorCode,"down");
} }
} }
} }
} }
@ -89,10 +90,9 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
if(data.type == "TrainRun_3D"){ if(data.type == "TrainRun_3D"){
for(let i=0,leni = data.body.length;i<leni;i++){ for(let i=0,leni = data.body.length;i<leni;i++){
if(data.body[i].section == scope.controlstation.topsection){ if(data.body[i].section == jl3dpass.nowstation.topsection){
console.log("top:"+data.body[i].offset); if(toptrain.nowcode != data.body[i].code){
if(traintopnow != data.body[i].code){ toptrain.nowcode = data.body[i].code;
traintopnow = data.body[i].code;
} }
toptrain.position.copy(toptrain.curve.getPointAt(data.body[i].offset)); toptrain.position.copy(toptrain.curve.getPointAt(data.body[i].offset));
@ -101,21 +101,20 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
// //
// } // }
}else{ }else{
if(traindownnow == data.body[i].code){ if(downtrain.nowcode == data.body[i].code){
toptrain.position.x -= 1; toptrain.position.x -= 1;
} }
} }
if(data.body[i].section == scope.controlstation.downsection){ if(data.body[i].section == jl3dpass.nowstation.downsection){
console.log("down:"+data.body[i].offset); if(downtrain.nowcode != data.body[i].code){
if(traindownnow != data.body[i].code){ downtrain.nowcode = data.body[i].code;
traindownnow = data.body[i].code;
} }
downtrain.position.copy(downtrain.curve.getPointAt(data.body[i].offset)); downtrain.position.copy(downtrain.curve.getPointAt(data.body[i].offset));
}else{ }else{
if(traindownnow == data.body[i].code){ if(downtrain.nowcode == data.body[i].code){
downtrain.position.x += 1; downtrain.position.x += 1;
} }
} }
@ -152,22 +151,23 @@ export function PassflowConnect(nowstation,deviceaction,toptrain,downtrain,route
} }
} }
function closetraindoor(train,doorcode,direct){ function closetraindoor(train,doorcode,direct){
if(direct == "top"){ if(direct == "top"){
if(doorcode == "1"){ if(doorcode == "1"){
actions = train.action.down; actions = train.action.down;
} }
if(doorcode == "2"){ if(doorcode == "2"){
actions = train.action.top; actions = train.action.top;
} }
toptrain.nowcode = null;
}else{ }else{
if(doorcode == "1"){ if(doorcode == "1"){
actions = train.action.top; actions = train.action.top;
} }
if(doorcode == "2"){ if(doorcode == "2"){
actions = train.action.down; actions = train.action.down;
} }
downtrain.nowcode = null;
} }
for(let an=actions.length-1;an>=0;an--){ for(let an=actions.length-1;an>=0;an--){

View File

@ -19,20 +19,21 @@ import StompClient from '@/utils/sock';
import { Loading } from 'element-ui'; import { Loading } from 'element-ui';
// const Pathfinding = window.threePathfinding.Pathfinding; // const Pathfinding = window.threePathfinding.Pathfinding;
var clock = new THREE.Clock(); let clock = new THREE.Clock();
let delta; let delta;
let scene,camerass,renderer; let scene,camerass,renderer;
let rendermode = 0; let rendermode = 0;
let aiswitch = 0;
var mixers = []; let mixers = [];
var testmesh1,testmesh2; let testmesh1,testmesh2;
var humans = []; let humans = [];
var checkdoor1 = []; let checkdoor1 = [];
var checkdoor2 = []; let checkdoor2 = [];
var station; let station;
var zhajiinmodel; let zhajiinmodel;
var zhajioutmodel; let zhajioutmodel;
var monitor; let monitor;
let ids = 0; let ids = 0;
let humanlist = new THREE.Group(); let humanlist = new THREE.Group();
@ -101,9 +102,9 @@ for(let i=0;i<22;i++){
stationright.push(sr); stationright.push(sr);
} }
var windowWidth = window.innerWidth ; let windowWidth = window.innerWidth ;
var windowHeight = window.innerHeight; let windowHeight = window.innerHeight;
var views = [ let views4 = [
{ {
left: 0, left: 0,
bottom: 0, bottom: 0,
@ -146,9 +147,30 @@ var views = [
} }
]; ];
let views2 = [
{
left: 0,
bottom: 0,
width: 0.5,
height: 1,
background: new THREE.Color( 0.5, 0.5, 0.7 ),
eye: [ 3.7, 16, 26 ],
up: [3.7, 10 ,16 ],
fov: 60
},
{
left: 0.5,
bottom: 0,
width: 0.5,
height: 1,
background: new THREE.Color( 0.7, 0.5, 0.5 ),
eye: [ -60, 6,11],
up: [ -59, 5.9,11 ],
fov: 60
},
];
export function Jl3dpassflow(dom,skinCode,routegroup) { export function Jl3dpassflow(dom,skinCode,routegroup) {
var scope = this; let scope = this;
this.dom = dom; this.dom = dom;
this.nowcode = null; this.nowcode = null;
@ -171,10 +193,19 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
camerass.aspect = dom.offsetWidth / dom.offsetHeight; camerass.aspect = dom.offsetWidth / dom.offsetHeight;
camerass.updateProjectionMatrix(); camerass.updateProjectionMatrix();
for ( var ii = 0; ii < views.length; ++ ii ) { for ( let ii = 0; ii < views4.length; ++ ii ) {
var view = views[ ii ]; let view = views4[ ii ];
var camera = new THREE.PerspectiveCamera( view.fov, window.innerWidth / window.innerHeight, 1, 200 ); let camera = new THREE.PerspectiveCamera( view.fov, window.innerWidth / window.innerHeight, 1, 200 );
camera.position.fromArray( view.eye );
camera.lookAt( view.up[0],view.up[1],view.up[2] );
view.camera = camera;
}
for ( let ii = 0; ii < views2.length; ++ ii ) {
let view = views2[ ii ];
let camera = new THREE.PerspectiveCamera( view.fov, window.innerWidth / window.innerHeight, 1, 200 );
camera.position.fromArray( view.eye ); camera.position.fromArray( view.eye );
camera.lookAt( view.up[0],view.up[1],view.up[2] ); camera.lookAt( view.up[0],view.up[1],view.up[2] );
view.camera = camera; view.camera = camera;
@ -187,12 +218,12 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
scene = new THREE.Scene(); scene = new THREE.Scene();
scene.background = new THREE.Color(0xa0a0a0); scene.background = new THREE.Color(0xa0a0a0);
var mesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(200, 200), new THREE.MeshPhongMaterial({ color: 0x999999, depthWrite: false })); let mesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(200, 200), new THREE.MeshPhongMaterial({ color: 0x999999, depthWrite: false }));
mesh.rotation.x = - Math.PI / 2; mesh.rotation.x = - Math.PI / 2;
mesh.receiveShadow = true; mesh.receiveShadow = true;
scene.add(mesh); scene.add(mesh);
var grid = new THREE.GridHelper(200, 20, 0x000000, 0x000000); let grid = new THREE.GridHelper(200, 20, 0x000000, 0x000000);
grid.material.opacity = 0.2; grid.material.opacity = 0.2;
grid.material.transparent = true; grid.material.transparent = true;
scene.add(grid); scene.add(grid);
@ -203,7 +234,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
scene.add(ambientLight); scene.add(ambientLight);
// //
// var spotLight = new THREE.SpotLight(0xffffff); // let spotLight = new THREE.SpotLight(0xffffff);
// spotLight.position.set(-50, 60, 15); // spotLight.position.set(-50, 60, 15);
// spotLight.castShadow = true; // spotLight.castShadow = true;
// spotLight.shadow.mapSize.width = 1024; // spotLight.shadow.mapSize.width = 1024;
@ -239,10 +270,15 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
let mouse = new THREE.Vector2(); let mouse = new THREE.Vector2();
let raycaster = new THREE.Raycaster(); let raycaster = new THREE.Raycaster();
//上车控制开关
let toppasserin = false;
let downpasserin = false;
//下车控制开关
let toppasseron = false;
let downpasseron = false;
let loader = new THREE.OBJLoader();
var loader = new THREE.OBJLoader();
// load a resource // load a resource
loader.load( loader.load(
@ -285,7 +321,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
} }
); );
document.addEventListener( 'mouseup', onDocumentMouseUp, false ); // document.addEventListener( 'mouseup', onDocumentMouseUp, false );
function onDocumentMouseUp (event) { function onDocumentMouseUp (event) {
@ -366,12 +402,12 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
this.modelmanager = new ModelManager(); this.modelmanager = new ModelManager();
let loadingInstance = Loading.service({ fullscreen: true }); let loadingInstance = Loading.service({ fullscreen: true });
let nowstation = null; this.nowstation = null;
let stationlist = []; let stationlist = [];
let socktest = null; let socktest = null;
this.modelmanager.loadpromise(Staticmodel, scope.mixers).then(function (data) { this.modelmanager.loadpromise(Staticmodel, scope.mixers).then(function (data) {
console.log(scope.modelmanager); // console.log(scope.modelmanager);
initstationanimation(scope.modelmanager.station.mesh); initstationanimation(scope.modelmanager.station.mesh);
initzhajiinaimation(scope.modelmanager.zhajiin.mesh); initzhajiinaimation(scope.modelmanager.zhajiin.mesh);
initzhajioutanimation(scope.modelmanager.zhajiout.mesh); initzhajioutanimation(scope.modelmanager.zhajiout.mesh);
@ -391,41 +427,35 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
loadingInstance.close(); loadingInstance.close();
scope.switchrender(false); scope.switchviews(4);
getPublishMapDetail(skinCode).then(netdata => { getPublishMapDetail(skinCode).then(netdata => {
// console.log(netdata);
initstationlist(netdata.data.stationList,netdata.data.stationStandList,netdata.data.psdList); initstationlist(netdata.data.stationList,netdata.data.stationStandList,netdata.data.psdList);
socktest = new PassflowConnect(nowstation,deviceaction,toptrain,downtrain,routegroup); socktest = new PassflowConnect(scope,deviceaction,toptrain,downtrain,routegroup);
}); });
animate(); animate();
}) })
function inithumans(){ function inithumans(){
originhuman1 = scope.modelmanager.man1.mesh; originhuman1 = scope.modelmanager.man1.mesh;
originhuman1.progress = 1; originhuman1.progress = 1;
scene.add(originhuman1); // scene.add(originhuman1);
originhuman2 = scope.modelmanager.man2.mesh; originhuman2 = scope.modelmanager.man2.mesh;
let mixer1 = new THREE.AnimationMixer( originhuman1 ); let mixer1 = new THREE.AnimationMixer( originhuman1 );
let mixer2 = new THREE.AnimationMixer( originhuman2 ); let mixer2 = new THREE.AnimationMixer( originhuman2 );
originanima1 = originhuman1.animations[ 0 ]; originanima1 = originhuman1.animations[ 0 ];
originanima2 = originhuman2.animations[ 0 ]; originanima2 = originhuman2.animations[ 0 ];
originhuman1.remove(originhuman1.children[2]); originhuman1.remove(originhuman1.children[2]);
scene.add(humanlist); scene.add(humanlist);
scene.add(scope.modelmanager.man1.mesh); // scene.add(scope.modelmanager.man1.mesh);
} }
let checkobject = setInterval(function(){ let checkobject = setInterval(function(){
// console.log(originhuman1); // console.log(originhuman1);
if(originhuman1){ if(originhuman1){
console.log("start");
clearInterval(checkobject); clearInterval(checkobject);
//进站控制 //进站控制
startWorker(); startWorker();
@ -434,11 +464,126 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
}; };
},1000); },1000);
this.changestation = function(stationname){
for(let i=0,leni=stationlist.length;i<leni;i++){
if(stationlist[i].name == stationname){
scope.nowstation = stationlist[i];
scope.resetscene();
i=leni;
}
}
}
this.resetscene = function(){
aiswitch = 1;
toppasserin = false;
downpasserin = false;
//下车控制开关
toppasseron = false;
downpasseron = false;
toptrain.nowcode = null;
downtrain.nowcode = null;
// humanlist = new THREE.Group();
for(let j=0; j<humanlist.children.length;j++){
// scope.uncache(humanlist.children[j]);
humanlist.remove(humanlist.children[j]);
j--;
// j--;
}
toptrain.position.y = -20000;
downtrain.position.y = -20000;
deviceaction.down.action.reset();
deviceaction.down.action.time = deviceaction.down.action._clip.duration;
deviceaction.down.action.timeScale = -1;
deviceaction.down.action.play();
deviceaction.top.action.reset();
deviceaction.top.action.time = deviceaction.down.action._clip.duration;
deviceaction.top.action.timeScale = -1;
deviceaction.top.action.play();
for(let an=toptrain.action.top.length-1;an>=0;an--){
toptrain.action.top[an].reset();
toptrain.action.top[an].time = toptrain.action.top[an]._clip.duration;
toptrain.action.top[an].timeScale = -1;
toptrain.action.top[an].play();
}
for(let an=toptrain.action.down.length-1;an>=0;an--){
toptrain.action.down[an].reset();
toptrain.action.down[an].time = toptrain.action.down[an]._clip.duration;
toptrain.action.down[an].timeScale = -1;
toptrain.action.down[an].play();
}
// for(let an=actions.length-1;an>=0;an--){
// actions[an].reset();
// actions[an].time = actions[an]._clip.duration;
// actions[an].timeScale = -1;
// actions[an].play();
// }
setTimeout(function(){
initpasser();
aiswitch = 0;
}, 2000);
}
this.uncache = function(uncachemodel){
if(uncachemodel){
uncachemodel.mixer.uncacheAction();
uncachemodel.traverse( function ( child ) {
if ( child.isMesh ) {
child.geometry.dispose();
child.material.dispose();
}
} );
}
}
this.passerout = function(direct){
// console.log(direct);
if(direct == "top"){
// console.log("toppasser");
// console.log(stationzon.list["standtop"]);
toppasseron = true;
setTimeout(function(){
toppasseron = false
toppasserin = true;
setTimeout(function(){
toppasserin = false;
}, 20000);
}, 5000);
}
if(direct == "down"){
// console.log("downpasser");
// console.log(stationzon.list["standdown"]);
downpasseron = true;
setTimeout(function(){
downpasseron = false;
downpasserin = true;
setTimeout(function(){
downpasserin = false;
}, 20000);
}, 5000);
}
}
this.switchviews = function(viewmode){
if(viewmode == 4){
rendermode = 4;
}
if(viewmode == 2){
rendermode = 2;
}
if(viewmode == 1){
rendermode = 1;
}
if(viewmode == "auto"){
this.switchrender = function(mode){
if(mode){
rendermode = 0; rendermode = 0;
renderer.setViewport( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight ); renderer.setViewport( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight );
renderer.setScissor( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight ); renderer.setScissor( 0, 0, scope.dom.offsetWidth, scope.dom.offsetHeight );
@ -446,8 +591,6 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
renderer.setSize(scope.dom.offsetWidth, scope.dom.offsetHeight); renderer.setSize(scope.dom.offsetWidth, scope.dom.offsetHeight);
camerass.aspect = dom.offsetWidth / dom.offsetHeight; camerass.aspect = dom.offsetWidth / dom.offsetHeight;
camerass.updateProjectionMatrix(); camerass.updateProjectionMatrix();
}else{
rendermode = 1;
} }
} }
@ -463,22 +606,25 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
for(let i=0;i<3;i++){ for(let i=0;i<3;i++){
newhumancreate(stationzon.getinitposition("security"),1); newhumancreate(stationzon.getinitposition("security"),1);
} }
for(let i=0;i<2;i++){ // for(let i=0;i<2;i++){
newhumancreate(stationzon.getinitposition("entergate"),2); // // newhumancreate(stationzon.getinitposition("entergate"),3);
// }
for(let i=0;i<6;i++){
let standdata = stationzon.getstandposition("standtop");
newhumancreate(standdata.point,4,"top",standdata.door);
} }
for(let i=0;i<6;i++){ for(let i=0;i<6;i++){
newhumancreate(stationzon.getinitposition("standtop"),4); let standdata = stationzon.getstandposition("standdown");
} newhumancreate(standdata.point,4,"down",standdata.door);
for(let i=0;i<6;i++){
newhumancreate(stationzon.getinitposition("standdown"),4);
}
for(let i=0;i<5;i++){
newhumancreate(stationzon.getinitposition("exitgate"),4);
} }
// for(let i=0;i<5;i++){
// // newhumancreate(stationzon.getinitposition("exitgate"),6);
// }
} }
function startWorker(){ function startWorker(){
initpasser(); initpasser();
passerwebwork.onmessage = function (event) { passerwebwork.onmessage = function (event) {
if(aiswitch == 0){
moveanimateupdate(); moveanimateupdate();
passerai(); passerai();
@ -495,12 +641,11 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
humanlist.children[i].mixer.update( delta ); humanlist.children[i].mixer.update( delta );
} }
} }
}
}; };
stationwebwork.onmessage = function (event) { stationwebwork.onmessage = function (event) {
// console.log("stationwebwork"); if(aiswitch == 0){
// if(humans.length<200){ let direct = Math.floor(Math.random()*(3-1+1))+1;
var direct = Math.floor(Math.random()*(3-1+1))+1;
//1--top //1--top
//2-- down //2-- down
if(direct == 1){ if(direct == 1){
@ -509,7 +654,24 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
newhumancreate(stationzon.getzoneposition("enter2"),0); newhumancreate(stationzon.getzoneposition("enter2"),0);
} }
// } if(toppasseron){
for(let i=0,leni=stationzon.list["standtop"].doorpoints.length;i<leni;i++ ){
setTimeout(function(){
newhumancreate(stationzon.list["standtop"].doorpoints[i],5,"top",i);
}, Math.random()*1000);
}
}
if(downpasseron){
for(let i=0,leni=stationzon.list["standdown"].doorpoints.length;i<leni;i++ ){
setTimeout(function(){
newhumancreate(stationzon.list["standdown"].doorpoints[i],5,"down",i);
}, Math.random()*1000);
}
}
}
}; };
} }
@ -517,11 +679,17 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
//循环渲染函数 //循环渲染函数
function animate() { function animate() {
// console.log(rendermode); // console.log(rendermode);
if(rendermode == 0){ if(rendermode == 4){
render4view();
}else if(rendermode == 2){
render2view();
}
// else if(rendermode == 1){
// render4view();
// }
else if(rendermode == 0){
renderer.render(scene, camerass); renderer.render(scene, camerass);
scope.controls.update(); scope.controls.update();
}else{
monitorrender();
} }
// delta = clock.getDelta(); // delta = clock.getDelta();
@ -535,6 +703,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
// console.log(humans[i]); // console.log(humans[i]);
if(humanlist.children[i].status == 0){ if(humanlist.children[i].status == 0){
//stage = 0 进入车站
if(humanlist.children[i].stage == 0){ if(humanlist.children[i].stage == 0){
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
@ -550,30 +719,35 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
// console.log(path); // console.log(path);
} }
//stage = 1 前往进站闸机
if(humanlist.children[i].stage == 1){ if(humanlist.children[i].stage == 1){
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
groupID = pathfinder.getGroup( ZONE, points[0] ); groupID = pathfinder.getGroup( ZONE, points[0] );
targetPosition = stationzon.getzoneposition("entergate"); targetPosition = stationzon.getgateposition("entergate");
path = pathfinder.findPath( points[0], targetPosition, ZONE, groupID ); path = pathfinder.findPath( points[0], targetPosition.point, ZONE, groupID );
humanlist.children[i].door = targetPosition.door;
for(let i=0;i<path.length;i++){ for(let i=0;i<path.length;i++){
points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z)); points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z));
} }
moveanimateinit(humanlist.children[i],i,points,i); moveanimateinit(humanlist.children[i],i,points,i);
} }
//stage = 2 过闸机
if(humanlist.children[i].stage == 2){ if(humanlist.children[i].stage == 2){
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z-5)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z-5));
// zhajicontrol("in",humans[i].doors); zhajicontrol("in",humanlist.children[i].door);
moveanimateinit(humanlist.children[i],i,points,i); moveanimateinit(humanlist.children[i],i,points,i);
} }
//stage = 3 前往站台
if(humanlist.children[i].stage == 3){ if(humanlist.children[i].stage == 3){
var direct = Math.floor(Math.random()*(3-1+1))+1; let direct = Math.floor(Math.random()*(2))+1;
// console.log(direct);
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
// points.push(new THREE.Vector3(11.81,9.8,13.11)); // points.push(new THREE.Vector3(11.81,9.8,13.11));
@ -582,12 +756,14 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
//2-- down //2-- down
if(direct == 1){ if(direct == 1){
groupID = pathfinder.getGroup( ZONE, points[0] ); groupID = pathfinder.getGroup( ZONE, points[0] );
targetPosition = stationzon.getzoneposition("standtop"); targetPosition = stationzon.getstandposition("standtop");
path = pathfinder.findPath( points[0], targetPosition, ZONE, groupID ); path = pathfinder.findPath( points[0], targetPosition.point, ZONE, groupID );
humanlist.children[i].direct = "top";
}else{ }else{
groupID = pathfinder.getGroup( ZONE, points[0] ); groupID = pathfinder.getGroup( ZONE, points[0] );
targetPosition = stationzon.getzoneposition("standdown"); targetPosition = stationzon.getstandposition("standdown");
path = pathfinder.findPath( points[0], targetPosition, ZONE, groupID ); path = pathfinder.findPath( points[0], targetPosition.point, ZONE, groupID );
humanlist.children[i].direct = "down";
} }
if(path[0].y<9.84){ if(path[0].y<9.84){
points.push(new THREE.Vector3(11.81,9.8,13.11)); points.push(new THREE.Vector3(11.81,9.8,13.11));
@ -597,63 +773,92 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
for(let i=0;i<path.length;i++){ for(let i=0;i<path.length;i++){
points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z)); points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z));
} }
humanlist.children[i].door = targetPosition.door;
moveanimateinit(humanlist.children[i],i,points,i); moveanimateinit(humanlist.children[i],i,points,i);
} }
// //出站
// if(humanlist.children[i].stage == 3){ //stage = 4 上车
// // let points = [];
// // points.push(new THREE.Vector3(humans[i].mesh.position.x,humans[i].mesh.position.y,humans[i].mesh.position.z));
// // if(humans[i].doors<11){
// // if(humans[i].direct == 1){
// // points.push(new THREE.Vector3(10,1.7,17));
// // }else{
// // points.push(new THREE.Vector3(8,1.7,5));
// // }
// // points.push(new THREE.Vector3(8,1.7,13));
// // points.push(new THREE.Vector3(5,1.7,13));
// // points.push(new THREE.Vector3(-4,6,13));
// // }else{
// // if(humans[i].direct == 1){
// // points.push(new THREE.Vector3(-19,1.7,17));
// // }else{
// // points.push(new THREE.Vector3(-18,1.7,6.4));
// // }
// // points.push(new THREE.Vector3(-18,1.7,13));
// // points.push(new THREE.Vector3(-12,1.7,13));
// // points.push(new THREE.Vector3(-7,6.8,12));
// // }
// // points.push(new THREE.Vector3(-5,10,4));
// // points.push(new THREE.Vector3(14,10,3));
// // var j = Math.floor(Math.random()*(4-1+1))+1;
// // points.push(new THREE.Vector3(19,10,-2+j*1.4));
// //
// // humans[i].doors = j;
// // moveanimateinit(humans[i],i,points,i,0.002);
// }
if(humanlist.children[i].stage == 4){ if(humanlist.children[i].stage == 4){
if(toppasserin && humanlist.children[i].direct == "top"){
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
groupID = pathfinder.getGroup( ZONE, points[0] ); points.push(stationzon.list["standtop"].doorpoints[humanlist.children[i].door]);
targetPosition = stationzon.getzoneposition("exitgate");
path = pathfinder.findPath( points[0], targetPosition, ZONE, groupID );
if(points[1] == undefined){
}else{
moveanimateinit(humanlist.children[i],i,points,i);
}
}
if(downpasserin && humanlist.children[i].direct == "down"){
let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
points.push(stationzon.list["standdown"].doorpoints[humanlist.children[i].door]);
if(points[1] == undefined){
}else{
moveanimateinit(humanlist.children[i],i,points,i);
}
// console.log(points);
}
}
//stage = 5 下车
if(humanlist.children[i].stage == 5){
let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
if(humanlist.children[i].direct == "top"){
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z+5));
}
if(humanlist.children[i].direct == "down"){
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z-5));
}
groupID = pathfinder.getGroup( ZONE, points[1] );
targetPosition = stationzon.getgateposition("exitgate");
path = pathfinder.findPath( points[1], targetPosition.point, ZONE, groupID );
humanlist.children[i].door = targetPosition.door;
for(let i=0;i<path.length;i++){ for(let i=0;i<path.length;i++){
points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z)); points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z));
} }
moveanimateinit(humanlist.children[i],i,points,i); moveanimateinit(humanlist.children[i],i,points,i);
} }
if(humanlist.children[i].stage == 5){ //stage = 6 前往出站闸机
// if(humanlist.children[i].stage == 6){
// let points = [];
// points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
//
// groupID = pathfinder.getGroup( ZONE, points[0] );
// targetPosition = stationzon.getgateposition("exitgate");
// path = pathfinder.findPath( points[0], targetPosition, ZONE, groupID );
//
// for(let i=0;i<path.length;i++){
// points.push(new THREE.Vector3(path[i].x,path[i].y,path[i].z));
// }
// moveanimateinit(humanlist.children[i],i,points,i);
// }
//stage = 7 出闸机
if(humanlist.children[i].stage == 7){
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
points.push(new THREE.Vector3(humanlist.children[i].position.x+5,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x+5,humanlist.children[i].position.y,humanlist.children[i].position.z));
// zhajicontrol("in",humans[i].doors); zhajicontrol("out",humanlist.children[i].door);
moveanimateinit(humanlist.children[i],i,points,i); moveanimateinit(humanlist.children[i],i,points,i);
} }
if(humanlist.children[i].stage == 6){
var direct = Math.floor(Math.random()*(3-1+1))+1; //stage = 8 出站
if(humanlist.children[i].stage == 8){
let direct = Math.floor(Math.random()*(3-1+1))+1;
let points = []; let points = [];
points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z)); points.push(new THREE.Vector3(humanlist.children[i].position.x,humanlist.children[i].position.y,humanlist.children[i].position.z));
@ -694,66 +899,54 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
model.action.play(); model.action.play();
model.progress = 0; model.progress = 0;
model.runrail = curve; model.runrail = curve;
model.speed = 0.1/curve.getLength(); model.speed = 0.2/curve.getLength();
} }
function moveanimateupdate(){ function moveanimateupdate(){
for(let i=0;i<humanlist.children.length;i++){ for(let i=0;i<humanlist.children.length;i++){
if(humanlist.children[i].status == 1){ if(humanlist.children[i].status == 1){
if(humanlist.children[i].progress>=1){ if(humanlist.children[i].progress>=1){
// let point = humans[i].runrail.curve.getPointAt(1);
//更新模型坐标 //更新模型坐标
if(humanlist.children[i].status == 1){ if(humanlist.children[i].status == 1){
// humanlist.children[i].runrail.enable = false;
// if(humanlist.children[i].stage == 4){
//
// humanlist.remove(humanlist.children[i].mesh);
// // humans.splice(i,1);
// }
//
humanlist.children[i].progress = 1; humanlist.children[i].progress = 1;
// humanlist.children[i].mixer.runplay = false;
humanlist.children[i].action.stop(); humanlist.children[i].action.stop();
humanlist.children[i].status = 0; humanlist.children[i].status = 0;
if(humanlist.children[i].stage == 6){ if(humanlist.children[i].stage == 8){
scope.uncache(humanlist.children[i]);
humanlist.remove(humanlist.children[i]); humanlist.remove(humanlist.children[i]);
i--;
}else if(humanlist.children[i].stage == 7){
humanlist.children[i].stage = 8;
}
// else if(humanlist.children[i].stage == 6){
//
// humanlist.children[i].stage = 7; // humanlist.children[i].stage = 7;
//
// }
else if(humanlist.children[i].stage == 5){
} humanlist.children[i].stage = 7;
if(humanlist.children[i].stage == 5){ }else if(humanlist.children[i].stage == 4){
scope.uncache(humanlist.children[i]);
humanlist.children[i].stage = 6; humanlist.remove(humanlist.children[i]);
i--;
} }else if(humanlist.children[i].stage == 3){
if(humanlist.children[i].stage == 4){
humanlist.children[i].stage = 5;
}
if(humanlist.children[i].stage == 3){
humanlist.children[i].stage = 4; humanlist.children[i].stage = 4;
} }else if(humanlist.children[i].stage == 2){
//
if(humanlist.children[i].stage == 2){
humanlist.children[i].stage = 3; humanlist.children[i].stage = 3;
} }else if(humanlist.children[i].stage == 1){
if(humanlist.children[i].stage == 1){
humanlist.children[i].stage = 2; humanlist.children[i].stage = 2;
} }else if(humanlist.children[i].stage == 0){
if(humanlist.children[i].stage == 0){
// // console.log(humans[i].doors); // // console.log(humans[i].doors);
// zhajiin[humanlist.children[i].doors].waiting = 0; // zhajiin[humanlist.children[i].doors].waiting = 0;
humanlist.children[i].stage = 1; humanlist.children[i].stage = 1;
@ -785,8 +978,8 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
} }
} }
function newhumancreate(position,stage,){ function newhumancreate(position,stage,direct,door){
var mantype = Math.floor(Math.random()*(3-1+1))+1; let mantype = Math.floor(Math.random()*(3-1+1))+1;
let newhuman; let newhuman;
if(mantype == 1){ if(mantype == 1){
newhuman = THREE.SkeletonUtils.clone( originhuman1 ); newhuman = THREE.SkeletonUtils.clone( originhuman1 );
@ -803,9 +996,22 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
newhuman.status = 0; newhuman.status = 0;
newhuman.stage = stage; newhuman.stage = stage;
if(direct){
if(direct == "top"){
newhuman.rotation.y = Math.PI;
}
newhuman.direct = direct;
}else{
newhuman.direct = null; newhuman.direct = null;
}
newhuman.doorstatus = null; newhuman.doorstatus = null;
newhuman.doors = null; if(door){
newhuman.door = door;
}else{
newhuman.door = null;
}
newhuman.action = mixer.clipAction( newhuman.animations[ 0 ] ); newhuman.action = mixer.clipAction( newhuman.animations[ 0 ] );
newhuman.mixer = mixer; newhuman.mixer = mixer;
newhuman.runrail = null; newhuman.runrail = null;
@ -862,9 +1068,9 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
} }
nowstation = stationlist[0]; scope.nowstation = stationlist[0];
updatestationlist(stationlist); updatestationlist(stationlist);
// console.log(nowstation); // console.log(scope.nowstation);
} }
function inittrain(object){ function inittrain(object){
let ntracks1,ntracks2,tclip,fclip; let ntracks1,ntracks2,tclip,fclip;
@ -880,6 +1086,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
toptrain = object.clone(true); toptrain = object.clone(true);
toptrain.nowcode = null;
toptrain.action = { toptrain.action = {
top:[], top:[],
down:[] down:[]
@ -892,6 +1099,7 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
toptrain.curve = new THREE.CatmullRomCurve3(points1); toptrain.curve = new THREE.CatmullRomCurve3(points1);
downtrain = object.clone(true); downtrain = object.clone(true);
downtrain.nowcode = null;
downtrain.action = { downtrain.action = {
top:[], top:[],
down:[] down:[]
@ -977,9 +1185,9 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
for(let j=0;j<object.children.length;j++){ for(let j=0;j<object.children.length;j++){
if(object.children[j].name == "top"){ if(object.children[j].name == "top"){
// var geometry = new THREE.BoxBufferGeometry( 50, 50, 50 ); // let geometry = new THREE.BoxBufferGeometry( 50, 50, 50 );
// var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} ); // let material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
// var cube = new THREE.Mesh( geometry, material ); // let cube = new THREE.Mesh( geometry, material );
// cube.position.copy(object.children[j].position); // cube.position.copy(object.children[j].position);
// scene.add( cube ); // scene.add( cube );
object.children[j].animations = []; object.children[j].animations = [];
@ -1222,7 +1430,8 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
function zhajicontrol(type,door){ function zhajicontrol(type,door){
// console.log(door); // console.log(door);
// console.log(zhajiin); // console.log(zhajiin);
let devicenum = door-1;
let devicenum = door;
if(type == "in"){ if(type == "in"){
deviceaction[zhajiin[devicenum].id].action.reset(); deviceaction[zhajiin[devicenum].id].action.reset();
deviceaction[zhajiin[devicenum].id].action.time = 0; deviceaction[zhajiin[devicenum].id].action.time = 0;
@ -1237,21 +1446,50 @@ export function Jl3dpassflow(dom,skinCode,routegroup) {
} }
function monitorrender() { function render4view() {
// updateSize(); // updateSize();
for ( var ii = 0; ii < views.length; ++ ii ) { for ( let ii = 0; ii < views4.length; ++ ii ) {
var view = views[ ii ]; let view = views4[ ii ];
var camera = view.camera; let camera = view.camera;
// view.updateCamera( camera, scene, mouseX, mouseY ); // view.updateCamera( camera, scene, mouseX, mouseY );
var left = Math.floor( windowWidth * view.left ); let left = Math.floor( windowWidth * view.left );
var bottom = Math.floor( windowHeight * view.bottom ); let bottom = Math.floor( windowHeight * view.bottom );
var width = Math.floor( windowWidth * view.width ); let width = Math.floor( windowWidth * view.width );
var height = Math.floor( windowHeight * view.height ); let height = Math.floor( windowHeight * view.height );
renderer.setViewport( left, bottom, width, height );
renderer.setScissor( left, bottom, width, height );
renderer.setScissorTest( true );
camera.aspect = width / height;
camera.updateProjectionMatrix();
renderer.render( scene, camera );
}
}
function render2view() {
// updateSize();
for ( let ii = 0; ii < views2.length; ++ ii ) {
let view = views2[ ii ];
let camera = view.camera;
// view.updateCamera( camera, scene, mouseX, mouseY );
let left = Math.floor( windowWidth * view.left );
let bottom = Math.floor( windowHeight * view.bottom );
let width = Math.floor( windowWidth * view.width );
let height = Math.floor( windowHeight * view.height );
renderer.setViewport( left, bottom, width, height ); renderer.setViewport( left, bottom, width, height );
renderer.setScissor( left, bottom, width, height ); renderer.setScissor( left, bottom, width, height );

View File

@ -161,7 +161,8 @@ let exit2 = {
new THREE.Vector3(30.2,9.8,28) new THREE.Vector3(30.2,9.8,28)
] ]
}; };
let enternum = 0;
let exitnum = 0;
export function ZoneManager() { export function ZoneManager() {
var scope = this; var scope = this;
@ -221,6 +222,62 @@ export function ZoneManager() {
return randompoint; return randompoint;
} }
this.getstandposition = function(name){
let n = Math.round(Math.random()*20);
if(n>=1){
n=n;
}else{
n=0;
}
let randompoint = new THREE.Vector3(0,scope.list[name].doorpoints[n].y,0);
if(name == "standtop"){
randompoint.x = scope.list[name].doorpoints[n].x + Math.random()*3;
randompoint.z = scope.list[name].doorpoints[n].z +5;
}
if(name == "standdown"){
randompoint.x = scope.list[name].doorpoints[n].x + Math.random()*3;
randompoint.z = scope.list[name].doorpoints[n].z -5;
}
let standdata = {
door:n,
point:randompoint
};
return standdata;
}
this.getgateposition = function(name){
let randompoint = new THREE.Vector3(0,0,0);
let standdata = {
door:null,
point:null
};
if(name == "entergate"){
randompoint.x = scope.list[name].railpoints[enternum].x ;
randompoint.y = scope.list[name].railpoints[enternum].y ;
randompoint.z = scope.list[name].railpoints[enternum].z ;
standdata.door = 4-enternum;
enternum += 1;
if(enternum>4){
enternum = 0;
}
}
if(name == "exitgate"){
randompoint.x = scope.list[name].railpoints[exitnum].x ;
randompoint.y = scope.list[name].railpoints[exitnum].y ;
randompoint.z = scope.list[name].railpoints[exitnum].z ;
standdata.door = 4-exitnum;
exitnum += 1;
if(exitnum>4){
exitnum = 0;
}
}
standdata.point = randompoint;
return standdata;
}
this.getzoneposition = function(name){ this.getzoneposition = function(name){
// let random = Math.random(); // let random = Math.random();

View File

@ -12,5 +12,9 @@ export function ZoneModel(data) {
this.railpoints = data.railpoints; this.railpoints = data.railpoints;
this.railline = new THREE.CatmullRomCurve3(data.railpoints); this.railline = new THREE.CatmullRomCurve3(data.railpoints);
if(data.doorpoints){
this.doorpoints = data.doorpoints;
}else{
this.doorpoints = null;
}
} }

View File

@ -147,7 +147,7 @@ this.loadpromise = function(sectionList,sectiondata,rails,scene,assetloader){
let height = Math.random()/1000; let height = Math.random()/1000;
var closedSpline = new THREE.CatmullRomCurve3( [ var closedSpline = new THREE.CatmullRomCurve3( [
new THREE.Vector3(newsection.railpoint[0].x,height,newsection.railpoint[0].z), new THREE.Vector3(newsection.railpoint[0].x,height,newsection.railpoint[0].z),
new THREE.Vector3(newsection.railpoint[1].x,height,newsection.railpoint[1].z), new THREE.Vector3(newsection.railpoint[1].x,height,newsection.railpoint[0].z),
] ); ] );
closedSpline.type = 'catmullrom'; closedSpline.type = 'catmullrom';

View File

@ -537,7 +537,7 @@ class SkinCode extends defaultStyle {
trainBody: { trainBody: {
fontFamily: 'consolas', fontFamily: 'consolas',
trainBodyLineWidth: 0, // 车身line宽 trainBodyLineWidth: 0, // 车身line宽
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度 changeTrainWidth: true, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
specialTrainType: [ specialTrainType: [
{ {
type: '03', type: '03',
@ -592,7 +592,7 @@ class SkinCode extends defaultStyle {
}, },
common: { common: {
useSelfFormat: true, useSelfFormat: true,
useSelfText: true, useSelfText: false,
trainHeight: 17, // 列车高度 trainHeight: 17, // 列车高度
trainHeadDistance: 2, // 列车和车头之间的间距 trainHeadDistance: 2, // 列车和车头之间的间距
trainWidth:62, // 列车长度 trainWidth:62, // 列车长度

View File

@ -508,7 +508,7 @@ class SkinCode extends defaultStyle {
radiusR: 6 // 控制灯大小 radiusR: 6 // 控制灯大小
}, },
text: { text: {
fontWeight: 'normal', fontWeight: 580,
fontSize: 12, fontSize: 12,
distance: 10 distance: 10
}, },

View File

@ -39,7 +39,7 @@ class EMouse extends Group {
if (Vue.prototype.$jlmap.lineCode == '11' || Vue.prototype.$jlmap.lineCode == '10') { if (Vue.prototype.$jlmap.lineCode == '11' || Vue.prototype.$jlmap.lineCode == '10') {
text = `列车类型: ${trainType}\n\0\0\0\0源:人工标记\n\0\0号: ${this.device.model.groupNumber}\n\0\0\0\0号: ${this.device.model.serviceNumber}\n\0\0号: ${this.device.model.tripNumber}\n目的地号: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n\0\0点: ${destinationText}\n运行方向: ${direction ? '上行' : '下行'}\nATP报告方向: ${direction ? '上行' : '下行'}\n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? this.device.model.sectionModel.parentName : ''}\n所在车站: \n车次通信: 通信车\n运行时间: \n停站时间: \n扣车状态: ${ this.device.model.hold ? '扣车' : '正常'}\n车载扣车: 不执行\n跳停状态: ${this.device.model.jump ? '跳停' : '正常'}\n停稳状态: ${!this.device.model.stop ? '未停稳' : '停稳'}\n阻塞状态: 无\n列车状态: CTC车\n最高信号系统控制: CTC\n驾驶模式: SM模式\n最高ATP模式: AM\nATP1状态: 激活\nATP2状态: 备用\n速度: ${this.device.model.speed || 0} km/h\n车门状态: ${this.device.model.speed ? '关闭' : direction ? '左开右关' : '左关右开'}\n制动状态: 无紧急制动\n停车保证: 可保证停车\n站台无法进入: 否\n前方站台停车点: 中间\n折法策略: \n折返状态: \n屏蔽门开门许可: 是\n运营里程: 无效\n总重量: 196T\n车长: 11860cm\n列车编组: 1`; text = `列车类型: ${trainType}\n\0\0\0\0源:人工标记\n\0\0号: ${this.device.model.groupNumber}\n\0\0\0\0号: ${this.device.model.serviceNumber}\n\0\0号: ${this.device.model.tripNumber}\n目的地号: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n\0\0点: ${destinationText}\n运行方向: ${direction ? '上行' : '下行'}\nATP报告方向: ${direction ? '上行' : '下行'}\n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? this.device.model.sectionModel.parentName : ''}\n所在车站: \n车次通信: 通信车\n运行时间: \n停站时间: \n扣车状态: ${ this.device.model.hold ? '扣车' : '正常'}\n车载扣车: 不执行\n跳停状态: ${this.device.model.jump ? '跳停' : '正常'}\n停稳状态: ${!this.device.model.stop ? '未停稳' : '停稳'}\n阻塞状态: 无\n列车状态: CTC车\n最高信号系统控制: CTC\n驾驶模式: SM模式\n最高ATP模式: AM\nATP1状态: 激活\nATP2状态: 备用\n速度: ${this.device.model.speed || 0} km/h\n车门状态: ${this.device.model.speed ? '关闭' : direction ? '左开右关' : '左关右开'}\n制动状态: 无紧急制动\n停车保证: 可保证停车\n站台无法进入: 否\n前方站台停车点: 中间\n折法策略: \n折返状态: \n屏蔽门开门许可: 是\n运营里程: 无效\n总重量: 196T\n车长: 11860cm\n列车编组: 1`;
} else { } else {
text = `列车类型: ${trainType} \n\0\0\0\0号: ${this.device.model.serviceNumber}\n\0\0号: ${this.device.model.tripNumber}\n目的地号: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n\0\0号: ${this.device.model.groupNumber}\n\0\0点: ${destinationText}\n运行方向: ${direction ? '上行' : '下行'}\n乘务组号: \n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? this.device.model.sectionModel.parentName : ''}\n所在车站: \n车地通信: 正常\n运行等级: 4\n扣车状态: ${ this.device.model.hold ? '扣车' : '正常'}\n跳停状态: ${this.device.model.jump ? '跳停' : '正常'} \n停稳状态: ${!this.device.model.stop ? '未停稳' : '停稳'}\n阻塞状态: 无\n列车速度: ${this.device.model.speed || 0} km/h\n列车移动授权距离: ${this.device.model.maLen || 0} m`; text = `列车类型: ${trainType} \n\0\0\0\0号: ${this.device.model.serviceNumber}\n\0\0号: ${this.device.model.tripNumber}\n目的地号: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n\0\0号: ${this.device.model.groupNumber}\n\0\0点: ${destinationText}\n运行方向: ${direction ? '上行' : '下行'}\n乘务组号: \n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? (this.device.model.sectionModel.parentName ? this.device.model.sectionModel.parentName : this.device.model.sectionModel.name) : ''}\n所在车站: \n车地通信: 正常\n运行等级: 4\n扣车状态: ${ this.device.model.hold ? '扣车' : '正常'}\n跳停状态: ${this.device.model.jump ? '跳停' : '正常'} \n停稳状态: ${!this.device.model.stop ? '未停稳' : '停稳'}\n阻塞状态: 无\n列车速度: ${this.device.model.speed || 0} km/h\n列车移动授权距离: ${this.device.model.maLen || 0} m`;
} }
} }
const trainTip = this.device.style.Train.common.trainTip; const trainTip = this.device.style.Train.common.trainTip;

View File

@ -84,6 +84,8 @@ export default class Train extends Group {
type: model.type, type: model.type,
speed: model.speed, speed: model.speed,
maLen: model.maLen, maLen: model.maLen,
hold:model.hold,
jump:model.jump,
dt: model.dt, dt: model.dt,
model: model model: model
}); });

View File

@ -1,7 +1,7 @@
<template> <template>
<el-dialog <el-dialog
v-dialogDrag v-dialogDrag
class="foshan-01__schedule stand-detain-train-all" class="foshan-01__systerm stand-detain-train-all"
:title="title" :title="title"
:visible.sync="show" :visible.sync="show"
width="340px" width="340px"

View File

@ -21,7 +21,7 @@
</div> </div>
<el-radio :id="control === '02'? '': domIdChoose1" label="02">全人工</el-radio> <el-radio :id="control === '02'? '': domIdChoose1" label="02">全人工</el-radio>
</el-radio-group> </el-radio-group>
<!-- <el-input-number <el-input-number
:id="domIdInput" :id="domIdInput"
v-model="time" v-model="time"
:disabled="disabledInput" :disabled="disabledInput"
@ -31,7 +31,7 @@
style="width: 130px; padding-left:30px;display: block; float: left; margin-top: 15px;" style="width: 130px; padding-left:30px;display: block; float: left; margin-top: 15px;"
@change="inputTime" @change="inputTime"
/> />
<div style="float: left;margin-top: 22px; margin-left: 5px;"></div> --> <div style="float: left;margin-top: 22px; margin-left: 5px;"></div>
</div> </div>
</div> </div>
<div style="padding: 10px 15px; border: 1px double lightgray; height: 60px;"> <div style="padding: 10px 15px; border: 1px double lightgray; height: 60px;">
@ -72,7 +72,7 @@ export default {
return { return {
dialogShow: false, dialogShow: false,
loading: false, loading: false,
// time: 0, time: 0,
control: '01', control: '01',
direction: '01', direction: '01',
effective: '0', effective: '0',
@ -143,7 +143,7 @@ export default {
} }
this.control = Number(tempDate.parkingTime) === -1 ? '01' : '02'; this.control = Number(tempDate.parkingTime) === -1 ? '01' : '02';
// this.time = Number(tempDate.parkingTime) === -1 ? 15 : Number(tempDate.parkingTime); this.time = Number(tempDate.parkingTime) === -1 ? 15 : Number(tempDate.parkingTime);
// this.effective = tempDate.parkingValidStatus ? true : false; // this.effective = tempDate.parkingValidStatus ? true : false;
this.effective = tempDate.parkingValidStatus ? '1' : '0'; this.effective = tempDate.parkingValidStatus ? '1' : '0';
this.direction = selected.direction; this.direction = selected.direction;
@ -187,18 +187,18 @@ export default {
} }
}); });
}, },
// inputTime() { inputTime() {
// const operate = { const operate = {
// repeat: true, repeat: true,
// operation: OperationEvent.StationStand.setStopTime.input.operation operation: OperationEvent.StationStand.setStopTime.input.operation
// }; };
// this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
// if (valid) { if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// } }
// }); });
// }, },
commit() { commit() {
const operate = { const operate = {
send: true, send: true,
@ -206,7 +206,7 @@ export default {
cmdType: CMD.Stand.CMD_STAND_SET_PARK_TIME, cmdType: CMD.Stand.CMD_STAND_SET_PARK_TIME,
param: { param: {
parkingTime: this.control == '01' ? -1 : 1, parkingTime: this.control == '01' ? -1 : 1,
// runLevelTime: this.time, runLevelTime: this.time,
parkingAlwaysValid: this.effective == '1' parkingAlwaysValid: this.effective == '1'
} }
// messages: [`: ${this.stationName} - ${this.standName}, ${this.control == '01' ? '' : this.time + ''}, ${this.effective == false ? '' : ''}`] // messages: [`: ${this.stationName} - ${this.standName}, ${this.control == '01' ? '' : this.time + ''}, ${this.effective == false ? '' : ''}`]

View File

@ -29,7 +29,7 @@
<div>道岔</div> <div>道岔</div>
<el-col :span="11"> <el-col :span="11">
<el-select :id="domIdChoose" v-model="messageText2" filterable size="mini" :disabled="disabledConfirm2" @change="SelectChange"> <el-select :id="domIdChoose" v-model="messageText2" filterable size="mini" :disabled="disabledConfirm2" @change="SelectChange">
<el-option v-for="option in switchList" :key="option.code" :label="option.name" :value="option.name" /> <el-option v-for="option in switchList" :key="option.code" :label="option.name" :value="option.code" />
</el-select> </el-select>
</el-col> </el-col>
<el-col :span="8" :offset="1"> <el-col :span="8" :offset="1">
@ -49,7 +49,7 @@
</div> </div>
<div class="body_cont"> <div class="body_cont">
<div class="status_text">状态</div> <div class="status_text">状态</div>
<div class="textarea_content" /> <div class="textarea_content">{{ message }}</div>
</div> </div>
<el-button :id="domIdConfirm" class="close_btn" type="primary" @click="commit">关闭</el-button> <el-button :id="domIdConfirm" class="close_btn" type="primary" @click="commit">关闭</el-button>
@ -73,7 +73,7 @@ export default {
dialogShow: false, dialogShow: false,
selected: null, selected: null,
operation: null, operation: null,
message:'',
messageText1: '', messageText1: '',
messageText2: '', messageText2: '',
timeCountConfirm: -1, timeCountConfirm: -1,
@ -124,6 +124,7 @@ export default {
}, },
methods: { methods: {
doShow(operate, selected) { doShow(operate, selected) {
this.message = '';
this.selected = selected; this.selected = selected;
if (!this.dialogShow) { if (!this.dialogShow) {
this.messageText1 = selected.name; this.messageText1 = selected.name;
@ -139,6 +140,7 @@ export default {
this.dialogShow = false; this.dialogShow = false;
this.messageText1 = ''; this.messageText1 = '';
this.messageText2 = ''; this.messageText2 = '';
this.message = '';
this.timeCountConfirm = -1; this.timeCountConfirm = -1;
this.disabledConfirm1 = false; this.disabledConfirm1 = false;
this.disabledConfirm2 = true; this.disabledConfirm2 = true;
@ -147,6 +149,7 @@ export default {
}, },
SelectChange() { SelectChange() {
this.message = '';
const operate = { const operate = {
operation: '', operation: '',
val: this.messageText2 val: this.messageText2
@ -192,7 +195,9 @@ export default {
}); });
}, },
confirm2() { confirm2() {
if (this.selected.code == this.messageText2) {
const operate = { const operate = {
over: true,
operation: '', operation: '',
cmdType: '' cmdType: ''
}; };
@ -203,21 +208,23 @@ export default {
operate.operation = OperationEvent.Switch.unblock.confirm2.operation; operate.operation = OperationEvent.Switch.unblock.confirm2.operation;
operate.cmdType = CMD.Switch.CMD_SWITCH_UNBLOCK; operate.cmdType = CMD.Switch.CMD_SWITCH_UNBLOCK;
} }
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.messageText2 = '*****'; this.messageText2 = '*****';
this.disabledConfirm2 = true; this.disabledConfirm2 = true;
this.timeCountConfirm = -1; this.timeCountConfirm = -1;
this.message = '操作成功';
} }
}).catch((error) => { }).catch((error) => {
this.$refs.noticeInfo.doShow(operate, error.message); this.$refs.noticeInfo.doShow(operate, error.message);
}); });
} else {
this.message = '请选择正确的道岔';
}
}, },
commit() { commit() {
const operate = { const operate = {
over: true,
operation: '' operation: ''
}; };
@ -316,6 +323,7 @@ export default {
width: 100%; width: 100%;
border: 2px solid #E9E9E9; border: 2px solid #E9E9E9;
box-shadow: 2px 2px #959595 inset; box-shadow: 2px 2px #959595 inset;
padding:5px;
} }
} }
} }

View File

@ -87,6 +87,7 @@
</template> </template>
</div> </div>
<station-control ref="stationControl" /> <station-control ref="stationControl" />
<view-train-id ref="viewTrainId" />
<detain-train-contorl ref="detainTrainContorl" /> <detain-train-contorl ref="detainTrainContorl" />
<detain-train-contorl-up-down ref="detainTrainContorlUpDown" /> <detain-train-contorl-up-down ref="detainTrainContorlUpDown" />
<notice-info ref="noticeInfo" /> <notice-info ref="noticeInfo" />
@ -105,6 +106,7 @@ import StationControl from './menuDialog/stationControl';
import DetainTrainContorl from './menuDialog/detainTrainContorl'; import DetainTrainContorl from './menuDialog/detainTrainContorl';
import DetainTrainContorlUpDown from './menuDialog/detainTrainContorlUpDown'; import DetainTrainContorlUpDown from './menuDialog/detainTrainContorlUpDown';
import TrainAdd from './menuDialog/trainAdd'; import TrainAdd from './menuDialog/trainAdd';
import ViewTrainId from './menuDialog/viewTrainId';
import TrainTranstalet from './menuDialog/trainTranstalet'; import TrainTranstalet from './menuDialog/trainTranstalet';
import TrainDelete from './menuDialog/trainDelete'; import TrainDelete from './menuDialog/trainDelete';
import ManageUser from './menuDialog/manageUser'; import ManageUser from './menuDialog/manageUser';
@ -123,6 +125,7 @@ export default {
TrainTranstalet, TrainTranstalet,
TrainDelete, TrainDelete,
ManageUser, ManageUser,
ViewTrainId,
HelpAbout HelpAbout
}, },
props: { props: {
@ -187,6 +190,27 @@ export default {
} }
] ]
}, },
{
title: this.$t('menu.menuBar.display'),
operate: OperationEvent.Command.mBar.view,
children: [
{
title: this.$t('menu.menuBar.setTrainIdDisplay'),
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
}
// {
// title: this.$t('menu.menuBar.setNameDisplay'),
// click: this.setNameDisplay,
// operate: OperationEvent.Command.view.setNameDisplay
// },
// {
// title: this.$t('menu.menuBar.setDeviceDisplay'),
// click: this.setDeviceDisplay,
// operate: OperationEvent.Command.view.setDeviceDisplay
// }
]
},
{ {
title: '查看', title: '查看',
operate: OperationEvent.Command.mBar.check, operate: OperationEvent.Command.mBar.check,
@ -432,6 +456,27 @@ export default {
} }
] ]
}, },
{
title: this.$t('menu.menuBar.display'),
operate: OperationEvent.Command.mBar.view,
children: [
{
title: this.$t('menu.menuBar.setTrainIdDisplay'),
click: this.setTrainIdDisplay,
operate: OperationEvent.Command.view.setTrainIdDisplay
}
// {
// title: this.$t('menu.menuBar.setNameDisplay'),
// click: this.setNameDisplay,
// operate: OperationEvent.Command.view.setNameDisplay
// },
// {
// title: this.$t('menu.menuBar.setDeviceDisplay'),
// click: this.setDeviceDisplay,
// operate: OperationEvent.Command.view.setDeviceDisplay
// }
]
},
{ {
title: '查看', title: '查看',
operate: OperationEvent.Command.mBar.check, operate: OperationEvent.Command.mBar.check,
@ -797,6 +842,19 @@ export default {
this.closeMenu(true); this.closeMenu(true);
} }
}, },
//
setTrainIdDisplay(order) {
const operate = {
operation: order.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.closeMenu(true);
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.viewTrainId.doShow(operate);
}
});
},
// //
stationRemoteControl(order) { stationRemoteControl(order) {
const operate = { const operate = {

View File

@ -43,8 +43,8 @@ export default {
disabledCommit: false, disabledCommit: false,
control: '01', control: '01',
controlProps: { controlProps: {
'01': '取消上行扣车', '01': '取消上行全线扣车',
'02': '取消下行扣车' '02': '取消下行全线扣车'
} }
}; };
@ -63,9 +63,9 @@ export default {
title() { title() {
if (this.dialogShow) { if (this.dialogShow) {
if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) { if (this.operation == OperationEvent.StationStand.cancelUpDetainTrainAll.mbar.operation) {
return '取消上行扣车'; return '取消上行全线扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) { } else if (this.operation == OperationEvent.StationStand.cancelDownDetainTrainAll.mbar.operation) {
return '取消下行扣车'; return '取消下行全线扣车';
} }
} }
}, },

View File

@ -0,0 +1,208 @@
<template>
<el-dialog
v-dialogDrag
class="foshan-01__systerm view-train-id"
:title="$t('menu.menuDialog.trainIDDisplaySetting')"
:visible.sync="show"
width="420px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<div style="padding: 10px 20px; border: 1px double lightgray;">
<span class="base-label">{{ $t('menu.menuDialog.plantrainDisplayMode') }}</span>
<el-radio-group v-model="planMode">
<el-row>
<el-col :span="10">
<el-radio :label="1">{{ $t('menu.menuDialog.serviceNumber') }} + {{ $t('menu.menuDialog.tripNumber') }}</el-radio>
</el-col>
<el-col :span="10" :offset="4">
<el-radio :label="2">{{ $t('menu.menuDialog.serviceNumber') }} + {{ $t('menu.menuDialog.groupNumber') }}</el-radio>
</el-col>
</el-row>
<el-row class="elrow">
<el-col :span="10">
<el-radio :label="3">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.tripNumber') }}</el-radio>
</el-col>
<el-col :span="10" :offset="4">
<el-radio :label="4">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.groupNumber') }}</el-radio>
</el-col>
</el-row>
<el-row class="elrow">
<el-col :span="10">
<el-radio :label="5">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.serviceNumber') }} + {{ $t('menu.menuDialog.tripNumber') }}</el-radio>
</el-col>
<el-col :span="10" :offset="4">
<el-radio :label="6">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.serviceNumber') }} + {{ $t('menu.menuDialog.groupNumber') }}</el-radio>
</el-col>
</el-row>
</el-radio-group>
</div>
<div style="padding: 10px 20px; border: 1px double lightgray; margin: 20px 0px;">
<span class="base-label">{{ $t('menu.menuDialog.headCodeStationDisplayMode') }}</span>
<el-radio-group v-model="headMode">
<el-row>
<el-col :span="10">
<el-radio :label="3">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.tripNumber') }}</el-radio>
</el-col>
<el-col :span="6" :offset="4">
<el-radio :label="4">{{ $t('menu.menuDialog.targetNumber') }} + {{ $t('menu.menuDialog.groupNumber') }}</el-radio>
</el-col>
</el-row>
</el-radio-group>
</div>
<div style="padding: 10px 20px; border: 1px double lightgray;">
<span class="base-label">{{ $t('menu.menuDialog.fontSize') }}</span>
<el-row>
<el-col :span="10">
<el-input v-model="fontSize" size="small" min="16" max="99" />
</el-col>
<el-col :span="10" :offset="1">
<span style="height:32px; line-height:32px;">{{ $t('menu.menuDialog.range') }}</span>
</el-col>
</el-row>
</div>
<el-row class="button-group">
<el-col :span="6" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">{{ $t('menu.menuDialog.confirm') }}</el-button>
</el-col>
<el-col :span="4" :offset="8">
<el-button :id="domIdCancel" @click="cancel">{{ $t('menu.menuDialog.cancel') }}</el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// import deviceType from '@/jmap/constant/deviceType';
import NoticeInfo from '../dialog/childDialog/childDialog/noticeInfo';
export default {
name: 'ViewTrainId',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operate: null,
operation: '',
planMode: 5,
headMode: 5,
fontSize: 19
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.close.confirm.domId : '';
}
},
mounted() {
this.$nextTick(() => {
this.setTrainDispaly();
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate) {
this.operate = operate || {};
this.operation = operate.operation;
//
if (!this.dialogShow) {
this.loading = false;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
cancel() {
const operate = {
type: this.operate.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
});
},
commit() {
const operate = {
over: true,
type: this.operate.type,
operation: OperationEvent.Command.close.confirm.operation,
val: [this.planMode, this.headMode, this.fontSize].join('::')
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.setTrainDispaly();
this.doClose();
}
}).catch(() => {
this.loading = false;
});
},
setTrainDispaly() {
const updatlist = [];
const trainList = this.$store.getters['training/viewTrainList']();
if (trainList && trainList.length > 0) {
const nameFormat = this.trainNameFormatBy(this.planMode);
const nameFontSize = this.fontSize;
trainList.forEach(elem => {
updatlist.push(Object.assign(this.$jlmap.getDeviceByCode(elem.code), {nameFormat, nameFontSize }));
});
this.$store.dispatch('map/updateMapDevices', updatlist);
}
},
trainNameFormatBy(mode) {
switch (mode.toString()) {
case '1': return 'serviceNumber:tripNumber'; // +
case '2': return 'serviceNumber:groupNumber'; // +
case '3': return 'targetCode:tripNumber'; // +
case '4': return 'targetCode:groupNumber'; // +
case '5': return 'targetCode:serviceNumber:tripNumber'; // ++
case '6': return 'targetCode:serviceNumber:groupNumber'; // ++
}
return ''; //
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ {
.el-dialog .el-radio__label{
width: 150px ;
white-space: pre-wrap ;
display: inline-block ;
}
.el-radio__input{
vertical-align: top;
}
}
.elrow{
margin-top:4px;
}
</style>

View File

@ -21,7 +21,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="canSetting" :label="this.$t('global.status')" :width="100"> <el-table-column prop="canSetting" :label="this.$t('global.status')" :width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.canSetting">{{ $t('menu.allowSelection') }}</span> <span v-if="scope.row.settable">{{ $t('menu.allowSelection') }}</span>
<span v-else>{{ $t('menu.notAllowSelection') }}</span> <span v-else>{{ $t('menu.notAllowSelection') }}</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -129,16 +129,14 @@ export const menuOperate = {
}, },
Switch:{ Switch:{
lock:{ lock:{
// 道岔单锁(联锁) // 道岔单锁
operation: OperationEvent.Switch.lock.menu.operation, operation: OperationEvent.Switch.lock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK_CHAIN
}, },
unlock:{ unlock:{
// 道岔解锁(联锁) // 道岔解锁
operation: OperationEvent.Switch.unlock.menu.operation, operation: OperationEvent.Switch.unlock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK_CHAIN
}, },
block:{ block:{
// 道岔封锁 // 道岔封锁
@ -150,15 +148,10 @@ export const menuOperate = {
operation: OperationEvent.Switch.unblock.menu.operation, operation: OperationEvent.Switch.unblock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK
}, },
npChain:{ turnout:{
// 道岔定操(联动) // 道岔转动
operation: OperationEvent.Switch.locate.menu.operation, operation: OperationEvent.Switch.turnout.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_TURN
},
rpChain:{
// 道岔反操(联动)
operation: OperationEvent.Switch.reverse.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN
}, },
split:{ split:{
// 区段切除 // 区段切除

View File

@ -129,16 +129,14 @@ export const menuOperate = {
}, },
Switch:{ Switch:{
lock:{ lock:{
// 道岔单锁(联锁) // 道岔单锁
operation: OperationEvent.Switch.lock.menu.operation, operation: OperationEvent.Switch.lock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK_CHAIN
}, },
unlock:{ unlock:{
// 道岔解锁(联锁) // 道岔解锁
operation: OperationEvent.Switch.unlock.menu.operation, operation: OperationEvent.Switch.unlock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK_CHAIN
}, },
block:{ block:{
// 道岔封锁 // 道岔封锁
@ -150,15 +148,15 @@ export const menuOperate = {
operation: OperationEvent.Switch.unblock.menu.operation, operation: OperationEvent.Switch.unblock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK
}, },
npChain:{ locate:{
// 道岔定操(联动) // 道岔定操
operation: OperationEvent.Switch.locate.menu.operation, operation: OperationEvent.Switch.locate.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
rpChain:{ reverse:{
// 道岔反操(联动) // 道岔反操
operation: OperationEvent.Switch.reverse.menu.operation, operation: OperationEvent.Switch.reverse.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
split:{ split:{
// 区段切除 // 区段切除

View File

@ -199,11 +199,11 @@ export default {
}, },
// //
locate() { locate() {
this.sendCommand(menuOperate.Switch.npChain); this.sendCommand(menuOperate.Switch.locate);
}, },
// //
reverse() { reverse() {
this.sendCommand(menuOperate.Switch.rpChain); this.sendCommand(menuOperate.Switch.reverse);
}, },
// //
split() { split() {

View File

@ -180,6 +180,7 @@ export default {
val: this.messageText2 val: this.messageText2
}; };
this.message = '';
if (this.operation == OperationEvent.Switch.unlock.menu.operation) { if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
operate.operation = OperationEvent.Switch.unlock.choose.operation; operate.operation = OperationEvent.Switch.unlock.choose.operation;
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) { } else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
@ -221,13 +222,15 @@ export default {
}, },
confirm2() { confirm2() {
if (this.messageText2 == this.switchCode) { if (this.messageText2 == this.switchCode) {
this.message = '';
const operate = { const operate = {
over: true,
operation: '', operation: '',
cmdType: '' cmdType: ''
}; };
if (this.operation == OperationEvent.Switch.unlock.menu.operation) { if (this.operation == OperationEvent.Switch.unlock.menu.operation) {
operate.operation = OperationEvent.Switch.unlock.confirm2.operation; operate.operation = OperationEvent.Switch.unlock.confirm2.operation;
operate.cmdType = CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK_CHAIN; operate.cmdType = CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK;
} else if (this.operation == OperationEvent.Switch.unblock.menu.operation) { } else if (this.operation == OperationEvent.Switch.unblock.menu.operation) {
operate.operation = OperationEvent.Switch.unblock.confirm2.operation; operate.operation = OperationEvent.Switch.unblock.confirm2.operation;
operate.cmdType = CMD.Switch.CMD_SWITCH_UNBLOCK; operate.cmdType = CMD.Switch.CMD_SWITCH_UNBLOCK;
@ -239,17 +242,17 @@ export default {
this.messageText2 = '*****'; this.messageText2 = '*****';
this.disabledConfirm2 = true; this.disabledConfirm2 = true;
this.timeCountConfirm = -1; this.timeCountConfirm = -1;
this.message = '操作成功';
} }
}).catch(() => { }).catch(() => {
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow();
}); });
} else { } else {
this.message = '选择道岔错误'; this.message = '选择正确的道岔';
} }
}, },
commit() { commit() {
const operate = { const operate = {
over: true,
operation: '' operation: ''
}; };
@ -348,6 +351,7 @@ export default {
width: 100%; width: 100%;
border: 2px solid #E9E9E9; border: 2px solid #E9E9E9;
box-shadow: 2px 2px #959595 inset; box-shadow: 2px 2px #959595 inset;
padding:5px;
} }
} }
} }

View File

@ -49,22 +49,22 @@ export default {
{ {
label: '定操', label: '定操',
handler: this.locate, handler: this.locate,
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
{ {
label: '反操', label: '反操',
handler: this.reverse, handler: this.reverse,
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
{ {
label: '道岔单锁', label: '道岔单锁',
handler: this.lock, handler: this.lock,
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK_CHAIN cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK
}, },
{ {
label: '道岔单解', label: '道岔单解',
handler: this.unlock, handler: this.unlock,
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK_CHAIN cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
}, },
{ {
label: '道岔封锁', label: '道岔封锁',
@ -81,12 +81,12 @@ export default {
{ {
label: '定操', label: '定操',
handler: this.locate, handler: this.locate,
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
{ {
label: '反操', label: '反操',
handler: this.reverse, handler: this.reverse,
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
{ {
type: 'separator' type: 'separator'
@ -185,7 +185,7 @@ export default {
}, },
// //
locate() { locate() {
commitOperate(menuOperate.Switch.npChain, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Switch.locate, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) { if (valid) {
this.$refs.switchControl.doShow(operate, this.selected); this.$refs.switchControl.doShow(operate, this.selected);
} }
@ -193,7 +193,7 @@ export default {
}, },
// //
reverse() { reverse() {
commitOperate(menuOperate.Switch.rpChain, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Switch.reverse, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) { if (valid) {
this.$refs.switchControl.doShow(operate, this.selected); this.$refs.switchControl.doShow(operate, this.selected);
} }

View File

@ -131,14 +131,12 @@ export const menuOperate = {
lock:{ lock:{
// 道岔单锁(联锁) // 道岔单锁(联锁)
operation: OperationEvent.Switch.lock.menu.operation, operation: OperationEvent.Switch.lock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK_CHAIN
}, },
unlock:{ unlock:{
// 道岔解锁(联锁) // 道岔解锁(联锁)
operation: OperationEvent.Switch.unlock.menu.operation, operation: OperationEvent.Switch.unlock.menu.operation,
// cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK_CHAIN
}, },
block:{ block:{
// 道岔封锁 // 道岔封锁
@ -150,15 +148,15 @@ export const menuOperate = {
operation: OperationEvent.Switch.unblock.menu.operation, operation: OperationEvent.Switch.unblock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK
}, },
npChain:{ locate:{
// 道岔定操(联动) // 道岔定操(联动)
operation: OperationEvent.Switch.locate.menu.operation, operation: OperationEvent.Switch.locate.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
rpChain:{ reverse:{
// 道岔反操(联动) // 道岔反操(联动)
operation: OperationEvent.Switch.reverse.menu.operation, operation: OperationEvent.Switch.reverse.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
split:{ split:{
// 区段切除 // 区段切除

View File

@ -358,7 +358,7 @@ export default {
{ {
maxDuration: 15, maxDuration: 15,
minDuration: 8, minDuration: 8,
operateType: 'Switch_Turn_NP_Chain', operateType: 'Switch_Normal_Position',
skinCode: '06', skinCode: '06',
trainingName: '定操({7})', trainingName: '定操({7})',
trainingRemark: '定操({7})', trainingRemark: '定操({7})',
@ -372,7 +372,7 @@ export default {
{ {
maxDuration: 15, maxDuration: 15,
minDuration: 8, minDuration: 8,
operateType: 'Switch_Turn_RP_Chain', // 0313 新增定位字典 operateType: 'Switch_Reverse_Position', // 0313 新增定位字典
skinCode: '06', skinCode: '06',
trainingName: '反操({7})', trainingName: '反操({7})',
trainingRemark: '反操({7})', trainingRemark: '反操({7})',

View File

@ -218,7 +218,7 @@ export default {
const operate = { const operate = {
over: true, over: true,
operation: OperationEvent.Signal.cancelTrainRoute.confirm.operation, operation: OperationEvent.Signal.cancelTrainRoute.confirm.operation,
cmdType: CMD.Signal.CMD_SIGNAL_FORCE_CANCEL_ROUTE cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
}; };
this.loading = true; this.loading = true;

View File

@ -21,7 +21,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="canSetting" :label="this.$t('global.status')" :width="100"> <el-table-column prop="canSetting" :label="this.$t('global.status')" :width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.canSetting">{{ $t('menu.allowSelection') }}</span> <span v-if="scope.row.settable">{{ $t('menu.allowSelection') }}</span>
<span v-else>{{ $t('menu.notAllowSelection') }}</span> <span v-else>{{ $t('menu.notAllowSelection') }}</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -127,7 +127,7 @@ export default {
}, },
// //
turnout() { turnout() {
this.sendCommand(menuOperate.Switch.switchTurnout); this.sendCommand(menuOperate.Switch.turnout);
}, },
// //
split() { split() {
@ -144,10 +144,10 @@ export default {
if (valid) { if (valid) {
this.doClose(); this.doClose();
} }
}).catch(() => { }).catch((error) => {
this.loading = false; this.loading = false;
this.doClose(); this.doClose();
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow(error.message);
}); });
}, },

View File

@ -59,7 +59,7 @@ export default {
{ {
label: '进路取消', label: '进路取消',
handler: this.cancelTrainRoute, handler: this.cancelTrainRoute,
cmdType: CMD.Signal.CMD_SIGNAL_FORCE_CANCEL_ROUTE cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
}, },
{ {
label: '信号封锁', label: '信号封锁',
@ -131,7 +131,7 @@ export default {
{ {
label: '进路取消', label: '进路取消',
handler: this.cancelTrainRoute, handler: this.cancelTrainRoute,
cmdType: CMD.Signal.CMD_SIGNAL_FORCE_CANCEL_ROUTE cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
}, },
{ {
label: '信号封锁', label: '信号封锁',

View File

@ -263,7 +263,7 @@ export default {
}, },
// //
switchTurnout() { switchTurnout() {
commitOperate(menuOperate.Switch.switchTurnout, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Switch.turnout, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) { if (valid) {
this.$refs.switchControl.doShow(operate, this.selected); this.$refs.switchControl.doShow(operate, this.selected);
} }

View File

@ -60,7 +60,7 @@ export const menuOperate = {
cancelTrainRoute:{ cancelTrainRoute:{
// 取消进路 // 取消进路
operation: OperationEvent.Signal.cancelTrainRoute.menu.operation, operation: OperationEvent.Signal.cancelTrainRoute.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_FORCE_CANCEL_ROUTE cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
}, },
lock:{ lock:{
// 信号封锁 // 信号封锁
@ -158,7 +158,7 @@ export const menuOperate = {
operation: OperationEvent.Switch.unblock.menu.operation, operation: OperationEvent.Switch.unblock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK
}, },
switchTurnout: { turnout: {
// 道岔转动 // 道岔转动
operation: OperationEvent.Switch.turnout.menu.operation, operation: OperationEvent.Switch.turnout.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_TURN cmdType: CMD.Switch.CMD_SWITCH_TURN
@ -278,7 +278,7 @@ export const menuOperate = {
// 设置折返策略 // 设置折返策略
operation: OperationEvent.Station.setBackStrategy.menu.operation, operation: OperationEvent.Station.setBackStrategy.menu.operation,
cmdType: CMD.Station.CMD_STATION_SET_TURN_BACK_STRATEGY cmdType: CMD.Station.CMD_STATION_SET_TURN_BACK_STRATEGY
}, }
}, },
TrainWindow: { TrainWindow: {
editTrainId: { editTrainId: {

View File

@ -52,12 +52,12 @@ export default {
{ {
label: '定操', label: '定操',
handler: this.locate, handler: this.locate,
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
{ {
label: '反操', label: '反操',
handler: this.reverse, handler: this.reverse,
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
{ {
label: '道岔单锁', label: '道岔单锁',
@ -84,12 +84,12 @@ export default {
{ {
label: '道岔定位', label: '道岔定位',
handler: this.locate, handler: this.locate,
cmdType: CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
{ {
label: '道岔反位', label: '道岔反位',
handler: this.reverse, handler: this.reverse,
cmdType: CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
{ {
label: '道岔单锁', label: '道岔单锁',
@ -256,7 +256,7 @@ export default {
}, },
// //
locate() { locate() {
commitOperate(menuOperate.Switch.npChain, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Switch.locate, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/pushRequestList', { this.$store.dispatch('menuOperation/pushRequestList', {
device: this.selected, device: this.selected,
@ -269,7 +269,7 @@ export default {
}, },
// //
reverse() { reverse() {
commitOperate(menuOperate.Switch.rpChain, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{ commitOperate(menuOperate.Switch.reverse, {switchCode:this.selected.code}, 0).then(({valid, operate})=>{
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/pushRequestList', { this.$store.dispatch('menuOperation/pushRequestList', {
device: this.selected, device: this.selected,

View File

@ -144,15 +144,15 @@ export const menuOperate = {
operation: OperationEvent.Switch.unblock.menu.operation, operation: OperationEvent.Switch.unblock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK
}, },
npChain:{ locate:{
// 道岔定操(联动) // 道岔定操
operation: OperationEvent.Switch.locate.menu.operation, operation: OperationEvent.Switch.locate.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_NP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_NORMAL_POSITION
}, },
rpChain:{ reverse:{
// 道岔反操(联动) // 道岔反操
operation: OperationEvent.Switch.reverse.menu.operation, operation: OperationEvent.Switch.reverse.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_TURN_RP_CHAIN cmdType:CMD.Switch.CMD_SWITCH_REVERSE_POSITION
}, },
split:{ split:{
// 区段切除 // 区段切除

View File

@ -358,7 +358,7 @@ export default {
{ {
maxDuration: 15, maxDuration: 15,
minDuration: 8, minDuration: 8,
operateType: 'Switch_Turn_NP_Chain', operateType: 'Switch_Normal_Position',
skinCode: '06', skinCode: '06',
trainingName: '定操({7})', trainingName: '定操({7})',
trainingRemark: '定操({7})', trainingRemark: '定操({7})',
@ -372,7 +372,7 @@ export default {
{ {
maxDuration: 15, maxDuration: 15,
minDuration: 8, minDuration: 8,
operateType: 'Switch_Turn_RP_Chain', // 0313 新增定位字典 operateType: 'Switch_Reverse_Position', // 0313 新增定位字典
skinCode: '06', skinCode: '06',
trainingName: '反操({7})', trainingName: '反操({7})',
trainingRemark: '反操({7})', trainingRemark: '反操({7})',

View File

@ -25,8 +25,10 @@ function isDesignPage(toRoutePath) {
return designPageRegex.some(item => item.test(toRoutePath) ); return designPageRegex.some(item => item.test(toRoutePath) );
} }
for (const val in PermissionParam) { for (const val in PermissionParam) {
if (PermissionParam[val].whitePage) {
whiteList.push(PermissionParam[val].whitePage); whiteList.push(PermissionParam[val].whitePage);
} }
}
const loginPage = whiteList[0]; const loginPage = whiteList[0];
const loginDesignPage = whiteList[1]; const loginDesignPage = whiteList[1];

View File

@ -8,10 +8,10 @@ export default {
CMD_SWITCH_SINGLE_LOCK: {value:'Switch_Single_Lock', label: '单锁'}, CMD_SWITCH_SINGLE_LOCK: {value:'Switch_Single_Lock', label: '单锁'},
/** 单解 */ /** 单解 */
CMD_SWITCH_SINGLE_UNLOCK: {value:'Switch_Single_Unlock', label: '单解'}, CMD_SWITCH_SINGLE_UNLOCK: {value:'Switch_Single_Unlock', label: '单解'},
/** 单锁(联动) */ // /** 单锁(联动) */
CMD_SWITCH_SINGLE_LOCK_CHAIN: {value:'Switch_Single_Lock_Chain', label: '单锁(联动)'}, // CMD_SWITCH_SINGLE_LOCK_CHAIN: {value:'Switch_Single_Lock_Chain', label: '单锁(联动)'},
/** 单解(联动) */ // /** 单解(联动) */
CMD_SWITCH_SINGLE_UNLOCK_CHAIN: {value:'Switch_Single_Unlock_Chain', label: '单解(联动)'}, // CMD_SWITCH_SINGLE_UNLOCK_CHAIN: {value:'Switch_Single_Unlock_Chain', label: '单解(联动)'},
/** 封锁 */ /** 封锁 */
CMD_SWITCH_BLOCK: {value:'Switch_Block', label: '封锁'}, CMD_SWITCH_BLOCK: {value:'Switch_Block', label: '封锁'},
/** 解封 */ /** 解封 */
@ -38,10 +38,10 @@ export default {
CMD_SWITCH_NORMAL_POSITION:{value:'Switch_Normal_Position', label:'单操到定位'}, CMD_SWITCH_NORMAL_POSITION:{value:'Switch_Normal_Position', label:'单操到定位'},
/** 反位(反操) */ /** 反位(反操) */
CMD_SWITCH_REVERSE_POSITION:{value:'Switch_Reverse_Position', label:'单操到反位'}, CMD_SWITCH_REVERSE_POSITION:{value:'Switch_Reverse_Position', label:'单操到反位'},
/** 道岔定操(联动) */ // /** 道岔定操(联动) */
CMD_SWITCH_TURN_NP_CHAIN: {value: 'Switch_Turn_NP_Chain', label: '道岔定操(联动)'}, // CMD_SWITCH_TURN_NP_CHAIN: {value: 'Switch_Turn_NP_Chain', label: '道岔定操(联动)'},
/** 道岔反操(联动)*/ // /** 道岔反操(联动)*/
CMD_SWITCH_TURN_RP_CHAIN: {value: 'Switch_Turn_RP_Chain', label: '道岔反操(联动)'}, // CMD_SWITCH_TURN_RP_CHAIN: {value: 'Switch_Turn_RP_Chain', label: '道岔反操(联动)'},
/** 道岔区段封锁 */ /** 道岔区段封锁 */
CMD_SWITCH_SECTION_BLOCK: {value: 'Switch_Section_Block', label: '道岔区段封锁'}, CMD_SWITCH_SECTION_BLOCK: {value: 'Switch_Section_Block', label: '道岔区段封锁'},
/** 道岔区段解封 */ /** 道岔区段解封 */
@ -78,8 +78,8 @@ export default {
CMD_SIGNAL_SET_ROUTE: {value:'Signal_Set_Route', label: '排列进路'}, CMD_SIGNAL_SET_ROUTE: {value:'Signal_Set_Route', label: '排列进路'},
/** 取消进路 */ /** 取消进路 */
CMD_SIGNAL_CANCEL_ROUTE: {value:'Signal_Cancel_Route', label: '取消进路'}, CMD_SIGNAL_CANCEL_ROUTE: {value:'Signal_Cancel_Route', label: '取消进路'},
/** 强制取消进路 */ // /** 强制取消进路 */
CMD_SIGNAL_FORCE_CANCEL_ROUTE: {value: 'Signal_Force_Cancel_Route', label: '强制取消进路'}, // CMD_SIGNAL_FORCE_CANCEL_ROUTE: {value: 'Signal_Force_Cancel_Route', label: '强制取消进路'},
/** 人解进路 */ /** 人解进路 */
CMD_SIGNAL_HUMAN_RELEASE_ROUTE: {value:'Signal_Human_Release_Route', label: '人解进路'}, CMD_SIGNAL_HUMAN_RELEASE_ROUTE: {value:'Signal_Human_Release_Route', label: '人解进路'},
/** 信号关灯 */ /** 信号关灯 */

View File

@ -165,7 +165,6 @@ const iscs = {
commit('iscsRender', models); commit('iscsRender', models);
resolve(models); resolve(models);
}); });
}, },
setUpdateDeviceData: ({ commit }, models) => { setUpdateDeviceData: ({ commit }, models) => {

View File

@ -165,7 +165,7 @@ function handleSimulationInfo(state, data) {
self: isSelf, self: isSelf,
message: data.message, message: data.message,
voice: data.isAudio, voice: data.isAudio,
src: data.isAudio ? `/jlcloud/audio/${data.audioPath}` : '', src: data.isAudio ? `/audio/${data.audioPath}` : '',
member:data.member, member:data.member,
memberOnline:data.member.online, memberOnline:data.member.online,
chatTime: data.chatTime, chatTime: data.chatTime,

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="control-bas-box"> <div class="control-bas-box">
<div class="title-name">{{ $route.query.stationName }}大系统模式表</div> <div class="title-name">{{ $route.query.stationName + modeName }}</div>
<div class="control-bas"> <div class="control-bas">
<el-table :data="tableData" :header-row-style="tableTitleStyle" :cell-style="rowStyle" :span-method="objectSpanMethod" style="float: left;"> <el-table v-if="mode==='bigSystem'" ref="table1" :data="tableData" :header-row-style="tableTitleStyle" :cell-style="rowStyle" :span-method="objectSpanMethod" style="float: left;">
<el-table-column label="日期" width="300"> <el-table-column label="日期" width="300">
<template slot="header"> <template slot="header">
<div class="title-0">全年运行工况</div> <div class="title-0">全年运行工况</div>
@ -17,10 +17,10 @@
<div>运行</div> <div>运行</div>
</div> </div>
<div class="right"> <div class="right">
<div class="button-box" @click="SmallAirConditioning">小新风空调</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(0)">小新风空调</div>
<div class="button-box">全新风空调</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(1)">全新风空调</div>
<div class="button-box">非空调季节</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(2)">非空调季节</div>
<div class="button-box">冬季模式</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(3)">冬季模式</div>
</div> </div>
</div> </div>
<div v-if="scope.$index == 4" class="table-4-top"> <div v-if="scope.$index == 4" class="table-4-top">
@ -29,11 +29,11 @@
<div>模式</div> <div>模式</div>
</div> </div>
<div class="right"> <div class="right">
<div class="button-box">站厅公共区火灾</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">站厅公共区火灾</div>
<div class="button-box">站台公共区火灾</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">站台公共区火灾</div>
</div> </div>
<div class="button-box">非火灾工况突发事件</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(6)">非火灾工况突发事件</div>
<div class="button-box">全修模式</div> <div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(7)">全停模式</div>
</div> </div>
<div v-if="scope.$index == 8" class="table-8-top">设备实际运行状态</div> <div v-if="scope.$index == 8" class="table-8-top">设备实际运行状态</div>
<div v-if="scope.$index == 9" class="table-9-top">状态比较</div> <div v-if="scope.$index == 9" class="table-9-top">状态比较</div>
@ -75,27 +75,205 @@
</el-table-column> </el-table-column>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-table v-else-if="mode === 'smallSystem1'" ref="table2" :data="tableData1" :header-row-style="tableTitleStyle" :cell-style="rowStyle" :span-method="objectSpanMethod1" style="float: left;">
<el-table-column type="index" width="20" class-name="index-column">
<template slot="header">
<div style="width: 100%;height: 26px;background: #FFF" />
<div class="index-column-cell">1</div>
<div class="index-column-cell">2</div>
<div class="index-column-cell">3</div>
</template>
<template slot-scope="scope">
<div class="index-column-cell">{{ scope.$index + 4 }}</div>
</template>
</el-table-column>
<el-table-column width="300">
<template slot="header">
<div style="font-size: 0;text-align: center;">
<div class="index-row-cell">1</div>
<div class="index-row-cell">2</div>
<div class="index-row-cell">3</div>
</div> </div>
<el-dialog title="" :visible.sync="dialogVisible" width="600px" class="dialog-div"> <div class="title-0">全年运行工况</div>
<div class="title-0">运行模式号</div>
<div class="title-0">模式状态</div>
<div class="title-0">火灾指示灯:</div>
</template>
<template slot-scope="scope">
<div v-if="scope.$index == 0" class="table-0-top">
<div class="left" style="width: 100px;">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="right" style="width: 195px;">
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(0)">小新风空调</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(1)">小新风空调</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(2)">非空调工况</div>
<div class="button-box" style="width: 100%;height: 27px;line-height: 27px;" @click="showModeDialog(3)">35KV开关柜室事故排风</div>
</div>
</div>
<div v-if="scope.$index == 4" style="display: flex;">
<div style="width: 100px;display: inline-block;margin: auto;">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div style="width: 100px;display: inline-block;">
<div style="height: 56px; border: 1px solid #FFF;">控制室</div>
<div style="height: 56px; border: 1px solid #FFF;">
<div>35KV</div>
<div>开关柜室</div>
</div>
<div style="height: 56px; border: 1px solid #FFF;">
<div>整流变频</div>
<div>压器室1</div>
</div>
<div style="height: 56px; border: 1px solid #FFF;">
<div>整流变频</div>
<div>压器室2</div>
</div>
<div style="height: 56px; border: 1px solid #FFF;">
<div>直流开</div>
<div>关柜室</div>
</div>
<div style="height: 56px; border: 1px solid #FFF;">
<div>0.4KV</div>
<div>低压柜室</div>
</div>
</div>
<div style="width: 100px;display: inline-block;">
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">排气</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">排气</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">排气</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">排气</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(5)">排气</div>
<div class="button-box" style="width: 100%;height: 28px;line-height: 28px;" @click="showModeDialog(4)">灭火</div>
<div class="button-box" style="width: 100%;height: 27px;line-height: 27px;" @click="showModeDialog(5)">排气</div>
</div>
</div>
<div v-if="scope.$index === 16" style="height: 28px;line-height: 28px;">设备实际运行状态</div>
<div v-if="scope.$index === 17">状态比较</div>
</template>
</el-table-column>
<el-table-column :key="11" prop="code" label="模式编号" width="90">
<template slot="header">
<div style="font-size: 0;text-align: center;height: 100%;">
<div class="index-row-cell" style="width: 90px;margin-left: -1px;">4</div>
<div style="font-size: 14px;height: 80px;line-height: 80px;">模式编号</div>
</div>
</template>
</el-table-column>
<el-table-column prop="smallSystem1">
<template slot="header">
<div style="font-size: 0;text-align: center;height: 100%;">
<div class="index-row-cell" style="width: 90px;">5</div>
<div class="index-row-cell" style="width: 90px;">6</div>
<div class="index-row-cell" style="width: 90px;">7</div>
<div class="index-row-cell" style="width: 90px;">8</div>
<div class="index-row-cell" style="width: 90px;">9</div>
<div class="index-row-cell" style="width: 90px;">10</div>
<div class="index-row-cell" style="width: 90px;">11</div>
<div class="index-row-cell" style="width: 89px;">12</div>
<div style="font-size: 14px;">小系统1</div>
</div>
</template>
<el-table-column prop="airConditioner" label="空调机">
<el-table-column prop="ahu1" width="90" label="AHU-B101" />
</el-table-column>
<el-table-column prop="exhaustFan" label="回排风机">
<el-table-column prop="raf1" width="90" label="RAF-B101" />
</el-table-column>
<el-table-column prop="flowControl" label="电动风量调节阀">
<el-table-column prop="md1" width="90" label="MD-B101" />
<el-table-column prop="md2" width="90" label="MD-B102" />
<el-table-column prop="md3" width="90" label="MD-B103" />
<el-table-column prop="md4" width="90" label="MD-B104" />
<el-table-column prop="md5" width="90" label="MD-B105" />
<el-table-column prop="md6" width="90" label="MD-B106" />
</el-table-column>
</el-table-column>
<el-table-column prop="smallSystem2">
<template slot="header">
<div style="font-size: 0;text-align: center;height: 100%;">
<div class="index-row-cell" style="width: 90px;">13</div>
<div class="index-row-cell" style="width: 99px;">14</div>
<div style="font-size: 14px;">小系统2</div>
</div>
</template>
<el-table-column prop="exhaustFan" label="排风机">
<el-table-column prop="eaf" width="90" label="EAF-B201" />
</el-table-column>
<el-table-column prop="flowControl" label="电动风量调节阀">
<el-table-column prop="md7" width="100" label="MD-B201" />
</el-table-column>
</el-table-column>
<el-table-column prop="smallSystem4">
<template slot="header">
<div style="font-size: 0;text-align: center;height: 100%;">
<div class="index-row-cell" style="width: 90px;">15</div>
<div class="index-row-cell" style="width: 90px;">16</div>
<div class="index-row-cell" style="width: 90px;">17</div>
<div class="index-row-cell" style="width: 90px;">18</div>
<div class="index-row-cell" style="width: 90px;">19</div>
<div class="index-row-cell" style="width: 90px;">20</div>
<div class="index-row-cell" style="width: 89px;">21</div>
<div style="font-size: 14px;">小系统4</div>
</div>
</template>
<el-table-column prop="airConditioner" label="空调机">
<el-table-column prop="ahu2" width="90" label="AHU-B401" />
</el-table-column>
<el-table-column prop="exhaustFan" label="回排风机">
<el-table-column prop="raf2" width="90" label="RAF-B401" />
</el-table-column>
<el-table-column prop="flowControl" label="电动风量调节阀">
<el-table-column prop="md8" width="90" label="MD-B401" />
<el-table-column prop="md9" width="90" label="MD-B402" />
<el-table-column prop="md10" width="90" label="MD-B403" />
<el-table-column prop="md11" width="90" label="MD-B404" />
<el-table-column prop="md12" width="90" label="MD-B405" />
</el-table-column>
</el-table-column>
</el-table>
</div>
<div style="width: 100%;display:flex;justify-content:space-around;">
<div class="button-box" style="padding: 5px;" @click="switchedSystems('bigSystem')">至大系统模式表</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('smallSystem1')">至小系统模式表()</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('smallSystem2')">至小系统模式表()</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('ventilation')">至隧道通风系模式表</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('ventilation1')">至隧道通风系模式表1</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('ventilation2')">至隧道通风系模式表2</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('ventilation3')">至隧道通风系模式表3</div>
<div class="button-box" style="padding: 5px;" @click="switchedSystems('lightingSystem')">至照明模式表</div>
</div>
<el-dialog title="" :visible.sync="dialogVisible" width="600px" class="iscs_device_control_dialog">
<div> <div>
<div class="dialog-box"> <div class="dialog-box">
<div class="title">模式类别</div> <div class="title">模式类别</div>
<div class="content"> <div class="content">
<div class="stand-title">会展中心站</div> <div class="stand-title">{{ modeModel.stationName }}</div>
<div class="stand-control">系统模式控制</div> <div class="stand-control">{{ modeModel.controlName }}</div>
</div> </div>
</div> </div>
<div class="dialog-box"> <div class="dialog-box">
<div class="title">启动模式号</div> <div class="title">启动模式号</div>
<div class="content"> <div class="content">
<div class="model">101</div> <div class="model">{{ modeModel.modeCode }}</div>
</div> </div>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <div class="dialog-footer" style="margin-top: 20px; text-align: center;">
<el-button @click="dialogVisible = false"> </el-button> <el-button style="margin-right: 13px;" @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="dialogVisible = false"> </el-button> <el-button type="primary" @click="dialogVisible = false"> </el-button>
</span> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@ -103,7 +281,13 @@
export default { export default {
data() { data() {
return { return {
mode:'bigSystem',
dialogVisible: false, dialogVisible: false,
modeModel: {
stationName: this.$route.query.stationName,
controlName: '系统模式控制',
modeCode: ''
},
tableTitleStyle: {'text-align': 'center', 'height': '28px', 'padding': '0', 'background': '#45607B'}, tableTitleStyle: {'text-align': 'center', 'height': '28px', 'padding': '0', 'background': '#45607B'},
rowStyle: {'text-align': 'center', 'height': '28px', 'padding': '0', 'background': '#45607B' }, rowStyle: {'text-align': 'center', 'height': '28px', 'padding': '0', 'background': '#45607B' },
tableData: [{ tableData: [{
@ -196,9 +380,58 @@ export default {
raf1: '打开', raf1: '打开',
raf2: '打开', raf2: '打开',
md1: '打开' md1: '打开'
}] }],
tableData1: [
{code: '301', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '302', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '303', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '304', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '305', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '306', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '307', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '308', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '309', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '310', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '311', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '312', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '313', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '314', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '315', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '316', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{code: '', ahu1: '打开', raf1: '打开', md1: '半开', md2: '半开', md3: '半开', md4: '打开', md5: '打开', md6: '关闭', eaf: '打开', md7: '打开', ahu2: '打开', raf2: '打开', md8: '打开', md9: '打开', md10: '打开', md11: '打开', md12: '打开'},
{}
]
}; };
}, },
computed: {
modeName() {
let name = '';
switch (this.mode) {
case 'bigSystem':
name = '大系统模式表';
break;
case 'smallSystem1':
name = '小系统模式表(一)';
break;
case 'ventilation':
name = '隧道通风系模式表';
break;
case 'ventilation1':
name = '隧道通风系模式表(一)';
break;
case 'ventilation2':
name = '隧道通风系模式表(二)';
break;
case 'ventilation3':
name = '隧道通风系模式表(三)';
break;
case 'lightingSystem':
name = '照明模式表';
break;
}
return name;
}
},
methods: { methods: {
objectSpanMethod({ row, column, rowIndex, columnIndex }) { objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) { // if (columnIndex === 0) { //
@ -228,9 +461,49 @@ export default {
} }
} }
}, },
SmallAirConditioning(item) { objectSpanMethod1( {row, column, rowIndex, columnIndex}) {
console.log(item); if (columnIndex === 1) {
if (rowIndex === 0) {
return {
rowspan: 4,
colspan: 1
};
} else if (rowIndex === 4) {
return {
rowspan: 12,
colspan: 1
};
} else if (rowIndex === 16 || rowIndex === 17) {
return {
rowspan: 1,
colspan: 2
};
} else {
return {
rowspan: 0,
colspan: 0
};
}
} else if (columnIndex === 2) {
if (rowIndex === 16 || rowIndex === 17) {
return {
rowspan: 0,
colspan: 0
};
} else {
return {
rowspan: 1,
colspan: 1
};
}
}
},
showModeDialog(index) {
this.modeModel.modeCode = this.tableData[index].code;
this.dialogVisible = true; this.dialogVisible = true;
},
switchedSystems(mode) {
this.mode = mode;
} }
} }
}; };
@ -275,10 +548,7 @@ export default {
} }
} }
.button-box{ .button-box{
width: 100%;
height: 28px;
text-align: center; text-align: center;
line-height: 28px;
background-color: #ccc; background-color: #ccc;
float: left; float: left;
font-size: 12px; font-size: 12px;
@ -307,6 +577,8 @@ export default {
float: left; float: left;
width: 90px; width: 90px;
text-align: left; text-align: left;
color:#6F49FE;
font-size: 14px;
} }
.content{ .content{
float: left; float: left;
@ -319,15 +591,21 @@ export default {
margin-right: 50px; margin-right: 50px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
color:#6F49FE;
font-size: 14px;
} }
.stand-control{ .stand-control{
float: left; float: left;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
color:#6F49FE;
font-size: 14px;
} }
.model{ .model{
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
color:#6F49FE;
font-size: 14px;
} }
} }
} }
@ -349,15 +627,39 @@ export default {
margin-top: 30px; margin-top: 30px;
color: #56E5DE; color: #56E5DE;
} }
.index-column-cell {
text-align:center;
width: 100%;
height: 28px;
border-top: 1px solid #203244;
border-left: 2px solid #A3A3A3;
border-bottom: 1px solid #203244;
border-right: 1px solid #203244;
}
.index-row-cell {
width: 99px;
height: 20px;
font-size: 14px;
line-height: 20px;
display: inline-block;
border-top: 2px solid #A3A3A3;
border-left: 1px solid #203244;
border-bottom: 2px solid #203244;
border-right: 1px solid #203244;
}
/deep/{ /deep/{
.el-table--border{ .el-table--border{
background: #45607B; background: #45607B;
width: 100%; width: 100%;
border: none; border: none;
} }
.index-column{
border: 0 !important;
}
.el-table th, .el-table tr{ .el-table th, .el-table tr{
background: #45607B; background: #45607B;
color: #fff; color: #fff;
padding: 0;
} }
.el-table::before{ .el-table::before{
background: #45607B; background: #45607B;
@ -370,7 +672,7 @@ export default {
text-align: center; text-align: center;
} }
.el-table--scrollable-x .el-table__body-wrapper{ .el-table--scrollable-x .el-table__body-wrapper{
height: 400px; /*height: 400px;*/
} }
.el-table .cell, .el-table .cell,
.el-table th div, .el-table th div,
@ -378,8 +680,72 @@ export default {
.el-table--border th:first-child .cell{ .el-table--border th:first-child .cell{
padding: 0; padding: 0;
} }
.dialog-div .el-dialog__body{ }
padding-bottom: 0px; </style>
} <style>
.iscs_device_control_dialog .el-dialog .el-dialog__header {
width: 100%;
height: 30px;
background-image: linear-gradient(#F0DBCE,#ECB85E, #F0DBCE);
}
.iscs_device_control_dialog .el-dialog .el-dialog__headerbtn{
position: absolute;
top: 5px;
right: 10px;
padding: 0;
background: 0 0;
outline: 0;
cursor: pointer;
font-size: 16px;
border: 1px solid #FFF;
width: 20px;
height: 18px;
}
.iscs_device_control_dialog .el-dialog .el-dialog__body {
padding: 30px 20px;
color: #606266;
font-size: 14px;
word-break: break-all;
background: #CDC6C0;
}
.iscs_device_control_dialog .el-dialog .el-button {
display: inline-block;
line-height: 1;
white-space: nowrap;
cursor: pointer;
background: #CACACA;
border-top: 1px solid #3D3B39;
border-left: 1px solid #3D3B39;
border-bottom: 1px solid #847B77;
border-right: 1px solid #847B77;
color: #000;
-webkit-appearance: none;
text-align: center;
-webkit-box-sizing: border-box;
box-sizing: border-box;
outline: 0;
margin: 0;
-webkit-transition: .1s;
transition: .1s;
padding: 0;
font-weight: 500;
font-size: 12px;
height: 30px;
width: 70px;
border-radius: 0;
position: relative;
}
.iscs_device_control_dialog .el-dialog .el-button :before {
content: '';
width: 70px;
height: 30px;
border-top: 1px solid #FFF;
border-left: 1px solid #FFF;
position: absolute;
top: -2px;
left: -2px;
}
.iscs_device_control_dialog .el-dialog .el-button:hover {
background-image: linear-gradient(#E2E4E5,#D5D6D8,#E2E4E5);
} }
</style> </style>

View File

@ -100,13 +100,20 @@ export default {
FireHydranAlarmButton: '点型火灾探测器', FireHydranAlarmButton: '点型火灾探测器',
GasFireControl:'气体灭火控制器', GasFireControl:'气体灭火控制器',
LightingGroup: '照明', LightingGroup: '照明',
Electrically: '',
VolumeControlDamper: '电动风阀', VolumeControlDamper: '电动风阀',
SmookExhaustFd: '排烟防火阀', SmookExhaustFd: '排烟防火阀',
Ventilator: '普通风机', Ventilator: '普通风机',
AirConditioner: '组合式空调机组', AirConditioner: '组合式空调机组',
FireDamper: '防火阀', FireDamper: '防火阀',
SmookProofFd: '防烟防火阀' SmookProofFd: '防烟防火阀',
CoolTower: '冷却塔',
Chiller: '冷水机组',
ElectricButterflyValve: '电动蝶阀',
BalancedElectric: '动态平衡电动调节阀',
FrozenPump: '冷冻泵、冷却泵',
TunnelFan: '隧道风机',
OrbitalVentilator: '排热风机',
Draught: '水泵'
}, },
modeMap: { modeMap: {
standFAS: '火灾报警', standFAS: '火灾报警',

View File

@ -3,7 +3,7 @@
v-dialogDrag v-dialogDrag
:visible.sync="dialogShow" :visible.sync="dialogShow"
class="graphic_element_dialog" class="graphic_element_dialog"
width="480px" :width="width"
:before-close="doClose" :before-close="doClose"
:z-index="2000" :z-index="2000"
:modal="false" :modal="false"
@ -18,12 +18,24 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<img style="height: 30px" :src="graphicEleMap[scope.row.graphicEle]"> <img style="height: 30px" :src="graphicEleMap[scope.row.graphicEle]">
<div class="shorthand">{{ scope.row.shorthand }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="deviceType" label="设备类型" /> <el-table-column prop="deviceType" label="设备类型" />
<el-table-column
v-if="isDoubleRow"
prop="graphicEle1"
label="图元"
>
<template slot-scope="scope">
<img style="height: 30px" :src="graphicEleMap[scope.row.graphicEle1]">
<div class="shorthand">{{ scope.row.shorthand1 }}</div>
</template>
</el-table-column>
<el-table-column v-if="isDoubleRow" prop="deviceType1" label="设备类型" />
</el-table> </el-table>
<div style="color: #0DC8DE;font-size: 14px;margin-top: 20px;"><span>:图元颜色含义</span></div> <div style="color: #0DC8DE;font-size: 14px;margin-top: 20px;"><span>:图元颜色含义</span></div>
<div style="color: #0DC8DE;font-size: 14px;margin-left: 20px;"><span>绿色:正常红色:报警</span></div> <div style="color: #0DC8DE;font-size: 14px;margin-left: 20px;"><span>{{ meaning }}</span></div>
</el-dialog> </el-dialog>
</template> </template>
@ -32,6 +44,19 @@ import ManualAlarm from '@/assets/iscs_icon/manual_alarm.png';
import FireHydrant from '@/assets/iscs_icon/fire_hydrant.png'; import FireHydrant from '@/assets/iscs_icon/fire_hydrant.png';
import SmokeDetector from '@/assets/iscs_icon/smoke_detector.png'; import SmokeDetector from '@/assets/iscs_icon/smoke_detector.png';
import GasFireControl from '@/assets/iscs_icon/gas_fire_control.png'; import GasFireControl from '@/assets/iscs_icon/gas_fire_control.png';
import AirConditioner from '@/assets/iscs_icon/air_conditioner.png';
import Ventilator from '@/assets/iscs_icon/ventilator.png';
import TunnelFan from '@/assets/iscs_icon/tunnel_fan.png';
import OrbitalVentilator from '@/assets/iscs_icon/orbital_ventilator.png';
import FireDamper from '@/assets/iscs_icon/fire_damper.png';
import SmookExhaustFd from '@/assets/iscs_icon/smook_exhaust_fd.png';
import VolumeControlDamper from '@/assets/iscs_icon/volume_control_damper.png';
import SmookProofFd from '@/assets/iscs_icon/smook_proof_fd.png';
import CoolTower from '@/assets/iscs_icon/cool_tower.png';
import Chiller from '@/assets/iscs_icon/chiller.png';
import ElectricButterflyValve from '@/assets/iscs_icon/electric_butterfly_value.png';
import BalancedElectric from '@/assets/iscs_icon/balanced_electric.png';
import FrozenPump from '@/assets/iscs_icon/frozen_pump.png';
export default { export default {
name: 'GraphicEle', name: 'GraphicEle',
@ -40,31 +65,38 @@ export default {
dialogShow: false, dialogShow: false,
loading: false, loading: false,
standFASData: [ standFASData: [
{graphicEle: 'manualAlarm', deviceType: '手动报警按钮'}, {graphicEle: 'manualAlarm', deviceType: '手动报警按钮', shorthand: ''},
{graphicEle: 'fireHydrant', deviceType: '消火栓按钮'}, {graphicEle: 'fireHydrant', deviceType: '消火栓按钮', shorthand: ''},
{graphicEle: 'smokeDetector', deviceType: '点型火灾探测器'}, {graphicEle: 'smokeDetector', deviceType: '点型火灾探测器', shorthand: ''},
{graphicEle: 'gasFireControl', deviceType: '气体灭火控制器'} {graphicEle: 'gasFireControl', deviceType: '气体灭火控制器', shorthand: ''}
], ],
basData: [ basData: [
{graphicEle: 'AirConditioner', deviceType: '组合式空调机组、空调器'}, {graphicEle: 'AirConditioner', deviceType: '组合式空调机组、空调器', shorthand: '', graphicEle1: 'CoolTower', deviceType1: '冷却塔', shorthand1: ''},
{graphicEle: 'Ventilator', deviceType: '普通风机'}, {graphicEle: 'Ventilator', deviceType: '普通风机', shorthand: '', graphicEle1: 'Chiller', deviceType1: '冷水机组', shorthand1: ''},
{graphicEle: '', deviceType: '隧道风机'}, {graphicEle: 'TunnelFan', deviceType: '隧道风机', shorthand: '', graphicEle1: 'ElectricButterflyValve', deviceType1: '电动蝶阀', shorthand1: 'MV'},
{graphicEle: '', deviceType: '排热风机'}, {graphicEle: 'OrbitalVentilator', deviceType: '排热风机', shorthand: '', graphicEle1: 'BalancedElectric', deviceType1: '动态平衡电动调节阀', shorthand1:'BV'},
{graphicEle: 'FireDamper', deviceType: '防火阀'}, {graphicEle: 'FireDamper', deviceType: '防火阀', shorthand: 'FD1', graphicEle1: 'FrozenPump', deviceType1: '冷冻泵、冷却泵', shorthand1: 'LD、LQ'},
{graphicEle: 'SmookExhaustFd', deviceType: '排烟防火阀'}, {graphicEle: 'SmookExhaustFd', deviceType: '排烟防火阀', shorthand: 'FD2', graphicEle1: 'SmookProofFd', deviceType1: '防烟防火阀', shorthand1: 'SFD'},
{graphicEle: 'VolumeControlDamper', deviceType: '电动风阀'}, {graphicEle: 'VolumeControlDamper', deviceType: '电动风阀', shorthand: 'MD'}
{graphicEle: 'SmookProofFd', deviceType: '防烟防火阀'},
{graphicEle: '', deviceType: '冷却塔'},
{graphicEle: '', deviceType: '冷水机组'},
{graphicEle: '', deviceType: '电动蝶阀'},
{graphicEle: '', deviceType: '动态平衡电动调节阀'},
{graphicEle: '', deviceType: '冷冻泵、冷却泵'}
], ],
graphicEleMap: { graphicEleMap: {
manualAlarm: ManualAlarm, manualAlarm: ManualAlarm,
fireHydrant: FireHydrant, fireHydrant: FireHydrant,
smokeDetector: SmokeDetector, smokeDetector: SmokeDetector,
gasFireControl: GasFireControl gasFireControl: GasFireControl,
AirConditioner: AirConditioner,
Ventilator: Ventilator,
TunnelFan: TunnelFan,
OrbitalVentilator: OrbitalVentilator,
FireDamper: FireDamper,
SmookExhaustFd: SmookExhaustFd,
VolumeControlDamper: VolumeControlDamper,
SmookProofFd: SmookProofFd,
CoolTower: CoolTower,
Chiller: Chiller,
ElectricButterflyValve: ElectricButterflyValve,
BalancedElectric: BalancedElectric,
FrozenPump:FrozenPump
}, },
styleObject: { styleObject: {
background: '#465F79', background: '#465F79',
@ -72,30 +104,26 @@ export default {
borderBottom: '2px solid #FFF', borderBottom: '2px solid #FFF',
borderRight: '2px solid #FFF', borderRight: '2px solid #FFF',
textAlign: 'center' textAlign: 'center'
} },
tableData: [],
title: '',
meaning: '',
width: '480px',
doubleRowList: ['bigSystem', 'waterSystem']
}; };
}, },
computed: { computed: {
title() { isDoubleRow() {
let title = ''; return this.doubleRowList.includes(this.$route.params.mode);
switch (this.$route.params.mode) {
case 'standFAS':
title = 'fAS火灾图元详情';
} }
return title;
}, },
tableData() { watch: {
let tableData = []; '$route.params.mode':function() {
switch (this.$route.params.mode) { this.initData();
case 'standFAS':
case 'stationHallFAS':
tableData = this.standFASData;
break;
}
return tableData;
} }
}, },
mounted() { mounted() {
this.initData();
}, },
methods: { methods: {
doShow() { doShow() {
@ -104,6 +132,24 @@ export default {
doClose() { doClose() {
this.loading = false; this.loading = false;
this.dialogShow = false; this.dialogShow = false;
},
initData() {
switch (this.$route.params.mode) {
case 'standFAS':
case 'stationHallFAS':
this.title = 'fAS火灾图元详情';
this.tableData = this.standFASData;
this.meaning = '绿色:正常。红色:报警';
this.width = '480px';
break;
case 'bigSystem':
case 'waterSystem':
this.title = 'BAS通风空调图元详情';
this.width = '600px';
this.tableData = this.basData;
this.meaning = '白色:关闭/停止。绿色:打开/运行。红色:报警。黄色:故障。';
break;
}
} }
} }
}; };
@ -135,4 +181,10 @@ export default {
background: #465F79; background: #465F79;
border: 3px solid #FFF; border: 3px solid #FFF;
} }
.shorthand {
display: inline-block ;
color: #0DC8DE;
font-size: 14px;
margin-right: 5px;
}
</style> </style>

View File

@ -119,7 +119,15 @@ export default {
'Ventilator', 'Ventilator',
'AirConditioner', 'AirConditioner',
'FireDamper', 'FireDamper',
'SmookProofFd' 'SmookProofFd',
'CoolTower',
'Chiller',
'ElectricButterflyValve',
'BalancedElectric',
'FrozenPump',
'TunnelFan',
'OrbitalVentilator',
'Draught'
] ]
}; };
}, },
@ -129,7 +137,6 @@ export default {
}, },
'$store.state.iscs.selectedCount': function() { '$store.state.iscs.selectedCount': function() {
const device = this.$store.state.iscs.selected; const device = this.$store.state.iscs.selected;
console.log(device, '11111111111111');
if (device && device._type === 'IscsButton' && device.function === 'GraphicEle') { if (device && device._type === 'IscsButton' && device.function === 'GraphicEle') {
this.$refs.graphicEle.doShow(); this.$refs.graphicEle.doShow();
} else if (device && this.deviceList.includes(device._type)) { } else if (device && this.deviceList.includes(device._type)) {

View File

@ -45,6 +45,7 @@ export default {
}, },
selected: null, // selected: null, //
copyModel: {}, // copyModel: {}, //
copyList: [],
showBackButton: true, showBackButton: true,
initTime: '', initTime: '',
started: false, started: false,
@ -139,21 +140,41 @@ export default {
if (this.selected && this.selected.code) { if (this.selected && this.selected.code) {
switch (hook) { switch (hook) {
case 'Ctrl_C': { case 'Ctrl_C': {
if (this.selected._type != "CheckBox") { const list = this.getSelectList();
this.copyModel = deepAssign({}, this.selected); if (list.length) {
this.copyModel.point = { this.copyList = [];
x: this.selected.point.x + 10, const mapIscs = {};
y: this.selected.point.y + 10 list.forEach(item => {
}; if (item && item.code) {
const copyModel = this.copyModelInfo(item, 30);
const type1 = item._type.charAt(0).toLowerCase() + item._type.slice(1); // .toLowerCase()
if (!mapIscs[type1 + 'List']) {
mapIscs[type1 + 'List'] = this.iscs[type1 + 'List'] || [];
}
const list = mapIscs[type1 + 'List'] || [];
copyModel.code = getUID(item._type, list);
mapIscs[type1 + 'List'].push(copyModel);
this.copyList.push(copyModel);
}
});
} else if (this.selected._type != 'CheckBox') {
this.copyModel = this.copyModelInfo(this.selected, 10);
const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1); // .toLowerCase() const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1); // .toLowerCase()
this.copyModel.code = getUID(this.selected._type, this.iscs[type1 + 'List'] || []); this.copyModel.code = getUID(this.selected._type, this.iscs[type1 + 'List'] || []);
} else { } else {
this.copyModel = {} this.copyModel = {};
} }
} break; } break;
case 'Ctrl_V': case 'Ctrl_V': {
const list = this.getSelectList();
if (list.length) {
this.copyList.forEach(item => {
item.code && this.createDataModel(item);
});
} else {
this.copyModel.code && this.createDataModel(this.copyModel); this.copyModel.code && this.createDataModel(this.copyModel);
break; }
} break;
// case 'Delete': this.$store.dispatch('map/setDeleteCount'); // case 'Delete': this.$store.dispatch('map/setDeleteCount');
// break; // break;
// case 'Update': // case 'Update':
@ -163,6 +184,27 @@ export default {
} }
} }
}, },
copyModelInfo(model, length) { // copy
const copyModel = deepAssign({}, model);
if (copyModel._type == 'IscsLine') {
copyModel.point1 = {
x: model.point1.x + length,
y: model.point1.y + length
};
copyModel.point2 = {
x: model.point2.x + length,
y: model.point2.y + length
};
}
copyModel.point = {
x: model.point.x + length,
y: model.point.y + length
};
return copyModel;
},
getSelectList() {
return this.$iscs.getCopyList() || [];
},
createDataModel(model) { createDataModel(model) {
const newModel = deviceFactory(model._type, model); const newModel = deviceFactory(model._type, model);
this.$store.dispatch('iscs/updateIscsDevices', newModel.model); this.$store.dispatch('iscs/updateIscsDevices', newModel.model);

View File

@ -141,7 +141,6 @@ import axios from 'axios';
} }
}, },
updatetrainlist(){ updatetrainlist(){
console.log(this.group);
getSimulationTrainlistNew(this.group).then(netdata => { getSimulationTrainlistNew(this.group).then(netdata => {
this.options = []; this.options = [];
this.trainlist = netdata.data; this.trainlist = netdata.data;
@ -168,9 +167,16 @@ import axios from 'axios';
this.options.push(option); this.options.push(option);
} }
this.options.sort(
function(obj1,obj2) {
let val1 = obj1.value;
let val2 = obj2.value;
return val1 - val2;
}
);
}); });
}, }
}, },
} }
</script> </script>

View File

@ -4,8 +4,16 @@
<!-- <div id="atb" class="panebutton" style="top:8%;left:3%;" @click="atbclick"> <!-- <div id="atb" class="panebutton" style="top:8%;left:3%;" @click="atbclick">
<img class="buttonimg" :src="greenimg" /> <img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div> <div class="buttontext">{{ $t('jlmap3d.ATBStart') }}</div>
</div> -->
<!-- 换端 -->
<div id="ch" class="panebutton" style="top:8%;left:3%;"@click="changehead">
<img class="buttonimg" :src="greenimg" />
<div class="buttontext">{{ $t('jlmap3d.ChangeHead') }}</div>
</div> </div>
<!-- BM/CBTC --> <!-- BM/CBTC -->
<div id="bmcbtc" class="panebutton" style="top:8%;left:17%;" @click="bmcbtcclick"> <div id="bmcbtc" class="panebutton" style="top:8%;left:17%;" @click="bmcbtcclick">
<img class="buttonimg" :src="cbtcbuttonimg" /> <img class="buttonimg" :src="cbtcbuttonimg" />
<div class="buttontext">BM/CBTC</div> <div class="buttontext">BM/CBTC</div>
@ -132,7 +140,7 @@
<script> <script>
import Vue from 'vue'; import Vue from 'vue';
// import { sendSimulationCommand } from '@/api/simulation.js'; // import { sendSimulationCommand } from '@/api/simulation.js';
import { trainSimulationDriveMode, trainSimulationAto ,trainSimulationAtp } from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js'; import { trainSimulationDriveMode, trainSimulationAto ,trainSimulationAtp,trainSimulationChangeHead } from '@/jlmap3d/jl3ddrive/drivecontrol/simulation.js';
export default { export default {
name: 'TopRightPane', name: 'TopRightPane',
@ -171,9 +179,13 @@
driverlighttf:"rotate(0deg)", driverlighttf:"rotate(0deg)",
headlighttf:"rotate(0deg)", headlighttf:"rotate(0deg)",
atoOn:null,
atobuttonimg:"/static/jl3d/control/green.png", atobuttonimg:"/static/jl3d/control/green.png",
driveMode:null,
rmbuttonimg:"/static/jl3d/control/green.png", rmbuttonimg:"/static/jl3d/control/green.png",
runLevel:null,
cbtcbuttonimg:"/static/jl3d/control/green.png", cbtcbuttonimg:"/static/jl3d/control/green.png",
} }
}, },
watch: { watch: {
@ -342,6 +354,11 @@
atbclick: function (e){ atbclick: function (e){
},
changehead: function(e){
trainSimulationChangeHead(this.group,this.groupNum).then(netdata => {
console.log(netdata);
});
}, },
bmcbtcclick: function (e){ bmcbtcclick: function (e){
trainSimulationDriveMode(this.group,this.groupNum,"CM").then(netdata => { trainSimulationDriveMode(this.group,this.groupNum,"CM").then(netdata => {
@ -375,23 +392,30 @@
}, },
updatabuttonlight: function (data){ updatabuttonlight: function (data){
// console.log(data); // console.log(data);
if(data.runLevel!= this.runLevel){
this.runLevel = data.runLevel;
if(data.runLevel == "CBTC"){ if(data.runLevel == "CBTC"){
this.cbtcbuttonimg = this.greenlimg; this.cbtcbuttonimg = this.greenlimg;
}else{ }else{
this.cbtcbuttonimg = this.greenimg; this.cbtcbuttonimg = this.greenimg;
} }
}
if(data.driveMode!= this.driveMode){
this.driveMode = data.driveMode;
if(data.driveMode == "RM"){ if(data.driveMode == "RM"){
this.rmbuttonimg = this.greenlimg; this.rmbuttonimg = this.greenlimg;
}else{ }else{
this.rmbuttonimg = this.greenimg; this.rmbuttonimg = this.greenimg;
} }
}
if(data.atoOn!= this.atoOn){
this.atoOn = data.atoOn;
if(data.atoOn){ if(data.atoOn){
this.atobuttonimg = this.greenlimg; this.atobuttonimg = this.greenlimg;
}else{ }else{
this.atobuttonimg = this.greenimg; this.atobuttonimg = this.greenimg;
} }
}
} }
}, },

View File

@ -118,9 +118,9 @@ export default {
nimage:null, nimage:null,
dstate:"info", dstate:"info",
dimage:null, dimage:null,
m1state:"rm", m1state:null,
m1image:null, m1image:null,
m2state:"cbtc", m2state:"null",
m2image:null, m2image:null,
m3state:"zhefan", m3state:"zhefan",
m3image:null, m3image:null,
@ -134,7 +134,8 @@ export default {
m7image:null, m7image:null,
m8state:"jinjizhidong", m8state:"jinjizhidong",
m8image:null, m8image:null,
m9state:"ato", m9state1:null,
m9state2:null,
m9image:null, m9image:null,
m10state:"jinduan", m10state:"jinduan",
m10image:null, m10image:null,
@ -202,7 +203,6 @@ export default {
}, },
updatetrainstatus(newdata){ updatetrainstatus(newdata){
// //
// console.log(newdata);
this.updatespeed(newdata.v); this.updatespeed(newdata.v);
this.updateatpspeed(newdata.pv); this.updateatpspeed(newdata.pv);
@ -243,112 +243,23 @@ export default {
}, },
updatedrivedata(drivedata){ updatedrivedata(drivedata){
// console.log(drivedata); // console.log(drivedata);
if(drivedata == "breaker"){ // // console.log(drivedata);
// if(drivedata == "breaker"){
} //
if(drivedata == "carwash"){
}
if(drivedata == "aircom"){
}
if(drivedata == "atb"){
}
if(drivedata == "bm"){
}
if(drivedata == "rm"){
if(this.m1state == "start"){
this.m1state = 'rm';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "rm"){
this.m1state = 'am';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "am"){
this.m1state = 'cm';
this.m1image = this.images.m1[this.m1state];
}else if(this.m1state == "cm"){
this.m1state = 'start';
this.m1image = this.images.m1[this.m1state];
}
}
if(drivedata == "cbtc"){
if(this.m2state == "start"){
this.m2state = 'il';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "il"){
this.m2state = 'itc';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "itc"){
this.m2state = 'cbtc';
this.m2image = this.images.m2[this.m2state];
}else if(this.m2state == "cbtc"){
this.m2state = 'start';
this.m2image = this.images.m2[this.m2state];
}
}
//doormode
if(drivedata == "AA"){
this.m7state = 'aoac';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "AM"){
this.m7state = 'aomc';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "MM"){
this.m7state = 'momc';
this.m7image = this.images.m7[this.m7state];
}
if(drivedata == "elflute"){
}
if(drivedata == "relieve"){
}
},
updatarunlevel(drivedata){
if(drivedata == "CBTC"){
this.m2state = 'cbtc';
this.m2image = this.images.m2[this.m2state];
// if(this.m2state == "start"){
// this.m2state = 'il';
// this.m2image = this.images.m2[this.m2state];
// }else if(this.m2state == "il"){
// this.m2state = 'itc';
// this.m2image = this.images.m2[this.m2state];
// }else if(this.m2state == "itc"){
// }else if(this.m2state == "cbtc"){
// this.m2state = 'start';
// this.m2image = this.images.m2[this.m2state];
// } // }
}else if(drivedata == "IL"){ // if(drivedata == "carwash"){
this.m2state = 'il'; //
this.m2image = this.images.m2[this.m2state]; // }
}else{ // if(drivedata == "aircom"){
this.m2state = 'start'; //
this.m2image = this.images.m2[this.m2state]; // }
} // if(drivedata == "atb"){
}, //
updatedrivemode(drivedata){ // }
if(drivedata == "CM"){ // if(drivedata == "bm"){
this.m1state = 'cm'; //
this.m1image = this.images.m1[this.m1state]; // }
}else if(drivedata == "RM"){ // if(drivedata == "rm"){
this.m1state = 'rm';
this.m1image = this.images.m1[this.m1state];
}else if(drivedata == "AM"){
this.m1state = 'am';
this.m1image = this.images.m1[this.m1state];
}else{
this.m1state = 'start';
this.m1image = this.images.m1[this.m1state];
}
// if(this.m1state == "start"){ // if(this.m1state == "start"){
// this.m1state = 'rm'; // this.m1state = 'rm';
// this.m1image = this.images.m1[this.m1state]; // this.m1image = this.images.m1[this.m1state];
@ -362,18 +273,99 @@ export default {
// this.m1state = 'start'; // this.m1state = 'start';
// this.m1image = this.images.m1[this.m1state]; // this.m1image = this.images.m1[this.m1state];
// } // }
//
// }
// if(drivedata == "cbtc"){
// if(this.m2state == "start"){
// this.m2state = 'il';
// this.m2image = this.images.m2[this.m2state];
// }else if(this.m2state == "il"){
// this.m2state = 'itc';
// this.m2image = this.images.m2[this.m2state];
// }else if(this.m2state == "itc"){
// this.m2state = 'cbtc';
// this.m2image = this.images.m2[this.m2state];
// }else if(this.m2state == "cbtc"){
// this.m2state = 'start';
// this.m2image = this.images.m2[this.m2state];
// }
// }
// //doormode
// if(drivedata == "AA"){
// this.m7state = 'aoac';
// this.m7image = this.images.m7[this.m7state];
// }
// if(drivedata == "AM"){
// this.m7state = 'aomc';
// this.m7image = this.images.m7[this.m7state];
// }
// if(drivedata == "MM"){
// this.m7state = 'momc';
// this.m7image = this.images.m7[this.m7state];
// }
//
// if(drivedata == "elflute"){
//
// }
// if(drivedata == "relieve"){
//
// }
},
updatarunlevel(drivedata){
if(drivedata != this.m2state){
if(drivedata == "CBTC"){
this.m2state = drivedata;
this.m2image = this.images.m2['cbtc'];
}else if(drivedata == "IL"){
this.m2state = drivedata;
this.m2image = this.images.m2['il'];
}else{
this.m2state = drivedata;
this.m2image = this.images.m2['start'];
}
}
},
updatedrivemode(drivedata){
if(drivedata != this.m1state){
if(drivedata == "CM"){
this.m1state = drivedata;
this.m1image = this.images.m1['cm'];
}else if(drivedata == "RM"){
this.m1state = drivedata;
this.m1image = this.images.m1['rm'];
}else if(drivedata == "AM"){
this.m1state = drivedata;
this.m1image = this.images.m1['am'];
}else{
this.m1state = null;
this.m1image = this.images.m1['start'];
}
}
}, },
updateatoatp(atoon,atpon){ updateatoatp(atoon,atpon){
if(!atoon){ //
this.m9state = "ato"; if(this.m9state1 != atoon){
this.m9state1 = atoon;
if(atoon){
}else{
this.m9image = this.images.m9["ato"]; this.m9image = this.images.m9["ato"];
} }
if(!atpon){ }
this.m9state = "atp";
if(this.m9state2 != atpon){
this.m9state2 = atpon;
if(atpon){
}else{
this.m9image = this.images.m9["atp"]; this.m9image = this.images.m9["atp"];
} }
}
}, },
updatelen(len) { updatelen(len) {
//this.malen = 150+"px"; //this.malen = 150+"px";
@ -409,8 +401,11 @@ export default {
} }
}, },
updatestation(end,next){ updatestation(end,next){
if(next != this.nextstation || end != this.endstation){
this.endstation = end; this.endstation = end;
this.nextstation = next; this.nextstation = next;
}
}, },
}, },
mounted() { mounted() {

View File

@ -197,16 +197,16 @@
}); });
} }
}, },
updatemenulist(devicelist) { // updatemenulist(devicelist) {
if(devicelist){ // if(devicelist){
this.devicelist = devicelist; // this.devicelist = devicelist;
this.isswitch = true; // this.isswitch = true;
}else{ // }else{
this.devicelist = []; // this.devicelist = [];
this.isswitch = false; // this.isswitch = false;
} // }
//
}, // },
showmodel(devicedata){ showmodel(devicedata){
this.jl3d.updatewindowstatus('1'); this.jl3d.updatewindowstatus('1');
this.jl3d.selectmodel(devicedata); this.jl3d.selectmodel(devicedata);
@ -242,6 +242,7 @@
} }
}, },
updatemenulist(equiplist) { updatemenulist(equiplist) {
console.log(equiplist);
if(equiplist){ if(equiplist){
this.equiplist = equiplist; this.equiplist = equiplist;
this.isswitch = true; this.isswitch = true;

View File

@ -197,6 +197,7 @@ export default {
}, },
selectdevice(divicedata){ selectdevice(divicedata){
this.deviceShow = true; this.deviceShow = true;
// console.log(divicedata);
this.$refs.faultdevice.showmodel(divicedata); this.$refs.faultdevice.showmodel(divicedata);
}, },
warningmsg(nowmsg){ warningmsg(nowmsg){

View File

@ -5,7 +5,7 @@
</div> </div>
<div class = "station"> <div class = "station">
<div style="margin-top:5%;font-size: 30px;">当前车站:</div> <div style="margin-top:5%;font-size: 30px;">当前车站:</div>
<el-select class="listmenu" v-model="value" placeholder="当前车站" > <el-select class="listmenu" v-model="value" placeholder="当前车站" @change="currentsel" >
<el-option <el-option
v-for="item in stationlist" v-for="item in stationlist"
:key="item.name" :key="item.name"
@ -17,11 +17,14 @@
</el-select> </el-select>
</div> </div>
<!-- <div class="menutop"> <div class="menutop">
<el-button-group> <el-button-group>
<el-button type="primary" @click="switchrender">{{rendermode}}</el-button> <el-button type="primary" @click="switch4view">四画面</el-button>
<el-button type="primary" @click="switch2view">双画面</el-button>
<el-button type="primary" @click="switchauto">自由视角</el-button>
<!-- <el-button type="primary" @click="switchrender">{{rendermode}}</el-button> -->
</el-button-group> </el-button-group>
</div> --> </div>
<div class="menudown"> <div class="menudown">
<el-button-group> <el-button-group>
<el-button type="primary" @click="back">退出</el-button> <el-button type="primary" @click="back">退出</el-button>
@ -77,18 +80,32 @@ export default {
if (this.renderswitch == true) { if (this.renderswitch == true) {
this.rendermode = '退出监控'; this.rendermode = '退出监控';
this.renderswitch = false; this.renderswitch = false;
this.jl3d.switchrender(this.renderswitch); this.jl3d.switchviews("auto");
} else { } else {
this.rendermode = '监控视角'; this.rendermode = '监控视角';
this.renderswitch = true; this.renderswitch = true;
this.jl3d.switchrender(this.renderswitch); this.jl3d.switchviews(4);
} }
},
switch4view(){
this.jl3d.switchviews(4);
},
switch2view(){
this.jl3d.switchviews(2);
},
switchauto(){
this.jl3d.switchviews("auto");
}, },
updatestationlist(list){ updatestationlist(list){
// console.log(list); // console.log(list);
this.value = list[0].name this.value = list[0].name
this.stationlist = list; this.stationlist = list;
}, },
currentsel(selVal){
this.jl3d.changestation(selVal);
// let oldgroupnum = this.groupnum;
// this.value = selVal;
},
back() { back() {
window.close(); window.close();
}, },

View File

@ -7,15 +7,16 @@
<div v-if="chatContent.all&& !chatContent.self" class="userName">{{ covertName(chatContent.member) }}</div> <div v-if="chatContent.all&& !chatContent.self" class="userName">{{ covertName(chatContent.member) }}</div>
<div :class="chatContent.self?'userChatTime textRight':'userChatTime'">{{ formatTime(chatContent.chatTime) }}</div> <div :class="chatContent.self?'userChatTime textRight':'userChatTime'">{{ formatTime(chatContent.chatTime) }}</div>
</div> </div>
<div class="userBubble" @click="playAudio('audio'+index)"> <!-- @click="playAudio('audio'+index) -->
<div class="userBubble" @click="playAudio(baseUrl+chatContent.src)">
<div class="userMessage"> <div class="userMessage">
<!-- &&!(chatContent.self) --> <!-- &&!(chatContent.self) -->
<span v-if="chatContent.all">@{{ covertName(chatContent.targetUser) }}</span> <span v-if="chatContent.all">@{{ covertName(chatContent.targetUser) }}</span>
<span class="el-icon-video-play playicon" /> <span class="el-icon-video-play playicon" />
<span class="messageText">{{ chatContent.message }}</span> <span class="messageText">{{ chatContent.message }}</span>
<audio :id="'audio'+index" :src="baseUrl+chatContent.src" style="display:none" />
</div> </div>
</div> </div>
<audio id="audioPlay" style="display:none" />
</div> </div>
</div> </div>
</div> </div>
@ -136,8 +137,9 @@ export default {
const memberName = data.name ? '-' + data.name : ''; const memberName = data.name ? '-' + data.name : '';
return '@' + data.role + deviceName + memberName; return '@' + data.role + deviceName + memberName;
}, },
playAudio(id) { playAudio(audioUrl) {
document.querySelector('#' + id).play(); document.querySelector('#audioPlay').src = audioUrl;
document.querySelector('#audioPlay').play();
} }
// reloadData(currentCoversition) { // reloadData(currentCoversition) {
// this.chatContentList = []; // this.chatContentList = [];

View File

@ -2,7 +2,7 @@
<!-- v-quickMenuDrag --> <!-- v-quickMenuDrag -->
<div class="chatBox" :style="{'bottom':bottom+'px'}"> <div class="chatBox" :style="{'bottom':bottom+'px'}">
<div v-show="!minimize" class="chat-box"> <div v-show="!minimize" class="chat-box">
<chat-member-list v-if="project!='refereeJsxt'" ref="chatMemberList" :group="group" :current-coversition="currentCoversition" /> <chat-member-list v-if="project!='refereeJsxt'|| IsAnswering" ref="chatMemberList" :group="group" :current-coversition="currentCoversition" />
<div class="chat-box-main"> <div class="chat-box-main">
<chat-coversition-list ref="chatCoversitionList" :user-role="userRole" @hideAddCoversition="hideAddCoversition" @setCurrentCoversition="setCurrentCoversition" @setHeadTitle="setHeadTitle" /> <chat-coversition-list ref="chatCoversitionList" :user-role="userRole" @hideAddCoversition="hideAddCoversition" @setCurrentCoversition="setCurrentCoversition" @setHeadTitle="setHeadTitle" />
<div class="chat-window"> <div class="chat-window">
@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<div class="chat-box-content"> <div class="chat-box-content">
<chat-content ref="chatContent" :project="project" :current-coversition="currentCoversition" @changeCoversition="changeCoversition" /> <chat-content ref="chatContent" :project="project" :is-answering="IsAnswering" :current-coversition="currentCoversition" @changeCoversition="changeCoversition" />
<div v-if="recordSending" class="chat_record_tip"> <div v-if="recordSending" class="chat_record_tip">
<div id="record_progress_bar" :style="'width:'+100/60*seconds+'%'" /> <div id="record_progress_bar" :style="'width:'+100/60*seconds+'%'" />
<div class="record_icon" /> <div class="record_icon" />
@ -79,7 +79,7 @@ export default {
}, },
data() { data() {
return { return {
minimize:false, minimize:true,
bottom:15, bottom:15,
recordSending:false, recordSending:false,
currentCoversition:{}, currentCoversition:{},
@ -105,6 +105,9 @@ export default {
}, },
project() { project() {
return getSessionStorage('project'); return getSessionStorage('project');
},
IsAnswering() {
return !(this.$route.path.includes('refereeJsxtDisplay'));
} }
}, },
watch:{ watch:{

View File

@ -36,6 +36,10 @@ export default {
project:{ project:{
type:String, type:String,
required:true required:true
},
isAnswering:{
type:Boolean,
required:true
} }
}, },
data() { data() {
@ -59,6 +63,7 @@ export default {
this.chatContentList.push(simulationText); this.chatContentList.push(simulationText);
if (simulationText.member.userId != this.$store.state.user.id) { if (simulationText.member.userId != this.$store.state.user.id) {
this.currentAudioList.push(this.baseUrl + simulationText.src); this.currentAudioList.push(this.baseUrl + simulationText.src);
console.log(this.isPlay);
if (!this.isPlay) { if (!this.isPlay) {
this.isPlay = true; this.isPlay = true;
this.playAllAudio(); this.playAllAudio();
@ -66,13 +71,13 @@ export default {
} }
this.scrollTop(); this.scrollTop();
} else { } else {
// debugger;
if (!simulationText.all) { if (!simulationText.all) {
this.$emit('changeCoversition', simulationText); this.$emit('changeCoversition', simulationText);
// this.$emit('addCoversition', {data:simulationText, headerTitle:''}); // this.$emit('addCoversition', {data:simulationText, headerTitle:''});
this.chatContentList.push(simulationText); this.chatContentList.push(simulationText);
if (simulationText.member.userId != this.$store.state.user.id) { if (simulationText.member.userId != this.$store.state.user.id) {
this.currentAudioList.push(this.baseUrl + simulationText.src); this.currentAudioList.push(this.baseUrl + simulationText.src);
console.log(this.isPlay);
if (!this.isPlay) { if (!this.isPlay) {
this.isPlay = true; this.isPlay = true;
this.playAllAudio(); this.playAllAudio();
@ -91,7 +96,7 @@ export default {
this.inintData(); this.inintData();
}, },
currentCoversition:function (val, old) { currentCoversition:function (val, old) {
if (val && this.project != 'refereeJsxt') { if (val && (this.project != 'refereeJsxt' || this.isAnswering)) {
this.chatContentList = []; this.chatContentList = [];
this.coversition = this.currentCoversition; this.coversition = this.currentCoversition;
this.inintData(); this.inintData();
@ -144,8 +149,8 @@ export default {
const that = this; const that = this;
document.querySelector('#audioPlay').onended = function() { document.querySelector('#audioPlay').onended = function() {
that.currentAudioList.shift(); that.currentAudioList.shift();
console.log(that.currentAudioList.length);
if (that.currentAudioList.length > 0) { if (that.currentAudioList.length > 0) {
that.currentAudioIndex++;
that.playEachAudio(that.currentAudioList[that.currentAudioIndex]); that.playEachAudio(that.currentAudioList[that.currentAudioIndex]);
} else { } else {
that.isPlay = false; that.isPlay = false;

View File

@ -7,6 +7,7 @@
<transition name="el-zoom-in-bottom"> <transition name="el-zoom-in-bottom">
<map-system-draft ref="mapCanvas" @back="back" /> <map-system-draft ref="mapCanvas" @back="back" />
</transition> </transition>
<menu-demon-joint <menu-demon-joint
ref="demonMenu" ref="demonMenu"
:group="group" :group="group"
@ -18,6 +19,7 @@
@hidepanel="hidepanel" @hidepanel="hidepanel"
@showIbp="showIbp" @showIbp="showIbp"
@startCounting="startCounting" @startCounting="startCounting"
@hidejl3dcctv="hidejl3dcctv"
/> />
<menu-demon-schema <menu-demon-schema
ref="menuSchema" ref="menuSchema"
@ -518,12 +520,25 @@ export default {
this.$refs.ibpPlate.show(deviceCode, this.ibpPart); this.$refs.ibpPlate.show(deviceCode, this.ibpPart);
} }
}, },
hidejl3dcctv(){
const routeData = this.$router.resolve({
path:'/jlmap3d/passengerflow',
query:{
mapid:this.mapId,
group:this.group,
project: this.project
}
});
window.open(routeData.href, '_blank', 'noopener noreferrer');
},
hidepanel() { hidepanel() {
this.panelShow = false; this.panelShow = false;
this.drivingShow = true; this.drivingShow = true;
this.ibpShow = false; this.ibpShow = false;
this.$refs.Jl3dDrive.show(this.mapId, this.group); this.$refs.Jl3dDrive.show(this.mapId, this.group);
}, },
hideIbp() { hideIbp() {
Message.closeAll(); Message.closeAll();
this.drivingShow = false; this.drivingShow = false;

View File

@ -5,6 +5,7 @@
<el-button-group> <el-button-group>
<el-button v-if="isProject && !dataError " type="primary" @click="setRelDevice">{{ $t('joinTraining.connectRealDevices') }}</el-button> <el-button v-if="isProject && !dataError " type="primary" @click="setRelDevice">{{ $t('joinTraining.connectRealDevices') }}</el-button>
<el-button v-if="isDriver && !dataError" type="jumpjlmap3d" @click="jumpjlmap3d">{{ $t('joinTraining.driverPerspective') }}</el-button> <el-button v-if="isDriver && !dataError" type="jumpjlmap3d" @click="jumpjlmap3d">{{ $t('joinTraining.driverPerspective') }}</el-button>
<el-button v-if="isStationSupervisor && !dataError" type="jmap3dcctv" @click="jlmap3dcctv">cctv</el-button>
<template v-if="isAdmin && project != 'refereeJsxt'"> <template v-if="isAdmin && project != 'refereeJsxt'">
<el-button type="success" :disabled="isDisable || dataError" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button> <el-button type="success" :disabled="isDisable || dataError" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
<el-button type="danger" :disabled="!isDisable" @click="end">{{ $t('joinTraining.exitPlan') }}</el-button> <el-button type="danger" :disabled="!isDisable" @click="end">{{ $t('joinTraining.exitPlan') }}</el-button>
@ -94,6 +95,10 @@ export default {
isSpeaking() { isSpeaking() {
return this.userRole != 'DRIVER' && this.userRole != ''; return this.userRole != 'DRIVER' && this.userRole != '';
}, },
isStationSupervisor(){
console.log(this.userRole);
return this.userRole == 'STATION_SUPERVISOR';
},
isDriver() { isDriver() {
return this.userRole == 'DRIVER'; return this.userRole == 'DRIVER';
}, },
@ -144,6 +149,7 @@ export default {
this.backLoading = false; this.backLoading = false;
await this.initLoadPage(); await this.initLoadPage();
this.isDisable = this.$store.state.map.runPlanStatus; this.isDisable = this.$store.state.map.runPlanStatus;
console.log(this.userRole);
}, },
beforeDestroy() { beforeDestroy() {
this.$store.dispatch('training/setGroup', ''); this.$store.dispatch('training/setGroup', '');
@ -305,6 +311,9 @@ export default {
jumpjlmap3d() { jumpjlmap3d() {
this.$emit('hidepanel'); this.$emit('hidepanel');
}, },
jlmap3dcctv(){
this.$emit('hidejl3dcctv');
},
setRelDevice() { setRelDevice() {
this.$refs.realDevice.doShow(); this.$refs.realDevice.doShow();
}, },

View File

@ -70,9 +70,9 @@ export default {
height: 800, height: 800,
roadData: [], roadData: [],
focus: false, focus: false,
booleanList: ['lockFirst', 'switchSingleHandle'], booleanList: ['lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute'],
selectList: ['upDirection'], selectList: ['upDirection'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection'], generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute'],
numberList: [], numberList: [],
optionsMap: { optionsMap: {
upDirection: [{label: 'right', value: 'right'}, {label: 'left', value: 'left'}] upDirection: [{label: 'right', value: 'right'}, {label: 'left', value: 'left'}]
@ -80,7 +80,10 @@ export default {
remarkMap: { remarkMap: {
lockFirst: '是否先锁闭——办理过程直接先锁闭区段', lockFirst: '是否先锁闭——办理过程直接先锁闭区段',
upDirection: '上行方向', upDirection: '上行方向',
switchSingleHandle: '道岔区段状态改变按单个道岔处理' switchSingleHandle: '道岔区段状态改变按单个道岔处理',
switchNRTurnChain:'道岔正/反操是否联动',
switchSingleLockChain:'道岔单解/锁是否联动',
signalForceCancelRoute:'是否强制取消进路/在接近区段占用时是否依旧强制执行取消进路'
} }
}; };
}, },

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -7,7 +7,7 @@ function timedCount(){
if(e.data == "on"){ if(e.data == "on"){
update = setInterval("passerupdate()", 50); update = setInterval("passerupdate()", 100);
} }
if(e.data == "off"){ if(e.data == "off"){

View File

@ -7,7 +7,7 @@ function timedCount(){
if(e.data == "on"){ if(e.data == "on"){
console.log("on"); console.log("on");
update = setInterval("stationupdate()", 3000); update = setInterval("stationupdate()", 2000);
} }
if(e.data == "off"){ if(e.data == "off"){