# Conflicts:
#	src/jmapNew/shape/Train/index.js
This commit is contained in:
fan 2020-03-13 13:08:18 +08:00
commit 7753c53ee0
38 changed files with 917 additions and 713 deletions

View File

@ -7,234 +7,234 @@ import store from '@/store';
/** 车身*/
export default class TrainBody extends Group {
constructor(model) {
super();
this.model = model;
this.deviceModel = model.model;
this.nameFormat = model.nameFormat;
this.create();
this.createMouse(); // 鼠标事件
}
constructor(model) {
super();
this.model = model;
this.deviceModel = model.model;
this.nameFormat = model.nameFormat;
this.create();
this.createMouse(); // 鼠标事件
}
createMouse() {
this.mouseEvent = new EMouse(this);
this.add(this.mouseEvent);
if (this.deviceModel.down) {
store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover();
}
createMouse() {
this.mouseEvent = new EMouse(this);
this.add(this.mouseEvent);
if (this.deviceModel.down) {
store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover();
}
this.on('mouseover', () => {
store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover();
});
this.on('mouseout', () => {
store.dispatch('map/setTrainDetails', null);
this.mouseEvent.mouseout();
});
}
this.on('mouseover', () => {
store.dispatch('map/setTrainDetails', this.deviceModel);
this.mouseEvent.mouseover();
});
this.on('mouseout', () => {
store.dispatch('map/setTrainDetails', null);
this.mouseEvent.mouseout();
});
}
create() {
const model = this.model;
const style = this.model.style;
this.trainBodyBox = new TrainBodyBox({
zlevel: model.zlevel,
z: model.z,
point: model.point,
style: style
});
create() {
const model = this.model;
const style = this.model.style;
this.trainBodyBox = new TrainBodyBox({
zlevel: model.zlevel,
z: model.z,
point: model.point,
style: style
});
const beginX = (model.point.x + style.Train.trainBody.lrPadding);
const beginY = (model.point.y - style.Train.hsda.trainHSDATextFontSize - style.Train.hsda.upPaddingHSDA);
const margin = (style.Train.common.trainWidth - style.Train.hsda.lrPaddingHSDA * 2) / 4;
const beginX = (model.point.x + style.Train.trainBody.lrPadding);
const beginY = (model.point.y - style.Train.hsda.trainHSDATextFontSize - style.Train.hsda.upPaddingHSDA);
const margin = (style.Train.common.trainWidth - style.Train.hsda.lrPaddingHSDA * 2) / 4;
this.textH = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 0),
y: parseInt(beginY),
text: style.Train.hsda.textHContent,
textFill: style.trainYellowColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textS = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 1),
y: parseInt(beginY),
text: style.Train.hsda.textSContent,
textFill: style.trainBlueColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textD = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 2),
y: parseInt(beginY),
text: style.Train.hsda.textDContent,
textFill: style.trainGreenColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textA = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 3),
y: parseInt(beginY),
text: style.Train.hsda.textAContent,
textFill: style.trainRedColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
const serviceNumber = style.Train.trainServer.serviceNumberPrefix + (model.serviceNumber || style.Train.trainServer.defaultServiceNumber) + '';// 服务号(表号)
const tripNumber = style.Train.trainTarget.tripNumberPrefix + (style.Train.trainTarget.defaultDirectionCode
?(model.directionCode||style.Train.trainTarget.defaultDirectionCode) + (model.tripNumber || style.Train.trainTarget.defaultTripNumber)
:model.tripNumber || style.Train.trainTarget.defaultTripNumber) + ''; // 车次号
const targetCode = style.Train.trainNumber.targetCodePrefix + (model.targetCode || style.Train.trainNumber.defaultTargetCode) + ''; // 目的地码
const groupNumber = style.Train.trainTargetNumber.groupNumberPrefix + (model.groupNumber || style.Train.trainTargetNumber.defaultGroupNumber) + ''; // 车组号
this.textTrainServer = new ETextName({
zlevel: model.zlevel,
z: model.z+1,
x: parseInt(model.point.x + style.Train.trainServer.trainServerOffset.x),
y: parseInt(model.point.y + style.Train.trainServer.trainServerOffset.y),
text: serviceNumber.substring(serviceNumber.length - style.Train.trainServer.serviceNumberPrefix.length),
textFill: style.trainTextColor,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.textTrainTarget = new ETextName({
zlevel: this.model.zlevel,
z: this.model.z+1,
x: parseInt(model.point.x + model.style.Train.trainTarget.trainTargetOffset.x),
y: parseInt(model.point.y + model.style.Train.trainTarget.trainTargetOffset.y),
text: tripNumber.substring(tripNumber.length - style.Train.trainTarget.tripNumberPrefix.length),
textFill: style.trainTextColor,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: style.Train.trainTarget.trainTargetTextAlign,
textVerticalAlign: 'top'
});
this.textTrainNumber = new ETextName({
zlevel: model.zlevel,
z: model.z+1,
x: parseInt(model.point.x + style.Train.trainNumber.trainNumberOffset.x),
y: parseInt(model.point.y + style.Train.trainNumber.trainNumberOffset.y),
text: targetCode.substring(targetCode.length - 3),
textFill: style.trainTextColor,
textStroke: style.trainTextColor,
fontWeight: 400,
textStrokeWidth: 0,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.textTrainTargetNumber = new ETextName({
zlevel: model.zlevel,
z: model.z+1,
x: parseInt(model.point.x - style.Train.trainBody.lrPadding),
y: parseInt(model.point.y + style.Train.trainBody.upPadding),
text: groupNumber.substring(groupNumber.length - 3),
textFill: style.trainTextColor,
textStroke: style.trainTextColor,
textStrokeWidth: 0,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.formatChangePosition(model, style);
this.add(this.trainBodyBox);
if (style.Train.common.haveTextHSDA) {
this.add(this.textH);
this.add(this.textS);
this.add(this.textD);
this.add(this.textA);
}
}
this.textH = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 0),
y: parseInt(beginY),
text: style.Train.hsda.textHContent,
textFill: style.trainYellowColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textS = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 1),
y: parseInt(beginY),
text: style.Train.hsda.textSContent,
textFill: style.trainBlueColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textD = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 2),
y: parseInt(beginY),
text: style.Train.hsda.textDContent,
textFill: style.trainGreenColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
this.textA = style.Train.common.haveTextHSDA ? new ETextName({
zlevel: model.zlevel,
z: model.z,
x: parseInt(beginX + margin * 3),
y: parseInt(beginY),
text: style.Train.hsda.textAContent,
textFill: style.trainRedColor,
fontSize: style.Train.hsda.trainHSDATextFontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'middle',
textVerticalAlign: 'top'
}) : '';
const serviceNumber = style.Train.trainServer.serviceNumberPrefix + (model.serviceNumber || style.Train.trainServer.defaultServiceNumber) + '';// 服务号(表号)
const tripNumber = style.Train.trainTarget.tripNumberPrefix + (style.Train.trainTarget.defaultDirectionCode
? (model.directionCode || style.Train.trainTarget.defaultDirectionCode) + (model.tripNumber || style.Train.trainTarget.defaultTripNumber)
: model.tripNumber || style.Train.trainTarget.defaultTripNumber) + ''; // 车次号
const targetCode = style.Train.trainNumber.targetCodePrefix + (model.destinationCode || style.Train.trainNumber.defaultTargetCode) + ''; // 目的地码
const groupNumber = style.Train.trainTargetNumber.groupNumberPrefix + (model.groupNumber || style.Train.trainTargetNumber.defaultGroupNumber) + ''; // 车组号
this.textTrainServer = new ETextName({
zlevel: model.zlevel,
z: model.z + 1,
x: parseInt(model.point.x + style.Train.trainServer.trainServerOffset.x),
y: parseInt(model.point.y + style.Train.trainServer.trainServerOffset.y),
text: serviceNumber.substring(serviceNumber.length - style.Train.trainServer.serviceNumberPrefix.length),
textFill: style.trainTextColor,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.textTrainTarget = new ETextName({
zlevel: this.model.zlevel,
z: this.model.z + 1,
x: parseInt(model.point.x + model.style.Train.trainTarget.trainTargetOffset.x),
y: parseInt(model.point.y + model.style.Train.trainTarget.trainTargetOffset.y),
text: tripNumber.substring(tripNumber.length - style.Train.trainTarget.tripNumberPrefix.length),
textFill: style.trainTextColor,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: style.Train.trainTarget.trainTargetTextAlign,
textVerticalAlign: 'top'
});
this.textTrainNumber = new ETextName({
zlevel: model.zlevel,
z: model.z + 1,
x: parseInt(model.point.x + style.Train.trainNumber.trainNumberOffset.x),
y: parseInt(model.point.y + style.Train.trainNumber.trainNumberOffset.y),
text: targetCode.substring(targetCode.length - 3),
textFill: style.trainTextColor,
textStroke: style.trainTextColor,
fontWeight: 400,
textStrokeWidth: 0,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.textTrainTargetNumber = new ETextName({
zlevel: model.zlevel,
z: model.z + 1,
x: parseInt(model.point.x - style.Train.trainBody.lrPadding),
y: parseInt(model.point.y + style.Train.trainBody.upPadding),
text: groupNumber.substring(groupNumber.length - 3),
textFill: style.trainTextColor,
textStroke: style.trainTextColor,
textStrokeWidth: 0,
fontSize: model.fontSize,
fontFamily: style.Train.common.fontFamily,
textAlign: 'left',
textVerticalAlign: 'top'
});
this.formatChangePosition(model, style);
this.add(this.trainBodyBox);
if (style.Train.common.haveTextHSDA) {
this.add(this.textH);
this.add(this.textS);
this.add(this.textD);
this.add(this.textA);
}
}
removeTrainDetail() {
this.mouseEvent.mouseout();
store.dispatch('map/setTrainDetails', null);
this.deviceModel.down = false;
}
setTrainColor(color) {
this.trainBodyBox && this.trainBodyBox.setStyle('fill', color);
}
setTextTrainServerColor(color) {
this.textTrainServer&&this.textTrainServer.setStyle('textFill', color);
this.textTrainServer&&this.textTrainServer.setStyle('textStroke', color);
}
setTextTrainTargetColor(color) {
this.textTrainTarget&&this.textTrainTarget.setStyle('textFill', color);
this.textTrainTarget&&this.textTrainTarget.setStyle('textStroke', color);
}
setTextTrainNumberColor(color) {
this.textTrainNumber&&this.textTrainNumber.setStyle('textFill', color);
this.textTrainNumber&&this.textTrainNumber.setStyle('textStroke', color);
}
setTextTrainTargetNumberColor(color) {
this.textTrainTargetNumber&&this.textTrainTargetNumber.setStyle('textFill', color);
this.textTrainTargetNumber&&this.textTrainTargetNumber.setStyle('textStroke', color);
}
setHShow(isShow) {
if (this.textH) {
isShow ? this.textH.show() : this.textH.hide();
}
}
setSShow(isShow) {
if (this.textS) {
isShow ? this.textS.show() : this.textS.hide();
}
}
setDShow(isShow) {
if (this.textD) {
isShow ? this.textD.show() : this.textD.hide();
}
}
setAShow(isShow) {
if (this.textA) {
isShow ? this.textA.show() : this.textA.hide();
}
}
setBodyBoxShape(key, color) {
this.trainBodyBox && this.trainBodyBox.setColor(key, color);
}
formatChangePosition(model, style) {
if (this.nameFormat) {
const arr = this.nameFormat.split(':');
let widthText = 0;
arr.forEach(ele => {
if (ele == 'targetCode') {
this.textTrainNumber.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset) );
widthText += this.textTrainNumber.getBoundingRect().width;
this.add(this.textTrainNumber);
} else if (ele == 'serviceNumber') {
this.textTrainServer.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainServer.getBoundingRect().width;
this.add(this.textTrainServer);
} else if (ele == 'tripNumber') {
this.textTrainTarget.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainTarget.getBoundingRect().width;
this.add(this.textTrainTarget);
} else if (ele == 'groupNumber') {
this.textTrainTargetNumber.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainTargetNumber.getBoundingRect().width;
this.add(this.textTrainTargetNumber);
}
});
}
}
removeTrainDetail() {
this.mouseEvent.mouseout();
store.dispatch('map/setTrainDetails', null);
this.deviceModel.down = false;
}
setTrainColor(color) {
this.trainBodyBox && this.trainBodyBox.setStyle('fill', color);
}
setTextTrainServerColor(color) {
this.textTrainServer && this.textTrainServer.setStyle('textFill', color);
this.textTrainServer && this.textTrainServer.setStyle('textStroke', color);
}
setTextTrainTargetColor(color) {
this.textTrainTarget && this.textTrainTarget.setStyle('textFill', color);
this.textTrainTarget && this.textTrainTarget.setStyle('textStroke', color);
}
setTextTrainNumberColor(color) {
this.textTrainNumber && this.textTrainNumber.setStyle('textFill', color);
this.textTrainNumber && this.textTrainNumber.setStyle('textStroke', color);
}
setTextTrainTargetNumberColor(color) {
this.textTrainTargetNumber && this.textTrainTargetNumber.setStyle('textFill', color);
this.textTrainTargetNumber && this.textTrainTargetNumber.setStyle('textStroke', color);
}
setHShow(isShow) {
if (this.textH) {
isShow ? this.textH.show() : this.textH.hide();
}
}
setSShow(isShow) {
if (this.textS) {
isShow ? this.textS.show() : this.textS.hide();
}
}
setDShow(isShow) {
if (this.textD) {
isShow ? this.textD.show() : this.textD.hide();
}
}
setAShow(isShow) {
if (this.textA) {
isShow ? this.textA.show() : this.textA.hide();
}
}
setBodyBoxShape(key, color) {
this.trainBodyBox && this.trainBodyBox.setColor(key, color);
}
formatChangePosition(model, style) {
if (this.nameFormat) {
const arr = this.nameFormat.split(':');
let widthText = 0;
arr.forEach(ele => {
if (ele == 'targetCode') {
this.textTrainNumber.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset) );
widthText += this.textTrainNumber.getBoundingRect().width;
this.add(this.textTrainNumber);
} else if (ele == 'serviceNumber') {
this.textTrainServer.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainServer.getBoundingRect().width;
this.add(this.textTrainServer);
} else if (ele == 'tripNumber') {
this.textTrainTarget.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainTarget.getBoundingRect().width;
this.add(this.textTrainTarget);
} else if (ele == 'groupNumber') {
this.textTrainTargetNumber.setStyle('x', parseInt(model.point.x + widthText + style.Train.common.textOffset));
widthText += this.textTrainTargetNumber.getBoundingRect().width;
this.add(this.textTrainTargetNumber);
}
});
}
}
}

