Merge remote-tracking branch 'remotes/origin/test'
# Conflicts: # src/jmapNew/config/skinCode/datie_02.js # src/jmapNew/constant/deviceRender.js # src/jmapNew/constant/deviceType.js # src/jmapNew/parser/parser-graph.js # src/jmapNew/shape/graph/SaidLamp/EPickOrDepartArrow.js # src/jmapNew/shape/graph/SaidLamp/index.js # src/jmapNew/shape/graph/SignalButton/index.js # src/jmapNew/shape/graph/Station/index.js # src/jmapNew/shape/graph/index.js # src/jmapNew/theme/datie_02/menus/dialog/childDialog/passwordInputBox.vue # src/jmapNew/theme/datie_02/menus/index.vue # src/jmapNew/theme/datie_02/menus/menuButton.vue # src/jmapNew/theme/datie_02/menus/menuSection.vue # src/jmapNew/theme/datie_02/menus/menuSignal.vue # src/jmapNew/theme/datie_02/menus/menuStation.vue # src/jmapNew/theme/datie_02/menus/menuStationStand.vue # src/jmapNew/theme/datie_02/menus/menuSwitch.vue # src/jmapNew/theme/datie_02/menus/menuTrain.vue # src/jmapNew/theme/factory.js # src/scripts/cmdPlugin/OperationHandler.js # src/views/newMap/newMapdraft/mapoperate/controlLamp.vue # src/views/newMap/newMapdraft/mapoperate/models.js # src/views/newMap/newMapdraft/mapoperate/signalButton.vue
36
src/api/assist.js
Normal file
@ -0,0 +1,36 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 查询指示灯关联信息列表
|
||||
export function queryAssistListPaged(params, mapId) {
|
||||
return request({
|
||||
// url: `/api/assist/indicator/section/list/${mapId}`,
|
||||
url: `/api/station/direction/list/${mapId}`,
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
||||
// 根据id查询单个指示灯关联信息
|
||||
export function queryAssistById(mapId){
|
||||
return request({
|
||||
// url: `/api/assist/indicator/section/${id}`,
|
||||
url: `/api/station/direction/${mapId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
// 保存指示灯关联信息
|
||||
export function saveAssist(data, mapId) {
|
||||
return request({
|
||||
// url: `/api/assist/indicator/section/save/${mapId}`,
|
||||
url: `/api/station/direction/save/${mapId}`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 删除指示灯关联关系
|
||||
export function deleteAssist(id) {
|
||||
return request({
|
||||
// url: `/api/assist/indicator/section/delete/${id}`,
|
||||
url: `/api/station/direction/delete/${id}`,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
@ -743,3 +743,10 @@ export function generateDepotCiData(mapId, stationCode) {
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
// 大铁线路批量生成进路
|
||||
export function generateRoute(mapId) {
|
||||
return request({
|
||||
url: `/api/draftMap/${mapId}/route/railway/generate`,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
|
BIN
src/assets/datie/arrow.png
Normal file
After Width: | Height: | Size: 512 B |
BIN
src/assets/datie/camera.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/datie/controlPanel.png
Normal file
After Width: | Height: | Size: 735 B |
BIN
src/assets/datie/controlPanel2.png
Normal file
After Width: | Height: | Size: 468 B |
BIN
src/assets/datie/link.png
Normal file
After Width: | Height: | Size: 574 B |
BIN
src/assets/datie/picT3.png
Normal file
After Width: | Height: | Size: 464 B |
BIN
src/assets/datie/train.png
Normal file
After Width: | Height: | Size: 916 B |
@ -430,6 +430,8 @@ class SkinCode extends defaultStyle {
|
||||
veryControl: {
|
||||
show: true,
|
||||
offset: { x: 0, y: 0 },
|
||||
lightColor: '#f00',
|
||||
defaultColor: '#7F7F7F',
|
||||
text: '非常站控'
|
||||
},
|
||||
selfDiscipline: {
|
||||
@ -440,11 +442,15 @@ class SkinCode extends defaultStyle {
|
||||
selfDisciplineControl: {
|
||||
show: true,
|
||||
offset: { x: 0, y: 0 },
|
||||
lightColor: '#0f0',
|
||||
defaultColor: '#7F7F7F',
|
||||
text: '自律控制'
|
||||
},
|
||||
veryControlButton: {
|
||||
offset: { x: 0, y: 0 },
|
||||
text: '非常站控'
|
||||
text: '非常站控',
|
||||
lightColor: '#ff0',
|
||||
defaultColor: '#ccc',
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -794,7 +800,9 @@ class SkinCode extends defaultStyle {
|
||||
], // 特殊列车类型需设置显示格式
|
||||
lrPadding: 4, // 两边间隔
|
||||
upPadding: 4, // 上边距离
|
||||
trainBodyFillColor: '#000099', // 列车车身填充颜色
|
||||
trainBodyFillColor: '#88DF8E', // 列车车身填充颜色
|
||||
trainSidelineColor: '#F00',
|
||||
trainSidelineStopColor: '#000',
|
||||
trainNameFormat: 'serviceNumber:targetCode'// 列车显示格式
|
||||
},
|
||||
directionArrow: {
|
||||
@ -804,7 +812,7 @@ class SkinCode extends defaultStyle {
|
||||
trainBody: true,
|
||||
earlyColor: '#00FF00',
|
||||
lateColor: '#800000',
|
||||
normalColor: '#FFF'
|
||||
normalColor: '#F00'
|
||||
},
|
||||
hsda: {
|
||||
lrPaddingHSDA: 3, // HSDA两边间隔
|
||||
@ -818,13 +826,15 @@ class SkinCode extends defaultStyle {
|
||||
trainNumber: {
|
||||
targetCodePrefix: '000', // 目的地码前缀
|
||||
defaultTargetCode: 'DDD', // 默认目的地码
|
||||
trainTargetTextAlign: 'left', // 目的地码文字显示位置
|
||||
fontColor: '#F00',
|
||||
trainTargetTextAlign: 'left', // 目的地码文字显示位置
|
||||
trainNumberOffset: { x: 24, y: 4}// 目的地码偏移量
|
||||
},
|
||||
trainServer: {
|
||||
serviceNumberPrefix: '000', // 服务号(表号)前缀
|
||||
defaultServiceNumber: 'TTT', // 默认服务号(表号)
|
||||
defaultServerNoColor: '#FFFFFF', // 默认服务号状态显示颜色
|
||||
defaultServerNoColor: '#F00', // 默认服务号状态显示颜色
|
||||
fontColor: '#F00',
|
||||
trainServerOffset: { x: 4, y: 4} // 列车服务号偏移
|
||||
},
|
||||
trainTarget: {
|
||||
@ -839,21 +849,23 @@ class SkinCode extends defaultStyle {
|
||||
trainTargetNumberOffset: {x: -4, y: 4}// 车组号偏移量
|
||||
},
|
||||
trainHead: {
|
||||
trainConntWidth: 3, // 列车竖杠的宽度
|
||||
trainHeadFillColor: '#000000', // 列车车头矩形填充颜色
|
||||
trainConntWidth: 10, // 列车竖杠的宽度
|
||||
trainHeadFillColor: '#189B4D', // 列车车头矩形填充颜色
|
||||
trainHeadRectNoChange: true, // 列车车头矩形填充颜色不变
|
||||
trainHeadRectHeight: 20, // 列车车头矩形高度
|
||||
directionStopType:'normal', // special 西安二号线 停车 列车方向图标不消失 normal 正常
|
||||
directionStopType:'specialAll', // special 西安二号线 停车 列车方向图标不消失 normal 正常
|
||||
trainHeadHeight: 'trainBox', // 列车车头高度取决于trainBox高度
|
||||
trainHeadArrowWidth: 6, // 列车车头三角宽度
|
||||
trainHeadArrowOffsetX: 5 // 列车车头三角偏移
|
||||
trainHeadArrowWidth: 15, // 列车车头三角宽度
|
||||
trainHeadArrowOffsetX: 0, // 列车车头三角偏移
|
||||
trainHeadRectOffsetX: 10
|
||||
},
|
||||
common: {
|
||||
trainHeight: 20, // 列车高度
|
||||
trainHeadDistance: 4, // 列车和车头之间的间距
|
||||
trainHeadDistance: 2, // 列车和车头之间的间距
|
||||
trainWidth: 48, // 列车长度
|
||||
trainTextFontSize: 12, // 列车字号
|
||||
fontFamily: 'consolas', // 默认字体 族类
|
||||
haveTextHSDA: true, // 是否需创建textHSDA对象
|
||||
haveTextHSDA: false, // 是否需创建textHSDA对象
|
||||
haveArrowText: true, // 是否需创建arrowText对象
|
||||
textOffset: 4, // 字体偏移(用以控制字体据车头的距离)
|
||||
trainWidthMoreText: 8, // 计算列车长度时--列车长比text多出尺寸
|
||||
@ -878,7 +890,7 @@ class SkinCode extends defaultStyle {
|
||||
directionType: [
|
||||
{
|
||||
type: 1,
|
||||
lineLShow: false,
|
||||
lineLShow: true,
|
||||
lineRShow: true,
|
||||
arrowLShow: false,
|
||||
arrowRShow: true
|
||||
@ -886,7 +898,7 @@ class SkinCode extends defaultStyle {
|
||||
{
|
||||
type: 0,
|
||||
lineLShow: true,
|
||||
lineRShow: false,
|
||||
lineRShow: true,
|
||||
arrowLShow: true,
|
||||
arrowRShow: false
|
||||
}
|
||||
@ -894,13 +906,17 @@ class SkinCode extends defaultStyle {
|
||||
directionStopType: [
|
||||
{
|
||||
type: 1,
|
||||
lineLShow: false,
|
||||
lineRShow: true
|
||||
lineLShow: true,
|
||||
arrowLShow: false,
|
||||
lineRShow: false,
|
||||
arrowRShow: true
|
||||
},
|
||||
{
|
||||
type: 0,
|
||||
lineLShow: true,
|
||||
lineRShow: false
|
||||
lineLShow: false,
|
||||
arrowLShow: true,
|
||||
lineRShow: true,
|
||||
arrowRShow: false
|
||||
}
|
||||
], // 列车停止方向类型对应车头显示状态 1从左往右 0从右往左
|
||||
driveModeStatus: [
|
||||
@ -916,8 +932,8 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
{
|
||||
status: 'RM',
|
||||
trainLColor: '#C2C2C2',
|
||||
trainRColor: '#C2C2C2'
|
||||
trainLColor: '#fff',
|
||||
trainRColor: '#fff'
|
||||
},
|
||||
{
|
||||
status: 'NRM',
|
||||
@ -947,16 +963,35 @@ class SkinCode extends defaultStyle {
|
||||
fontFamily:'宋体'
|
||||
}
|
||||
};
|
||||
this[deviceType.PickOrDepartArrow] = {
|
||||
triangleLength: 10,
|
||||
lineWidth: 4,
|
||||
length: 20,
|
||||
this[deviceType.DepartArrow] = {
|
||||
triangleLength: 15,
|
||||
lineWidth: 8,
|
||||
length: 35,
|
||||
distance: 15,
|
||||
fill: '#000',
|
||||
stroke: '#fff',
|
||||
fontSize: 11,
|
||||
defaultText: '接发车',
|
||||
defaultColor: '#ccc'
|
||||
defaultText: '发车',
|
||||
defaultColor: '#ccc',
|
||||
occupiedColor:'#f00',
|
||||
noOccupiedColor:'#00ff00',
|
||||
blockStatusColor:'#00ff00',
|
||||
noBlockStatusColor:'#ffff00',
|
||||
};
|
||||
this[deviceType.PickArrow] = {
|
||||
triangleLength: 15,
|
||||
lineWidth: 8,
|
||||
length: 35,
|
||||
distance: 15,
|
||||
fill: '#000',
|
||||
stroke: '#fff',
|
||||
fontSize: 11,
|
||||
defaultText: '接车',
|
||||
defaultColor: '#ccc',
|
||||
occupiedColor:'#f00',
|
||||
noOccupiedColor:'#ffff00',
|
||||
blockStatusColor:'#00ff00',
|
||||
noBlockStatusColor:'#ffff00',
|
||||
};
|
||||
this[deviceType.Occlusion] = {
|
||||
text: {
|
||||
@ -1032,7 +1067,8 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
lamp: {
|
||||
radiusR: 6,
|
||||
controlColor: '#ccc'
|
||||
controlColor: '#ccc',
|
||||
occupiedColor:'#ffffff',
|
||||
}
|
||||
};
|
||||
this[deviceType.SectionOccupied] = {
|
||||
@ -1043,7 +1079,8 @@ class SkinCode extends defaultStyle {
|
||||
},
|
||||
lamp: {
|
||||
radiusR: 6,
|
||||
controlColor: '#ccc'
|
||||
controlColor: '#ccc',
|
||||
occupiedColor:'#ff0000',
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -810,12 +810,16 @@ class SkinCode extends defaultStyle {
|
||||
{
|
||||
type: 1,
|
||||
lineLShow: false,
|
||||
lineRShow: true
|
||||
arrowLShow: false,
|
||||
lineRShow: false,
|
||||
arrowRShow: true,
|
||||
},
|
||||
{
|
||||
type: 0,
|
||||
lineLShow: true,
|
||||
lineRShow: false
|
||||
lineLShow: false,
|
||||
arrowLShow: true,
|
||||
lineRShow: false,
|
||||
arrowRShow: false,
|
||||
}
|
||||
], // 列车停止方向类型对应车头显示状态 1从左往右 0从右往左
|
||||
driveModeStatus: [
|
||||
|
@ -285,9 +285,14 @@ deviceRender[deviceType.IndicatorLight] = {
|
||||
_type: deviceType.IndicatorLight,
|
||||
zlevel: 1
|
||||
};
|
||||
/** 接发车指示灯 */
|
||||
deviceRender[deviceType.PickOrDepartArrow] = {
|
||||
_type: deviceType.PickOrDepartArrow,
|
||||
/** 接车指示灯 */
|
||||
deviceRender[deviceType.PickArrow] = {
|
||||
_type: deviceType.PickArrow,
|
||||
zlevel: 1
|
||||
};
|
||||
/** 发车指示灯 */
|
||||
deviceRender[deviceType.DepartArrow] = {
|
||||
_type: deviceType.DepartArrow,
|
||||
zlevel: 1
|
||||
};
|
||||
/** 区间占用 区间监控 */
|
||||
|
@ -51,7 +51,8 @@ const deviceType = {
|
||||
DirectionRod: 'DirectionRod',
|
||||
Responder: 'Responder',
|
||||
SignalButton: 'SignalButton',
|
||||
PickOrDepartArrow: 'PickOrDepartArrow',
|
||||
PickArrow: 'PickArrow',
|
||||
DepartArrow: 'DepartArrow',
|
||||
Occlusion: 'Occlusion',
|
||||
Accident: 'Accident',
|
||||
Recovery: 'Recovery',
|
||||
|
@ -471,6 +471,101 @@ class Jlmap {
|
||||
}
|
||||
}
|
||||
store.commit('map/mapStationStateUpdate');
|
||||
} else if (elem.deviceType === 'STATION_DIRECTION') {
|
||||
const mapStationDirectionData = store.state.map.mapStationDirectionData;
|
||||
// 大铁项目 车站方向
|
||||
const directionData = mapStationDirectionData[code];
|
||||
// store.state.map.map.indicatorLightList;
|
||||
// 改方按钮状态
|
||||
const signalButtonList = store.state.map.map.signalButtonList;
|
||||
const selectButtonList = signalButtonList.filter(elem=>{
|
||||
return elem.labelEnum === directionData.labelEnum && elem.stationCode == directionData.stationCode;
|
||||
});
|
||||
const selectMap = {'ASSIST':'mainAssistStatus',
|
||||
'PICK_ASSIST':'receiveAssistStatus',
|
||||
'DEPART_ASSIST':'deliverAssistStatus',
|
||||
'CHANGE_DIRECTION':'changeDirectionStatus',
|
||||
// 闭塞按钮
|
||||
'OCCLUSION':'blockStatus',
|
||||
// 事故按钮
|
||||
'ACCIDENT':'accidentStatus',
|
||||
// 复原按钮
|
||||
'RECOVERY':'restoreStatus'
|
||||
};
|
||||
// { value: 'ASSIST', label: '总辅助按钮' },
|
||||
// { value: 'PICK_ASSIST', label: '接辅助按钮' },
|
||||
// { value: 'DEPART_ASSIST', label: '发辅助按钮' },
|
||||
selectButtonList.forEach(each=>{
|
||||
const buttonModel = this.mapDevice[each.code];
|
||||
const selectedStatus = selectMap[buttonModel.type];
|
||||
if (selectedStatus != undefined && elem[selectedStatus] != undefined) {
|
||||
buttonModel.pressDown = elem[selectedStatus];
|
||||
this.$painter.update(buttonModel);
|
||||
}
|
||||
});
|
||||
|
||||
// 接车 发车 区间占用 辅助状态
|
||||
const indicatorLightList = store.state.map.map.indicatorLightList;
|
||||
const indicatorList = indicatorLightList.filter(elem=>{
|
||||
return elem.labelEnum === directionData.labelEnum && elem.stationCode == directionData.stationCode;
|
||||
});
|
||||
indicatorList.forEach(each=>{
|
||||
const model = this.mapDevice[each.code];
|
||||
switch (each._type) {
|
||||
case 'PickArrow': {
|
||||
// 接车灯状态
|
||||
if (elem.runStatus != undefined || model.runStatus != undefined) {
|
||||
if (elem.runStatus) { model.runStatus = elem.runStatus; }
|
||||
if (elem.runModel) { model.runModel = elem.runModel; }
|
||||
if (elem.receiveAspect != undefined) {
|
||||
model.aspect = elem.receiveAspect;
|
||||
}
|
||||
if (elem.readyStatus != undefined ) {
|
||||
model.readyStatus = elem.readyStatus;
|
||||
}
|
||||
this.$painter.update(model);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'DepartArrow': {
|
||||
// 发车灯状态
|
||||
if (elem.runStatus != undefined || model.runStatus != undefined) {
|
||||
if (elem.runStatus) { model.runStatus = elem.runStatus; }
|
||||
if (elem.runModel) { model.runModel = elem.runModel; }
|
||||
if (elem.deliverAspect != undefined) {
|
||||
model.aspect = elem.deliverAspect;
|
||||
}
|
||||
if (elem.readyStatus != undefined ) {
|
||||
model.readyStatus = elem.readyStatus;
|
||||
}
|
||||
this.$painter.update(model);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'SectionOccupied': {
|
||||
// 区间占用
|
||||
if (elem.sectionAspect != undefined) {
|
||||
model.aspect = elem.sectionAspect;
|
||||
this.$painter.update(model);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'AssistStatus': {
|
||||
// 辅助状态
|
||||
if (elem.assistAspect != undefined) {
|
||||
model.aspect = elem.assistAspect;
|
||||
this.$painter.update(model);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
// { name: '总辅助', value: 'TotalAssist' },
|
||||
// { name: '发车辅助', value: 'DepartAssist' },
|
||||
// { name: '接车辅助', value: 'PickAssist' },
|
||||
|
||||
} else {
|
||||
if (elem.deviceType === 'TRAIN') {
|
||||
this.isUpdateShowTrainList = true;
|
||||
|
@ -350,7 +350,8 @@ export function updateMapData(state, model) {
|
||||
case deviceType.Axle: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.SwitchFault: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.IndicatorLight: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.PickOrDepartArrow: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.PickArrow: updateForList(model, state, 'indicatorLightList');break;
|
||||
case deviceType.DepartArrow: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.Occlusion: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.Accident: updateForList(model, state, 'indicatorLightList'); break;
|
||||
case deviceType.Recovery: updateForList(model, state, 'indicatorLightList'); break;
|
||||
|
@ -73,4 +73,7 @@ export default class EAxle extends Group {
|
||||
this.add(this.arc1);
|
||||
this.add(this.arc2);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -14,4 +14,7 @@ export default class EControlSwitch extends Group {
|
||||
this.path = createPathSvg(this.model);
|
||||
this.add(this.path);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -136,4 +136,7 @@ export default class EDeviceStatus extends Group {
|
||||
// this.add(this.pfa);
|
||||
// this.add(this.pfb);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -124,4 +124,7 @@ export default class EFoldbackMode extends Group {
|
||||
this.add(this.lateralLineRect);
|
||||
this.add(this.lateralLine);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -80,4 +80,7 @@ export default class IndicatorLight extends Group {
|
||||
setControlColor(color) {
|
||||
this.indicator.setStyle({fill: color});
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -17,4 +17,7 @@ export default class ELampFilament extends Group {
|
||||
setControlColor(color) {
|
||||
this.path.setStyle({fill: color});
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -77,4 +77,7 @@ export default class EDeviceStatus extends Group {
|
||||
this.add(this.stationCommunication);
|
||||
this.add(this.verifyBypass);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -3,54 +3,78 @@ import Text from 'zrender/src/graphic/Text';
|
||||
import Polygon from 'zrender/src/graphic/shape/Polygon';
|
||||
|
||||
export default class EPickOrDepartArrow extends Group {
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.zlevel = model.zlevel;
|
||||
this._subType = model._subType;
|
||||
this.z = model.z;
|
||||
this.create(model);
|
||||
}
|
||||
create(model) {
|
||||
const style = this.model.style;
|
||||
this.arrow = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [model.x + style.PickOrDepartArrow.length/2, model.y],
|
||||
rotation: model.right ? Math.PI : 0,
|
||||
shape: {
|
||||
points: [
|
||||
[model.x, model.y],
|
||||
[model.x + style.PickOrDepartArrow.triangleLength, model.y - style.PickOrDepartArrow.triangleLength / 2],
|
||||
[model.x + style.PickOrDepartArrow.triangleLength, model.y - style.PickOrDepartArrow.lineWidth / 2],
|
||||
[model.x + style.PickOrDepartArrow.length, model.y - style.PickOrDepartArrow.lineWidth / 2],
|
||||
[model.x + style.PickOrDepartArrow.length, model.y + style.PickOrDepartArrow.lineWidth / 2],
|
||||
[model.x + style.PickOrDepartArrow.triangleLength, model.y + style.PickOrDepartArrow.lineWidth / 2],
|
||||
[model.x + style.PickOrDepartArrow.triangleLength, model.y + style.PickOrDepartArrow.triangleLength / 2]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style.PickOrDepartArrow.fill,
|
||||
stroke: style.PickOrDepartArrow.stroke,
|
||||
lineWidth: 1
|
||||
}
|
||||
});
|
||||
this.arrowText = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: {
|
||||
x: model.x + style.PickOrDepartArrow.length / 2,
|
||||
y: model.y + style.PickOrDepartArrow.distance,
|
||||
fontWeight: style.textStyle.fontWeight,
|
||||
fontSize: style.PickOrDepartArrow.fontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: model.text,
|
||||
textFill: style.PickOrDepartArrow.defaultColor,
|
||||
textAlign: style.textStyle.textAlign,
|
||||
textVerticalAlign: style.textStyle.textVerticalAlign
|
||||
}
|
||||
});
|
||||
this.add(this.arrow);
|
||||
this.add(this.arrowText);
|
||||
}
|
||||
constructor(model) {
|
||||
super();
|
||||
this.model = model;
|
||||
this.zlevel = model.zlevel;
|
||||
this._subType = model._subType;
|
||||
this.z = model.z;
|
||||
this.create(model);
|
||||
}
|
||||
create(model) {
|
||||
const style = this.model.style;
|
||||
this.arrow = new Polygon({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
origin: [model.x + style[this._subType].length / 2, model.y],
|
||||
rotation: model.right ? Math.PI : 0,
|
||||
shape: {
|
||||
points: [
|
||||
[model.x, model.y],
|
||||
[model.x + style[this._subType].triangleLength, model.y - style[this._subType].triangleLength / 2],
|
||||
[model.x + style[this._subType].triangleLength, model.y - style[this._subType].lineWidth / 2],
|
||||
[model.x + style[this._subType].length, model.y - style[this._subType].lineWidth / 2],
|
||||
[model.x + style[this._subType].length, model.y + style[this._subType].lineWidth / 2],
|
||||
[model.x + style[this._subType].triangleLength, model.y + style[this._subType].lineWidth / 2],
|
||||
[model.x + style[this._subType].triangleLength, model.y + style[this._subType].triangleLength / 2]
|
||||
]
|
||||
},
|
||||
style: {
|
||||
fill: style[this._subType].fill,
|
||||
stroke: style[this._subType].stroke,
|
||||
lineWidth: 1
|
||||
}
|
||||
});
|
||||
this.arrowText = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
style: {
|
||||
x: model.x + style[this._subType].length / 2,
|
||||
y: model.y + style[this._subType].distance,
|
||||
fontWeight: style.textStyle.fontWeight,
|
||||
fontSize: style[this._subType].fontSize,
|
||||
fontFamily: style.fontFamily,
|
||||
text: model.text,
|
||||
textFill: style[this._subType].defaultColor,
|
||||
textAlign: style.textStyle.textAlign,
|
||||
textVerticalAlign: style.textStyle.textVerticalAlign
|
||||
}
|
||||
});
|
||||
this.add(this.arrow);
|
||||
this.add(this.arrowText);
|
||||
}
|
||||
|
||||
setControlFlashing(color) {
|
||||
if (color) {
|
||||
const style = this.model.style;
|
||||
this.arrow.animateStyle(true)
|
||||
.when(0, { fill: style[this._subType].fill })
|
||||
.when(1000, { stroke: color })
|
||||
.when(2000, { fill: style[this._subType].fill })
|
||||
.start();
|
||||
}
|
||||
}
|
||||
|
||||
recover() {
|
||||
const style = this.model.style;
|
||||
this.arrow.stopAnimation(false);
|
||||
this.arrow.setStyle('fill', style[this._subType].fill);
|
||||
}
|
||||
|
||||
setControlColor(color) {
|
||||
if (color) {
|
||||
this.arrow.setStyle('fill', color);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -14,4 +14,7 @@ export default class EUnmanned extends Group {
|
||||
this.path = createPathSvg(this.model);
|
||||
this.add(this.path);
|
||||
}
|
||||
|
||||
recover() {
|
||||
}
|
||||
}
|
||||
|
@ -33,8 +33,8 @@ export default class SaidLamp extends Group {
|
||||
create() {
|
||||
const model = this.model;
|
||||
const lampDevice = ['LeuControl', 'IntersiteControl', 'CenterCommunication', 'AtsControl', 'LocalControl', 'ChainControl', 'Maintain',
|
||||
'PowerSupply', 'MaintenanceLamps', 'ZcCommunication', 'SwitchFault', 'SectionOccupied', 'AssistStatus', 'TotalAssist', 'DepartAssist',
|
||||
'PickAssist', 'Recovery', 'Accident', 'Occlusion'];
|
||||
'PowerSupply', 'MaintenanceLamps', 'ZcCommunication', 'SwitchFault', 'SectionOccupied', 'AssistStatus', 'TotalAssist', 'TotalAssist', 'PickAssist', 'Recovery', 'Accident', 'Occlusion'];
|
||||
|
||||
if (lampDevice.includes(this._type)) {
|
||||
this.control = new EControl({
|
||||
zlevel: this.zlevel,
|
||||
@ -179,19 +179,19 @@ export default class SaidLamp extends Group {
|
||||
_subType: 'IndicatorLight'
|
||||
});
|
||||
this.add(this.control);
|
||||
} else if (this._type === 'PickOrDepartArrow') {
|
||||
} else if (this._type === 'PickArrow' || this._type === 'DepartArrow') {
|
||||
this.control = new EPickOrDepartArrow({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
text: model.name,
|
||||
right: model.right,
|
||||
style: this.style,
|
||||
_subType: 'PickOrDepartArrow'
|
||||
});
|
||||
this.add(this.control);
|
||||
}
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
x: model.position.x,
|
||||
y: model.position.y,
|
||||
text: model.name,
|
||||
right: model.right,
|
||||
style: this.style,
|
||||
_subType: this._type
|
||||
});
|
||||
this.add(this.control);
|
||||
}
|
||||
}
|
||||
|
||||
// 设置状态
|
||||
@ -200,16 +200,89 @@ export default class SaidLamp extends Group {
|
||||
if (!store.getters['map/checkDeviceShow'](this._code)) {
|
||||
this.control && this.control.hide();
|
||||
} else {
|
||||
// 区段占用,辅助状态,接发车箭头
|
||||
const datieType = [deviceType.SectionOccupied, deviceType.AssistStatus, deviceType.PickArrow, deviceType.DepartArrow];
|
||||
if (model._type === deviceType.PowerSupply && model.name.includes('2')) {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.lamp.offColor);
|
||||
this.control && this.control.setControlStroke(this.deviceStyle.lamp.strokeColor, 1);
|
||||
} else if ((model._type === deviceType.AtsControl || model._type === deviceType.LocalControl || model._type === deviceType.ChainControl) && model.name.includes('B')) {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.lamp.offColor);
|
||||
} else if (datieType.includes(model._type)) {
|
||||
if (model.aspect) {
|
||||
const signalButtons = [deviceType.PickArrow, deviceType.DepartArrow];
|
||||
if (signalButtons.includes(model._type)) {
|
||||
// if (model.runModel == 'S') { // 闭塞
|
||||
// console.log(model.runModel, model.runStatus, model.aspect, model.blockStatus, model._type, '88888888');
|
||||
// if (model.runStatus == 'NO') {
|
||||
// this.control && this.control.setControlColor(this.deviceStyle.fill);
|
||||
// } else {
|
||||
// // blockStatus:false * 指示灯(F)的时候为黄色,true为绿色
|
||||
// // 指示灯(O)为红色
|
||||
// if (model.blockStatus != undefined) {
|
||||
// if (model.aspect == 'O') {
|
||||
// this.control && this.control.setControlColor(this.deviceStyle.occupiedColor);
|
||||
// } else if (model.aspect == 'F') {
|
||||
// if (model.blockStatus) {
|
||||
// this.control && this.control.setControlColor(this.deviceStyle.blockStatusColor);
|
||||
// } else {
|
||||
// this.control && this.control.setControlColor(this.deviceStyle.noBlockStatusColor);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
if (model.runStatus == 'A' || (model.runStatus == 'R' && model._type == deviceType.PickArrow ) || (model.runStatus == 'D' && model._type == deviceType.DepartArrow)) {
|
||||
if (model.runModel == 'S') {
|
||||
// blockStatus:false * 指示灯(F)的时候为黄色,true为绿色
|
||||
// 指示灯(O)为红色
|
||||
if (model.readyStatus != undefined) {
|
||||
if (model.aspect == 'O') {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.occupiedColor);
|
||||
} else if (model.aspect == 'F') {
|
||||
if (model.readyStatus) {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.blockStatusColor);
|
||||
} else {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.noBlockStatusColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 发车状态:接车灯灭,发车灯默认是绿色,占用时红色
|
||||
// 接车状态:发车灯灭,接车灯默认是黄色,占用时红色
|
||||
if (model.aspect == 'O') {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.occupiedColor);
|
||||
} else if (model.aspect == 'F') {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.noOccupiedColor);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// 发车状态----接车灯灭 接车状态-----发车灯灭
|
||||
if (model.runStatus == 'NO' || (model.runStatus == 'R' && model._type == deviceType.DepartArrow) || (model.runStatus == 'D' && model._type == deviceType.PickArrow)) {
|
||||
this.control && this.control.setControlColor(this.deviceStyle.fill);
|
||||
}
|
||||
// }
|
||||
|
||||
} else {
|
||||
switch (model.aspect) {
|
||||
case 'O':
|
||||
this.control && this.control.setControlColor(this.deviceStyle.lamp.occupiedColor);
|
||||
break;
|
||||
case 'F':
|
||||
this.control && this.control.setControlColor(this.deviceStyle.lamp.controlColor);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
recover() {
|
||||
this.control && this.control.show();
|
||||
this.control && this.control.recover();
|
||||
}
|
||||
createMouseEvent() {
|
||||
if (this.deviceStyle.mouseOverStyle) {
|
||||
|
@ -482,6 +482,7 @@ export default class Section extends Group {
|
||||
this.setAshShow();
|
||||
model.preGreen && this.line.setStyle({stroke: '#00FF00'});
|
||||
model.preBlue && this.line.setStyle({stroke: '#4A76B7'});
|
||||
model.preWhite && this.line.setStyle({stroke: '#fff'})
|
||||
} else {
|
||||
this.handleSwitchSection(model, flag);
|
||||
// 顺序代表优先级
|
||||
|
@ -697,6 +697,11 @@ class Signal extends Group {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 双黄灯
|
||||
doubleYellow() {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.yellowColor);
|
||||
this.lamps[1] && this.lamps[1].setColor(this.style.Signal.lamp.yellowColor);
|
||||
}
|
||||
lampWhite() {
|
||||
if (this.lamps.length === 1) {
|
||||
this.lamps[0] && this.lamps[0].setColor(this.style.Signal.lamp.whiteColor);
|
||||
@ -935,7 +940,7 @@ class Signal extends Group {
|
||||
recover() {
|
||||
this.sigName && this.sigName.show();
|
||||
this.sigName && this.sigName.setAnimationEnd();
|
||||
this.lamps && this.lamps.forEach(item=> { item.show(); item.setGuideSectorShowHide(false); });
|
||||
this.lamps && this.lamps.forEach(item=> { item.show(); item.setGuideSectorShowHide(false); item.setBorderColor(this.style.Signal.lamp.borderColor) });
|
||||
this.sigName.setStyle({ textBorderWidth: 0 });
|
||||
this.sigName.setColor(this.style.Signal.text.defaultColor);
|
||||
this.remainTimeName && this.remainTimeName.hide();
|
||||
@ -984,7 +989,7 @@ class Signal extends Group {
|
||||
if (this.model.signalButtonList && this.model.signalButtonList.length) {
|
||||
this.model.signalButtonList.forEach(item => {
|
||||
const button = store.getters['map/getDeviceByCode'](item);
|
||||
button && button.instance && button.instance.recover();
|
||||
button && button.instance && button.instance.setState({});
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1042,6 +1047,10 @@ class Signal extends Group {
|
||||
this.lampBlue();
|
||||
break;
|
||||
}
|
||||
case 'YY': {
|
||||
this.doubleYellow();
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
this.close(model.logicLight); // 信号关闭
|
||||
break;
|
||||
|
@ -2,6 +2,7 @@ import Group from 'zrender/src/container/Group';
|
||||
import Rect from 'zrender/src/graphic/shape/Rect';
|
||||
import Line from 'zrender/src/graphic/shape/Line';
|
||||
import Text from 'zrender/src/graphic/Text';
|
||||
import Arc from 'zrender/src/graphic/shape/Arc';
|
||||
import store from '@/store/index';
|
||||
|
||||
export default class SignalButton extends Group {
|
||||
@ -12,7 +13,8 @@ export default class SignalButton extends Group {
|
||||
this.zlevel = model.zlevel;
|
||||
this.z = 0;
|
||||
this.model = model;
|
||||
this.style = style.Line;
|
||||
this.style = style;
|
||||
// Line
|
||||
this.create();
|
||||
this.setState(model);
|
||||
}
|
||||
@ -69,7 +71,72 @@ export default class SignalButton extends Group {
|
||||
});
|
||||
this.add(this.rightLine);
|
||||
this.rightLine.hide();
|
||||
if (model.type === 'PASS') {
|
||||
this.leftBoard = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
shape: {
|
||||
x1: model.position.x - 1,
|
||||
y1: model.position.y - 1,
|
||||
x2: model.position.x - 1,
|
||||
y2: model.position.y + 15
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
stroke: '#FFFFFF'
|
||||
}
|
||||
});
|
||||
this.add(this.leftBoard);
|
||||
this.leftBoard.hide();
|
||||
this.topBoard = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
shape: {
|
||||
x1: model.position.x - 1,
|
||||
y1: model.position.y - 1,
|
||||
x2: model.position.x + 15,
|
||||
y2: model.position.y - 1
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
stroke: '#FFFFFF'
|
||||
}
|
||||
});
|
||||
this.add(this.topBoard);
|
||||
this.topBoard.hide();
|
||||
this.rightBoard = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
shape: {
|
||||
x1: model.position.x + 15,
|
||||
y1: model.position.y - 1,
|
||||
x2: model.position.x + 15,
|
||||
y2: model.position.y + 15
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
stroke: '#A0A0A0'
|
||||
}
|
||||
});
|
||||
this.add(this.rightBoard);
|
||||
this.rightBoard.hide();
|
||||
this.bottomBoard = new Line({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z + 1,
|
||||
shape: {
|
||||
x1: model.position.x - 1,
|
||||
y1: model.position.y + 15,
|
||||
x2: model.position.x + 15,
|
||||
y2: model.position.y + 15
|
||||
},
|
||||
style: {
|
||||
lineWidth: 2,
|
||||
stroke: '#A0A0A0'
|
||||
}
|
||||
});
|
||||
this.add(this.bottomBoard);
|
||||
this.bottomBoard.hide();
|
||||
const hasTextList = ['PASS', 'ASSIST', 'PICK_ASSIST', 'DEPART_ASSIST', 'ACCIDENT', 'CHANGE_DIRECTION', 'RECOVERY', 'OCCLUSION'];
|
||||
if (hasTextList.includes(model.type)) {
|
||||
this.buttonText = new Text({
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
@ -87,6 +154,23 @@ export default class SignalButton extends Group {
|
||||
});
|
||||
this.add(this.buttonText);
|
||||
}
|
||||
// if (model.type === 'CHANGE_DIRECTION') {
|
||||
// this.arcFlash = new Arc({
|
||||
// _subType: 'change_direction_flash',
|
||||
// zlevel: this.zlevel,
|
||||
// z: this.z,
|
||||
// shape: {
|
||||
// cx: model.position.x + 18 + 7,
|
||||
// cy: model.position.y + 7,
|
||||
// r: 6
|
||||
// },
|
||||
// style: {
|
||||
// lineWidth: 0,
|
||||
// fill: '#ffff00'
|
||||
// }
|
||||
// });
|
||||
// this.add(this.arcFlash);
|
||||
// }
|
||||
}
|
||||
startAnimate() {
|
||||
this.rectButton && this.rectButton.animateStyle(true)
|
||||
@ -97,21 +181,22 @@ export default class SignalButton extends Group {
|
||||
}
|
||||
stopAnimation() {
|
||||
this.rectButton && this.rectButton.stopAnimation(true);
|
||||
// this.arcFlash && this.arcFlash.stopAnimation(false);
|
||||
}
|
||||
getTypeColor() {
|
||||
let color = '';
|
||||
const list = ['ASSIST', 'ACCIDENT', 'PICK_ASSIST', 'DEPART_ASSIST', 'CHANGE_DIRECTION'];
|
||||
const list = ['ASSIST', 'ACCIDENT', 'PICK_ASSIST', 'DEPART_ASSIST', 'CHANGE_DIRECTION', 'RECOVERY', 'OCCLUSION'];
|
||||
if (this.model.type === 'FLEXIBLE' || this.model.type === 'SHUNT_TERMINAL') {
|
||||
color = '#808080';
|
||||
} else if (this.model.type === 'GUIDE') {
|
||||
color = '#5050E1';
|
||||
} else if (list.includes(this.model.type)) {
|
||||
color = '#ccc'
|
||||
} else {
|
||||
color = '#ccc';
|
||||
} else {
|
||||
color = '#008000';
|
||||
}
|
||||
return color;
|
||||
}//12
|
||||
}//
|
||||
recover() {
|
||||
this.stopAnimation();
|
||||
this.rectButton && this.rectButton.setStyle({ fill:this.getTypeColor() });
|
||||
@ -119,6 +204,10 @@ export default class SignalButton extends Group {
|
||||
this.leftLine && this.leftLine.hide();
|
||||
this.rectButton && this.rectButton.show();
|
||||
this.buttonText && this.buttonText.show();
|
||||
this.leftBoard && this.leftBoard.hide();
|
||||
this.rightBoard && this.rightBoard.hide();
|
||||
this.topBoard && this.topBoard.hide();
|
||||
this.bottomBoard && this.bottomBoard.hide();
|
||||
}
|
||||
blockShow() {
|
||||
this.rightLine && this.rightLine.show();
|
||||
@ -126,6 +215,28 @@ export default class SignalButton extends Group {
|
||||
}
|
||||
setState(model) {
|
||||
this.recover();
|
||||
// { value: 'ASSIST', label: '总辅助按钮' },
|
||||
// { value: 'PICK_ASSIST', label: '接辅助按钮' },
|
||||
// { value: 'DEPART_ASSIST', label: '发辅助按钮' },
|
||||
const list = ['ASSIST', 'PICK_ASSIST', 'DEPART_ASSIST', 'CHANGE_DIRECTION', 'ACCIDENT', 'RECOVERY', 'OCCLUSION'];
|
||||
if (list.includes(model.type)) {
|
||||
if (this.rectButton) {
|
||||
if (model.pressDown) {
|
||||
this.rectButton.setStyle({ fill:'#FFFF00' });
|
||||
// this.arcFlash.show();
|
||||
// const style = this.style;
|
||||
// this.arcFlash.animateStyle(true)
|
||||
// .when(0, { fill: style.backgroundColor })
|
||||
// .when(500, { fill: '#FFFF00' })
|
||||
// .when(1000, { fill: style.backgroundColor })
|
||||
// .start();
|
||||
} else {
|
||||
this.rectButton.setStyle({ fill:this.getTypeColor() });
|
||||
// this.arcFlash.stopAnimation(false);
|
||||
// this.arcFlash.hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!store.getters['map/checkDeviceShow'](this._code)) {
|
||||
this.buttonText && this.buttonText.hide();
|
||||
this.rectButton && this.rectButton.hide();
|
||||
@ -136,7 +247,6 @@ export default class SignalButton extends Group {
|
||||
this.startAnimate();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
getAnchorPoint() {
|
||||
}
|
||||
|
@ -315,7 +315,7 @@ export default class Station extends Group {
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
point: {
|
||||
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 2 + this.style.Station.StationControl.selfDiscipline.offset.x,
|
||||
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.selfDiscipline.offset.x,
|
||||
y: model.controlModePoint.y + this.style.Station.StationControl.selfDiscipline.offset.y
|
||||
},
|
||||
context: this.style.Station.StationControl.selfDiscipline.text,
|
||||
@ -330,7 +330,7 @@ export default class Station extends Group {
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
point: {
|
||||
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance + this.style.Station.StationControl.selfDisciplineControl.offset.x,
|
||||
x: model.controlModePoint.x - this.style.Station.StationControl.lamp.distance / 2 + this.style.Station.StationControl.selfDisciplineControl.offset.x,
|
||||
y: model.controlModePoint.y + this.style.Station.StationControl.selfDisciplineControl.offset.y
|
||||
},
|
||||
context: this.style.Station.StationControl.selfDisciplineControl.text,
|
||||
@ -349,13 +349,12 @@ export default class Station extends Group {
|
||||
zlevel: this.zlevel,
|
||||
z: this.z,
|
||||
point: {
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.veryControl.offset.x,
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance / 2 + this.style.Station.StationControl.veryControl.offset.x,
|
||||
y: model.controlModePoint.y + this.style.Station.StationControl.centerControl.offset.y
|
||||
},
|
||||
context: this.style.Station.StationControl.veryControl.text,
|
||||
pop: false
|
||||
});
|
||||
console.log(this.veryControl, 'veryContro');
|
||||
this.add(this.veryControl);
|
||||
}
|
||||
if (this.style.Station.StationControl.veryControlButton) {
|
||||
@ -364,7 +363,7 @@ export default class Station extends Group {
|
||||
z: this.z,
|
||||
_subType: 'veryControlButton',
|
||||
shape: {
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 5 / 2 + this.style.Station.StationControl.veryControlButton.offset.x - this.style.Station.StationControl.lamp.radiusR,
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.veryControlButton.offset.x - this.style.Station.StationControl.lamp.radiusR,
|
||||
y: model.controlModePoint.y + this.style.Station.StationControl.veryControlButton.offset.y - this.style.Station.StationControl.lamp.radiusR,
|
||||
width: this.style.Station.StationControl.lamp.radiusR * 2,
|
||||
height: this.style.Station.StationControl.lamp.radiusR * 2
|
||||
@ -372,7 +371,7 @@ export default class Station extends Group {
|
||||
style: {
|
||||
lineWidth: 1,
|
||||
stroke: '#fff',
|
||||
fill: '#ccc'
|
||||
fill: this.style.Station.StationControl.veryControlButton.defaultColor
|
||||
}
|
||||
});
|
||||
this.add(this.veryControlButton);
|
||||
@ -382,7 +381,7 @@ export default class Station extends Group {
|
||||
_subType: 'veryControlButtonText',
|
||||
position: [0, 0],
|
||||
style: {
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 5 / 2 + this.style.Station.StationControl.veryControlButton.offset.y,
|
||||
x: model.controlModePoint.x + this.style.Station.StationControl.lamp.distance * 3 / 2 + this.style.Station.StationControl.veryControlButton.offset.y,
|
||||
y: model.controlModePoint.y + this.style.Station.StationControl.veryControlButton.offset.y + this.style.Station.StationControl.lamp.radiusR + this.style.Station.StationControl.text.distance,
|
||||
fontWeight: this.style.Station.StationControl.text.fontWeight,
|
||||
fontSize: this.style.Station.StationControl.text.fontSize,
|
||||
@ -575,7 +574,7 @@ export default class Station extends Group {
|
||||
});
|
||||
this.add(this.interconnectedControl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
handleCenter() { // 中控
|
||||
this.noneBeforeMode = 'Center';
|
||||
@ -606,6 +605,7 @@ export default class Station extends Group {
|
||||
this.centerControl && this.centerControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
||||
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.greenColor);
|
||||
this.stationControlCC && this.stationControlCC.setStyle({text:'LC', textFill:this.style.Station.StationControl.text.stationControlColor});
|
||||
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.lightColor);
|
||||
// if (this.style.Station.StationControl.disPlayNone) {
|
||||
// this.stationText && this.stationText.setStyle('textFill', '#fff');
|
||||
// if (this.model.subheadDisplay) { // 副标题
|
||||
@ -644,7 +644,9 @@ export default class Station extends Group {
|
||||
this.centerControl && this.centerControl.setTextColor(this.style.Station.StationControl.lamp.grayColor);
|
||||
this.interconnectedControl && this.interconnectedControl.setColor(this.style.Station.StationControl.lamp.purpleColor);
|
||||
this.interconnectedControl && this.interconnectedControl.setTextColor(this.style.Station.StationControl.lamp.purpleColor);
|
||||
}
|
||||
this.veryControl && this.veryControl.setColor(this.style.Station.StationControl.veryControl.lightColor);
|
||||
this.veryControlButton && this.veryControlButton.setStyle({ fill: this.style.Station.StationControl.veryControlButton.lightColor });
|
||||
}
|
||||
|
||||
handleNone() { // 空
|
||||
if (this.style.Station.stationText.noneModeColor) {
|
||||
@ -671,6 +673,10 @@ export default class Station extends Group {
|
||||
this.troButton && this.troButton.hide();
|
||||
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
||||
this.emergencyArrowsControl && this.emergencyArrowsControl.setColor(this.style.Station.StationControl.lamp.grayColor);
|
||||
this.stationControlCC && this.stationControlCC.setStyle({text:'EL', textFill:this.style.Station.StationControl.text.emergencyControlColor});
|
||||
this.veryControl && this.veryControl.setColor(this.style.Station.StationControl.veryControl.defaultColor);
|
||||
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.defaultColor);
|
||||
this.veryControlButton && this.veryControlButton.setStyle({ fill: this.style.Station.StationControl.veryControlButton.defaultColor });
|
||||
if (this.style.Station.stationText.isSpecialType) {
|
||||
this.stationText.setColor(this.style.Station.stationText.noneModeColor);
|
||||
this.stationText.setBackground(this.style.Station.stationText.defaultBackColor);
|
||||
@ -693,6 +699,7 @@ export default class Station extends Group {
|
||||
} else if (!store.getters['map/checkDeviceShow'](this._code)) {
|
||||
this.eachChild(item => { item.hide(); });
|
||||
} else {
|
||||
store.getters['map/checkStationGuideMaster'](this._code, model.sguideMasterLock, model.xguideMasterLock);
|
||||
model.controlMode && this['handle' + model.controlMode]();
|
||||
model.preResetValidDuration && this.handlePreResetLamp();
|
||||
model.controller && this.handleComplexControl(model.controller);
|
||||
|
@ -725,6 +725,7 @@ export default class Switch extends Group {
|
||||
model.isCiConfirm && this.setCiConfirm(); // 道岔使能显示
|
||||
|
||||
model.singleLock && this.setMonolock(model.pos); // 道岔单锁
|
||||
model.guideMasterLock && this.setMonolock(model.pos); // 引导总锁
|
||||
model.blockade && this.block(model.pos); // 道岔封锁
|
||||
model.singleLock && model.blockade && this.blockMonolock(); // 单锁&锁闭状态
|
||||
const path = window.location.href;
|
||||
|
@ -299,6 +299,9 @@ export default class TrainBody extends Group {
|
||||
this.trainBodyBox && this.trainBodyBox.setColor('fill', color);
|
||||
// Style('fill', color);
|
||||
}
|
||||
setTrainBorderColor(color) {
|
||||
this.trainBodyBox && this.trainBodyBox.setColor('stroke', color);
|
||||
}
|
||||
setHShow(isShow) {
|
||||
if (this.textH) {
|
||||
isShow ? this.textH.show() : this.textH.hide();
|
||||
|
@ -54,7 +54,9 @@ export default class TrainHead extends Group {
|
||||
this.add(this.arrow);
|
||||
}
|
||||
setColor(color) {
|
||||
this.line && this.line.setStyle('fill', color);
|
||||
if (!this.model.style.Train.trainHead.trainHeadRectNoChange){
|
||||
this.line && this.line.setStyle('fill', color);
|
||||
}
|
||||
this.arrow && this.arrow.setStyle('fill', color);
|
||||
}
|
||||
setLineShow(isShow) {
|
||||
|
@ -50,10 +50,10 @@ export default class Train extends Group {
|
||||
};
|
||||
if (model.right) {
|
||||
this.point.x = this.point.x - style.Train.trainHead.trainConntWidth * this.newScale - style.Train.common.trainWidth / 2;
|
||||
this.point.y = this.point.y - style.Train.common.trainHeight / 2 + model.overLapIndex * (style.Train.common.trainHeight + 5);
|
||||
this.point.y = this.point.y + model.overLapIndex * (style.Train.common.trainHeight + 5);
|
||||
} else {
|
||||
this.point.x = this.point.x + style.Train.trainHead.trainConntWidth * this.newScale - style.Train.common.trainWidth / 2;
|
||||
this.point.y = this.point.y + model.trainWindowModel.height - style.Train.common.trainHeight / 2 - model.overLapIndex * (style.Train.common.trainHeight + 5);
|
||||
this.point.y = this.point.y - model.overLapIndex * (style.Train.common.trainHeight + 5);
|
||||
}
|
||||
} else {
|
||||
this.point = model.position;
|
||||
@ -226,6 +226,7 @@ export default class Train extends Group {
|
||||
this.trainR && this.trainR.setLineShow(false);
|
||||
this.trainL && this.trainL.setArrowShow(false);
|
||||
this.trainR && this.trainR.setArrowShow(false);
|
||||
this.trainB && this.trainB.setTrainBorderColor(this.style.Train.trainBody.trainSidelineColor || this.style.trainSidelineColor);
|
||||
}
|
||||
|
||||
// 设置运行方向状态类型
|
||||
@ -260,13 +261,26 @@ export default class Train extends Group {
|
||||
if (right == item.type) {
|
||||
if (this.style.Train.trainHead.directionStopType == 'special') {
|
||||
if (flag) {
|
||||
this.trainL && this.trainL.setArrowShow(!item.lineLShow);
|
||||
this.trainR && this.trainR.setArrowShow(!item.lineRShow);
|
||||
this.trainL && this.trainL.setArrowShow(!item.arrowLShow);
|
||||
this.trainR && this.trainR.setArrowShow(!item.arrowRShow);
|
||||
} else {
|
||||
this.trainL && this.trainL.setArrowShow(item.lineLShow);
|
||||
this.trainR && this.trainR.setArrowShow(item.lineRShow);
|
||||
this.trainL && this.trainL.setArrowShow(item.arrowLShow);
|
||||
this.trainR && this.trainR.setArrowShow(item.arrowRShow);
|
||||
}
|
||||
} else {
|
||||
} else if(this.style.Train.trainHead.directionStopType == 'specialAll'){
|
||||
if (flag) {
|
||||
this.trainL && this.trainL.setArrowShow(!item.arrowLShow);
|
||||
this.trainR && this.trainR.setArrowShow(!item.arrowRShow);
|
||||
this.trainL && this.trainL.setLineShow(!item.lineLShow);
|
||||
this.trainR && this.trainR.setLineShow(!item.lineRShow);
|
||||
} else {
|
||||
this.trainL && this.trainL.setArrowShow(item.arrowLShow);
|
||||
this.trainR && this.trainR.setArrowShow(item.arrowRShow);
|
||||
this.trainL && this.trainL.setLineShow(item.lineLShow);
|
||||
this.trainR && this.trainR.setLineShow(item.lineRShow);
|
||||
}
|
||||
this.trainB && this.trainB.setTrainBorderColor(this.style.Train.trainBody.trainSidelineStopColor);
|
||||
} else {
|
||||
if (flag) {
|
||||
this.trainL && this.trainL.setLineShow(!item.lineLShow);
|
||||
this.trainR && this.trainR.setLineShow(!item.lineRShow);
|
||||
|
@ -103,6 +103,19 @@ export default class EControl extends Group {
|
||||
this.control.setStyle('fill', color);
|
||||
}
|
||||
}
|
||||
setControlFlashing(color) {
|
||||
if (color) {
|
||||
this.control.animateStyle(true)
|
||||
.when(0, { fill: this.arcStyle.fill })
|
||||
.when(1000, { stroke: color })
|
||||
.when(2000, { fill: this.arcStyle.fill })
|
||||
.start();
|
||||
}
|
||||
}
|
||||
recover() {
|
||||
this.control.stopAnimation(false);
|
||||
this.control.setStyle('fill', this.arcStyle.fill);
|
||||
}
|
||||
setControlStroke(color, lineWidth) {
|
||||
this.control.setStyle('lineWidth', lineWidth);
|
||||
this.control.setStyle('stroke', color);
|
||||
|
@ -77,7 +77,8 @@ mapShape[deviceType.ReturnModeGroup] = SaidLamp;
|
||||
mapShape[deviceType.Axle] = SaidLamp;
|
||||
mapShape[deviceType.SwitchFault] = SaidLamp;
|
||||
mapShape[deviceType.IndicatorLight] = SaidLamp;
|
||||
mapShape[deviceType.PickOrDepartArrow] = SaidLamp;
|
||||
mapShape[deviceType.PickArrow] = SaidLamp;
|
||||
mapShape[deviceType.DepartArrow] = SaidLamp;
|
||||
mapShape[deviceType.Occlusion] = SaidLamp;
|
||||
mapShape[deviceType.Accident] = SaidLamp;
|
||||
mapShape[deviceType.Recovery] = SaidLamp;
|
||||
|
@ -492,7 +492,24 @@ export const menuOperate = {
|
||||
operation: OperationEvent.Train.deleteDestinationTrainId.menu.operation,
|
||||
cmdType: CMD.TrainWindow.CMD_TRAIN_SET_MANUAL
|
||||
}
|
||||
}
|
||||
},
|
||||
CTC: {
|
||||
//接预
|
||||
receivingNotice: {
|
||||
operation: OperationEvent.CTCCommand.receivingNotice.menu.operation,
|
||||
cmdType: CMD.CTC.CTC_RECEIVING_NOTICE
|
||||
},
|
||||
// 发预
|
||||
departureNotice: {
|
||||
operation: OperationEvent.CTCCommand.departureNotice.menu.operation,
|
||||
cmdType: CMD.CTC.CTC_DEPARTURE_NOTICE
|
||||
},
|
||||
// 自动触发
|
||||
autoTrigger: {
|
||||
operation: OperationEvent.CTCCommand.autoTrigger.menu.operation,
|
||||
cmdType: CMD.CTC.CTC_AUTO_TRIGGER
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
@ -115,6 +115,7 @@ export default {
|
||||
if (operate.operateNext) {
|
||||
this.operation = operate.operateNext;
|
||||
}
|
||||
console.log(this.operate, '--------------0000operate');
|
||||
this.dialogShow = true;
|
||||
this.checkHasInput = false;
|
||||
this.$nextTick(function () {
|
||||
|
245
src/jmapNew/theme/datie_02/menus/dialog/mapVisual.vue
Normal file
@ -0,0 +1,245 @@
|
||||
<template>
|
||||
<div
|
||||
ref="jlmapCanvas"
|
||||
class="jlmap-canvas"
|
||||
:style="{ width: width + 'px', height: height + 'px' }"
|
||||
>
|
||||
<div :id="canvasId" class="display_canvas" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Jlmap from '@/jmapNew/map';
|
||||
import { parserFactory, ParserType } from '@/jmapNew/parser';
|
||||
import { deepAssign } from '@/utils/index';
|
||||
import deviceType from '@/jmapNew/constant/deviceType';
|
||||
|
||||
export default {
|
||||
name: 'JLocalmapVisual',
|
||||
props: {
|
||||
width: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
height: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
mapData: {
|
||||
type: Object,
|
||||
defautl() {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
offset: {
|
||||
x: 0,
|
||||
y: 0
|
||||
},
|
||||
map: null,
|
||||
mapDevice: {},
|
||||
routeData: [],
|
||||
autoReentryData: []
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
canvasId() {
|
||||
return ['map', Math.random().toFixed(5) * 100000].join('_');
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.config.canvasSizeCount': function (val) {
|
||||
this.resetSize();
|
||||
}
|
||||
// '$store.state.training.prdType': function (val) {
|
||||
// if (val) {
|
||||
// this.changePrdType(val);
|
||||
// }
|
||||
// }
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this.map) {
|
||||
this.map.dispose();
|
||||
this.map = null;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init() {
|
||||
document.getElementById(this.canvasId).oncontextmenu = function (e) {
|
||||
return false;
|
||||
};
|
||||
|
||||
const prdType = this.$store.state.training.prdType;
|
||||
|
||||
let showMode = '';
|
||||
if (prdType == '01') {
|
||||
showMode = '03';
|
||||
} else if (prdType == '02') {
|
||||
showMode = '02';
|
||||
}
|
||||
|
||||
if (!this.map) {
|
||||
this.map = new Jlmap({
|
||||
dom: document.getElementById(this.canvasId),
|
||||
config: {
|
||||
renderer: 'canvas',
|
||||
width: this.width,
|
||||
height: this.height
|
||||
},
|
||||
options: {
|
||||
scaleRate: 1,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
zoomOnMouseWheel: false
|
||||
},
|
||||
showConfig: {
|
||||
prdType: prdType,
|
||||
previewOrMapDraw: true,
|
||||
showMode: showMode
|
||||
},
|
||||
methods: {}
|
||||
});
|
||||
}
|
||||
|
||||
window.document.oncontextmenu = function () {
|
||||
return false;
|
||||
};
|
||||
|
||||
if (this.mapData.skinVO) {
|
||||
const parser = parserFactory(ParserType.Graph.value);
|
||||
this.mapDevice = parser.parser(this.mapData, this.mapData.skinVO.code, this.map.getShowConfig());
|
||||
}
|
||||
},
|
||||
loadData() {
|
||||
try {
|
||||
this.setMap(this.mapData, this.mapDevice);
|
||||
} catch (error) {
|
||||
console.log('[ERROR] ', error);
|
||||
}
|
||||
},
|
||||
// 设置地图
|
||||
setMap(data, mapDevice) {
|
||||
if (data.skinVO) {
|
||||
this.routeData = this.$store.state.map.routeData;
|
||||
this.autoReentryData = this.$store.state.map.autoReentryData;
|
||||
this.map.setMap(data, mapDevice, {
|
||||
routeData: this.routeData,
|
||||
autoReentryData: this.autoReentryData
|
||||
});
|
||||
this.setMapFree();
|
||||
} else {
|
||||
this.mapDevice = {};
|
||||
this.map.clear();
|
||||
}
|
||||
},
|
||||
// 重置jlmap宽高
|
||||
resetSize() {
|
||||
this.$nextTick(() => {
|
||||
this.map && this.map.resize({ width: this.width, height: this.height });
|
||||
});
|
||||
},
|
||||
// 设置显示图层
|
||||
setLevelVisible(levels) {
|
||||
this.map && this.map.setLevelVisible(levels);
|
||||
},
|
||||
setMapFree() {
|
||||
const list = [];
|
||||
Object.values(this.mapDevice).forEach((elem) => {
|
||||
const code = elem.code;
|
||||
const type = elem._type;
|
||||
// 列车不需要设置默认状态
|
||||
type != deviceType.Train &&
|
||||
list.push({ code, _type: type, _free: true });
|
||||
});
|
||||
|
||||
this.map.update(list, false);
|
||||
},
|
||||
// 设置中心偏移
|
||||
setCenterWithOffset(code, dx, y) {
|
||||
this.map.setCenterWithOffset(code, dx, y - this.height / 2);
|
||||
},
|
||||
// 更新地图数据
|
||||
updateMapDevice(elems) {
|
||||
const list = [];
|
||||
elems.forEach((elem) => {
|
||||
if (elem.code) {
|
||||
list.push(deepAssign(this.mapDevice[elem.code], elem));
|
||||
}
|
||||
});
|
||||
|
||||
this.map.update(list, false);
|
||||
},
|
||||
getDeviceByCode(code) {
|
||||
return this.mapDevice[code];
|
||||
},
|
||||
setShowStation(stationCode, setCenter) {
|
||||
const list = [];
|
||||
const mapDevice = this.$store.state.map.mapDevice;
|
||||
for (const key in mapDevice) {
|
||||
list.push(mapDevice[key]);
|
||||
}
|
||||
this.map.updateShowStation(list, stationCode);
|
||||
!setCenter && this.setCenter(stationCode);
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.mask {
|
||||
opacity: 0;
|
||||
background: #000;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9;
|
||||
}
|
||||
.jlmap-canvas {
|
||||
position: relative;
|
||||
-moz-user-select: none;
|
||||
-o-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
background: #000;
|
||||
float: left;
|
||||
}
|
||||
.title {
|
||||
text-align: right;
|
||||
font-size: 14px;
|
||||
color: #606266;
|
||||
line-height: 32px;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.zoom-view {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
background: #fff;
|
||||
padding-top: 5px;
|
||||
height: 42px;
|
||||
border-bottom: 1px #f3f3f3 solid;
|
||||
border-right: 1px #f3f3f3 solid;
|
||||
}
|
||||
|
||||
/deep/ {
|
||||
.el-form.el-form--inline {
|
||||
height: 28px !important;
|
||||
line-height: 28px !important;
|
||||
}
|
||||
|
||||
.el-loading-mask {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
}
|
||||
</style>
|
146
src/jmapNew/theme/datie_02/menus/dialog/recDep.vue
Normal file
@ -0,0 +1,146 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-dialogDrag
|
||||
class="chengdou-03__systerm stand-stop-time"
|
||||
title="作业窗口"
|
||||
:visible.sync="show"
|
||||
width="500px"
|
||||
:before-close="doClose"
|
||||
:z-index="2000"
|
||||
:modal="false"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<div>
|
||||
<el-form :model="form" class="demo-form-inline">
|
||||
<el-form-item label="作业任务:">
|
||||
<el-input v-model="form.work" type="textarea" :rows="2" :disabled="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="操作时间:">
|
||||
<el-input v-model="form.time" type="textarea" :rows="1" :disabled="true"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="操作信息:">
|
||||
<el-input v-model="form.info" type="textarea" :rows="2" :disabled="true"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div style="text-align: center;"><el-button v-if="type === 'rec'" style="width: 200px;" @click="commit(menuOperate.CTC.receivingNotice)">完成接预</el-button></div>
|
||||
<div style="text-align: center;margin-top: 10px;"><el-button v-if="type === 'dep'" style="width: 200px;" @click="commit(menuOperate.CTC.departureNotice)">完成发预</el-button></div>
|
||||
<div style="text-align: center;margin-top: 10px;"><el-button v-if="type === 'rec'" style="width: 200px;" disabled>取消接预</el-button></div>
|
||||
<div style="text-align: center;margin-top: 10px;"><el-button v-if="type === 'dep'" style="width: 200px;" disabled>取消接预</el-button></div>
|
||||
<el-button @click="doClose" style="height: 50px;width: 50px;position: relative;left: 370px;">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import CancelMouseState from '@/mixin/CancelMouseState';
|
||||
import { getUploadFile } from '@/api/pdf';
|
||||
import { DrawingType } from '@/scripts/ConstDic';
|
||||
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
|
||||
export default {
|
||||
name: 'TrainMove',
|
||||
mixins: [
|
||||
CancelMouseState
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
selected: null,
|
||||
selectedType: '',
|
||||
dialogShow: false,
|
||||
menuOperate: menuOperate,
|
||||
type: '',
|
||||
stationCode: '',
|
||||
tripNumber: '',
|
||||
loading: false,
|
||||
tableData: [],
|
||||
deviceTypeList: [
|
||||
{ label: '区段', value: 'Section' },
|
||||
{ label: '信号机', value: 'Signal' },
|
||||
{ label: '道岔', value: 'Switch' },
|
||||
{ label: '车站', value: 'Station' }
|
||||
],
|
||||
deviceIdList: [],
|
||||
form: {
|
||||
work: '',
|
||||
time: '',
|
||||
info: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'stationStandList'
|
||||
]),
|
||||
show() {
|
||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||
},
|
||||
title() {
|
||||
if (this.selectedType === 'normStudy') {
|
||||
return '规范学习';
|
||||
} else if (this.selectedType === 'clCaAn') {
|
||||
return '经典案例分析';
|
||||
} else if (this.selectedType === 'baDeTr') {
|
||||
return '基础设备培训';
|
||||
} else {
|
||||
return '图纸检索';
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doShow(row, type, stationCode) {
|
||||
this.type = type;
|
||||
this.loading = true;
|
||||
this.stationCode = stationCode;
|
||||
this.tripNumber = row.tripNumber;
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
},
|
||||
commit(type) {
|
||||
this.loading = true;
|
||||
//menuOperate.CTC.receivingNotice
|
||||
|
||||
commitOperate(type, {stationCode: this.stationCode, tripNumber: this.tripNumber}, 3).then(({valid, operate})=>{
|
||||
this.loading = false;
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch((error) => {
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.chengdou-03__systerm .el-dialog .base-label {
|
||||
background: rgba(0, 0, 0, x);
|
||||
position: relative;
|
||||
left: -5px;
|
||||
top: -18px;
|
||||
padding: 0 5px;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
.text-button{
|
||||
color: #148ad0;
|
||||
cursor:pointer;
|
||||
}
|
||||
.text-button:active{
|
||||
color: #b938e1;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.text-button:hover{
|
||||
color: #b938e1;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
308
src/jmapNew/theme/datie_02/menus/dialog/routeSelection1.vue
Normal file
@ -0,0 +1,308 @@
|
||||
<template>
|
||||
<el-dialog v-dialogDrag top="12vh" class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="1100px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
|
||||
<el-row>
|
||||
<el-col :span="2">列车车次</el-col>
|
||||
<el-col :span="21"><span style="font-size: 18px;color: #f00;">{{ selected.tripNumber }}</span></el-col>
|
||||
</el-row>
|
||||
<el-row style="margin-top: 10px;">
|
||||
<el-col :span="2">进路描述</el-col>
|
||||
<el-col :span="21">
|
||||
<div style="width: 100%;height: 50px;background: #DFE3E6;padding: 10px;">
|
||||
<span>{{ `${type === 'dep' ? '发车/通过': '接车/通过'}; 股道:${selected.trackName};进路按钮:${getRouteNames()}` }}</span>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row style="margin-top: 10px;">
|
||||
<el-col :span="2">进路显示</el-col>
|
||||
<el-col :span="21">
|
||||
<map-visual ref="map" :map-data="mapData" :width="960" :height="600" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--<el-row :gutter="24">-->
|
||||
<!--<el-col :span="6">-->
|
||||
<!--<el-row class="header">-->
|
||||
<!--<el-col :span="11"><span>集中站</span></el-col>-->
|
||||
<!--<el-col :span="11" :offset="2"><span>始端信号机</span></el-col>-->
|
||||
<!--</el-row>-->
|
||||
<!--<el-row>-->
|
||||
<!--<el-col :span="11">-->
|
||||
<!--<el-input v-model="stationName" size="small" disabled />-->
|
||||
<!--</el-col>-->
|
||||
<!--<el-col :span="11" :offset="2">-->
|
||||
<!--<el-input v-model="signalName" size="small" disabled />-->
|
||||
<!--</el-col>-->
|
||||
<!--</el-row>-->
|
||||
<!--<el-row style="margin-top: 10px; line-height: 30px;">-->
|
||||
<!--<el-col :span="11"><span>进路列表</span></el-col>-->
|
||||
<!--</el-row>-->
|
||||
<!--<el-table ref="table" :data="tempData" border :cell-style="tableStyle" style="width: 100%; height: 460px; margin-top:10px" size="mini" highlight-current-row :show-header="false" @row-click="clickEvent">-->
|
||||
<!--<el-table-column :id="domIdChoose" prop="name" style="margin-left:30px" />-->
|
||||
<!--</el-table>-->
|
||||
<!--<el-row justify="center" class="button-group">-->
|
||||
<!--<el-col :span="8" :offset="4">-->
|
||||
<!--<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定</el-button>-->
|
||||
<!--</el-col>-->
|
||||
<!--<el-col :span="8" :offset="4">-->
|
||||
<!--<el-button :id="domIdCancel" @click="cancel">取 消</el-button>-->
|
||||
<!--</el-col>-->
|
||||
<!--</el-row>-->
|
||||
<!--</el-col>-->
|
||||
<!--<el-col :span="18">-->
|
||||
<!--<map-visual ref="map" :map-data="mapData" :width="780" :height="600" />-->
|
||||
<!--</el-col>-->
|
||||
<!--</el-row>-->
|
||||
<el-row style="margin-top: 10px;margin-bottom: 10px;">
|
||||
<el-col :span="21" :offset="2">
|
||||
<el-radio disabled v-model="radio" label="禁用">分段办理</el-radio>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div style="display: flex;justify-content: space-between;margin-bottom: 10px;">
|
||||
<el-button size="mini" v-if="type === 'rec'" :type="selected.receivingRouteAutoTrigger?'warning':''" :disabled="!!route.lock || !selected.receivingNotice" @click="commit">办理接车</el-button>
|
||||
<el-button size="mini" v-if="type === 'dep'" :type="selected.departureRouteAutoTrigger?'warning':''" :disabled="!!route.lock || !selected.departureNotice" @click="commit">办理发车</el-button>
|
||||
<el-button size="mini" disabled>办理通过</el-button>
|
||||
<el-button size="mini" disabled>进路单锁</el-button>
|
||||
<el-button size="mini" :disabled="cancelRouteDisabled" @click="commit">取消进路</el-button>
|
||||
<el-button size="mini" @click="doClose">关闭</el-button>
|
||||
</div>
|
||||
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
|
||||
<confirm-tip ref="confirmTip" @close="doClose" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import { menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
import { deepAssign } from '@/utils/index';
|
||||
import { mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
|
||||
import { mapGetters } from 'vuex';
|
||||
// import { dbReadData } from '@/utils/indexedDb';
|
||||
import ConfirmTip from './childDialog/confirmTip';
|
||||
import MapVisual from './mapVisual';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
|
||||
export default {
|
||||
name: 'RouteSelection',
|
||||
components: {
|
||||
NoticeInfo,
|
||||
ConfirmTip,
|
||||
MapVisual
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
radio:'',
|
||||
beforeSectionList: [],
|
||||
beforeSwitchList: [],
|
||||
dialogShow: false,
|
||||
loading: false,
|
||||
selected: {},
|
||||
operation: '',
|
||||
display: true,
|
||||
mapData: null,
|
||||
route: '',
|
||||
tableStyle: {
|
||||
'border-bottom': 'none'
|
||||
},
|
||||
type: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'overlapData'
|
||||
]),
|
||||
show() {
|
||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||
},
|
||||
domIdCancel() {
|
||||
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
||||
},
|
||||
domIdChoose() {
|
||||
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.choose.domId : '';
|
||||
},
|
||||
domIdConfirm() {
|
||||
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
|
||||
},
|
||||
title() {
|
||||
return '进路办理';
|
||||
},
|
||||
cancelRouteDisabled() {
|
||||
return !!!this.route.lock || (this.type === 'rec' && !this.selected.receivingNotice) || (this.type === 'dep' && !this.selected.departureNotice)
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
created() {
|
||||
this.mapData = JSON.parse(JSON.stringify(this.$store.state.map.map));
|
||||
},
|
||||
methods: {
|
||||
getRouteNames() {
|
||||
const receivingRoute = this.$store.state.map.routeData[this.selected.receivingRouteCode];
|
||||
const departureRoute = this.$store.state.map.routeData[this.selected.departureRouteCode];
|
||||
return (receivingRoute?receivingRoute.name: '') + ',' + (departureRoute?departureRoute.name: '');
|
||||
},
|
||||
doShow(selected, type) {
|
||||
// this.$root.$emit('dialogOpen', selected);
|
||||
this.selected = selected;
|
||||
this.type = type;
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
this.loadData();
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
},
|
||||
loadData() {
|
||||
this.beforeSwitchList = [];
|
||||
this.beforeSectionList = [];
|
||||
if (this.mapData) {
|
||||
this.$refs.map.loadData(this.mapData);
|
||||
setTimeout(() => {
|
||||
if (this.type === 'rec'){
|
||||
this.clickEvent(this.selected.receivingRouteCode);
|
||||
} else if (this.type === 'dep'){
|
||||
this.clickEvent(this.selected.departureRouteCode);
|
||||
}
|
||||
}, 100);
|
||||
|
||||
}
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.route = {};
|
||||
this.restoreBeforeDevices();
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
mouseCancelState(this.selected);
|
||||
},
|
||||
restoreBeforeDevices() {
|
||||
// 恢复之前选中设备
|
||||
if (this.beforeSectionList && this.beforeSectionList.length) {
|
||||
this.beforeSectionList.forEach(el => {
|
||||
el.routeLock = false;
|
||||
el.preWhite = false;
|
||||
});
|
||||
}
|
||||
|
||||
if (this.beforeSwitchList && this.beforeSwitchList.length) {
|
||||
this.beforeSwitchList.forEach(el => {
|
||||
// N-定位 R-反位 NO-无(失表) EX-挤叉
|
||||
el.pos = 'NO';
|
||||
el.routeLock = false;
|
||||
});
|
||||
}
|
||||
|
||||
this.$refs.map.updateMapDevice([...this.beforeSectionList, ...this.beforeSwitchList]);
|
||||
|
||||
this.beforeSectionList = [];
|
||||
this.beforeSwitchList = [];
|
||||
},
|
||||
clickEvent(routeCode) {
|
||||
const route = this.$store.state.map.routeData[routeCode];
|
||||
this.route = route;
|
||||
if (route) {
|
||||
// 恢复进路区段的切除状态
|
||||
this.restoreBeforeDevices();
|
||||
|
||||
const containSectionList = [];
|
||||
const containSwitchList = [];
|
||||
if (!route.setting) {
|
||||
const signalBegin = this.$refs.map.getDeviceByCode(route.startSignalCode);
|
||||
const code = route.startSignalCode;
|
||||
const signal = signalBegin;
|
||||
const switchCodeList = [];
|
||||
|
||||
this.$refs.map.setCenterWithOffset(code, 50, signal.position.y);
|
||||
if (route.routeSectionList && route.routeSectionList.length) {
|
||||
route.routeSectionList.forEach(code => {
|
||||
const section = deepAssign({}, this.$refs.map.getDeviceByCode(code));
|
||||
if (section.logicSectionCodeList && section.logicSectionCodeList.length) {
|
||||
section.logicSectionCodeList.forEach(sectionCode => {
|
||||
containSectionList.push({code: sectionCode, preWhite: true});
|
||||
});
|
||||
} else {
|
||||
containSectionList.push({code, preWhite: true});
|
||||
}
|
||||
|
||||
if (section.switchSection && section.switch) {
|
||||
switchCodeList.push(section.switch.code);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (route.routeSwitchList && route.routeSwitchList.length) {
|
||||
route.routeSwitchList.filter(el => switchCodeList.includes(el.switchCode)).forEach(el => {
|
||||
const swch = deepAssign({}, this.$refs.map.getDeviceByCode(el.switchCode));
|
||||
const sectionA = this.$refs.map.getDeviceByCode(swch.sectionACode);
|
||||
const sectionB = this.$refs.map.getDeviceByCode(swch.sectionBCode);
|
||||
const sectionC = this.$refs.map.getDeviceByCode(swch.sectionCCode);
|
||||
// normalPosition: el.normal, reversePosition: !el.normal
|
||||
containSwitchList.push({code: el.switchCode, routeLock: true, pos:el.pos });
|
||||
if (el.normal) {
|
||||
containSectionList.push({code: sectionA.code, routeLock:true });
|
||||
// containSectionList.push({code: sectionC.code, preBlue: true });
|
||||
} else {
|
||||
containSectionList.push({code: sectionC.code, routeLock:true });
|
||||
// containSectionList.push({code: sectionB.code, preBlue: true });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
this.$refs.map.updateMapDevice([...containSectionList, ...containSwitchList]);
|
||||
this.beforeSectionList = containSectionList;
|
||||
this.beforeSwitchList = containSwitchList;
|
||||
|
||||
// 设置选中指令
|
||||
const operate = {
|
||||
operation: OperationEvent.Signal.arrangementRoute.choose.operation,
|
||||
val: route.code
|
||||
};
|
||||
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.$refs.noticeInfo.doShow('当前进路不允许排列, 与其他进路可能发生冲突');
|
||||
}
|
||||
}
|
||||
},
|
||||
commit() {
|
||||
if (this.route) {
|
||||
this.loading = true;
|
||||
const type = this.route.lock ? menuOperate.Signal.cancelTrainRoute :menuOperate.Signal.arrangementRoute;
|
||||
const param = this.route.lock ? { signalCode: this.route.startSignalCode } : { routeCode:this.route.code };
|
||||
commitOperate(type, param, 3).then(({valid, operate})=>{
|
||||
this.loading = false;
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
}
|
||||
},
|
||||
cancel() {
|
||||
const operate = {
|
||||
operation: OperationEvent.Command.cancel.menu.operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(() => {
|
||||
this.doClose();
|
||||
});
|
||||
}
|
||||
} //D3D8DC
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
/deep/ .el-dialog__header{
|
||||
background: #B4B6B9;
|
||||
}
|
||||
/deep/ .el-dialog__body{
|
||||
background: #D3D8DC !important;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
181
src/jmapNew/theme/datie_02/menus/dialog/trainSetPlan.vue
Normal file
@ -0,0 +1,181 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-dialogDrag
|
||||
class="ningbo-01__systerm train-set-plan"
|
||||
:title="title"
|
||||
:visible.sync="show"
|
||||
width="360px"
|
||||
:before-close="doClose"
|
||||
:z-index="2000"
|
||||
:modal="false"
|
||||
:close-on-click-modal="false"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="11">车组号</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="11">
|
||||
<el-input v-model="addModel.groupNumber" size="mini" :disabled="true" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="11">服务号</el-col>
|
||||
<el-col :span="11" :offset="2">序列号</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="11">
|
||||
<el-input :id="domIdServerNoChange" v-model="addModel.serviceNumber" size="mini" />
|
||||
<div style="color:red;font-size:13px;margin-top:5px;">{{ messageTip1 }}</div>
|
||||
</el-col>
|
||||
<el-col :span="11" :offset="2">
|
||||
<el-input :id="domIdTrainNoChange" v-model="addModel.tripNumber" size="mini" />
|
||||
<div style="color:red;font-size:13px;margin-top:5px;">{{ messageTip2 }}</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row justify="center" class="button-group">
|
||||
<el-col :span="10">
|
||||
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
|
||||
</el-col>
|
||||
<el-col :span="8" :offset="5">
|
||||
<el-button :id="domIdCancel" @click="cancel">取 消</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
|
||||
|
||||
export default {
|
||||
name: 'TrainSetPlan',
|
||||
components: {
|
||||
NoticeInfo
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
trainNoList: [],
|
||||
selected: null,
|
||||
messageTip1:'',
|
||||
messageTip2:'',
|
||||
addModel: {
|
||||
groupNumber: '',
|
||||
tripNumber: '',
|
||||
serviceNumber: ''
|
||||
},
|
||||
dialogShow: false,
|
||||
loading: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'stationStandList'
|
||||
]),
|
||||
show() {
|
||||
return this.dialogShow && !this.$store.state.menuOperation.break;
|
||||
},
|
||||
domIdServerNoChange() {
|
||||
return this.dialogShow ? OperationEvent.Train.setPlanTrainId.serverNoChange.domId : '';
|
||||
},
|
||||
domIdTrainNoChange() {
|
||||
return this.dialogShow ? OperationEvent.Train.setPlanTrainId.trainNoChange.domId : '';
|
||||
},
|
||||
domIdCancel() {
|
||||
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
|
||||
},
|
||||
domIdConfirm() {
|
||||
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
|
||||
},
|
||||
title() {
|
||||
return '设置计划车';
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
'$store.state.map.keyboardEnterCount': function (val) {
|
||||
if (this.dialogShow) {
|
||||
this.commit();
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
doShow(operate, selected) {
|
||||
this.$root.$emit('dialogOpen', selected);
|
||||
this.selected = selected;
|
||||
// 如果不是断点激活,则需要对初始值进行初始化
|
||||
// if (!this.dialogShow) {
|
||||
// }
|
||||
this.addModel.groupNumber = selected.groupNumber;
|
||||
this.dialogShow = true;
|
||||
this.$nextTick(function () {
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
});
|
||||
},
|
||||
doClose() {
|
||||
this.loading = false;
|
||||
this.dialogShow = false;
|
||||
this.$root.$emit('dialogClose', this.selected);
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
this.$store.dispatch('map/setTrainWindowShow', false);
|
||||
mouseCancelState(this.selected);
|
||||
},
|
||||
commit() {
|
||||
if (!this.addModel.serviceNumber) {
|
||||
this.messageTip1 = '请输入服务号';
|
||||
return;
|
||||
}
|
||||
if (!this.addModel.tripNumber) {
|
||||
this.messageTip1 = '';
|
||||
this.messageTip2 = '请输入序列号';
|
||||
return;
|
||||
}
|
||||
const params = {
|
||||
groupNumber: this.addModel.groupNumber,
|
||||
tripNumber: this.addModel.tripNumber,
|
||||
serviceNumber: this.addModel.serviceNumber
|
||||
};
|
||||
this.messageTip1 = '';
|
||||
this.messageTip2 = '';
|
||||
this.loading = true;
|
||||
commitOperate(menuOperate.TrainWindow.setPlanTrainId, params, 2).then(({valid})=>{
|
||||
this.loading = false;
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
cancel() {
|
||||
const operate = {
|
||||
operation: OperationEvent.Command.cancel.menu.operation
|
||||
};
|
||||
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
}
|
||||
}).catch(() => { this.doClose(); });
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
/deep/ .el-row {
|
||||
margin: 10px
|
||||
}
|
||||
|
||||
.ningbo-01__systerm .el-dialog .base-label {
|
||||
// background: rgba(0, 0, 0, x);
|
||||
position: relative;
|
||||
left: -5px;
|
||||
top: -18px;
|
||||
padding: 0 5px;
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
</style>
|
@ -1,24 +1,25 @@
|
||||
<template>
|
||||
<div class="menus" :style="{width: width + 'px'}">
|
||||
<!--<menu-bar v-show="isShowBar" ref="menuBar" :selected="selected" />-->
|
||||
<div class="alarm-window">
|
||||
<div v-for="elem in alarmMessages" :key="elem.id" style="font-size: 14px;">
|
||||
{{ elem.message }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="device-status-window">
|
||||
<div class="device-status-button" style="background: #0f0;">联锁I</div>
|
||||
<div class="device-status-button" style="background: #f00;">联锁II</div>
|
||||
<div class="device-status-button" style="background: #0f0;">操作A</div>
|
||||
<div class="device-status-button" style="background: #ff0;">操作B</div>
|
||||
<div class="device-status-button" style="background: #f00;">维修机</div>
|
||||
</div>
|
||||
<div class="warning-window">
|
||||
<div v-for="elem in warningMessages" :key="elem.id" style="font-size: 14px;color: #ff0">
|
||||
{{ elem.message }}
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: calc(100% - 200px);position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
|
||||
<!--<div v-if="$store.state.training.prdType == '01'" class="alarm-window">-->
|
||||
<!--<div v-for="elem in alarmMessages" :key="elem.id" style="font-size: 14px;">-->
|
||||
<!--{{ elem.message }}-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="device-status-window">-->
|
||||
<!--<div class="device-status-button" :style="{background: mode === 'liansuo' ? '#0f0': '#f00'}" @click="selectedMode('liansuo')">联锁I</div>-->
|
||||
<!--<div class="device-status-button" :style="{background: mode === 'ctc' ? '#0f0': '#f00'}" @click="selectedMode('ctc')">CTC</div>-->
|
||||
<!--<div class="device-status-button" style="background: #f00;">联锁II</div>-->
|
||||
<!--<div class="device-status-button" style="background: #0f0;">操作A</div>-->
|
||||
<!--<div class="device-status-button" style="background: #ff0;">操作B</div>-->
|
||||
<!--<div class="device-status-button" style="background: #f00;">维修机</div>-->
|
||||
<!--</div>-->
|
||||
<!--<div v-if="$store.state.training.prdType == '01'" class="warning-window">-->
|
||||
<!--<div v-for="elem in warningMessages" :key="elem.id" style="font-size: 14px;color: #ff0">-->
|
||||
<!--{{ elem.message }}-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div v-if="$store.state.training.prdType == '01'" style="width: 1405px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
|
||||
<div style="width: 60%;height: 30px;line-height: 30px;text-align: center;">提示信息窗</div>
|
||||
<div style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
|
||||
</div>
|
||||
@ -94,7 +95,7 @@ export default {
|
||||
{ id: 7, message: '这是预警信息七' },
|
||||
],
|
||||
time: '00:00:00',
|
||||
dateString: ''
|
||||
dateString: '',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@ -439,7 +440,7 @@ export default {
|
||||
padding: 5px;
|
||||
}
|
||||
.device-status-window {
|
||||
width: 400px;
|
||||
width: 160px;
|
||||
height: 35px;
|
||||
position: fixed;
|
||||
top: 50px;
|
||||
@ -459,13 +460,14 @@ export default {
|
||||
height: 30px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.warning-window {
|
||||
width: 400px;
|
||||
height: 100px;
|
||||
position: fixed;
|
||||
right: 10px;
|
||||
top: 90px;
|
||||
top: 60px;
|
||||
background: #808080;
|
||||
z-index: 10;
|
||||
overflow-y: scroll;
|
||||
|
@ -1,16 +1,16 @@
|
||||
<template>
|
||||
<div v-if="isShowBtn" id="menuButtons_box" class="menu menuButton" style="height: 35px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
|
||||
<button :id="Station.guideLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor: guideLockRightFlag? guideColorDown: guideColorUp}" @click="guideLockRightButtonDown()">
|
||||
<button :id="Station.stationMasterLock.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor: xGuideMasterLock? guideColorDown: guideColorUp}" @click="guideLockRightButtonDown()">
|
||||
<span style="color: #800000">
|
||||
<center><b>X引导总锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Station.guideLock.button.domId" style="cursor: not-allowed;" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Station.guideLock.button.operation, ['GuideLock'])">
|
||||
<!--<span style="color: #800000">-->
|
||||
<span style="color: #808080">
|
||||
<center><b>坡道解锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<!--<button :id="Station.guideLock.button.domId" style="cursor: not-allowed;" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Station.guideLock.button.operation, ['GuideLock'])">-->
|
||||
<!--<!–<span style="color: #800000">–>-->
|
||||
<!--<span style="color: #808080">-->
|
||||
<!--<center><b>坡道解锁</b></center>-->
|
||||
<!--</span>-->
|
||||
<!--</button>-->
|
||||
<button :id="MixinCommand.totalCancel.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.totalCancel.button.operation, ['Signal','SignalButton'])">
|
||||
<span style="color: black">
|
||||
<center><b>总取消</b></center>
|
||||
@ -71,17 +71,17 @@
|
||||
<center><b>道岔解封</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Signal.signalLight.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalLight.menuButton.operation, ['Signal'])">
|
||||
<span style="color: black">
|
||||
<center><b>点灯</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Signal.signalDestroy.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalDestroy.menuButton.operation, ['Signal'])">
|
||||
<span style="color:#800000">
|
||||
<center><b>灭灯</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Station.guideLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor: guideLockLeftFlag? guideColorDown: guideColorUp}" @click="guideLockLeftButtonDown()">
|
||||
<!--<button :id="Signal.signalLight.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalLight.menuButton.operation, ['Signal'])">-->
|
||||
<!--<span style="color: black">-->
|
||||
<!--<center><b>点灯</b></center>-->
|
||||
<!--</span>-->
|
||||
<!--</button>-->
|
||||
<!--<button :id="Signal.signalDestroy.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalDestroy.menuButton.operation, ['Signal'])">-->
|
||||
<!--<span style="color:#800000">-->
|
||||
<!--<center><b>灭灯</b></center>-->
|
||||
<!--</span>-->
|
||||
<!--</button>-->
|
||||
<button :id="Station.stationMasterLock.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor: sGuideMasterLock? guideColorDown: guideColorUp}" @click="guideLockLeftButtonDown()">
|
||||
<span style="color: #800000">
|
||||
<center><b>S引导总锁</b></center>
|
||||
</span>
|
||||
@ -110,11 +110,11 @@
|
||||
<center><b>标记窗</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button class="button_box" :style="{width: width + 'px', backgroundColor:buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: #800000">
|
||||
<center><b>故障通知</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<!--<button class="button_box" :style="{width: width + 'px', backgroundColor:buttonUpColor}" @click="buttonDown()">-->
|
||||
<!--<span style="color: #800000">-->
|
||||
<!--<center><b>故障通知</b></center>-->
|
||||
<!--</span>-->
|
||||
<!--</button>-->
|
||||
<password-box ref="password" @checkOver="passWordCommit" @checkCancel="clearOperate" />
|
||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||
</div>
|
||||
@ -147,10 +147,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
point: {
|
||||
x: 0,
|
||||
y: 30
|
||||
},
|
||||
// point: {
|
||||
// x: 0,
|
||||
// y: 30
|
||||
// },
|
||||
operation: '0',
|
||||
buttonName: '',
|
||||
guideColorDown: '#FEEE1A',
|
||||
@ -182,6 +182,9 @@ export default {
|
||||
'autoReentryList',
|
||||
'autoReentryData'
|
||||
]),
|
||||
point() {
|
||||
return this.$store.state.training.prdType == '01' ? {x:0, y:30} : {x:0, y:0};
|
||||
},
|
||||
Switch() {
|
||||
return OperationEvent.Switch;
|
||||
},
|
||||
@ -194,14 +197,23 @@ export default {
|
||||
Signal() {
|
||||
return OperationEvent.Signal;
|
||||
},
|
||||
CTCCommand() {
|
||||
return OperationEvent.CTCCommand;
|
||||
},
|
||||
MixinCommand() {
|
||||
return OperationEvent.MixinCommand;
|
||||
},
|
||||
Command() {
|
||||
return OperationEvent.Command;
|
||||
},
|
||||
sGuideMasterLock() {
|
||||
return this.$store.state.map.stationSGuideMasterLock;
|
||||
},
|
||||
xGuideMasterLock() {
|
||||
return this.$store.state.map.stationXGuideMasterLock;
|
||||
},
|
||||
isShowBtn() {
|
||||
return this.$store.state.training.prdType == '01';
|
||||
return this.$store.state.training.prdType == '01' || this.$store.state.training.prdType == '10';
|
||||
},
|
||||
CMD() {
|
||||
return CMD;
|
||||
@ -258,7 +270,13 @@ export default {
|
||||
}
|
||||
this.deviceList = [];
|
||||
}
|
||||
}
|
||||
},
|
||||
'$store.state.map.showCentralizedStationCode': function(val) {
|
||||
if (val){
|
||||
const station = this.$store.getters['map/getDeviceByCode'](val);
|
||||
this.$store.getters['map/checkStationGuideMaster'](station.code, station.sGuideMasterLock, station.xGuideMasterLock);
|
||||
}
|
||||
},
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.routeDataMap = null;
|
||||
@ -323,15 +341,13 @@ export default {
|
||||
// S引导总锁按钮点击
|
||||
guideLockLeftButtonDown() {
|
||||
const operate = {
|
||||
operation: this.Switch.guideLock.leftButton.operation
|
||||
operation: this.Station.stationMasterLock.leftButton.operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
// 引导总锁弹出 调用取消引导总锁指令
|
||||
if (this.guideLockRightFlag) {
|
||||
operate.nextCmdType = CMD.Switch.CMD_SWITCH_MASTER_UNBLOCK;
|
||||
operate.param = {right: false};
|
||||
}
|
||||
operate.nextCmdType = this.sGuideMasterLock? CMD.Station.CMD_STATION_MASTER_UNLOCK:CMD.Station.CMD_STATION_MASTER_LOCK;
|
||||
operate.param = {throat: 'S', stationCode: this.$store.state.map.showCentralizedStationCode};
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
@ -341,15 +357,13 @@ export default {
|
||||
// X引导总锁按钮点击
|
||||
guideLockRightButtonDown() {
|
||||
const operate = {
|
||||
operation: this.Switch.guideLock.rightButton.operation
|
||||
operation: this.Station.stationMasterLock.rightButton.operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
// 引导总锁弹出 调用取消引导总锁指令
|
||||
if (this.guideLockRightFlag) {
|
||||
operate.nextCmdType = CMD.Switch.CMD_SWITCH_MASTER_UNBLOCK;
|
||||
operate.param = {right: true};
|
||||
}
|
||||
operate.nextCmdType = this.xGuideMasterLock? CMD.Station.CMD_STATION_MASTER_UNLOCK:CMD.Station.CMD_STATION_MASTER_LOCK;
|
||||
operate.param = {throat: 'X', stationCode: this.$store.state.map.showCentralizedStationCode};
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
@ -389,6 +403,7 @@ export default {
|
||||
if (valid) {
|
||||
this.commandTypeList = [];
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', null);
|
||||
this.guideLockRightFlag = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -425,7 +440,7 @@ export default {
|
||||
}
|
||||
this.deviceTimeNode = this.$store.state.socket.simulationTimeSync;
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](deviceList[0].signalCode || deviceList[0].code);// deviceList[0] 为 SignalButton || Signal
|
||||
if (deviceList.length === 1 && !signal.routeLock) { // 排列进路 处理始端信号机状态
|
||||
if (deviceList.length === 1 && !signal.lockedRouteCode) { // 排列进路 处理始端信号机状态
|
||||
operate.code = deviceList[0].code;
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
if (valid) {
|
||||
@ -437,12 +452,12 @@ export default {
|
||||
}).catch(() => {
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
} else if (deviceList.length === 1 && signal.routeLock) { // 信号重开
|
||||
} else if (deviceList.length === 1 && signal.lockedRouteCode) { // 信号重开
|
||||
operate.operation = this.Signal.reopenSignal.button.operation;
|
||||
operate.over = true;
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL;
|
||||
operate.code = signal.code;
|
||||
operate.param = {signalId: signal.code};
|
||||
operate.param = {signalCode: signal.code};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({valid, response}) => {
|
||||
this.clearOperate();
|
||||
}).catch(() => this.$refs.noticeInfo.doShow() );
|
||||
@ -456,7 +471,7 @@ export default {
|
||||
operate.over = true;
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE;
|
||||
operate.code = deviceList[deviceList.length - 1].code;
|
||||
operate.param = {routeId: route.code};
|
||||
operate.param = {routeCode: route.code};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
this.deviceTimeNode = 0;
|
||||
}).catch(() => {
|
||||
@ -474,7 +489,7 @@ export default {
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE,
|
||||
param: {
|
||||
signalId: model._type === 'Signal' ? model.code : model.signalCode
|
||||
signalCode: model._type === 'Signal' ? model.code : model.signalCode
|
||||
}
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
@ -492,7 +507,7 @@ export default {
|
||||
code: model.code,
|
||||
operation: this.Signal.guide.button.operation,
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
|
||||
param: {signalId: model.signalCode}
|
||||
param: {signalCode: model.signalCode}
|
||||
};
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](model.signalCode);
|
||||
// 信号机引导时间15s以内再次点击引导不需要进行密码输入
|
||||
@ -513,11 +528,11 @@ export default {
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
|
||||
};
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](model.signalCode || model.code);
|
||||
if (model._type === 'SignalButton' && model.type === 'PICK' && signal.routeLock) {
|
||||
operate.param = {signalId: model.signalCode};
|
||||
if (model._type === 'SignalButton' && model.type === 'PICK') {
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
this.sendCommand(operate);
|
||||
} else if (model._type === 'Signal' && model.type === 'SHUNTING' && signal.routeLock) {
|
||||
operate.param = {signalId: model.code};
|
||||
} else if (model._type === 'Signal' && model.type === 'SHUNTING') {
|
||||
operate.param = {signalCode: model.code};
|
||||
this.sendCommand(operate);
|
||||
}
|
||||
},
|
||||
@ -527,7 +542,7 @@ export default {
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: this.cmdType,
|
||||
param: { id: model.code}
|
||||
param: { switchCode: model.code}
|
||||
};
|
||||
this.sendCommand(operate);
|
||||
},
|
||||
@ -563,18 +578,18 @@ export default {
|
||||
if (model._type === 'Signal' && !this.checkHasTrainButton(model)) {
|
||||
if (buttonOperation === this.Signal.lock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_BLOCK;
|
||||
operate.param = {signalId: model.code};
|
||||
operate.param = {signalCode: model.code};
|
||||
} else if (buttonOperation === this.Signal.unlock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_UNBLOCK;
|
||||
operate.param = {signalId: model.code};
|
||||
operate.param = {signalCode: model.code};
|
||||
}
|
||||
} else if (model._type === 'SignalButton' && model.type === 'PICK') {
|
||||
if (buttonOperation === this.Signal.lock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_BLOCK;
|
||||
operate.param = {signalId: model.signalCode};
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
} else if (buttonOperation === this.Signal.unlock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_UNBLOCK;
|
||||
operate.param = {signalId: model.signalCode};
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
}
|
||||
}
|
||||
this.sendCommand(operate);
|
||||
@ -587,9 +602,15 @@ export default {
|
||||
code: model.code,
|
||||
operation: this.guideLockRightFlag ? this.Switch.guideLock.rightButton : this.Switch.guideLock.leftButton,
|
||||
nextCmdType: CMD.Switch.CMD_SWITCH_MASTER_LOCK,
|
||||
param: {signalId: model.signalCode}
|
||||
param: {signalCode: model.signalCode}
|
||||
};
|
||||
this.$refs.password.doShow(operate);
|
||||
// 信号机引导时间15s以内再次点击引导不需要进行密码输入
|
||||
if (signal.guideTime) {
|
||||
operate.cmdType = CMD.Switch.CMD_SWITCH_MASTER_LOCK;
|
||||
this.sendCommand(operate);
|
||||
} else {
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
}
|
||||
},
|
||||
handelFaultSection(model) {
|
||||
@ -599,15 +620,16 @@ export default {
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK,
|
||||
param: {id: model.code}
|
||||
param: {sectionCode: model.code}
|
||||
};
|
||||
this.sendCommand(operate);
|
||||
}
|
||||
},
|
||||
// CHANGE_DIRECTION
|
||||
selectedChange() {
|
||||
// 按钮按下时
|
||||
const model = this.selected; // 选择设备
|
||||
if (this.$store.state.training.prdType != '01' || this.selected._event !== MouseEvent.Left || (!model._type && !model._code)) {
|
||||
if ((this.$store.state.training.prdType != '01' && this.$store.state.training.prdType != '10') || this.selected._event !== MouseEvent.Left || (!model._type && !model._code)) {
|
||||
return;
|
||||
}
|
||||
const buttonOperation = this.$store.state.menuOperation.buttonOperation;
|
||||
@ -636,8 +658,12 @@ export default {
|
||||
this.clearOperate();
|
||||
}
|
||||
} else if (!buttonOperation) {
|
||||
const signalButtonList = ['ASSIST', 'CHANGE_DIRECTION', 'PICK_ASSIST', 'DEPART_ASSIST', 'OCCLUSION', 'RECOVERY', 'ACCIDENT'];
|
||||
if (model._type === 'SignalButton' && !this.checkSignalBlock(model.signalCode) && model.type === 'GUIDE' ) {
|
||||
this.handleGuideSignal(model);
|
||||
} else if (model._type === 'SignalButton' && signalButtonList.includes(model.type)) {
|
||||
// 改方操作 总辅助操作 接辅助操作 发辅助操作
|
||||
this.assistOperateOrChange(model);
|
||||
} else if (model._type === 'SignalButton' && !this.checkSignalBlock(model.signalCode) || (model._type === 'Signal' && !model.blockade)) {
|
||||
this.deviceList.push(model);
|
||||
this.arrangementRouteOperation(this.deviceList);
|
||||
@ -658,6 +684,133 @@ export default {
|
||||
this.deviceList = [];
|
||||
Handler.clear(); // 清空操作组
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', null);
|
||||
},
|
||||
assistOperateOrChange(model) {
|
||||
// mode.type==
|
||||
const modelTypeMap = {
|
||||
// 总辅助按钮
|
||||
'ASSIST':{
|
||||
operation:this.CTCCommand.assistPressMainAssist.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_MAIN_ASSIST,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode,
|
||||
pressDown:model.pressDown ? 0 : 1 // 1按下、0弹起
|
||||
}
|
||||
},
|
||||
// 改方
|
||||
'CHANGE_DIRECTION':{
|
||||
operation:this.CTCCommand.assistPressDownTurnDirection.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_DOWN_TURN_DIRECTION,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode,
|
||||
pressDown:model.pressDown ? 0 : 1 // 1按下、0弹起
|
||||
}
|
||||
},
|
||||
// 接辅助按钮
|
||||
'PICK_ASSIST':{
|
||||
// this.CTCCommand.assistPressDownTurnDirection.menu.operation
|
||||
operation:this.CTCCommand.assistPressReceiveAssist.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_RECEIVE_ASSIST,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
},
|
||||
// 发辅助按钮
|
||||
'DEPART_ASSIST':{
|
||||
operation:this.CTCCommand.assistPressDeliverAssist.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_DELIVER_ASSIST,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
},
|
||||
// 事故按钮
|
||||
'ACCIDENT':{
|
||||
operation:this.CTCCommand.assistPressAccident.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_ACCIDENT,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
const noPasswordModelTypeMap = {
|
||||
// 闭塞按钮
|
||||
'OCCLUSION':{
|
||||
operation:this.CTCCommand.assistPressBlock.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_BLOCK,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
},
|
||||
// 复原按钮
|
||||
'RECOVERY':{
|
||||
operation:this.CTCCommand.assistPressRestore.menu.operation,
|
||||
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_RESTORE,
|
||||
param:{
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
}
|
||||
};
|
||||
if (noPasswordModelTypeMap[model.type]) {
|
||||
const operate = {
|
||||
over:true,
|
||||
operation: noPasswordModelTypeMap[model.type].operation,
|
||||
code: model.code,
|
||||
param: noPasswordModelTypeMap[model.type].param,
|
||||
cmdType : noPasswordModelTypeMap[model.type].nextCmdType
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.clearOperate();
|
||||
} else {
|
||||
this.$refs.noticeInfo.doShow();
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
|
||||
} else {
|
||||
const operate = {
|
||||
operation: modelTypeMap[model.type].operation,
|
||||
code: model.code,
|
||||
param: modelTypeMap[model.type].param
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
operate.nextCmdType = modelTypeMap[model.type].nextCmdType;
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
}
|
||||
// const operate = {
|
||||
// over: true,
|
||||
// code: model.code,
|
||||
// operation: this.CTCCommand.assistPressDownTurnDirection.menu.operation,
|
||||
// cmdType: CMD.CTC.CTC_ASSIST_PRESS_DOWN_TURN_DIRECTION,
|
||||
// param: {
|
||||
// labelEnum:model.labelEnum,
|
||||
// stationCode:model.stationCode
|
||||
// }
|
||||
// };
|
||||
// this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
// // this.clearOperate();
|
||||
// }).catch((error) => {
|
||||
// // this.clearOperate();
|
||||
// console.error(error);
|
||||
// this.$refs.noticeInfo.doShow();
|
||||
// });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
708
src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
Normal file
@ -0,0 +1,708 @@
|
||||
<template>
|
||||
<div v-if="isShowBtn" id="menuButtons_box" class="menu menuButton" style="height: 35px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
|
||||
<button :id="Signal.arrangementRoute.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.arrangementRoute.button.operation, ['Signal'])">
|
||||
<span style="color: black">
|
||||
<center><b>进</b><b>路</b></center>
|
||||
<center><b>建</b><b>立</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="MixinCommand.totalCancel.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.totalCancel.button.operation, ['Signal','SignalButton'])">
|
||||
<span style="color: black;">
|
||||
<center><b>总</b></center>
|
||||
<center><b>取</b><b>消</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Signal.reopenSignal.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.reopenSignal.button.operation, ['Signal'])">
|
||||
<span style="color: black;">
|
||||
<center><b>信</b><b>号</b></center>
|
||||
<center><b>重</b><b>开</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Station.guideLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor: guideLockLeftFlag? guideColorDown: guideColorUp}" @click="guideLockLeftButtonDown()">
|
||||
<span style="color: #800000">
|
||||
<center><b>引</b><b>导</b></center>
|
||||
<center><b>总</b><b>锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Signal.humanTrainRoute.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.humanTrainRoute.button.operation, ['Signal','SignalButton'])">
|
||||
<span style="color: #800000">
|
||||
<center><b>总</b></center>
|
||||
<center><b>人</b><b>解</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Switch.locate.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Switch.locate.button.operation, ['Switch'])">
|
||||
<span style="color: black">
|
||||
<center><b>道</b><b>岔</b></center>
|
||||
<center><b>总</b><b>定</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Switch.reverse.button.domId" class="button_box" :style="{width: width+'px',backgroundColor:buttonUpColor}" @click="buttonDown(Switch.reverse.button.operation, ['Switch'])">
|
||||
<span style="color: black">
|
||||
<center><b>道</b><b>岔</b></center>
|
||||
<center><b>总</b><b>反</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Switch.lock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Switch.lock.button.operation, ['Switch'])">
|
||||
<span style="color: black">
|
||||
<center><b>道</b><b>岔</b></center>
|
||||
<center><b>单</b><b>锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Switch.unlock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Switch.unlock.button.operation, ['Switch'])">
|
||||
<span style="color: black">
|
||||
<center><b>道</b><b>岔</b></center>
|
||||
<center><b>解</b><b>锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="MixinCommand.block.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.lock.button.operation, ['Switch', 'Signal'])">
|
||||
<span style="color: black">
|
||||
<center><b>封</b><b>锁</b></center>
|
||||
<center><b>按</b><b>钮</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="MixinCommand.functionButton.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(MixinCommand.functionButton.button.operation, ['StationStand', 'Station'])">
|
||||
<span style="color: black;">
|
||||
<center><b>功</b><b>能</b></center>
|
||||
<center><b>按</b><b>钮</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: black;">
|
||||
<center><b>坡</b><b>道</b></center>
|
||||
<center><b>解</b><b>锁</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :disabled="true" :id="" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: black;">
|
||||
<center><b>分</b><b>路</b></center>
|
||||
<center><b>不</b><b>良</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="Command.cancel.clearMbm.domId" class="button_box" :style="{width:width+'px',backgroundColor:buttonUpColor}" @click="buttonDown(Command.cancel.clearMbm.operation)">
|
||||
<span style="color: black;">
|
||||
<center><b>命</b><b>令</b></center>
|
||||
<center><b>清</b><b>除</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: black;">
|
||||
<center><b>命</b><b>令</b></center>
|
||||
<center><b>下</b><b>达</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="" class="button_box" :style="{width: width+'px', backgroundColor: buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: black;">
|
||||
<center><b>状</b><b>态</b></center>
|
||||
<center><b>选</b><b>择</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<button :id="" class="button_box" :style="{width: width+'px', backgroundColor: buttonUpColor}" @click="buttonDown()">
|
||||
<span style="color: black;">
|
||||
<center><b>模</b><b>式</b></center>
|
||||
<center><b>转</b><b>换</b></center>
|
||||
</span>
|
||||
</button>
|
||||
<password-box ref="password" @checkOver="passWordCommit" @checkCancel="clearOperate" />
|
||||
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import Handler from '@/scripts/cmdPlugin/Handler';
|
||||
import PasswordBox from './dialog/childDialog/passwordInputBox.vue';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
import { mapGetters } from 'vuex';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import { MouseEvent } from '@/scripts/ConstDic';
|
||||
import CenterConfig from '../../../../views/newMap/newMapdraft/mapoperate/displayConfig/centerConfig';
|
||||
// import { OperateMode } from '@/scripts/ConstDic';48
|
||||
|
||||
export default {
|
||||
name: 'MapButtonMenu',
|
||||
components: {
|
||||
CenterConfig,
|
||||
PasswordBox,
|
||||
NoticeInfo
|
||||
},
|
||||
props: {
|
||||
selected: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
point: {
|
||||
x: 0,
|
||||
y: 0
|
||||
},
|
||||
operation: '0',
|
||||
buttonName: '',
|
||||
guideColorDown: '#FEEE1A',
|
||||
guideColorUp: '#DCDCDC',
|
||||
buttonDownColor: '#FEEE1A',
|
||||
buttonUpColor: '#DCDCDC',
|
||||
width: 78,
|
||||
tempData: null,
|
||||
offset: {},
|
||||
commandTypeList: [],
|
||||
cmdTypeList: [],
|
||||
deviceList: [],
|
||||
timeNode: 0, // 按钮 15秒 计时
|
||||
deviceTimeNode: 0, // 信号按钮设备15秒 计时
|
||||
routeDataMap: null, // btnCodeList 为key
|
||||
routeButtonCodeList: [], // btnCodeList 拼接code list
|
||||
guideLockRightFlag: false,
|
||||
guideLockLeftFlag: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('training', [
|
||||
'operatemode'
|
||||
]),
|
||||
...mapGetters('map', [
|
||||
'routeList',
|
||||
'routeData',
|
||||
'signalList',
|
||||
'autoReentryList',
|
||||
'autoReentryData'
|
||||
]),
|
||||
Switch() {
|
||||
return OperationEvent.Switch;
|
||||
},
|
||||
Section() {
|
||||
return OperationEvent.Section;
|
||||
},
|
||||
Station() {
|
||||
return OperationEvent.Station;
|
||||
},
|
||||
Signal() {
|
||||
return OperationEvent.Signal;
|
||||
},
|
||||
CTCCommand() {
|
||||
return OperationEvent.CTCCommand;
|
||||
},
|
||||
MixinCommand() {
|
||||
return OperationEvent.MixinCommand;
|
||||
},
|
||||
Command() {
|
||||
return OperationEvent.Command;
|
||||
},
|
||||
isShowBtn() {
|
||||
return this.$store.state.training.prdType == '01' || this.$store.state.training.prdType == '10';
|
||||
},
|
||||
CMD() {
|
||||
return CMD;
|
||||
},
|
||||
cmdType() {
|
||||
switch (this.operation) {
|
||||
case this.Switch.lock.button.operation: // 道岔单锁
|
||||
return CMD.Switch.CMD_SWITCH_SINGLE_LOCK;
|
||||
case this.Switch.unlock.button.operation: // 道岔解锁
|
||||
return CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK;
|
||||
case this.Switch.locate.button.operation: // 道岔定位
|
||||
return CMD.Switch.CMD_SWITCH_NORMAL_POSITION;
|
||||
case this.Switch.reverse.button.operation: // 道岔反位
|
||||
return CMD.Switch.CMD_SWITCH_REVERSE_POSITION;
|
||||
case this.Switch.block.button.operation: // 道岔封锁
|
||||
return CMD.Switch.CMD_SWITCH_BLOCK;
|
||||
case this.Switch.unblock.button.operation:
|
||||
return CMD.Switch.CMD_SWITCH_UNBLOCK;
|
||||
case this.Section.fault.button.operation: // 区故解
|
||||
return CMD.Section.CMD_SECTION_FAULT_UNLOCK;
|
||||
case this.Signal.humanTrainRoute.button.operation: // 总人解 (取消引导进路)
|
||||
return CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE;
|
||||
case this.Signal.arrangementRoute.button.operation: // 排列进路
|
||||
return CMD.Signal.CMD_SIGNAL_SET_ROUTE;
|
||||
case this.Signal.guide.button.operation: // 办理引导
|
||||
return CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE;
|
||||
}
|
||||
return '';
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'$store.state.menuOperation.buttonOperation': function (val, old) {
|
||||
this.updateButtonShow(val, old);
|
||||
},
|
||||
'$store.state.menuOperation.selectedCount': function (val) {
|
||||
this.selectedChange();
|
||||
},
|
||||
'$store.state.map.clearButtonCount': function(val) {
|
||||
this.commandTypeList = [];
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', null);
|
||||
this.clearOperate();
|
||||
this.guideLockRightFlag = false;
|
||||
this.guideLockLeftFlag = false;
|
||||
},
|
||||
'$store.state.socket.simulationTimeSync': function (val) {
|
||||
if (this.timeNode && val - this.timeNode >= 15) {
|
||||
this.clearOperate();
|
||||
}
|
||||
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
|
||||
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
|
||||
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
|
||||
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
|
||||
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'Signal', hasSelected: 0}]);
|
||||
}
|
||||
this.deviceList = [];
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.routeDataMap = null;
|
||||
this.routeButtonCodeList = [];
|
||||
},
|
||||
methods: {
|
||||
// 输入密码正确回调
|
||||
passWordCommit(data) {
|
||||
let operate = {};
|
||||
if (data.nextCmdType) {
|
||||
operate = {
|
||||
over: true,
|
||||
operation: data.operation,
|
||||
cmdType: data.nextCmdType,
|
||||
param: data.param
|
||||
};
|
||||
} else {
|
||||
operate = {
|
||||
operationPre: data.operation,
|
||||
operation: data.operateNext
|
||||
};
|
||||
}
|
||||
this.trainingOperation(operate);
|
||||
},
|
||||
// 执行操作
|
||||
trainingOperation(operate) {
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
/* 引导总锁输入面后 处理按钮选中状态 */
|
||||
if (operate.operationPre === this.Switch.guideLock.leftButton.operation || operate.operation === this.Switch.guideLock.leftButton.operation) {
|
||||
this.guideLockLeftFlag = !this.guideLockLeftFlag;
|
||||
} else if (operate.operationPre === this.Switch.guideLock.rightButton.operation || operate.operation === this.Switch.guideLock.rightButton.operation) {
|
||||
this.guideLockRightFlag = !this.guideLockRightFlag;
|
||||
}
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
}
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
updateButtonShow(val, old) {
|
||||
if (old) {
|
||||
// 恢复旧按钮显示
|
||||
const domId = OperationHandler.getDomIdByOperation(old);
|
||||
const dom = document.getElementById(domId);
|
||||
if (dom) {
|
||||
dom.disabled = false;
|
||||
dom.style.backgroundColor = this.buttonUpColor;
|
||||
}
|
||||
}
|
||||
if (val) {
|
||||
// 新按钮按下效果
|
||||
const domId = OperationHandler.getDomIdByOperation(val);
|
||||
const dom = document.getElementById(domId);
|
||||
if (dom) {
|
||||
dom.disabled = true;
|
||||
dom.style.backgroundColor = this.buttonDownColor;
|
||||
}
|
||||
}
|
||||
},
|
||||
// S引导总锁按钮点击
|
||||
guideLockLeftButtonDown() {
|
||||
const operate = {
|
||||
operation: this.Switch.guideLock.leftButton.operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
// 引导总锁弹出 调用取消引导总锁指令
|
||||
if (this.guideLockRightFlag) {
|
||||
operate.nextCmdType = CMD.Switch.CMD_SWITCH_MASTER_UNBLOCK;
|
||||
operate.param = {right: false};
|
||||
}
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
});
|
||||
},
|
||||
// X引导总锁按钮点击
|
||||
guideLockRightButtonDown() {
|
||||
const operate = {
|
||||
operation: this.Switch.guideLock.rightButton.operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
// 引导总锁弹出 调用取消引导总锁指令
|
||||
if (this.guideLockRightFlag) {
|
||||
operate.nextCmdType = CMD.Switch.CMD_SWITCH_MASTER_UNBLOCK;
|
||||
operate.param = {right: true};
|
||||
}
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
});
|
||||
},
|
||||
buttonDown(operation, commandTypeList) {
|
||||
this.clearOperate();
|
||||
if (operation != this.Command.cancel.clearMbm.operation) {
|
||||
const operate = {
|
||||
operation: operation
|
||||
};
|
||||
// 以下 会弹出密码框 (总人解,区故解) 铅封按钮
|
||||
const operationList = [this.Signal.humanTrainRoute.button.operation, this.Section.fault.button.operation];
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.operation = operation;
|
||||
this.commandTypeList = commandTypeList;
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', operation); // 按钮菜单是否被按下
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
// 判断是否需要 弹窗密码框
|
||||
if (operationList.includes(operation)) {
|
||||
operate['operateNext'] = this.Command.close.password.operation;
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
this.timeNode = this.$store.state.socket.simulationTimeSync;
|
||||
this.$store.dispatch('training/emitTipFresh');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 清除按钮
|
||||
const operate = {
|
||||
start: true,
|
||||
operation: operation
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.commandTypeList = [];
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', null);
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
// 解析进路数据
|
||||
handleRouteDataMap() {
|
||||
this.routeDataMap = {};
|
||||
this.routeButtonCodeList = [];
|
||||
this.routeList.forEach(item => {
|
||||
const name = item.btnCodeList.join('-');
|
||||
this.routeDataMap[name] = item;
|
||||
this.routeButtonCodeList.push(name);
|
||||
});
|
||||
},
|
||||
// 校验已点击的信号按钮code 是否有符合条件的进路
|
||||
checkHaveRoute(deviceList) {
|
||||
let name = '';
|
||||
deviceList.forEach((device, index) =>{
|
||||
name = name + (index ? '-' : '') + device.code;
|
||||
});
|
||||
return this.routeButtonCodeList.some(item => item.includes(name));
|
||||
},
|
||||
// 排列进路 OR 信号重开操作
|
||||
arrangementRouteOperation(deviceList) {
|
||||
const operate = {
|
||||
operation: this.Signal.arrangementRoute.button.operation
|
||||
};
|
||||
if (!this.routeDataMap) { this.handleRouteDataMap(); }
|
||||
|
||||
if (!this.checkHaveRoute(deviceList)) { // 无效的进路按钮选择 清除deviceList
|
||||
this.$message.error('无效的进路按钮');
|
||||
this.clearOperate();
|
||||
return;
|
||||
}
|
||||
this.deviceTimeNode = this.$store.state.socket.simulationTimeSync;
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](deviceList[0].signalCode || deviceList[0].code);// deviceList[0] 为 SignalButton || Signal
|
||||
console.log(deviceList, signal, '***************');
|
||||
if (deviceList.length === 1 && !signal.routeLock) { // 排列进路 处理始端信号机状态
|
||||
operate.code = deviceList[0].code;
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
if (valid) {
|
||||
// 仅信号按钮调车信号机有状态
|
||||
if (deviceList[0]._type === 'SignalButton' || (deviceList[0]._type === 'Signal' && deviceList[0].type === 'SHUNTING')) {
|
||||
this.$store.dispatch('training/updateMapState', [{code: deviceList[0].code, _type: deviceList[0]._type, hasSelected: 1}]);
|
||||
}
|
||||
}
|
||||
}).catch(() => {
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
} else if (deviceList.length === 1 && signal.routeLock) { // 信号重开
|
||||
operate.operation = this.Signal.reopenSignal.button.operation;
|
||||
operate.over = true;
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL;
|
||||
operate.code = signal.code;
|
||||
operate.param = {signalCode: signal.code};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({valid, response}) => {
|
||||
this.clearOperate();
|
||||
}).catch(() => this.$refs.noticeInfo.doShow() );
|
||||
} else if (deviceList.length > 1) {
|
||||
let key = '';
|
||||
deviceList.forEach((item, index) => {
|
||||
key = key + (index ? '-' : '') + item.code;
|
||||
});
|
||||
const route = this.routeDataMap[key];
|
||||
if (route) {
|
||||
operate.over = true;
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_SET_ROUTE;
|
||||
operate.code = deviceList[deviceList.length - 1].code;
|
||||
operate.param = {routeCode: route.code};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
this.deviceTimeNode = 0;
|
||||
}).catch(() => {
|
||||
this.deviceTimeNode = 0;
|
||||
this.$refs.noticeInfo.doShow();
|
||||
}).finally(() => { this.clearOperate(); });
|
||||
}
|
||||
}
|
||||
},
|
||||
// 总取消
|
||||
handelTotalCancel(model) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE,
|
||||
param: {
|
||||
signalCode: model._type === 'Signal' ? model.code : model.signalCode
|
||||
}
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
this.clearOperate();
|
||||
}).catch((error) => {
|
||||
this.clearOperate();
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
// 引导信号
|
||||
handleGuideSignal(model) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.Signal.guide.button.operation,
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
|
||||
param: {signalCode: model.signalCode}
|
||||
};
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](model.signalCode);
|
||||
// 信号机引导时间15s以内再次点击引导不需要进行密码输入
|
||||
if (signal.guideTime) {
|
||||
this.sendCommand(operate);
|
||||
} else {
|
||||
operate.nextCmdType = CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE;
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
},
|
||||
// 人解进路
|
||||
handleTotalHumanSolution(model) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
val: model.code,
|
||||
cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
|
||||
};
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](model.signalCode || model.code);
|
||||
if (model._type === 'SignalButton' && model.type === 'PICK' && signal.routeLock) {
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
this.sendCommand(operate);
|
||||
} else if (model._type === 'Signal' && model.type === 'SHUNTING' && signal.routeLock) {
|
||||
operate.param = {signalCode: model.code};
|
||||
this.sendCommand(operate);
|
||||
}
|
||||
},
|
||||
handelSwitchOperate(model) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: this.cmdType,
|
||||
param: { switchCode: model.code}
|
||||
};
|
||||
this.sendCommand(operate);
|
||||
},
|
||||
// 发送指令
|
||||
sendCommand(operate) {
|
||||
this.$store.dispatch('training/nextNew', operate).then(({valid, response}) => {}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
}).finally(() =>{ this.clearOperate(); });
|
||||
},
|
||||
// 校验是否有列车(接车)按钮
|
||||
checkHasTrainButton(model) {
|
||||
if (model.signalButtonList && model.signalButtonList.length > 0) {
|
||||
let flag = false;
|
||||
model.signalButtonList.forEach(item => {
|
||||
const signalButton = this.$store.getters['map/getDeviceByCode'](item);
|
||||
flag = flag || signalButton.type === 'PICK';
|
||||
});
|
||||
return flag;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
handelSignalBlockOrUnblock(model) {
|
||||
const buttonOperation = this.$store.state.menuOperation.buttonOperation;
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: buttonOperation,
|
||||
cmdType: '',
|
||||
param: {}
|
||||
};
|
||||
if (model._type === 'Signal' && !this.checkHasTrainButton(model)) {
|
||||
if (buttonOperation === this.Signal.lock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_BLOCK;
|
||||
operate.param = {signalCode: model.code};
|
||||
} else if (buttonOperation === this.Signal.unlock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_UNBLOCK;
|
||||
operate.param = {signalCode: model.code};
|
||||
}
|
||||
} else if (model._type === 'SignalButton' && model.type === 'PICK') {
|
||||
if (buttonOperation === this.Signal.lock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_BLOCK;
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
} else if (buttonOperation === this.Signal.unlock.button.operation) {
|
||||
operate.cmdType = CMD.Signal.CMD_SIGNAL_UNBLOCK;
|
||||
operate.param = {signalCode: model.signalCode};
|
||||
}
|
||||
}
|
||||
this.sendCommand(operate);
|
||||
},
|
||||
handleGuideLock(model) {
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](model.signalCode);
|
||||
if (signal && (this.guideLockRightFlag && signal.right) || (this.guideLockLeftFlag && !signal.right)) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.guideLockRightFlag ? this.Switch.guideLock.rightButton : this.Switch.guideLock.leftButton,
|
||||
nextCmdType: CMD.Switch.CMD_SWITCH_MASTER_LOCK,
|
||||
param: {signalCode: model.signalCode}
|
||||
};
|
||||
this.$refs.password.doShow(operate);
|
||||
}
|
||||
},
|
||||
handelFaultSection(model) {
|
||||
if (model._type === 'Section') {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.$store.state.menuOperation.buttonOperation,
|
||||
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK,
|
||||
param: {sectionCode: model.code}
|
||||
};
|
||||
this.sendCommand(operate);
|
||||
}
|
||||
},
|
||||
// CHANGE_DIRECTION
|
||||
selectedChange() {
|
||||
// 按钮按下时
|
||||
const model = this.selected; // 选择设备
|
||||
if ((this.$store.state.training.prdType != '01' && this.$store.state.training.prdType != '10') || this.selected._event !== MouseEvent.Left || (!model._type && !model._code)) {
|
||||
return;
|
||||
}
|
||||
const buttonOperation = this.$store.state.menuOperation.buttonOperation;
|
||||
const switchOperation = [
|
||||
this.Switch.lock.button.operation,
|
||||
this.Switch.unlock.button.operation,
|
||||
this.Switch.locate.button.operation,
|
||||
this.Switch.reverse.button.operation,
|
||||
this.Switch.block.button.operation,
|
||||
this.Switch.unblock.button.operation
|
||||
];
|
||||
if ((this.guideLockLeftFlag || this.guideLockRightFlag) && model._type === 'SignalButton' && model.type === 'GUIDE') {
|
||||
this.handleGuideLock(model);
|
||||
} else if (buttonOperation && this.commandTypeList.includes(model._type)) {
|
||||
if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
|
||||
this.handelTotalCancel(model);
|
||||
} else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) {
|
||||
this.handleTotalHumanSolution(model);
|
||||
} else if (switchOperation.includes(buttonOperation)) {
|
||||
this.handelSwitchOperate(model);
|
||||
} else if (buttonOperation === this.Signal.lock.button.operation || buttonOperation === this.Signal.unlock.button.operation) {
|
||||
this.handelSignalBlockOrUnblock(model);
|
||||
} else if (buttonOperation === this.Section.fault.button.operation) {
|
||||
this.handelFaultSection(model);
|
||||
} else {
|
||||
this.clearOperate();
|
||||
}
|
||||
} else if (!buttonOperation) {
|
||||
if (model._type === 'SignalButton' && !this.checkSignalBlock(model.signalCode) && model.type === 'GUIDE' ) {
|
||||
this.handleGuideSignal(model);
|
||||
} else if (model._type === 'SignalButton' && model.type === 'CHANGE_DIRECTION') {
|
||||
// 改方操作
|
||||
this.changeDirection(model);
|
||||
} else if (model._type === 'SignalButton' && !this.checkSignalBlock(model.signalCode) || (model._type === 'Signal' && !model.blockade)) {
|
||||
this.deviceList.push(model);
|
||||
this.arrangementRouteOperation(this.deviceList);
|
||||
} else {
|
||||
this.clearOperate();
|
||||
}
|
||||
} else { this.clearOperate(); }
|
||||
if (this.timeNode) { this.timeNode = 0; }
|
||||
},
|
||||
checkSignalBlock(code) { // 校验信号是否锁闭
|
||||
if (code) {
|
||||
const signal = this.$store.getters['map/getDeviceByCode'](code);
|
||||
return signal && signal.blockade;
|
||||
} else { return false; }
|
||||
},
|
||||
clearOperate() { // 清除操作
|
||||
this.deviceList && this.deviceList.length && this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: this.deviceList[0]._type, hasSelected: 0}]);
|
||||
this.deviceList = [];
|
||||
Handler.clear(); // 清空操作组
|
||||
this.$store.dispatch('menuOperation/setButtonOperation', null);
|
||||
},
|
||||
changeDirection(model) {
|
||||
const operate = {
|
||||
over: true,
|
||||
code: model.code,
|
||||
operation: this.CTCCommand.assistPressDownTurnDirection.menu.operation,
|
||||
cmdType: CMD.CTC.CTC_ASSIST_PRESS_DOWN_TURN_DIRECTION,
|
||||
param: {
|
||||
labelEnum:model.labelEnum,
|
||||
stationCode:model.stationCode
|
||||
}
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
|
||||
// this.clearOperate();
|
||||
}).catch((error) => {
|
||||
// this.clearOperate();
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
$bg: #fff;
|
||||
$hoverBg: #FEEE1A;
|
||||
.button_box{
|
||||
display: block;
|
||||
float: left;
|
||||
font-size: 13px;
|
||||
height: 35px;
|
||||
}
|
||||
.menu {
|
||||
background-color: $bg;
|
||||
position: fixed;
|
||||
border: 1px solid gray;
|
||||
z-index: 10;
|
||||
display: block;
|
||||
|
||||
.dsp-block {
|
||||
display: block;
|
||||
text-align: center;
|
||||
border-radius: unset;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dsp-block:hover {
|
||||
background-color: $hoverBg;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -15,7 +15,7 @@
|
||||
import PopMenu from '@/components/PopMenu';
|
||||
import SectionControl from '@/jmapNew/theme/components/menus/dialog/sectionControl';
|
||||
import TrainAddPlan from '@/jmapNew/theme/components/menus/dialog/trainAddPlan';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import SectionDetail from './dialog/sectionDetail';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import { mapGetters } from 'vuex';
|
||||
@ -51,14 +51,14 @@ export default {
|
||||
menu: [],
|
||||
menuNormal: {
|
||||
Local: [
|
||||
{
|
||||
label: '图纸调用',
|
||||
handler: this.drawingCall
|
||||
},
|
||||
{
|
||||
label: '基础设备培训',
|
||||
handler: this.baDeTrCall
|
||||
}
|
||||
// {
|
||||
// label: '图纸调用',
|
||||
// handler: this.drawingCall
|
||||
// },
|
||||
// {
|
||||
// label: '基础设备培训',
|
||||
// handler: this.baDeTrCall
|
||||
// }
|
||||
],
|
||||
Center: [
|
||||
// {
|
||||
|
@ -16,7 +16,7 @@
|
||||
<script>
|
||||
import PopMenu from '@/components/PopMenu';
|
||||
import RouteControl from '@/jmapNew/theme/components/menus/dialog/routeControl';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import RouteSelection from './dialog/routeSelection';
|
||||
import RouteDetail from './dialog/routeDetail';
|
||||
import RouteHandControl from './dialog/routeHandControl';
|
||||
@ -57,14 +57,14 @@ export default {
|
||||
menu: [],
|
||||
menuNormal: {
|
||||
Local: [
|
||||
{
|
||||
label: '图纸调用',
|
||||
handler: this.drawingCall
|
||||
},
|
||||
{
|
||||
label: '基础设备培训',
|
||||
handler: this.baDeTrCall
|
||||
}
|
||||
// {
|
||||
// label: '图纸调用',
|
||||
// handler: this.drawingCall
|
||||
// },
|
||||
// {
|
||||
// label: '基础设备培训',
|
||||
// handler: this.baDeTrCall
|
||||
// }
|
||||
// {
|
||||
// label: '办理进路',
|
||||
// handler: this.arrangementRoute,
|
||||
|
@ -14,7 +14,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
|
||||
import CancelMouseState from '@/mixin/CancelMouseState';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
|
||||
@ -42,14 +42,14 @@ export default {
|
||||
menu: [],
|
||||
menuNormal: {
|
||||
Local: [
|
||||
{
|
||||
label: '图纸调用',
|
||||
handler: this.drawingCall
|
||||
},
|
||||
{
|
||||
label: '基础设备培训',
|
||||
handler: this.baDeTrCall
|
||||
}
|
||||
// {
|
||||
// label: '图纸调用',
|
||||
// handler: this.drawingCall
|
||||
// },
|
||||
// {
|
||||
// label: '基础设备培训',
|
||||
// handler: this.baDeTrCall
|
||||
// }
|
||||
],
|
||||
Center: [
|
||||
]
|
||||
|
@ -13,7 +13,7 @@ import PopMenu from '@/components/PopMenu';
|
||||
import StandControl from './dialog/standControl';
|
||||
import StandDetail from './dialog/standDetail';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
|
@ -15,7 +15,7 @@ import PopMenu from '@/components/PopMenu';
|
||||
import DrawSelect from './dialog/drawSelect';
|
||||
import SectionControl from '@/jmapNew/theme/components/menus/dialog/sectionControl';
|
||||
import SwitchControl from '@/jmapNew/theme/components/menus/dialog/switchControl';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
import SwitchHookLock from '@/jmapNew/theme/components/menus/dialog/switchHookLock';
|
||||
@ -51,14 +51,14 @@ export default {
|
||||
menu: [],
|
||||
menuNormal: {
|
||||
Local: [
|
||||
{
|
||||
label: '图纸调用',
|
||||
handler: this.drawingCall
|
||||
},
|
||||
{
|
||||
label: '基础设备培训',
|
||||
handler: this.baDeTrCall
|
||||
}
|
||||
// {
|
||||
// label: '图纸调用',
|
||||
// handler: this.drawingCall
|
||||
// },
|
||||
// {
|
||||
// label: '基础设备培训',
|
||||
// handler: this.baDeTrCall
|
||||
// }
|
||||
],
|
||||
Center: [
|
||||
// {
|
||||
|
@ -9,13 +9,14 @@
|
||||
<train-delete-number ref="trainDeleteNumber" />
|
||||
<train-detail-info ref="trainDetailInfo" />
|
||||
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
|
||||
<train-set-plan ref="trainSetPlan" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PopMenu from '@/components/PopMenu';
|
||||
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFaultNew';
|
||||
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
|
||||
import TrainControl from './dialog/trainControl';
|
||||
@ -24,6 +25,7 @@ import TrainMoveNumber from './dialog/trainMoveNumber';
|
||||
import TrainCreateNumber from './dialog/trainCreateNumber';
|
||||
import TrainDeleteNumber from './dialog/trainDeleteNumber';
|
||||
import TrainDetailInfo from './dialog/trainDetailInfo';
|
||||
import TrainSetPlan from './dialog/trainSetPlan';
|
||||
import CancelMouseState from '@/mixin/CancelMouseState';
|
||||
import CMD from '@/scripts/cmdPlugin/CommandEnum';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
@ -41,7 +43,8 @@ export default {
|
||||
TrainCreateNumber,
|
||||
TrainDeleteNumber,
|
||||
TrainDetailInfo,
|
||||
SetFault
|
||||
SetFault,
|
||||
TrainSetPlan
|
||||
},
|
||||
mixins: [
|
||||
CancelMouseState
|
||||
@ -59,53 +62,58 @@ export default {
|
||||
menu: [],
|
||||
menuNormal: {
|
||||
Local: [
|
||||
{
|
||||
label: '新建计划列车',
|
||||
handler: this.createPlanTrain,
|
||||
cmdType: CMD.TrainWindow.CMD_Train_Init_Plan
|
||||
}
|
||||
{
|
||||
label: '设置计划车',
|
||||
handler: this.setPlanTrain,
|
||||
cmdType: CMD.TrainWindow.CMD_TRAIN_SET_PLAN
|
||||
},
|
||||
],
|
||||
Center: [
|
||||
{
|
||||
label: '新建车组号',
|
||||
handler: this.createTrainNo
|
||||
},
|
||||
{
|
||||
label: '移动车组号',
|
||||
handler: this.moveTrainNo
|
||||
},
|
||||
{
|
||||
label: '删除车组号',
|
||||
handler: this.deleteTrainNo
|
||||
},
|
||||
{
|
||||
label: '修改车组号',
|
||||
handler: this.editTrainNo
|
||||
},
|
||||
{
|
||||
label: '设计划车',
|
||||
handler: this.setPlanTrainId
|
||||
},
|
||||
{
|
||||
label: '设目的地',
|
||||
handler: this.destinationTrainId
|
||||
},
|
||||
{
|
||||
label: '设人工车',
|
||||
handler: this.artificialTrainId
|
||||
},
|
||||
{
|
||||
label: '设特殊人工车',
|
||||
handler: this.undeveloped
|
||||
},
|
||||
{
|
||||
label: '详细列车信息',
|
||||
handler: this.detailTrainInfo
|
||||
},
|
||||
{
|
||||
label: '属性',
|
||||
handler: this.undeveloped
|
||||
}
|
||||
{
|
||||
label: '设置计划车',
|
||||
handler: this.setPlanTrain,
|
||||
cmdType: CMD.TrainWindow.CMD_TRAIN_SET_PLAN
|
||||
}
|
||||
// {
|
||||
// label: '新建车组号',
|
||||
// handler: this.createTrainNo
|
||||
// },
|
||||
// {
|
||||
// label: '移动车组号',
|
||||
// handler: this.moveTrainNo
|
||||
// },
|
||||
// {
|
||||
// label: '删除车组号',
|
||||
// handler: this.deleteTrainNo
|
||||
// },
|
||||
// {
|
||||
// label: '修改车组号',
|
||||
// handler: this.editTrainNo
|
||||
// },
|
||||
// {
|
||||
// label: '设计划车',
|
||||
// handler: this.setPlanTrainId
|
||||
// },
|
||||
// {
|
||||
// label: '设目的地',
|
||||
// handler: this.destinationTrainId
|
||||
// },
|
||||
// {
|
||||
// label: '设人工车',
|
||||
// handler: this.artificialTrainId
|
||||
// },
|
||||
// {
|
||||
// label: '设特殊人工车',
|
||||
// handler: this.undeveloped
|
||||
// },
|
||||
// {
|
||||
// label: '详细列车信息',
|
||||
// handler: this.detailTrainInfo
|
||||
// },
|
||||
// {
|
||||
// label: '属性',
|
||||
// handler: this.undeveloped
|
||||
// }
|
||||
]
|
||||
},
|
||||
menuForce: [
|
||||
@ -123,6 +131,31 @@ export default {
|
||||
}
|
||||
],
|
||||
menuDirective: [
|
||||
{
|
||||
label: '切换驾驶模式',
|
||||
children: [
|
||||
{
|
||||
label: '转AM-C模式',
|
||||
handler: this.handlerApplyAmcMode
|
||||
},
|
||||
{
|
||||
label: '转SM-C模式',
|
||||
handler: this.handlerApplySmcMode
|
||||
},
|
||||
{
|
||||
label: '转AM-I模式',
|
||||
handler: this.handlerApplyAmiMode
|
||||
},
|
||||
{
|
||||
label: '转SM-I模式',
|
||||
handler: this.handlerApplySmiMode
|
||||
},
|
||||
{
|
||||
label: '转RM模式',
|
||||
handler: this.handlerApplyRmMode
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
label: '确认运行至前方站',
|
||||
handler: this.nextStation
|
||||
@ -138,7 +171,15 @@ export default {
|
||||
{
|
||||
label: '越红灯行驶',
|
||||
handler: this.handleOverEedLight
|
||||
}
|
||||
},
|
||||
{
|
||||
label: '驾驶至',
|
||||
handler: this.handleDriveTo
|
||||
},
|
||||
{
|
||||
label: '换端',
|
||||
handler: this.handleTurnDirection
|
||||
}
|
||||
],
|
||||
menuSpeed: [
|
||||
{
|
||||
@ -171,6 +212,7 @@ export default {
|
||||
initMenu() {
|
||||
// 编辑模式菜单列表
|
||||
this.menu = MenuContextHandler.covert(this.menuNormal);
|
||||
console.log(this.menu, '================');
|
||||
// 故障模式菜单列表
|
||||
if (this.operatemode === OperateMode.FAULT) {
|
||||
if (!this.$store.state.scriptRecord.bgSet) {
|
||||
@ -287,6 +329,21 @@ export default {
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
// 设置计划车
|
||||
setPlanTrain() {
|
||||
const operate = {
|
||||
start: true,
|
||||
code: this.selected.code,
|
||||
operation: OperationEvent.Train.editTrainId.menu.operation,
|
||||
param: {}
|
||||
};
|
||||
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
|
||||
if (valid) {
|
||||
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
|
||||
this.$refs.trainSetPlan.doShow(operate, this.selected);
|
||||
}
|
||||
});
|
||||
},
|
||||
// 设计划车
|
||||
setPlanTrainId() {
|
||||
const operate = {
|
||||
@ -415,6 +472,93 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
handlerApplyAmcMode() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Change_Preselection_Mode',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: { preselectionMode: 'AM_C' }
|
||||
};
|
||||
commitTrainSend(group, param).then(({ valid, operate }) => {
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
handlerApplySmcMode() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Change_Preselection_Mode',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: { preselectionMode: 'SM_C' }
|
||||
};
|
||||
commitTrainSend(group, param).then(({ valid, operate }) => {
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
handlerApplyAmiMode() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Change_Preselection_Mode',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: { preselectionMode: 'AM_I' }
|
||||
};
|
||||
commitTrainSend(group, param).then(({ valid, operate }) => {
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
handlerApplySmiMode() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Change_Preselection_Mode',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: { preselectionMode: 'SM_I' }
|
||||
};
|
||||
commitTrainSend(group, param).then(({ valid, operate }) => {
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
handlerApplyRmMode() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Change_Preselection_Mode',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: { preselectionMode: 'RM' }
|
||||
};
|
||||
commitTrainSend(group, param).then(({ valid, operate }) => {
|
||||
}).catch((error) => {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
// 驾驶至(托管)
|
||||
handleDriveTo() {
|
||||
commitOperate(menuOperate.Common.collocation, { code: this.selected.code }, 0).then(({valid, operate})=>{
|
||||
if (valid) {
|
||||
this.$refs.setFault.doShow(menuOperate.Common.collocation, this.selected, true);
|
||||
}
|
||||
});
|
||||
},
|
||||
// 换端
|
||||
handleTurnDirection() {
|
||||
const group = this.$route.query.group;
|
||||
const param = {
|
||||
commandType: 'Turn_Direction',
|
||||
targetMemberId: this.memberList.find(ele => ele.deviceCode == this.selected.code).id,
|
||||
params: {}
|
||||
};
|
||||
commitTrainSend(group, param).then(({valid, operate}) => {
|
||||
}).catch((error)=> {
|
||||
console.error(error);
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
undeveloped() {
|
||||
this.doClose();
|
||||
this.$alert('实现中......', '提示', {
|
||||
|
@ -90,7 +90,7 @@ class Theme {
|
||||
'13':'all',
|
||||
'14':'ecStation',
|
||||
'15':'all',
|
||||
'16':'all'
|
||||
'16':'ecStation'
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,8 @@ export default {
|
||||
{ label: '全线限速', value: 'LimitControl' },
|
||||
{ label: '司机', value: 'Driver' },
|
||||
{ label: '列车', value: 'Train' },
|
||||
{ label: '方向杆', value: 'DirectionRod'}
|
||||
{ label: '方向杆', value: 'DirectionRod'},
|
||||
{ label: 'CTC', value: 'CTC' }
|
||||
],
|
||||
|
||||
simulationDeviceList:[
|
||||
@ -240,6 +241,14 @@ export default {
|
||||
{ label: '默认', value: 'DEFAULT' },
|
||||
{ label: '自动换端', value: 'AUTO' },
|
||||
{ label: '无人折返', value: 'UNMANNED' }
|
||||
]
|
||||
],
|
||||
directionLabelList: [
|
||||
{ label: 'X', value: 'X' },
|
||||
{ label: 'XF', value: 'XF' },
|
||||
{ label: 'XD', value: 'XD' },
|
||||
{ label: 'S', value: 'S' },
|
||||
{ label: 'SF', value: 'SF' },
|
||||
{ label: 'SD', value: 'SD' }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
@ -285,10 +285,12 @@ export default {
|
||||
/** 重启联锁机 */
|
||||
CMD_STATION_RESTART_INTERLOCK_MACHINE: {value: 'Station_Restart_Interlock_Machine', label: '重启联锁机'},
|
||||
/** 释放指令 */
|
||||
CMD_STATION_RELEASE : {value:'Station_Release', label: '释放指令' }
|
||||
CMD_STATION_RELEASE : {value:'Station_Release', label: '释放指令' },
|
||||
/** 引导总锁 */
|
||||
CMD_STATION_MASTER_LOCK: {value: 'Station_Master_Lock', label: '设置引导总锁'},
|
||||
/** 取消引导总锁 */
|
||||
CMD_STATION_MASTER_UNLOCK: {value: 'Station_Master_Unlock', label: '取消引导总锁'}
|
||||
},
|
||||
|
||||
// 列车
|
||||
Train: {
|
||||
/** 人工限速行驶 */
|
||||
CMD_TRAIN_MANUAL_LIMIT_DRIVE: {value:'Train_Manual_Limit_Drive', label: '人工限速行驶'},
|
||||
@ -366,5 +368,17 @@ export default {
|
||||
},
|
||||
DirectionRod: {
|
||||
CMD_DIRECTION_CHANGE: {value: 'Direction_Change', label: '切换方向'}
|
||||
},
|
||||
CTC: {
|
||||
CTC_RECEIVING_NOTICE: {value: 'CTC_RECEIVING_NOTICE', label: '接预'},
|
||||
CTC_DEPARTURE_NOTICE: {value: 'CTC_DEPARTURE_NOTICE', label: '发预'},
|
||||
CTC_ASSIST_PRESS_DOWN_TURN_DIRECTION:{value:'ASSIST_PRESS_DOWN_TURN_DIRECTION', label:'改方'},
|
||||
CTC_AUTO_TRIGGER: {value: 'CTC_AUTO_TRIGGER', label: '自动触发'},
|
||||
CTC_ASSIST_PRESS_MAIN_ASSIST:{value: 'ASSIST_PRESS_MAIN_ASSIST', label: '总辅助'},
|
||||
CTC_ASSIST_PRESS_RECEIVE_ASSIST:{value: 'ASSIST_PRESS_RECEIVE_ASSIST', label: '接辅助'},
|
||||
CTC_ASSIST_PRESS_DELIVER_ASSIST:{value: 'ASSIST_PRESS_DELIVER_ASSIST', label: '发辅助'},
|
||||
CTC_ASSIST_PRESS_BLOCK:{value: 'ASSIST_PRESS_BLOCK', label: '阻塞'},
|
||||
CTC_ASSIST_PRESS_RESTORE:{value: 'ASSIST_PRESS_RESTORE', label: '复原'},
|
||||
CTC_ASSIST_PRESS_ACCIDENT:{value: 'ASSIST_PRESS_ACCIDENT', label: '事故'}
|
||||
}
|
||||
};
|
||||
|
@ -2,7 +2,8 @@
|
||||
export const State2SimulationMap = {
|
||||
'01': 'Local', // 现地工作站
|
||||
'02': 'Center', // 中心调度工作站
|
||||
'09':'Depot_IL' // 车辆段工作站
|
||||
'09':'Depot_IL', // 车辆段工作站
|
||||
'10': 'Local'
|
||||
};
|
||||
|
||||
export const State2ControlMap = {
|
||||
|
@ -1748,20 +1748,20 @@ export const OperationEvent = {
|
||||
domId: '_Tips-Signal-conflictRoute-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
// 点灯 (大铁)
|
||||
signalLight: {
|
||||
// 点灯 (大铁)
|
||||
signalLight: {
|
||||
menuButton: {
|
||||
operation: '3231',
|
||||
domId: '_Tips-Signal-signalLight-MenuButton{BOTTOM}'
|
||||
}
|
||||
},
|
||||
// 灭灯 (大铁)
|
||||
signalDestroy: {
|
||||
domId: '_Tips-Signal-signalLight-MenuButton{BOTTOM}'
|
||||
}
|
||||
},
|
||||
// 灭灯 (大铁)
|
||||
signalDestroy: {
|
||||
menuButton: {
|
||||
operation: '3232',
|
||||
domId: '_Tips-Signal-signalDestroy-MenuButton{BOTTOM}'
|
||||
}
|
||||
}
|
||||
domId: '_Tips-Signal-signalDestroy-MenuButton{BOTTOM}'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 物理区段操作
|
||||
@ -2955,7 +2955,22 @@ export const OperationEvent = {
|
||||
operation: '620',
|
||||
domId: '_Tips-Station-stationRelease'
|
||||
}
|
||||
}
|
||||
},
|
||||
// 引导总锁Station_Master_Lock
|
||||
stationMasterLock: {
|
||||
menuButton: {
|
||||
operation: '621',
|
||||
domId: '_Tips-Station-stationMasterLock'
|
||||
},
|
||||
leftButton: {
|
||||
operation: '6211',
|
||||
domId: '_Tips-Station-stationMasterLock-leftButton'
|
||||
},
|
||||
rightButton: {
|
||||
operation: '6212',
|
||||
domId: '_Tips-Station-stationMasterLock-rightButton'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 列车
|
||||
@ -3536,6 +3551,69 @@ export const OperationEvent = {
|
||||
domId: '_Tips-Control-StationControl-Confirm{TOP}'
|
||||
}
|
||||
}
|
||||
},
|
||||
CTCCommand: {
|
||||
receivingNotice: {
|
||||
menu: {
|
||||
operation: '1100',
|
||||
domId: '_Tips-CTC-ReceivingNotice-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
departureNotice: {
|
||||
menu: {
|
||||
operation: '1101',
|
||||
domId: '_Tips-CTC-DepartureNotice-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressDownTurnDirection:{
|
||||
menu:{
|
||||
operation:'1102',
|
||||
domId: '_Tips-CTC-AssistPressDownTurnDirection-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
autoTrigger: {
|
||||
menu: {
|
||||
operation: '1103',
|
||||
domId: '_Tips-CTC-AutoTrigger-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressMainAssist:{
|
||||
menu: {
|
||||
operation: '1104',
|
||||
domId: '_Tips-CTC-AssistPressMainAssist-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressReceiveAssist:{
|
||||
menu: {
|
||||
operation: '1105',
|
||||
domId: '_Tips-CTC-AssistPressReceiveAssist-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressDeliverAssist:{
|
||||
menu: {
|
||||
operation: '1106',
|
||||
domId: '_Tips-CTC-AssistPressDeliverAssist-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressBlock:{
|
||||
menu: {
|
||||
operation: '1107',
|
||||
domId: '_Tips-CTC-AssistPressBlock-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressRestore:{
|
||||
menu: {
|
||||
operation: '1108',
|
||||
domId: '_Tips-CTC-AssistPressRestore-Menu{TOP}'
|
||||
}
|
||||
},
|
||||
assistPressAccident:{
|
||||
menu: {
|
||||
operation: '1109',
|
||||
domId: '_Tips-CTC-AssistPressAccident-Menu{TOP}'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -206,6 +206,7 @@ const map = {
|
||||
state: {
|
||||
routeData: {}, // 进路数据
|
||||
routeList: [], // 进路list
|
||||
mapStationDirectionData:{}, // 大铁项目 车站方向数据
|
||||
routeStartSignalData: {}, // 进路始端信号机数据
|
||||
autoReentryData: {}, // 自动折返数据
|
||||
autoReentryList: [], // 自动折返list
|
||||
@ -237,6 +238,8 @@ const map = {
|
||||
activeTrainListChange: 0, // 当前按计划行车的列车列表变化标识(只对列车的groupNumber进行了检测)
|
||||
activeTrainList: [], // 当前按计划行车的列车列表
|
||||
showCentralizedStationCode: '', // 现地分集中站显示(集中站code)
|
||||
stationSGuideMasterLock: false,
|
||||
stationXGuideMasterLock: false,
|
||||
showCentralizedStationNum: 0, // 现地分集中站显示判断
|
||||
overlapList: [], // 延续保护list
|
||||
overlapData: {}, // 延续保护数据
|
||||
@ -693,12 +696,21 @@ const map = {
|
||||
return flag;
|
||||
}
|
||||
},
|
||||
checkStationGuideMaster: state => (stationCode,sGuideMasterLock,xGuideMasterLock) => {
|
||||
if (state.showCentralizedStationCode === stationCode) {
|
||||
state.stationSGuideMasterLock = sGuideMasterLock;
|
||||
state.stationXGuideMasterLock = xGuideMasterLock;
|
||||
}
|
||||
},
|
||||
checkDeviceShow: state => deviceCode => {
|
||||
if (state.map && state.map.displayList && state.map.displayList.length && store.state.training.prdType) {
|
||||
let flag = false;
|
||||
const stationCode = state.showCentralizedStationCode;
|
||||
if (deviceCode === 'BTN36775'){
|
||||
console.log(store.state.training.prdType, state.map.displayList, '---', stationCode, deviceCode);
|
||||
}
|
||||
state.map.displayList.forEach(item => {
|
||||
if (
|
||||
if (
|
||||
store.state.training.prdType === '01' &&
|
||||
item.type === 'LOCAL' &&
|
||||
((item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) || !stationCode)
|
||||
@ -950,6 +962,13 @@ const map = {
|
||||
});
|
||||
state.routeList = routeDataList;
|
||||
},
|
||||
|
||||
setMapStationDirectionData: (state, mapStationDirectionList) => {
|
||||
mapStationDirectionList.forEach(data => {
|
||||
state.mapStationDirectionData[data.code] = data;
|
||||
});
|
||||
},
|
||||
|
||||
setOverlapData: (state, overlapList) => {
|
||||
state.overlapData = {};
|
||||
overlapList.forEach(data => {
|
||||
@ -1087,6 +1106,8 @@ const map = {
|
||||
commit('setMapName', mapData.name);
|
||||
commit('setMapData', mapData.graphDataNew);
|
||||
commit('setRouteData', mapData.logicDataNew.routeList);
|
||||
// 设置大铁项目 车站方向数据
|
||||
commit('setMapStationDirectionData', mapData.logicDataNew.draftMapStationDirectionList || []);
|
||||
commit('setOverlapData', overlapData);
|
||||
commit('setAutoReentryData', mapData.logicDataNew.autoReentryList);
|
||||
commit('setSignalApproachSectionData', mapData.logicDataNew.signalApproachSectionList);
|
||||
|
@ -197,6 +197,10 @@ function handle(state, data) {
|
||||
case 'Simulation_Trip_Plan_Change':
|
||||
state.simulationPlanChange = msg;
|
||||
break;
|
||||
// 占线板信息
|
||||
case 'Simulation_RailCtcStatus':
|
||||
state.railCtcStatusMsg = msg;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
@ -347,7 +351,8 @@ const socket = {
|
||||
simulationPause: false,
|
||||
simulationPslStatus: [], // PSL面板按钮状态信息
|
||||
simulationPlanChange:{}, // 运行图加线/抽线/变化推送消息
|
||||
loggedOutMsg: ''
|
||||
loggedOutMsg: '',
|
||||
railCtcStatusMsg: {}, // 占线板信息
|
||||
},
|
||||
getters: {
|
||||
},
|
||||
|
@ -24,12 +24,13 @@ export function handlerUrl(data) {
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
// const data = null;
|
||||
// BASE_API = 'https://joylink.club/jlcloud';
|
||||
BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'https://test.joylink.club/jlcloud';
|
||||
// BASE_API = 'http://114.116.51.125/jlcloud';
|
||||
// BASE_API = 'http://192.168.8.152:9000'; // 袁琪
|
||||
// BASE_API = 'http://192.168.8.172:9200'; // 旭强
|
||||
// BASE_API = 'http://192.168.8.109:9000'; // 张赛
|
||||
BASE_API = 'http://192.168.3.15:9000'; // 张赛
|
||||
// BASE_API = 'http://192.168.8.140:9000'; // 杜康
|
||||
// BASE_API = 'http://192.168.3.37:9000'; // 卫志宏
|
||||
// BASE_API = 'http://b29z135112.zicp.vip';
|
||||
// BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康
|
||||
// BASE_API = 'http://2i38984j47.qicp.vip'; // 张赛
|
||||
|
@ -219,7 +219,7 @@ export default {
|
||||
});
|
||||
},
|
||||
async start() {
|
||||
const jumpFunc = ['jump', 'jump', 'enterIntegratedSimulation', 'jump', 'jumpScheduling', 'enterISCS', 'enterScreen', '', 'jump'];
|
||||
const jumpFunc = ['jump', 'jump', 'enterIntegratedSimulation', 'jump', 'jumpScheduling', 'enterISCS', 'enterScreen', '', 'jump', 'jump'];
|
||||
this[jumpFunc[parseInt(this.courseModel.prdType) - 1]]();
|
||||
},
|
||||
jumpSimulation() {
|
||||
|
@ -8,6 +8,7 @@
|
||||
<!-- <el-button v-if="$route.query.lineCode === '15'" size="small" type="jumpjlmap3d" @click="jumpjlmap3dDriver">司机视角</el-button> -->
|
||||
<el-button v-if="$route.query.lineCode === '15'" size="small" @click="clCaAnCall">经典案例分析</el-button>
|
||||
<el-button v-if="$route.query.lineCode === '15'" size="small" @click="normStudy">规范学习</el-button>
|
||||
<el-button v-if="$route.query.lineCode === '15'|| $route.query.lineCode === '16'" size="small" @click="showLineBoard">占线板</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<Jl3dRailway-Device
|
||||
@ -19,6 +20,7 @@
|
||||
/>
|
||||
<Jl3dRailway-Drive v-show="drivingShow" ref="Jl3dRailwayDrive" :panel-show="drivingShow" @showdriving="showdriving" />
|
||||
<draw-select ref="drawSelect" />
|
||||
<line-board ref="lineBoard" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@ -30,12 +32,14 @@ import { EventBus } from '@/scripts/event-bus';
|
||||
import { getPostByProjectCode } from '@/api/learn';
|
||||
import { ProjectCode } from '@/scripts/ProjectConfig';
|
||||
import DrawSelect from '@/jmapNew/theme/datie_01/menus/dialog/drawSelect';
|
||||
import LineBoard from './lineBoard';
|
||||
export default {
|
||||
name:'DemonMenu',
|
||||
components:{
|
||||
Jl3dRailwayDevice,
|
||||
Jl3dRailwayDrive,
|
||||
DrawSelect
|
||||
DrawSelect,
|
||||
LineBoard
|
||||
},
|
||||
props:{
|
||||
isAllShow:{
|
||||
@ -160,6 +164,9 @@ export default {
|
||||
normStudy() {
|
||||
this.$refs.drawSelect.doShow(null, 'normStudy');
|
||||
},
|
||||
showLineBoard() {
|
||||
this.$refs.lineBoard.doShow();
|
||||
},
|
||||
jumpjlmap3dmodel() {
|
||||
if (this.deviceif == false) {
|
||||
this.deviceif = true;
|
||||
|
440
src/views/newMap/displayCity/lineBoard.vue
Normal file
@ -0,0 +1,440 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
title="车站股道图"
|
||||
:visible.sync="dialogVisible"
|
||||
width="99%"
|
||||
top="5vh"
|
||||
class="lineBoard"
|
||||
center
|
||||
:before-close="handleClose">
|
||||
<div style="height: 500px; overflow-y: auto;background: #DFE3E6;padding: 7px;">
|
||||
<div style="width: 100%;display: flex;align-items: center;margin-bottom: 10px;">
|
||||
<div
|
||||
:key="item.code"
|
||||
v-for="item in stationList"
|
||||
class="tab-box"
|
||||
@click="selectStandCode(item.code)"
|
||||
:style="{background: selectCode === item.code ? '#F1F1F1': '#DBDBDB', color: selectCode === item.code ? '#000': '#ccc'}">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
<div :key="item.id" v-for="item in infoList" style="display: flex; justify-content: space-between;border-top: 1px solid #fff;padding: 3px;height: 36px;align-items: center;">
|
||||
<div style="padding: 5px 20px;border-radius: 5px;border-width: 2px;border-style: solid;"
|
||||
:style="{borderColor: item.occupied ? '#f00': '#DFE3E6', fontWeight: item.occupied? 'bold': 'normal', color:item.occupied? '#f00':'#1e2024' }">{{item.trackName}}</div>
|
||||
<div>{{item.tripNumber}}</div>
|
||||
<div style="background: #FFCBEC;border: 1px solid #315FD1;border-radius: 3px;font-size: 10px;">{{ item.trainType?'客':'' }}</div>
|
||||
<div>{{item.trainDistanceInfo}}</div>
|
||||
<div>
|
||||
<el-select v-model="item.process" placeholder="请选择" size="mini" style="width: 120px;" :disabled="true">
|
||||
<el-option
|
||||
v-for="elem in sectionStatusList"
|
||||
:key="elem.value"
|
||||
:label="elem.label"
|
||||
:value="elem.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="display: flex;">
|
||||
<div :style="{ background: item.receivingNotice ? '#29CA42': '#ccc' }" class="button-box-fir" @click="doShowRecDep(item,'rec')">接预</div>
|
||||
<div
|
||||
class="button-box-sec"
|
||||
:style="{ background: handleBackground(item.receivingRouteLock, item.receivingRouteAutoTrigger) }"
|
||||
@contextmenu="popMenuShow(item, 'rec' ,$event)"
|
||||
@click="doShowRoute(item, 'rec')">
|
||||
{{ '接路' + (item.receivingRouteLock ? '':getRouteName(item.receivingRouteCode)) }}
|
||||
</div>
|
||||
<div :style="{ background: item.arrive ? '#29CA42': '#ccc' }" class="button-box-fir" style="margin-left: 10px;cursor: default;">到点</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>{{item.arriveTime}}</div>
|
||||
<div>{{item.departureTime}}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div>{{ item.planArriveTime }}</div>
|
||||
<div>{{ item.planDepartureTime }}</div>
|
||||
</div>
|
||||
<div></div><!--起点--终点-->
|
||||
<div style="display: flex;">
|
||||
<div :style="{ background: item.departureNotice ? '#29CA42': '#ccc' }" class="button-box-fir" @click="doShowRecDep(item,'dep')">发预</div>
|
||||
<div
|
||||
class="button-box-sec"
|
||||
:style="{ background: handleBackground(item.departureRouteLock, item.departureRouteAutoTrigger) }"
|
||||
@contextmenu="popMenuShow(item, 'dep' ,$event)"
|
||||
@click="doShowRoute(item, 'dep')">
|
||||
{{ '发路' + (item.departureRouteLock ? '':getRouteName(item.departureRouteCode)) }}
|
||||
</div>
|
||||
<div :style="{ background: item.departure ? '#29CA42': '#ccc' }" class="button-box-fir" style="margin-left: 10px;cursor: default;">发点</div>
|
||||
</div>
|
||||
<div>{{ item.tripNumber }}</div>
|
||||
<div :style="{fontWeight: item.occupied? 'bold': 'normal', color:item.occupied? '#f00': '#1e2024' }">{{ item.trackName }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div style="display: flex; justify-content: center;">-->
|
||||
<!--<img class="img-box" :src="arrowPic" />-->
|
||||
<!--<img class="img-box" :src="picT3" />-->
|
||||
<!--<img class="img-box" :src="controlPanelPic" />-->
|
||||
<!--<img class="img-box" :src="trainPic" />-->
|
||||
<!--<img class="img-box" :src="controlPanel2Pic"/>-->
|
||||
<!--<img class="img-box" :src="linkPic"/>-->
|
||||
<!--<img class="img-box" :src="cameraPic"/>-->
|
||||
<!--</div>-->
|
||||
<div style="display: flex;margin-top: 5px;justify-content: space-around;background: #DEE2E5;">
|
||||
<div style="width: 49%;margin-top: 10px;">
|
||||
<div style="display: flex;align-items: center;">
|
||||
<div style="background: #0f0;">{{ `进路序列模式:<${readOnly ? '只读':'可修改'}>` }}</div>
|
||||
<el-button size="mini" style="padding: 7px 4px;" disabled>修改申请</el-button>
|
||||
<el-button size="mini" style="padding: 7px 4px;" disabled>只读申请</el-button>
|
||||
<el-button size="mini" style="padding: 7px 4px;margin-left: 30px;">查找列车</el-button>
|
||||
<el-input style="width: 70px;height: 25px;" size="mini" v-model="searchTrain" />
|
||||
<div style="margin-left: 10px;">上下行</div>
|
||||
<el-select size="mini" v-model="andDown" style="width: 80px;margin-left: 5px;">
|
||||
<el-option
|
||||
v-for="item in andDownList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<div style="margin-left: 10px;">接车口</div>
|
||||
<el-select size="mini" v-model="andDown" style="width: 100px;margin-left: 5px;" disabled>
|
||||
<el-option
|
||||
v-for="item in andDownList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<div style="margin-left: 10px;">发车口</div>
|
||||
<el-select size="mini" v-model="andDown" style="width: 100px;margin-left: 5px;" disabled>
|
||||
<el-option
|
||||
v-for="item in andDownList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
style="width: 100%;margin-top: 10px;"
|
||||
highlight-current-row
|
||||
:row-style="{ background: '#ff0' }"
|
||||
height="180"
|
||||
border
|
||||
>
|
||||
<el-table-column width="50" label="序号" align="center">
|
||||
<template slot-scope="scope">
|
||||
<!--:style="{ background: scope.$index? '#f00':'#ff0' }" -->
|
||||
<div>{{ scope.$index }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column property="date" label="注意确认"/>
|
||||
<el-table-column property="tripNumber" label="车次"/>
|
||||
<el-table-column property="trackName" label="股道"/>
|
||||
<el-table-column property="autoTrigger" label="自触">
|
||||
<template slot-scope="scope">
|
||||
<div style="width: 100%;height: 22px;" @contextmenu="popMenuShow(scope.row, '' ,$event)">{{ scope.row.autoTrigger? '√':'' }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column property="type" label="类型"/>
|
||||
<el-table-column property="status" label="状态"/>
|
||||
<el-table-column property="startTime" label="开始时间"/>
|
||||
<el-table-column property="planTime" label="计划时间"/>
|
||||
<el-table-column property="direction" label="方向"/>
|
||||
<el-table-column property="routeCode" label="序列描述">
|
||||
<template slot-scope="scope">
|
||||
<div>{{getRouteName(scope.row.routeCode)}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div style="width: 100%;display: flex;align-items: center;margin: 5px 0;">
|
||||
<div
|
||||
:key="item.code"
|
||||
v-for="item in stationList"
|
||||
class="tab-box"
|
||||
@click="selectStandCode1(item.code)"
|
||||
:style="{background: selectCode1 === item.code ? '#F1F1F1': '#DBDBDB', color: selectCode1 === item.code ? '#000': '#ccc'}">
|
||||
{{ item.name }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 49%;margin-top: 10px;">
|
||||
<div style="display: flex;align-items: center;">
|
||||
<el-select size="mini" v-model="unknow" disabled>
|
||||
<el-option
|
||||
v-for="item in unknowList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<div>调机-J101</div>
|
||||
<el-button size="mini" disabled>进路预览</el-button>
|
||||
<el-select size="mini" v-model="unknow1" disabled>
|
||||
<el-option
|
||||
v-for="item in unknowList1"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button size="mini" disabled>办理进路</el-button>
|
||||
<el-button size="mini" disabled>发送机车</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
:data="tableData1"
|
||||
style="width: 100%;margin-top: 10px;"
|
||||
highlight-current-row
|
||||
border
|
||||
height="180"
|
||||
>
|
||||
<el-table-column type="index" width="50" label="勾"/>
|
||||
<el-table-column property="line" label="线路"/>
|
||||
<el-table-column property="method" label="方法"/>
|
||||
<el-table-column property="nums" label="辆数"/>
|
||||
<el-table-column property="direction" label="方向"/>
|
||||
<el-table-column property="leadWire" label="牵出线"/>
|
||||
<el-table-column property="status" label="状态"/>
|
||||
<el-table-column property="leadRoute" label="牵出进路"/>
|
||||
<el-table-column property="pushRoute" label="推入进路"/>
|
||||
<el-table-column property="note" label="记事"/>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<rec-dep ref="recDep" />
|
||||
<route-selection ref="routeSelection" />
|
||||
<pop-menu ref="popMenu" :menu="menu" style="background: #DFE3E6;"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import ArrowPic from '@/assets/datie/arrow.png';
|
||||
import PicT3 from '@/assets/datie/picT3.png';
|
||||
import ControlPanelPic from '@/assets/datie/controlPanel.png';
|
||||
import ControlPanel2Pic from '@/assets/datie/controlPanel2.png';
|
||||
import TrainPic from '@/assets/datie/train.png';
|
||||
import LinkPic from '@/assets/datie/link.png';
|
||||
import CameraPic from '@/assets/datie/camera.png';
|
||||
import RecDep from '@/jmapNew/theme/datie_02/menus/dialog/recDep'
|
||||
import RouteSelection from '@/jmapNew/theme/datie_02/menus/dialog/routeSelection1';
|
||||
import PopMenu from '@/components/PopMenu';
|
||||
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
|
||||
import { menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
|
||||
export default {
|
||||
name: 'lineBoard',
|
||||
components: {
|
||||
RecDep,
|
||||
RouteSelection,
|
||||
PopMenu
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
menu: [{label: '设置自触', handler: this.setTrigger, disabled: false},{label: '取消自触', handler: this.cancelTrigger, disabled: false}],
|
||||
dialogVisible: false,
|
||||
triggerParam: {},
|
||||
selectCode: '',
|
||||
selectCode1: '',
|
||||
readOnly: '',
|
||||
arrowPic: ArrowPic,
|
||||
picT3: PicT3,
|
||||
controlPanelPic: ControlPanelPic,
|
||||
trainPic: TrainPic,
|
||||
controlPanel2Pic: ControlPanel2Pic,
|
||||
linkPic: LinkPic,
|
||||
cameraPic: CameraPic,
|
||||
searchTrain: '',
|
||||
andDown: 'all',
|
||||
unknow: '',
|
||||
unknow1: '',
|
||||
tableData: [],
|
||||
tableData1: [],
|
||||
unknowList1: [{label: '全部机车', value: 'all'}],
|
||||
unknowList: [{label: 'J101-执行中', value: 'J101'}],
|
||||
andDownList: [{ label: '全部', value: 'all' }, { label: '上行', value: 'up' }, { label: '下行', value: 'down' }],
|
||||
sectionStatusList: [
|
||||
{label: '办理接车闭塞', value: 'RECEIVING_BLOCK'},
|
||||
{label: '准备接车', value: 'RECEIVING'},
|
||||
{label: '办理接车进路', value: 'RECEIVING_ROUTE'},
|
||||
{label: '列车到达(通过)报点', value: 'ARRIVE'},
|
||||
{label: '办理发车闭塞', value: 'DEPARTURE_BLOCK'},
|
||||
{label: '发车进路办理', value: 'DEPARTURE_ROUTE'},
|
||||
{label: '发车报点', value: 'DEPARTURE'},
|
||||
{label: '流程终止', value: 'FINISH'}
|
||||
],
|
||||
stationDataMap: {},
|
||||
infoList : []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'sectionList',
|
||||
'stationList'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
'$store.state.socket.railCtcStatusMsg': function (val) {
|
||||
if (val && val.length) {
|
||||
val.forEach(item => {
|
||||
if (item) {
|
||||
this.stationDataMap[item.stationCode] = { trackView: item.trackView, routeSequence: item.routeSequence };
|
||||
}
|
||||
});
|
||||
this.infoList = this.stationDataMap[this.selectCode] ? this.stationDataMap[this.selectCode].trackView.lines: [];
|
||||
this.tableData = this.stationDataMap[this.selectCode1] ? this.stationDataMap[this.selectCode1].routeSequence.lines: [];
|
||||
this.readOnly = this.stationDataMap[this.selectCode1] ? this.stationDataMap[this.selectCode1].routeSequence.readOnly: false;
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClose() {
|
||||
this.dialogVisible = false;
|
||||
},
|
||||
doShow() {
|
||||
this.dialogVisible = true;
|
||||
this.selectCode = this.stationList[0].code;
|
||||
this.selectCode1 = this.stationList[0].code;
|
||||
this.infoList = this.stationDataMap[this.selectCode] ? this.stationDataMap[this.selectCode].trackView.lines: [];
|
||||
this.tableData = this.stationDataMap[this.selectCode1] ? this.stationDataMap[this.selectCode1].routeSequence.lines: [];
|
||||
this.readOnly = this.stationDataMap[this.selectCode1] ? this.stationDataMap[this.selectCode1].routeSequence.readOnly: false;
|
||||
},
|
||||
selectStandCode(code) {
|
||||
this.selectCode = code;
|
||||
this.infoList = this.stationDataMap[this.selectCode].trackView.lines;
|
||||
},
|
||||
selectStandCode1(code) {
|
||||
this.selectCode1 = code;
|
||||
this.tableData = this.stationDataMap[this.selectCode1].routeSequence.lines;
|
||||
this.readOnly = this.stationDataMap[this.selectCode1].routeSequence.readOnly;
|
||||
},
|
||||
getRouteName(code){
|
||||
if(code){
|
||||
const route = this.$store.state.map.routeData[code];
|
||||
return route? route.name: ''
|
||||
} else { return '' }
|
||||
},
|
||||
handleBackground(flag, trigger) {
|
||||
if (flag){
|
||||
return '#29CA42';
|
||||
} else {
|
||||
return trigger ? '#FFBF2F' : '#CCCCCC';
|
||||
}
|
||||
},
|
||||
doShowRecDep(row, type) {
|
||||
this.$refs.recDep.doShow(row, type, this.selectCode);
|
||||
},
|
||||
doShowRoute(row, type) {
|
||||
this.$refs.routeSelection.doShow(row, type, this.selectCode);
|
||||
},
|
||||
popMenuShow(item,type, e){
|
||||
if (type === 'rec') {
|
||||
this.menu[0].disabled = item.receivingRouteAutoTrigger;
|
||||
this.menu[1].disabled = !item.receivingRouteAutoTrigger;
|
||||
this.triggerParam = { stationCode: this.selectCode, tripNumber: item.tripNumber, routeCode: item.receivingRouteCode }
|
||||
} else if (type === 'dep') {
|
||||
this.menu[0].disabled = item.departureRouteAutoTrigger;
|
||||
this.menu[1].disabled = !item.departureRouteAutoTrigger;
|
||||
this.triggerParam = { stationCode: this.selectCode, tripNumber: item.tripNumber, routeCode: item.departureRouteCode }
|
||||
} else {
|
||||
this.menu[0].disabled = item.autoTrigger;
|
||||
this.menu[1].disabled = !item.autoTrigger;
|
||||
this.triggerParam = { stationCode: this.selectCode1, tripNumber: item.tripNumber, routeCode: item.routeCode }
|
||||
}
|
||||
this.$refs.popMenu.resetShowPosition({x: e.x, y:e.y});
|
||||
},
|
||||
setTrigger() {
|
||||
const param = { ...this.triggerParam, trigger: true };
|
||||
|
||||
commitOperate(menuOperate.CTC.autoTrigger, param, 3).then(({valid, operate})=>{
|
||||
this.loading = false;
|
||||
this.triggerParam = {};
|
||||
if (valid) {
|
||||
this.doClose();
|
||||
this.$message.success('设置自动触发成功!')
|
||||
}
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
this.loading = false;
|
||||
this.doClose();
|
||||
this.triggerParam = {};
|
||||
this.$refs.noticeInfo.doShow();
|
||||
});
|
||||
},
|
||||
cancelTrigger() {
|
||||
const param = { ...this.triggerParam, trigger: false };
|
||||
console.log(menuOperate.CTC.autoTrigger, 'trigger');
|
||||
commitOperate(menuOperate.CTC.autoTrigger, param, 3).then(({valid, operate})=>{
|
||||
this.triggerParam = {};
|
||||
if (valid) {
|
||||
this.$message.success('取消自动触发成功!')
|
||||
}
|
||||
}).catch((e) => {
|
||||
console.error(e);
|
||||
this.triggerParam = {};
|
||||
this.$message.error('取消自动触发失败!')
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/deep/ .el-dialog__header{
|
||||
background: #B4B6B9;
|
||||
}
|
||||
/deep/ .el-dialog__body{
|
||||
background: #8D939D;
|
||||
padding: 10px;
|
||||
}
|
||||
/deep/ .el-table td{
|
||||
padding: 0;
|
||||
}
|
||||
/deep/ .el-table th{
|
||||
padding: 0;
|
||||
background: #C5CBD0;
|
||||
color: #1e2024;
|
||||
}
|
||||
/deep/ .el-input.is-disabled .el-input__inner {
|
||||
color: #606266;
|
||||
}
|
||||
.img-box {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
margin: 10px 5px 5px 5px;
|
||||
background: #FAFAFA;
|
||||
}
|
||||
.tab-box {
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
width: 33% ;
|
||||
font-size: 18px;
|
||||
border: 2px solid #F5F5F5;
|
||||
cursor: pointer;
|
||||
border-radius: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.button-box-sec{
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
background: #ccc;
|
||||
padding: 5px;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
width: 160px;
|
||||
text-align: center;
|
||||
}
|
||||
.button-box-fir{
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
background: #ccc;
|
||||
padding: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.pop-background {
|
||||
background: #DFE3E6;
|
||||
}
|
||||
</style>
|
@ -7,9 +7,9 @@
|
||||
<!-- 设备视图 -->
|
||||
<el-button v-if="jl3dmodelShow && !isContest && project !== 'bjd'" size="small" @click="jumpjlmap3dmodel">{{ jl3dmodel }}</el-button>
|
||||
<!-- 三维视图/数字沙盘 -->
|
||||
<el-button v-if="jl3dnameShow && !isContest && project !== 'bjd'" size="small" @click="jumpjlmap3d">{{ jl3dname }}</el-button>
|
||||
<el-button v-if="jl3dnameShow && !isContest && project !== 'bjd' && $route.query.lineCode !== '16'" size="small" @click="jumpjlmap3d">{{ jl3dname }}</el-button>
|
||||
<!-- cctv视图 -->
|
||||
<el-button v-if="jl3dnameShow && !isContest && project !== 'bjd'" size="small" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button>
|
||||
<el-button v-if="jl3dnameShow && !isContest && project !== 'bjd' && $route.query.lineCode !== '16'" size="small" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button>
|
||||
<!-- 客流规划视图 -->
|
||||
<!-- <el-button v-if="trafficplanShow && project == 'bjd' && !isContest" size="small" @click="jumpjl3dtrafficplan">{{ jl3dtrafficplan }}</el-button>
|
||||
<el-button v-if="trafficplanShow && project == 'bjd' && !isContest" size="small" @click="jumpjl3dtraffictrain">{{ $t('display.demon.traffictraintext') }}</el-button> -->
|
||||
|
@ -30,9 +30,9 @@
|
||||
<el-button type="danger" size="small" @click="handleQuitQuest">退出剧本</el-button>
|
||||
</template>
|
||||
<template v-else-if="!projectDevice">
|
||||
<el-button v-if="project !== 'srsandbox'" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
|
||||
<el-button v-if="project !== 'srsandbox' && $route.query.lineCode !== '16' " type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('display.demon.drivingByPlan') }}</el-button>
|
||||
<!-- isDisable&& -->
|
||||
<el-button v-if="isAdmin" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
|
||||
<el-button v-if="isAdmin && $route.query.lineCode !== '16' " v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
|
||||
<el-button type="danger" size="small" @click="end">{{ $t('display.demon.initialize') }}</el-button>
|
||||
</template>
|
||||
</template>
|
||||
|
@ -12,15 +12,16 @@
|
||||
</el-select>
|
||||
<template v-if="!dataError">
|
||||
<el-button-group v-if="project !== 'bjd'">
|
||||
<el-button v-if="isLocalStation && $route.query.lineCode!='08'" size="small" @click="goIbp">IBP盘</el-button>
|
||||
<el-button v-if="$route.query.lineCode === '16'" size="small" @click="showLineBoard">占线板</el-button>
|
||||
<el-button v-if="isLocalStation && $route.query.lineCode!='08' && $route.query.lineCode!='16'" size="small" @click="goIbp">IBP盘</el-button>
|
||||
<el-button v-if="isScheduling && isDepot" size="small" type="primary" @click="runPlanEditShow">运行图编辑</el-button>
|
||||
<!-- 加载剧本 -->
|
||||
<el-button v-if="isDemon && !isScheduling && !isContest && !isDepoltSim" size="small" :disabled="viewDisabled" type="success" @click="viewRunQuest">{{ $t('display.schema.loadScript') }}</el-button>
|
||||
<el-button v-if="isDemon && !isScheduling && !isContest && !isDepoltSim && $route.query.lineCode!='16'" size="small" :disabled="viewDisabled" type="success" @click="viewRunQuest">{{ $t('display.schema.loadScript') }}</el-button>
|
||||
<!-- 运行图加载 -->
|
||||
<!-- notScript && -->
|
||||
<el-button v-if="running" size="small" :disabled="viewDisabled" @click="viewRunPlan">{{ $t('display.schema.previewRunDiagram') }}</el-button>
|
||||
<!-- notScript && -->
|
||||
<el-button v-if="!running" size="small" type="warning" @click="loadRunPlan">{{ $t('display.schema.loadRunDiagram') }}</el-button>
|
||||
<el-button v-if="!running && $route.query.lineCode!='16'" size="small" type="warning" @click="loadRunPlan">{{ $t('display.schema.loadRunDiagram') }}</el-button>
|
||||
</el-button-group>
|
||||
<el-button v-if="!isScheduling && project !== 'bjd'" size="small" :type="faultMode ? '':'primary' " @click="changeOperateMode()">{{ faultMode?'切换到普通模式[Tab]':'切换到故障模式[Tab]' }}</el-button>
|
||||
|
||||
@ -34,6 +35,7 @@
|
||||
<run-plan-view ref="runPlanView" :group="group" />
|
||||
<!-- 加载剧本列表弹窗 -->
|
||||
<add-quest ref="addQuest" @selectQuest="selectQuest" />
|
||||
<line-board ref="lineBoard" />
|
||||
<!-- <run-plan-edit v-if="isScheduling && isDepot" ref="runPlanEdit" /> -->
|
||||
</div>
|
||||
</template>
|
||||
@ -42,6 +44,7 @@ import SelectStation from './selectStation';
|
||||
import RunPlanLoad from './demon/runPlanLoad';
|
||||
import RunPlanView from './demon/runPlanView';
|
||||
import FaultChoose from './demon/faultChoose';
|
||||
import LineBoard from '../displayCity/lineBoard';
|
||||
import AddQuest from './demon/addQuest';
|
||||
import { OperateMode } from '@/scripts/ConstDic';
|
||||
import { getByGroupStationList } from '@/api/jmap/map';
|
||||
@ -62,7 +65,8 @@ export default {
|
||||
FaultChoose,
|
||||
AddQuest,
|
||||
// RunPlanEdit,
|
||||
SelectStation
|
||||
SelectStation,
|
||||
LineBoard
|
||||
},
|
||||
props: {
|
||||
offset: {
|
||||
@ -206,6 +210,9 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
showLineBoard() {
|
||||
this.$refs.lineBoard.doShow();
|
||||
},
|
||||
changeOperateMode() {
|
||||
this.faultMode = !this.faultMode;
|
||||
let mode = OperateMode.NORMAL;
|
||||
|
@ -312,6 +312,7 @@ export default {
|
||||
const lineCode = this.$store.state.map.map.skinVO.code;
|
||||
if (Vue.prototype.$theme) {
|
||||
this.localStationShow = Vue.prototype.$theme._localShowMode[lineCode] === 'ecStation';
|
||||
console.log(this.localStationShow, '============');
|
||||
}
|
||||
this.$store.dispatch('map/setTrainWindowShow', this.previewOrMapDraw);
|
||||
},
|
||||
@ -498,7 +499,7 @@ export default {
|
||||
for (const key in mapDevice) {
|
||||
list.push(mapDevice[key]);
|
||||
}
|
||||
|
||||
console.log(list, stationCode, '=============');
|
||||
this.$jlmap.updateShowStation(list, stationCode);
|
||||
!setCenter && stationCode && this.setCenter(stationCode);
|
||||
},
|
||||
|
@ -490,6 +490,16 @@ export default {
|
||||
this.mapViewLoadedOver && this.setShowStation('');
|
||||
this.drivingShow = false;
|
||||
break;
|
||||
case 'RAIL_CTC':
|
||||
this.$store.dispatch('training/setPrdType', '10');
|
||||
this.$store.dispatch('training/setRoles', 'RAIL_CTC');
|
||||
this.$refs.menuSchema.chiShowStation = deviceCode;
|
||||
this.showStation = deviceCode;
|
||||
this.$jlmap.amendDevice([...this.sectionList, ...this.signalList, ...this.trainWindowList]);
|
||||
this.mapViewLoadedOver && this.switchStationMode(deviceCode);
|
||||
this.jl3dmaintainershow = false;
|
||||
this.drivingShow = false;
|
||||
break;
|
||||
default:
|
||||
this.$store.dispatch('training/setPrdType', '');
|
||||
this.$store.dispatch('training/setRoles', 'AUDIENCE');
|
||||
|
@ -113,7 +113,10 @@ export default {
|
||||
}, {
|
||||
labelName: '车辆段',
|
||||
children: []
|
||||
}]
|
||||
},{
|
||||
labelName: 'CTC操作员',
|
||||
children: []
|
||||
}]
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
@ -146,6 +149,7 @@ export default {
|
||||
const stationSupervisorList = [];
|
||||
const driverList = [];
|
||||
const maintainerList = [];
|
||||
const ctcOperatorList = [];
|
||||
val.forEach(item => {
|
||||
const device = this.$store.getters['map/getDeviceByCode'](item.deviceCode);
|
||||
switch (item.type) {
|
||||
@ -173,6 +177,10 @@ export default {
|
||||
this.memberData[item.id].labelName = '通号' + (item.name || '');
|
||||
maintainerList.push(this.memberData[item.id]);
|
||||
break;
|
||||
case 'RAIL_CTC':
|
||||
this.memberData[item.id].labelName = 'CTC操作员' + device.name;
|
||||
ctcOperatorList.push(this.memberData[item.id]);
|
||||
break
|
||||
}
|
||||
});
|
||||
this.treeData = [{
|
||||
@ -199,7 +207,11 @@ export default {
|
||||
labelName: '电力调度',
|
||||
id: 'electricDispatcher',
|
||||
children: electricDispatcherList
|
||||
}
|
||||
}, {
|
||||
labelName: 'CTC操作员',
|
||||
id: 'ctcOperator',
|
||||
children: ctcOperatorList
|
||||
}
|
||||
];
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.tree) {
|
||||
|
@ -33,8 +33,8 @@
|
||||
<template v-if="!dataError"> <!-- 地图错误判断 -->
|
||||
<template v-if="isAdmin && project != 'refereeJsxt' && $route.query.type !== 'ILW'">
|
||||
<!-- 按计划行车 -->
|
||||
<el-button v-if="project !== 'srsandbox'" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
|
||||
<el-button v-if="isAdministrator" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
|
||||
<el-button v-if="project !== 'srsandbox' && !datie" type="success" :disabled="isDisable" size="small" @click="selectBeginTime">{{ $t('joinTraining.drivingByPlan') }}</el-button>
|
||||
<el-button v-if="isAdministrator && !datie" v-loading="pauseLoading" :type="simulationPaused?'warning':'primary'" size="small" @click="startOrPause">{{ simulationPaused?'开始':'暂停' }}</el-button>
|
||||
<el-button type="danger" size="small" @click="end">{{ $t('joinTraining.initialize') }}</el-button>
|
||||
</template>
|
||||
</template>
|
||||
@ -129,12 +129,15 @@ export default {
|
||||
lineCode() {
|
||||
return this.$route.query.lineCode;
|
||||
},
|
||||
datie(){
|
||||
return this.$route.query.lineCode == '16'
|
||||
},
|
||||
mapId() {
|
||||
return this.$route.query.mapId;
|
||||
},
|
||||
isShowScheduling() {
|
||||
// 行调与管理员 可显示
|
||||
return (this.$store.state.training.prdType == '02' || this.isAdmin) && (!this.$route.query.projectDevice);
|
||||
return (this.$store.state.training.prdType == '02' || this.isAdmin) && (!this.$route.query.projectDevice) && this.$route.query.lineCode !== '16';
|
||||
},
|
||||
isDISPATCHER() {
|
||||
return (this.$store.state.training.prdType == '01' || this.$store.state.training.prdType == '02' || this.isAdmin) && (!this.$route.query.projectDevice || this.project == 'sdy');
|
||||
|
@ -13,12 +13,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
<el-button-group>
|
||||
<el-button v-if="datie" size="small" @click="showLineBoard">占线板</el-button>
|
||||
<el-button v-if="userRole=== 'STATION_SUPERVISOR' && !$route.query.projectDevice && $route.query.lineCode!='08'" size="small" @click="goIbp">IBP盘</el-button>
|
||||
<el-button v-if="userRole=== 'DISPATCHER' && !$route.query.projectDevice && hasBigScreen" size="small" @click="goBigScreen">大屏</el-button>
|
||||
<el-button v-if="(userRole==='DISPATCHER' || userRole=== 'STATION_SUPERVISOR') && !$route.query.projectDevice && iscsShow" size="small" @click="goIscs">ISCS</el-button>
|
||||
<el-button v-if="running && !dataError && $route.query.type !== 'ILW'" size="small" :disabled="viewDisabled" @click="viewRunPlan">{{ $t('joinTraining.runGraphPreview') }}</el-button>
|
||||
<el-button v-if="running && !dataError && $route.query.type !== 'ILW' && !datie" size="small" :disabled="viewDisabled" @click="viewRunPlan">{{ $t('joinTraining.runGraphPreview') }}</el-button>
|
||||
<template v-if="isAdmin">
|
||||
<el-button v-if="!running && !dataError && $route.query.type !== 'ILW'" size="small" type="warning" @click="loadRunPlan">
|
||||
<el-button v-if="!running && !dataError && $route.query.type !== 'ILW' && !datie" size="small" type="warning" @click="loadRunPlan">
|
||||
{{ $t('joinTraining.runGraphLoading') }}</el-button><!-- 运行图加载 -->
|
||||
</template>
|
||||
</el-button-group>
|
||||
@ -29,6 +30,7 @@
|
||||
<!-- running && -->
|
||||
<join-run-plan-view v-if="!dataError" ref="runPlanView" :group="group" />
|
||||
<select-ibp ref="selectIbp" />
|
||||
<line-board ref="lineBoard" />
|
||||
</div>
|
||||
|
||||
</template>
|
||||
@ -44,11 +46,13 @@ import { loadRunPlanData } from '@/utils/loaddata';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
import { timesSpeedPlayback } from '@/api/rtSimulation';
|
||||
import { queryHasIscs } from '@/api/iscs';
|
||||
import LineBoard from '../displayCity/lineBoard';
|
||||
export default {
|
||||
name: 'MenuDemonSchema',
|
||||
components:{
|
||||
JoinRunPlanView,
|
||||
SelectIbp
|
||||
SelectIbp,
|
||||
LineBoard
|
||||
},
|
||||
props: {
|
||||
group: {
|
||||
@ -134,6 +138,9 @@ export default {
|
||||
running() {
|
||||
return this.$store.state.training.started;
|
||||
},
|
||||
datie(){
|
||||
return this.$route.query.lineCode == '16'
|
||||
},
|
||||
isScreen() {
|
||||
return this.$store.state.training.prdType === '07';
|
||||
},
|
||||
@ -303,6 +310,9 @@ export default {
|
||||
this.$message.error('设置倍速失败!');
|
||||
});
|
||||
},
|
||||
showLineBoard() {
|
||||
this.$refs.lineBoard.doShow();
|
||||
},
|
||||
// 点击ibp预览
|
||||
goIbp() {
|
||||
// this.$refs.selectIbp.doShow();
|
||||
|
@ -93,7 +93,7 @@ export default {
|
||||
'routeNameUseEndOppositeSignalName', 'generateTbRoute', 'tbRouteNameUseEndOppositeSignalName', 'routeSignalAlwaysGreen',
|
||||
'routeApartByOverlap', 'overlapOnlySwitch', 'overlapSwitchNpOnly', 'overlapSignalOppositeSwitchNpOnly',
|
||||
'generateCycle', 'routeButton', 'likeHa1', 'getNearlySignal', 'overlapSettingByTrigger', 'generateFls', 'signalApproachNotPassPreSignal',
|
||||
'generateDestination', 'ctcOverlapOnlyTurnBackStationLock', 'routeInterlockDoNotIncludeStandHoldTrain', 'handleDepot'
|
||||
'generateDestination', 'ctcOverlapOnlyTurnBackStationLock', 'routeInterlockDoNotIncludeStandHoldTrain', 'handleDepot', 'railway'
|
||||
],
|
||||
multipleList: ['sharingECStations'],
|
||||
selectList: [],
|
||||
@ -129,7 +129,8 @@ export default {
|
||||
sharingECStations: '共享紧急关闭效果的车站',
|
||||
ctcOverlapOnlyTurnBackStationLock: 'CTC列车进路延续保护仅折返站处锁闭',
|
||||
routeInterlockDoNotIncludeStandHoldTrain: '进路联锁不包含站台扣车',
|
||||
handleDepot: '是否处理停车场/车辆段逻辑'
|
||||
handleDepot: '是否处理停车场/车辆段逻辑',
|
||||
railway: '是否大铁线路'
|
||||
}
|
||||
};
|
||||
},
|
||||
|
@ -1,7 +1,11 @@
|
||||
<template>
|
||||
<el-dialog v-dialogDrag :title="$t('map.routePreview')" :visible.sync="show" width="95%" :before-do-close="doClose" append-to-body>
|
||||
<div>
|
||||
<div v-if="$route.query.lineCode == '16'" style="display: flex;justify-content: right;">
|
||||
<el-button size="small" type="primary" @click="generationRoute">一键生成</el-button>
|
||||
</div>
|
||||
<QueryListPage
|
||||
style="margin-top: 10px;"
|
||||
ref="queryListPage"
|
||||
:pager-config="pagerConfig"
|
||||
:query-form="queryForm"
|
||||
@ -13,7 +17,7 @@
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { getBigRouteList, deleteBigRoute } from '@/api/jmap/mapdraft';
|
||||
import { getBigRouteList, deleteBigRoute, generateRoute } from '@/api/jmap/mapdraft';
|
||||
export default {
|
||||
name:'BigRouteDetail',
|
||||
props: {
|
||||
@ -227,7 +231,7 @@ export default {
|
||||
},
|
||||
getBtnCodeList(btnCodeList) {
|
||||
const nameList = [];
|
||||
btnCodeList.forEach(item => {
|
||||
btnCodeList && btnCodeList.forEach(item => {
|
||||
nameList.push(this.formatName(item));
|
||||
});
|
||||
return nameList;
|
||||
@ -236,7 +240,7 @@ export default {
|
||||
let name = '';
|
||||
const device = this.$store.getters['map/getDeviceByCode'](code);
|
||||
if (device) {
|
||||
name = device.name || '';
|
||||
name = device.name || device.code;
|
||||
}
|
||||
return name;
|
||||
},
|
||||
@ -262,8 +266,25 @@ export default {
|
||||
}).catch(error=>{
|
||||
this.$messageBox('删除进路失败:' + error.meessage);
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
generationRoute() {
|
||||
this.$confirm('是否确认一键生成进路?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.loading = true;
|
||||
generateRoute(this.$route.params.mapId).then(response => {
|
||||
this.$message.success('一键生成进路成功');
|
||||
}).catch(() => {
|
||||
this.$messageBox('一键生成进路失败');
|
||||
}).finally(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$message.info('已取消一键生成进路');
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
@ -32,6 +32,7 @@
|
||||
import RouteOperate from './routeoperate/index';
|
||||
import RoutingOperate from './routingoperate/index';
|
||||
import BigRoutingOperate from './bigroutingoperate/index';
|
||||
import IndicatorAssociatedInfo from './indicatorAssociatedInfo/index';
|
||||
import AutomaticOperate from './automaticoperate/index';
|
||||
// import PathOperate from './pathoperate/index';
|
||||
import RunLevelOperate from './runLeveloperate/index';
|
||||
@ -56,7 +57,8 @@ export default {
|
||||
SignalOperate,
|
||||
TurnedOperate,
|
||||
DwellTimeOperate,
|
||||
ContinueProtectOperate
|
||||
ContinueProtectOperate,
|
||||
IndicatorAssociatedInfo
|
||||
// DestinationOperate
|
||||
},
|
||||
props: {
|
||||
@ -94,10 +96,11 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.initLoad();
|
||||
if (this.$route.query.lineCode == '15') {
|
||||
if (this.$route.query.lineCode == '15' || this.$route.query.lineCode == '16') {
|
||||
this.tabList = [
|
||||
{label: '大铁进路', name:'bigRoutingOperate', menus:BigRoutingOperate},
|
||||
{label: this.$t('map.routing'), name:'routing', menus:RoutingOperate}
|
||||
{label: '指示灯关联', name: 'indicatorAssociatedInfo', menus: IndicatorAssociatedInfo}
|
||||
// {label: this.$t('map.routing'), name:'routing', menus:RoutingOperate}
|
||||
];
|
||||
this.enabledTab = 'bigRoutingOperate';
|
||||
} else {
|
||||
|
@ -0,0 +1,134 @@
|
||||
<template>
|
||||
<el-dialog v-dialogDrag title="指示灯关联关系预览" :visible.sync="show" width="95%" :before-do-close="doClose" append-to-body>
|
||||
<div>
|
||||
<QueryListPage
|
||||
ref="queryListPage"
|
||||
:pager-config="pagerConfig"
|
||||
:query-form="queryForm"
|
||||
:query-list="queryList"
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import { getBigRouteList } from '@/api/jmap/mapdraft';
|
||||
import { queryAssistListPaged, deleteAssist } from '@/api/assist';
|
||||
export default {
|
||||
name:'BigRouteDetail',
|
||||
props: {
|
||||
mapInfo: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
show:false,
|
||||
pagerConfig: {
|
||||
pageSize: 'pageSize',
|
||||
pageIndex: 'pageNum'
|
||||
},
|
||||
filterRouteMap:{},
|
||||
queryForm: {
|
||||
show:false
|
||||
},
|
||||
queryList: {
|
||||
query: this.queryFunction,
|
||||
height:'500px',
|
||||
selectCheckShow: false,
|
||||
indexShow: true,
|
||||
columns: [
|
||||
{
|
||||
title: '关联车站',
|
||||
prop: 'stationCode',
|
||||
type: 'tag',
|
||||
columnValue: (row) => { return this.getDeviceName(row.stationCode); },
|
||||
tagType: (row) => { return ''; }
|
||||
},
|
||||
{
|
||||
title: '运行方向',
|
||||
prop: 'labelEnum'
|
||||
},
|
||||
{
|
||||
title: '关联区段列表',
|
||||
prop: 'sectionList',
|
||||
type: 'tagMore',
|
||||
columnValue: (row) => { return this.getSectionName(row.sectionList); },
|
||||
tagType: (row) => { return ''; }
|
||||
},
|
||||
{
|
||||
title: '关联信号机',
|
||||
prop: 'signalCode',
|
||||
type: 'tag',
|
||||
columnValue: (row) => { return this.getDeviceName(row.signalCode); },
|
||||
tagType: (row) => { return ''; }
|
||||
},
|
||||
{
|
||||
type: 'button',
|
||||
title: this.$t('global.operate'),
|
||||
width: '200',
|
||||
buttons: [
|
||||
{
|
||||
name: '删除',
|
||||
handleClick: this.deleteRoute,
|
||||
type: 'danger'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
methods:{
|
||||
doShow() {
|
||||
this.show = true;
|
||||
if (this.mapInfo && this.mapInfo.id) {
|
||||
getBigRouteList(this.mapInfo.id).then(response => {
|
||||
response.data.forEach(route=>{
|
||||
this.filterRouteMap[route.code] = route.name;
|
||||
});
|
||||
this.reloadTable();
|
||||
}).catch(()=>{});
|
||||
}
|
||||
},
|
||||
doClose() {
|
||||
this.show = false;
|
||||
},
|
||||
reloadTable() {
|
||||
if (this.queryList && this.queryList.reload) {
|
||||
this.queryList.reload();
|
||||
}
|
||||
},
|
||||
queryFunction(params) {
|
||||
if (this.mapInfo && this.mapInfo.id) {
|
||||
return queryAssistListPaged(params, this.mapInfo.id);
|
||||
}
|
||||
},
|
||||
getDeviceName(code) {
|
||||
const device = this.$store.getters['map/getDeviceByCode'](code);
|
||||
return device ? device.name : '';
|
||||
},
|
||||
getSectionName(sectionList) {
|
||||
const sectionName = [];
|
||||
sectionList.forEach(item => {
|
||||
const device = this.$store.getters['map/getDeviceByCode'](item);
|
||||
device && sectionName.push(device.name);
|
||||
});
|
||||
return sectionName;
|
||||
},
|
||||
deleteRoute(index, row) {
|
||||
// this.mapInfo.id,
|
||||
deleteAssist( row.id).then(res=>{
|
||||
this.$message.success('删除指示灯关联信息成功');
|
||||
this.reloadTable();
|
||||
this.$emit('refresh');
|
||||
}).catch(error=>{
|
||||
this.$messageBox('删除指示灯关联信息失败:' + error.meessage);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -0,0 +1,96 @@
|
||||
<template>
|
||||
<div style="height: 100%;">
|
||||
<indicator-associated-info-draft
|
||||
ref="routeEdit"
|
||||
:selected="selected"
|
||||
:map-info="mapInfo"
|
||||
@setCenter="setCenter"
|
||||
/>
|
||||
<indicator-associated-info-detail ref="routeDetail" :map-info="mapInfo" @routeSelected="routeSelected" @refresh="refresh" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import IndicatorAssociatedInfoDraft from './route';
|
||||
import IndicatorAssociatedInfoDetail from './detail';
|
||||
|
||||
export default {
|
||||
name: 'IndicatorAssociatedInfoOperate',
|
||||
components: {
|
||||
IndicatorAssociatedInfoDraft,
|
||||
IndicatorAssociatedInfoDetail
|
||||
},
|
||||
props: {
|
||||
mapInfo: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
selected: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
enabledTab: 'Route',
|
||||
routeData: null,
|
||||
routeList:[]
|
||||
};
|
||||
},
|
||||
created() {
|
||||
},
|
||||
methods: {
|
||||
clickEvent(e, model) {
|
||||
this.onSelect(model);
|
||||
},
|
||||
onSelect(model) {
|
||||
if (model) {
|
||||
this.selected = model;
|
||||
} else {
|
||||
this.selected = null;
|
||||
}
|
||||
},
|
||||
setDelayUnlockStatus(data, status) {
|
||||
if (data && data.delayShowList) {
|
||||
data.delayShowList.forEach(elem => {
|
||||
elem.status = status;
|
||||
});
|
||||
}
|
||||
},
|
||||
routeSelected: function (data) {
|
||||
this.routeData = data;
|
||||
if (this.$refs && this.$refs.routeEdit) {
|
||||
this.$refs.routeEdit.isModify = data.id;
|
||||
}
|
||||
},
|
||||
previewRouteEvent: function () {
|
||||
if (this.$refs && this.$refs.routeDetail) {
|
||||
this.$refs.routeDetail.doShow();
|
||||
}
|
||||
},
|
||||
initLoad() {
|
||||
this.$refs.routeEdit && this.$refs.routeEdit.initLoad();
|
||||
},
|
||||
createRouteEvent: function () {
|
||||
if (this.$refs && this.$refs.routeEdit) {
|
||||
this.$refs.routeEdit.clear();
|
||||
}
|
||||
},
|
||||
setSelected(selected) {
|
||||
this.$refs.routeEdit.setSelected(selected);
|
||||
},
|
||||
setCenter(code) {
|
||||
this.$emit('setCenter', code);
|
||||
},
|
||||
batchSectionListFocus(flag) {
|
||||
this.$refs.routeEdit.batchSectionListFocus(flag);
|
||||
},
|
||||
refresh() {
|
||||
this.$refs.routeEdit.initPage();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<div class="BigRouteInfo">
|
||||
<el-form ref="form" :model="addModel" :rules="rules" label-width="140px" size="mini" class="bigDefinition">
|
||||
<el-form-item v-if="isModify" label="编号:" prop="code">
|
||||
<el-input v-model="addModel.code" style="width: 220px;" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="关联车站:" prop="stationCode">
|
||||
<el-select v-model="addModel.stationCode" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in stationList"
|
||||
:key="item.code"
|
||||
:label="`${item.name}(${item.code})`"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button
|
||||
:type=" field === 'stationCode' ? 'danger' : 'primary'"
|
||||
@click="hover('stationCode')"
|
||||
>{{ $t('map.activate') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="运行方向" prop="labelEnum">
|
||||
<el-select v-model="addModel.labelEnum">
|
||||
<el-option
|
||||
v-for="item in directionLabelList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联区段:" prop="sectionList">
|
||||
<el-select v-model="addModel.sectionList" multiple :placeholder="$t('map.pleaseSelect')">
|
||||
<el-option
|
||||
v-for="item in sectionList"
|
||||
:key="item.code"
|
||||
:label="`${item.name}(${item.code})`"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button
|
||||
:type=" field === 'sectionList' ? 'danger' : 'primary'"
|
||||
@click="hover('sectionList')"
|
||||
>{{ $t('map.activate') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="关联信号机:" prop="signalCode">
|
||||
<el-select v-model="addModel.signalCode" :placeholder="$t('map.pleaseSelect')">
|
||||
<el-option
|
||||
v-for="item in signalList"
|
||||
:key="item.code"
|
||||
:label="`${item.name}(${item.code})`"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button :type="field === 'signalCode'? 'danger':'primary'" @click="hover('signalCode')">{{$t('map.activate')}}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="bigDraft">
|
||||
<el-button-group class="bigDraftBtn">
|
||||
<el-button v-if="isModify" type="warning" size="small" :loading="loading" @click="update ">更新</el-button>
|
||||
<el-button v-else type="primary" size="small" :loading="loading" @click="save">保存</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { setUID } from '@/jmapNew/utils/Uid';
|
||||
import { deepAssign } from '@/utils/index';
|
||||
import { saveAssist } from '@/api/assist';
|
||||
import { mapGetters } from 'vuex';
|
||||
import ConstConfig from '@/scripts/ConstConfig';
|
||||
export default {
|
||||
name:'BigRouteInfo',
|
||||
props: {
|
||||
selected: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
mapInfo: {
|
||||
type: Object,
|
||||
default() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
var checkSectionList = (rule, value, callback) => {
|
||||
if (!value || value.length === 0){
|
||||
callback(new Error('请选择关联区段!'));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
return {
|
||||
field: '',
|
||||
loading: false,
|
||||
isModify:false,
|
||||
mainDeviceList: [],
|
||||
directionLabelList: ConstConfig.ConstSelect.directionLabelList,
|
||||
addModel:{
|
||||
id: '',
|
||||
stationCode: '',
|
||||
labelEnum:'',
|
||||
sectionList: [],
|
||||
signalCode: ''
|
||||
},
|
||||
rules: {
|
||||
'stationCode':[
|
||||
{ required: true, message: '请选择关联车站', trigger: 'blur' },
|
||||
{ required: true, message: '请选择关联车站', trigger: 'change' },
|
||||
],
|
||||
'labelEnum': [
|
||||
{ required: true, message: '请选择运行方向', trigger: 'change' }
|
||||
],
|
||||
'signalCode': [
|
||||
{ required: true, message: '请选择关联信号机', trigger: 'change' }
|
||||
],
|
||||
'sectionList': [
|
||||
{ validator: checkSectionList, trigger: 'change' },
|
||||
{ required: true, message: '请选择关联区段', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'sectionList',
|
||||
'stationList',
|
||||
'signalButtonList',
|
||||
'signalList'
|
||||
])
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods:{
|
||||
initPage() {},
|
||||
hover(field) {
|
||||
this.field = field === this.field ? '' : field;
|
||||
},
|
||||
changeRadio() {
|
||||
this.$refs.form.clearValidate();
|
||||
},
|
||||
setSelected(selected) {
|
||||
if (selected) {
|
||||
if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'sectionList'.toUpperCase()) {
|
||||
this.addModel.sectionList.push(selected.code);
|
||||
} else if (selected._type.toUpperCase() === 'Station'.toUpperCase() && this.field.toUpperCase() === 'stationCode'.toUpperCase()) {
|
||||
this.addModel.stationCode = selected.code;
|
||||
this.field = '';
|
||||
} else if (selected._type.toUpperCase() === 'Signal'.toUpperCase() && this.field.toUpperCase() === 'signalCode'.toUpperCase()){
|
||||
this.addModel.signalCode = selected.code;
|
||||
this.field = '';
|
||||
} ;
|
||||
}
|
||||
},
|
||||
save() {
|
||||
const that = this;
|
||||
that.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
const newModel = deepAssign({}, that.addModel);
|
||||
// newModel.code = setUID('Route');
|
||||
that.loading = true;
|
||||
saveAssist(newModel, that.mapInfo.id).then(res=>{
|
||||
that.$message.success(that.$t('tip.creatingSuccessful'));
|
||||
that.loading = false;
|
||||
that.clear();
|
||||
}).catch(() => {
|
||||
that.$messageBox(that.$t('tip.operationAbnormal'));
|
||||
that.loading = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
clear() {
|
||||
if (this.$refs && this.$refs.form && this.mapInfo) {
|
||||
this.$refs.form.resetFields();
|
||||
this.addModel = {
|
||||
id: '',
|
||||
stationCode: '',
|
||||
labelEnum:'',
|
||||
sectionList: [],
|
||||
signalCode: ''
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.BigRouteInfo{
|
||||
height: 100%;
|
||||
overflow:auto;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
.bigDefinition{
|
||||
|
||||
}
|
||||
.bigDraft{
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
background: #fff;
|
||||
box-shadow: 4px 5px 10px #565656;
|
||||
width: 100%;
|
||||
padding: 8px 10px;
|
||||
}
|
||||
.bigDraftBtn{float: right;}
|
||||
</style>
|
@ -57,7 +57,7 @@
|
||||
@mouseenter="mouseenter(nor)"
|
||||
@mouseleave="mouseleave(nor)"
|
||||
>
|
||||
<div class="name">{{ nor.name }}</div>
|
||||
<div class="name">{{ nor.name || nor.code }}</div>
|
||||
<div class="close" @click="delList(nor, item.list)"><i class="el-icon-close" /></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -119,7 +119,12 @@ export default {
|
||||
type: 'Signal',
|
||||
name: '信号机列表',
|
||||
list: []
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'SignalButton',
|
||||
name: '信号按钮列表',
|
||||
list: []
|
||||
}
|
||||
]
|
||||
};
|
||||
},
|
||||
@ -156,7 +161,9 @@ export default {
|
||||
this.modelList[1].list.push(item);
|
||||
} else if (item._type == 'Signal') {
|
||||
this.modelList[2].list.push(item);
|
||||
}
|
||||
} else if (item._type == 'SignalButton') {
|
||||
this.modelList[3].list.push(item);
|
||||
}
|
||||
if (item.stationCode == this.seclectDeviceList[0].stationCode) {
|
||||
count++;
|
||||
}
|
||||
@ -317,7 +324,12 @@ export default {
|
||||
type: 'Signal',
|
||||
name: '信号机列表',
|
||||
list: []
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'SignalButton',
|
||||
name: '信号按钮列表',
|
||||
list: []
|
||||
}
|
||||
];
|
||||
},
|
||||
mouseenter(model) {
|
||||
|
@ -99,7 +99,8 @@ export default {
|
||||
'Recovery',
|
||||
'Accident',
|
||||
'Occlusion',
|
||||
'PickOrDepartArrow'
|
||||
'PickArrow',
|
||||
'DepartArrow'
|
||||
],
|
||||
noNameTypeList: ['FaultStatusGroup', 'ModeStatusGroup', 'LampFilament', 'ReturnModeGroup', 'ControlSwitch', 'Axle'],
|
||||
typeList: [
|
||||
@ -130,9 +131,10 @@ export default {
|
||||
{ name: '复原', value: 'Recovery' },
|
||||
{ name: '事故', value: 'Accident' },
|
||||
{ name: '闭塞', value: 'Occlusion' },
|
||||
{ name: '接发车箭头', value: 'PickOrDepartArrow' }
|
||||
{ name: '接车箭头', value: 'PickArrow' },
|
||||
{ name: '发车箭头', value: 'DepartArrow' }
|
||||
],
|
||||
hasDirectionList: ['SectionOccupied', 'AssistStatus', 'TotalAssist', 'DepartAssist', 'PickAssist', 'Recovery', 'Accident', 'Occlusion', 'PickOrDepartArrow'],
|
||||
hasDirectionList: ['SectionOccupied', 'AssistStatus', 'TotalAssist', 'DepartAssist', 'PickAssist', 'Recovery', 'Accident', 'Occlusion', 'PickArrow', 'DepartArrow'],
|
||||
directionList: [{label: 'X',value: 'X'},{label: 'XF',value: 'XF'},{label: 'XD',value: 'XD'}, {label:'S',value:'S'},{label:'SF',value:'SF'},{label:'SD',value: 'SD'}],
|
||||
editModel:getModel('ControlLamp'),
|
||||
addModel:getModel('ControlLamp'),
|
||||
@ -165,8 +167,8 @@ export default {
|
||||
] },
|
||||
{ prop: 'mfNum', label: '报警指示故障数量:', type: 'number', min: 0, isHidden: this.editModel.type !== 'FaultStatusGroup' },
|
||||
{ prop: 'pfNum', label: '电源故障数量:', type: 'number', min: 0, isHidden: this.editModel.type !== 'FaultStatusGroup'},
|
||||
{ prop: 'right', label: '朝右:', type: 'checkbox', isHidden: this.editModel.type !== 'PickOrDepartArrow' },
|
||||
{ prop: 'direction', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.hasDirectionList.includes(this.editModel.type) },
|
||||
{ prop: 'right', label: '朝右:', type: 'checkbox', isHidden: this.editModel.type !== 'DepartArrow' && this.editModel.type !== 'PickArrow' },
|
||||
{ prop: 'labelEnum', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.hasDirectionList.includes(this.editModel.type) },
|
||||
{ prop: 'switchCode', label: '所属道岔:', type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', options: this.switchList, isHidden: this.editModel.type !== 'SwitchFault', hover: this.hover, buttonType: 'switchSelectCode', buttonShowType: this.isButtonType },
|
||||
{ prop:'stationCode', label: '所属车站:', type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList}
|
||||
]
|
||||
@ -191,7 +193,7 @@ export default {
|
||||
] },
|
||||
{ prop: 'mfNum', label: '报警指示故障数量:', type: 'number', min: 0, isHidden: this.addModel.type !== 'FaultStatusGroup' },
|
||||
{ prop: 'pfNum', label: '电源故障数量:', type: 'number', min: 0, isHidden: this.addModel.type !== 'FaultStatusGroup'},
|
||||
{ prop: 'direction', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.hasDirectionList.includes(this.addModel.type) },
|
||||
{ prop: 'labelEnum', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.hasDirectionList.includes(this.addModel.type) },
|
||||
{ prop: 'switchCode', label: '所属道岔:', type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', options: this.switchList, isHidden: this.addModel.type !== 'SwitchFault', hover: this.hover, buttonType: 'switchSelectCode', buttonShowType: this.isButtonType }
|
||||
]
|
||||
}
|
||||
@ -222,7 +224,7 @@ export default {
|
||||
switchCode: [
|
||||
{ required: true, message: '请选择所属道岔!', trigger: 'change'}
|
||||
],
|
||||
direction: [
|
||||
labelEnum: [
|
||||
{ required: true, message: '请选择方向!', trigger: 'change'}
|
||||
]
|
||||
};
|
||||
@ -292,7 +294,8 @@ export default {
|
||||
this.RecoveryList = [];
|
||||
this.AccidentList = [];
|
||||
this.OcclusionList = [];
|
||||
this.PickOrDepartArrowList = [];
|
||||
this.DepartArrowList = [];
|
||||
this.PickArrowList = [];
|
||||
indicatorLightList.forEach(item => {
|
||||
switch (item._type) {
|
||||
case 'AtsControl':
|
||||
@ -376,8 +379,11 @@ export default {
|
||||
case 'Occlusion':
|
||||
this.OcclusionList.push(item);
|
||||
break;
|
||||
case 'PickOrDepartArrow':
|
||||
this.PickOrDepartArrowList.push(item);
|
||||
case 'PickArrow':
|
||||
this.PickArrowList.push(item);
|
||||
break;
|
||||
case 'DepartArrow':
|
||||
this.DepartArrowList.push(item);
|
||||
break;
|
||||
}
|
||||
});
|
||||
@ -465,8 +471,11 @@ export default {
|
||||
case 'Occlusion':
|
||||
this.selectLists = this.OcclusionList;
|
||||
break;
|
||||
case 'PickOrDepartArrow':
|
||||
this.selectLists = this.PickOrDepartArrowList;
|
||||
case 'PickArrow':
|
||||
this.selectLists = this.PickArrowList;
|
||||
break;
|
||||
case 'DepartArrow':
|
||||
this.selectLists = this.DepartArrowList;
|
||||
break;
|
||||
default :
|
||||
this.selectLists = this.intersiteControlList;
|
||||
@ -478,6 +487,7 @@ export default {
|
||||
this.deviceSelect(this.$store.getters['map/getDeviceByCode'](code));
|
||||
},
|
||||
deviceSelect(selected) {
|
||||
console.log(selected, '======');
|
||||
if (this.field.toUpperCase() === 'switchSelectCode'.toUpperCase() && selected._type.toUpperCase() === 'Switch'.toUpperCase()) {
|
||||
if (this.activeName === 'first') {
|
||||
this.editModel.switchCode = selected.code;
|
||||
@ -576,8 +586,11 @@ export default {
|
||||
case 'Occlusion':
|
||||
idPrefix = 'occlusion';
|
||||
break;
|
||||
case 'PickOrDepartArrow':
|
||||
idPrefix = 'podArrow'
|
||||
case 'PickArrow':
|
||||
idPrefix = 'pickArrow';
|
||||
break;
|
||||
case 'DepartArrow':
|
||||
idPrefix = 'departArrow';
|
||||
break;
|
||||
}
|
||||
return idPrefix;
|
||||
|
@ -208,7 +208,10 @@ export default {
|
||||
this.$emit('showMap');
|
||||
},
|
||||
handleSelectControlPage(device) {
|
||||
const controlLampTypeList = ['AtsControl', 'CenterCommunication', 'ChainControl', 'IntersiteControl', 'LeuControl', 'LocalControl', 'Maintain', 'SwitchFault', 'PowerSupply', 'NoOneReturn', 'MaintenanceLamps', 'ZcCommunication', 'FaultStatusGroup', 'ModeStatusGroup', 'LampFilament', 'ReturnModeGroup', 'ControlSwitch', 'Axle', 'IndicatorLight'];
|
||||
const controlLampTypeList = ['AtsControl', 'CenterCommunication', 'ChainControl', 'IntersiteControl', 'LeuControl', 'LocalControl', 'Maintain',
|
||||
'SwitchFault', 'PowerSupply', 'NoOneReturn', 'MaintenanceLamps', 'ZcCommunication', 'FaultStatusGroup', 'ModeStatusGroup', 'LampFilament',
|
||||
'ReturnModeGroup', 'ControlSwitch', 'Axle', 'IndicatorLight', 'SectionOccupied', 'AssistStatus', 'TotalAssist', 'DepartAssist', 'PickAssist',
|
||||
'Recovery', 'Accident', 'Occlusion', 'PickArrow' ,'DepartArrow'];
|
||||
const type = device._type;
|
||||
if (this.selectDevice) {
|
||||
this.enabledTab = this.selectDevice;
|
||||
|
@ -112,6 +112,7 @@ class Model {
|
||||
this.tp = { x: 0, y: 0 };
|
||||
this.belongStationCode = '';
|
||||
this.srCode = '';
|
||||
this.throat = '';
|
||||
}
|
||||
StationModel() {
|
||||
this._type = 'Station';
|
||||
@ -201,6 +202,7 @@ class Model {
|
||||
this.mfNum = 0;
|
||||
this.pfNum = 0;
|
||||
this.switchCode = '';
|
||||
this.labelEnum = '';
|
||||
this.right = false;
|
||||
}
|
||||
}
|
||||
|
@ -69,13 +69,17 @@ export default {
|
||||
{ code: 'EXIT', name: '出站信号机' },
|
||||
{ code: 'SHUNTING2', name: '列车兼调车信号机' },
|
||||
{ code: 'INBOUND', name: '进段信号机' },
|
||||
{ code: 'OUTBOUND', name: '出段信号机' }
|
||||
{ code: 'OUTBOUND', name: '出段信号机' },
|
||||
{ code: 'RECEIVING', name: '接车信号机(大铁)' },
|
||||
{ code: 'DEPARTURE', name: '发车信号机(大铁)'}
|
||||
],
|
||||
signalModelList:[
|
||||
{ code: 'RGY', name: '红绿黄三灯信号机'},
|
||||
{ code: 'R', name: '单红灯信号机'},
|
||||
{ code: 'BW', name: '蓝白调车信号机'},
|
||||
{ code: 'YRW', name: '黄红白列车兼调车信号机' }
|
||||
{ code: 'YRW', name: '黄红白列车兼调车信号机' },
|
||||
{ code: 'YGRYW', name: '黄绿红黄白信号机' },
|
||||
{ code: 'YGRGW', name: '黄绿红绿白信号机' }
|
||||
],
|
||||
field:'',
|
||||
editModel: getModel('Signal'),
|
||||
|
@ -56,7 +56,7 @@ export default {
|
||||
signalCode: '',
|
||||
sectionCode: '',
|
||||
switchCode: '',
|
||||
direction: '',
|
||||
labelEnum: '',
|
||||
position: {
|
||||
x: 0,
|
||||
y: 0
|
||||
@ -84,14 +84,16 @@ export default {
|
||||
{ value: 'PASS', label: '通过按钮' },
|
||||
{ value: 'GUIDE', label: '引导按钮' },
|
||||
{ value: 'FLEXIBLE', label: '变通按钮' },
|
||||
{ value: 'RAMP_TERMINAL', label: '坡道终端按钮' },
|
||||
{ value: 'RAMP_TERMINAL', label: '坡道终端按钮'},
|
||||
{ value: 'TRAIN_TERMINAL', label: '列车终端按钮'},
|
||||
{ value: 'SHUNT_TERMINAL', label: '调车终端按钮'},
|
||||
{ value: 'ASSIST', label: '总辅助按钮' },
|
||||
{ value: 'PICK_ASSIST', label: '接辅助按钮' },
|
||||
{ value: 'DEPART_ASSIST', label: '发辅助按钮' },
|
||||
{ value: 'ACCIDENT', label: '事故按钮' },
|
||||
{ value: 'CHANGE_DIRECTION', label: '改方按钮' }
|
||||
{ value: 'CHANGE_DIRECTION', label: '改方按钮' },
|
||||
{ value: 'RECOVERY', label: '复原按钮' },
|
||||
{ value: 'OCCLUSION', label: '闭塞按钮' }
|
||||
],
|
||||
centralizedStationList: [], // 设备集中站列表
|
||||
directionList: [{label:'X',value:'X'},{label:'XF',value:'XF'},{label:'XD',value:'XD'},{label:'S',value:'S'},{label:'SF',value:'SF'},{label:'SD',value:'SD'}],
|
||||
@ -120,7 +122,7 @@ export default {
|
||||
'position.y': [
|
||||
{ required: true, message: this.$t('rules.pleaseEnterYCoordinate'), trigger: 'blur' }
|
||||
],
|
||||
direction: [
|
||||
labelEnum: [
|
||||
{ required: true, message: '请选择方向', trigger: 'change' }
|
||||
]
|
||||
}
|
||||
@ -156,7 +158,7 @@ export default {
|
||||
{ prop: 'signalCode', label: '关联信号机:', type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', clearable: true, options: this.signalList, hover: this.hover, buttonType: 'linkSignal', buttonShowType: this.isLinkSignalShow, isHidden: !this.isLinkSignal },
|
||||
{ prop: 'sectionCode', label: '关联区段:', type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', clearable: true, options: this.sectionList, hover: this.hover, buttonType: 'linkSection', buttonShowType: this.isLinkSectionShow, isHidden: !this.isLinkSection },
|
||||
{ prop: 'switchCode', label: '关联道岔:', type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', clearable: true, options: this.switchList, hover: this.hover, buttonType: 'linkSwitch', buttonShowType: this.isLinkSwitchShow, isHidden: !this.isLinkSwitch },
|
||||
{ prop: 'direction', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.isLinkDirection },
|
||||
{ prop: 'labelEnum', label: '方向:', type: 'select', optionLabel: 'label', optionValue: 'value', options: this.directionList, isHidden: !this.isLinkDirection },
|
||||
{ prop: 'position', label: this.$t('map.textPoints'), type: 'coordinate', width: '120px', children: [
|
||||
{ prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px', disabled: false },
|
||||
{ prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px', disabled: false }
|
||||
@ -213,7 +215,7 @@ export default {
|
||||
return this.editModel.type === 'FLEXIBLE';
|
||||
},
|
||||
isLinkDirection() {
|
||||
return ['ASSIST', 'PICK_ASSIST', 'DEPART_ASSIST', 'ACCIDENT', 'CHANGE_DIRECTION'].includes(this.editModel.type);
|
||||
return ['ASSIST', 'PICK_ASSIST', 'DEPART_ASSIST', 'ACCIDENT', 'CHANGE_DIRECTION', 'RECOVERY', 'OCCLUSION'].includes(this.editModel.type);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@ -242,7 +244,7 @@ export default {
|
||||
this.editModel.signalCode = '';
|
||||
this.editModel.switchCode = '';
|
||||
this.editModel.sectionCode = '';
|
||||
this.editModel.direction = '';
|
||||
this.editModel.labelEnum = '';
|
||||
this.activeName = 'first';
|
||||
this.editModel = deepAssign(this.editModel, selected);
|
||||
} else if (this.field === 'linkSignal' && selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
|
||||
@ -288,11 +290,11 @@ export default {
|
||||
},
|
||||
updateMapModel(data) {
|
||||
if (this.isLinkSignal) {
|
||||
data.sectionCode = ''; data.switchCode = ''; data.direction = '';
|
||||
data.sectionCode = ''; data.switchCode = ''; data.labelEnum = '';
|
||||
} else if (this.isLinkSection) {
|
||||
data.signalCode = ''; data.switchCode = ''; data.direction = '';
|
||||
data.signalCode = ''; data.switchCode = ''; data.labelEnum = '';
|
||||
} else if (this.isLinkSwitch) {
|
||||
data.signalCode = ''; data.sectionCode = ''; data.direction = '';
|
||||
data.signalCode = ''; data.sectionCode = ''; data.labelEnum = '';
|
||||
} else if (this.isLinkDirection) {
|
||||
data.sectionCode = ''; data.signalCode = ''; data.switchCode = '';
|
||||
}
|
||||
|
102
src/views/newMap/newMapdraft/mapoperate/switch/batchSet.vue
Normal file
@ -0,0 +1,102 @@
|
||||
|
||||
<template>
|
||||
<div style="height: 100%;overflow-y:auto;">
|
||||
<el-form ref="oprt1" :model="fromData" label-width="130px" size="mini" :rules="mergeRules">
|
||||
<el-form-item label="道岔列表:" prop="switchList">
|
||||
<el-select v-model="fromData.switchList" filterable multiple :placeholder="$t('rules.pleaseSelect')">
|
||||
<el-option
|
||||
v-for="item in switchList"
|
||||
:key="item.code"
|
||||
:label="item.name + '(' + item.code + ')'"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button :type="field === 'switchList' ? 'danger' : 'primary'" size="small" @click="hover('switchList')">{{ $t('map.activate') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属咽喉区:" prop="">
|
||||
<el-select v-model="fromData.throat" :placeholder="$t('rules.pleaseSelect')">
|
||||
<el-option
|
||||
v-for="item in throatList"
|
||||
:key="item.code"
|
||||
:label="item.name"
|
||||
:value="item.code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button-group>
|
||||
<el-button type="primary" size="big" @click="batchSetThroat">设置咽喉区域</el-button>
|
||||
</el-button-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { deepAssign } from '@/utils/index';
|
||||
import { mapGetters } from 'vuex';
|
||||
import { getUID } from '@/jmapNew/utils/Uid';
|
||||
import { EventBus } from '@/scripts/event-bus';
|
||||
import getModel from '../models.js';
|
||||
|
||||
export default {
|
||||
name: 'CreateAxle',
|
||||
props:{
|
||||
field:{
|
||||
type:String,
|
||||
default:''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fromData: {
|
||||
switchList: [],
|
||||
throat: ''
|
||||
},
|
||||
throatList: [{code: 'S', name: 'S'},{code: 'X', name: 'X'}],
|
||||
mergeRules: {
|
||||
switchList: [{ required: true, message: '请选择关联道岔', trigger: 'change' }],
|
||||
throat: [{ required: true, message: '请选择所属咽喉区', trigger: 'change' }],
|
||||
}
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('map', [
|
||||
'sectionList',
|
||||
'switchList'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
field(val) {
|
||||
if (val) {
|
||||
EventBus.$emit('SELECTON');
|
||||
}
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
hover(field) {
|
||||
this.$emit('hover', field);
|
||||
},
|
||||
batchSetThroat() {
|
||||
this.$refs.oprt1.validate((valid) => {
|
||||
if (valid) {
|
||||
const models = [];
|
||||
this.hover(''); // 处理 field 值为空
|
||||
this.fromData.switchList.forEach(item => {
|
||||
const switchModel = deepAssign({}, this.$store.getters['map/getDeviceByCode'](item));
|
||||
switchModel.throat = this.fromData.throat;
|
||||
models.push(switchModel);
|
||||
});
|
||||
this.$emit('updateMapModel', models);
|
||||
this.fromData.switchList = [];
|
||||
this.fromData.throat = '';
|
||||
}
|
||||
})
|
||||
},
|
||||
pushData(data) {
|
||||
if (!this.fromData.switchList.includes(data)) {
|
||||
this.fromData.switchList.push(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
@ -77,8 +77,9 @@ export default {
|
||||
x: skew.x,
|
||||
y: skew.y
|
||||
},
|
||||
pos: 'N' // 默认状态定位
|
||||
pos: 'N', // 默认状态定位
|
||||
// N-定位 R-反位 NO-无(失表) EX-挤叉
|
||||
throat: ''
|
||||
};
|
||||
const model = Object.assign(switchModel, data);
|
||||
const swch = this.findSwitchData(model.sectionACode, model.sectionBCode, model.sectionCCode);
|
||||
@ -136,8 +137,9 @@ export default {
|
||||
x: skew.x,
|
||||
y: skew.y
|
||||
},
|
||||
pos: 'N' // 默认状态定位
|
||||
pos: 'N', // 默认状态定位
|
||||
// N-定位 R-反位 NO-无(失表) EX-挤叉
|
||||
throat: ''
|
||||
};
|
||||
const model = Object.assign(switchModel, data);
|
||||
const swch = this.findSwitchData(model.sectionACode, model.sectionBCode, model.sectionCCode);
|
||||
|
@ -9,6 +9,9 @@
|
||||
<el-tab-pane class="view-control" label="生成道岔计轴区段" name="three" :lazy="lazy">
|
||||
<create-axle ref="createAxle" :field="field" v-on="$listeners" @hover="hover" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane class="view-control" label="批量设置" name="four" :lazy="lazy">
|
||||
<batch-set ref="batchSet" :field="field" v-on="$listeners" @hover="hover"/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</template>
|
||||
|
||||
@ -16,6 +19,7 @@
|
||||
import SwitchModel from './switchModle';
|
||||
import CreateSwitch from './create';
|
||||
import CreateAxle from './createAxle';
|
||||
import BatchSet from './batchSet';
|
||||
import { mapGetters } from 'vuex';
|
||||
|
||||
export default {
|
||||
@ -23,7 +27,8 @@ export default {
|
||||
components: {
|
||||
SwitchModel,
|
||||
CreateSwitch,
|
||||
CreateAxle
|
||||
CreateAxle,
|
||||
BatchSet
|
||||
},
|
||||
props: {
|
||||
selected: {
|
||||
@ -64,7 +69,9 @@ export default {
|
||||
deviceSelect(selected) {
|
||||
if (selected && selected._type.toUpperCase() === 'Switch'.toUpperCase() && this.field.toUpperCase() === 'relevanceSwitchList'.toUpperCase()) {
|
||||
this.$refs.createAxle.pushData(selected.code);
|
||||
} else if (selected && selected._type.toUpperCase() === 'Switch'.toUpperCase()) {
|
||||
} else if(selected && selected._type.toUpperCase() === 'Switch'.toUpperCase() && this.field.toUpperCase() === 'switchList'.toUpperCase()) {
|
||||
this.$refs.batchSet.pushData(selected.code);
|
||||
} else if (selected && selected._type.toUpperCase() === 'Switch'.toUpperCase()) {
|
||||
this.activeName = 'first';
|
||||
this.$refs.switchModel.setModel(selected);
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ export default {
|
||||
{ prop: 'namePosition.x', firstLevel: 'namePosition', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px' },
|
||||
{ prop: 'namePosition.y', firstLevel: 'namePosition', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px' }
|
||||
] },
|
||||
{ prop: 'throat', label: '所属咽喉区:', type: 'select', optionLabel: 'name', optionValue: 'code', options: [{name: 'S', code: 'S'}, {name: 'X', code: 'X'}] },
|
||||
{ prop: 'srCode', label: '沙盘设备编号', type: 'input' },
|
||||
{ prop: 'tp', label: this.$t('map.switchTp'), type: 'coordinate', width: '160px', children: [
|
||||
{ prop: 'tp.x', firstLevel: 'tp', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px' },
|
||||
|
@ -115,7 +115,8 @@ export default {
|
||||
'routeDefaultCheckConflict',
|
||||
'tripNumberIsUnique',
|
||||
'standTbStrategyIsInvalid',
|
||||
'updateTripPlanByServiceNumber'
|
||||
'updateTripPlanByServiceNumber',
|
||||
'hasCTC'
|
||||
],
|
||||
selectList: ['runMode', 'singleApproachLockCancelRoute'],
|
||||
generalConfig: [
|
||||
@ -164,7 +165,8 @@ export default {
|
||||
'routeDefaultCheckConflict',
|
||||
'tripNumberIsUnique',
|
||||
'standTbStrategyIsInvalid',
|
||||
'updateTripPlanByServiceNumber'
|
||||
'updateTripPlanByServiceNumber',
|
||||
'hasCTC'
|
||||
],
|
||||
rangeList: ['noParkingSM', 'parkingSM'],
|
||||
speedList: ['rmAtpSpeed', 'urmAtpSpeed'],
|
||||
@ -219,7 +221,8 @@ export default {
|
||||
routeDefaultCheckConflict: '进路默认开启冲突检测',
|
||||
tripNumberIsUnique: '运行图中车次号是否唯一',
|
||||
standTbStrategyIsInvalid: '站台折返策略不生效',
|
||||
updateTripPlanByServiceNumber: '根据服务号更新车次计划'
|
||||
updateTripPlanByServiceNumber: '根据服务号更新车次计划',
|
||||
hasCTC: '有CTC系统(大铁)'
|
||||
}
|
||||
};
|
||||
},
|
||||
|