Merge remote-tracking branch 'origin/test'

This commit is contained in:
joylink_zhangsai 2021-04-12 19:06:35 +08:00
commit 62da1ca95d
123 changed files with 101820 additions and 3560 deletions

View File

@ -562,11 +562,3 @@ export function deleteStationDestination(mapId, code) {
method: 'delete'
});
}
/** 根据group查询目的码 */
export function getSimulationDestinationList(group) {
return request({
url: `/simulation/${group}/destinationCode/list`,
method: 'get'
});
}

33
src/api/mapGroup.js Normal file
View File

@ -0,0 +1,33 @@
import request from '@/utils/request';
/** 创建分组 */
export function createMapGroup(data) {
return request({
url: `/api/mapGroup`,
method: 'post',
data
});
}
/** 修改分组 */
export function updateMapGroup(data) {
return request({
url: `/api/mapGroup/${data.groupId}`,
method: 'put',
data
});
}
/** 删除分组 */
export function deleteMapGroup(groupId) {
return request({
url: `/api/mapGroup/${groupId}`,
method: 'delete'
});
}
/** 分页查询地图分组 */
export function queryMapGroupPaging(params) {
return request({
url: `/api/mapGroup/page`,
method: 'get',
params
});
}

View File

@ -437,3 +437,25 @@ export function getPathListByStandCodeOrSignalCode( group, params ) {
params
});
}
/** 查询未该列车以建立的进路 */
export function getRouteListForTrain( group, groupNumber ) {
return request({
url: `/simulation/${group}/queryEstablishedRoutes/${groupNumber}`,
method: 'get'
});
}
/** 根据group查询目的码 */
export function getSimulationDestinationList(group) {
return request({
url: `/simulation/${group}/destinationCode/list`,
method: 'get'
});
}
/** 查询运行线或者列车经过的站台 */
export function getStandListByRunLineOrTrainCode(group, params) {
return request({
url: `simulation/${group}/queryStands/trainOrDestination`,
method: 'get',
params
});
}

10
src/api/voice.js Normal file
View File

