diff --git a/src/jmapNew/config/deviceStyle.js b/src/jmapNew/config/deviceStyle.js index 22f4b8f61..d00baa3a8 100644 --- a/src/jmapNew/config/deviceStyle.js +++ b/src/jmapNew/config/deviceStyle.js @@ -12,7 +12,8 @@ const mapDeviceStyle = { '11': 'xian_01', // 西安三号线 '12': 'ningbo_03', // 宁波三号线 '13': 'race_01', // 2020国赛线路 - '14':'nanjing_02' // 南京二号线 + '14':'nanjing_02', // 南京二号线 + '15': 'datie_01' // 大铁线路一 }; export function selectLineCode(code) { diff --git a/src/jmapNew/config/skinCode/datie_01.js b/src/jmapNew/config/skinCode/datie_01.js new file mode 100644 index 000000000..daf8b317a --- /dev/null +++ b/src/jmapNew/config/skinCode/datie_01.js @@ -0,0 +1,948 @@ +import defaultStyle from '../defaultStyle'; +import deviceType from '../../constant/deviceType'; + +class SkinCode extends defaultStyle { + constructor() { + super(); + this.fontFamily = '宋体'; + this[deviceType.Section] = { + elemnetType:['name', 'line', 'separator', 'badShunt'], + // 'speedLimit', 'speedLimitName','standTrackText','reentryTrackText','transferTrackText', + active: { + routeColor: true // 进路触发颜色 + }, + name: { + z: 10, + position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + distance: 10, // 文字离区段距离 + fontSize: 12, // 字体大小 + fontWeight: 'normal', // 字体粗细 + fontColor: 'rgb(192,192,192)', // 字体颜色 (银白) + textAlign: 'center', // 水平对齐方式 + textPosition: 'inside', // 文字位置 + textVerticalAlign: 'middle', // 文字垂直对齐方式 + approachColor: '#FFFFFF' + }, + logicText: { + z: 10, + position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + distance: 12, // 文字离区段距离 + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + fontColor: '#FFFFFF', // 字体颜色 + textAlign: 'center', // 水平对齐方式 + textPosition: 'inside', // 文字位置 + textVerticalAlign: 'middle' // 文字垂直对齐方式 + }, + // standTrackText: { + // z: 10, + // position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + // distance: 24, // 文字离区段距离 + // fontSize: 11, // 字体大小 + // fontWeight: 'normal', // 字体粗细 + // fontColor: '#FFFFFF', // 字体颜色 + // textAlign: 'center', // 水平对齐方式 + // textPosition: 'inside', // 文字位置 + // textVerticalAlign: 'middle' // 文字垂直对齐方式 + // }, + // reentryTrackText: { + // z: 10, + // position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + // distance: 36, // 文字离区段距离 + // fontSize: 11, // 字体大小 + // fontWeight: 'normal', // 字体粗细 + // fontColor: '#FFFFFF', // 字体颜色 + // textAlign: 'center', // 水平对齐方式 + // textPosition: 'inside', // 文字位置 + // textVerticalAlign: 'middle' // 文字垂直对齐方式 + // }, + // transferTrackText: { + // z: 10, + // position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + // distance: 36, // 文字离区段距离 + // fontSize: 11, // 字体大小 + // fontWeight: 'normal', // 字体粗细 + // fontColor: '#FFFFFF', // 字体颜色 + // textAlign: 'center', // 水平对齐方式 + // textPosition: 'inside', // 文字位置 + // textVerticalAlign: 'middle' // 文字垂直对齐方式 + // }, + destinationText: { + z: 10, + position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + distance: 12, // 文字离区段距离 + fontSize: 11, // 字体大小 + fontWeight: 'bold', // 字体粗细 + fontColor: 'yellow', // 字体颜色 + textAlign: 'center', // 水平对齐方式 + textPosition: 'inside', // 文字位置 + textVerticalAlign: 'middle' // 文字垂直对齐方式 + }, + line: { + z: 0, + width: 3, // 区段宽度 + beyondWidth: 0, // 区段宽超出宽度 + invadeColor: '#FF0000', // 区段侵入颜色 (红色) + spareColor: 'rgb(85,120,182)', // 区段空闲颜色 (浅蓝) + + communicationOccupiedColor: '#FF0000', // 区段通信车占用颜色 (红色) + unCommunicationOccupiedColor: '#FF0000', // 区段非通讯车占用颜色 (红色) + + routeLockColor: '#FFFFFF', // 区段进路锁定颜色 (白色) + faultLockColor: '#006400', // 区段故障锁定颜色 + + undefinedColor: '#0071C1', // 区段未定义颜色 + blockColor: '#00FF00', // 区段封锁颜色 + atcExcisionColor: '#A0522D', // 区段atc切除颜色 + atsExcisionColor: '#A0522D', // 区段ats切除颜色 + timeReleaseColor: '#3F3F3F', // 区段延时释放颜色 + + protectiveLockColor: '#FFFF00', // 区段保护锁闭 + + protectiveTimeReleaseColor: '#0071C1', // 区段保护延时解锁 + logicalColor: '#FFFF00', // 逻辑区段颜色 (未用) + logicalTextColor: '#C0C0C0', // 逻辑区段名称颜色 (未用) + invalidColor: '#B18E38' // 区段ARB故障颜色 + }, + badShunt:{ + z: 2, + distance: 2, // 分路不良 距离区段距离 + width: 1, // 分路不良的宽度 + lineColor: 'rgb(188,67,180)' // 分路不良颜色 (粉红色) + }, + // speedLimit: { // 限速元素 + // z: 2, + // width: 1, // 限速线的宽度 + // distance: 5, // 限速线距离区段距离 + // lineColor: '#C0C000', // 限速线颜色 (黄色透明光) + // nameShow: true // 名称显示 + // }, + // speedLimitName: { + // z: 10, + // leftName: true, // 左侧限速值是否展示 + // rightName: true, // 右侧限速值是否展示 + // nameBackgroundIsRect: false, // 限速值背景是否为矩形 + // nameBackgroundBorderWidth: 0, // 限速值背景是否边框宽度 + // nameBackgroundBorderColor: '#000', // 限速值背景边框颜色 + // limitValueDistance: -15, + // kilometerFontSize: 8, // 公里标大小 + // kilometerColor: '#fff', // 公里标颜色 + // nameNumberFontSize: 11, // 限速值大小 + // nameNumberColor: '#C00808', // 限速值颜色 + // nameBackground: '#C0C000', // 限速名称背景颜色 + // drogueWidth: 19, // 浮标宽度 + // drogueHeight: 12 // 浮标高度 + // }, + separator: { + z: 3, // 分割符层级 + width: 2, // 物理区段分隔符宽度 + logicWidth:2, // 逻辑区段分隔符宽度 + endWidth: 2, // 尽头分隔符宽度 + endColor: 'rgb(128,128,128)', // 尽头分隔符颜色 + color: 'rgb(128,128,128)', // 区段边界符颜色 + invadeSpecial:true, // 特殊侵限 + halfHeight: 3 // 区段分隔符高度的一半 + }, + shuttleBack: { // 折返进路 (存在此对象 显示折返箭头) + z: 10, + width: 1.5, + color: '#FFFFFF', + distance: 5 // 限速线距离区段距离 + }, + trainPosition:{ + display: false // 列车实时位置显示 + } + }; + + this[deviceType.Signal] = { + distance: 10, // 设备距离区段的距离 + post: { + standardLength: 6, // 高柱长度 + standardHeight: 6, // 灯柱高度 + standardColor: '#FFFFFF', // 灯柱颜色 + standardVerticalWidth: 2, // 灯柱竖杆宽度 + standardRailWidth: 2 // 灯柱横杆宽度 + }, + text: { + show: true, // 信号机名称显示 + distance: 3, // 文字和灯杆的距离 + isAlignCenter: false, // 信号字体对其方式 + fontSize: 11, // 信号机名称字体大小 + fontWeight: 'bold', // 信号机名称字体粗细 + defaultColor: '#FFFFFF', // 信号灯字体默认色 + blockColor: '#EF0C08', // 信号灯字体锁定颜色 + checkColor: '#00FF00' // 信号保护区段检查颜色 + }, + lamp: { + bgShow: false, // 是否被选中 + guidName: 'singleRY', // 成都三号线引导类型 + borderVariable: true, // 信号灯边框可变 + stopWidth: 2, // 禁止线宽度 + borderWidth: 2, // 信号灯边框线宽度 + borderColor: '#3149C3', // 信号灯边框线颜色 + radiusR: 6, // 信号灯半径 + grayColor: '#7F7F7F', // 信号灯灰色 + redColor: '#FF0000', // 信号灯红色 + greenColor: '#00FF00', // 信号灯绿色 + yellowColor: '#FFFF00', // 信号灯黄色 + whiteColor: '#FFFFFF', // 信号灯白色 + blueColor: '#0070C0', // 信号灯蓝色 + faultType: 'light' // 信号机故障类型 (light闪) + }, + route: { + direction: true, // 自动通过方向 + offset: { x: 4, y: 0}, // 自动通过偏移量 + routeColor: '#00FF00', // 自动进路 + radiusR: 6 + }, + auto: { + signalFrontTriangle: true, // 信号灯前三角展示 + fleetModeTriangle: true, // 自动进路显示三角形非箭头 + direction: false, // 自动通过方向 + offset: { x: -4, y: 0}, // 自动通过偏移量 + width: 5, // 自动宽度 + manualControl: '#FFFF00', // 人工控制 + autoRoute: '#00FF00', // 自动进路 + autoTrigger: '#FFFF00', // 自动触发 + outConflict: '#C00808' // 出车冲突 + }, + delay: { + direction: false, // 延时解锁方向 + offset: { x: -5, y: 0}, // 延时解锁偏移量 + fontSize: 11, // 延迟解锁字体大小 + fontColor: '#C00808', // 延迟解锁颜色 + fontWeight: 'bold' // 字体粗细 + + }, + button: { + distance: 5, // 信号灯按钮距离区段的距离 + borderDashColor: '#FFFFFF', // 信号灯按钮边线 + buttonColor: 'darkgreen', // 信号灯按钮颜色 + buttonLightenColor: '#E4EF50' // 信号灯按钮闪烁颜色 + }, + lowButton:{ + display: false // 现地 信号机按钮 + }, + sigBack: { + fillColor:'rgba(0,0,0,0)', // 信号背景颜色 + strokecolor:'#F00', // 信号描边颜色 + lineWidth: 1, // 信号背景描边宽度 + distanceX: 2, // 信号背景x偏移距离 + distanceY: 1 // 信号背景Y偏移距离 + } + }; + + // 供电线路 + this[deviceType.Power] = { + noElectricStrokeColor:'#808080', // 无电颜色 + defaultStrokeColor: '#F00', // 线条颜色 + extendLength: 10 // 延伸长度 + }; + + // 延续保护计时 + this[deviceType.OverAp] = { + show: false + }; + + // 屏蔽门 + this[deviceType.Psd] = { + // 成都三号线屏蔽门 + elemnetType:['safetyDoorNormal'], + safetyDoorNormal: { // 屏蔽门 + z:0, + height: 3, // 站台屏蔽门高度 + distance: 8, // 站台和屏蔽门之间的距离 + defaultColor: '#00FF00', // 屏蔽门默认颜色 + splitDoorColor: '#C00808' // 屏蔽门切除颜色 + } + }; + + this[deviceType.StationStand] = { + // 成都三号线站台元素 站台 站台紧急关闭 扣车元素 停站时间 运行等级 跳停 + elemnetType:['solidStand', 'emergentRhombus', 'detainNormal', 'stopTime', 'level', 'jumpCircle'], + // 站台 + solidStand:{ + // 层级 + z:0, + spareColor: '#ffffff', // 站台空闲颜色 + jumpStopColor: '#808080', // 站台跳停颜色 + designatedJumpStopColor: '#808080', // 站台指定列车跳停颜色 + headFontSize: 10, // 站台首端字体大小 + stopColor: '#FFF000' // 站台列车停站颜色 + }, + // 站台紧急关闭 + emergentRhombus:{ + z:1, + flicker: true, // 闪烁 + mergentR: 5, // 站台紧急关闭半径 + mergentN: 4, // 站台紧急关闭边数 + insideOffset: { x: 0, y: -30 }, // 内站台紧急关闭偏移量 + outsideOffset: { x: 0, y: 30}, // 外站台紧急关闭偏移量 + closeColor: '#F61107' // 站台紧急关闭颜色 + }, + // 扣车元素 普通扣车 + detainNormal:{ + z:0, + position: -1, // 扣车标识在站台上显示方向 + text: '扣', // 扣车显示内容 + insideOffset: {x: -8, y: 20}, // 内站台扣车偏移量 + outsideOffset: {x: -8, y: 20}, // 外站台扣车偏移量 + centerTrainColor: '#C0C0C0', // 中心扣车颜色 + andCenterTrainColor: '#C0C0C0', // 车站+中心扣车颜色 + detainTrainTextColor: '#E4EF50', // 车站扣除文字颜色 + fontSize: 10, // 字体大小 + fontWeight: 'normal' + }, + // 停站时间 + stopTime:{ + z:1, + textFontSize: 10, // 停站时间字体大小 + textColor: '#FFFFFF', // 停站时间字体颜色 + position: -1, // 停站时间方向 + offset: {x: -8, y: 10} // 停站时间偏移量 + }, + // 运行等级 + level:{ + z:1, + textFontSize: 10, // 运行等级字体大小 + position: 1, // 运行等级方向 + offset: {x: -8, y: 15}, // 运行等级偏移量 + textColor: '#FFF000' // 停站等级字体颜色 + }, + // 跳停 + jumpCircle: { + z:1, + position: 1, // 停跳方向 + text: '跳', // 停跳显示内容 + offset: {x: -8, y: 10}, + textColor: '#00ffcc', // 停跳文字颜色 + arcColor: '#00ffcc', // 停跳圆圈颜色 + fillColor: 'rgba(0,0,0,0)', // 透明填充颜色 + r: 8, // 圆半径大小 + fontWeight: 'normal', // 文字居中 + fontSize: 11 // 文字大小 + }, + + common: { // 通用属性 + textFontSize: 10, // 站台默认字体大小 + functionButtonShow: '03' // 功能灯按钮显示条件(prdType) + }, + lamp: { + radiusR: 6, // 控制灯大小 + lampColor: '#5A5D5A' // 功能按钮颜色 + }, + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + } + // reentry: {}, // 站台折返策略 + // trainStop: {}, // 停车标志 + // trainDepart: {}, // 停车计时 + }; + + this[deviceType.StationCounter] = { + text: { + distance: 2, // 计数器名称和文字的距离 + fontColor: '#FFFFFF', // 计数器字体颜色 + borderColor: '#E4EF50' // 计数器边框颜色 + } + }; + + this[deviceType.StationDelayUnlock] = { + text: { + distance: 3, // 延迟解锁和设备之间的距离 + fontColor: '#FFFFFF', // 延时解锁字体颜色 + borderColor: '#FFFFFF' // 延迟解锁边框颜色 + } + }; + + this[deviceType.StationTurnBack] = { // 站后折返 + displayCondition: '01', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + lamp: { + fill: '#f1f1f1', // 填充色 + radiusR: 7 // 控制灯大小 + }, + text: { + titleTextShow: false, + fontWeight: 580, + fontSize: 10, + distance: 10 + }, + rect: { + fill: 'rgba(0,0,0,0)', + stroke: '#fff', + lineWidth: 0, + padding: 6 + } + }; + + this[deviceType.Station] = { + // 成都三号线车站元素 车站名称 + elemnetType:['stationText'], + stationText:{ + z:0, + fontWeight:'normal', // 字体粗细 + textPadding:[0, 0], // 字体边距 + borderColor:'', // 字体边框颜色 + textBorderWidth:0 // 字体边框宽度 + }, + + kmPostShow: false, // 公里标显示 + kilometerPosition: 'up', // 公里标朝向 + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#FFFF00', // 控制灯颜色 + guideColor: '#5A5D5A' // 引导总锁灯颜色 + }, + turnBack: { // 按图折返 + lamp: 1, // 灯数量 + lampSpace: 60 // 灯间距 + }, + StationControl:{ + text: { + distance: 2, // 灯和文字之间的距离 + fontSize: 11, // 字体大小 + fontFormat: 'consolas', // 字体格式 + fontColor: '#ffffff', // 字体颜色 + fontWeight: 'normal', // 字体粗细 + textAlign: 'middle', // 字体水平对齐 + textVerticalAlign: 'top' // 字体垂直对齐 + }, + lamp: { + count: 4, // 控制模式的个数 + offset: {x: 0, y: 0}, // 偏移量 + radiusR: 6, // 控制模式灯的半径 + distance: 46, // 控制模式之间灯之间的距离 + grayColor: '#7F7F7F', // 控制模式灰色 + greenColor: '#00FF00', // 控制模式绿色 + redColor: '#FF0000', // 控制模式红色 + yellowColor: '#FFFF00', // 控制模式黄色 + purpleColor:'#840084' // 控制模式紫色 + }, + emergencyControl: { // 紧急站控 + show: true, + offset: { x: 0, y: 0 }, + text: '紧急站控', + arrowShow: false, + grayColor: '#7F7F7F' + }, + centerControl: { // 中控 + show: true, + offset: { x: 0, y: 0 }, + text: '中控', + buttonShow: false, + arrowShow: false, + grayColor: '#7F7F7F' + }, + substationControl: { // 站控按钮 + show: true, + offset: { x: 0, y: 0 }, + text: '站控', + arrowShow: false, + grayColor: '#7F7F7F' + }, + interconnectedControl: { // 联锁控 + show: true, + offset: { x: 0, y: 0 }, + text: '联锁控', + arrowShow: false, + grayColor: '#7F7F7F' + } + } + }; + + this[deviceType.Switch] = { + text: { + show: true, // 道岔名称显示 + position: 0, // 区段名称位置 1 上面 -1 下面 0 对称 + offset: {x: 5, y: -10}, // 道岔名称与区段距离 + fontSize: 11, // 字体大小 + fontColor: '#fff', // 道岔名称颜色 + fontWeight: 'normal', // 字体粗细 + borderColor: '#FE0000', // 道岔边框颜色 + lossColor: '#C00808', // 道岔失去颜色 + locateColor: '#00FF00', // 道岔定位颜色 + inversionColor: '#FFFF00', // 道岔反位颜色 + monolockLocationColor: '#00FF00', // 道岔单锁'定位'颜色 (绿色) + monolockInversionColor: '#FFFF00', // 道岔单锁'反位'颜色 (黄色) + faultFlashing: false // 故障闪烁 + }, + sectionAction: { + flag: false, // 道岔 关联区段显示 + spareColor: '#5b5b5b' // 区段显示颜色 + }, + core: { + length: 6, // 道岔单边长度 + graphShow: true, // 图形显示 + graphInversionColor: '#FFFF00', // 反位颜色 + graphLocalColor: '#00FF00' // 定位颜色 + }, + jointImg: { // 道岔 A B C D四元素属性配置 + trapezoidLength: 8, // 直角梯形元素默认长度 + faultStatus: true, // 挤岔表示 + fork: true, // 挤岔专用(如有挤岔操作 变为true) + forKColor: 'red' // 挤岔颜色 配合挤岔专用 + }, + arcBlcok: { // 圆形封锁图形 + show: false, // 显示 + arcBorderColor: 'green', // 默认边框颜色 + locationColor: 'green', // 定位封锁颜色 + inversionColor: '#FFFF00' // 反位封锁颜色 + }, + rectLock: { // 矩形封锁框图形 + rectWidth: 18, // 矩形框 宽高 + rectBorderColor: '#fff', // 矩形边框颜色 + block: true, // 封锁显示 + blockColor: 'red', // 封锁颜色 + followName: true, // 位置跟随名称确定 + }, + arcBlcok: { // 圆形封锁图形 + show: true, // 显示 + shapeR: 10, + arcBorderColor: 'red', // 默认边框颜色 + locationColor: 'red', // 定位封锁颜色 + inversionColor: 'red' // 反位封锁颜色 + }, + }; + + this[deviceType.LcControl] = { + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#FFFF00' // 控制灯颜色 + } + }; + this[deviceType.PowerSupply] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00', // 控制灯颜色 + offColor: '#000', + strokeColor: '#fff' + } + }; + this[deviceType.Maintain] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + this[deviceType.NoOneReturn] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, + fontWeight: 'normal', + distance: 5 + }, + lamp: { + radiusR: 6, + controlColor: '#FFFFFF' + } + }; + this[deviceType.AtsControl] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00', // 控制灯颜色 + offColor: '#FF0000' + } + }; + this[deviceType.MaintenanceLamps] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#b5b3b3' // 控制灯颜色 + } + }; + this[deviceType.ZcCommunication] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + this[deviceType.ChainControl] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00', // 控制灯颜色 + offColor: '#ff0000' + } + }; + this[deviceType.IntersiteControl] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + this[deviceType.CenterCommunication] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + this[deviceType.LeuControl] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + this[deviceType.LocalControl] = { + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00', // 控制灯颜色 + offColor: '#ff0000' + } + }; + this[deviceType.ZcControl] = { + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#00FF00' // 控制灯颜色 + } + }; + + this[deviceType.LimitControl] = { + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + radiusR: 6, // 控制灯大小 + controlColor: '#ECE9D8' // 控制灯颜色 + } + }; + + this[deviceType.Line] = { + lineColor: '#FFFFFF' // 线条颜色 + }; + this[deviceType.Automactic] = { + // 是否显示 + visible: true, + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + subtitleText: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 17 // 等于副标题距离 + }, + lamp: { + lineDash: null, // 灯的包围框 + stroke: '#FFFFFF', // 框的颜色 + fill: 'rgba(0,0,0,0)', // 填充色 + radiusR: 6, // 控制灯大小 + controlColor: '#b5b3b3', // 控制灯颜色 (灰色) + lightColor: '#FFFF00' // 控制灯亮颜色 + } + }; + this[deviceType.AutomaticRoute] = { + // 是否显示 + displayCondition: '03', // 显示条件prdType 为01 + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + fill: 'rgba(0,0,0,0)', // 填充色 + radiusR: 6, // 控制灯大小 + controlColor: '#b5b3b3', // 控制灯颜色 (灰色) + lightColor: '#FFFF00' // 控制灯亮颜色 + } + }; + this[deviceType.AutoTurnBack] = { + // 是否显示 + visibleConditions: '03', + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + subtitleText: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 17 // 等于副标题距离 + }, + lamp: { + borderShow: false, // 是否显示边框 + lineDash: null, // 灯的包围框 + stroke: '#FFFFFF', // 框的颜色 + fill: 'rgba(0,0,0,0)', // 填充色 + radiusR: 6, // 控制灯大小 + controlColor: '#b5b3b3', // 控制灯颜色 (灰色) + lightUpColor: '#ffff00' // 点亮灯颜色 + }, + OutFrame: { + + } + }; + + /** 引导总锁 */ + this[deviceType.GuideLock] = { + // 是否显示 + displayCondition: '03', // 显示条件 (01所有模式下显示 02 行调显示 03现地显示) + text: { + fontSize: 11, // 字体大小 + fontWeight: 'normal', // 字体粗细 + distance: 5 // 灯跟文字距离 + }, + lamp: { + fill: 'rgba(0,0,0,0)', // 填充色 + radiusR: 6, // 控制灯大小 + controlColor: '#b5b3b3', // 控制灯颜色 (灰色) + lightUpColor: '#FF0000' // 点亮灯颜色 + } + }; + + this[deviceType.TrainWindow] = { + lineColor: '#4DD43F', // 车次窗颜色 + lineDash: null, // 车次窗虚线间隔 + lineWidth: 1, // 车次窗线宽 + trainWindowSmooth: 0, // 车次窗矩形圆滑程度 + show: true // 车次窗是否显示 + }; + this[deviceType.SplitStation] = { + lineLength: 15, // 箭头线长度 + lineWidth: 2, // 线宽 + height: 35, // 分隔整体高度 + strokeColor: '#00FF00', // 线颜色 + triangleFillColor: '#00FF00', // 三角填充颜色 + textFill: '#FFFFFF', // 文字颜色 + verticalDistance: 10, // 箭头三角垂直高度 + horizontalDistance: 7// 箭头三角水平高度 + }; + this[deviceType.Train] = { + trainBody: { + fontFamily: 'consolas', + trainBodyLineWidth: 1, // 车身line宽 + changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度 + specialTrainType: [ + { + type: '03', + serviceNumber: '---', + nameFormat: 'groupNumber:serviceNumber' + }, + { + type: '03', + nameFormat: 'serviceNumber:trainNumber' + } + ], // 特殊列车类型需设置显示格式 + lrPadding: 4, // 两边间隔 + upPadding: 4, // 上边距离 + trainBodyFillColor: '#000099', // 列车车身填充颜色 + trainNameFormat: 'serviceNumber:targetCode'// 列车显示格式 + }, + directionArrow: { + }, + soonerOrLater: { + level: 3, + trainBody: true, + earlyColor: '#00FF00', + lateColor: '#800000', + normalColor: '#FFF' + }, + hsda: { + lrPaddingHSDA: 3, // HSDA两边间隔 + upPaddingHSDA: 4, // HSDA上边距离 + trainHSDATextFontSize: 9, // 列车HDSA字号 + textHContent: '扣', // textH文本 + textSContent: '跳', // textS文本 + textDContent: '门', // textD文本 + textAContent: '警' // textA文本 + }, + trainNumber: { + targetCodePrefix: '000', // 目的地码前缀 + defaultTargetCode: 'DDD', // 默认目的地码 + trainTargetTextAlign: 'left', // 目的地码文字显示位置 + trainNumberOffset: { x: 24, y: 4}// 目的地码偏移量 + }, + trainServer: { + serviceNumberPrefix: '000', // 服务号(表号)前缀 + defaultServiceNumber: 'TTT', // 默认服务号(表号) + defaultServerNoColor: '#FFFFFF', // 默认服务号状态显示颜色 + trainServerOffset: { x: 4, y: 4} // 列车服务号偏移 + }, + trainTarget: { + tripNumberPrefix: '000', // 车次号前缀 + defaultTripNumber: 'DDD', // 默认车次号2 + trainTargetOffset: { x: 36, y: 4}, // 列车车次号偏移 + trainTargetTextAlign: 'right' // 车次号文字显示位置 + }, + trainTargetNumber: { + groupNumberPrefix: '000', // 车组号前缀 + defaultGroupNumber: 'EEE', // 默认车组号 + trainTargetNumberOffset: {x: -4, y: 4}// 车组号偏移量 + }, + trainHead: { + trainConntWidth: 3, // 列车竖杠的宽度 + trainHeadFillColor: '#000000', // 列车车头矩形填充颜色 + trainHeadRectHeight: 20, // 列车车头矩形高度 + directionStopType:'normal', // special 西安二号线 停车 列车方向图标不消失 normal 正常 + trainHeadHeight: 'trainBox', // 列车车头高度取决于trainBox高度 + trainHeadArrowWidth: 6, // 列车车头三角宽度 + trainHeadArrowOffsetX: 5 // 列车车头三角偏移 + }, + common: { + trainHeight: 20, // 列车高度 + trainHeadDistance: 4, // 列车和车头之间的间距 + trainWidth: 48, // 列车长度 + trainTextFontSize: 12, // 列车字号 + fontFamily: 'consolas', // 默认字体 族类 + haveTextHSDA: true, // 是否需创建textHSDA对象 + haveArrowText: true, // 是否需创建arrowText对象 + textOffset: 4, // 字体偏移(用以控制字体据车头的距离) + trainWidthMoreText: 8, // 计算列车长度时--列车长比text多出尺寸 + trainTip:true // 鼠标悬停列车状态信息框是否显示 + }, + trainStatusStyle: { + trainTypeStatus: [ + {type: '03', serviceNumberColor: '#FFF000', groupNumberColor: '#FFF000'}, + {type: '02', trainNumberColor: '#FFF000', groupNumberColor: '#FFF000'} + ], // 列车类型对应的识别号样式 + defaultDestinationColor: '#FFFFFF', // 默认目的地状态显示颜色 + destinationStatusSetText: 'trainWindowBorder', // 目的地状态设置的对应哪个颜色 + destinationStatus: [ + {status: '01', showColor: '#FFFFFF'}, + {status: '02', showColor: '#00FF00'}, + {status: '03', showColor: '#A0522D'} + ], // 目的地状态 01准点 02早点 03晚点 04头码车 + serverNoType: [ + {type: '01', showColor: '#FFFFFF'}, + {type: '02', showColor: '#FFF000'} + ], // 服务号状态类型 01显示服务号 计划车 02显示车组号: 头码车与人工车 + directionType: [ + { + type: 1, + lineLShow: false, + lineRShow: true, + arrowLShow: false, + arrowRShow: true + }, + { + type: 0, + lineLShow: true, + lineRShow: false, + arrowLShow: true, + arrowRShow: false + } + ], // 列车运行方向状态类型对应车头显示状态 1从左往右 0从右往左 + directionStopType: [ + { + type: 1, + lineLShow: false, + lineRShow: true + }, + { + type: 0, + lineLShow: true, + lineRShow: false + } + ], // 列车停止方向类型对应车头显示状态 1从左往右 0从右往左 + driveModeStatus: [ + { + status: 'AM', + trainLColor: '#FF8000', + trainRColor: '#FF8000' + }, + { + status: 'CM', + trainLColor: '#FFFF00', + trainRColor: '#FFFF00' + }, + { + status: 'RM', + trainLColor: '#C2C2C2', + trainRColor: '#C2C2C2' + }, + { + status: 'NRM', + trainLColor: '#FF0000', + trainRColor: '#FF0000' + } + ], // 列车运行模式对应车头颜色 ATO自动驾驶模式AM ATP监控下的人工驾驶模式CM 限制人工驾驶模式RM 非限制人工驾驶模式NRM + communicationStatus: [ + {status: 'CBTC', trainColor: '#000099'}, + {status: 'ITC', trainColor: '#747474'}, + {status: 'IL', trainColor: '#747474'} + ] // 设置通信状态 cbtc级别CBTC 点式通信ITC 联锁级IL + } + }; + this[deviceType.FloodGate] = {}; + this[deviceType.DirectionRod] = {}; + } +} + +export default new SkinCode(); diff --git a/src/jmapNew/config/skinCode/foshan_01.js b/src/jmapNew/config/skinCode/foshan_01.js index 3616fb85c..769efeaf3 100644 --- a/src/jmapNew/config/skinCode/foshan_01.js +++ b/src/jmapNew/config/skinCode/foshan_01.js @@ -470,7 +470,9 @@ class SkinCode extends defaultStyle { }, core: { length: 6, // 道岔单边长度 - graphShow: true // 图形显示 + graphShow: true, // 图形显示 + graphInversionColor: '#FFFF00', // 反位颜色 + graphLocalColor: '#00FF00' // 定位颜色 }, jointImg: { // 道岔 A B C D四元素属性配置 trapezoidLength: 8, // 直角梯形元素默认长度 diff --git a/src/jmapNew/config/skinCode/race_01.js b/src/jmapNew/config/skinCode/race_01.js index 5d9fedb1c..034037688 100644 --- a/src/jmapNew/config/skinCode/race_01.js +++ b/src/jmapNew/config/skinCode/race_01.js @@ -527,8 +527,10 @@ class SkinCode extends defaultStyle { spareColor: '#5b5b5b' // 区段显示颜色 }, core: { - length: 6, // 道岔单边长度 - graphShow: true // 图形显示 + length: 6, // 道岔单边长度 + graphShow: true, // 图形显示 + graphInversionColor: '#FFFF00', // 反位颜色 + graphLocalColor: '#00FF00' // 定位颜色 }, jointImg: { // 道岔 A B C D四元素属性配置 trapezoidLength: 8, // 直角梯形元素默认长度 @@ -537,7 +539,7 @@ class SkinCode extends defaultStyle { forKColor: 'red' // 挤岔颜色 配合挤岔专用 }, arcBlcok: { // 圆形封锁图形 - show: true, // 显示 + show: true, // 显示 shapeR: 15, arcBorderColor: 'green', // 默认边框颜色 locationColor: 'green', // 定位封锁颜色 diff --git a/src/jmapNew/constant/deviceRender.js b/src/jmapNew/constant/deviceRender.js index 7f006507b..3769d1c60 100644 --- a/src/jmapNew/constant/deviceRender.js +++ b/src/jmapNew/constant/deviceRender.js @@ -275,5 +275,9 @@ deviceRender[deviceType.Responder] = { _type: deviceType.Responder, zlevel: 1 }; - +/** 信号按钮 */ +deviceRender[deviceType.SignalButton] = { + _type: deviceType.SignalButton, + zlevel: 1 +}; export default deviceRender; diff --git a/src/jmapNew/constant/deviceType.js b/src/jmapNew/constant/deviceType.js index cb651c7f9..87929a7a5 100644 --- a/src/jmapNew/constant/deviceType.js +++ b/src/jmapNew/constant/deviceType.js @@ -48,7 +48,8 @@ const deviceType = { OverAp: 'OverAp', FloodGate: 'FloodGate', DirectionRod: 'DirectionRod', - Responder: 'Responder' + Responder: 'Responder', + SignalButton: 'SignalButton' }; export default deviceType; diff --git a/src/jmapNew/shape/Section/EBadShunt.js b/src/jmapNew/shape/Section/EBadShunt.js new file mode 100644 index 000000000..50880558f --- /dev/null +++ b/src/jmapNew/shape/Section/EBadShunt.js @@ -0,0 +1,196 @@ +import Group from 'zrender/src/container/Group'; +import BezierCurve from 'zrender/src/graphic/shape/BezierCurve'; +import Line from 'zrender/src/graphic/shape/Line'; +import JTriangle from '../../utils/JTriangle'; +import Vue from 'vue'; + +export default class EBadShunt extends Group { + constructor(model) { + super(); + this.model = model; + this.zlevel = model.zlevel; + this.z = model.z; + this.create(); + } + create() { + // 分路不良 + const model = this.model.modelData; + const style = this.model.style; + /** 创建区段*/ + if (model && model.points.length > 1) { + const traingle = new JTriangle(model.points[0], model.points[model.points.length - 1]); + let x = traingle.drictx * (style.Section.badShunt.distance) * traingle.getSinRate(); + let y = traingle.dricty * (style.Section.badShunt.distance) * traingle.getCosRate(); + if (x == Infinity) { x = 0; } + if (y == Infinity) { y = 0; } + // if (model.switch) { + // 上侧临时限速线 + const badShuntLeft = this.createLimit({ + position: [x, -y], + switch: model.switch, + code: model.code, + isSwitchSection: model.switchSection, + relSwitchCode: model.relSwitchCode, + isCurve: model.curve, // 是否曲线 + points: model.points + }); + // 下侧临时限速线 + const badShuntRight = this.createLimit({ + position: [-x, y], + switch: model.switch, + code: model.code, + isSwitchSection: model.switchSection, + relSwitchCode: model.relSwitchCode, + isCurve: model.curve, // 是否曲线 + points: model.points + }); + badShuntLeft.forEach(item => { + this.add(item); + }); + badShuntRight.forEach(item => { + this.add(item); + }); + // } + } + } + + createLimit(model) { + const style = this.model.style; + const dataList = []; + if (model.isCurve) { + const shape = {}; + for (let i = 1; i < (model.points.length - 1); i++) { + shape[`cpx${i}`] = model.points[i].x; + shape[`cpy${i}`] = model.points[i].y; + } + + shape[`x1`] = model.points[0].x; + shape[`y1`] = model.points[0].y; + shape[`x2`] = model.points[model.points.length - 1].x; + shape[`y2`] = model.points[model.points.length - 1].y; + + dataList.push(new BezierCurve({ + isLine: true, + zlevel: this.zlevel, + progressive: model.progressive, + z: this.z, + culling: true, + shape: shape, + position: model.position, + style: { + lineWidth: style.Section.badShunt.width, + stroke: style.Section.badShunt.lineColor, + fillOpacity: 0 + } + })); + } else { + const swPadding = style.Switch.core.length; // 定位和反位时区段距离岔芯的距离 + var switchWidth = style.Section.line.width + style.Section.line.beyondWidth; // 道岔宽度 + const beg = Object.assign({}, model.points[0]); + const end = Object.assign({}, model.points[model.points.length - 1]); + if (model.isSwitchSection && beg.y !== end.y) { + const swch = Vue.prototype.$jlmap.mapDevice[model.relSwitchCode]; // 获取道岔model 及状态数据 + + if (swch && swch.instance) { + const traingle = new JTriangle(swch.intersection, swch.skew); + if ((swch.intersection.x === beg.x) && (swch.intersection.y === beg.y) && !swch.normalPosition && swch.sectionCCode == model.code) { + beg.x = beg.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate(); + beg.y = beg.y + traingle.dricty * (swPadding + switchWidth); + } + + if ((swch.intersection.x === end.x) && (swch.intersection.y === end.y) && swch.normalPosition && swch.sectionCCode == model.code) { + end.x = end.x + traingle.drictx * (swPadding + switchWidth) * traingle.getCotRate(); + end.y = end.y + traingle.dricty * (swPadding + switchWidth); + } + } + } + if (model.points.length == 2) { + dataList.push(new Line({ + isLine: true, + zlevel: this.zlevel, + progressive: model.progressive, + z: this.z, + position: model.position, + shape: { + x1: beg.x, + y1: beg.y, + x2: end.x, + y2: end.y + }, + style: { + lineWidth: style.Section.badShunt.width, + stroke: style.Section.badShunt.lineColor + } + })); + } else { + dataList.push(new Line({ + isLine: true, + zlevel: this.zlevel, + progressive: model.progressive, + z: this.z, + position: model.position, + shape: { + x1: beg.x, + y1: beg.y, + x2: model.points[1].x, + y2: model.points[1].y + }, + style: { + lineWidth: style.Section.badShunt.width, + stroke: style.Section.badShunt.lineColor + } + })); + + for (let i = 1; i < (model.points.length - 2); i++) { + dataList.push(new Line({ + isLine: true, + zlevel: this.zlevel, + z: this.z, + progressive: model.progressive, + position: model.position, + shape: { + x1: model.points[i].x, + y1: model.points[i].y, + x2: model.points[i + 1].x, + y2: model.points[i + 1].y + }, + style: { + lineWidth: style.Section.badShunt.width, + stroke: style.Section.badShunt.lineColor + } + })); + } + + dataList.push(new Line({ + isLine: true, + zlevel: this.zlevel, + z: this.z, + position: model.position, + progressive: model.progressive, + shape: { + x1: model.points[model.points.length - 2].x, + y1: model.points[model.points.length - 2].y, + x2: end.x, + y2: end.y + }, + style: { + lineWidth: style.Section.badShunt.width, + stroke: style.Section.badShunt.lineColor + } + })); + } + } + return dataList; + } + + hide() { + this.eachChild((child) => { + child.hide(); + }); + } + show() { + this.eachChild((child) => { + child.show(); + }); + } +} diff --git a/src/jmapNew/shape/Section/ESeparator.js b/src/jmapNew/shape/Section/ESeparator.js index f3ed05416..48bb21b82 100644 --- a/src/jmapNew/shape/Section/ESeparator.js +++ b/src/jmapNew/shape/Section/ESeparator.js @@ -50,8 +50,16 @@ export default class ESeparator extends Group { drict: 1, // 方向 type:model.type // 区段类型 }); - this.add(this.lPartition); - this.add(this.rPartition); + if (this.lPartition.length > 0) { + this.lPartition.forEach(each=>{ + this.add(each); + }); + } + if (this.rPartition.length > 0) { + this.rPartition.forEach(each=>{ + this.add(each); + }); + } } } @@ -114,67 +122,74 @@ export default class ESeparator extends Group { return partition; } + createNormal(modelData) { + let partition; + const style = this.model.style; + let points = []; + let lineWidth = 0; + const tanRate = modelData.traingle.getSinRate(); + if (style.Section.separator.sepical && (modelData.type == '03' || modelData.type == '01') && tanRate != 0 && tanRate != 1) { + // debugger; + // // 转换坐标系计算 + // const dataDirection = modelData.traingle.getRotation() > 0 ? 1 : -1; + // points = [ + // [modelData.point.x - (style.Section.separator.halfHeight) * modelData.traingle.getCosRate(), + // modelData.point.y + dataDirection * (style.Section.separator.halfHeight) * modelData.traingle.getSinRate()], + // [modelData.point.x + (style.Section.separator.halfHeight) * modelData.traingle.getCosRate(), + // modelData.point.y - dataDirection * (style.Section.separator.halfHeight) * modelData.traingle.getSinRate()] + // ]; + // partition = this.createModel(modelData, points); + const direction = modelData.traingle.drictx * modelData.traingle.dricty > 0 ? 1 : -1; + const offset = style.Section.line.width / 2; + points = [ + [modelData.point.x + modelData.drict * modelData.traingle.getSinRate() * offset, + modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset], + // [modelData.point.x, modelData.point.y] + [modelData.point.x - modelData.drict * modelData.traingle.getSinRate() * offset * 2, + modelData.point.y + direction * modelData.drict * modelData.traingle.getCosRate() * offset * 2], + [modelData.point.x - modelData.drict * offset * 2.5 / modelData.traingle.getSinRate(), + modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset], + [modelData.point.x + modelData.drict * modelData.traingle.getSinRate() * offset, + modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset] + ]; + partition = new Polyline({ + zlevel: this.zlevel, + z: this.z, + shape: { + points: points + }, + style: { + lineWidth:1, + fill:this.style.Section.separator.color + } + }); + + } else { + points = [ + [modelData.point.x, modelData.point.y - (style.Section.separator.halfHeight)], + [modelData.point.x, modelData.point.y + (style.Section.separator.halfHeight)] + ]; + lineWidth = modelData.type == '02' ? style.Section.separator.logicWidth : style.Section.separator.width; + partition = this.createModel(modelData, points, lineWidth); + } + return partition; + } + setType(modelData) { const style = this.model.style; const type = modelData.sepType; if (modelData && style && modelData.traingle) { - let partition = null; + let partition = []; if (type === '01') { // 普通分割 - let points = []; - let lineWidth = 0; - const tanRate = modelData.traingle.getSinRate(); - if (style.Section.separator.sepical && (modelData.type == '03' || modelData.type == '01') && tanRate != 0 && tanRate != 1) { - // debugger; - // // 转换坐标系计算 - // const dataDirection = modelData.traingle.getRotation() > 0 ? 1 : -1; - // points = [ - // [modelData.point.x - (style.Section.separator.halfHeight) * modelData.traingle.getCosRate(), - // modelData.point.y + dataDirection * (style.Section.separator.halfHeight) * modelData.traingle.getSinRate()], - // [modelData.point.x + (style.Section.separator.halfHeight) * modelData.traingle.getCosRate(), - // modelData.point.y - dataDirection * (style.Section.separator.halfHeight) * modelData.traingle.getSinRate()] - // ]; - // partition = this.createModel(modelData, points); - const direction = modelData.traingle.drictx * modelData.traingle.dricty > 0 ? 1 : -1; - const offset = style.Section.line.width / 2; - points = [ - [modelData.point.x + modelData.drict * modelData.traingle.getSinRate() * offset, - modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset], - // [modelData.point.x, modelData.point.y] - [modelData.point.x - modelData.drict * modelData.traingle.getSinRate() * offset * 2, - modelData.point.y + direction * modelData.drict * modelData.traingle.getCosRate() * offset * 2], - [modelData.point.x - modelData.drict * offset * 2.5 / modelData.traingle.getSinRate(), - modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset], - [modelData.point.x + modelData.drict * modelData.traingle.getSinRate() * offset, - modelData.point.y - direction * modelData.drict * modelData.traingle.getCosRate() * offset] - ]; - partition = new Polyline({ - zlevel: this.zlevel, - z: this.z, - shape: { - points: points - }, - style: { - lineWidth:1, - fill:this.style.Section.separator.color - } - }); - - } else { - points = [ - [modelData.point.x, modelData.point.y - (style.Section.separator.halfHeight)], - [modelData.point.x, modelData.point.y + (style.Section.separator.halfHeight)] - ]; - lineWidth = modelData.type == '02' ? style.Section.separator.logicWidth : style.Section.separator.width; - partition = this.createModel(modelData, points, lineWidth); - } + partition = [this.createNormal(modelData)]; } else if (type === '02') { // 单侧分割符 const points = [ [modelData.point.x + modelData.drict * (style.Section.separator.halfHeight), modelData.point.y - (style.Section.separator.halfHeight * 1.5)], [modelData.point.x, modelData.point.y - (style.Section.separator.halfHeight * 1.5)], [modelData.point.x, modelData.point.y + (style.Section.separator.halfHeight * 1.5)] ]; - partition = this.createModel(modelData, points); + partition = [this.createModel(modelData, points)]; } else if (type === '03') { // 尽头分隔符 let points = []; if (style.Section.separator.isLikeT) { @@ -194,11 +209,15 @@ export default class ESeparator extends Group { } const lineWidth = style.Section.separator.endWidth; const stroke = style.Section.separator.endColor; - partition = this.createModel(modelData, points, lineWidth, stroke); + partition = [this.createModel(modelData, points, lineWidth, stroke)]; } else if (type === '04') { // 侵限分隔符 - partition = this.createCircle(modelData); + if (this.style.Section.separator.invadeSpecial) { + partition = [this.createNormal(modelData), this.createCircle(modelData)]; + } else { + partition = [this.createCircle(modelData)]; + } } else if (type === '05') { // 特色分隔符 - partition = this.createCircleArc(modelData); + partition = [this.createCircleArc(modelData)]; } return partition; } diff --git a/src/jmapNew/shape/Section/index.js b/src/jmapNew/shape/Section/index.js index c1723fc06..b65457a35 100644 --- a/src/jmapNew/shape/Section/index.js +++ b/src/jmapNew/shape/Section/index.js @@ -12,6 +12,7 @@ import ELimitName from './ELimitName'; // 成都三号线 限速名称 // import JTriangle from '../../utils/JTriangle'; import { drawSectionStyle } from '../../config/defaultStyle'; import EStopRouteImg from './EStopRouteImg'; +import EBadShunt from './EBadShunt'; import store from '@/store/index'; /** 区段*/ @@ -61,7 +62,8 @@ export default class Section extends Group { 'separator': ESeparator, // 分隔符 'speedLimit': ELimitLines, // 限速线 'speedLimitName': ELimitName, // 限速线名称 - 'shuttleBack': EBackArrowGroup // 折返箭头 (成都三号线显示) + 'shuttleBack': EBackArrowGroup, // 折返箭头 (成都三号线显示) + 'badShunt':EBadShunt // 大铁项目 分路不良 }; // 遍历当前线路下的绘图元素 const model = this.model; @@ -105,6 +107,7 @@ export default class Section extends Group { this.name && this.name.recover(); this.speedLimit && this.speedLimit.hide(); this.speedLimitName && this.speedLimitName.hide(); + this.badShunt && this.badShunt.hide(); this.axle && this.axle.setStyle({ stroke: this.style.Section.line.spareColor, @@ -433,9 +436,16 @@ export default class Section extends Group { sectionSwitch.instance && sectionSwitch.instance.setLimitState(model.speedUpLimit > 0, model.speedUpLimit); } } + // 分路不良 + model.badShunt && this.badShuntStatus(); } } + // 分路不良 + badShuntStatus() { + this.badShunt && this.badShunt.show(); + } + /** 计算提示位置*/ getShapeTipPoint() { const rect = this.getBoundingRect(); diff --git a/src/jmapNew/shape/SignalButton/index.js b/src/jmapNew/shape/SignalButton/index.js new file mode 100644 index 000000000..52d3afb48 --- /dev/null +++ b/src/jmapNew/shape/SignalButton/index.js @@ -0,0 +1,121 @@ +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'; + +export default class SignalButton extends Group { + constructor(model, {style}) { + super(); + this._code = model.code; + this._type = model._type; + this.zlevel = model.zlevel; + this.z = 0; + this.model = model; + this.style = style.Line; + this.isShowShape = true; + this.create(); + this.setState(model); + this.setShowMode(); + } + + create() { + const model = this.model; + let fillColor = '#008000'; + if (model.type === 'GUIDE') { + fillColor = '#5050E1'; + } else if (model.type === 'FLEXIBLE' || model.type === 'SHUNT_TERMINAL') { + fillColor = '#808080'; + } + this.rectButton = new Rect({ + zlevel: this.zlevel, + z: this.z, + silent: true, + shape: { + x: model.position.x, + y: model.position.y, + width: 14, + height: 14 + }, + style: { + lineDash: null, + stroke: '#808080', + fill: fillColor + } + }); + this.leftLine = new Line({ + zlevel: this.zlevel, + z: this.z + 1, + shape: { + x1: model.position.x, + y1: model.position.y, + x2: model.position.x + 14, + y2: model.position.y + 14 + }, + style: { + lineWidth: 2, + stroke: '#ff0000' + } + }); + this.add(this.leftLine); + this.leftLine.hide(); + this.rightLine = new Line({ + zlevel: this.zlevel, + z: this.z + 1, + shape: { + x1: model.position.x + 14, + y1: model.position.y, + x2: model.position.x, + y2: model.position.y + 14 + }, + style: { + lineWidth: 2, + stroke: '#ff0000' + } + }); + this.add(this.rightLine); + this.rightLine.hide(); + this.buttonText = new Text({ + zlevel: this.zlevel, + z: this.z, + style: { + x: model.position.x + 7, + y: model.position.y - 20, + fontWeight: '400', + fontSize: 12, + fontFamily: '', + text: model.name, + textFill: '#C0C0C0', + textAlign: 'middle', + textVerticalAlign: 'top' + } + }); + this.add(this.rectButton); + this.add(this.buttonText); + } + startAnimate() { + let color = '#008000'; + if (this.model.type === 'TRAIN_TERMINAL') { + color = '#008000'; + } else if (this.model.type === 'FLEXIBLE' || this.model.type === 'SHUNT_TERMINAL') { + color = '#808080'; + } + this.rectButton && this.rectButton.animateStyle(true) + .when(0, { fill: '#000' }) + .when(1000, { fill: color }) + .when(2000, { fill: '#000' }) + .start(); + } + stopAnimation() { + this.rectButton && this.rectButton.stopAnimation(true); + } + setState(model) { + if (!this.isShowShape) return; + } + // 设置显示模式 + setShowMode() { + } + setShowStation(stationCode) { + } + getAnchorPoint() { + } +} diff --git a/src/jmapNew/shape/Switch/index.js b/src/jmapNew/shape/Switch/index.js index 3e31c0b3b..e1370ce0a 100644 --- a/src/jmapNew/shape/Switch/index.js +++ b/src/jmapNew/shape/Switch/index.js @@ -230,11 +230,22 @@ export default class Switch extends Group { offsetX = directx * this.style.Switch.rectLock.offset.x; offsetY = directy * this.style.Switch.rectLock.offset.y; } + let x = this.model.intersection.x - this.style.Switch.rectLock.rectWidth / 2 + offsetX; + let y = this.model.intersection.y - this.style.Switch.rectLock.rectWidth / 2 + offsetY; + if (this.style.Switch.rectLock.followName) { + const directx = this.triangle.drictx; + const rect = this.name.getBoundingRect(); + const wLen = this.style.Switch.rectLock.rectWidth - (directx > 0? rect.width: rect.width/2); + const hLen = this.style.Switch.rectLock.rectWidth - rect.height + x = rect.x - wLen/2; + y = rect.y - hLen/2 + } + this.lockRect = new ELockRect({ // 单锁矩形框 zlevel: this.zlevel, z: this.z + 6, - x: this.model.intersection.x - this.style.Switch.rectLock.rectWidth / 2 + offsetX, - y: this.model.intersection.y - this.style.Switch.rectLock.rectWidth / 2 + offsetY, + x, + y, width: this.style.Switch.rectLock.rectWidth, lineWidth: 1.8, stroke: this.style.Switch.rectLock.rectBorderColor, @@ -314,8 +325,9 @@ export default class Switch extends Group { /** 恢复状态*/ recover() { - this.lockRect.hide(); // 矩形包围框 - this.lockArc.hide(); // 圆形单锁框 + this.lockRect && this.lockRect.hide(); // 矩形包围框 + this.lockCircle && this.lockCircle.hide(); // 圆形包围框 + this.lockArc && this.lockArc.hide(); // 圆形单锁框 this.name.getNameText().stopAnimation(false); this.shapeModelC.hide(); // 形状 C this.shapeModelA.hide(); // 形状 A @@ -344,7 +356,7 @@ export default class Switch extends Group { } if (this.style.Switch.core.graphShow) { // 佛山线路显示 this.shapeModelB.show(); - this.shapeModelB.setColor('#00FF00'); + this.shapeModelB.setColor(this.style.Switch.core.graphLocalColor); this.shapeModelC.show(); this.shapeModelC.setColor(this.style.backgroundColor); } @@ -364,7 +376,7 @@ export default class Switch extends Group { this.shapeModelA.setColor(this.style.Section.line.spareColor); if (this.style.Switch.core.graphShow) { // 佛山线路显示 this.shapeModelC.show(); - this.shapeModelC.setColor('#FFFF00'); + this.shapeModelC.setColor(this.style.Switch.core.graphInversionColor); this.shapeModelC.attr({ z: this.z + 6 }); @@ -474,16 +486,20 @@ export default class Switch extends Group { /** 单锁*/ setMonolock(normalPosition, reversePosition) { - if (this.style.Switch.rectLock.monolock) { // 判断单锁矩形是否显示 + if (this.style.Switch.rectLock && + this.style.Switch.rectLock.monolock) { // 判断单锁矩形是否显示 this.lockRect.show(); if (this.style.Switch.rectLock.rectBorderFillColor) { // 西安二号线 专用显示 this.lockRect.setStyle({ stroke: this.style.Switch.rectLock.rectBorderColor, fill: this.style.Switch.rectLock.rectBorderFillColor }); } } - if (this.style.Switch.text.monolock) { // 单锁显示名称包围框 + + if (this.style.Switch.text && + this.style.Switch.text.monolock) { // 单锁显示名称包围框 this.setHasTextBorder(1); } - if (this.style.Switch.arcBlcok.show) { // 圆形单锁是否显示 + if (this.style.Switch.arcBlcok && + this.style.Switch.arcBlcok.show) { // 圆形单锁是否显示 this.lockArc.show(); if (normalPosition) { this.lockArc.setStyle({ stroke: this.style.Switch.arcBlcok.locationColor }); @@ -545,6 +561,7 @@ export default class Switch extends Group { this.lockRect.setStyle({ stroke: this.style.Switch.rectLock.blockColor, fill: this.style.Switch.rectLock.blockFillColor }); } } + // if (this.style.Switch.coverBlock && this.style.Switch.coverBlock.show) { // this.shapeBlockCover.show(); // this.shapeBlockCover.setColor(this.style.Switch.coverBlock.coverBlockColor); diff --git a/src/jmapNew/shape/factory.js b/src/jmapNew/shape/factory.js index 0b9b8c075..f3aba1679 100644 --- a/src/jmapNew/shape/factory.js +++ b/src/jmapNew/shape/factory.js @@ -30,6 +30,7 @@ import OverAp from './OverAp/index.js'; import FloodGate from './FloodGate/index'; import DirectionRod from './DirectionRod/index'; import Responder from './Responder/index'; +import SignalButton from './SignalButton/index'; /** 图库*/ const mapShape = {}; @@ -81,6 +82,7 @@ mapShape[deviceType.OverAp] = OverAp; mapShape[deviceType.FloodGate] = FloodGate; mapShape[deviceType.DirectionRod] = DirectionRod; mapShape[deviceType.Responder] = Responder; +mapShape[deviceType.SignalButton] = SignalButton; function shapefactory(device, jmap) { const type = device._type; diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControl.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControl.vue new file mode 100644 index 000000000..d298f8bc1 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControl.vue @@ -0,0 +1,141 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControlSpeed.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControlSpeed.vue new file mode 100644 index 000000000..d49556383 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmControlSpeed.vue @@ -0,0 +1,156 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTip.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTip.vue new file mode 100644 index 000000000..6852074ca --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTip.vue @@ -0,0 +1,74 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTrain.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTrain.vue new file mode 100644 index 000000000..494347b75 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/confirmTrain.vue @@ -0,0 +1,173 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/passwordInputBox.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/passwordInputBox.vue new file mode 100644 index 000000000..5d5a948dc --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/passwordInputBox.vue @@ -0,0 +1,194 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/childDialog/popupAlarm.vue b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/popupAlarm.vue new file mode 100644 index 000000000..b6b925622 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/childDialog/popupAlarm.vue @@ -0,0 +1,94 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/routeDetail.vue b/src/jmapNew/theme/datie_01/menus/dialog/routeDetail.vue new file mode 100644 index 000000000..b7211c025 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/routeDetail.vue @@ -0,0 +1,196 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/routeGuide.vue b/src/jmapNew/theme/datie_01/menus/dialog/routeGuide.vue new file mode 100644 index 000000000..11cba9131 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/routeGuide.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/routeHandControl.vue b/src/jmapNew/theme/datie_01/menus/dialog/routeHandControl.vue new file mode 100644 index 000000000..69ce0d572 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/routeHandControl.vue @@ -0,0 +1,267 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/routeSelection.vue b/src/jmapNew/theme/datie_01/menus/dialog/routeSelection.vue new file mode 100644 index 000000000..12014afb3 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/routeSelection.vue @@ -0,0 +1,325 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/sectionDetail.vue b/src/jmapNew/theme/datie_01/menus/dialog/sectionDetail.vue new file mode 100644 index 000000000..7e6a03371 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/sectionDetail.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/standControl.vue b/src/jmapNew/theme/datie_01/menus/dialog/standControl.vue new file mode 100644 index 000000000..c6c29c830 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/standControl.vue @@ -0,0 +1,603 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/standDetail.vue b/src/jmapNew/theme/datie_01/menus/dialog/standDetail.vue new file mode 100644 index 000000000..70afc5455 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/standDetail.vue @@ -0,0 +1,223 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainControl.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainControl.vue new file mode 100644 index 000000000..738d9509e --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainControl.vue @@ -0,0 +1,332 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainCreate.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainCreate.vue new file mode 100644 index 000000000..59f7935b6 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainCreate.vue @@ -0,0 +1,133 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainCreateNumber.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainCreateNumber.vue new file mode 100644 index 000000000..e56f2f80d --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainCreateNumber.vue @@ -0,0 +1,181 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainDelete.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainDelete.vue new file mode 100644 index 000000000..895d6024c --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainDelete.vue @@ -0,0 +1,150 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainDeleteNumber.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainDeleteNumber.vue new file mode 100644 index 000000000..210e2dc87 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainDeleteNumber.vue @@ -0,0 +1,176 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainDetailInfo.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainDetailInfo.vue new file mode 100644 index 000000000..907727139 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainDetailInfo.vue @@ -0,0 +1,378 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainEditNumber.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainEditNumber.vue new file mode 100644 index 000000000..570e22144 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainEditNumber.vue @@ -0,0 +1,174 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainMove.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainMove.vue new file mode 100644 index 000000000..82c84dc13 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainMove.vue @@ -0,0 +1,200 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainMoveNumber.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainMoveNumber.vue new file mode 100644 index 000000000..7e7635d23 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainMoveNumber.vue @@ -0,0 +1,193 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/dialog/trainSwitch.vue b/src/jmapNew/theme/datie_01/menus/dialog/trainSwitch.vue new file mode 100644 index 000000000..583e53d8e --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/dialog/trainSwitch.vue @@ -0,0 +1,209 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/index.vue b/src/jmapNew/theme/datie_01/menus/index.vue new file mode 100644 index 000000000..e83faddc5 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/index.vue @@ -0,0 +1,364 @@ + + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuBar.vue b/src/jmapNew/theme/datie_01/menus/menuBar.vue new file mode 100644 index 000000000..e7be252ef --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuBar.vue @@ -0,0 +1,685 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuButton.vue b/src/jmapNew/theme/datie_01/menus/menuButton.vue new file mode 100644 index 000000000..71a930450 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuButton.vue @@ -0,0 +1,778 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/twoConfirmation.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/twoConfirmation.vue new file mode 100644 index 000000000..c1f7b93a3 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/twoConfirmation.vue @@ -0,0 +1,133 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userAdd.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userAdd.vue new file mode 100644 index 000000000..6c98c5a53 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userAdd.vue @@ -0,0 +1,157 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userDelete.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userDelete.vue new file mode 100644 index 000000000..e64aa49f3 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userDelete.vue @@ -0,0 +1,129 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userEdit.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userEdit.vue new file mode 100644 index 000000000..b03165a1b --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/childDialog/userEdit.vue @@ -0,0 +1,173 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/helpAbout.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/helpAbout.vue new file mode 100644 index 000000000..4dc26a4ce --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/helpAbout.vue @@ -0,0 +1,126 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/limitSpeed.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/limitSpeed.vue new file mode 100644 index 000000000..e416e68e0 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/limitSpeed.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/manageUser.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/manageUser.vue new file mode 100644 index 000000000..deef68f43 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/manageUser.vue @@ -0,0 +1,285 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/passwordBox.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/passwordBox.vue new file mode 100644 index 000000000..69fa03d70 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/passwordBox.vue @@ -0,0 +1,221 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/setLimitSpeed.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/setLimitSpeed.vue new file mode 100644 index 000000000..dfb5821b3 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/setLimitSpeed.vue @@ -0,0 +1,286 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/stationControlConvert.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/stationControlConvert.vue new file mode 100644 index 000000000..046b66327 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/stationControlConvert.vue @@ -0,0 +1,433 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/trainAdd.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/trainAdd.vue new file mode 100644 index 000000000..fba049a10 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/trainAdd.vue @@ -0,0 +1,168 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/trainDelete.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/trainDelete.vue new file mode 100644 index 000000000..b1139915a --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/trainDelete.vue @@ -0,0 +1,151 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/trainTranstalet.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/trainTranstalet.vue new file mode 100644 index 000000000..97918ae44 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/trainTranstalet.vue @@ -0,0 +1,158 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuDialog/viewName.vue b/src/jmapNew/theme/datie_01/menus/menuDialog/viewName.vue new file mode 100644 index 000000000..4a32473d5 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuDialog/viewName.vue @@ -0,0 +1,256 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuSection.vue b/src/jmapNew/theme/datie_01/menus/menuSection.vue new file mode 100644 index 000000000..e4babd785 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuSection.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuSignal.vue b/src/jmapNew/theme/datie_01/menus/menuSignal.vue new file mode 100644 index 000000000..9e40ee29b --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuSignal.vue @@ -0,0 +1,350 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuStation.vue b/src/jmapNew/theme/datie_01/menus/menuStation.vue new file mode 100644 index 000000000..706bc5730 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuStation.vue @@ -0,0 +1,130 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuStationStand.vue b/src/jmapNew/theme/datie_01/menus/menuStationStand.vue new file mode 100644 index 000000000..32e96bc2f --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuStationStand.vue @@ -0,0 +1,220 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuSwitch.vue b/src/jmapNew/theme/datie_01/menus/menuSwitch.vue new file mode 100644 index 000000000..eb8ca985c --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuSwitch.vue @@ -0,0 +1,258 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuTool.vue b/src/jmapNew/theme/datie_01/menus/menuTool.vue new file mode 100644 index 000000000..95bc382b2 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuTool.vue @@ -0,0 +1,211 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/menuTrain.vue b/src/jmapNew/theme/datie_01/menus/menuTrain.vue new file mode 100644 index 000000000..4c830c621 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/menuTrain.vue @@ -0,0 +1,422 @@ + + + diff --git a/src/jmapNew/theme/datie_01/menus/passiveDialog/alarm.vue b/src/jmapNew/theme/datie_01/menus/passiveDialog/alarm.vue new file mode 100644 index 000000000..afbff9ddc --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/passiveDialog/alarm.vue @@ -0,0 +1,216 @@ + + + + diff --git a/src/jmapNew/theme/datie_01/menus/passiveDialog/timeout.vue b/src/jmapNew/theme/datie_01/menus/passiveDialog/timeout.vue new file mode 100644 index 000000000..e4ef062a6 --- /dev/null +++ b/src/jmapNew/theme/datie_01/menus/passiveDialog/timeout.vue @@ -0,0 +1,109 @@ + + + diff --git a/src/jmapNew/theme/datie_01/model.js b/src/jmapNew/theme/datie_01/model.js new file mode 100644 index 000000000..c7d80a99e --- /dev/null +++ b/src/jmapNew/theme/datie_01/model.js @@ -0,0 +1,71 @@ +import deviceType from '../../constant/deviceType'; + +class Model { + constructor() { + this.screenLine = 3; + // 公共字段部分默认初始值 + this['public'] = {}; + this['public'][deviceType.Signal] = { + lampPositionType: '02', + lampPostType: '02' + }; + + // 私有字段部分默认初始值 + this['private'] = {}; + this['private'][deviceType.StationControl] = { + indicatorShow: true // 标识灯名称显示 + }; + this['private'][deviceType.Station] = { + kmPostShow: true // 公里标显示 + }; + this['private'][deviceType.Switch] = { + nameShow: true + }; + this['private'][deviceType.Section] = { + nameShow: true, + borderBorderShow: true, // 区段边界显示 + destinationNameShow: true, // 目的地码名称显示 + standTrackNameShow: true, // 站台轨名称显示 + reentryTrackNameShow: true, // 折返轨名称显示 + transferTrackNameShow: true // 转换轨名称显示 + }; + this['private'][deviceType.Signal] = { + nameShow: true, // 信号机名称显示 + linkageAutoRouteShow: true, // 联锁自动进路表示灯显示 + atsAutoTriggerShow: true // ATS自动触发表示灯显示 + }; + this['private'][deviceType.Train] = { + }; + this['private'][deviceType.TrainWindow] = { + trainWindowShow: true + }; + } + + initPublicProps(model) { + if (model) { + var modelInitial = this.public[model._type]; + if (modelInitial) { + for (var prop in modelInitial) { + model[prop] = modelInitial[prop]; + } + } + } + + return model; + } + + initPrivateProps(model) { + if (model) { + var modelInitial = this.private[model._type]; + if (modelInitial) { + for (var prop in modelInitial) { + model[prop] = modelInitial[prop]; + } + } + } + + return model; + } +} + +export default new Model(); diff --git a/src/jmapNew/theme/datie_01/operationConfig.js b/src/jmapNew/theme/datie_01/operationConfig.js new file mode 100644 index 000000000..1a6e6e84d --- /dev/null +++ b/src/jmapNew/theme/datie_01/operationConfig.js @@ -0,0 +1,945 @@ +// SECTION 区段 +// SWITCH 道岔 +// SIGNAL 信号机 +// START_SIGNAL 进路起始信号机 +// END_SIGNAL 进路终端信号机 + +// STATION 车站 +// STAND 站台 +// ROUTE 进路 +// CYCLE 自动折返 + +// {id: "1", trainingType: "ControlConvertMenu", name: "车站名称"} +// {id: "2", trainingType: "ControlConvertMenu", name: "车站控制模式编号"} +// {id: "3", trainingType: "Signal", name: "进路名称"} +// {id: "4", trainingType: "Signal", name: "进路编号"} +// {id: "5", trainingType: "Signal", name: "信号机名称"} +// {id: "6", trainingType: "Signal", name: "信号机编号"} + +// {id: "7", trainingType: "Switch", name: "道岔名称"} + +// {id: "8", trainingType: "Section", name: "物理区段名称"} +// {id: "9", trainingType: "Section", name: "逻辑区段名称"} + +// {id: "10", trainingType: "Stand", name: "车站名称"} +// {id: "11", trainingType: "Stand", name: "站台行驶方向编号"} +// {id: "12", trainingType: "Stand", name: "站台行驶方向"} +// {id: "13", trainingType: "Stand", name: "站台行驶方向编号(反)"} +// {id: "14", trainingType: "Stand", name: "站台行驶方向(反)"} +// {id: "29", trainingType: "Stand", name: "站台名称"} +// {id: "30", trainingType: "Stand", name: "站台编码"} + +// {id: "15", trainingType: "Switch", name: "道岔位置"} +// {id: "16", trainingType: "Switch", name: "道岔位置(反)"} +// {id: "17", trainingType: "Switch", name: "道岔编码"} + +// {id: "18", trainingType: "Section", name: "逻辑区段编码"} +// {id: "19", trainingType: "Section", name: "区段编号"} +// {id: "20", trainingType: "Section", name: "车站名称"} + +// {id: "21", trainingType: "Switch", name: "车站名称"} +// {id: "22", trainingType: "Section", name: "车站编号"} +// {id: "23", trainingType: "Switch", name: "车站编号"} +// {id: "24", trainingType: "Switch", name: "道岔计轴区段编号"} +// {id: "25", trainingType: "Switch", name: "道岔计轴区段名称"} + +import CMD from '@/scripts/cmdPlugin/CommandEnum'; +export default { + list: [ + // 控制模式 + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL.value, + skinCode: '04', + trainingName: '请求站控({2})', + trainingRemark: '请求站控功能', + trainingType: 'ControlConvertMenu', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【站控】', codeType:'STATION', subType:'substation' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL.value, + skinCode: '04', + trainingName: '请求紧急站控({2})', + trainingRemark: '请求紧急站控功能', + trainingType: 'ControlConvertMenu', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【紧急站控】', codeType:'STATION', subType:'emergency' }, + { deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL.value, + skinCode: '04', + trainingName: '请求中控({2})', + trainingRemark: '请求中控功能', + trainingType: 'ControlConvertMenu', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【中控】', codeType:'STATION', subType:'center' }, + { deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.ControlConvertMenu.CMD_CM_INTERLOCK_CONTROL.value, + skinCode: '04', + trainingName: '请求联锁控({2})', + trainingRemark: '请求联锁控功能', + trainingType: 'ControlConvertMenu', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【联锁控】', codeType:'STATION', subType:'interconnected' }, + { deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' } + ] + }, + // 信号机列表 + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value, + skinCode: '04', + trainingName: '办理进路({3} 进路)', + trainingRemark: '办理进路功能', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【办理进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 3, operateCode: '3012', tip: '鼠标左键点击【执行】按钮' }, + { deviceType: '04', orderNum: 4, operateCode: '301', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value, + skinCode: '04', + trainingName: '办理进路({3} 进路)', + trainingRemark: '办理进路功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' }, + { deviceType: '04', orderNum: 3, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'END_SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value, + skinCode: '04', + trainingName: '办理引导进路({3})', + trainingRemark: '进路办理信号引导', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '308', tip: '鼠标右键菜单选择【办理引导进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '308', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3086', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 4, operateCode: '3082', tip: '鼠标左键点击【执行】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value, + skinCode: '04', + trainingName: '引导进路({3})[进路已锁闭]', + trainingRemark: '进路办理信号引导', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3080', tip: '鼠标左键点击【引导进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '3080', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL'}, // 进路编号值不正确 + { deviceType: 'mbm', orderNum: 3, operateCode: '0011', tip: '输入密码123,点击【确定】按钮', codeType: 'START_SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value, + skinCode: '04', + trainingName: '取消进路({3} 进路)', + trainingRemark: '取消进路功能', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【取消进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value, + skinCode: '04', + trainingName: '取消进路({3} 进路)', + trainingRemark: '取消进路功能(总取消)', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CANCEL_GUIDE.value, + skinCode: '04', + trainingName: '取消引导({3})', + trainingRemark: '取消引导进路功能(总取消)', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value, + skinCode: '04', + trainingName: '总人解({3})', + trainingRemark: '总人解', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '305', tip: '鼠标右键菜单选择【总人解】' }, + { deviceType: '04', orderNum: 2, operateCode: '3050', tip: '输入密码123,点击【执行】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '305', tip: '鼠标左键点击【确定】按钮' }, + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value, + skinCode: '04', + trainingName: '总人解({3})', + trainingRemark: '总人解', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3050', tip: '鼠标左键点击【总人解】' }, + { deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '3050', tip: '鼠标左键点击【{5}】', val: '{6}', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value, + skinCode: '04', + trainingName: '信号重开({5})', + trainingRemark: '信号重开功能', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' }, + { deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 8, + minDuration: 5, + operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value, + skinCode: '04', + trainingName: '信号重开({5})', + trainingRemark: '信号重开功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' }, + { deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value, + skinCode: '04', + trainingName: '信号封锁({5})', + trainingRemark: '信号封锁', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '306', tip: '鼠标右键菜单选择【信号封锁】' }, + { deviceType: '04', orderNum: 2, operateCode: '306', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value, + skinCode: '04', + trainingName: '信号封锁({5})', + trainingRemark: '信号封锁功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【封锁】' }, + { deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value, + skinCode: '04', + trainingName: '信号解封({5})', + trainingRemark: '信号解封', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '307', tip: '鼠标右键菜单选择【信号解封】' }, + { deviceType: '04', orderNum: 2, operateCode: '3072', tip: '鼠标左键点击【确认】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '307', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value, + skinCode: '04', + trainingName: '信号解封({5})', + trainingRemark: '信号解封功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2992', tip: '鼠标左键点击【解封】' }, + { deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value, + skinCode: '04', + trainingName: '进路收人工控({3})', + trainingRemark: '进路收人工控', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '314', tip: '鼠标右键菜单选择【进路收人工控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3141', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 3, operateCode: '314', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value, + skinCode: '04', + trainingName: '人工控({5})', + trainingRemark: '人工控', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3140', tip: '鼠标左键点击【人工控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3140', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ], + // 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置 + config:{onlySignalOP:true} + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value, + skinCode: '04', + trainingName: '进路交自动控({3})', + trainingRemark: '进路交自动控', + trainingType: 'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '315', tip: '鼠标右键菜单选择【进路交自动控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3151', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' }, + { deviceType: '04', orderNum: 3, operateCode: '315', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value, + skinCode: '04', + trainingName: '自动控({5})', + trainingRemark: '自动控', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '3150', tip: '鼠标左键点击【自动控】' }, + { deviceType: '04', orderNum: 2, operateCode: '3150', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } + ], + config:{onlySignalOP:true} + }, + { + maxDuration: 15, + minDuration: 8, + operateType:CMD.Signal.CMD_SIGNAL_DETAIL.value, + skinCode: '04', + trainingName: '查询进路信息({5} 信号机)', + trainingRemark: '查询进路信息', + trainingType:'Signal', + productTypes: ['02'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '316', tip: '鼠标右键菜单选择【进路信息】' }, + { deviceType: '04', orderNum: 2, operateCode: '316', tip: '鼠标左键点击【确定】按钮' } + ] + }, + // 道岔列表 + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION.value, // 0312 新增定位字典 + skinCode: '04', + trainingName: '单操到定位({7})', + trainingRemark: '单操到定位({15})', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '101', tip: '鼠标右键菜单选择【单操到定位】' }, + { deviceType: '02', orderNum: 2, operateCode: '101', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION.value, + skinCode: '04', + trainingName: '单操到定位({7})', + trainingRemark: '单操到定位({7})', + trainingType: 'Switch', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '1010', tip: '鼠标左键点击【道岔定操】' }, + { deviceType: '02', orderNum: 2, operateCode: '1010', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION.value, // 0313 新增定位字典 + skinCode: '04', + trainingName: '单操到反位({7})', + trainingRemark: '单操到反位({7})', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '102', tip: '鼠标右键菜单选择【单操到反位】' }, + { deviceType: '02', orderNum: 2, operateCode: '102', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION.value, + skinCode: '04', + trainingName: '单操到反位({7})', + trainingRemark: '单操到反位({7})', + trainingType: 'Switch', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '1020', tip: '鼠标左键点击【道岔反操】' }, + { deviceType: '02', orderNum: 2, operateCode: '1020', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value, + skinCode: '04', + trainingName: '道岔单锁({7})', + trainingRemark: '道岔单锁功能', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '103', tip: '鼠标右键菜单选择【道岔单锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '103', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value, + skinCode: '04', + trainingName: '道岔单锁({7})', + trainingRemark: '道岔单锁功能', + trainingType: 'Switch', + productTypes: ['01'], // 现地操作 + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '1030', tip: '鼠标左键点击【道岔单锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '1030', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value, + skinCode: '04', + trainingName: '道岔解锁({7})', + trainingRemark: '道岔解锁功能', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '104', tip: '鼠标右键菜单选择【道岔解锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '104', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value, + skinCode: '04', + trainingName: '道岔解锁({7})', + trainingRemark: '道岔解锁功能', + trainingType: 'Switch', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '1040', tip: '鼠标左键点击【道岔解锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '1040', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_BLOCK.value, + skinCode: '04', + trainingName: '道岔封锁({7})', + trainingRemark: '道岔封锁功能', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '105', tip: '鼠标右键菜单选择【道岔封锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '1051', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '105', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_BLOCK.value, + skinCode: '04', + trainingName: '道岔封锁({7})', + trainingRemark: '道岔封锁功能', + trainingType: 'Switch', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【封锁】' }, + { deviceType: '02', orderNum: 2, operateCode: '2991', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value, + skinCode: '04', + trainingName: '道岔解封({7})', + trainingRemark: '道岔解封功能', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '106', tip: '鼠标右键菜单选择【道岔解封】' }, + { deviceType: '02', orderNum: 2, operateCode: '1062', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '106', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value, + skinCode: '04', + trainingName: '道岔解封({7})', + trainingRemark: '道岔解封功能', + trainingType: 'Switch', + productTypes: ['01'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '2992', tip: '鼠标左键点击【解封】' }, + { deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' } + ] + }, + { + maxDuration: 20, + minDuration: 10, + operateType: CMD.Switch.CMD_SWITCH_FAULT_UNLOCK.value, + skinCode: '04', + trainingName: '区故解({7})', + trainingRemark: '道岔区段故障解锁功能', + trainingType: 'Switch', + productTypes: ['02'], + stepVOList: [ + { deviceType: '02', orderNum: 1, operateCode: '109', tip: '鼠标右键菜单选择【区故解】' }, + { deviceType: '02', orderNum: 2, operateCode: '1092', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '02', orderNum: 3, operateCode: '109', tip: '输入密码123,点击【确定】按钮' } + ] + }, + // 区段列表 + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value, + skinCode: '04', + trainingName: '区故解({8}{9})', + trainingRemark: '故障解锁功能', + trainingType: 'Section', + productTypes: ['02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '402', tip: '鼠标右键菜单选择【区故解】' }, + { deviceType: '03', orderNum: 2, operateCode: '4023', tip: '鼠标左键点击【确定】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '402', tip: '输入密码123,点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value, + skinCode: '04', + trainingName: '区故解({8}{9})', + trainingRemark: '故障解锁功能', + trainingType: 'Section', + productTypes: ['01'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '4020', tip: '鼠标左键点击【区故解】'}, + { deviceType: '03', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '03', orderNum: 3, operateCode: '4020', tip: '鼠标左键点击【{8}{9}】', codeType:'SECTION' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Section.CMD_SECTION_DETAILS.value, + skinCode: '04', + trainingName: '属性({8}{9})', + trainingRemark: '区段详情({8}{9})', + trainingType: 'Section', + productTypes: ['02'], + stepVOList: [ + { deviceType: '03', orderNum: 1, operateCode: '410', tip: '鼠标右键菜单选择【属性】' }, + { deviceType: '03', orderNum: 2, operateCode: '410', tip: '鼠标左键点击【确定】按钮' } + ] + }, + // 站台列表 + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_HOLD_TRAIN.value, + skinCode: '04', + trainingName: '设置扣车({10}-{12}站台)', + trainingRemark: '设置扣车功能', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '504', tip: '鼠标右键菜单选择【设置扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '504', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN.value, + skinCode: '04', + trainingName: '取消扣车({10}-{12}站台)', + trainingRemark: '设置取消扣车功能', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: '505', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_WHOLE_LINE_CANCEL_HOLD_TRAIN.value, + skinCode: '04', + trainingName: '全线取消扣车', + trainingRemark: '设置取消扣车功能({12}全线)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' }, + { deviceType: '06', orderNum: 2, operateCode: 'com01', tip: '鼠标左键点击【{12}全线】按钮', val: 'true' }, + { deviceType: '06', orderNum: 3, operateCode: '505', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_JUMP_STOP.value, + skinCode: '04', + trainingName: '设置跳停({10}-{12}站台)', + trainingRemark: '设置跳停功能', + trainingType: 'Stand', + productTypes: ['01'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】'}, + { deviceType: '06', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【跳停】', codeType:'STAND', subType:'StopJumpLamp' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_JUMP_STOP.value, + skinCode: '04', + trainingName: '设置跳停({10}-{12}站台)', + trainingRemark: '设置跳停功能', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP.value, + skinCode: '04', + trainingName: '取消跳停({10}-{12}站台)', + trainingRemark: '设置取消跳停功能', + trainingType: 'Stand', + productTypes: ['01'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】'}, + { deviceType: '06', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【取消跳停】', codeType:'STAND', subType:'CancelStopJumpLamp' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP.value, + skinCode: '04', + trainingName: '取消跳停({10}-{12}站台)', + trainingRemark: '设置取消跳停功能', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' }, + { deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value, + skinCode: '04', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(自动, 一直有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value, + skinCode: '04', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(人工, 20秒, 一直有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '5093', tip: '标左键点击,选择【一直有效】', val: '02' }, + { deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value, + skinCode: '04', + trainingName: '设置停站时间({10}-{12}站台)', + trainingRemark: '设置停站时间(人工, 20秒, 一次有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' }, + { deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击,调整为【20】', val: '20' }, + { deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value, + skinCode: '04', + trainingName: '设置站间运行等级({10}-{12}站台)', + trainingRemark: '设置站间运行等级(自动, 一直有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' }, + { deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value, + skinCode: '04', + trainingName: '设置站间运行等级({10}-{12}站台)', + trainingRemark: '设置站间运行等级(人工, 常速, 一直有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' }, + { deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 3, operateCode: '5107', tip: '鼠标左键点击,取消选择【一直有效】', val: '02' }, + { deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value, + skinCode: '04', + trainingName: '设置站间运行等级({10}-{12}站台)', + trainingRemark: '设置站间运行等级(人工, 常速, 一次有效)', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' }, + { deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' }, + { deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' } + ] + }, + { + maxDuration: 8, // 自动生成实训失败 + minDuration: 5, + operateType: CMD.Stand.CMD_STAND_VIEW_STATUS.value, + skinCode: '04', + trainingName: '显示站台信息({10}-{12}站台)', + trainingRemark: '查询站台状态功能', + trainingType: 'Stand', + productTypes: ['02'], + stepVOList: [ + { deviceType: '06', orderNum: 1, operateCode: '507', tip: '鼠标右键菜单选择【显示站台信息】' }, + { deviceType: '06', orderNum: 2, operateCode: '0012', tip: '鼠标左键点击【退出】按钮' } + ] + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO.value, + skinCode: '04', + trainingName: '设置自动进路({3})', + trainingRemark: '设置自动进路功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' } + ], + // 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置 + config:{autoRouteBT:true} + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO.value, + skinCode: '04', + trainingName: '取消自动进路({3})', + trainingRemark: '取消自动进路功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' } + ], + // 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置 + config:{autoRouteBT:true} + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_SET_AUTO_TURN_BACK.value, + skinCode: '04', + trainingName: '设置自动折返({3})', + trainingRemark: '设置自动折返功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' }, + { deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' } + ], + // 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置 + config:{autoCycleBT:true} + }, + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Signal.CMD_SIGNAL_CANCEL_AUTO_TURN_BACK.value, + skinCode: '04', + trainingName: '取消自动折返({3})', + trainingRemark: '取消自动折返功能', + trainingType: 'Signal', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' }, + { deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' } + ], + // 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置 + config:{autoCycleBT:true} + }, + /** 引导总锁 */ + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Station.CMD_STATION_SET_MASTER_GUIDE_LOCK.value, + skinCode: '04', + trainingName: '引导总锁({26})', + trainingRemark: '设置引导总锁', + trainingType: 'Station', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '609', tip: '鼠标左键点击【引导总锁】' }, + { deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '609', tip: '鼠标左键点击【{26}】', codeType:'BUTTON' } + ], + config:{guideTotalLockBT:true} + }, + /** 取消引导总锁 */ + { + maxDuration: 15, + minDuration: 8, + operateType: CMD.Station.CMD_STATION_CANCEL_MASTER_GUIDE_LOCK.value, + skinCode: '04', + trainingName: '取消引导总锁({26})', + trainingRemark: '取消引导总锁', + trainingType: 'Station', + productTypes: ['01'], + stepVOList: [ + { deviceType: '04', orderNum: 1, operateCode: '609', tip: '鼠标左键点击【引导总锁】' }, + { deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123,点击【确定】按钮' }, + { deviceType: '04', orderNum: 3, operateCode: '609', tip: '鼠标左键点击【{26}】', codeType:'BUTTON' } + ], + config:{guideTotalLockBT:true} + } + // totalGuideLock + // + ] +}; diff --git a/src/jmapNew/theme/datie_01/planConfig.js b/src/jmapNew/theme/datie_01/planConfig.js new file mode 100644 index 000000000..0cb8b8311 --- /dev/null +++ b/src/jmapNew/theme/datie_01/planConfig.js @@ -0,0 +1,74 @@ +import { convertSheetToList } from '../parser/util'; + +export default { + /** 运行图解析方式*/ + type: 'Ratio', + + /** 边缘高度*/ + edge: 600, + + /** 间隔高度*/ + multiple: 1, + + /** 偏移时间*/ + translation: 60 * 60 * 2, + + /** excel解析配置*/ + excelConfig: { + beginRow: 1, + beginCol: 0, + fieldNum: 8, + sepField: '车次', + columns: { + '车站名称': { key: 'stationName', formatter: (val) => { return val; } }, + '到点': { key: 'arriveTime', formatter: (val) => { return val; } }, + '发点': { key: 'departureTime', formatter: (val) => { return val; } } + } + }, + + /** 解析excel数据转换为Json后台数据*/ + importData(Sheet, JsonData) { + var dataList = convertSheetToList(Sheet, false); + var needList = Object.keys(this.excelConfig.columns); + if (dataList && dataList.length) { + for (var rowIndex = this.excelConfig.beginRow; rowIndex < dataList.length; rowIndex += 1) { + for (var colIndex = this.excelConfig.beginCol; colIndex < dataList[this.excelConfig.beginCol].length; colIndex += this.excelConfig.fieldNum + 1) { + var tripNew, tripObj; + var stationObj = {}; + + tripNew = tripObj = { code: '', arrivalList: [] }; + for (var index = 0; index < this.excelConfig.fieldNum; index += 1) { + var title = dataList[0][colIndex + index]; + var value = dataList[rowIndex][colIndex + index]; + + if (title && value) { + var titleStr = `${title}`.trim(); + var valueStr = `${value}`.trim(); + + if (titleStr.includes(this.excelConfig.sepField)) { + tripObj.code = valueStr; + JsonData.forEach(elem => { + if (elem.code == valueStr) { + tripObj = elem; + return; + } + }); + } + + // 取需要的字段 + if (needList.findIndex(elem => { return elem == titleStr; }) >= 0) { + stationObj[this.excelConfig.columns[titleStr].key] = this.excelConfig.columns[titleStr].formatter(valueStr); + } + } + } + + tripObj.arrivalList.push(stationObj); + if (tripObj.code && tripObj == tripNew) { + JsonData.push(tripObj); + } + } + } + } + return JsonData; + } +}; diff --git a/src/jmapNew/theme/factory.js b/src/jmapNew/theme/factory.js index e897e3026..2b8403844 100644 --- a/src/jmapNew/theme/factory.js +++ b/src/jmapNew/theme/factory.js @@ -49,7 +49,8 @@ class Theme { '11': 'xian_01', '12': 'ningbo_03', '13': 'race_01', - '14': 'nanjing_02' // 南京二号线 + '14': 'nanjing_02', // 南京二号线 + '15': 'datie_01' }; this._localShowMode = { // 现地显示模式 '01': 'all', // 成都一 全显 @@ -65,7 +66,8 @@ class Theme { '11': 'all', '12': 'all', '13':'all', - '14':'ecStation' + '14':'ecStation', + '15':'all' }; } @@ -74,10 +76,10 @@ class Theme { return Object.assign({}, require(`./${this._mapMenu[code || this._code]}/menus/index`).default); } - // 新版本 - loadPlanParser(code) { + // 新版本 + loadPlanParser(code) { return PlanParser.load(require(`./${this._mapMenu[code || this._code]}/planConfig`).default); - } + } // 共有字段转换 loadPropConvert(code) { diff --git a/src/jmapNew/theme/ningbo_03/menus/menuDialog/signalGuide.vue b/src/jmapNew/theme/ningbo_03/menus/menuDialog/signalGuide.vue index 6347efeff..e785fbda0 100644 --- a/src/jmapNew/theme/ningbo_03/menus/menuDialog/signalGuide.vue +++ b/src/jmapNew/theme/ningbo_03/menus/menuDialog/signalGuide.vue @@ -3,11 +3,11 @@ @@ -29,7 +29,7 @@ - +
命令
确认 @@ -62,40 +62,39 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo' import CMD from '@/scripts/cmdPlugin/CommandEnum'; export default { - props: { - initCacheMap: { - type: Object, - default() { - return {} - } - }, - initInfo: { - type: Object, - default() { - return {} - } - }, - updateDone: { - type: Number, - default: 0 - } - }, components: { NoticeInfo }, + props: { + initCacheMap: { + type: Object, + default() { + return {}; + } + }, + initInfo: { + type: Object, + default() { + return {}; + } + }, + updateDone: { + type: Number, + default: 0 + } + }, data() { return { - title: '', status: false, standStatus: true, allChecked: false, dialogShow: false, loading: false, command: true, - sure: false, - currentSelect: null, - noInit: true, - changeIgnore: false + sure: false, + currentSelect: null, + noInit: true, + changeIgnore: false }; }, computed: { @@ -105,20 +104,20 @@ export default { show() { return this.dialogShow && !this.$store.state.menuOperation.break; }, - tempList() { - return this.signalList; - }, - initSelect() { - return this.initInfo.initSelect||{}; - }, - cmdType() { - return CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE - }, - disabled() { - return !this.currentSelect || !this.currentSelect.callOn || this.noInit; - }, - domIdChoose() { - return this.dialogShow ? OperationEvent.Command.common.choose.domId : '' + tempList() { + return this.signalList; + }, + initSelect() { + return this.initInfo.initSelect || {}; + }, + cmdType() { + return CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE; + }, + disabled() { + return !this.currentSelect || !this.currentSelect.callOn || this.noInit; + }, + domIdChoose() { + return this.dialogShow ? OperationEvent.Command.common.choose.domId : ''; }, domIdConfirm() { return this.dialogShow ? OperationEvent.Command.common.confirm.domId : ''; @@ -128,7 +127,10 @@ export default { }, domIdApply() { return this.dialogShow ? OperationEvent.Command.common.apply.domId : ''; - } + }, + title() { + return this.sure ? '确认/取消引导' : '初始化引导'; + } }, watch: { '$store.state.map.keyboardEnterCount': function (val) { @@ -136,76 +138,89 @@ export default { this.commit(); } }, - updateDone() { - if (this.currentSelect) { - this.noInit = this.sure && (this.getCacheMap()[this.currentSelect.code]||{}).done != 'one'; - } - } + updateDone() { + if (this.currentSelect) { + this.noInit = this.sure && (this.getCacheMap()[this.currentSelect.code] || {}).done != 'one'; + } + } }, methods: { - getCacheMap() { - return this.initCacheMap[this.cmdType.value]||{}; - }, + getCacheMap() { + return this.initCacheMap[this.cmdType.value] || {}; + }, doShow(operate, sure) { this.operate = operate; - this.sure = sure; - if (!sure) this.command = true; - this.title = `${sure? '确认/取消引导': '初始化引导'}`; + this.sure = sure; + if (!sure) this.command = true; - this.currentSelect = this.$store.getters['map/getDeviceByCode'](this.initSelect.code); + this.currentSelect = this.$store.getters['map/getDeviceByCode'](this.initSelect.code); this.dialogShow = true; this.$nextTick(function () { - this.changeIgnore = sure; - this.$refs.table.setCurrentRow(sure? this.tempList.find(el => el.code == this.initSelect.code): null); + this.changeIgnore = sure; + this.$refs.table.setCurrentRow(sure ? this.tempList.find(el => el.code == this.initSelect.code) : null); this.$store.dispatch('training/emitTipFresh'); }); }, + rightClickShow(operate, sure, selected) { + this.operate = operate; + this.sure = sure; + if (!sure) this.command = true; + this.currentSelect = this.$store.getters['map/getDeviceByCode'](selected.code); + console.log(this.currentSelect, '==========', this.currentSelect.callOn, this.noInit); + this.dialogShow = true; + this.$nextTick(function () { + this.changeIgnore = sure; + this.$refs.table.setCurrentRow(this.tempList.find(el => el.code == selected.code)); + this.$store.dispatch('training/emitTipFresh'); + this.$emit('updateDone'); + }); + }, doClose() { this.loading = false; this.dialogShow = false; - this.sure && (this.currentSelect = null); + this.sure && (this.currentSelect = null); this.sure && this.$refs.table.setCurrentRow(); - this.sure && this.$root.$emit('iniCacheMap', this.cmdType.value, - Object.fromEntries(Object.entries(this.getCacheMap()).filter(el => el[1].done == 'done')) - ) + this.sure && this.$root.$emit('iniCacheMap', this.cmdType.value, + Object.fromEntries(Object.entries(this.getCacheMap()).filter(el => el[1].done == 'done')) + ); this.$store.dispatch('training/emitTipFresh'); }, commit(isClose = false) { - if (this.currentSelect && + if (this.currentSelect && this.currentSelect.code == this.initSelect.code) { - const cacheMap= this.getCacheMap(); - const isOK = this.command&&(!this.sure || this.sure&&cacheMap[this.currentSelect.code]) - const operate = { - cmdType: this.sure&&isOK? this.cmdType: null, - operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation, - over: this.sure, - param: {signalCode: this.currentSelect.code} - }; + const cacheMap = this.getCacheMap(); + const isOK = this.command && (!this.sure || this.sure && cacheMap[this.currentSelect.code]); + const operate = { + cmdType: this.sure && isOK ? this.cmdType : null, + operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation, + over: this.sure, + param: {signalCode: this.currentSelect.code} + }; - this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { - if (valid) { - this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); - if (isOK) { - this.$root.$emit('appendCache', this.cmdType.value, this.currentSelect.code, { done: this.sure? 'two': 'one'}); - } else { - this.$root.$emit('removeCache', this.cmdType.value, this.currentSelect.code); - } - this.$emit('updateDone') - this.$store.dispatch('map/flushMapRef'); - isClose && this.doClose(); - } - }).catch(() => { - isClose && this.doClose(); - this.$refs.noticeInfo.doShow(); - }); - } else { - this.$messageBox('两次选择不一致'); - } + this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { + if (valid) { + this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); + if (isOK) { + this.$root.$emit('appendCache', this.cmdType.value, this.currentSelect.code, { done: this.sure ? 'two' : 'one'}); + } else { + this.$root.$emit('removeCache', this.cmdType.value, this.currentSelect.code); + } + this.$emit('updateDone'); + this.$store.dispatch('map/flushMapRef'); + isClose && this.doClose(); + } + }).catch(() => { + isClose && this.doClose(); + this.$refs.noticeInfo.doShow(); + }); + } else { + this.$messageBox('两次选择不一致'); + } }, - handleCurrentChange(val) { - if (!val) { return; } - this.currentSelect = this.$store.getters['map/getDeviceByCode'](val.code); - this.$emit('updateDone') + handleCurrentChange(val) { + if (!val) { return; } + this.currentSelect = this.$store.getters['map/getDeviceByCode'](val.code); + this.$emit('updateDone'); if (this.changeIgnore) { return; } const step = { @@ -214,12 +229,12 @@ export default { val: val.code }; - this.changeIgnore = false; - this.$emit('updateDone') + this.changeIgnore = false; + this.$emit('updateDone'); this.$store.dispatch('training/nextNew', step).then(({ valid }) => { if (valid) { - this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); - this.sure || this.$emit('initSelect', this.currentSelect); + this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); + this.sure || this.$emit('initSelect', this.currentSelect); } }).catch(_ => { this.$refs.noticeInfo.doShow(); @@ -241,19 +256,19 @@ export default { }, getCanGuide(code) { const elem = this.$store.getters['map/getDeviceByCode'](code); - return elem.callOn ? '是': '否'; + return elem.callOn ? '是' : '否'; }, getProcess(code) { - const cacheMap = this.getCacheMap(); - const cache = cacheMap[code]; - if (cache) { - if (this.sure) { - return cache.done == 'two' ? '确认引导完成' : '等待确认/取消'; - } else { - return cache.done == 'one' ? '已初始化' : '' - } - } - return ''; + const cacheMap = this.getCacheMap(); + const cache = cacheMap[code]; + if (cache) { + if (this.sure) { + return cache.done == 'two' ? '确认引导完成' : '等待确认/取消'; + } else { + return cache.done == 'one' ? '已初始化' : ''; + } + } + return ''; }, cancel() { const operate = { diff --git a/src/jmapNew/theme/ningbo_03/menus/menuSignal.vue b/src/jmapNew/theme/ningbo_03/menus/menuSignal.vue index 4c0451380..5c962eb6e 100644 --- a/src/jmapNew/theme/ningbo_03/menus/menuSignal.vue +++ b/src/jmapNew/theme/ningbo_03/menus/menuSignal.vue @@ -1,36 +1,31 @@ + diff --git a/src/views/newMap/displayCity/demon/equipment.vue b/src/views/newMap/displayCity/demon/equipment.vue new file mode 100644 index 000000000..781517835 --- /dev/null +++ b/src/views/newMap/displayCity/demon/equipment.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/views/newMap/displayCity/demon/faultChoose.vue b/src/views/newMap/displayCity/demon/faultChoose.vue new file mode 100644 index 000000000..23c550f25 --- /dev/null +++ b/src/views/newMap/displayCity/demon/faultChoose.vue @@ -0,0 +1,600 @@ + + + + + diff --git a/src/views/newMap/displayCity/demon/setTime.vue b/src/views/newMap/displayCity/demon/setTime.vue new file mode 100644 index 000000000..d64695573 --- /dev/null +++ b/src/views/newMap/displayCity/demon/setTime.vue @@ -0,0 +1,118 @@ + + + diff --git a/src/views/newMap/displayCity/demonMenu.vue b/src/views/newMap/displayCity/demonMenu.vue new file mode 100644 index 000000000..ba458b3c1 --- /dev/null +++ b/src/views/newMap/displayCity/demonMenu.vue @@ -0,0 +1,190 @@ + + + diff --git a/src/views/newMap/displayCity/index.vue b/src/views/newMap/displayCity/index.vue new file mode 100644 index 000000000..bd400d64c --- /dev/null +++ b/src/views/newMap/displayCity/index.vue @@ -0,0 +1,307 @@ + + diff --git a/src/views/newMap/displayCity/menuDemon.vue b/src/views/newMap/displayCity/menuDemon.vue new file mode 100644 index 000000000..ee68d16b5 --- /dev/null +++ b/src/views/newMap/displayCity/menuDemon.vue @@ -0,0 +1,306 @@ + + + + + diff --git a/src/views/newMap/displayCity/menuSchema.vue b/src/views/newMap/displayCity/menuSchema.vue new file mode 100644 index 000000000..f0583b583 --- /dev/null +++ b/src/views/newMap/displayCity/menuSchema.vue @@ -0,0 +1,111 @@ + + + diff --git a/src/views/newMap/displayCity/menuSystemTime.vue b/src/views/newMap/displayCity/menuSystemTime.vue new file mode 100644 index 000000000..06d4b7486 --- /dev/null +++ b/src/views/newMap/displayCity/menuSystemTime.vue @@ -0,0 +1,154 @@ + + + diff --git a/src/views/newMap/displayCity/utils.js b/src/views/newMap/displayCity/utils.js new file mode 100644 index 000000000..6b99aee0b --- /dev/null +++ b/src/views/newMap/displayCity/utils.js @@ -0,0 +1,58 @@ +import ConstConfig from '@/scripts/ConstConfig'; +import Cookies from 'js-cookie'; +import store from '@/store/index'; +export function covertMemberData (activeTrainList, resp) { + let lastData = JSON.stringify(resp); + const roleTypeList = ConstConfig.ConstSelect.roleTypeNew; + roleTypeList.forEach(function(element) { + const rolename = element.value; + if (Cookies.get('user_lang') == 'en') { + lastData = lastData.replace(new RegExp(rolename, 'g'), element.enLabel); + } else { + lastData = lastData.replace(new RegExp(rolename, 'g'), element.label); + } + }); + lastData = JSON.parse(lastData); + const lastMemberList = []; + // const electricDispatcherList = []; + const deviceListData = [[], [], [], [], [], [], [], []]; + const driverList = []; + lastData.forEach((member, index)=>{ + if (member.userId && member.userId == store.state.user.id) { + member.disabled = true; + member.userName = store.state.user.nickname; + store.dispatch('training/setOrignalUserRoleId', member.id); + } else { + member.disabled = false; + } + const userName = member.userName ? '-' + member.userName : ''; + const name = member.name ? '-' + member.name : ''; + if (member.deviceCode) { + const device = store.getters['map/getDeviceByCode'](member.deviceCode); + member.deviceName = device.name || device.groupNumber; + member.label = member.type + member.deviceName + name + userName; + member.normalName = member.type + member.deviceName + name; + } else { + member.deviceName = ''; + member.label = member.type + name + userName; + member.normalName = member.type + name; + } + const deviceType = ['行调', '通号', '行值', '司机', '车辆段信号楼', '上级部门', '电力调度', '停车场信号楼']; + const deviceTypeIndex = deviceType.indexOf(member.type); + if (deviceTypeIndex >= 0) { + if (deviceTypeIndex == 3) { + if (activeTrainList.length > 0) { + if (activeTrainList.includes(member.deviceCode)) { + deviceListData[deviceTypeIndex].push(member); + } + } + lastMemberList.push(member); + driverList.push(member); + } else { + deviceListData[deviceTypeIndex].push(member); + lastMemberList.push(member); + } + } + }); + return {lastMemberList:lastMemberList, deviceListData:deviceListData, driverList:driverList}; +} diff --git a/src/views/newMap/newMapdraft/mapoperate/index.vue b/src/views/newMap/newMapdraft/mapoperate/index.vue index 0f7beb327..caf36b77c 100644 --- a/src/views/newMap/newMapdraft/mapoperate/index.vue +++ b/src/views/newMap/newMapdraft/mapoperate/index.vue @@ -67,6 +67,7 @@ import Arrow from './arrow'; import SplitScreen from './splitScreen'; import FloodGate from './floodGate'; import DirectionRod from './directionRod'; +import SignalButton from './signalButton'; import { EventBus } from '@/scripts/event-bus'; export default { @@ -97,7 +98,8 @@ export default { Arrow, SplitScreen, FloodGate, - DirectionRod + DirectionRod, + SignalButton }, props: { selected: { @@ -138,7 +140,8 @@ export default { {label: '站间分隔', name:'SplitStation', menus:SplitStation}, {label: '箭头', name:'Arrow', menus:Arrow}, {label: '防淹门', name: 'FloodGate', menus: FloodGate}, - {label: '方向杆', name: 'DirectionRod', menus: DirectionRod} + {label: '方向杆', name: 'DirectionRod', menus: DirectionRod}, + {label: '信号按钮', name: 'SignalButton', menus: SignalButton } ], selectDevice:'', enabledTab: 'Section', diff --git a/src/views/newMap/newMapdraft/mapoperate/signalButton.vue b/src/views/newMap/newMapdraft/mapoperate/signalButton.vue new file mode 100644 index 000000000..018a8c8ae --- /dev/null +++ b/src/views/newMap/newMapdraft/mapoperate/signalButton.vue @@ -0,0 +1,299 @@ + + + +