View File

@ -4,16 +4,16 @@ const deviceState = {};
deviceState[deviceType.Section] = {
/** 区段状态*/
blockade: false, // 是否封锁
routeLock: false, // 是否进路锁闭
overlapLock: false, // 进路延续保护锁闭
ctOccupied: false, // 通信车占用
nctOccupied: false, // 非通信车占用
cutOff: false, // 是否切除
invalid: false, // 是否失效
blockade: 0, // 是否封锁
routeLock: 0, // 是否进路锁闭
overlapLock: 0, // 进路延续保护锁闭
ctOccupied: 0, // 通信车占用
nctOccupied: 0, // 非通信车占用
cutOff: 0, // 是否切除
invalid: 0, // 是否失效
speedUpLimit: 0, // 最高限速
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/
};
deviceState[deviceType.Switch] = {
@ -50,7 +50,7 @@ deviceState[deviceType.Switch] = {
// State14: '14' /** 道岔状态类型 - 封锁*/
// },
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/
// /** 是否切除*/
// cutOff: {
// Default: false /** 是否切除*/
@ -58,19 +58,19 @@ deviceState[deviceType.Switch] = {
};
deviceState[deviceType.Signal] = {
blockade: false, // 是否锁闭
logicLight: false, // 逻辑点灯
greenOpen: false, // 绿灯开放
yellowOpen: false, // 黄灯开放
redOpen: true, // 红灯开放(默认状态)
blockade: 0, // 是否锁闭
logicLight: 0, // 逻辑点灯
greenOpen: 0, // 绿灯开放
yellowOpen: 0, // 黄灯开放
redOpen: 1, // 红灯开放(默认状态)
delayTime: 0, // 信号机延迟解锁倒计时
atsControl: 1, // 0是人工1是自动
fault: false // 是否故障
fault: 0 // 是否故障
};
deviceState[deviceType.Station] = {
/** 是否故障*/
fault: false, /** 非故障*/
fault: 0, /** 非故障*/
controlMode: 'Center'
// controlMode: 'Local' // Center 中控 Local 站控 Emergency 紧急站控 Interlock 联锁控
};
@ -87,7 +87,7 @@ deviceState[deviceType.Psd] = {
// State03: '03' /** 切除 */
// },
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/
};
deviceState[deviceType.StationDelayUnlock] = {
@ -99,7 +99,7 @@ deviceState[deviceType.StationDelayUnlock] = {
// },
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/
};
deviceState[deviceType.StationStand] = {
@ -123,7 +123,7 @@ deviceState[deviceType.StationStand] = {
// State04: '04' /** 默认 */
// },
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/
};
deviceState[deviceType.Train] = {
@ -207,7 +207,7 @@ deviceState[deviceType.Train] = {
// State02: '02' /** 有报警 */
// },
/** 车门是否关闭且锁闭 */
doorCloseLock: true,
doorCloseLock: 1,
/** 列车运行级别 */
runLevel: 'CBTC',
/** 驾驶模式 */
@ -219,7 +219,18 @@ deviceState[deviceType.Train] = {
/** 列车是否向右形式 */
right: 1,
/** 是否故障*/
fault: false /** 非故障*/
fault: 0 /** 非故障*/,
/** 是否跳停 */
jump: 0,
/** 是否扣车 */
hold: 0,
/** 列车类型 PLAN计划车 HEAD 头码车 MANUAL 人工车*/
type: 'PLAN',
/** 列车精确位置 (成都一号线使用)*/
offsetp:0,
/** 列车所在物理区段 */
physicalCode:''
};
export default deviceState;

View File

@ -83,10 +83,14 @@ class Status {
right: device.right, /** 列车方向 */
doorCloseLock: device.doorCloseLock, /** 车门是否关闭且锁闭 */
stop: device.stop, /** 列车是否停稳 */
type: device.type, /** 列车类型 */
type: device.type, /** 列车类型 PLAN计划车 HEAD 头码车 MANUAL 人工车*/
runLevel: device.runLevel, /** 列车运行级别 */
driveMode: device.driveMode, /** 驾驶模式 */
fault: device.fault /** 非故障*/
fault: device.fault, /** 非故障*/
jump: device.jump, /** 是否跳停 */
hold: device.hold, /** 是否扣车 */
offsetp:device.offsetp, /** 列车精确位置 (成都一号线使用)*/
physicalCode:device.physicalCode /** 列车所在物理区段 */
};
}
handleStation(device) {

View File

@ -46,6 +46,7 @@ class Jlmap {
const width = opts.dom.clientWidth;
const height = opts.dom.clientHeight;
this.zoomOnMouseWheel = opts.options.zoomOnMouseWheel;
this.previewOrMapDraw = opts.showConfig.previewOrMapDraw;
this.$zr = zrender.init(opts.dom, deepAssign({ renderer, devicePixelRatio, width, height }, opts.config));
@ -140,6 +141,7 @@ class Jlmap {
this.$mouseController.disable();
} else {
opts['zoomOnMouseWheel'] = this.zoomOnMouseWheel;
opts['previewOrMapDraw'] = this.previewOrMapDraw;
this.$mouseController.enable(opts);
}

View File

@ -54,6 +54,7 @@ class MouseController extends Eventful {
this._moveOnMouseMove = opts.moveOnMouseMove || true;
this._zoomOnMouseWheel = opts.zoomOnMouseWheel || false;
this._preventDefaultMouseMove = opts.preventDefaultMouseMove || true;
this._previewOrMapDraw = opts.previewOrMapDraw || false;
this.disable();
@ -121,7 +122,7 @@ class MouseController extends Eventful {
this._preventDefaultMouseMove && eventTool.stop(e.event);
this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y });
} else if (e.which === 3 && this._zoomOnMouseWheel) {
} else if (e.which === 3 && this._zoomOnMouseWheel && this._previewOrMapDraw) {
this.handleMouseMoveRight({x: e.offsetX, y: e.offsetY});
}
}
@ -130,7 +131,7 @@ class MouseController extends Eventful {
if (!eventTool.notLeftMouse(e)) {
this._dragging = false;
}
if (this._zoomOnMouseWheel && this.$jmap.mapDevice['check_box']) {
if (this._zoomOnMouseWheel && this.$jmap.mapDevice['check_box'] && this._previewOrMapDraw ) {
this.eventTarget = this.$jmap.mapDevice['check_box'].instance;
this.handleBoundingRect(this.eventTarget);
var em = this.checkEvent(e);
@ -310,8 +311,8 @@ class MouseController extends Eventful {
const dy = originY + this.$jmap.$options.offsetY;
const x = dx / this.$jmap.$options.scaleRate;
const y = dy / this.$jmap.$options.scaleRate;
const width = Math.abs(point1.x - point2.x) / this.$jmap.$options.scaleRate + 10;
const height = Math.abs(point1.y - point2.y) / this.$jmap.$options.scaleRate + 10;
const width = Math.abs(point1.x - point2.x) / this.$jmap.$options.scaleRate;
const height = Math.abs(point1.y - point2.y) / this.$jmap.$options.scaleRate;
this.$jmap.renderCheckBox({code: 'check_box', _type: 'CheckBox', point: {x: x, y: y}, width: width, height: height });
}
}

View File

@ -252,7 +252,7 @@ export default class Section extends Group {
/** 区段名称 (逻辑区段名称 或 物理区段名称 是否显示)*/
let tempx = x;
let tempy = y;
if (model.type == '01') {
if (model.type == '01') { // 物理区段名称
if (style.Section.text.show) {
const opposite = style.Section.text.opposite ? -1 : 1;
tempx += traingle.getSin(style.Section.text.distance);
@ -275,7 +275,7 @@ export default class Section extends Group {
});
this.add(this.name);
}
} else if (model.type == '02') {
} else if (model.type == '02') { // 逻辑区段
if (style.Section.logicText.show) {
const opposite = style.Section.logicText.opposite ? -1 : 1;
tempx += traingle.getSin(style.Section.logicText.distance);
@ -298,7 +298,7 @@ export default class Section extends Group {
});
this.add(this.name);
}
} else if (model.type == '03') {
} else if (model.type == '03') { // 道岔区段
if (style.Section.switchText.show) {
this.name = new ETextName({
zlevel: this.zlevel,
@ -318,7 +318,7 @@ export default class Section extends Group {
});
this.add(this.name);
}
} else if (model.type == '04') {
} else if (model.type == '04') { // 道岔计轴区段名称
if (router.currentRoute.path.startsWith('/design/usermap/map/draw') && router.currentRoute.path.endsWith('/draft')) {
this.name = new ETextName({
zlevel: this.zlevel,

View File

@ -20,16 +20,16 @@ class EMouse extends Group {
}
let trainType = '';
switch (this.device.model.type) {
case '01': trainType = LangStorage.getLang() == 'en' ? 'Plan the car' : '计划车'; break;
case '02': trainType = LangStorage.getLang() == 'en' ? 'Head size car' : '头码车'; break;
case '03': trainType = LangStorage.getLang() == 'en' ? 'Artificial car' : '人工车'; break;
case 'PLAN': trainType = LangStorage.getLang() == 'en' ? 'Plan the car' : '计划车'; break;
case 'HEAD': trainType = LangStorage.getLang() == 'en' ? 'Head size car' : '头码车'; break;
case 'MANUAL': trainType = LangStorage.getLang() == 'en' ? 'Artificial car' : '人工车'; break;
default: trainType = LangStorage.getLang() == 'en' ? 'unknown' : '未知'; break;
}
let text = '';
if (LangStorage.getLang() == 'en') {
text = ` The planned train: ${trainType} \n Table No.: ${this.device.model.serviceNumber} \n Train Trip No.: ${this.device.model.tripNumber}\n Destination: ${this.device.model.targetCode ? this.device.model.targetCode : ''}\n Train No.: ${this.device.model.groupNumber}\n Early or late: ${destinationText}\n Direction: ${this.device.model.directionType == '02' ? 'up' : 'down'}\n Crew No.: \n Start Station: \n Terminal Station: \n Occupied Track: ${this.device.model.sectionModel ? this.device.model.sectionModel.name : ''}\n Current Station: \n Train-ground communication: normal \n Operation Speed level: 4 \n Detained: ${!this.device.model.hold ? 'Normal' : 'Detained'}\n \n 跳停状态: ${!this.device.model.jump ? 'Normal' : 'Skip to continue moving'}Stationary: ${!this.device.model.stop ? 'No' : 'Yes'}\n Blocked: No \n Speed: ${this.device.model.speed || 0} km/h \n Authorized Distance: ${this.device.model.maLen || 0} m`;
text = ` The planned train: ${trainType} \n Table No.: ${this.device.model.serviceNumber} \n Train Trip No.: ${this.device.model.tripNumber}\n Destination: ${this.device.model.destinationCode ? this.device.model.destinationCode : ''}\n Train No.: ${this.device.model.groupNumber}\n Early or late: ${destinationText}\n Direction: ${this.device.model.directionType == '02' ? 'up' : 'down'}\n Crew No.: \n Start Station: \n Terminal Station: \n Occupied Track: ${this.device.model.sectionModel ? this.device.model.sectionModel.name : ''}\n Current Station: \n Train-ground communication: normal \n Operation Speed level: 4 \n Detained: ${this.device.model.hold ? 'Detained' : 'Normal'}\n \n 跳停状态: ${this.device.model.jump ? 'Skip to continue moving' : 'Normal'}Stationary: ${!this.device.model.stop ? 'No' : 'Yes'}\n Blocked: No \n Speed: ${this.device.model.speed || 0} km/h \n Authorized Distance: ${this.device.model.maLen || 0} m`;
} else {
text = `列车类型: ${trainType} \n\0\0\0\0号: ${this.device.model.serviceNumber}\n\0\0号: ${this.device.model.tripNumber}\n目的地号: ${this.device.model.targetCode ? this.device.model.targetCode : ''}\n\0\0号: ${this.device.model.groupNumber}\n\0\0点: ${destinationText}\n运行方向: ${this.device.model.directionType == '02' ? '上行' : '下行'}\n乘务组号: \n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? 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`;
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运行方向: ${this.device.model.directionType == '02' ? '上行' : '下行'}\n乘务组号: \n起点站名: \n终点站名: \n占用轨道: ${this.device.model.sectionModel ? 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`;
}
// 文字描述
this.arrowText = new Text({

View File

@ -21,9 +21,9 @@ export default class ETriangle extends Group {
points:[[model.point.x + 10 * right, model.point.y], [model.point.x, model.point.y - 6], [model.point.x, model.point.y + 6]]
},
style: {
stroke:'#FFFF00',
stroke:'#00FF00',
lineWidth: 0.5,
fill: '#FFFF00'
fill: '#00FF00'
}
});
this.add(this.angle);

View File

@ -102,7 +102,7 @@ export default class TrainBody extends Group {
const tripNumber = style.Train.trainTarget.tripNumberPrefix + (style.Train.trainTarget.defaultDirectionCode
? (model.directionCode || style.Train.trainTarget.defaultDirectionCode) + (model.tripNumber || style.Train.trainTarget.defaultTripNumber)
: model.tripNumber || style.Train.trainTarget.defaultTripNumber) + ''; // 车次号
const targetCode = style.Train.trainNumber.targetCodePrefix + (model.targetCode || style.Train.trainNumber.defaultTargetCode) + ''; // 目的地码
const targetCode = style.Train.trainNumber.targetCodePrefix + (model.destinationCode || style.Train.trainNumber.defaultTargetCode) + ''; // 目的地码
const groupNumber = style.Train.trainTargetNumber.groupNumberPrefix + (model.groupNumber || style.Train.trainTargetNumber.defaultGroupNumber) + ''; // 车组号
this.textTrainServer = new ETextName({
zlevel: model.zlevel,

View File

@ -18,6 +18,8 @@ export default class Train extends Group {
this.z = 40;
this.size = 0;
this.section = null;
this.nextPointIndex = 1;
this.currentAdd = 0;
this.isShowShape = true;
this.fontSize = style.Train.common.useSelfText ? style.Train.common.nameFontSize || style.Train.common.trainTextFontSize : model.nameFontSize || style.Train.common.nameFontSize || style.Train.common.trainTextFontSize;
this.newScale = this.fontSize / style.Train.common.trainTextFontSize;
@ -70,7 +72,7 @@ export default class Train extends Group {
destinationStatus: model.destinationStatus,
serviceNumber: model.serviceNumber,
tripNumber: model.tripNumber,
targetCode: model.targetCode,
destinationCode: model.destinationCode,
groupNumber: model.groupNumber,
directionType: model.directionType,
directionCode: model.directionCode,
@ -107,21 +109,37 @@ export default class Train extends Group {
scale: this.newScale
});
const data = this.model.physicalCode;
const oldmodel = store.getters['map/getDeviceByCode'](data);
const leftPoint = oldmodel.points[0];
const rightPoint = oldmodel.points[oldmodel.points.length - 1];
const right = this.model.right == 1 ? 1 : 0;
this.startX = leftPoint.x + (1 - right) * (rightPoint.x - leftPoint.x);
this.startY = leftPoint.y + (1 - right) * (rightPoint.y - leftPoint.y);
this.triangle = new ETriangle({
style: this.style,
zlevel: this.zlevel,
z:10,
right: this.model.right,
point:{x:this.startX, y:this.startY}
});
this.add(this.triangle);
if (style.Section.trainPosition.display) {
const data = this.model.physicalCode;
const oldmodel = store.getters['map/getDeviceByCode'](data);
const leftPoint = oldmodel.points[0];
const rightPoint = oldmodel.points[oldmodel.points.length - 1];
const right = this.model.right == 1 ? 1 : 0;
this.startX = leftPoint.x + (1 - right) * (rightPoint.x - leftPoint.x);
this.startY = leftPoint.y + (1 - right) * (rightPoint.y - leftPoint.y);
// 算出折线的长度
this.lineLength = 0;
let oldPoint = null;
oldmodel.points.forEach((point)=>{
if (oldPoint) {
const temp = Math.sqrt(
Math.pow(point.x - oldPoint.x, 2) +
Math.pow(point.y - oldPoint.y, 2),
);
this.lineLength += temp;
}
oldPoint = point;
});
// this.animatePoint = {x:this.startX, y:this.startY};
this.triangle = new ETriangle({
style: this.style,
zlevel: this.zlevel,
z:10,
right: this.model.right,
point:{x:this.startX, y:this.startY}
});
this.add(this.triangle);
}
this.add(this.trainB);
this.add(this.trainL);
@ -138,20 +156,66 @@ export default class Train extends Group {
updateSection() {
const train = this.model;
if (train.physicalCode && train.offsetp) {
if (train.physicalCode && train.offsetp && this.triangle) {
const data = train.physicalCode;
const oldmodel = store.getters['map/getDeviceByCode'](data);
const leftPoint = oldmodel.points[0];
const rightPoint = oldmodel.points[oldmodel.points.length - 1];
if (this.triangle) {
// 待处理(多个点的问题)
// const points = train.right == 1 ? oldmodel.points : oldmodel.points.reverse();
const points = oldmodel.points;
// 目标距离
let targetDistance = Math.sqrt(
Math.pow(points[this.nextPointIndex - 1].x - points[this.nextPointIndex].x, 2) +
Math.pow(points[this.nextPointIndex - 1].y - points[this.nextPointIndex].y, 2),
);
// // 当前距离
// const currentDistance = Math.sqrt(
// Math.pow(points[this.nextPointIndex - 1].x - this.animatePoint.x, 2) +
// Math.pow(points[this.nextPointIndex - 1].y - this.animatePoint.y, 2),
// );
const currentDistance = this.lineLength * train.offsetp - this.currentAdd;
// let cureent this.lineLength * train.offsetp
// 利用运动距离与目标距离, 判断运动的点是否超过下一个目标点, 超过了就重置下一个点
if (currentDistance >= targetDistance) {
// this.animatePoint = {
// x: points[this.nextPointIndex].x,
// y: points[this.nextPointIndex].y
// };
this.nextPointIndex++;
this.currentAdd += targetDistance;
targetDistance = Math.sqrt(
Math.pow(points[this.nextPointIndex - 1].x - points[this.nextPointIndex].x, 2) +
Math.pow(points[this.nextPointIndex - 1].y - points[this.nextPointIndex].y, 2),
);
}
if (this.nextPointIndex > points.length - 1) {
const leftPoint = oldmodel.points[0];
const rightPoint = oldmodel.points[oldmodel.points.length - 1];
this.startX = leftPoint.x + (rightPoint.x - leftPoint.x) * train.offsetp;
this.startY = leftPoint.y + (rightPoint.y - leftPoint.y) * train.offsetp;
const point = {x:this.startX, y:this.startY};
this.triangle.point = point;
this.triangle.updateTriangle(point, train.right);
this.triangle.dirty();
this.dirty();
} else {
// debugger;
// this.lineLength * train.offsetp
// if (this.currentLength > targetDistance) {
// this.currentLength = this.currentLength - targetDistance;
// this.nextPointIndex++;
// targetDistance = Math.sqrt(
// Math.pow(points[this.nextPointIndex - 1].x - points[this.nextPointIndex].x, 2) +
// Math.pow(points[this.nextPointIndex - 1].y - points[this.nextPointIndex].y, 2),
// );
// }
const rate = (this.lineLength * train.offsetp - this.currentAdd) / targetDistance;
this.startX = points[this.nextPointIndex - 1].x + (points[this.nextPointIndex].x - points[this.nextPointIndex - 1].x) * rate;
this.startY = points[this.nextPointIndex - 1].y + (points[this.nextPointIndex].y - points[this.nextPointIndex - 1].y) * rate;
// this.animatePoint.x = this.startX;
// this.animatePoint.y = this.startY;
}
const point = {x:this.startX, y:this.startY};
this.triangle.point = point;
this.triangle.updateTriangle(point, train.right);
this.triangle.dirty();
this.dirty();
}
}

View File

@ -40,7 +40,7 @@ class TrainWindow extends Group {
zlevel: this.zlevel,
z: this.z - 1,
shape: {
smooth: this.style.TrainWindow.trainWindowSmooth,
smooth: this.style.TrainWindow.trainWindowSmooth, // 圆滑程度
points: [
[point.x - model.width / 2, point.y],
[point.x + model.width / 2, point.y],

View File

@ -51,31 +51,31 @@ export default {
menu: [],
menuNormal: {
Local: [
{
label: '区段故障解锁',
handler: this.fault,
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK
},
{
label: '区段激活',
handler: this.active,
cmdType: CMD.Section.CMD_SECTION_ACTIVE
},
{
label: '区段切除',
handler: this.split,
cmdType: CMD.Section.CMD_SECTION_CUT_OFF
},
{
label: '区段计轴预复位',
handler: this.axlePreReset,
cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET
},
{
label: '区段设置限速',
handler: this.setSpeed,
cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED
}
// {
// label: '',
// handler: this.faultUnlock,
// cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK
// },
// {
// label: '',
// handler: this.active,
// cmdType: CMD.Section.CMD_SECTION_ACTIVE
// },
// {
// label: '',
// handler: this.split,
// cmdType: CMD.Section.CMD_SECTION_CUT_OFF
// },
// {
// label: '',
// handler: this.axlePreReset,
// cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET
// },
// {
// label: '',
// handler: this.setSpeed,
// cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED
// }
],
Center: [
{
@ -172,14 +172,19 @@ export default {
},
operationHandler(buttonOperation, selectType) {
switch (buttonOperation) {
case OperationEvent.Signal.guide.button.operation: {
case OperationEvent.Section.fault.menu.operation: {
//
if (selectType.fault) {
this.faultUnlock(selectType);
} else {
this.$refs.noticeInfo.doShow({}, `该区段[${selectType.name}(${selectType.code})]没有故障`);
}
break;
}
case OperationEvent.Signal.guide.button.operation: {
//
break;
}
// case OperationEvent: {
// //
// break;
// }
}
},
// //
@ -205,20 +210,19 @@ export default {
// });
// },
//
fault() {
faultUnlock(selectType) {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Section.fault.menu.operation,
param: {
sectionCode: `${this.selected.code}`
}
sectionCode: selectType.code
},
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.sectionCmdControl.doShow(operate, this.selected);
// this.$refs.sectionCmdControl.doShow(operate, this.selected);
}
});
},
@ -299,19 +303,6 @@ export default {
},
//
setSpeed() {
// let operate = {
// start: true,
// code: this.selected.code,
// type: MapDeviceType.Section.type,
// label: MapDeviceType.Section.label,
// operation: OperationEvent.Section.setLimitSpeed.menu.operation
// };
// this.$store.dispatch('training/next', operate).then(({ valid }) => {
// if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// this.$refs.speedCmdControl.doShow(operate, this.selected);
// }
// });
const operate = {
start: true,
code: this.selected.code,

View File

@ -218,6 +218,13 @@ export default {
}
case OperationEvent.Signal.reopenSignal.button.operation: {
//
if (selectType.greenOpen) {
this.$refs.noticeInfo.doShow({}, `信号机[${selectType.name}(${selectType.code})]已开启,无需重开信号机`);
} else {
//
this.reopenSignalByRoute(selectType);
//
}
break;
}
case OperationEvent.Signal.guide.button.operation: {
@ -335,6 +342,27 @@ export default {
}
});
},
//
reopenSignalByRoute(selectType) {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Signal.reopenSignal.menu.operation,
param: {
signalCode: selectType.code
},
cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch((error) => {
this.$refs.noticeInfo.doShow(operate, error.message);
});
},
//
reopenSignal() {
const operate = {

View File

@ -306,42 +306,25 @@ export default {
}
});
},
//
fault() {
const operate = {
start: true,
code: this.selected.code,
operation: OperationEvent.Switch.fault.menu.operation,
param: {
switchCode: `${this.selected.code}`
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.switchCmdControl.doShow(operate, this.selected);
}
});
},
//
cancelSpeed() {
const operate = {
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Switch.cancelSpeed.menu.operation,
param: {
switchCode: `${this.selected.code}`
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
if (valid) {
const tempData = response.data;
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.speedCmdControl.doShow(operate, this.selected, tempData);
}
});
},
// cancelSpeed() {
// const operate = {
// start: true,
// send: true,
// code: this.selected.code,
// operation: OperationEvent.Switch.cancelSpeed.menu.operation,
// param: {
// switchCode: `${this.selected.code}`
// }
// };
// this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
// if (valid) {
// const tempData = response.data;
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// this.$refs.speedCmdControl.doShow(operate, this.selected, tempData);
// }
// });
// },
//
split() {

View File

@ -41,7 +41,7 @@ export default {
},
data() {
return {
unfold: false,
unfold: true,
tempData: [],
tableStyle: {
'border-bottom': 'none',
@ -105,7 +105,8 @@ export default {
const operate = {
over: true,
operation: eachCmd.operation.code,
cmdType: eachCmd.operation.cmdType
cmdType: eachCmd.operation.cmdType,
param: eachCmd.operation.param //
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;

View File

@ -49,13 +49,13 @@ export default {
},
{
label: '开放自动进路',
handler: this.atsAutoControl,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
handler: this.singalPassModel,
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO
},
{
label: '关闭自动进路',
handler: this.humanControl,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING
handler: this.singalCancelPassModel,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO
},
{
label: '终端信号封锁',
@ -307,24 +307,45 @@ export default {
arrangementRoute() {
const step = {
start: true,
// over:true,
code: `${this.selected.code}`,
operation: OperationEvent.Signal.arrangementRoute.menu.operation,
param: {
signalCode: `${this.selected.code}`
},
// cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true});
this.$store.dispatch('menuOperation/pushRequestList', { device: this.selected, operation: { code: OperationEvent.Signal.arrangementRoute.menu.operation, name: '始端/终端选择', cmdType:CMD.Signal.CMD_SIGNAL_SET_ROUTE}});
const routes = [];
this.routeList.forEach(elem => {
if (elem.startSignalCode === this.selected.code) {
routes.push(elem);
}
});
const routeCode = this.checkRoutes(routes);
this.$store.dispatch('menuOperation/pushRequestList', {
device: this.selected,
operation: {
code: OperationEvent.Signal.arrangementRoute.menu.operation,
name: '始端/终端选择',
cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE,
param: {
routeCode: routeCode
}
}
});
}
}).catch(() => {
this.$refs.noticeInfo.doShow(step);
});
},
checkRoutes(routes) {
const route = routes.filter(route => {
return route.greenOpen;
});
return route[0].code;
},
//
guide() {
const step = {
@ -334,13 +355,13 @@ export default {
operation: OperationEvent.Signal.guide.menu.operation,
param: {
signalCode: `${this.selected.code}`
},
}
// cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE
};
this.$store.dispatch('training/nextNew', step).then(({ valid, response }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/pushRequestList', {device: this.selected, operation: { code: OperationEvent.Signal.guide.menu.operation, name: '引导信号',cmdType:CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE}});
this.$store.dispatch('menuOperation/pushRequestList', {device: this.selected, operation: { code: OperationEvent.Signal.guide.menu.operation, name: '引导信号', cmdType:CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE}});
}
});
},
@ -353,14 +374,14 @@ export default {
operation: OperationEvent.Signal.cancelTrainRoute.menu.operation,
param: {
signalCode: `${this.selected.code}`
},
}
// cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/pushRequestList', {device: this.selected, operation: { code: OperationEvent.Signal.cancelTrainRoute.menu.operation, name: '取消进路',cmdType:CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE}});
this.$store.dispatch('menuOperation/pushRequestList', {device: this.selected, operation: { code: OperationEvent.Signal.cancelTrainRoute.menu.operation, name: '取消进路', cmdType:CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE}});
}
});
},
@ -373,13 +394,13 @@ export default {
operation: OperationEvent.Signal.lock.menu.operation,
param: {
signalCode: `${this.selected.code}`
},
}
// cmdType: CMD.Signal.CMD_SIGNAL_BLOCK
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/pushRequestList', { device: this.selected, operation: { code: OperationEvent.Signal.lock.menu.operation, name: '终端信号机封锁',cmdType:CMD.Signal.CMD_SIGNAL_BLOCK}});
this.$store.dispatch('menuOperation/pushRequestList', { device: this.selected, operation: { code: OperationEvent.Signal.lock.menu.operation, name: '终端信号机封锁', cmdType:CMD.Signal.CMD_SIGNAL_BLOCK}});
}
}).catch(() => {
this.$refs.noticeInfo.doShow(step);
@ -394,13 +415,13 @@ export default {
operation: OperationEvent.Signal.unlock.menu.operation,
param: {
signalCode: `${this.selected.code}`
},
}
// cmdType: CMD.Signal.CMD_SIGNAL_UNBLOCK
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/pushRequestList', { device: this.selected, operation: { code: OperationEvent.Signal.unlock.menu.operation, name: '终端信号机解封',cmdType:CMD.Signal.CMD_SIGNAL_UNBLOCK}});
this.$store.dispatch('menuOperation/pushRequestList', { device: this.selected, operation: { code: OperationEvent.Signal.unlock.menu.operation, name: '终端信号机解封', cmdType:CMD.Signal.CMD_SIGNAL_UNBLOCK}});
}
});
},

View File

@ -1,7 +1,7 @@
<template>
<div>
<pop-menu ref="popMenu" :menu="menu" />
<train-init-plan ref="trainInitPlan"/>
<train-init-plan ref="trainInitPlan" />
<notice-info ref="noticeInfo" />
</div>
</template>

View File

@ -525,7 +525,7 @@ export default {
this.$refs.routerCommand.doShow(step, this.selected, '是否执行引导命令');
}
});
},
}
}
};
</script>

View File

@ -7,7 +7,7 @@ export function getBaseUrl() {
// BASE_API = 'http://192.168.3.5:9000'; // 袁琪
// BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.41:9000'; // 张赛
// BASE_API = 'http://192.168.3.82:9000'; // 杜康
// BASE_API = 'http://192.168.8.125:9000'; // 杜康
// BASE_API = 'http://b29z135112.zicp.vip';
// BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康
// BASE_API = 'http://2i38984j47.qicp.vip'; // 张赛automaticRouteButtonList

View File

@ -1,24 +1,24 @@
<template>
<div>
<div class="standACS_title">{{ $route.query.stationName }}门禁站台层</div>
<div>
<div class="standACS_title">会展中心站门禁站台层</div>
<div>
<iscsSystem ref="iscsPlate" :widthCanvas="990" />
</div>
<iscsSystem ref="iscsPlate" :width-canvas="990" :canvas-height="500" />
</div>
</div>
</template>
<script>
import iscsSystem from "../canvas/iscsCanvas";
import iscsSystem from '../canvas/iscsCanvas';
export default {
components: {
iscsSystem
},
data() {
return {
mes: "1111"
mes: '1111'
};
},
mounted() {
this.$refs.iscsPlate.show("61");
this.$refs.iscsPlate.show('61');
},
methods: {}
};

View File

@ -1,24 +1,24 @@
<template>
<div>
<div class="stationHall_title">{{ $route.query.stationName }}门禁站厅层</div>
<div>
<div class="stationHall_title">会展中心站门禁站厅层</div>
<div>
<iscsSystem ref="iscsPlate" :widthCanvas="990" />
</div>
<iscsSystem ref="iscsPlate" :width-canvas="990" :canvas-height="600" />
</div>
</div>
</template>
<script>
import iscsSystem from "../canvas/iscsCanvas";
import iscsSystem from '../canvas/iscsCanvas';
export default {
components: {
iscsSystem
},
data() {
return {
mes: "1111"
mes: '1111'
};
},
mounted() {
this.$refs.iscsPlate.show("62");
this.$refs.iscsPlate.show('62');
},
methods: {}
};
@ -31,4 +31,4 @@ export default {
margin-top: 30px;
color: #56E5DE;
}
</style>
</style>

View File

@ -1,24 +1,24 @@
<template>
<div>
<div class="afc_title">{{ $route.query.stationName }}售检票</div>
<div>
<div class="afc_title">会展中心站售检票</div>
<div>
<iscsSystem ref="iscsPlate" :widthCanvas="990" />
</div>
<iscsSystem ref="iscsPlate" :width-canvas="1200" :canvas-height="650" />
</div>
</div>
</template>
<script>
import iscsSystem from "../canvas/iscsCanvas";
import iscsSystem from '../canvas/iscsCanvas';
export default {
components: {
iscsSystem
},
data() {
return {
mes: "1111"
mes: '1111'
};
},
mounted() {
this.$refs.iscsPlate.show("51");
this.$refs.iscsPlate.show('51');
},
methods: {}
};

View File

@ -1,6 +1,6 @@
<template>
<div class="control-bas-box">
<div class="title-name">会展中心站大系统模式表</div>
<div class="title-name">{{ $route.query.stationName }}大系统模式表</div>
<div class="control-bas">
<el-table :data="tableData" :header-row-style="tableTitleStyle" :cell-style="rowStyle" :span-method="objectSpanMethod" style="float: left;">
<el-table-column label="日期" width="300">

View File

@ -1,6 +1,6 @@
<template>
<div class="permission-box">
<div class="title-name">会展中心站控制权移交</div>
<div class="title-name">{{ $route.query.stationName }}控制权移交</div>
<div class="content-box">
<div class="content-top">
<div class="content-left">

View File

@ -28,6 +28,10 @@ export default {
widthCanvas: {
type: Number,
default: 1200
},
canvasHeight: {
type: Number,
default: 500
}
},
data() {
@ -55,18 +59,18 @@ export default {
},
computed: {
...mapGetters([
'canvasWidth',
'canvasHeight'
// 'canvasWidth',
// 'canvasHeight'
]),
iscsId() {
return ['iscs', (Math.random().toFixed(5)) * 100000].join('_');
},
width() {
return this.$store.state.config.width;
},
height() {
return this.$store.state.config.height;
}
// width() {
// return this.$store.state.config.width;
// },
// height() {
// return this.$store.state.config.height;
// }
},
watch: {
'$store.state.config.canvasSizeCount': function (val) {
@ -98,8 +102,8 @@ export default {
dom: document.getElementById(this.iscsId),
config: {
renderer: 'canvas',
width: this.width,
height: this.height
width: this.canvasWidth,
height: this.canvasHeight
},
options: {
scaleRate: 1,
@ -167,9 +171,9 @@ export default {
},
reSize() {
this.$nextTick(() => {
this.width = this.$store.state.config.width;
this.height = this.$store.state.config.height;
this.$iscs && this.$iscs.resize({ width: this.width, height: this.height });
// this.width = this.$store.state.config.width;
// this.height = this.$store.state.config.height;
// this.$iscs && this.$iscs.resize({ width: this.width, height: this.height });
});
},
back() {

View File

@ -6,9 +6,9 @@
<div class="cctv-box-top-lefttop">选择显示终端</div>
<div class="cctv-box-top-left1">
<div class="each-cctv-box-top-btn">单画面</div>
<div class="each-cctv-box-top-btn">站厅<br/>默认画面</div>
<div class="each-cctv-box-top-btn">站厅<br>默认画面</div>
<div class="each-cctv-box-top-btn active">四画面</div>
<div class="each-cctv-box-top-btn">站台<br/>默认画面</div>
<div class="each-cctv-box-top-btn">站台<br>默认画面</div>
<div class="each-cctv-box-top-btn">大屏</div>
</div>
<div class="cctv-box-top-right1">
@ -36,74 +36,74 @@
</div>
<div class="cctv-box-top-middle">
<div class="cctv-box-top-middle-title">预设位置</div>
<div style="margin-top: 20px;position: relative;left: 30px;">
<div style="display: inline-block;color: #56E5DE;">新描述</div>
<el-select v-model="value" size="mini">
<el-option
v-for="item in descriptionList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div style="margin-top: 20px;position: relative;left: 30px; width: 230px">
<el-input
type="textarea"
:rows="6"
v-model="textarea">
</el-input>
</div>
<div style="position: relative;left: 30px; width: 230px; display: flex; justify-content: space-between;margin-top: 10px">
<div class="each-cctv-box-top-gray-btn">预设位置</div>
<div class="each-cctv-box-top-gray-btn">回预位置</div>
</div>
<div style="margin-top: 20px;position: relative;left: 30px;">
<div style="display: inline-block;color: #56E5DE;">新描述</div>
<el-select v-model="value" size="mini">
<el-option
v-for="item in descriptionList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div style="margin-top: 20px;position: relative;left: 30px; width: 230px">
<el-input
v-model="textarea"
type="textarea"
:rows="6"
/>
</div>
<div style="position: relative;left: 30px; width: 230px; display: flex; justify-content: space-between;margin-top: 10px">
<div class="each-cctv-box-top-gray-btn">预设位置</div>
<div class="each-cctv-box-top-gray-btn">回预位置</div>
</div>
</div>
<div class="cctv-box-top-right">
<div class="cctv-box-top-right-title" />
<div style="text-align: center">
<div class="cctv-box-top-right-btn1"/>
<div class="cctv-box-top-right-btn1 cctv-btn-gray"/>
<div>
<div class="cctv-box-top-right-btn2"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2" style="width: 40px;"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2 cctv-btn-gray"></div>
<div class="cctv-box-top-right-btn2" style="margin-right: 0"></div>
</div>
<div class="cctv-box-top-right-btn1"/>
<div class="cctv-box-top-right-btn1 cctv-btn-gray"/>
<div>
<div style="display: inline-block;position: relative; left: -130px; color: #fff;">光圈</div>
<div style="display: inline-block;position: relative; left: 0; color: #fff;">聚焦</div>
<div style="display: inline-block;position: relative; left: 130px; color: #fff;">放大</div>
</div>
<div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -90px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -70px;">-</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -10px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 10px;">-</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 70px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 90px;">-</div>
</div>
<div style="text-align: center">
<div class="cctv-box-top-right-btn1" />
<div class="cctv-box-top-right-btn1 cctv-btn-gray" />
<div>
<div class="cctv-box-top-right-btn2" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2" style="width: 40px;" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2 cctv-btn-gray" />
<div class="cctv-box-top-right-btn2" style="margin-right: 0" />
</div>
<div class="cctv-box-top-right-btn1" />
<div class="cctv-box-top-right-btn1 cctv-btn-gray" />
<div>
<div style="display: inline-block;position: relative; left: -130px; color: #fff;">光圈</div>
<div style="display: inline-block;position: relative; left: 0; color: #fff;">聚焦</div>
<div style="display: inline-block;position: relative; left: 130px; color: #fff;">放大</div>
</div>
<div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -90px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -70px;">-</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: -10px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 10px;">-</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 70px;">+</div>
<div class="cctv-box-top-right-btn3 cctv-btn-gray" style="left: 90px;">-</div>
</div>
</div>
</div>
</div>
<div class="cctv-box-content">
<div style="position: relative;width: 75px;left: 10px;">
<div id="cctv-41" class="cctv-box-content-btn" @click="changeCCTV('41')">站厅</div>
<div id="cctv-42" class="cctv-box-content-btn" @click="changeCCTV('42')">站台</div>
<div id="cctv-43" class="cctv-box-content-btn" @click="changeCCTV('43')">云台</div>
</div>
<div class="cctv-box-content-draw">
<iscsSystem ref="iscsPlate" :widthCanvas="1490" />
</div>
<div style="position: relative;width: 75px;left: 10px;">
<div id="cctv-41" class="cctv-box-content-btn" @click="changeCCTV('41')">站厅</div>
<div id="cctv-42" class="cctv-box-content-btn" @click="changeCCTV('42')">站台</div>
<div id="cctv-43" class="cctv-box-content-btn" @click="changeCCTV('43')">云台</div>
</div>
<div class="cctv-box-content-draw">
<iscsSystem ref="iscsPlate" :width-canvas="1490" :canvas-height="400" />
</div>
</div>
<div class="cctv-box-bottom">
<div class="cctv-box-bottom-left">

View File

@ -2,7 +2,7 @@
<div class="edit-cctv-box">
<div class="title-name">CCTV时序编辑</div>
<div class="edit-cctv-top">
<div class="edit-cctv-top-title"></div>
<div class="edit-cctv-top-title" />
<div class="edit-cctv-top-content">
<div class="edit-cctv-top-contentL">
<el-table
@ -26,11 +26,11 @@
</el-table>
</div>
<div class="edit-cctv-top-contentC">
<div class="edit-cctv-top-contentCIn">
<div class="edit-cctv-top-contentCInTitle">功能选择</div>
<div class="edit-cctv-top-contentCInBtn">修改</div>
<div class="edit-cctv-top-contentCInBtn" style="margin-top:30px;">删除</div>
</div>
<div class="edit-cctv-top-contentCIn">
<div class="edit-cctv-top-contentCInTitle">功能选择</div>
<div class="edit-cctv-top-contentCInBtn">修改</div>
<div class="edit-cctv-top-contentCInBtn" style="margin-top:30px;">删除</div>
</div>
</div>
<div class="edit-cctv-top-contentR">
<el-table
@ -61,7 +61,7 @@
</div>
</div>
<div class="edit-cctv-bottom">
<div class="edit-cctv-bottom-title"></div>
<div class="edit-cctv-bottom-title" />
<div class="edit-cctv-bottom-content">
<div class="edit-cctv-bottom-contentL">
<div class="edit-cctv-bottom-contentLL">
@ -80,16 +80,16 @@
</div>
<div class="edit-cctv-bottom-contentLR">
<div class="edit-cctv-bottom-contentLRTitle">位置描述</div>
<div class="edit-cctv-bottom-contentLRGroup"></div>
<div class="edit-cctv-bottom-contentLRGroup" />
</div>
</div>
<div class="edit-cctv-bottom-contentR">
<div class="edit-cctv-bottom-contentRL">
<div class="edit-cctv-bottom-contentRLlabel">显示时间</div>
<div class="edit-cctv-bottom-contentRLtext"></div>
<div class="edit-cctv-bottom-contentRLBtn1">加入</div>
<div class="edit-cctv-bottom-contentRLBtn1">移除</div>
<div class="edit-cctv-bottom-contentRLBtn1">全部删除</div>
<div class="edit-cctv-bottom-contentRLlabel">显示时间</div>
<div class="edit-cctv-bottom-contentRLtext" />
<div class="edit-cctv-bottom-contentRLBtn1">加入</div>
<div class="edit-cctv-bottom-contentRLBtn1">移除</div>
<div class="edit-cctv-bottom-contentRLBtn1">全部删除</div>
</div>
<div class="edit-cctv-bottom-contentRC">
<div class="edit-cctv-bottom-contentRCT1">
@ -98,7 +98,7 @@
</div>
<div class="edit-cctv-bottom-contentRCT2">
<div class="edit-cctv-bottom-contentRCT2title">序列描述</div>
<div class="edit-cctv-bottom-contentRCT2text"></div>
<div class="edit-cctv-bottom-contentRCT2text" />
</div>
<div class="edit-cctv-bottom-contentRContent">
<el-table
@ -132,7 +132,7 @@
</div>
<div class="edit-cctv-bottom-foot">
<div class="edit-cctv-bottom-footL">信息提示</div>
<div class="edit-cctv-bottom-footC"></div>
<div class="edit-cctv-bottom-footC" />
<div class="edit-cctv-bottom-footR">
<div class="edit-cctv-bottom-footRbtn">车站时序</div>
</div>
@ -344,7 +344,7 @@ border-right:1px #6a7487 solid;border-bottom:1px #6a7487 solid;}
margin-top: 45px;
height: 160px;
border: 1px #061c77 solid;
}
.edit-cctv-top-contentCInTitle{font-size:13px;background:#5c48f8;color:#fff;padding:5px 0px;text-align:center}
.edit-cctv-top-contentCInBtn{

View File

@ -1,10 +1,10 @@
<template>
<div>
<div class="stand_title">会展中心站火灾报警站台报警</div>
<div class="">
<iscsSystem ref="iscsPlate" :widthCanvas="1520" />
</div>
<div>
<div class="stand_title">{{ $route.query.stationName }}火灾报警站台报警</div>
<div class="">
<iscsSystem ref="iscsPlate" :width-canvas="1520" :canvas-height="500" />
</div>
</div>
</template>
<script>
@ -22,8 +22,8 @@ export default {
this.$refs.iscsPlate.show('12');
},
methods: {
},
}
};
</script>

View File

@ -1,10 +1,10 @@
<template>
<div>
<div class="stationHall_title">会展中心站火灾报警站厅报警</div>
<div class="">
<iscsSystem ref="iscsPlate" :widthCanvas="1300" />
</div>
<div>
<div class="stationHall_title">{{ $route.query.stationName }}火灾报警站厅报警</div>
<div class="">
<iscsSystem ref="iscsPlate" :width-canvas="1300" :canvas-height="650" />
</div>
</div>
</template>
<script>
@ -22,8 +22,8 @@ export default {
this.$refs.iscsPlate.show('11');
},
methods: {
},
}
};
</script>

View File

@ -1,6 +1,6 @@
<template>
<div class="">
系统报警
{{ $route.query.stationName }}系统报警
</div>
</template>

View File

@ -1,170 +1,173 @@
<template>
<el-dialog
v-dialogDrag
:visible.sync="visible"
width="800px"
:before-close="doClose"
class="iscs-voice-broadcast-dialog"
>
<div>
<div class="dialog-header">信息广播</div>
<div class="iscs-pis-dialog-info">
<el-radio-group v-model="addModel.infoType">
<el-radio label="realTime">实时信息</el-radio>
<el-radio label="common">普通信息</el-radio>
<el-radio label="emergency" class="iscs-pis-dialog-emergencyInfo">紧急信息</el-radio>
</el-radio-group>
</div>
<div v-show="addModel.infoType !== 'realTime'" class="secondary-title">{{ this.message[this.addModel.infoType].title }}</div>
<div v-show="addModel.infoType !== 'realTime'" class="information-description-box">
<div v-for="(item,index) in message[addModel.infoType].infoList" :key="index">
<div class="information-box">{{item.title}}</div>
</div>
</div>
<div v-show="addModel.infoType === 'realTime'">
<el-row>
<el-col :span="20">
<div>
<div class="secondary-title">实时信息显示内容</div>
<div class="information-context-box">
<el-input
type="textarea"
:rows="4"
placeholder="请输入内容"
v-model="addModel.infoContent">
</el-input>
</div>
</div>
</el-col>
<el-col :span="3" :offset="1">
<div class="iscs-pis-dialog-info" style="text-align: left">
<div style="margin-bottom: 20px; font-size: 16px; margin-top: 10px;">优先等级</div>
<el-radio v-model="addModel.priority" style="margin-bottom: 20px;" label="common">普通</el-radio>
<el-radio v-model="addModel.priority" label="emergency">紧急</el-radio>
</div>
</el-col>
</el-row>
</div>
<div style="margin-top: 10px">
<div style="display: inline;">名称</div>
<input class="pis-dialog-input" style="width: 550px;" v-model="addModel.infoTitle"/>
<input v-show="addModel.infoType !== 'emergency'" class="pis-dialog-input" style="width: 140px;" v-model="addModel.infoTime"/>
<div v-show="addModel.infoType !== 'emergency'" style="display: inline;"></div>
</div>
<div v-show="addModel.infoType !== 'realTime'" class="secondary-title" style="margin-top: 10px">{{ this.message[this.addModel.infoType].title + '内容显示' }}</div>
<div v-show="addModel.infoType !== 'realTime'" class="information-context-box">站台有乘客越出X色安全线站台乘客请返回安前线内站台有乘客越出X色安全线成熟的技术等级分类</div>
<div v-show="addModel.infoType === 'realTime'" class="information-description-box" style="margin-top: 15px;">
<el-row>
<el-col :span="6" style="border-right:2px solid #898888; min-height: 100px">
<div v-for="(item,index) in message[addModel.infoType].infoList" :key="index">
<div class="information-box" @click="selectedRealTimeInfo(item)">{{item.title}}</div>
</div>
</el-col>
<el-col>
<div>{{ showRealTimeInfo }}</div>
</el-col>
</el-row>
</div>
<div class="button-group">
<el-select v-show="addModel.infoType === 'realTime'" v-model="value" placeholder="信息选择" size="mini">
<el-option
v-for="item in infoList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div v-show="addModel.infoType === 'realTime'" class="pis-button">储存</div>
<div class="button-group-content" :style="{left: addModel.infoType ==='realTime'?'300px':'550px'}">
<div class="pis-button">设定中</div>
<div class="pis-button" @click="releaseBroadcast">发布</div>
<div class="pis-button">取消</div>
</div>
</div>
<div class="pis-dialog-form-box">
<el-form ref="form" :model="form" label-width="95px">
<el-row>
<el-col :span="3">
<div class="pis-button" style="position: relative; top: 10px;left: 5px; padding: 7px 10px ;">导入描述</div>
</el-col>
<el-col :span="21">
<el-form-item :prop="description" label-width="0">
<input v-model="form.description" style="width:600px;" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="21">
<el-row>
<el-col :span="12">
<el-form-item :prop="startDate" label="开始日期">
<el-date-picker
v-model="form.startDate"
type="date"
size="mini"
placeholder="选择日期"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="endTime" label="结束时间">
<el-time-picker
arrow-control
v-model="form.endTime"
size="mini"
placeholder="选择时间"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :prop="startTime" label="开始时间">
<el-time-picker
arrow-control
v-model="form.startTime"
size="mini"
placeholder="选择时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="endDate" label="结束日期">
<el-date-picker
v-model="form.endDate"
type="date"
size="mini"
placeholder="选择日期"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :prop="durationTime" label="延续时间">
<el-time-picker
arrow-control
v-model="form.durationTime"
size="mini"
placeholder="选择时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<div style="text-align: center;padding-top: 10px;">
<div class="pis-button">今日</div>
<div class="pis-button">一次</div>
<div class="pis-button">无截止</div>
</div>
</el-col>
</el-row>
</el-col>
<el-col :span="3">
<div class="each_operate_button">排定<br>确认</div>
</el-col>
</el-row>
</el-form>
</div>
v-dialogDrag
:visible.sync="visible"
width="800px"
:before-close="doClose"
class="iscs-voice-broadcast-dialog"
>
<div>
<div class="dialog-header">信息广播</div>
<div class="iscs-pis-dialog-info">
<el-radio-group v-model="addModel.infoType">
<el-radio label="realTime">实时信息</el-radio>
<el-radio label="common">普通信息</el-radio>
<el-radio label="emergency" class="iscs-pis-dialog-emergencyInfo">紧急信息</el-radio>
</el-radio-group>
</div>
<div v-show="addModel.infoType !== 'realTime'" class="secondary-title">{{ this.message[this.addModel.infoType].title }}</div>
<div v-show="addModel.infoType !== 'realTime'" class="information-description-box">
<div v-for="(item,index) in message[addModel.infoType].infoList" :key="index">
<div class="information-box">{{ item.title }}</div>
</div>
</el-dialog>
</div>
<div v-show="addModel.infoType === 'realTime'">
<el-row>
<el-col :span="20">
<div>
<div class="secondary-title">实时信息显示内容</div>
<div class="information-context-box">
<el-input
v-model="addModel.infoContent"
type="textarea"
:rows="4"
placeholder="请输入内容"
/>
</div>
</div>
</el-col>
<el-col :span="3" :offset="1">
<div class="iscs-pis-dialog-info" style="text-align: left">
<div style="margin-bottom: 20px; font-size: 16px; margin-top: 10px;">优先等级</div>
<el-radio v-model="addModel.priority" style="margin-bottom: 20px;" label="common">普通</el-radio>
<el-radio v-model="addModel.priority" label="emergency">紧急</el-radio>
</div>
</el-col>
</el-row>
</div>
<div style="margin-top: 10px">
<div style="display: inline;">名称</div>
<input v-model="addModel.infoTitle" class="pis-dialog-input" style="width: 550px;">
<input v-show="addModel.infoType !== 'emergency'" v-model="addModel.infoTime" class="pis-dialog-input" style="width: 140px;">
<div v-show="addModel.infoType !== 'emergency'" style="display: inline;"></div>
</div>
<div v-show="addModel.infoType !== 'realTime'" class="secondary-title" style="margin-top: 10px">{{ this.message[this.addModel.infoType].title + '内容显示' }}</div>
<div v-show="addModel.infoType !== 'realTime'" class="information-context-box">站台有乘客越出X色安全线站台乘客请返回安前线内站台有乘客越出X色安全线成熟的技术等级分类</div>
<div v-show="addModel.infoType === 'realTime'" class="information-description-box" style="margin-top: 15px;">
<el-row>
<el-col :span="6" style="border-right:2px solid #898888; min-height: 100px">
<div v-for="(item,index) in message[addModel.infoType].infoList" :key="index">
<div class="information-box" @click="selectedRealTimeInfo(item)">{{ item.title }}</div>
</div>
</el-col>
<el-col>
<div>{{ showRealTimeInfo }}</div>
</el-col>
</el-row>
</div>
<div class="button-group">
<el-select v-show="addModel.infoType === 'realTime'" v-model="value" placeholder="信息选择" size="mini">
<el-option
v-for="item in infoList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<div v-show="addModel.infoType === 'realTime'" class="pis-button">储存</div>
<div class="button-group-content" :style="{left: addModel.infoType ==='realTime'?'300px':'550px'}">
<div class="pis-button">设定中</div>
<div class="pis-button" @click="releaseBroadcast">发布</div>
<div class="pis-button">取消</div>
</div>
</div>
<div class="pis-dialog-form-box">
<el-form ref="form" :model="form" label-width="95px">
<el-row>
<el-col :span="3">
<div class="pis-button" style="position: relative; top: 10px;left: 5px; padding: 7px 10px ;">导入描述</div>
</el-col>
<el-col :span="21">
<el-form-item :prop="description" label-width="0">
<input v-model="form.description" style="width:600px;">
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="21">
<el-row>
<el-col :span="12">
<el-form-item :prop="startDate" label="开始日期">
<el-date-picker
v-model="form.startDate"
type="date"
size="mini"
placeholder="选择日期"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="endTime" label="结束时间">
<el-time-picker
v-model="form.endTime"
arrow-control
size="mini"
placeholder="选择时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :prop="startTime" label="开始时间">
<el-time-picker
v-model="form.startTime"
arrow-control
size="mini"
placeholder="选择时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :prop="endDate" label="结束日期">
<el-date-picker
v-model="form.endDate"
type="date"
size="mini"
placeholder="选择日期"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item :prop="durationTime" label="延续时间">
<el-time-picker
v-model="form.durationTime"
arrow-control
size="mini"
placeholder="选择时间"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<div style="text-align: center;padding-top: 10px;">
<div class="pis-button">今日</div>
<div class="pis-button">一次</div>
<div class="pis-button">无截止</div>
</div>
</el-col>
</el-row>
</el-col>
<el-col :span="3">
<div class="each_operate_button">排定<br>确认</div>
</el-col>
</el-row>
</el-form>
</div>
</div>
</el-dialog>
</template>
<script>
@ -310,7 +313,7 @@ export default {
this.showRealTimeInfo = item.content;
}
}
}
};
</script>
<style scoped>

View File

@ -37,10 +37,10 @@
<div class="screen_station_name">{{ station.stationName }}</div>
</div>
<div v-if="station.children&&station.children.length>0">
<div v-for="(child,index) in station.children" :key="station.stationName+index" class="each_data_info" @click="selectArea(station.stationName,index)" style="text-align: center;">
<div v-if="child.status==='default'" class="button_default_content">
<div class="button_default" :style="{background:selectedAreaList.includes(station.stationName + '-' + index)?'#2EFF74':'#CDCDCD'}" />
</div>
<div v-for="(child,index) in station.children" :key="station.stationName+index" class="each_data_info" style="text-align: center;" @click="selectArea(station.stationName,index)">
<div v-if="child.status==='default'" class="button_default_content">
<div class="button_default" :style="{background:selectedAreaList.includes(station.stationName + '-' + index)?'#2EFF74':'#CDCDCD'}" />
</div>
</div>
</div>
</div>
@ -80,7 +80,7 @@
</div>
</div>
</div>
<info-broadcast ref="infoBroadcast" />
<info-broadcast ref="infoBroadcast" />
</div>
</template>
<script>

View File

@ -45,13 +45,13 @@
<div class="time_preview_footer">
<div class="preview_footer_top">操作</div>
<div class="preview_footer_content">
<div class="each_preview_btn each_preview_back">区域<br/>详细</div>
<div class="each_preview_btn each_preview_back">区域<br>详细</div>
<div class="each_preview_btn each_preview_back">删除</div>
<div class="each_preview_btn each_preview_back">停用</div>
<div class="each_preview_btn each_preview_back1">激活</div>
<div class="each_preview_btn each_preview_back2">修改</div>
</div>
</div>
</div>
</div>
</template>
<script>

View File

@ -1,24 +1,24 @@
<template>
<div>
<div class="psd_title">{{ $route.query.stationName }}屏蔽门</div>
<div>
<div class="psd_title">会展中心站屏蔽门</div>
<div>
<iscsSystem ref="iscsPlate" :widthCanvas="1490" />
</div>
<iscsSystem ref="iscsPlate" :width-canvas="1490" :canvas-height="800" />
</div>
</div>
</template>
<script>
import iscsSystem from "../canvas/iscsCanvas";
import iscsSystem from '../canvas/iscsCanvas';
export default {
components: {
iscsSystem
},
data() {
return {
mes: "1111"
mes: '1111'
};
},
mounted() {
this.$refs.iscsPlate.show("31");
this.$refs.iscsPlate.show('31');
},
methods: {}
};

View File

@ -34,7 +34,8 @@ export default {
return {
selectIndex: 0,
selectChildIndex: -1,
selectStationIndex: -1,
selectStationIndex: 0,
type: '',
currentSystem: 'center',
systemList: [
{
@ -275,16 +276,19 @@ export default {
this.selectIndex = index;
this.selectChildIndex = 0;
if (item.children.length) {
this.$router.push({ path: `/iscs/system/config/${item.children[0].type}`, query: {currentSystem:this.currentSystem} });
this.type = item.children[0].type;
this.$router.push({ path: `/iscs/system/config/${item.children[0].type}`, query: {currentSystem:this.currentSystem, stationName: this.stationList[this.selectStationIndex].name, stationId: this.stationList[this.selectStationIndex].id } });
}
}
},
selectChildren(item, index) { //
this.selectChildIndex = index;
this.$router.push({ path: `/iscs/system/config/${item.type}`, query: {currentSystem:this.currentSystem} });
this.type = item.type;
this.$router.push({ path: `/iscs/system/config/${item.type}`, query: {currentSystem:this.currentSystem, stationName: this.stationList[this.selectStationIndex].name, stationId: this.stationList[this.selectStationIndex].id } });
},
selectStation(item, index) { //
this.selectStationIndex = index;
this.$router.push({ path: `/iscs/system/config/${this.type}`, query: {currentSystem:this.currentSystem, stationName: this.stationList[this.selectStationIndex].name, stationId: this.stationList[this.selectStationIndex].id } });
},
back() {
this.$router.push({ path: `/design/home` });

View File

@ -164,11 +164,11 @@ export default {
};
//
const path = window.location.href;
let mouseWheelFlag = false;
const mouseWheelFlag = true;
let previewOrMapDraw = false;
if (path.includes('design/userlist/map/draw') || path.includes('design/usermap/map/draw')) {
mouseWheelFlag = true;
}
// if (path.includes('design/userlist/map/draw') || path.includes('design/usermap/map/draw')) {
// mouseWheelFlag = true;
// }
if (path.indexOf('map/draw') !== -1 || path.indexOf('mapPreviewNew') !== -1) {
previewOrMapDraw = true;
}

View File

@ -14,12 +14,50 @@
</el-button-group>
</el-form-item>
</el-form>
<el-form ref="formModel" :model="formModel" label-width="200px" size="mini" :rules="formRules">
<el-form-item label="区段编码:" prop="modelList">
<el-select v-model="formModel.modelList" filterable multiple>
<el-option
v-for="item in sectionList"
:key="item.code"
:label="item.name + '(' + item.code + ')'"
:value="item.code"
/>
</el-select>
<el-button
:type="field === 'sectionTypeCode' ? 'danger' : 'primary'"
size="small"
@click="hover('sectionTypeCode')"
>{{ $t('map.activate') }}</el-button>
</el-form-item>
<el-form-item label="区段名称位置:" prop="trainPosType">
<el-select
v-model="formModel.trainPosType"
placeholder="请选择"
:clearable="true"
>
<el-option
v-for="option in positionTypes"
:key="option.type"
:label="option.name"
:value="option.type"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button-group>
<el-button type="primary" size="big" @click="setPositionType">{{ $t('global.set') }}</el-button>
</el-button-group>
</el-form-item>
</el-form>
</el-scrollbar>
</div>
</template>
<script>
import { deepAssign } from '@/utils/index';
import { mapGetters } from 'vuex';
export default {
name: 'BatchSettings',
props: {
@ -28,6 +66,12 @@ export default {
default: function() {
return [];
}
},
field: {
type: Object,
default: function () {
return '';
}
}
},
data() {
@ -36,10 +80,34 @@ export default {
leftDistance: 0,
rightDistance: 0
},
tipInfoList: []
formModel: {
modelList: [],
trainPosType: ''
},
positionTypes: [
{ name: '上方', type: '01' },
{ name: '下方', type: '02' }
],
tipInfoList: [],
formRules: {
trainPosType: [
{ required: true, message: '请选择', trigger: 'change' }
],
modelList: [
{ required: true, message: '请选择', trigger: 'change' }
]
}
};
},
computed: {
...mapGetters('map', [
'sectionList'
])
},
methods:{
hover(filed) {
this.$emit('hover', filed);
},
batchSettings() {
this.tipInfoList = [];
const models = [];
@ -63,6 +131,20 @@ export default {
this.$message.success(this.$t('tip.stopPointOffsetTip'));
}
}
},
setPositionType() {
const models = [];
this.$refs['formModel'].validate((valid) => {
if (valid) {
this.formModel.modelList.forEach(sectionCode => {
const model = deepAssign({}, this.$store.getters['map/getDeviceByCode'](sectionCode) || {});
model.trainPosType = this.formModel.trainPosType;
models.push(model);
});
this.$emit('updateMapModel', models, 'five');
this.$refs.formModel.resetFields(); //
}
});
}
}
};

View File

@ -24,7 +24,7 @@
<logic-block ref="logicBlock" :edit-model="editModel" @updateMapModel="updateMapModel" />
</el-tab-pane>
<el-tab-pane class="view-control" :label="$t('map.batchSettings')" name="five">
<batch-settings ref="batchSettings" :section-list="sectionList" @updateMapModel="updateMapModel" @tipInfoHandle="tipInfoHandle" />
<batch-settings ref="batchSettings" :field="field" :section-list="sectionList" @hover="hover" @updateMapModel="updateMapModel" @tipInfoHandle="tipInfoHandle" />
</el-tab-pane>
<tip-info ref="tipInfo" :tip-info-list="tipInfoList" />
</el-tabs>
@ -453,6 +453,11 @@ export default {
this.activeName = 'second';
this.field = '';
this.$emit('fieldSelect', '');
} else if (this.field.toUpperCase() === 'sectionTypeCode'.toUpperCase()) {
this.$refs.batchSettings.formModel.modelList.push(selected.code);
this.activeName = 'five';
// this.field = '';
// this.$emit('fieldSelect', '');
}
}
},