@ -0,0 +1,10 @@
import request from '@/utils/request';
/** 上传录音文件 */
export function uploadAudioFiles(file) {
return request({
url: `/api/voice/recognition`,
method: 'post',
data: file
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -89,5 +89,7 @@ export default {
preTheoryData: 'Pre Theory Data',
boardManage: 'Message Board Manage',
publishIBPManage:'publish IBP Manage',
publishISCSManage:'publish ISCS Manage'
publishISCSManage:'publish ISCS Manage',
voiceTraining: 'Voice Training',
mapGroup: 'Map Group'
};

View File

@ -94,5 +94,7 @@ export default {
preTheoryData: '理论导入预处理',
boardManage: '留言板管理',
publishIBPManage:'发布IBP盘管理',
publishISCSManage:'发布ISCS管理'
publishISCSManage:'发布ISCS管理',
voiceTraining: '语音训练',
mapGroup: '地图分组'
};

View File

@ -116,6 +116,13 @@ class Iscs {
// loadStyle(lineCode) {
// return selectLineCode(lineCode);
// }
hideShowElementType(deviceType, subType) {
for (const val in this.iscsDevice) {
if (this.iscsDevice[val].model._type === deviceType && this.iscsDevice[val].model.type.includes(subType)) {
this.$painter.hideShowElement(this.iscsDevice[val]);
}
}
}
setCenter(deviceCode) {
const device = this.iscsDevice[deviceCode];

View File

@ -53,7 +53,10 @@ class Painter {
this.add(device);
});
}
/** 视图显影控制 */
hideShowElement(device) {
device.instance.hideShowElement();
}
/**
* 添加视图
* @param {*} device

View File

@ -59,7 +59,7 @@ export default class Button extends Group {
this.grouper.add(this.imageButton);
this.on('mousedown', (e) => { this.imageButton && this.imageButton.setStyle({image: buttonActive}); });
this.on('mouseup', (e) => { this.imageButton && this.imageButton.setStyle({image: buttonImg}); });
} else if (['02','09'].includes(Vue.prototype.$iscs.lineCode)) {
} else if (['02'].includes(Vue.prototype.$iscs.lineCode)) {
this.textButtonRect = new Rect({
zlevel: model.zlevel,
z: model.z,
@ -69,11 +69,10 @@ export default class Button extends Group {
y: textRect.y - model.verticalPadding,
width: textRect.width + 2 * model.levelPadding,
height: textRect.height + 2 * model.verticalPadding,
fill: model.fillColor||'rgba(0,0,0,0)'
},
style: {
lineWidth: 0,
fill: '#D1C2C2'
fill: model.fillColor||'#D1C2C2'
}
});
this.lineLeftTop = new Polyline({
@ -89,7 +88,7 @@ export default class Button extends Group {
]
},
style: {
lineWidth: 2,
lineWidth: model.isTransparent ? 0: 2,
stroke: '#FFFFFF'
}
});
@ -106,48 +105,46 @@ export default class Button extends Group {
]
},
style: {
lineWidth: 2,
lineWidth: model.isTransparent ? 0: 2,
stroke: '#696969'
}
});
this.grouper.add(this.textButtonRect);
this.grouper.add(this.lineLeftTop);
this.grouper.add(this.lineBottomRight);
if (this.model.function == 'ElementShow') {
this.textButtonRectSmall = new Rect({
zlevel: model.zlevel,
z: model.z,
z2: model.z2 || 0,
shape: {
x: textRect.x - model.levelPadding + 6,
y: textRect.y - model.verticalPadding + 6,
width: textRect.width + 2 * model.levelPadding - 12,
height: textRect.height + 2 * model.verticalPadding - 12,
fill: model.fillColor||'rgba(0,0,0,0)'
},
style: {
lineWidth: 2,
fill: 'rgba(0,0,0,0)',
stroke: '#908A90'
}
});
this.grouper.add(this.textButtonRectSmall);
this.textButtonRect.setStyle({fill: '#00CC00'});
this.lineLeftTop.setStyle({stroke: '#ffffff'});
this.lineBottomRight.setStyle({stroke: '#948390'});
} else {
// if (this.model.function == 'ElementShow') {
// this.textButtonRectSmall = new Rect({
// zlevel: model.zlevel,
// z: model.z,
// z2: model.z2 || 0,
// shape: {
// x: textRect.x - model.levelPadding + 6,
// y: textRect.y - model.verticalPadding + 6,
// width: textRect.width + 2 * model.levelPadding - 12,
// height: textRect.height + 2 * model.verticalPadding - 12,
// },
// style: {
// lineWidth: model.isTransparent ? 0: 2,
// fill: model.fillColor||'rgba(0,0,0,0)',
// stroke: '#908A90'
// }
// });
// this.grouper.add(this.textButtonRectSmall);
// this.textButtonRect.setStyle({fill: model.fillColor||'#D1C2C2'});
// this.lineLeftTop.setStyle({stroke: '#ffffff'});
// this.lineBottomRight.setStyle({stroke: '#948390'});
// } else {
this.on('mousedown', (e) => {
this.textButtonRect.setStyle({fill: '#847b7b'});
this.textButtonRect.setStyle({fill: model.fillColorActive});
this.lineLeftTop.setStyle({stroke: '#696969'});
this.lineBottomRight.setStyle({stroke: '#FFFFFF'});
});
this.on('mouseup', (e) => {
this.textButtonRect.setStyle({fill: '#D1C2C2'});
this.textButtonRect.setStyle({fill: model.fillColor||'#D1C2C2'});
this.lineLeftTop.setStyle({stroke: '#FFFFFF'});
this.lineBottomRight.setStyle({stroke: '#696969'});
});
}
// }
}
this.grouper.add(this.buttonText);
this.add(this.grouper);

View File

@ -72,14 +72,16 @@ import fireDamperGreen from '@/assets/iscs_picture/fireDamper_green.png';
import alarmLampRed from '@/assets/iscs_picture/alarmLamp_red.png';
import alarmLampBlue from '@/assets/iscs_picture/alarmLamp_blue.png';
import alarmLampGreen from '@/assets/iscs_picture/alarmLamp_green.png';
import bgStationA from '@/assets/iscs_picture/bg-station-A.png'
import bgStationB from '@/assets/iscs_picture/bg-station-B.png'
import bgStationC from '@/assets/iscs_picture/bg-station-C.png'
import bgStationD from '@/assets/iscs_picture/bg-station-D.png'
import bgStationE from '@/assets/iscs_picture/bg-station-E.png'
import bgStationF from '@/assets/iscs_picture/bg-station-F.png'
import bgStationA from '@/assets/iscs_picture/bg-station-A.png';
import bgStationB from '@/assets/iscs_picture/bg-station-B.png';
import bgStationC from '@/assets/iscs_picture/bg-station-C.png';
import bgStationD from '@/assets/iscs_picture/bg-station-D.png';
import bgStationE from '@/assets/iscs_picture/bg-station-E.png';
import bgStationF from '@/assets/iscs_picture/bg-station-F.png';
import bgDoorStationA from '@/assets/iscs_picture/bg-door-station-A.png';
import bgDoorStandA from '@/assets/iscs_picture/bg-door-stand-A.png';
import littleStation from '@/assets/iscs_picture/little-station.png';
import littleStand from '@/assets/iscs_picture/little-stand.png';
const pictureObj = {
'psdLeft': psdLeft,
@ -87,8 +89,8 @@ const pictureObj = {
'psdRight': psdRight,
'APF': iscsAPF,
'envPersonDoor': envPersonDoor,
's': fireBlue,
'a': fireRed,
'alarmButtonBlue': fireBlue,
'alarmButtonRed': fireRed,
hand,
fmBlue,
fmGray,
@ -159,7 +161,9 @@ const pictureObj = {
bgStationE,
bgStationF,
bgDoorStationA,
bgDoorStandA
bgDoorStandA,
littleStation,
littleStand
};
export default class Picture extends Group {
constructor(device) {
@ -216,4 +220,11 @@ export default class Picture extends Group {
rect.y = rect.y + this.model.point.y;
return rect;
}
hideShowElement() {
if (this.imageButton && this.imageButton.ignore) {
this.imageButton.show();
} else {
this.imageButton && this.imageButton.hide();
}
}
}

View File

@ -2,29 +2,195 @@ import { BASE_ASSET_API } from '@/api/jlmap3d/assets3d.js';
export function AssetModelManager(scene) {
let scope = this;
this.assetList = [];
this.otherModel = new THREE.Group();
scene.add(this.otherModel);
this.loadAsset = [];
this.loadAsset['default1'] = {
modelId:'default1',
packageName:"车站",
url:"/MODEL/2021-04-06/1381-54584.FBX",
mesh:"",
assetType:'default',
isUse:true,
resourceType:"三维课程",
};
//场景中可触发事件模型
this.lessonTriggerList = [];
this.saveModelList = function(){
let modelList = {
assetList:[],
modelList:[],
};
for(let k in scope.loadAsset){
modelList.assetList.push({
modelId:scope.loadAsset[k].modelId,
packageName:scope.loadAsset[k].packageName,
url:scope.loadAsset[k].url,
assetType:scope.loadAsset[k].assetType,
isUse:scope.loadAsset[k].isUse,
resourceType:scope.loadAsset[k].resourceType,
});
}
for(let i=0;i<scope.lessonTriggerList.length;i++){
if(scope.lessonTriggerList[i].showType != "default"){
modelList.modelList.push({
name:scope.lessonTriggerList[i].name,
modelId:scope.lessonTriggerList[i].modelId,
label:scope.lessonTriggerList[i].label,
pos:{
x:scope.lessonTriggerList[i].position.x,
y:scope.lessonTriggerList[i].position.y,
z:scope.lessonTriggerList[i].position.z
},
rot:{
x:scope.lessonTriggerList[i].position.x,
y:scope.lessonTriggerList[i].position.y,
z:scope.lessonTriggerList[i].position.z
},
showType:scope.lessonTriggerList[i].showType,
visible:scope.lessonTriggerList[i].visible,
});
}
}
// console.log(modelList);
return modelList;
}
//加载课程资源
this.lessonAssetsLoader = function(){
fbxpromise();
this.lessonAssetsLoader = function(assetList,modelList){
let initlist = [];
if(assetList){
for(let i = 0;i<assetList.length;i++){
assetList[i].mesh = "";
scope.loadAsset[assetList[i].modelId] = assetList[i];
}
}
for(let k in scope.loadAsset){
initlist.push(fbxpromise(scope.loadAsset[k]));
}
return new Promise(function(resolve, reject){
Promise.all(initlist).then((result) => {
initTriggerList();
for(let i=0;i<modelList.length;i++){
console.log(modelList[i]);
let newModelTrigger = scope.loadAsset[modelList[i].modelId].mesh.clone(true);
newModelTrigger.showType = "loadModel";
newModelTrigger.label = modelList[i].label;
newModelTrigger.modelId = modelList[i].modelId;
newModelTrigger.visible = modelList[i].visible;
newModelTrigger.position.copy(modelList[i].pos);
newModelTrigger.rotation.copy(modelList[i].rot);
scope.otherModel.add(newModelTrigger);
scope.lessonTriggerList.push(newModelTrigger);
}
updateTriggerList(scope.lessonTriggerList);
resolve("loaderassets"); //['成功了', 'success']
}).catch((error) => {
//console.log(error);
});
});
}
// <el-option label="车站" value="standstation"></el-option>
// <el-option label="停车场" value="stopstation"></el-option>
// <el-option label="单体设备" value="device"></el-option>
// <el-option label="线路" value="xl"></el-option>
// <el-option label="道岔" value="dc"></el-option>
//FT 扶梯
//FTAN 扶梯按钮(急停)
//FTD 扶梯灯
//FTKG 扶梯开关(钥匙孔)
//FTTJ 扶梯台阶
function initTriggerList(){
scope.loadAsset['default1'].mesh.getObjectByName("FTAN").showType = "default";
scope.loadAsset['default1'].mesh.getObjectByName("FTAN").label = "扶梯急停按钮";
scope.lessonTriggerList.push(scope.loadAsset['default1'].mesh.getObjectByName("FTAN"));
scope.loadAsset['default1'].mesh.getObjectByName("FTKG").showType = "default";
scope.loadAsset['default1'].mesh.getObjectByName("FTKG").label = "扶梯钥匙孔";
scope.lessonTriggerList.push(scope.loadAsset['default1'].mesh.getObjectByName("FTKG"));
// console.log(scope.loadAsset['default1'].mesh.getObjectByName("FTKG"));
}
//动态加载资源
this.assetLoader = function(){
this.lessonAssetsNewLoader = function(assetData,pos){
let isLoaded = false;
if(scope.loadAsset[assetData.id]){
let newModelTrigger = scope.loadAsset[assetData.id].mesh.clone(true);
newModelTrigger.modelId = assetData.id;
newModelTrigger.showType = "loadModel";
newModelTrigger.label = assetData.packageName;
newModelTrigger.position.copy(pos);
scope.otherModel.add(newModelTrigger);
scope.lessonTriggerList.push(newModelTrigger);
updateTriggerList(scope.lessonTriggerList);
}else{
scope.loadAsset[assetData.id] = {
modelId:assetData.id,
packageName:assetData.packageName,
url:assetData.url,
mesh:"",
assetType:'loadModel',
isUse:true,
resourceType:"三维课程",
};
console.log("new");
fbxpromise(scope.loadAsset[assetData.id]).then(function(object){
let newModelTrigger = scope.loadAsset[assetData.id].mesh.clone(true);
newModelTrigger.showType = "loadModel";
newModelTrigger.modelId = assetData.id;
newModelTrigger.label = assetData.packageName;
newModelTrigger.position.copy(pos);
scope.otherModel.add(newModelTrigger);
scope.lessonTriggerList.push(newModelTrigger);
updateTriggerList(scope.lessonTriggerList);
// resolve("loadednew");
});
}
}
//fbx模型加载
function fbxpromise(){
function fbxpromise(asset){
return new Promise(function(resolve, reject){
var loader = new THREE.FBXLoader();
loader.load( BASE_ASSET_API+"/MODEL/2021-03-25/1370-3193.FBX", function ( object ) {
loader.load( BASE_ASSET_API+asset.url, function ( object ) {
scope.loadAsset.push(object);
if(asset.assetType == "default"){
scene.add(object);
}else if(asset.assetType == 'loadModel'){
}
asset.mesh = object;
resolve();
} );

View File

@ -65,7 +65,12 @@ export function Lesson3dEditor(dom,lessonData) {
lesson3dUpdateControl(scope.controls);
let assetModelManager = new AssetModelManager(scene);
if(lessonData.assetList.length>0 || lessonData.modelList.length>0){
assetModelManager.lessonAssetsLoader(lessonData.assetList,lessonData.modelList);
}else{
assetModelManager.lessonAssetsLoader();
}
animate();
@ -83,4 +88,27 @@ export function Lesson3dEditor(dom,lessonData) {
scope.renderer.setSize(dom.offsetWidth,dom.offsetHeight);
}
this.createModelTrigger = function(assetData,mousePos){
var mouse = new THREE.Vector2();
var raycaster = new THREE.Raycaster();
mouse.x = ( mousePos.x / window.innerWidth ) * 2 - 1;
mouse.y = - ( mousePos.y / dom.offsetHeight ) * 2 + 1;
raycaster.setFromCamera(mouse,scope.camerass) // 也可以给构造函数传参的形式写
var intersects = raycaster.intersectObjects( scene.children,true );
if(intersects.length>0){
assetModelManager.lessonAssetsNewLoader(assetData,intersects[0].point);
}
}
this.saveAssetModel = function(){
return assetModelManager.saveModelList();
}
}

View File

@ -8,10 +8,13 @@ export function LessonData() {
this.lessonStatus = "";
this.lessonData = {
//资源列表
assetmodel:[],
assetList:[],
//场景交互物体列表
modelList:[],
//课程组件启用状态
lessonTools:[],
dataType:"",
toolJobPane:[],
//课程内容
lessonProgress:[
@ -20,6 +23,7 @@ export function LessonData() {
this.initLessonProgress = function(){
let newLessonProgress = {
id:generateUUID(),
progressName:"",
roleName:"",
roleUse:true,
@ -49,6 +53,10 @@ export function LessonData() {
picurl:"url",
text:"内容",
},
action:{
actionType:"事件操作类型",
actionMode:"触发事件类型",
},
};
scope.lessonData.lessonProgress.push(newLessonProgress);
@ -59,10 +67,11 @@ export function LessonData() {
console.log(loadData);
for(let i=0;i<loadData.length;i++){
let newLessonProgress = {
id:loadData[i].id,
progressName:loadData[i].progressName,
roleName:loadData[i].roleName,
roleUse:loadData[i].roleUse,
score:loadData[i].roleUse,
progressScene:loadData[i].progressScene,
nextCode:loadData[i].nextCode,
nextNode:loadData[i].nextNode,
@ -81,6 +90,8 @@ export function LessonData() {
index:loadData[i].index,
stepTipsData:loadData[i].stepTipsData,
explainPane:loadData[i].explainPane,
action:loadData[i].action,
jobPane:[],
};
scope.lessonData.lessonProgress.push(newLessonProgress);
@ -90,10 +101,11 @@ export function LessonData() {
this.addLessonProgress = function(index){
let inheirIndex = index - 1;
let newLessonProgress = {
id:generateUUID(),
progressName:"",
roleName:scope.lessonData.lessonProgress[inheirIndex].roleName,
roleUse:scope.lessonData.lessonProgress[inheirIndex].roleUse,
score:0,
progressScene:scope.lessonData.lessonProgress[inheirIndex].progressScene,
nextCode:"",
nextNode:"",
@ -122,6 +134,11 @@ export function LessonData() {
picurl:"url",
text:"内容",
},
action:{
actionType:"事件操作类型",
actionMode:"触发事件类型",
},
jobPane:[],
};
scope.lessonData.lessonProgress.push(newLessonProgress);
@ -136,6 +153,18 @@ export function LessonData() {
scope.lessonData.lessonProgress.splice(index,1);
}
function generateUUID() {
var d = new Date().getTime();
if (window.performance && typeof window.performance.now === "function") {
d += performance.now(); //use high-precision timer if available
}
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
}
}

View File

@ -0,0 +1,294 @@
export function JobPaneData() {
let scope = this;
// let
this.dataList = [
{
name:"值班站长",
text:"执行分公司、部、中心、车站的有关规章制度,加强班组管理,掌握列车运行情况,安排车站行车组织工作",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"行车值班员",
text:"在本班组值班站长的指挥下开展工作,负责本班组车站综合控制室,负责车站行车工作,监视列车到、发情况及乘客上下车、候车动态,监控设备运作状况。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"客运值班员",
text:"在值班站长的领导下,主管车站客运、票务管理,组织站务员从事客运服务工作",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"票厅岗",
text:"执行分公司、部、中心、车站的有关规章制度,在客运值班员领导下,负责车站售票工作。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"站台岗",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"站长",
text:"在站务中心(副)主任领导下,组织领导站内员工开展车站各项工作。负责车站员工的日常管理,定期进行员工教育,掌握员工思想状况。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"分部助理",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"行车调度",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"生产调度",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"厅巡岗",
text:"负责站厅乘客服务,设备的巡视、紧急情况下事件的处理等。",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"地铁公安",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"120",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
{
name:"119",
text:"",
picurl:"",
controlList:[
//联控
{
name:"联控",
data:[],
},
//动作
{
name:"动作",
data:[],
},
//口呼
{
name:"口呼",
data:[],
},
],
},
];
}

View File

@ -0,0 +1,32 @@
export function LessonTrigger() {
let scope = this;
this.dataList = [
];
// let
this.triggerList = [
{
name:"移动触发器",
type:"movetrigger",
picurl:"",
},
{
name:"置物触发器",
type:"placetrigger",
picurl:"",
},
];
this.createTrigger = function(type){
}
this.deleteTrigger = function(selected){
}
}

View File

@ -90,6 +90,7 @@ class SkinCode extends defaultStyle {
faultLockColor: '#81007F', // 区段故障锁定颜色
undefinedColor: '#0071C1', // 区段未定义颜色
blockColor: '#FE0000', // 区段封锁颜色(淡紫色)
closedColor: '#EE0000',
atcExcisionColor: '#A0522D', // 区段atc切除颜色
atsExcisionColor: '#A0522D', // 区段ats切除颜色
invalidColor: '#AC8F40', // 计轴故障颜色
@ -382,6 +383,11 @@ class SkinCode extends defaultStyle {
fillColor: '#FF00FE', // 联锁预留道岔 颜色
strokeColor: '#784F20',
operateFillColor: '#FF9600' // 操作员预留道岔 颜色
},
artificialArc: {
fillColor: 'rgba(0, 0, 0, 0)',
strokeColor: '#0001FC',
shapeR: 10
}
};
@ -407,8 +413,9 @@ class SkinCode extends defaultStyle {
z:0,
spareColor: '#0000ff', // 站台空闲颜色
spareStrokeColor: '#000000', // 站台空闲描边颜色
jumpStopColor: '#C00000', // 站台跳停颜色
jumpStopColor: '#0000ff', // 站台跳停颜色
designatedJumpStopColor: 'lightSkyBlue', // 站台指定列车跳停颜色
closeColor: '#C00000', // 站台关闭颜色
headFontSize: 10, // 站台首端字体大小
doorOpenColor:'#00FF00', // 车门开启状态颜色
stopColor: '#0080C0', // 站台列车停站颜色

View File

@ -67,7 +67,7 @@ class EHorizontal2Door extends Group {
const stationStand = store.getters['map/getDeviceByCode'](this.model.modelData.standCode);
stationStand &&
stationStand.instance &&
stationStand.instance.setState({screenDoorOpenStatus:0});
stationStand.instance.setScreenDoorOpenStatus({screenDoorOpenStatus:0});
}
this.stand1.setStyle('fill', style.transparentColor);
this.stand2.setStyle('fill', style.transparentColor);
@ -77,7 +77,7 @@ class EHorizontal2Door extends Group {
const stationStand = store.getters['map/getDeviceByCode'](this.model.modelData.standCode);
stationStand &&
stationStand.instance &&
stationStand.instance.setState({screenDoorOpenStatus:1});
stationStand.instance.setScreenDoorOpenStatus({screenDoorOpenStatus:1});
}
this.stand1.setStyle('fill', style.Psd.horizontal2Door.defaultColor);
this.stand2.setStyle('fill', style.Psd.horizontal2Door.defaultColor);

View File

@ -131,9 +131,9 @@ export default class EDeviceStatus extends Group {
// }
// });
this.add(this.psd);
this.add(this.mfa);
this.add(this.mfb);
this.add(this.pfa);
this.add(this.pfb);
// this.add(this.mfa);
// this.add(this.mfb);
// this.add(this.pfa);
// this.add(this.pfb);
}
}

View File

@ -157,7 +157,11 @@ export default class Section extends Group {
section && section.instance && section.instance.line.setCrossRouteLock();
}
}
closeSection() {
if (this.line) {
this.line.setStyle({stroke: this.style.Section.line.closedColor});
}
}
/** 非通信车占用状态 03*/
unCommunicationOccupied() {
if (this.style.Section.preAxleIgnoreFault && this.model.preReset) {
@ -406,6 +410,8 @@ export default class Section extends Group {
model.nctOccupied && this.unCommunicationOccupied();
/** 通信车占用状态 */
model.ctOccupied && this.communicationOccupied();
/** 区段关闭 */
model.closed && this.closeSection();
// 计轴预复位
model.preReset && this.preReset(model.blockade);
/** 区段切除*/

View File

@ -146,7 +146,9 @@ class StationStand extends Group {
this[element].recover();
});
}
setScreenDoorOpenStatus(model) {
this.gapStand && this.gapStand.setState(model);
}
setState(model) {
if (!this.isShowShape) return;
// // 新版地图使用新版状态变更方式
@ -154,7 +156,7 @@ class StationStand extends Group {
// 只响应前端自定义类型的状态变化
if (model._free) {
this.setAshShow()
this.setAshShow();
} else {
// 更新状态
const currentTypeList = this.style.StationStand.elemnetType;

View File

@ -134,6 +134,8 @@ class ESolidStand extends Group {
(model.centerHoldTrain || model.stationHoldTrain) && this.setHoldTrain('Station');
// 系统扣车
model.sysHoldTrain && this.setHoldTrain('System');
// 站台关闭
model.closed && this.setColor(style.StationStand.solidStand.closeColor);
} else {
this.handlePassagerColor(model.num);
}

View File

@ -12,7 +12,6 @@ import ESwBlock from './ESwBlock';
import EMouse from './EMouse';
import EHighlight from '../element/EHighlight';
import ETriangle from './ETriangle';
import store from '@/store/index';
export default class Switch extends Group {
constructor(model, {style, mapDevice}) {
@ -257,6 +256,20 @@ export default class Switch extends Group {
this.add(this.lockArc);
this.lockArc.hide();
}
if (this.style.Switch.artificialArc) {
this.artificialArc = new ELockArc({ // 宁波三道岔人工模式
zlevel: this.zlevel,
z: this.z + 6,
x: this.model.intersection.x,
y: this.model.intersection.y,
shapeR: this.style.Switch.artificialArc.shapeR,
lineWidth: 2,
stroke: this.style.Switch.artificialArc.strokeColor,
fill: this.style.Switch.artificialArc.fillColor
});
this.add(this.artificialArc);
this.artificialArc.hide();
}
}
setCiConfirm() {
@ -315,6 +328,7 @@ export default class Switch extends Group {
this.enabledName && this.enabledName.hide(); // 使能隐藏
this.lossShow && this.lossShow.hide(); // 道岔失去矩形
this.lossShow && this.lossShow.stopAnimation(false);
this.artificialArc && this.artificialArc.hide();
}
/** 定位*/
@ -660,7 +674,7 @@ export default class Switch extends Group {
this.setSectionState(model);
}
} else {
this.setAshShow()
this.setAshShow();
}
} else {
this.setSwitchFault(model.fault, model.normalPosition, model.reversePosition);
@ -696,6 +710,7 @@ export default class Switch extends Group {
sectionC && sectionC.instance && sectionC.instance.setState(sectionC);
}
model.noStatus && this.setAshShow();
!model.auto && this.artificialArc && this.artificialArc.show();
}
}
setLimitState(flag, limitValue) {

View File

@ -67,7 +67,22 @@ export default {
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>

View File

@ -650,6 +650,9 @@ export default {
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
},
cancleLimitSpeed(order) {
const operate = {
operation: order.operate

View File

@ -116,12 +116,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
if (this.selected.type != '04') {
@ -135,7 +129,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -188,12 +188,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -204,7 +198,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);
@ -277,7 +270,7 @@ export default {
humanTrainRoute() {
commitOperate(menuOperate.Signal.humanTrainRoute, {signalCode: this.selected.code}, 0).then(({valid, operate}) => {
if (valid) {
Object.assign(operate, {operation: OperationEvent.Signal.humanTrainRoute.button.operation })
Object.assign(operate, {operation: OperationEvent.Signal.humanTrainRoute.button.operation });
this.$refs.passwordBox.doShow({...operate, ...{selected: this.selected}});
}
});
@ -342,7 +335,7 @@ export default {
this.$refs.routeGuide.doShow(data, data.selected, data.routesList);
break;
case OperationEvent.Signal.humanTrainRoute.button.operation:
Object.assign(data, {operation: OperationEvent.Signal.humanTrainRoute.menu.operation})
Object.assign(data, {operation: OperationEvent.Signal.humanTrainRoute.menu.operation});
this.$refs.routeControl.doShow(data, data.selected);
break;
}

View File

@ -80,12 +80,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -96,7 +90,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -119,12 +119,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -136,7 +130,6 @@ export default {
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -129,12 +129,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -154,7 +148,6 @@ export default {
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -164,12 +164,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -189,7 +183,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {

View File

@ -9,8 +9,8 @@
v-for="(gridChild,j) in item.children"
:id="j"
:key="j"
:index="active"
ref="eachChildMenu"
:index="active"
:item="gridChild"
class-name="menu-li-block"
:is-next-btn="isNextBtn"
@ -25,8 +25,8 @@
v-for="(gridChild,j) in item.children"
:id="j"
:key="j"
:index="active"
ref="eachChildMenu"
:index="active"
:item="gridChild"
class-name="menu-li-block"
:is-next-btn="isNextBtn"

View File

@ -1,7 +1,13 @@
<template>
<div id="menuBar" :style="{'z-index': zIndex}">
<div class="nav">
<each-child-menu v-for="(item,i) in menu" :id="i" :key="i" ref="eachChildMenu" :item="item" :is-next-btn="isNextBtn"
<each-child-menu
v-for="(item,i) in menu"
:id="i"
:key="i"
ref="eachChildMenu"
:item="item"
:is-next-btn="isNextBtn"
:index="index"
@active="doActie"
@close="doClose"
@ -65,16 +71,17 @@ export default {
initMenu(menu) {
const type = State2SimulationMap[this.$store.state.training.prdType];
this.menu = MenuContextHandler.menuBarConvert(this.menuNormal[type], this.$store.state.training.operatemode);
this.clickEvent();
},
clickEvent() {
const self = this;
window.onclick = function (e) {
if (document.getElementById('menuBar')&&!self.$store.state.training.trainingStart) {
self.doClose(false);
}
};
// this.clickEvent();
},
// clickEvent() {
// const self = this;
// window.onclick = function (e) {
// if (document.getElementById('menuBar') && !self.$store.state.training.trainingStart) {
// console.log('-------------');
// self.doClose(false);
// }
// };
// },
noShowingChildren(children) {
if (!children || children.length <= 0) {
return true;

View File

@ -64,7 +64,22 @@ export default {
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>

View File

@ -470,6 +470,9 @@ export default {
callback: action => {
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
}
}
};

View File

@ -182,12 +182,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
if (this.selected.type == '01' || this.selected.type == '03') {
@ -225,7 +219,6 @@ export default {
});
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -232,12 +232,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal);
//
@ -246,7 +240,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -131,12 +131,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = [];
//
@ -149,7 +143,6 @@ export default {
},
doShow(point) {
if (this.selected.ciStation) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -176,12 +176,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -198,7 +192,6 @@ export default {
// this.menu = MenuContextHandler.covert(this.menu);
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -195,12 +195,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -222,7 +216,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -142,12 +142,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
undeveloped() {
this.doClose();
this.$alert('实现中......', '提示', {
@ -179,7 +173,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {

View File

@ -85,6 +85,25 @@ export default {
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuAxleReset.doClose();
_that.$refs.menuAutoTrunRoute.doClose();
_that.$refs.menuStationStand.doClose();
_that.$refs.menuStationControl.doClose();
_that.$refs.menuStationTurnBack.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
_that.$refs.menuLimit.doClose();
_that.$refs.menuStationLight.doClose();
_that.$refs.menuStationPreReset.doClose();
};
});
this.$root.$on('dialogOpen', e => {
@ -95,7 +114,7 @@ export default {
this.selected.instance.__over = true;
this.selected.instance.mouseEvent.mouseover();
}
})
});
this.$root.$on('dialogClose', e => {
if (this.selected == e &&
@ -107,11 +126,12 @@ export default {
this.selected.instance.mouseEvent.mouseout();
this.$jlmap.clearEvent();
}
})
});
},
beforeDestroy() {
this.$root.$off('dialogOpen');
this.$root.$off('dialogClose');
window.onclick = function (e) {};
}
};
</script>

View File

@ -78,12 +78,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -103,7 +97,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -65,12 +65,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -80,7 +74,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -766,6 +766,9 @@ export default {
callback: action => {
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
}
}
};

View File

@ -69,18 +69,11 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -171,12 +171,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
if (this.selected.type != '04') {
@ -200,7 +194,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -223,12 +223,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal);
if (this.$store.state.training.mode === TrainingMode.NORMAL) {
@ -252,7 +246,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -122,12 +122,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
if (this.selected.centralized) {
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -147,7 +141,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -90,12 +90,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -105,7 +99,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -77,12 +77,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -101,7 +95,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -81,12 +81,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -105,7 +99,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -176,12 +176,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -201,7 +195,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -71,12 +71,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -96,7 +90,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -177,12 +177,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -210,7 +204,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -267,12 +267,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -292,7 +286,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {

View File

@ -70,7 +70,23 @@ export default {
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
_that.$refs.menuLimit.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>

View File

@ -233,12 +233,12 @@ export default {
children: [
{
title: '站台',
operate:'',
operate: OperationEvent.Signal.arrangementRoute.toStand,
click: this.handleArrangeRoute
},
{
title: '信号机',
operate:'',
operate: OperationEvent.Signal.arrangementRoute.toSignal,
click: this.handleArrangeRoute
}
]
@ -249,12 +249,12 @@ export default {
children: [
{
title: '运行线',
operate:'',
operate: OperationEvent.Train.destinationTrainId.menu,
click: this.handleTrainDistributionRunLine
},
{
title: '班次',
operate:'',
operate: OperationEvent.Train.trainDistribute.menu,
click: this.handleTrainDistributionClass
},
{
@ -270,7 +270,7 @@ export default {
children: [
{
title: '发车',
operate:'',
operate: OperationEvent.Train.setTrainDeparture.menu,
click: this.setTrainDepart
},
{
@ -1013,12 +1013,12 @@ export default {
children: [
{
title: '站台',
operate:'',
operate: OperationEvent.Signal.arrangementRoute.toStand,
click: this.handleArrangeRoute
},
{
title: '信号机',
operate:'',
operate: OperationEvent.Signal.arrangementRoute.toSignal,
click: this.handleArrangeRoute
}
]
@ -1029,12 +1029,12 @@ export default {
children: [
{
title: '运行线',
operate:'',
operate: OperationEvent.Train.destinationTrainId.menu,
click: this.handleTrainDistributionRunLine
},
{
title: '班次',
operate:'',
operate: OperationEvent.Train.trainDistribute.menu,
click: this.handleTrainDistributionClass
},
{
@ -1050,7 +1050,7 @@ export default {
children: [
{
title: '发车',
operate:'',
operate:OperationEvent.Train.setTrainDeparture.menu,
click: this.setTrainDepart
},
{
@ -1905,7 +1905,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.arrangeRoute.doShow();
this.$refs.arrangeRoute.doShow(operate);
}
});
},
@ -1929,7 +1929,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDistribution.doShow(operate, 'second');
this.$refs.trainDistribution.doShow(operate, 'third');
}
});
},
@ -1941,7 +1941,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$refs.trainDistribution.doShow(operate, 'third');
this.$refs.trainDistribution.doShow(operate, 'second');
}
});
},
@ -2597,6 +2597,9 @@ export default {
this.$refs.routeDetail.doShow(operate);
}
});
},
blankClickClose() {
this.$refs.menuBar.doClose();
}
}
};

View File

@ -2,13 +2,17 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="1000px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="10">
<el-table :data="tableData" height="397px" style="margin-top: 57px" highlight-current-row @current-change="handleTrainChange">
<el-table ref="trainTable" :data="tableData" height="397px" style="margin-top: 57px" highlight-current-row @current-change="handleTrainChange">
<el-table-column label="列车">
<template slot-scope="scope">
<span>{{ scope.row }}</span>
</template>
</el-table-column>
<el-table-column prop="groupNumber" label="班次" />
<el-table-column prop="groupNumber" label="班次">
<template slot-scope="scope">
<span>{{ getServiceNum(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column label="运行线">
<template slot-scope="scope">
<span>{{ getTrainDestinationCode(scope.row) }}</span>
@ -32,7 +36,7 @@
</div>
</el-col>
<el-col :span="12" :offset="1">
<el-table :data="tempData" height="340px" highlight-current-row @current-change="handlePathChange">
<el-table ref="pathTable" :data="tempData" height="340px" highlight-current-row @current-change="handlePathChange">
<el-table-column prop="groupNumber" label="路径" />
<el-table-column prop="groupNumber" label="运行方向">
<template slot-scope="scope">
@ -47,7 +51,7 @@
<el-tab-pane label="信号机" name="second">
<el-row>
<el-col :span="11">
<el-table :data="signalList" height="380px" highlight-current-row @current-change="handleSignalChange">
<el-table ref="signalTable" :data="signalList" height="380px" highlight-current-row @current-change="handleSignalChange">
<el-table-column prop="name" label="信号机" />
<el-table-column prop="show" label="显示" />
</el-table>
@ -70,7 +74,7 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -89,8 +93,6 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
// import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
import { mapGetters } from 'vuex';
import { getPathListByStandCodeOrSignalCode } from '@/api/simulation';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
@ -138,6 +140,9 @@ export default {
},
title() {
return '列车排进路';
},
commitDisabled() {
return !(this.routeCodeList && this.routeCodeList.length);
}
},
watch: {
@ -148,7 +153,6 @@ export default {
}
},
methods: {
expandPath() {
console.log('展开进路预览');
},
@ -158,8 +162,17 @@ export default {
this.selectTrainCode = '';
this.selectStandCode = '';
this.selectSignalCode = '';
this.tempData = [];
this.tableData = this.$store.state.map.activeTrainList;
if (operate.operation === OperationEvent.Signal.arrangementRoute.toStand) {
this.activeName = 'first';
} else if (operate.operation === OperationEvent.Signal.arrangementRoute.toSignal) {
this.activeName = 'second';
}
this.$nextTick(function () {
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
this.$refs.pathTable && this.$refs.pathTable.setCurrentRow();
this.$refs.signalTable && this.$refs.signalTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
@ -169,6 +182,10 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
getServiceNum(code) {
const train = this.$store.getters['map/getDeviceByCode'](code);
return (train || {}).serviceNumber;
},
getTrainDestinationCode(trainCode) {
const train = this.$store.getters['map/getDeviceByCode'](trainCode);
return train.destinationCode;
@ -233,7 +250,7 @@ export default {
over: true,
operation: OperationEvent.Train.trainSetRoute.confirm.operation,
cmdType: CMD.Train.CMD_TRAIN_SET_ROUTE,
param: { routes: this.routeCodeList }
param: { routeCodes: this.routeCodeList, groupNumber: this.selectTrainCode }
};
this.$store.dispatch('training/nextNew', operate).then(({valid}) => {
if (valid) {

View File

@ -1,18 +1,46 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="800px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-table ref="table" :data="data" height="200px">
<el-table-column prop="code" label="进路" />
<el-table-column prop="area" label="区域" />
<el-table-column prop="status" label="状态" />
<el-col :span="6">
<el-table ref="trainTable" :data="activeTrainList" height="400px" highlight-current-row @current-change="handleTrainChange">
<el-table-column label="列车">
<template slot-scope="scope">{{ scope.row }}</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="18">
<div class="simulate_table">
<div style="display: flex;">
<div class="simulate_table_header" style="width: 190px;">进路</div>
<div class="simulate_table_header" style="width: 190px;">区域</div>
<div class="simulate_table_header" style="width: 170px;">状态</div>
</div>
<template v-for="item in routeList">
<div :key="item.code" class="defaultStand" :class="{'selectedStand' :selectedRouteList.includes(item.code)}" @click="handleRouteChange(item)">
<div style="width: 190px;padding-left: 10px;">{{ item.name }}</div>
<div style="width: 190px;padding-left: 10px;">{{ getArea(item) }}</div>
<div style="width: 170px;padding-left: 10px;">建立</div>
</div>
</template>
</div>
<!--<el-table ref="table" :data="routeList" height="400px" highlight-current-row @current-change="handleRouteChange">-->
<!--<el-table-column prop="code" label="进路" />-->
<!--<el-table-column prop="area" label="区域">-->
<!--<template slot-scope="scope">-->
<!--<span>{{ getArea(scope.row) }}</span>-->
<!--</template>-->
<!--</el-table-column>-->
<!--<el-table-column prop="status" label="状态">建立</el-table-column>-->
<!--</el-table>-->
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="buttonDisabled" @click="commit(true)">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
<el-button :disabled="buttonDisabled" @click="commit(false)">应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdClose" @click="cancel">关闭(C)</el-button>
@ -28,7 +56,8 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { getRouteListForTrain } from '@/api/simulation';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
export default {
@ -47,7 +76,10 @@ export default {
operate: {},
allCheck: false,
slidingTime: 0,
data: []
routeList: [],
activeTrainList: [],
selectedTrainCode: '',
selectedRouteList: []
};
},
computed: {
@ -68,6 +100,9 @@ export default {
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
buttonDisabled() {
return !(this.selectedTrainCode && this.selectedRouteList.length);
},
title() {
return '取消CBTC列车进路';
}
@ -77,6 +112,9 @@ export default {
if (this.show) {
this.commit();
}
},
'$store.state.map.activeTrainListUpdate': function (val) {
this.activeTrainList = [...this.$store.state.map.activeTrainList];
}
},
methods: {
@ -84,21 +122,94 @@ export default {
this.operate = operate;
//
this.dialogShow = true;
this.activeTrainList = [...this.$store.state.map.activeTrainList];
this.routeList = [];
this.selectedTrainCode = '';
this.selectedRouteList = [];
this.$nextTick(function () {
this.$refs.table.setCurrentRow();
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
handleClick() {
commit(isClose = false) {
const step = {
over: true,
cmdType: CMD.Train.CMD_TRAIN_CANCEL_CBTC_ROUTE,
operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation,
param: { routeCodes: this.selectedRouteList }
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
if (isClose) {
this.$store.dispatch('menuOperation/setSelected', {device: {}});
this.doClose();
}
}
}).catch((e) => {
console.error(e);
isClose && this.doClose();
this.$refs.noticeInfo.doShow();
});
},
getArea(row) {
const signal = this.$store.getters['map/getDeviceByCode'][row.startSignalCode];
if (signal && signal.belongStationCode) {
const station = this.$store.getters['map/getDeviceByCode'][signal.belongStationCode];
return (station || {}).name;
} else {
return '';
}
},
handleTrainChange(val) {
const step = {
code: val,
operation: OperationEvent.Signal.cancelTrainRoute.choose.operation,
val: val
};
const _that = this;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.selectedTrainCode = val;
this.routeList = [];
getRouteListForTrain(_that.$route.query.group, val).then(resp => {
const routeData = this.$store.state.map.routeData;
(resp.data || []).forEach(item => {
_that.routeList.push(routeData[item]);
});
});
}
}).catch((e) => {
console.error(e);
this.$refs.noticeInfo.doShow();
});
},
handleRouteChange(row) {
const index = this.selectedRouteList.indexOf(row.code);
if (index === -1) {
this.selectedRouteList.push(row.code);
} else {
this.selectedRouteList.splice(index, 1);
}
const step = {
operation: OperationEvent.Signal.cancelTrainRoute.choose1.operation,
val: this.selectedRouteList
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch((e) => {
console.error(e);
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
@ -139,4 +250,38 @@ export default {
z-index: 22;
left: 10px;
}
.simulate_table_header{
padding-left: 10px;
border-right: 1px solid #BDBDBD;
border-bottom: 1px solid #BDBDBD;
height: 20px;
background: #F0F0F0;
line-height: 20px;
font-size: 14px;
color: #000;
font-weight: bold;
}
.simulate_table {
height: 400px;
overflow-y: scroll;
background: #fff;
border-top: 2px solid #959595;
border-left: 2px solid #959595;
border-right: 2px solid #E9E9E9;
border-bottom: 2px solid #E9E9E9;
}
.defaultStand{
display: flex;
background: #fff;
color: #000;
height: 20px;
line-height: 20px;
font-size: 14px;
border-bottom: 1px solid #fff;
}
.selectedStand{
display: flex;
background: #3399FF;
color: #fff;
}
</style>

View File

@ -26,10 +26,10 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="status " @click="commit(true)">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="!selectSignalCode" @click="commit(true)">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdApply" type="primary" :loading="loading" :disabled="status" @click="commit(false)">应用(A)</el-button>
<el-button :id="domIdApply" type="primary" :loading="loading" :disabled="!selectSignalCode" @click="commit(false)">应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdClose" @click="cancel">关闭(C)</el-button>
@ -61,7 +61,8 @@ export default {
allChecked: false,
dialogShow: false,
loading: false,
operate: ''
operate: '',
selectSignalCode: ''
};
},
computed: {
@ -104,6 +105,7 @@ export default {
doShow(operate) {
this.operate = operate;
this.dialogShow = true;
this.selectSignalCode = '';
this.$nextTick(function () {
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
@ -145,9 +147,9 @@ export default {
? OperationEvent.Command.common.confirm.operation
: OperationEvent.Command.common.apply.operation,
over: true,
param: {signalCode:[val.code]}
param: {signalCode:val.code}
};
step.cmdType = CMD.Signal.CMD_SIGNAL_CLOSE_GUIDE;
step.cmdType = CMD.Signal.CMD_SIGNAL_CANCEL_GUIDE;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
@ -156,7 +158,8 @@ export default {
this.loading = false;
isClose && this.doClose();
}
}).catch(() => {
}).catch((e) => {
console.error(e);
isClose && this.doClose();
this.$refs.noticeInfo.doShow();
});
@ -171,6 +174,7 @@ export default {
signalCode: val.code
}
};
this.selectSignalCode = val.code;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });

View File

@ -2,7 +2,7 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="900px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="(sure? 18: 21) + (isSetSpeed? 0: 3)">
<el-table ref="singleTable1" :id="domIdChoose" :data="tempList" highlight-current-row height="300px" @current-change="selectLine1">
<el-table :id="domIdChoose" ref="singleTable1" :data="tempList" highlight-current-row height="300px" @current-change="selectLine1">
<el-table-column prop="name" label="轨道" />
<el-table-column prop="blockStatus" width="120" label="MAU">
<template slot-scope="scope">
@ -28,12 +28,12 @@
<el-table-column prop="unblockProcess" label="用户里程终点" width="110" />
</el-table>
</el-col>
<el-col :span="3" v-if="isSetSpeed">
<el-table ref="singleTable2" :id="domIdSelect" :data="limitList" highlight-current-row height="300px" @current-change="selectLine2">
<el-col v-if="isSetSpeed" :span="3">
<el-table :id="domIdSelect" ref="singleTable2" :data="limitList" highlight-current-row height="300px" @current-change="selectLine2">
<el-table-column prop="name" label="速度" />
</el-table>
</el-col>
<el-col :span="3" v-if="sure">
<el-col v-if="sure" :span="3">
<fieldset style="padding-left: 10px;">
<legend class="card_title">命令</legend>
<el-radio-group v-model="command">
@ -68,17 +68,20 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
components: {
NoticeInfo
},
props: {
initCacheMap: {
type: Object,
default() {
return {}
return {};
}
},
initInfo: {
type: Object,
default() {
return {}
return {};
}
},
updateDone: {
@ -86,9 +89,6 @@ export default {
default: 0
}
},
components: {
NoticeInfo
},
data() {
return {
title: '',
@ -123,7 +123,7 @@ export default {
speedLimitValue: 0,
currentSelect: null,
noInit: true,
changeIgnore: false,
changeIgnore: false
};
},
computed: {
@ -134,7 +134,7 @@ export default {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
tempList() {
return this.sectionList.filter(el => ['01', '04'].includes(el.type) )
return this.sectionList.filter(el => ['01', '04'].includes(el.type) );
},
isSetSpeed() {
return this.operate && this.operate.operation.includes(OperationEvent.Command.commandNingBo3.line_section_setSpeed.operation);
@ -205,13 +205,13 @@ export default {
doClose() {
this.loading = false;
this.dialogShow = false;
this.speedLimitValue = 0;
this.sure && (this.currentSelect = null);
this.sure && (this.speedLimitValue = 0);
this.sure && this.$refs.singleTable1.setCurrentRow();
this.sure && this.isSetSpeed && this.$refs.singleTable2.setCurrentRow();
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 = true) {
@ -219,7 +219,7 @@ export default {
this.currentSelect.code == this.initSelect.code &&
this.speedLimitValue == this.initParams.value) {
const cacheMap = this.getCacheMap();
const isOK = this.command&&(!this.sure || this.sure&&cacheMap[this.currentSelect.code])
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,
@ -235,11 +235,12 @@ export default {
} else {
this.$root.$emit('removeCache', this.cmdType.value, this.currentSelect.code);
}
this.$emit('updateDone')
this.$emit('updateDone');
this.$store.dispatch('map/flushMapRef');
isClose && this.doClose();
}
}).catch(() => {
}).catch((e) => {
console.error(e);
this.$refs.noticeInfo.doShow();
});
} else {
@ -249,7 +250,7 @@ export default {
selectLine1(val) {
if (!val) { return; }
this.currentSelect = this.$store.getters['map/getDeviceByCode'](val.code);
this.$emit('updateDone')
this.$emit('updateDone');
if (this.changeIgnore) { return; }
const step = {
@ -271,7 +272,7 @@ export default {
selectLine2(val) {
if (!val) { return; }
this.speedLimitValue = val.value;
this.$emit('updateDone')
this.$emit('updateDone');
if (this.changeIgnore) { return; }
const step = {
@ -283,7 +284,7 @@ export default {
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.sure || this.$emit('initSelect', this.currentSelect, {value: this.speedLimitValue});
this.sure || this.$emit('initSelect', this.currentSelect, {value: this.isSetSpeed ? this.speedLimitValue : 0});
}
}).catch(() => {
this.$refs.noticeInfo.doShow();
@ -308,7 +309,7 @@ export default {
if (this.sure) {
return cache.done == 'two' ? this.isSetSpeed ? '确认设置限速完成' : '确认清除限速完成' : '等待确认/取消';
} else {
return cache.done == 'one' ? '已初始化' : ''
return cache.done == 'one' ? '已初始化' : '';
}
}
return '';

View File

@ -21,7 +21,7 @@
</el-table-column>
</el-table>
</el-col>
<el-col :span="5" :offset="1" v-if="sure">
<el-col v-if="sure" :span="5" :offset="1">
<fieldset style="position: absolute;top: 40%;">
<legend class="card_title">命令</legend>
<el-radio-group v-model="command">
@ -63,13 +63,13 @@ export default {
initCacheMap: {
type: Object,
default() {
return {}
return {};
}
},
initInfo: {
type: Object,
default() {
return {}
return {};
}
},
updateDone: {
@ -104,19 +104,19 @@ export default {
return this.operate && this.operate.operation.includes(OperationEvent.Command.commandNingBo3.line_section_close.operation);
},
cmdType() {
return this.isBlock ? CMD.Section.CMD_SECTION_BLOCK : CMD.Section.CMD_SECTION_UNBLOCK
return this.isBlock ? CMD.Section.CMD_SECTION_CLOSE : CMD.Section.CMD_SECTION_OPEN;
},
initSelect() {
return this.initInfo.initSelect || {};
},
disabled() {
return !this.currentSelect || (this.isBlock? this.currentSelect.blockade: !this.currentSelect.blockade) || this.noInit;
return !this.currentSelect || (this.isBlock ? this.currentSelect.closed : !this.currentSelect.closed) || this.noInit;
},
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
tempList() {
return this.sectionList.filter(el => ['01', '04'].includes(el.type) )
return this.sectionList.filter(el => ['01', '04'].includes(el.type) );
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Command.common.choose.domId : '';
@ -173,14 +173,14 @@ export default {
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.$store.dispatch('training/emitTipFresh');
},
commit(isClose = true) {
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 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,
@ -196,12 +196,13 @@ export default {
} else {
this.$root.$emit('removeCache', this.cmdType.value, this.currentSelect.code);
}
this.$emit('updateDone')
this.$emit('updateDone');
this.$store.dispatch('map/flushMapRef');
isClose && this.doClose();
}
}).catch(() => {
isClose && this.isClose();
}).catch((e) => {
console.error(e);
isClose && this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
@ -211,7 +212,7 @@ export default {
handleChangeLine(val) {
if (!val) { return; }
this.currentSelect = this.$store.getters['map/getDeviceByCode'](val.code);
this.$emit('updateDone')
this.$emit('updateDone');
if (this.changeIgnore) { return; }
const step = {
@ -221,7 +222,7 @@ export default {
};
this.changeIgnore = false;
this.$emit('updateDone')
this.$emit('updateDone');
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
@ -238,7 +239,7 @@ export default {
if (this.sure) {
return cache.done == 'two' ? this.isBlock ? '确认关闭轨道完成' : '确认开放轨道完成' : '等待确认/取消';
} else {
return cache.done == 'one' ? '已初始化' : ''
return cache.done == 'one' ? '已初始化' : '';
}
}
return '';

View File

@ -2,21 +2,19 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="16">
<el-table
ref="table"
:data="stationStandList"
highlight-current-row
height="350px"
:id="domIdChoose"
@current-change="handleCurrentChange"
>
<el-table-column prop="name" label="站台" />
<el-table-column prop="groupNumber" label="状态">
<template slot-scope="scope">
<span>{{ getStandStatus(scope.row.code) }}</span>
<div class="simulate_table">
<div style="display: flex;">
<div class="simulate_table_header" style="width: 120px;">站台</div>
<div class="simulate_table_header" style="width: 120px;">扣车</div>
<div class="simulate_table_header" style="width: 100px;">状态</div>
</div>
<template v-for="item in stationStandList">
<div :key="item.code" class="defaultStand" :class="{'selectedStand' :selectedStandList.includes(item.code)}" @click="clickStand(item)">
<div style="width: 120px;padding-left: 10px;">{{ item.name }}</div>
<div style="width: 100px;padding-left: 10px;">{{ getStandStatus(item.code) }}</div>
</div>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="7" :offset="1">
<div class="set-status-box">
@ -25,18 +23,18 @@
<br>
<el-radio v-model="status" :disabled="status" :label="false">关闭</el-radio>
</div>
<el-checkbox v-model="allChecked" :disabled="true" style="position: relative; top: 220px;">所有站台(F)</el-checkbox>
<el-checkbox v-model="allChecked" style="position: relative; top: 220px;" @change="allCheckedChange">所有站台(F)</el-checkbox>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :disabled="!selected" :loading="loading" @click="commit(true)">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :disabled="buttonDisabled" :loading="loading" @click="commit(true)">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdApply" :disabled="!selected" :loading="loading" @click="commit(false)">应用(A)</el-button>
<el-button :id="domIdApply" :disabled="buttonDisabled" :loading="loading" @click="commit(false)">应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdClose" :disabled="!selected" :loading="loading" @click="cancel">关闭(C)</el-button>
<el-button :id="domIdClose" :loading="loading" @click="cancel">关闭(C)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>帮助(H)</el-button>
@ -62,7 +60,8 @@ export default {
status: false,
allChecked: false,
dialogShow: false,
loading: false
loading: false,
selectedStandList: []
};
},
computed: {
@ -72,11 +71,11 @@ export default {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
selected() {
return this.$store.state.menuOperation.selected;
buttonDisabled() {
return !this.selectedStandList.length;
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Command.common.choose.domId : ''
return this.dialogShow ? OperationEvent.Command.common.choose.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.common.confirm.domId : '';
@ -112,23 +111,46 @@ export default {
doShow(operate) {
//
this.dialogShow = true;
this.selectedStandList = [];
this.allChecked = false;
this.$nextTick(function () {
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
clickStand(val) {
const index = this.selectedStandList.indexOf(val.code);
if (index === -1) {
this.selectedStandList.push(val.code);
} else {
this.selectedStandList.splice(index, 1);
}
if (this.selectedStandList.length === this.stationStandList.length) {
this.allChecked = true;
} else {
this.allChecked = false;
}
this.judgeStatus();
},
judgeStatus() {
this.status = false;
this.selectedStandList.forEach(code => {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (stand.closed) {
this.status = true;
}
});
},
commit(isClose = false) {
const step = {
over: true,
cmdType:this.status ? CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP : CMD.Stand.CMD_STAND_SET_JUMP_STOP,
cmdType:this.status ? CMD.Stand.CMD_STAND_OPEN : CMD.Stand.CMD_STAND_CLOSE,
operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation,
param: {standCode: this.selected.code}
param: {standCodes: this.selectedStandList}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
@ -144,28 +166,20 @@ export default {
},
getStandStatus(code) {
const standEle = this.$store.getters['map/getDeviceByCode'](code);
if (standEle.allSkip) {
if (standEle.closed) {
return '关闭';
} else {
return '打开';
}
},
handleCurrentChange(val) {
if (!val) { return; }
const standEle = this.$store.getters['map/getDeviceByCode'](val.code);
const step = {
code: val.code,
operation: OperationEvent.Command.common.choose.operation,
val: val.code
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/setSelected', {device: val});
}
}).catch(() => {
this.$refs.noticeInfo.doShow();
allCheckedChange(val) {
this.selectedStandList = [];
if (val) {
this.stationStandList.forEach(item => {
this.selectedStandList.push(item.code);
});
}
this.judgeStatus();
},
cancel() {
const operate = {
@ -205,4 +219,37 @@ export default {
width: 60px;
text-align: center;
}
.simulate_table_header{
padding-left: 10px;
border-right: 1px solid #BDBDBD;
border-bottom: 1px solid #BDBDBD;
height: 20px;
background: #F0F0F0;
line-height: 20px;
font-size: 14px;
color: #000;
font-weight: bold;
}
.simulate_table {
height: 280px;
overflow-y: scroll;
border-top: 2px solid #959595;
border-left: 2px solid #959595;
border-right: 2px solid #E9E9E9;
border-bottom: 2px solid #E9E9E9;
}
.defaultStand{
display: flex;
background: #fff;
color: #000;
height: 20px;
line-height: 20px;
font-size: 14px;
border-bottom: 1px solid #fff;
}
.selectedStand{
display: flex;
background: #3399FF;
color: #fff;
}
</style>

View File

@ -4,25 +4,21 @@
<el-col :span="16">
<el-tabs v-model="activeName" type="border-card" @tab-click="changeTabs">
<el-tab-pane label="站台" name="first">
<el-table
:id="domIdChoose"
ref="table"
:data="stationStandList"
highlight-current-row
height="280px"
@current-change="handleCurrentChange"
>
<el-table-column prop="name" label="站台" />
<el-table-column prop="detain" label="扣车">
<template slot-scope="scope">
<span>{{ getDetainStatus(scope.row.code) }}</span>
<div class="simulate_table">
<div style="display: flex;">
<div class="simulate_table_header" style="width: 120px;">站台</div>
<div class="simulate_table_header" style="width: 120px;">扣车</div>
<div class="simulate_table_header" style="width: 100px;">状态</div>
</div>
<template v-for="item in stationStandList">
<div :key="item.code" class="defaultStand" :class="{'selectedStand' :selectedStandList.includes(item.code)}" @click="clickStand(item)">
<div style="width: 120px;padding-left: 10px;">{{ item.name }}</div>
<div style="width: 120px;padding-left: 10px;">{{ getDetainStatus(item.code) }}</div>
<div style="width: 100px;padding-left: 10px;">{{ getStandStatus(item.code) }}</div>
</div>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="80">
<span>打开</span>
</el-table-column>
</el-table>
<el-checkbox v-model="allChecked" :disabled="true">所有站台(F)</el-checkbox>
</div>
<el-checkbox v-model="allChecked" style="margin-top: 10px;" @change="allCheckedChange">所有站台(F)</el-checkbox>
</el-tab-pane>
<el-tab-pane label="系统" style="height:310px;background: #F0F0F0;" name="second">
<div class="systemStatusOut">
@ -45,10 +41,10 @@
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="!((selected.code&&activeName!='second')||activeName=='second')" @click="commit(true)">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="buttonDisabled" @click="commit(true)">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdApply" :loading="loading" :disabled="!((selected.code&&activeName!='second')||activeName=='second')" @click="commit(false)">应用(A)</el-button>
<el-button :id="domIdApply" :loading="loading" :disabled="buttonDisabled" @click="commit(false)">应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdClose" @click="cancel">关闭(C)</el-button>
@ -79,7 +75,8 @@ export default {
dialogShow: false,
loading: false,
activeName: 'first',
active: '未激活'
active: '未激活',
selectedStandList: []
};
},
computed: {
@ -89,10 +86,9 @@ export default {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
selected() {
return this.$store.state.menuOperation.selected;
buttonDisabled() {
return !((this.selectedStandList.length && this.activeName === 'first') || this.activeName === 'second');
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Command.common.choose.domId : '';
},
@ -114,16 +110,6 @@ export default {
if (this.show) {
this.commit();
}
},
'selected': function(val) {
if (val) {
const stand = this.$store.getters['map/getDeviceByCode'](val.code);
if (stand && !stand.stationHoldTrain && !stand.centerHoldTrain) {
this.status = true;
} else {
this.status = false;
}
}
}
},
methods: {
@ -131,48 +117,71 @@ export default {
console.log('展开进路预览');
},
doShow(data) {
if (data.active == 'second') {
this.judgeStatus();
}
this.activeName = data.active;
//
this.dialogShow = true;
this.selectedStandList = [];
this.allChecked = false;
this.$nextTick(function () {
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
this.judgeStatus();
},
clickStand(val) {
const index = this.selectedStandList.indexOf(val.code);
if (index === -1) {
this.selectedStandList.push(val.code);
} else {
this.selectedStandList.splice(index, 1);
}
if (this.selectedStandList.length === this.stationStandList.length) {
this.allChecked = true;
} else {
this.allChecked = false;
}
this.judgeStatus();
},
changeTabs() {
if (this.activeName == 'second') {
this.judgeStatus();
} else {
this.status = true;
}
},
judgeStatus() {
this.status = true;
if (this.activeName === 'second') {
this.status = !this.stationStandList.some(item => {
const stand = this.$store.getters['map/getDeviceByCode'](item.code);
return stand.sysHoldTrain == 1;
});
} else {
this.selectedStandList.forEach(code => {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (stand.centerHoldTrain || stand.stationHoldTrain) {
this.status = false;
this.stationStandList.forEach(element => {
const stand = this.$store.getters['map/getDeviceByCode'](element.code);
if (stand.sysHoldTrain) {
this.status = this.status || true;
}
});
this.status = !this.status;
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
allCheckedChange(val) {
this.selectedStandList = [];
if (val) {
this.stationStandList.forEach(item => {
this.selectedStandList.push(item.code);
});
}
this.judgeStatus();
},
commit(isClose = false) {
let step = {};
if (this.activeName == 'first') {
step = {
over: true,
cmdType:this.status ? CMD.Stand.CMD_STAND_SET_HOLD_TRAIN : CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN,
cmdType:this.status ? CMD.Stand.CMD_STAND_SET_HOLD_TRAIN_ALL : CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN_ALL,
operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation,
param: {standCode: this.selected.code}
param: {standCodes: this.selectedStandList}
};
} else {
step = {
@ -189,7 +198,6 @@ export default {
this.doClose();
} else {
if (this.activeName == 'second') {
// this.judgeStatus();
this.status = !this.status;
}
}
@ -199,23 +207,6 @@ export default {
this.$refs.noticeInfo.doShow();
});
},
handleCurrentChange(val) {
if (!val) { return; }
const step = {
code: val.code,
operation: OperationEvent.Command.common.choose.operation,
val: val.code
};
this.$store.dispatch('menuOperation/setSelected', {device: val});
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch(() => {
this.$refs.noticeInfo.doShow();
});
},
getDetainStatus(code) {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (!stand.stationHoldTrain && !stand.centerHoldTrain) {
@ -224,6 +215,14 @@ export default {
return '扣车';
}
},
getStandStatus(code) {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (!stand.emergencyClosed) {
return '打开';
} else {
return '关闭';
}
},
cancel() {
const operate = {
operation: OperationEvent.Command.common.close.operation
@ -285,4 +284,37 @@ export default {
border: 1px #ccc solid;
width: 290px;
}
.simulate_table_header{
padding-left: 10px;
border-right: 1px solid #BDBDBD;
border-bottom: 1px solid #BDBDBD;
height: 20px;
background: #F0F0F0;
line-height: 20px;
font-size: 14px;
color: #000;
font-weight: bold;
}
.simulate_table {
height: 280px;
overflow-y: scroll;
border-top: 2px solid #959595;
border-left: 2px solid #959595;
border-right: 2px solid #E9E9E9;
border-bottom: 2px solid #E9E9E9;
}
.defaultStand{
display: flex;
background: #fff;
color: #000;
height: 20px;
line-height: 20px;
font-size: 14px;
border-bottom: 1px solid #fff;
}
.selectedStand{
display: flex;
background: #3399FF;
color: #fff;
}
</style>

View File

@ -2,7 +2,6 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="650px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="18">
<!--<el-table :data="switchList" height="350px">-->
<el-table
ref="table"
:data="switchList"
@ -11,7 +10,11 @@
@current-change="handleCurrentChange"
>
<el-table-column prop="name" label="道岔" />
<el-table-column prop="mode" label="模式" />
<el-table-column prop="mode" label="模式">
<template slot-scope="scope">
<span>{{ getSwitchMode(scope.row.code) }}</span>
</template>
</el-table-column>
<el-table-column prop="position" label="位置">
<template slot-scope="scope">
<span>{{ getSwitchPosition(scope.row.code) }}</span>
@ -28,28 +31,28 @@
<el-col :span="6">
<div class="radio-box-title">设置模式</div>
<div class="radio-box">
<el-radio v-model="mode" label="auto" :disabled="true" style="display: block;margin-bottom: 10px;">自动</el-radio>
<el-radio v-model="mode" label="artificial" :disabled="true" style="display: block;">人工</el-radio>
<el-radio v-model="mode" label="auto" :disabled="!!selectedSwitch.auto" style="display: block;margin-bottom: 10px;">自动</el-radio>
<el-radio v-model="mode" label="artificial" :disabled="!selectedSwitch.auto" style="display: block;">人工</el-radio>
</div>
<div class="radio-box-title">设置位置</div>
<div class="radio-box">
<el-radio v-model="position" label="normal" :disabled="!selected&&mode=='auto'" style="display: block;margin-bottom: 10px;">定位</el-radio>
<el-radio v-model="position" label="reverse" :disabled="!selected&&mode=='auto'" style="display: block;">反位</el-radio>
<el-radio v-model="position" label="normal" :disabled="!!(selectedSwitch.normalPosition || selectedSwitch.auto)" style="display: block;margin-bottom: 10px;">定位</el-radio>
<el-radio v-model="position" label="reserve" :disabled="!!(selectedSwitch.reversePosition || selectedSwitch.auto)" style="display: block;">反位</el-radio>
</div>
<div class="radio-box-title">设置预留</div>
<div class="radio-box">
<el-radio v-model="reserved" label="auto" :disabled="!selected&&mode=='auto'" style="display: block;margin-bottom: 10px;">自动与预留</el-radio>
<el-radio v-model="reserved" label="reversed" :disabled="!selected&&mode=='auto'" style="display: block;margin-bottom: 10px;">预留</el-radio>
<el-radio v-model="reserved" label="release" :disabled="!selected&&mode=='auto'" style="display: block;">释放</el-radio>
<el-radio v-model="reserved" label="auto" :disabled="true" style="display: block;margin-bottom: 10px;">自动与预留</el-radio>
<el-radio v-model="reserved" label="reversed" :disabled="true" style="display: block;margin-bottom: 10px;">预留</el-radio>
<el-radio v-model="reserved" label="release" :disabled="true" style="display: block;">释放</el-radio>
</div>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :disabled="!selected" :loading="loading" :selected="true" @click="commit(true)">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :disabled="!selectedSwitchCode" :loading="loading" :selected="true" @click="commit(true)">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdConfirm" type="primary" :disabled="!selected" :loading="loading" :selected="true" @click="commit(false)">应用(A)</el-button>
<el-button :id="domIdConfirm" type="primary" :disabled="!selectedSwitchCode" :loading="loading" :selected="true" @click="commit(false)">应用(A)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button :id="domIdClose" @click="cancel">关闭(C)</el-button>
@ -67,6 +70,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'StandDetain',
@ -80,9 +84,11 @@ export default {
allChecked: false,
dialogShow: false,
loading: false,
mode: 'artificial',
selectedSwitchCode: '',
selectedSwitch: {},
mode: '',
position: '',
reserved: 'reversed'
reserved: ''
};
},
@ -93,9 +99,6 @@ export default {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
selected() {
return this.$store.state.menuOperation.selected;
},
domIdClose() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
@ -110,28 +113,18 @@ export default {
}
},
watch: {
mode(val) {
if (val == 'auto') {
this.position = '';
this.reserved = '';
}
},
'$store.state.map.keyboardEnterCount': function (val) {
if (this.show) {
this.commit();
}
},
'selected': function(val) {
if (val) {
const section = this.$store.getters['map/getDeviceByCode'](val.code);
this.position = section && section.normalPosition? 'reverse': 'normal';
}
}
},
methods: {
doShow(operate) {
//
this.dialogShow = true;
this.mode = '';
this.position = '';
this.$nextTick(function () {
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
@ -140,36 +133,61 @@ export default {
doClose() {
this.loading = false;
this.dialogShow = false;
this.mode = '';
this.position = '';
this.$refs.table.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
commit(isClose = false) {
const cmd = this.mode == 'auto'
? menuOperate.Switch.turnout
: {
normal: menuOperate.Switch.locate,
reverse: menuOperate.Switch.reverse
}[this.position];
if (cmd) {
commitOperate(cmd, {switchCode: this.selected.code}, 3).then(({valid})=>{
if (valid) {
isClose && this.doClose();
const params = {
switchCode: this.selectedSwitchCode,
auto: null,
reserve: null,
normal: null
};
if (this.mode) {
params.auto = this.mode === 'auto';
}
}).catch(_ => {
if (this.position) {
params.reserve = this.position === 'reserve';
params.normal = this.position === 'normal';
}
const step = {
over: true,
cmdType: CMD.Switch.CMD_SWITCH_COMMAND,
operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation,
param: params
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.mode = '';
this.position = '';
if (isClose) {
this.$store.dispatch('menuOperation/setSelected', {device: {}});
this.doClose();
}
}
}).catch((e) => {
console.error(e);
isClose && this.doClose();
this.$refs.noticeInfo.doShow();
});
} else {
this.$message.info('未知指令');
}
},
handleCurrentChange(val) {
if (!val) { return; }
commitOperate(menuOperate.Switch.turnout, {code:val.code}).then(({valid, operate})=>{
if (valid) {
this.position = '';
this.$store.dispatch('menuOperation/setSelected', {device: val});
const switchModel = this.$store.getters['map/getDeviceByCode'](val.code);
this.selectedSwitchCode = val.code;
this.selectedSwitch = switchModel;
// this.mode = elem.auto ? 'artificial' : 'auto';
// if (!elem.auto) {
// if (elem.normalPosition) { this.position = 'reverse'; }
// if (elem.reversePosition) { this.position = 'normal'; }
// }
}
});
},
@ -183,6 +201,14 @@ export default {
return '';
}
},
getSwitchMode(code) {
const elem = this.$store.getters['map/getDeviceByCode'](code);
if (elem.auto) {
return '自动';
} else {
return '人工';
}
},
getSwitchStatus(code) {
const elem = this.$store.getters['map/getDeviceByCode'](code);
if (elem.blockade) {

View File

@ -1,17 +1,29 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-table :data="trainList" height="300px">
<el-table-column prop="code" label="列车" />
<el-table-column prop="interval" label="班次" />
<el-table ref="trainTable" :data="tableData" height="300px" highlight-current-row @current-change="handleCurrentChange">
<el-table-column prop="code" label="列车">
<template slot-scope="scope">
<span>{{ scope.row }}</span>
</template>
</el-table-column>
<el-table-column prop="interval" label="班次">
<template slot-scope="scope">
<span>{{ getServiceNum(scope.row) }}</span>
</template>
</el-table-column>
<el-table-column v-if="isDepart" prop="interval" label="模式" />
<el-table-column v-if="isDepart" prop="interval" label="状态" />
<el-table-column v-if="isDepart||isBreakAway" prop="interval" label="运行线" />
<el-table-column v-if="isDepart||isBreakAway" prop="interval" label="运行线">
<template slot-scope="scope">
<span>{{ getTrainDestinationCode(scope.row) }}</span>
</template>
</el-table-column>
</el-table>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="!selectTrainCode" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -30,7 +42,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
export default {
@ -46,13 +58,12 @@ export default {
dialogShow: false,
loading: false,
activeName: 'first',
operate: {}
operate: {},
tableData: [],
selectTrainCode: ''
};
},
computed: {
...mapGetters('map', [
'trainList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
@ -101,7 +112,10 @@ export default {
this.operate = operate;
//
this.dialogShow = true;
this.selectTrainCode = '';
this.tableData = this.$store.state.map.activeTrainList;
this.$nextTick(function () {
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
@ -110,10 +124,35 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
getServiceNum(code) {
const train = this.$store.getters['map/getDeviceByCode'](code);
return (train || {}).serviceNumber;
},
getTrainDestinationCode(trainCode) {
const train = this.$store.getters['map/getDeviceByCode'](trainCode);
return train.destinationCode;
},
commit() {
const operate = {
over: true,
operation: OperationEvent.Train.trainSetRoute.confirm.operation,
cmdType: CMD.Train.CMD_TRAIN_DEPARTURE,
param: { groupNumber: this.selectTrainCode }
};
this.$store.dispatch('training/nextNew', operate).then(({valid}) => {
if (valid) {
this.doClose();
}
}).catch(error => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
handleClick() {
},
handleCurrentChange(val) {
this.selectTrainCode = val;
},
cancel() {
const operate = {

View File

@ -2,13 +2,9 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="1000px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="10">
<el-table :id="domIdChoose" ref="trainTable" :data="tableData" height="397px" style="margin-top: 57px" :highlight-current-row="true" @current-change="handleChangeTrain">
<el-table-column prop="trainName" label="列车" />
<!-- <el-table-column prop="groupNumber" label="班次" /> -->
<el-table :id="domIdChoose" ref="trainTable" :cell-style="getCellStyle" :data="tableData" height="397px" style="margin-top: 57px" :highlight-current-row="true" @current-change="handleChangeTrain">
<el-table-column prop="code" label="列车" />
<el-table-column prop="runPathName" label="运行线" />
<!-- <el-table-column prop="length" label="长度" />
<el-table-column prop="mode" label="模式" />
<el-table-column prop="status" label="状态" /> -->
</el-table>
</el-col>
<el-col :span="13" :offset="1">
@ -35,7 +31,7 @@
</el-row>
<el-row style="margin-top: 20px;">
<el-col :span="12" style="padding-right: 10px;">
<el-table height="160px">
<el-table ref="pathTable" height="160px">
<el-table-column prop="path" label="路径" />
<el-table-column prop="direction" label="运行方向" />
</el-table>
@ -46,10 +42,14 @@
</el-row>
</el-tab-pane>
<el-tab-pane label="班次" name="third">
<el-table :data="trainList" height="382px">
<el-table-column prop="class" label="班次" />
<el-table-column prop="length" label="长度" />
<el-table-column prop="code" label="列车" />
<el-table :id="domIdChoose2" ref="serviceTable" :data="serviceNumberDataList" height="382px" highlight-current-row @current-change="handleServiceChange">
<el-table-column prop="serviceNumber" label="班次" />
<el-table-column prop="length" label="长度">6</el-table-column>
<el-table-column prop="code" label="列车">
<template slot-scope="scope">
<span>{{ getTrainName(scope.row) }}</span>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
@ -76,10 +76,8 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
// import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
// import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { getSimulationDestinationList } from '@/api/jmap/mapdraft';
import { getSimulationDestinationList } from '@/api/simulation';
import { mapGetters } from 'vuex';
export default {
@ -98,7 +96,10 @@ export default {
selectStandCode: '',
showPath: false,
selectedTrain:'',
selectedRunPath:''
selectedRunPath:'',
selectedService: '',
serviceNumberDataList: [],
operate: ''
};
},
computed: {
@ -109,9 +110,6 @@ export default {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
// selected() {
// return this.$store.state.menuOperation.selected;
// },
domIdClose() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
@ -121,6 +119,9 @@ export default {
domIdChoose1() {
return this.dialogShow ? OperationEvent.Command.common.choose1.domId : '';
},
domIdChoose2() {
return this.dialogShow ? OperationEvent.Train.trainDistribute.selected2.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
@ -130,16 +131,8 @@ export default {
},
watch: {
'$store.state.map.runLineTrainUpdate': function (val) {
if (val) {
this.getTrainList();
this.status = true;
} else {
this.tableData = [];
this.tableData = [...this.trainList];
}
}
// '$store.state.training.runPathList':function(val) {
// console.log(val);
// }
},
mounted() {
getSimulationDestinationList(this.$route.query.group).then(res=>{
@ -150,17 +143,22 @@ export default {
});
},
methods: {
expandPath() {
console.log('展开进路预览');
},
// expandPath() {
// console.log('');
// },
doShow(operate, activeName) {
this.getTrainList();
// this.$store.dispatch('menuOperation/setSelected', {device: selected});
this.tableData = [];
this.tableData = [...this.trainList];
this.operate = operate;
this.activeName = activeName;
this.serviceNumberDataList = this.$store.state.runPlan.serviceNumberDataList;
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
this.$refs.runLineTable && this.$refs.runLineTable.setCurrentRow();
this.$refs.serviceTable && this.$refs.serviceTable.setCurrentRow();
});
},
getTrainList() {
@ -177,17 +175,22 @@ export default {
this.tableData.push({code:train.groupNumber + ':' + train.serviceNumber, trainName:trainName, runPathName:destinationCode});
});
},
getCellStyle(data) {
if (this.$store.state.map.activeTrainList.includes(data.row.code)) {
return { color: '#000' };
} else {
return { color: '#808080' };
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.status = true;
this.selectedRunPath = '';
this.selectedTrain = '';
const runPath = this.$store.state.training.runPathList;
this.setRunPath(runPath, false);
this.$store.dispatch('training/emitTipFresh');
// this.$store.dispatch('menuOperation/setSelected', {device: {}});
this.$refs.runLineTable.setCurrentRow();
this.$refs.trainTable.setCurrentRow();
// mouseCancelState(this.selected);
this.$store.dispatch('training/setRunPathSelected', []);
},
commit(isClose = false) {
@ -197,7 +200,6 @@ export default {
const trainInfo = this.selectedTrain.split(':');
const params = {
groupNumber: trainInfo[0],
destinationCode: this.selectedRunPath,
serviceNumber: trainInfo[1]
};
const steps = {
@ -205,7 +207,14 @@ export default {
over: true,
param:params
};
if (this.activeName === 'third') {
steps.cmdType = CMD.Train.CMD_TRAIN_DISTRIBUTE;
steps.operation = isClose ? OperationEvent.Train.trainDistribute.confirm.operation : OperationEvent.Command.common.apply.operation;
steps.param.serviceNumber = this.selectedService;
} else if (this.activeName === 'first') {
steps.cmdType = CMD.TrainWindow.CMD_TRAIN_SET_HEAD;
steps.param.destinationCode = this.selectedRunPath;
}
this.$store.dispatch('training/nextNew', steps).then(({ valid }) => {
if (valid) {
this.loading = false;
@ -213,7 +222,7 @@ export default {
this.doClose();
}
}
}).catch(() => {
}).catch((e) => {
isClose && this.doClose();
this.loading = false;
this.$refs.noticeInfo.doShow();
@ -221,14 +230,32 @@ export default {
},
handleClick() {
this.selectedRunPath = '';
this.selectedService = '';
this.$refs.runLineTable && this.$refs.runLineTable.setCurrentRow();
this.$refs.serviceTable && this.$refs.serviceTable.setCurrentRow();
},
judgeCanCommit() {
if (this.selectedTrain && this.selectedRunPath) {
if (this.selectedTrain && (this.selectedRunPath || this.selectedService)) {
this.status = false;
} else {
this.status = true;
}
},
handleServiceChange(row) {
if (!row) { return; }
const step = {
operation: OperationEvent.Train.trainDistribute.selected2.operation,
params: { serviceNumber: row.serviceNumber }
};
const _that = this;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
_that.selectedService = row.serviceNumber;
_that.judgeCanCommit();
}
});
},
handleChange(row) {
if (row) {
const runPath = row.runPath;
@ -241,15 +268,6 @@ export default {
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
const oldRunPath = [...this.$store.state.training.runPathList];
// this.setRunPath(oldRunPath, false);
// // this.$nextTick(()=>{
// // this.setRunPath(runPath, true);
// // });
// setTimeout(()=>{
// this.setRunPath(runPath, true);
// }, 500);
// this.setRunPath(runPath, true);
runPath.forEach(path=>{
if (oldRunPath.includes(path)) {
const index = oldRunPath.indexOf(path);
@ -286,6 +304,10 @@ export default {
},
handleChangeTrain(row) {
if (row) {
if (!this.$store.state.map.activeTrainList.includes(row.code)) {
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
return;
}
const step = {
code: row.code,
operation: OperationEvent.Command.common.choose.operation,
@ -304,8 +326,17 @@ export default {
}
},
getTrainName(data) {
const nowDate = new Date();
const time = nowDate.getHours() * 3600 + nowDate.getMinutes() * 60 + nowDate.getSeconds();
const trip = data.tripNumberDataList.find((item) => {
return item.startSecondTime <= time && item.endSecondTime >= time;
});
if (trip) {
return data.serviceNumber + trip.tripNumber;
}
},
setRunPath(runPath, isShow) {
// console.log(isShow, runPath);
runPath.forEach(sectionCode=>{
const section = this.$store.getters['map/getDeviceByCode'](sectionCode);
if (section && section.instance) {

View File

@ -1,31 +1,59 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="600px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="700px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="20">
<el-tabs type="border-card" v-model="activeName" :id="domIdChoose" @change="handleChangeTab">
<el-tabs :id="domIdChoose" v-model="activeName" type="border-card" @tab-click="handleChangeTab">
<el-tab-pane label="运行线" name="first">
<el-table ref="table0" :data="trainList" height="300px" highlight-current-row :id="domIdChoose1" @current-change="handleRunLineChange">
<el-table-column prop="interval" label="运行线" />
<el-row>
<el-col :span="12">
<el-table :id="domIdChoose1" ref="table0" :data="runLineList" height="280px" highlight-current-row @current-change="handleRunLineChange">
<el-table-column prop="name" label="运行线" />
</el-table>
<el-checkbox v-model="runPathAllCheck" style="margin-top: 10px;" @change="handleAllRunPathChange">所有运行线</el-checkbox>
</el-col>
<el-col :span="12">
<div class="simulate_table">
<div style="display: flex;">
<div class="simulate_table_header" style="width: 190px;">站台</div>
<div class="simulate_table_header" style="width: 60px;">跳停</div>
</div>
<template v-for="item in standList">
<div :key="item.code" class="defaultStand" :class="{'selectedStand' :selectedStandList.includes(item)}" @click="clickStand(item)">
<div style="width: 190px;padding-left: 10px;">{{ getStandName(item) }}</div>
<div style="width: 60px;padding-left: 10px;">{{ getStandStatus(item) }}</div>
</div>
</template>
</div>
<el-checkbox :id="domIdSelect" v-model="allCheck" style="margin-top: 10px;" @change="handleAllStandChange">所有站台</el-checkbox>
</el-col>
</el-row>
</el-tab-pane>
<el-tab-pane label="列车" name="second">
<el-row>
<el-col :span="12">
<el-table ref="table1" :data="trainList" height="300px" highlight-current-row :id="domIdSelect1" @current-change="handleTrainChange">
<el-table-column prop="code" label="列车" />
<el-table :id="domIdSelect1" ref="table1" :data="trainList" height="300px" highlight-current-row @current-change="handleTrainChange">
<el-table-column prop="code" label="列车">
<template slot-scope="scope">
<span>{{ scope.row }}</span>
</template>
</el-table-column>
<el-table-column prop="interval" label="运行线" />
</el-table>
</el-col>
<el-col :span="12" style="padding-left: 5px;">
<el-table ref="table2" :data="stationStandList" height="260px" highlight-current-row :id="domIdSelect2" @current-change="handleStandChange">
<el-table-column prop="name" label="站台" />
<el-table-column prop="jump" :width="60" label="跳停" >
<template slot-scope="scope">
<span>{{ getStandStatus(scope.row.code) }}</span>
<div class="simulate_table">
<div style="display: flex;">
<div class="simulate_table_header" style="width: 190px;">站台</div>
<div class="simulate_table_header" style="width: 60px;">跳停</div>
</div>
<template v-for="item in standList">
<div :key="item.code" class="defaultStand" :class="{'selectedStand' :selectedStandList.includes(item)}" @click="clickStand(item)">
<div style="width: 190px;padding-left: 10px;">{{ getStandName(item) }}</div>
<div style="width: 60px;padding-left: 10px;">{{ getStandStatus(item) }}</div>
</div>
</template>
</el-table-column>
</el-table>
<el-checkbox v-model="allCheck" :id="domIdSelect" style="margin-top: 10px;" @change="handleAllStandChange">所有站台</el-checkbox>
</div>
<el-checkbox :id="domIdSelect" v-model="allCheck" style="margin-top: 10px;" @change="handleAllStandChange">所有站台</el-checkbox>
</el-col>
</el-row>
</el-tab-pane>
@ -34,9 +62,9 @@
<el-col :span="4" style="padding-left: 5px;">
<div class="set-status-title">跳停</div>
<div class="set-status-box">
<el-radio v-model="status" :disabled="!allCheck &&!status" :label="true">设置(S)</el-radio>
<el-radio v-model="status" :disabled="!status" :label="true">设置(S)</el-radio>
<br>
<el-radio v-model="status" :disabled="!allCheck && status" :label="false">清除(R)</el-radio>
<el-radio v-model="status" :disabled="status" :label="false">清除(R)</el-radio>
</div>
</el-col>
</el-row>
@ -63,6 +91,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
import { getSimulationDestinationList, getStandListByRunLineOrTrainCode } from '@/api/simulation';
export default {
name: 'TrainJumpStop',
@ -76,12 +105,17 @@ export default {
loading: false,
activeName: 'second',
operate: {},
allCheck: false
allCheck: false,
runPathAllCheck: false,
runLineList: [],
selectedStandList: [],
selectedTrainCode: '',
standList: [],
trainList: []
};
},
computed: {
...mapGetters('map', [
'trainList',
'stationStandList'
]),
show() {
@ -91,22 +125,22 @@ export default {
return this.$store.state.menuOperation.selected;
},
domIdChoose() {
return this.dialogShow ? OperationEvent.Command.common.choose.domId : ''
return this.dialogShow ? OperationEvent.Command.common.choose.domId : '';
},
domIdChoose1() {
return this.dialogShow ? OperationEvent.Command.common.choose1.domId : ''
return this.dialogShow ? OperationEvent.Command.common.choose1.domId : '';
},
// domIdChoose2() {
// return this.dialogShow ? OperationEvent.Command.common.choose2.domId : ''
// },
domIdSelect() {
return this.dialogShow ? OperationEvent.Command.common.select.domId : ''
return this.dialogShow ? OperationEvent.Command.common.select.domId : '';
},
domIdSelect1() {
return this.dialogShow ? OperationEvent.Command.common.select1.domId : ''
return this.dialogShow ? OperationEvent.Command.common.select1.domId : '';
},
domIdSelect2() {
return this.dialogShow ? OperationEvent.Command.common.select2.domId : ''
return this.dialogShow ? OperationEvent.Command.common.select2.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Command.common.confirm.domId : '';
@ -130,30 +164,66 @@ export default {
'selected': function(val) {
if (val) {
const stand = this.$store.getters['map/getDeviceByCode'](val.code);
this.status = stand && stand.assignSkip? false: true;
this.status = !(stand && stand.assignSkip);
}
},
'$store.state.map.activeTrainListUpdate': function (val) {
this.trainList = [...this.$store.state.map.activeTrainList];
}
},
mounted() {
},
methods: {
getStandStatus(code) {
const standEle = this.$store.getters['map/getDeviceByCode'](code);
if (standEle.assignSkip) {
if (this.activeName === 'first' && standEle.assignSkip) {
return '是';
} else if (this.activeName === 'first' && !standEle.assignSkip) {
return '否';
} else if (this.activeName === 'second' && standEle.skipSet.includes(this.selectedTrainCode)) {
return '是';
} else {
return '否';
}
},
getStandName(code) {
const standEle = this.$store.getters['map/getDeviceByCode'](code);
return (standEle || {}).name;
},
doShow(operate) {
this.operate = operate;
getSimulationDestinationList(this.$route.query.group).then(res=>{
res.data.forEach(element => {
this.runLineList.push({code:element.code, name:element.code + '(' + element.description + ')', runPath:element.runPath});
});
}).catch(()=>{
});
//
this.dialogShow = true;
this.selectedStandList = [];
this.selectedTrainCode = '';
this.standList = [];
this.trainList = [...this.$store.state.map.activeTrainList];
this.$nextTick(function () {
this.$refs.table0 && this.$refs.table0.setCurrentRow();
this.$refs.table1 && this.$refs.table1.setCurrentRow();
this.$refs.table2 && this.$refs.table2.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
clickStand(stand) {
const index = this.selectedStandList.indexOf(stand);
if (index === -1) {
this.selectedStandList.push(stand);
} else {
this.selectedStandList.splice(index, 1);
}
if (this.selectedStandList.length === this.standList.length) {
this.allCheck = true;
} else {
this.allCheck = false;
}
this.judgeStatus();
},
doClose() {
this.loading = false;
this.dialogShow = false;
@ -162,69 +232,111 @@ export default {
this.$refs.table2 && this.$refs.table2.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
judgeStatus() {
this.status = true;
this.selectedStandList.forEach(code => {
const stand = this.$store.getters['map/getDeviceByCode'](code);
if (stand.allSkip && this.activeName === 'first') {
this.status = false;
} else if (this.activeName === 'second' && stand.skipSet.includes(this.selectedTrainCode)) {
this.status = false;
}
});
},
handleChangeTab(val) {
this.selectedStandList = [];
this.standList = [];
this.allCheck = false;
},
handleAllRunPathChange(val) {
this.standList = [];
this.selectedStandList = [];
this.$refs.table0 && this.$refs.table0.setCurrentRow();
if (val) {
this.stationStandList.forEach(item => {
this.standList.push(item.code);
});
}
},
handleRunLineChange(val) {
},
handleTrainChange(val) {
if (!val) { return; }
const _that = this;
this.selectedStandList = [];
this.standList = [];
this.allCheck = false;
const step = {
operation: OperationEvent.Command.common.select.operation,
val: val.code,
param: {
trainGroupNumber: val.code
destinationCode: val.code
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
_that.stationStandList.forEach(item => {
_that.standList.push(item.code);
});
_that.judgeStatus();
}
}).catch(() => {
}).catch((e) => {
console.error(e);
this.$refs.noticeInfo.doShow();
});
},
handleStandChange(val) {
handleTrainChange(val) {
if (!val) { return; }
const _that = this;
this.selectedStandList = [];
this.standList = [];
this.allCheck = false;
this.selectedTrainCode = val;
const step = {
code: val.code,
operation: OperationEvent.Command.common.select1.operation,
val: val.code,
operation: OperationEvent.Command.common.select.operation,
val: val,
param: {
standCode: val.code
groupNumber: val
}
};
this.allCheck = false;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.$store.dispatch('menuOperation/setSelected', {device: val});
getStandListByRunLineOrTrainCode(_that.$route.query.group, { groupNumber: val }).then(resp => {
_that.standList = resp.data;
});
_that.judgeStatus();
}
}).catch(() => {
}).catch((e) => {
console.error(e);
this.$refs.noticeInfo.doShow();
});
},
handleAllStandChange(val) {
this.$refs.table2 && this.$refs.table2.setCurrentRow();
if (val) {
this.selectedStandList = [...this.standList];
} else {
this.selectedStandList = [];
}
},
commit(isClose = false) {
const step = {
over: true,
cmdType:this.status
? this.allCheck? CMD.Stand.CMD_STAND_ALL_SET_JUMP_STOP: CMD.Stand.CMD_STAND_SET_JUMP_STOP
: this.allCheck? CMD.Stand.CMD_STAND_ALL_CANCEL_JUMP_STOP: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP,
cmdType: '',
operation: isClose ? OperationEvent.Command.common.confirm.operation : OperationEvent.Command.common.apply.operation,
param: this.allCheck
? { standCodes: this.stationStandList.map(el => el.code ) }
: { standCode: this.selected.code }
param: { standCodes: this.selectedStandList }
};
if (this.activeName === 'first') {
step.cmdType = this.status ? CMD.Stand.CMD_STAND_ALL_SET_JUMP_STOP : CMD.Stand.CMD_STAND_ALL_CANCEL_JUMP_STOP;
} else {
step.cmdType = this.status ? CMD.Train.CMD_TRAIN_SKIP_STOP : CMD.Train.CMD_TRAIN_CANCEL_SKIP_STOP;
}
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
isClose && this.doClose();
}
}).catch((error) => {
console.log(error);
console.error(error);
isClose && this.doClose();
this.$refs.noticeInfo.doShow();
});
@ -269,4 +381,37 @@ export default {
z-index: 22;
left: 10px;
}
.simulate_table_header{
padding-left: 10px;
border-right: 1px solid #BDBDBD;
border-bottom: 1px solid #BDBDBD;
height: 20px;
background: #F0F0F0;
line-height: 20px;
font-size: 14px;
color: #000;
font-weight: bold;
}
.simulate_table {
height: 280px;
overflow-y: scroll;
border-top: 2px solid #959595;
border-left: 2px solid #959595;
border-right: 2px solid #E9E9E9;
border-bottom: 2px solid #E9E9E9;
}
.defaultStand{
display: flex;
background: #fff;
color: #000;
height: 20px;
line-height: 20px;
font-size: 14px;
border-bottom: 1px solid #fff;
}
.selectedStand{
display: flex;
background: #3399FF;
color: #fff;
}
</style>

View File

@ -2,25 +2,33 @@
<el-dialog v-dialogDrag class="ningbo-01__systerm route-setting" :title="title" :visible.sync="show" width="500px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row>
<el-col :span="14">
<el-table :data="trainList" height="300px">
<el-table-column prop="code" label="列车" />
<el-table ref="trainTable" :data="tableData" height="300px" :highlight-current-row="true" @current-change="handleChangeTrain">
<el-table-column prop="code" label="列车">
<template slot-scope="scope">
<span>{{ scope.row }}</span>
</template>
</el-table-column>
<el-table-column prop="area" label="模式" />
<el-table-column prop="status" label="运行类型" />
<el-table-column prop="status" label="运行类型">
<template slot-scope="scope">
<span>{{ getRunType(scope.row) }}</span>
</template>
</el-table-column>
</el-table>
</el-col>
<el-col :span="10" style="padding-left: 5px;color: #000;">
<el-table :data="runTypeList" height="250px">
<el-table ref="runTypeTable" :data="runTypeList" height="250px" :highlight-current-row="true" @current-change="handleChangeRunType">
<el-table-column prop="label" label="运行类型" />
</el-table>
<div style="margin-top: 10px;">
<el-checkbox v-model="allCheck" style="display: inline-block;">所有列车(I)</el-checkbox>
<el-checkbox v-model="allCheck" :disabled="true" style="display: inline-block;">所有列车(I)</el-checkbox>
<el-button style="display: inline-block;">复位(R)</el-button>
</div>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="4" :offset="1">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定(O)</el-button>
<el-button :id="domIdConfirm" type="primary" :loading="loading" :disabled="commitDisabled" @click="commit">确定(O)</el-button>
</el-col>
<el-col :span="4" :offset="2">
<el-button>应用(A)</el-button>
@ -39,7 +47,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { mapGetters } from 'vuex';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'ModifyTrainNumber',
@ -57,22 +65,28 @@ export default {
operate: {},
allCheck: false,
slidingTime: 0,
data: [],
tableData: [],
trainId: '',
groupNumber: '',
selectTrainCode: '',
selectRunType: '',
runTypeList: [
{label: '节能', value: 1},
{label: '中间的2', value: 2},
{label: '中间的1', value: 3},
{label: '正常', value: 4},
{label: '加速', value: 5}
]
{label: '节能', value: 'ENERGY_CONSERVATION'},
{label: '中间的2', value: 'MIDDLE_TWO'},
{label: '中间的1', value: 'MIDDLE_ONE'},
{label: '正常', value: 'NORMAL'},
{label: '加速', value: 'ACCELERATE'}
],
runTypeMap: {
ENERGY_CONSERVATION: '节能',
MIDDLE_TWO: '中间的2',
MIDDLE_ONE: '中间的1',
NORMAL: '正常',
ACCELERATE: '加速'
}
};
},
computed: {
...mapGetters('map', [
'trainList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
@ -88,8 +102,11 @@ export default {
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.arrangementRoute.menu.domId : '';
},
commitDisabled() {
return !(this.selectTrainCode && this.selectRunType);
},
title() {
return '修改列车描述号';
return '设置列车运行类型';
}
},
watch: {
@ -97,13 +114,21 @@ export default {
if (this.show) {
this.commit();
}
},
'$store.state.map.runLineTrainUpdate': function (val) {
this.tableData = [...this.$store.state.map.activeTrainList];
}
},
methods: {
doShow(operate) {
//
this.dialogShow = true;
this.selectRunType = '';
this.selectTrainCode = '';
this.tableData = [...this.$store.state.map.activeTrainList];
this.$nextTick(function () {
this.$refs.trainTable && this.$refs.trainTable.setCurrentRow();
this.$refs.runTypeTable && this.$refs.runTypeTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
});
},
@ -112,10 +137,58 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
getRunType(code) {
const train = this.$store.getters['map/getDeviceByCode'](code);
if (train) {
return this.runTypeMap[train.runType];
}
},
handleClick() {
commit() {
const operate = {
over: true,
operation: OperationEvent.Train.trainSetRunType.confirm.operation,
cmdType: CMD.Train.CMD_TRAIN_SET_RUN_TYPE,
param: { runType: this.selectRunType, groupNumber: this.selectTrainCode }
};
this.$store.dispatch('training/nextNew', operate).then(({valid}) => {
if (valid) {
this.doClose();
}
}).catch(error => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
handleChangeRunType(row) {
if (!row) { return; }
const step = {
operation: OperationEvent.Train.trainSetRunType.selected2.operation
};
const _that = this;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
_that.selectRunType = row.value;
});
},
handleChangeTrain(code) {
if (!code) { return; }
const step = {
operation: OperationEvent.Train.trainSetRunType.selected1.operation
};
const _that = this;
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
this.selectTrainCode = code;
const train = this.$store.getters['map/getDeviceByCode'](code);
if (train) {
_that.selectRunType = train.runType;
this.runTypeList.forEach(item => {
if (item.value === train.runType) {
_that.$refs.runTypeTable && _that.$refs.runTypeTable.setCurrentRow(item);
}
});
}
}
});
},
cancel() {
const operate = {

View File

@ -69,18 +69,11 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -141,12 +141,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
if (this.selected.type != '04') {
@ -160,7 +154,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -115,12 +115,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal);
//
@ -130,7 +124,6 @@ export default {
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -118,12 +118,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal);
//
@ -132,7 +126,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -171,12 +171,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -187,7 +181,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -168,12 +168,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -191,7 +185,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -268,12 +268,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -293,9 +287,7 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);
}

View File

@ -28,7 +28,7 @@ class EqualRatioParser {
importData(sheet, data) {
if (this.config &&
this.config.importData) {
this.config.importData(sheet, data);
return this.config.importData(sheet, data);
} else {
console.info('no import data function');
}

View File

@ -67,7 +67,23 @@ export default {
mounted() {
this.$nextTick(() => {
this.$store.dispatch('config/updateMenuBar');
const _that = this;
window.onclick = function (e) {
if (!_that.$store.state.training.trainingStart) {
_that.$refs.menuBar && _that.$refs.menuBar.blankClickClose();
}
_that.$refs.menuStationStand.doClose();
_that.$refs.menuSwitch.doClose();
_that.$refs.menuSignal.doClose();
_that.$refs.menuSection.doClose();
_that.$refs.menuTrain.doClose();
_that.$refs.menuStation.doClose();
_that.$refs.menuStationTurnBack.doClose();
};
});
},
beforeDestroy() {
window.onclick = function (e) {};
}
};
</script>

View File

@ -469,6 +469,9 @@ export default {
}
}
},
blankClickClose() {
this.$refs.menuBar.doClose();
},
undeveloped() {
this.$refs.menuBar.doClose();
this.$alert(this.$t('menu.menuBar.implemented'), this.$t('global.tips'), {

View File

@ -169,12 +169,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
if (this.selected.type != '04') {
@ -188,7 +182,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -222,12 +222,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
this.menu = MenuContextHandler.covert(this.menuNormal);
//
@ -236,7 +230,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -133,12 +133,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -150,7 +144,6 @@ export default {
},
doShow(point) {
if (this.selected.ciStation) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -164,12 +164,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -183,7 +177,6 @@ export default {
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -71,12 +71,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -87,7 +81,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.menu && this.menu.length > 0) {
this.setBackStrategy();

View File

@ -199,12 +199,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -221,7 +215,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs && this.$refs.popMenu && this.menu && this.menu.length) {
this.$refs.popMenu.resetShowPosition(point);

View File

@ -166,12 +166,6 @@ export default {
}
},
methods: {
clickEvent() {
const self = this;
window.onclick = function (e) {
self.doClose();
};
},
initMenu() {
//
this.menu = MenuContextHandler.covert(this.menuNormal);
@ -194,7 +188,6 @@ export default {
}
},
doShow(point) {
this.clickEvent();
this.initMenu();
if (this.$refs.popMenu && this.menu && this.menu.length) {

View File

@ -98,7 +98,6 @@ export default {
}
}
}
return JsonData;
}
};

View File

@ -70,7 +70,7 @@ import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { getSimulationDestinationList } from '@/api/jmap/mapdraft';
import { getSimulationDestinationList } from '@/api/simulation';
export default {
name: 'TrainMove',

View File

@ -162,8 +162,10 @@ const InfoLessonDetail = () => import('@/views/organization/lessonManage/lessonD
const RunPlanViewWindow = () => import('@/views/newMap/displayNew/demon/runPlanViewWindow');
const SecondaryHome = () => import('@/views/trainingPlatform/secondaryHome');
const Demo = () => import('@/views/demo');
const MapGroup = () => import('@/views/publish/mapGroup/index');
const DemoTraining = () => import('@/views/newMap/displayNew/demoTraining');
const OrgDetail = () => import('@/views/system/companyManage/orgDetail');
const VoiceTraining = () => import('@/views/system/voiceTraining/index');
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth';
@ -852,6 +854,13 @@ export const asyncRouter = [
meta: {
i18n: 'router.publishISCSManage'
}
},
{
path: 'mapGroup',
component: MapGroup,
meta: {
i18n: 'router.mapGroup'
}
}
]
},
@ -1091,6 +1100,13 @@ export const asyncRouter = [
meta: {
i18n: 'router.preTheoryData'
}
},
{
path: 'voiceTraining',
component: VoiceTraining,
meta: {
i18n: 'router.voiceTraining'
}
}
// {
// path: 'deviceManage',

View File

@ -39,7 +39,9 @@ export default {
/** 道岔钩锁 **/
CMD_SWITCH_HOOK_LOCK:{value:'Switch_Hook_Lock', label:'道岔钩锁'},
/** 挤岔恢复 */
CMD_SWITCH_SQUEEZE_RECOVERY: {value: 'Switch_Squeeze_Recovery', label: '挤岔恢复'}
CMD_SWITCH_SQUEEZE_RECOVERY: {value: 'Switch_Squeeze_Recovery', label: '挤岔恢复'},
/** 道岔命令 */
CMD_SWITCH_COMMAND: {value: 'Switch_Command', label: '道岔命令'}
},
// 控制模式操作
@ -148,7 +150,11 @@ export default {
/** 新建计划列车 */
CMD_Train_Init_Plan: {value: 'Train_Init_Plan', label: '新建计划列车'},
/** 加载备用车 */
CMD_TRAIN_LOAD_SPARE_TRAIN: {value: 'Train_Load_Spare_Train', label: '加载备用车'}
CMD_TRAIN_LOAD_SPARE_TRAIN: {value: 'Train_Load_Spare_Train', label: '加载备用车'},
/** 轨道开放 */
CMD_SECTION_OPEN: {value: 'Section_Open', label: '轨道开放'},
/** 轨道关闭 */
CMD_SECTION_CLOSE: {value: 'Section_Close', label: '轨道关闭'}
},
// 站台
@ -157,10 +163,10 @@ export default {
CMD_STAND_SET_JUMP_STOP: {value:'Stand_Set_Jump_Stop', label: '设置跳停'},
/** 取消跳停 */
CMD_STAND_CANCEL_JUMP_STOP: {value:'Stand_Cancel_Jump_Stop', label: '取消跳停'},
/** 全站台设置跳停 */
CMD_STAND_ALL_SET_JUMP_STOP: {value:'Stand_All_Set_Jump_Stop', label: '全站台设置跳停'},
/** 全站台取消跳停 */
CMD_STAND_ALL_CANCEL_JUMP_STOP: {value:'Stand_All_Cancel_Jump_Stop', label: '全站台取消跳停'},
/** 批量设置站台跳停 */
CMD_STAND_ALL_SET_JUMP_STOP: {value:'Stand_All_Set_Jump_Stop', label: '批量设置跳停'},
/** 批量取消站台跳停 */
CMD_STAND_ALL_CANCEL_JUMP_STOP: {value:'Stand_All_Cancel_Jump_Stop', label: '批量取消跳停'},
/** 设置扣车 */
CMD_STAND_SET_HOLD_TRAIN: {value:'Stand_Set_Hold_Train', label: '设置扣车'},
/** 取消扣车 */
@ -198,7 +204,11 @@ export default {
/** 手动开启屏蔽门 */
CMD_STAND_OPEN_PSD:{value:'Stand_Open_Psd', label: '手动开启屏蔽门'},
/** 取消设置*/
CMD_STAND_CANCEL_SETTING: {value: 'Stand_Cancel_Setting', label: '取消设置'}
CMD_STAND_CANCEL_SETTING: {value: 'Stand_Cancel_Setting', label: '取消设置'},
/** 打开站台 */
CMD_STAND_OPEN: {value: 'Stand_Open', label: '打开站台'},
/** 关闭站台 */
CMD_STAND_CLOSE: {value: 'Stand_Close', label: '关闭站台'}
},
Station: {
@ -269,7 +279,19 @@ export default {
CMD_TRAIN_ORDER_STOP: {value: 'Train_Order_Stop', label:'下令停车'},
/** 取消停车命令 */
CMD_TRAIN_CANCEL_ORDER_STOP: {value: 'Train_Cancel_Order_Stop', label:'取消停车命令'},
CMD_TRAIN_SET_ROUTE: {value: 'Train_Set_Route', label: '列车排列进路'}
CMD_TRAIN_SET_ROUTE: {value: 'Train_Set_Route', label: '列车排列进路'},
/** 列车发车(泰雷兹) */
CMD_TRAIN_DEPARTURE: {value: 'Train_Departure', label: '列车发车'},
/** 分配班次 */
CMD_TRAIN_DISTRIBUTE: {value: 'Train_Distribute', label: '分配班次'},
/** 设置运行类型 */
CMD_TRAIN_SET_RUN_TYPE : {value: 'Train_Set_Run_Type', label: '设置运行类型' },
/** 取消列车CBTC进路 */
CMD_TRAIN_CANCEL_CBTC_ROUTE : { value: 'Train_Cancel_CBTC_Route', label: '取消列车CBTC进路' },
/** 列车在指定站台跳停 */
CMD_TRAIN_SKIP_STOP : { value: 'Train_Skip_Stop', label: '指定站台跳停' },
/** 列车取消指定站台的跳停 */
CMD_TRAIN_CANCEL_SKIP_STOP : { value: 'Train_Cancel_Skip_Stop', label: '取消指定站台跳停' }
},
TrainWindow: {
/** 修改列车识别号 */

View File

@ -58,7 +58,6 @@ class CommandHandle {
getDefinition(cmdType) {
if (cmdType) {
const simulationRole = Handler.getSimulationRole();
if (simulationRole) {
return this.definitionMap[simulationRole][cmdType.value] || this.definitionMap.Common[cmdType.value] || null;
} else {

View File

@ -627,7 +627,7 @@ export const OperationEvent = {
// 锁闭区段
line_sectionLock: {
operation: '00c',
domId: '_Tips-ningBo-line_sectionLock{TOP}',
domId: '_Tips-ningBo-line_sectionLock{TOP}'
},
// 取消转换锁闭
line_sectionLock_cancelTransferLock: {
@ -1294,6 +1294,14 @@ export const OperationEvent = {
secondaryConfirm: {
operation: '3014',
domId: '_Tips-Signal-ArrangementRoute-SecondaryConfirm'
},
toStand: {
operation: '3015',
domId: '_Tips-Signal-ArrangementRoute-ToStand'
},
toSignal: {
operation: '3016',
domId: '_Tips-Signal-ArrangementRoute-ToSignal'
}
},
// 取消进路
@ -1321,6 +1329,10 @@ export const OperationEvent = {
secondaryConfirm: {
operation: '3034',
domId: '_Tips-Signal-CancelTrainRoute-SecondaryConfirm'
},
choose1: {
operation: '3035',
domId: '_Tips-Signal-CancelTrainRoute-Choose1'
}
},
// 信号重开
@ -3076,6 +3088,42 @@ export const OperationEvent = {
operation: '70r1',
domId: '_Tips-Train-trainSetRoute-Confirm'
}
},
trainDistribute: {
menu: {
operation: '70s',
domId: '_Tips-Train-trainDistribute-Menu'
},
selected1: {
operation: '70s1',
domId: '_Tips-Train-trainDistribute-Selected1'
},
selected2: {
operation: '70s2',
domId: '_Tips-Train-trainDistribute-Selected2'
},
confirm: {
operation: '70s3',
domId: '_Tips-Train-trainDistribute-Confirm'
}
},
trainSetRunType: {
menu: {
operation: '70t',
domId: '_Tips-Train-trainSetRunType-Menu'
},
selected1: {
operation: '70t1',
domId: '_Tips-Train-trainSetRunType-Selected1'
},
selected2: {
operation: '70t2',
domId: '_Tips-Train-trainSetRunType-Selected2'
},
confirm: {
operation: '70t3',
domId: '_Tips-Train-trainSetRunType-Confirm'
}
}
},

View File

@ -17,7 +17,8 @@ const runPlan = {
draftStations: [], // 草稿运行图车站列表
runPlanMap: {}, // 运行图数据map以id和version 为标识)
runPlanInfo: {}, // 运行图信息
loadRunPlanCount: 0 // 运行图加载数据完成
loadRunPlanCount: 0, // 运行图加载数据完成
serviceNumberDataList: [] // 运行图数据
},
getters: {
stations: (state) => {
@ -68,6 +69,7 @@ const runPlan = {
state.planData = data;
state.editData = {};
if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) {
state.serviceNumberDataList = data.serviceNumberDataList;
const serviceList = data.serviceNumberDataList;
serviceList.forEach((service, i) => {
const trainList = service.tripNumberDataList;
@ -117,6 +119,7 @@ const runPlan = {
state.planData = {};
state.editData = {};
state.selected = {};
state.serviceNumberDataList = [];
},
draftClear: (state) => {
state.draftPlanData = {};

View File

@ -41,6 +41,7 @@ export default {
},
handleSave() {
const data = JSON.stringify(this.$store.state.iscs.iscs);
console.log(data, '===');
this.$emit('handleSave', data);
}
}

View File

@ -13,20 +13,23 @@
<el-form-item label="Y轴坐标:" prop="y">
<el-input-number v-model="form.y" size="small" controls-position="right" :min="1" />
</el-form-item>
<el-form-item label="是否透明" prop="isTransparent">
<el-checkbox v-model="form.isTransparent" size="small" />
</el-form-item>
<el-form-item label="按钮文字:" prop="context">
<el-input v-model="form.context" size="small" />
</el-form-item>
<el-form-item label="文字颜色:" prop="textColor">
<el-color-picker v-model="form.textColor" size="small" />
<el-color-picker v-model="form.textColor" show-alpha size="small" />
</el-form-item>
<el-form-item label="选中文字颜色:" prop="textColorActive">
<el-color-picker v-model="form.textColorActive" size="small" />
<el-color-picker v-model="form.textColorActive" show-alpha size="small" />
</el-form-item>
<el-form-item label="背景颜色:" prop="textColor">
<el-color-picker v-model="form.fillColor" size="small" />
<el-color-picker v-model="form.fillColor" show-alpha size="small" />
</el-form-item>
<el-form-item label="选中背景颜色:" prop="textColor">
<el-color-picker v-model="form.fillColorActive" size="small" />
<el-color-picker v-model="form.fillColorActive" show-alpha size="small" />
</el-form-item>
<el-form-item label="文字大小:" prop="fontSize">
<el-input-number v-model="form.fontSize" size="small" controls-position="right" :min="1" />
@ -47,6 +50,16 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.function=== 'ElementShow'" label="隐藏元素类型:" prop="hideType">
<el-select v-model="form.hideType" size="small">
<el-option
v-for="item in hideTypeList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" @click="onSubmit('form')">{{ buttonText }}</el-button>
<el-button v-show="showDeleteButton" size="small" type="danger" @click="deleteDevice">删除</el-button>
@ -87,19 +100,32 @@ export default {
fontSize: 10,
x: 10,
y: 10,
isTransparent: false,
context: '',
function: '',
textColor: '',
textColorActive: '#000',
fillColor: 'rgba(0,0,0,0)',
fillColorActive: 'rgba(0,0,0,0)'
fillColorActive: 'rgba(0,0,0,0)',
hideType: ''
},
hideTypeList: [
{ label: '温感器', value: 'alarmLamp' },
{ label: '烟感器', value: 'smokeDetector' },
{ label: '防火阀', value: 'fireDamper' },
{ label: '报警按钮', value: 'alarmButton' }
// { label: '', value: 'zanwu' },
// { label: '', value: '' }
],
rules: {
context: [
{ required: true, message: '请填写按钮文字', trigger: 'blur' }
],
function: [
{ required: true, message: '请选择按钮功能', trigger: 'change'}
],
hideType: [
{ required: true, message: '请选择显隐元素类型', trigger: 'change' }
]
}
};
@ -120,6 +146,7 @@ export default {
this.form.z2 = model.z2;
this.form.levelPadding = model.levelPadding;
this.form.verticalPadding = model.verticalPadding;
this.form.isTransparent = model.isTransparent;
this.form.x = model.point.x;
this.form.y = model.point.y;
this.form.context = model.context;
@ -129,6 +156,7 @@ export default {
this.form.textColorActive = model.textColorActive || '#000';
this.form.fillColor = model.fillColor;
this.form.fillColorActive = model.fillColorActive;
this.form.hideType = model.hideType;
}
}
},
@ -138,6 +166,15 @@ export default {
{label: '操作按钮', value: 'OperatingButton'},
{label: '门禁站台层', value: 'goToStand'},
{label: '门禁站厅层', value: 'goToStation'},
{label: '火灾报警系统-站厅层A端', value: 'goFireStation-Two'},
{label: '火灾报警系统-站厅层B端', value: 'goFireStation-Three'},
{label: '火灾报警系统-站厅层C端', value: 'goFireStation-Four'},
{label: '火灾报警系统-站厅层D端', value: 'goFireStation-Five'},
{label: '火灾报警系统-站厅层E端', value: 'goFireStation-Six'},
{label: '火灾报警系统-站厅层F端', value: 'goFireStation-Seven'},
{label: '火灾报警系统-站台层A端', value: 'goFireStand-Two'},
{label: '火灾报警系统-站台层B端', value: 'goFireStand-Three'},
{label: '火灾报警系统-站台层公共区段', value: 'goFireStand-Four'},
{label: '元素显隐', value: 'ElementShow'},
{label: '返回', value: 'GoBack'}
];
@ -169,13 +206,15 @@ export default {
z2: this.form.z2,
levelPadding: this.form.levelPadding,
verticalPadding: this.form.verticalPadding,
isTransparent: this.form.isTransparent,
context: this.form.context,
function: this.form.function,
fontSize: this.form.fontSize,
textColor: this.form.textColor,
textColorActive: this.form.textColorActive,
fillColor: this.form.fillColor,
fillColorActive: this.form.fillColorActive
fillColorActive: this.form.fillColorActive,
hideType: this.form.hideType
};
this.$emit('createDataModel', rectModel);
this.initPage();
@ -194,11 +233,13 @@ export default {
_type: 'IscsButton',
levelPadding: this.form.levelPadding,
verticalPadding: this.form.verticalPadding,
isTransparent: this.form.isTransparent,
context: this.form.context,
function: this.form.function,
fontSize: this.form.fontSize,
fillColor: this.form.fillColor,
fillColorActive: this.form.fillColorActive
fillColorActive: this.form.fillColorActive,
hideType: this.form.hideType
};
this.$emit('deleteDataModel', rectModel);
},
@ -217,9 +258,11 @@ export default {
context: '',
function: '',
textColor: '',
isTransparent: false,
textColorActive: '#000',
fillColor: '',
fillColorActive: ''
fillColorActive: '',
hideType: ''
};
}
}

View File

@ -60,8 +60,8 @@ export default {
{ name: '车尾', value: 'psdRight' },
{ name: '车厢', value: 'psdSystem' },
{ name: '人防门', value: 'envPersonDoor'},
{ name: '报警按钮蓝', value: 's'},
{ name: '报警按钮红', value: 'a'},
{ name: '报警按钮蓝', value: 'alarmButtonBlue'},
{ name: '报警按钮红', value: 'alarmButtonRed'},
{ name: 'APF', value: 'APF'},
{ name: '手动阀', value: 'hand'},
{ name: '蓝色-阀门', value: 'fmBlue'},
@ -133,7 +133,9 @@ export default {
{ name: '站厅E', value: 'bgStationE' },
{ name: '站厅F', value: 'bgStationF' },
{ name: '门禁站厅A', value: 'bgDoorStationA' },
{ name: '门禁站台A', value: 'bgDoorStandA' }
{ name: '门禁站台A', value: 'bgDoorStandA' },
{ name: '小站台', value: 'littleStand' },
{ name: '小站厅', value: 'littleStation' }
],
rules: {

View File

@ -110,6 +110,7 @@ export default {
this.tableShow = !this.tableShow;
},
handleSave(data) {
const param = {
graphData: data,
mapId: this.$route.query.mapId,
@ -117,6 +118,7 @@ export default {
totalSystem: this.$route.query.mode,
userInterface: this.$route.query.part
};
// console.log(data.iscsPictureList, '===');
saveIscsElement(param).then(resp => {
this.$message.success('ISCS数据保存成功');
}).catch(() => {

Some files were not shown because too many files have changed in this diff Show More