Merge remote-tracking branch 'origin/test'

# Conflicts:
#	src/views/newMap/mapDraftPicture/createPicture.vue
This commit is contained in:
fan 2022-10-08 18:44:43 +08:00
commit 24d64b91ac
193 changed files with 10774 additions and 5278 deletions

View File

@ -19,6 +19,7 @@
},
"dependencies": {
"axios": "^0.18.0",
"dayjs": "^1.11.5",
"echarts": "^4.7.0",
"element-ui": "^2.12.0",
"file-saver": "^1.3.3",

View File

@ -17,7 +17,7 @@
</template>
<script>
import { getToken } from '@/utils/auth';
import { getToken, getUserIdKey } from '@/utils/auth';
import { getSessionStorage } from '@/utils/auth';
import { loginInfo, ProjectIcon } from '@/scripts/ProjectConfig';
import DeomonTopic from '@/views/demonstration/deomonTopic';
@ -88,6 +88,15 @@ export default {
await this.$store.dispatch('preLogout');
}
});
window.addEventListener('storage', e => {
if (this.$route.path.includes('trainingDesign') || this.$route.path.includes('trainingPreview')) {
if (e.key == getUserIdKey('nextNew')) {
const operate = JSON.parse(e.newValue);
this.$store.dispatch('training/nextNew', operate);
}
}
});
this.$nextTick(() => {
openIndexedDB();
});

View File

@ -47,3 +47,11 @@ export function uploadAudio(file) {
upload: true
});
}
// 生成音频文件
export function generateAudio(data) {
return request({
url: `/api/audioResources/generate`,
method: 'post',
data
});
}

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

@ -0,0 +1,33 @@
import request from '@/utils/request';
// 创建调度台逻辑数据
export function createDisStation(mapId, data) {
return request({
url: `/api/draftMap/${mapId}/disStation`,
method: 'post',
data
});
}
// 更新调度台逻辑数据
export function updateDisStation(mapId, data) {
return request({
url: `/api/draftMap/${mapId}/disStation`,
method: 'put',
data
});
}
// 删除调度台逻辑数据
export function deleteDisStation(mapId, code) {
return request({
url: `/api/draftMap/${mapId}/disStation/${code}`,
method: 'delete'
});
}
// 获取调度台逻辑数据
export function getDisStationList(mapId, data) {
return request({
url: `/api/draftMap/${mapId}/disStation/page`,
method: 'post',
data
});
}

View File

@ -247,3 +247,10 @@ export function endTrainingStep(group, stepId) {
method: 'put'
});
}
/** 编制剧本的时候加载背景 */
export function loadTrainingBg(group, trainingId) {
return request({
url: `/api/training2Simulation/${group}/draw/${trainingId}`,
method: 'post'
});
}

View File

@ -238,3 +238,34 @@ export function registerUser(data) {
data
});
}
/** 超管重置用户密码 */
export function adminResetUserPassword(userId) {
return request({
url: `/api/userinfo/${userId}/reset/pwd`,
method: 'put'
});
}
/** 找回密码 */
export function findPassword(data) {
return request({
url: `/api/userinfo/retrieve/pwd`,
method: 'put',
data
});
}
/** 发送手机验证码 */
export function sendPhoneVfcode(data) {
return request({
url: '/api/userinfo/mobile/code',
method: 'post',
data
});
}
/** 发送邮箱验证码 */
export function sendEmailVfcode(params) {
return request({
url: '/api/userinfo/email/code',
method: 'post',
params
});
}

View File

@ -529,3 +529,11 @@ export function getRobotDrivingParam(simulationId, groupNumber) {
method: 'get'
});
}
/** 查询所有pa系统的定时播放任务 */
export function queryPaTimedList(group, params) {
return request({
url: `/simulation/${group}/iscs/paTimedPlay`,
method: 'get',
params
});
}

View File

@ -40,9 +40,10 @@ export function getTrainingStepList(trainingId) {
});
}
/** 修改实训所有步骤 */
export function updateTrainingStep(id, data) {
export function updateTrainingStep(group, trainingId, data) {
console.log(group, trainingId, '*******');
return request({
url: `/api/v2/draft/training/${id}/step/update`,
url: `/api/v2/draft/training/${group}/${trainingId}/step/update`,
method: 'put',
data: data
});
@ -63,6 +64,22 @@ export function publishTraining(data) {
data
});
}
/** 查询实现草稿发布轨迹 */
export function draftPubTrace(data) {
return request({
url: `/api/v2/training/draft/pub/trace/find/page`,
method: 'post',
data
});
}
/** 删除草稿发布轨迹 */
export function deleteTrace(data) {
return request({
url: `/api/v2/training/draft/pub/trace`,
method: 'delete',
data
});
}
/** 更新当前用户的某个实训草稿的大字段信息 */
export function updateTrainingContent(data) {
return request({
@ -81,7 +98,7 @@ export function getTrainingAll(trainingId) {
/** 单独更新当前用户的某个实训草稿的初始背景 */
export function updateTrainingBackgroud(data) {
return request({
url: `/api/v2/draft/training/update/content/backgroud`,
url: `/api/v2/draft/training/update/content/background`,
method: 'post',
data
});
@ -94,3 +111,51 @@ export function updateTrainingMaplocation(data) {
data
});
}
/** 获取实训表达式条件素材 */
export function getTrainingMaterials() {
return request({
url: `/api/v2/draft/training/expression/materials`,
method: 'get'
});
}
/** 获取实训所有成员 */
export function getTrainingMmembers(trainingId) {
return request({
url: `/api/v2/draft/training/${trainingId}/member/list`,
method: 'get'
});
}
/** 获取实训所有参与者 */
export function getTrainingPlayers(trainingId) {
return request({
url: `/api/v2/draft/training/${trainingId}/player/list`,
method: 'get'
});
}
/** 更新所有评分规则*/
export function updateTrainingGradeRules(trainingId, data) {
return request({
url: `/api/v2/draft/training/${trainingId}/scoringRule/list`,
method: 'put',
data: data
});
}
/** 获取所有评分规则 */
export function getTrainingGradeRules(trainingId) {
return request({
url: `/api/v2/draft/training/${trainingId}/scoringRule/list`,
method: 'get'
});
}
/** 清空步骤 */
export function clearTrainingStep(trainingId) {
return request({
url: `/api/v2/draft/training/${trainingId}/step/clear`,
method: 'delete'
});
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
src/assets/pis/train.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -10,6 +10,7 @@ export default {
modify: 'modify',
delete: 'delete',
publish: 'publish',
publishTrack: 'track',
preview: 'preview',
mapLocation: 'Save map positioning',
saveBackground: 'Save Background',
@ -21,5 +22,11 @@ export default {
createStepInfo: 'Creating Procedure Information',
editStepInfo: 'Modifying Step Information',
saveStepData: 'Save Step Information',
roleSelect: 'role choices'
roleSelect: 'role choices',
triggerCondition: 'triggering condition',
operateCondition: 'Associated operation',
completionCondition: 'completion conditions',
editCompletionCondition: 'Edit completion conditions',
editOperationCondition: 'Edit operation condition',
gradeRules:'Grade rules'
};

View File

@ -10,6 +10,7 @@ export default {
modify: '修改',
delete: '删除',
publish: '发布',
publishTrack: '发布轨迹',
preview: '预览',
mapLocation: '保存地图定位',
saveBackground: '保存背景',
@ -21,5 +22,11 @@ export default {
createStepInfo: '创建步骤信息',
editStepInfo: '修改步骤信息',
saveStepData: '保存步骤',
roleSelect: '角色选择'
roleSelect: '角色选择',
triggerCondition: '触发条件',
operateCondition: '关联操作',
completionCondition: '完成条件',
editCompletionCondition: '编辑完成条件',
editOperationCondition: '编辑运算条件',
gradeRules:'评分'
};

View File

@ -1,35 +1,37 @@
import Group from 'zrender/src/container/Group';
import Image from 'zrender/src/graphic/Image';
import clock0 from '@/assets/ibp_images/clock/clock_0.png';
import clock1 from '@/assets/ibp_images/clock/clock_1.png';
import clock2 from '@/assets/ibp_images/clock/clock_2.png';
import clock3 from '@/assets/ibp_images/clock/clock_3.png';
import clock4 from '@/assets/ibp_images/clock/clock_4.png';
import clock5 from '@/assets/ibp_images/clock/clock_5.png';
import clock6 from '@/assets/ibp_images/clock/clock_6.png';
import clock7 from '@/assets/ibp_images/clock/clock_7.png';
import clock8 from '@/assets/ibp_images/clock/clock_8.png';
import clock9 from '@/assets/ibp_images/clock/clock_9.png';
import clockBg from '@/assets/ibp_images/clock/clock_bg.png';
import clockColon from '@/assets/ibp_images/clock/clock_colon.png';
import Group from 'zrender/src/container/Group'
import Image from 'zrender/src/graphic/Image'
import clock0 from '@/assets/ibp_images/clock/clock_0.png'
import clock1 from '@/assets/ibp_images/clock/clock_1.png'
import clock2 from '@/assets/ibp_images/clock/clock_2.png'
import clock3 from '@/assets/ibp_images/clock/clock_3.png'
import clock4 from '@/assets/ibp_images/clock/clock_4.png'
import clock5 from '@/assets/ibp_images/clock/clock_5.png'
import clock6 from '@/assets/ibp_images/clock/clock_6.png'
import clock7 from '@/assets/ibp_images/clock/clock_7.png'
import clock8 from '@/assets/ibp_images/clock/clock_8.png'
import clock9 from '@/assets/ibp_images/clock/clock_9.png'
import clockBg from '@/assets/ibp_images/clock/clock_bg.png'
import clockColon from '@/assets/ibp_images/clock/clock_colon.png'
import { timestampFormat } from '@/utils/date'
const pics = [clock0, clock1, clock2, clock3, clock4, clock5, clock6, clock7, clock8, clock9]
export default class clock extends Group {
constructor(device) {
super();
this._type = device.model._type;
this._code = device.model.code;
this.model = device.model;
this.zlevel = device.model.zlevel;
this.z = device.model.z;
this.initTime = 0;
this.create();
super()
this._type = device.model._type
this._code = device.model.code
this.model = device.model
this.zlevel = device.model.zlevel
this.z = device.model.z
this.initTime = 0
this.create()
}
create() {
this.grouper = new Group({
id: this.model.code,
position: [this.model.point.x, this.model.point.y]
});
position: [this.model.point.x, this.model.point.y],
})
this.clockBg = new Image({
zlevel: this.zlevel,
z: this.z,
@ -38,75 +40,75 @@ export default class clock extends Group {
x: 0,
y: 0,
width: this.model.width,
height: this.model.width / 493 * 156
}
});
height: (this.model.width / 493) * 156,
},
})
this.num1 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.098,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.num2 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.22,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.num3 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.395,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.num4 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.52,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.num5 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.69,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.num6 = new Image({
zlevel: this.zlevel,
z: this.z,
style: {
image: this.getImagePic('0'),
image: pics[0],
x: this.model.width * 0.816,
y: this.model.width * 0.062,
width: this.model.width * 0.095,
height: this.model.width * 0.095 / 37 * 74
}
});
height: ((this.model.width * 0.095) / 37) * 74,
},
})
this.clockColon1 = new Image({
zlevel: this.zlevel,
z: this.z,
@ -115,9 +117,9 @@ export default class clock extends Group {
x: +this.model.width * 0.183,
y: -this.model.width * 0.017,
width: this.model.width * 0.34,
height: this.model.width / 1 * 0.34
}
});
height: (this.model.width / 1) * 0.34,
},
})
this.clockColon2 = new Image({
zlevel: this.zlevel,
z: this.z,
@ -126,133 +128,32 @@ export default class clock extends Group {
x: +this.model.width * 0.48,
y: -this.model.width * 0.017,
width: this.model.width * 0.34,
height: this.model.width / 1 * 0.34
}
});
this.grouper.add(this.clockBg);
this.grouper.add(this.num1);
this.grouper.add(this.num2);
this.grouper.add(this.num3);
this.grouper.add(this.num4);
this.grouper.add(this.num5);
this.grouper.add(this.num6);
this.grouper.add(this.clockColon1);
this.grouper.add(this.clockColon2);
this.add(this.grouper);
}
getImagePic(context) {
let pic = clock0;
switch (context) {
case '0':
pic = clock0;
break;
case '1':
pic = clock1;
break;
case '2':
pic = clock2;
break;
case '3':
pic = clock3;
break;
case '4':
pic = clock4;
break;
case '5':
pic = clock5;
break;
case '6':
pic = clock6;
break;
case '7':
pic = clock7;
break;
case '8':
pic = clock8;
break;
case '9':
pic = clock9;
break;
}
return pic;
}
setClockStart(started) {
const _this = this;
if (started) {
this.timer && clearInterval(this.timer);
this.timer = setInterval(() => {
_this.handleClock(_this);
}, 1000);
} else {
this.timer && clearInterval(this.timer);
}
}
handleClock(_this) {
_this.initTime += 1;
let seconds = this.initTime % 60 + '';
let minutes = Math.floor(this.initTime / 60) % 60 + '';
let hours = Math.floor(this.initTime / 3600) + '';
if (seconds.length < 2) {
seconds = '0' + seconds;
}
if (minutes.length < 2) {
minutes = '0' + minutes;
}
if (hours.length < 2) {
hours = '0' + hours;
}
_this.setNumPic(6, seconds.charAt(1));
_this.setNumPic(5, seconds.charAt(0));
_this.setNumPic(4, minutes.charAt(1));
_this.setNumPic(3, minutes.charAt(0));
_this.setNumPic(2, hours.charAt(1));
_this.setNumPic(1, hours.charAt(0));
}
setNumPic(num, context) {
switch (num) {
case 1:
this.num1.setStyle('image', this.getImagePic(context));
break;
case 2:
this.num2.setStyle('image', this.getImagePic(context));
break;
case 3:
this.num3.setStyle('image', this.getImagePic(context));
break;
case 4:
this.num4.setStyle('image', this.getImagePic(context));
break;
case 5:
this.num5.setStyle('image', this.getImagePic(context));
break;
case 6:
this.num6.setStyle('image', this.getImagePic(context));
height: (this.model.width / 1) * 0.34,
},
})
this.grouper.add(this.clockBg)
this.grouper.add(this.num1)
this.grouper.add(this.num2)
this.grouper.add(this.num3)
this.grouper.add(this.num4)
this.grouper.add(this.num5)
this.grouper.add(this.num6)
this.grouper.add(this.clockColon1)
this.grouper.add(this.clockColon2)
this.add(this.grouper)
}
setNumPic(position, num) {
this[`num${position}`].setStyle(`image`, pics[num])
}
setClockTime(initTime) {
this.initTime = initTime;
let seconds = this.initTime % 60 + '';
let minutes = Math.floor(this.initTime / 60) % 60 + '';
let hours = Math.floor(this.initTime / 3600) + '';
if (seconds.length < 2) {
seconds = '0' + seconds;
}
if (minutes.length < 2) {
minutes = '0' + minutes;
}
if (hours.length < 2) {
hours = '0' + hours;
}
this.setNumPic(6, seconds.charAt(1));
this.setNumPic(5, seconds.charAt(0));
this.setNumPic(4, minutes.charAt(1));
this.setNumPic(3, minutes.charAt(0));
this.setNumPic(2, hours.charAt(1));
this.setNumPic(1, hours.charAt(0));
this.setClockStart(true);
this.initTime = initTime
let timeStr = timestampFormat('HHmmss', this.initTime)
timeStr.split('').forEach((digit, index) => {
this.setNumPic(index + 1, Number(digit))
})
}
setModel(dx, dy) {
this.model.point.x += dx;
this.model.point.y += dy;
this.model.point.x += dx
this.model.point.y += dy
}
}

View File

@ -299,6 +299,44 @@ class Iscs {
this.$painter.update(this.iscsDevice[psdCode]);
}
});
} else if (elem.deviceType === 'GATE') {
const checkArrowDoubleCodeList = ['IscsPicture_2', 'IscsPicture_8', 'IscsPicture_27', 'IscsPicture_33'];
const checkArrowLeftCodeList = ['IscsPicture_3', 'IscsPicture_4', 'IscsPicture_5', 'IscsPicture_6', 'IscsPicture_7', 'IscsPicture_28', 'IscsPicture_29',
'IscsPicture_30', 'IscsPicture_31', 'IscsPicture_34', 'IscsPicture_35', 'IscsPicture_36', 'IscsPicture_37'];
const checkArrowRightCodeList = ['IscsPicture_10', 'IscsPicture_11', 'IscsPicture_12', 'IscsPicture_13', 'IscsPicture_14'];
[...checkArrowDoubleCodeList, ...checkArrowLeftCodeList, ...checkArrowRightCodeList].forEach(checkCode => {
let picture = '';
if (elem.status === 1) {
if (checkArrowDoubleCodeList.includes(checkCode)) {
picture = 'checkArrowDoubleLv';
} else if (checkArrowLeftCodeList.includes(checkCode)) {
picture = 'checkArrowLeftLv';
} else if (checkArrowRightCodeList.includes(checkCode)) {
picture = 'checkArrowRightLv';
}
} else if (elem.status === 0) {
if (checkArrowDoubleCodeList.includes(checkCode)) {
picture = 'checkArrowDoubleHong';
} else if (checkArrowLeftCodeList.includes(checkCode)) {
picture = 'checkArrowLeftHong';
} else if (checkArrowRightCodeList.includes(checkCode)) {
picture = 'checkArrowRightHong';
}
} else if (elem.status === -1) {
if (checkArrowDoubleCodeList.includes(checkCode)) {
picture = 'checkArrowDouble';
} else if (checkArrowLeftCodeList.includes(checkCode)) {
picture = 'checkArrowLeft';
} else if (checkArrowRightCodeList.includes(checkCode)) {
picture = 'checkArrowRight';
}
}
if (picture) {
this.iscsDevice[checkCode].model.picture = picture;
this.$painter.update(this.iscsDevice[checkCode]);
}
});
} else {
const oDevice = this.iscsDevice[code];
if (oDevice && elem.dispose) {

View File

@ -62,7 +62,7 @@ import checkSell from '@/assets/iscs_picture/check_sell.png';
import checkSell2 from '@/assets/iscs_picture/check_sell2.png';
import checkSell2Lv from '@/assets/iscs_picture/check_sell2_lv.png';
import checkSell2Hong from '@/assets/iscs_picture/check_sell2_hong.png';
import checkSell3 from '@/assets/iscs_picture/check_sell3.png';
// import checkSell3 from '@/assets/iscs_picture/check_sell3.png';
import bgShowRoom from '@/assets/iscs_picture/bg-showroom.jpg';
import bgStand from '@/assets/iscs_picture/bg-stand.jpg';
import bgFasPlatformA from '@/assets/iscs_picture/fas_platform_a_bg.png';
@ -146,6 +146,8 @@ const pictureObj = {
checkArrowRightLv,
checkArrowRightHong,
checkArrowDouble,
checkArrowDoubleLv,
checkArrowDoubleHong,
checkFlowCumulative,
checkSell,
checkSell2,
@ -190,6 +192,7 @@ export default class Picture extends Group {
this._function = device.model.function;
this.z = device.model.z;
this.create();
this.setState(this.model);
if (this.model.groupId) {
this.createMouseEvent();
}
@ -232,6 +235,11 @@ export default class Picture extends Group {
this.model.point.x += dx;
this.model.point.y += dy;
}
setState(model) {
if (model.picture) {
this.imageButton && this.imageButton.setStyle({image: pictureObj[model.picture]});
}
}
getBoundingRect() {
const rect = this.imageButton.getBoundingRect().clone();
rect.x = rect.x + this.model.point.x;

View File

@ -166,7 +166,8 @@ export function Jl3ddeviceNew(dom,group,token,skinCode) {
let teststomp = new StompClient();
// let topic = '/user/topic/simulation/assistant/'+group;
let topic = '/user/queue/simulation/jl3d/'+group;
// let topic = '/user/queue/simulation/jl3d/'+group;
let topic = '/user/queue/simulation/'+group+'/jl3d';
let header = {'X-Token': token};
try {
teststomp.subscribe(topic, callback, header);

View File

@ -102,7 +102,8 @@ export function Jl3dfaultdevice(dom,group,token,skinCode) {
let teststomp = new StompClient();
// let topic = '/user/topic/simulation/assistant/'+group;
let topic = '/user/queue/simulation/jl3d/'+group;
// let topic = '/user/queue/simulation/jl3d/'+group;
let topic = '/user/queue/simulation/'+ group +'/jl3d';
let header = {'X-Token': token};
try {
// console.log("teststomp");

View File

@ -177,7 +177,8 @@ export function jl3dFaultDeviceVr(dom,group,skinCode) {
let connectmsg = {
type:'init',
baseurl:store.state.user.baseUrl,
topic:'/user/queue/simulation/jl3d/'+group,
// topic:'/user/queue/simulation/jl3d/'+group,
topic : '/user/queue/simulation/'+ group +'/jl3d',
token:getToken(),
};
vrwebworker.postMessage(connectmsg);

View File

@ -175,7 +175,8 @@ export function Jl3dOtherVR(dom,group,skinCode) {
let connectmsg = {
type:'init',
baseurl:store.state.user.baseUrl,
topic:'/user/queue/simulation/jl3d/'+group,
// topic:'/user/queue/simulation/jl3d/'+group,
topic : '/user/queue/simulation/'+ group +'/jl3d',
token:getToken(),
};
otherVrViewWorker.postMessage(connectmsg);

View File

@ -171,7 +171,8 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
let connectmsg = {
type:'init',
baseurl:store.state.user.baseUrl,
topic:'/user/queue/simulation/jl3d/'+group,
// topic:'/user/queue/simulation/jl3d/'+group,
topic : '/user/queue/simulation/'+ group +'/jl3d',
token:getToken(),
};
vrwebworker.postMessage(connectmsg);

View File

@ -41,7 +41,8 @@ export function Maintainerconnect(jlmap3d,routegroup,jsonwebwork,lablecodemap) {
var datatype = '00';
this.teststomp = new StompClient();
this.topic = '/user/queue/simulation/jl3d/'+routegroup;
// this.topic = '/user/queue/simulation/jl3d/'+routegroup;
this.topic = '/user/queue/simulation/'+routegroup+'/jl3d';
let header = {'X-Token': getToken() };
let connectmsg = {
type:'init',

View File

@ -7,7 +7,8 @@ export function PassflowConnect(deviceaction,toptrain,downtrain,routegroup,passe
const scope = this;
this.teststomp = new StompClient();
let topic = '/user/queue/simulation/jl3d/'+routegroup;
// let topic = '/user/queue/simulation/jl3d/'+routegroup;
let topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
socketon(topic);

View File

@ -42,7 +42,8 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
var datatype = '00';
this.teststomp = new StompClient();
this.topic = '/user/queue/simulation/jl3d/'+routegroup;
// this.topic = '/user/queue/simulation/jl3d/'+routegroup;
this.topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
let connectmsg = {
type:'init',

View File

@ -7,7 +7,8 @@ export function silumationConnect(deviceaction,toptrain,downtrain,routegroup,pas
const scope = this;
this.teststomp = new StompClient();
let start = true;
let topic = '/user/queue/simulation/jl3d/'+routegroup;
// let topic = '/user/queue/simulation/jl3d/'+routegroup;
let topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
// scope.socketon(topic);

View File

@ -7,7 +7,8 @@ export function PassflowConnect(deviceaction,toptrain,downtrain,routegroup,passe
const scope = this;
this.teststomp = new StompClient();
let start = true;
let topic = '/user/queue/simulation/jl3d/'+routegroup;
// let topic = '/user/queue/simulation/jl3d/'+routegroup;
let topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
socketon(topic);

View File

@ -7,7 +7,8 @@ export function TrainConnect(trafficTrain,deviceaction,toptrain,routegroup,passe
const scope = this;
this.teststomp = new StompClient();
let topic = '/user/queue/simulation/jl3d/'+routegroup;//
// let topic = '/user/queue/simulation/jl3d/'+routegroup;//
let topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
let restart = false;
socketon(topic);

View File

@ -8,7 +8,8 @@ export function sandBoxConnect(manager,routegroup,section,signal,station,train )
let scope = this;
this.teststomp = new StompClient();
let start = true;
let topic = '/user/queue/simulation/jl3d/'+routegroup;
// let topic = '/user/queue/simulation/jl3d/'+routegroup;
let topic = '/user/queue/simulation/'+ routegroup +'/jl3d';
let header = {'X-Token': getToken() };
let topswitch = false;
let downswitch = false;

View File

@ -85,7 +85,7 @@ class SkinCode extends defaultStyle {
invadeColor: '#FFFFFF', // 区段侵入颜色
spareColor: '#C0C0C0', // 区段空闲颜色
communicationOccupiedColor: '#FE0000', // 区段通信车占用颜色 // 调整 未确定
unCommunicationOccupiedColor: '#EF72A7', // 区段非通讯车占用颜色
unCommunicationOccupiedColor: '#FE0000', // 区段非通讯车占用颜色
routeLockColor: '#C0C0C0', // 区段进路锁定颜色
faultLockColor: '#81007F', // 区段故障锁定颜色
undefinedColor: '#0071C1', // 区段未定义颜色
@ -158,7 +158,7 @@ class SkinCode extends defaultStyle {
display: true, // 列车实时位置显示
specialShow: true, // 列车特殊显示
specialBackground: 'rgba(36, 219, 219, 0.8)',
specialRectWidth: 14,
specialRectWidth: 25,
stopTrainRectWidth: 7
}
};
@ -740,12 +740,12 @@ class SkinCode extends defaultStyle {
trainTargetTextAlign: 'right' // 车次号文字显示位置
},
trainTargetNumber: {
groupNumberPrefix: '00000', // 车组号前缀
defaultGroupNumber: 'EEEEE', // 默认车组号
groupNumberPrefix: '000', // 车组号前缀
defaultGroupNumber: 'EEE', // 默认车组号
trainTargetNumberOffset: {x: -4, y: 4}, // 车组号偏移量
lineNumber: '01', // 线路号在人工车时车组号拼接线路号
manualTypeColor: '#FA7FD7', // 人工车车组号显示颜色
maskText: '0' // 车组号遮罩
lineNumber: '', // 线路号在人工车时车组号拼接线路号
manualTypeColor: '#FA7FD7' // 人工车车组号显示颜色
// maskText: '0' // 车组号遮罩
},
trainHead: {
trainConntWidth: 0, // 列车竖杠的宽度

View File

@ -409,6 +409,7 @@ class Jlmap {
const code = elem.code;
const type = elem._type;
const oDevice = this.mapDevice[code] || deviceFactory(type, elem, this.showConfig);
oDevice._pictureHide = false;
this.$painter.update(oDevice);
});
this.$painter.$transformHandle.revisibleAll();
@ -435,11 +436,11 @@ class Jlmap {
const device = this.mapDevice[item];
if (device && device._type !== deviceType.Switch && device._type !== deviceType.Train) {
const pictureDevice = store.getters['map/getPictureDeviceByCode'](item);
device._dispose = pictureDevice ? pictureDevice.pictureHide : false;
device._pictureHide = pictureDevice ? pictureDevice.pictureHide : false;
this.$painter.updatePicture(device);
try {
if (device._type === deviceType.Section && device.type === '03') {
this.mapDevice[device.switch.code]._dispose = pictureDevice ? pictureDevice.pictureHide : false;
this.mapDevice[device.switch.code]._pictureHide = pictureDevice ? pictureDevice.pictureHide : false;
this.computedSwitch(device.switch);
this.$painter.updatePicture(this.mapDevice[device.switch.code]);
}

View File

@ -166,7 +166,7 @@ class Painter {
updatePicture(device) {
if (device) {
try {
if (device._dispose) {
if (device._pictureHide) {
this.delete(device);
} else {
device.instance && this.mapInstanceLevel[device._type].remove(device.instance);

View File

@ -48,6 +48,8 @@ export default class Arrow extends Group {
// if (!this.isShowShape) return;
this.recover();
if (!store.getters['map/checkDeviceShow'](this._code)) {
this.arrow && this.arrow.hide();
} else {
this.arrow && this.arrow.show();
}
}

View File

@ -440,4 +440,7 @@ export default class SignalButton extends Group {
}
}
getAnchorPoint() {}
getShapeTipPoint() {
return this.computedPosition;
}
}

View File

@ -17,13 +17,13 @@ export default class ETriangle extends Group {
if (model && model.point) {
const right = model.right == 1 ? 1 : -1;
if (this.style.Section.trainPosition.specialShow) {
this.stopRect = new Rect({ // 停车标识
this.openDoorRect = new Rect({ // 停车标识
zlevel: model.zlevel,
z: model.z,
shape: {
x: model.point.x - this.style.Section.trainPosition.stopTrainRectWidth,
y: model.point.y - this.style.Section.line.width / 4,
width: this.style.Section.trainPosition.stopTrainRectWidth,
width: this.style.Section.line.width - 2,
height: this.style.Section.line.width - 2
},
style: {
@ -31,6 +31,20 @@ export default class ETriangle extends Group {
fill: 'rgba(26, 54, 88, 0.7)'
}
});
this.stopRect = new Rect({
zlevel: model.zlevel,
z: model.z,
shape: {
x: model.point.x - this.style.Section.trainPosition.stopTrainRectWidth,
y: model.point.y - this.style.Section.line.width / 4,
width: 4,
height: this.style.Section.line.width + 2
},
style: {
lineWidth: 0,
fill: 'rgba(255,0,0,0.7)'
}
});
this.angle1 = new Rect({
zlevel: model.zlevel,
z: model.z,
@ -64,8 +78,9 @@ export default class ETriangle extends Group {
});
this.add(this.angle1);
this.add(this.angle);
this.add(this.openDoorRect);
this.add(this.stopRect);
this.stopRect.hide();
this.openDoorRect.hide();
} else {
this.angle = new Polygon({
zlevel: model.zlevel,
@ -136,18 +151,38 @@ export default class ETriangle extends Group {
});
this.angle1.dirty();
}
if (this.stopRect) {
const offset = (this.style.Section.trainPosition.specialRectWidth - this.style.Section.trainPosition.stopTrainRectWidth) / 2;
if (this.openDoorRect) {
const offset = (this.style.Section.trainPosition.specialRectWidth - this.style.Section.line.width) / 2;
let trainRight = model.x + offset;
if (right == 1) {
trainRight = model.x - offset - this.style.Section.trainPosition.stopTrainRectWidth;
trainRight = model.x - offset - this.style.Section.line.width + 2;
}
const pointsData = {
x: trainRight,
y: model.y - this.style.Section.line.width / 4,
width: this.style.Section.trainPosition.stopTrainRectWidth,
y: model.y - this.style.Section.line.width / 4 - 1,
width: this.style.Section.line.width - 2,
height: this.style.Section.line.width - 2
};
this.openDoorRect.attr({
shape: pointsData
});
this.openDoorRect.animateTo({
shape: pointsData
}, 10, 0, 'elasticOut', function () {
});
this.openDoorRect.dirty();
}
if (this.stopRect) {
let trainRight = model.x + this.style.Section.trainPosition.specialRectWidth;
if (right == 1) {
trainRight = model.x - this.style.Section.trainPosition.specialRectWidth - 4;
}
const pointsData = {
x: trainRight,
y: model.y - this.style.Section.line.width / 2,
width: 4,
height: this.style.Section.line.width + 2
};
this.stopRect.attr({
shape: pointsData
});
@ -161,7 +196,6 @@ export default class ETriangle extends Group {
trainB.setPositionText(model, right);
}
}
setStopShow(flag) {
if (flag) {
this.stopRect && this.stopRect.show();
@ -169,4 +203,11 @@ export default class ETriangle extends Group {
this.stopRect && this.stopRect.hide();
}
}
setOpenDoorShow(flag) {
if (flag) {
this.openDoorRect && this.openDoorRect.show();
} else {
this.openDoorRect && this.openDoorRect.hide();
}
}
}

View File

@ -6,7 +6,7 @@ import EMouse from './EMouse';
import store from '@/store/index';
import Circle from 'zrender/src/graphic/shape/Circle';
import BoundingRect from 'zrender/src/core/BoundingRect';
import Vue from 'vue';
// import Vue from 'vue';
/** 车身*/
export default class TrainBody extends Group {
@ -527,6 +527,9 @@ export default class TrainBody extends Group {
this.textTrainTrip.dirty();
}
if (this.textTrainGroup) {
if (store.state.training.prdType === '10') {
widthText = 0;
}
this.textTrainGroup.attr({
style: {
x: parseInt(point.x + widthText),

View File

@ -21,7 +21,9 @@ export default class Train extends Group {
this.fontSize = model.nameFontSize || style.Train.common.trainTextFontSize;
this.newScale = this.fontSize / style.Train.common.trainTextFontSize;
this.nameFormat = model.nameFormat || style.Train.trainBody.trainNameFormat;
if (style.Train.trainBody.specialTrainType.length > 0) {
if (store.state.training.prdType === '10') {
this.nameFormat = 'groupNumber';
} else if (style.Train.trainBody.specialTrainType.length > 0) {
style.Train.trainBody.specialTrainType.some((item) => {
if (model.type === item.type) {
this.nameFormat = item.nameFormat;
@ -345,11 +347,14 @@ export default class Train extends Group {
if (status != undefined) {
if (status) {
this.trainB && this.trainB.setDShow(false);
this.triangle && this.triangle.setOpenDoorShow(false);
} else {
this.trainB && this.trainB.setDShow(true);
this.triangle && this.triangle.setOpenDoorShow(true);
}
} else {
this.trainB && this.trainB.setDShow(false);
this.triangle && this.triangle.setOpenDoorShow(false);
}
}
// 设置通信状态类型

View File

@ -10,7 +10,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -126,8 +126,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -19,7 +19,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -135,8 +135,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -750,17 +750,36 @@ export const menuOperate = {
operation: OperationEvent.CTCCommand.setEndRunplan.menu.operation,
cmdType: CMD.CTC.CTC_LOG_SET_END_RUN_PLAN
},
// 修改列车固定径路
modifyTrainFixedPath:{
operation: OperationEvent.CTCCommand.modifyTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_EDIT
},
// 增加列车固定径路
addTrainFixedPath:{
operation: OperationEvent.CTCCommand.addTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_EDIT
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_SAVE
},
// 批量增加列车固定径路
batchTrainFixedPath:{
operation: OperationEvent.CTCCommand.batchTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_BATCH
},
// 固定列车径路从生效区更新
updateTrainFixedPath2Station:{
operation: OperationEvent.CTCCommand.updateTrainFixedPath2Station.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_STATION_UPDATE
},
// 固定列车经路更新列表
getStationTrainFixedPath:{
operation: OperationEvent.CTCCommand.getStationTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_STATION_UPDATE_LIST
},
// 固定列车经路更新加载到计划
loadUpdateStationTrainFixedPath:{
operation: OperationEvent.CTCCommand.loadUpdateStationTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_STATION_UPDATE_LOAD
},
// 导入列车固定径路
importTrainFixedPath:{
@ -792,6 +811,11 @@ export const menuOperate = {
operation: OperationEvent.CTCCommand.modifyStationTrack.menu.operation,
cmdType: CMD.CTC.CTC_STATION_DETAIL_EDIT
},
// 编辑股道信息
editStationTrack:{
operation: OperationEvent.CTCCommand.modifyStationTrack.edit.operation,
cmdType: CMD.CTC.CTC_STATION_DETAIL_EDIT
},
// 股道发布生效区
releaseStationTrack:{
operation: OperationEvent.CTCCommand.releaseStationTrack.menu.operation,
@ -878,6 +902,12 @@ export const menuOperate = {
operation: OperationEvent.RailCommand.railQueryRegister.menu.operation,
cmdType: CMD.RAIL.CMD_RAIL_QUERY_REGISTER
}
},
Conversation: {
Chat: {
operation: OperationEvent.Conversation.Chat.menu.operation,
cmdType: CMD.Conversation.CMD_Conversation_Chat_Text
}
}
};
@ -892,6 +922,7 @@ export const menuOperate = {
export function commitOperate(operate, paramList, over, fillStep = {}) {
const step = {
start: true,
userOperationType: operate.userOperationType || 'leftClick',
operation: operate.operation,
param:{}
};

View File

@ -232,10 +232,10 @@ export default {
this.guideLockLeftFlag = false;
},
'$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -243,6 +243,19 @@ export default {
}
this.deviceList = [];
}
},
'$store.state.socket.simulationReset': function(val) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'Signal', hasSelected: 0}]);
}
this.deviceList = [];
this.commandTypeList = [];
this.$store.dispatch('menuOperation/setButtonOperation', null);
this.clearOperate();
this.guideLockRightFlag = false;
this.guideLockLeftFlag = false;
}
},
beforeDestroy() {
@ -404,7 +417,7 @@ export default {
if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}

View File

@ -19,7 +19,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -135,8 +135,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -196,9 +196,6 @@ export default {
EventBus.$on('bottomTableShowOrHidden', () => {
this.showTable = !this.showTable;
});
// if (this.stationList && this.stationList.length) {
// this.stationCode = this.stationList[0].code;
// }
},
methods: {
doShow() {
@ -211,6 +208,7 @@ export default {
initShowStationList(val) {
if (val) {
const centralizedStation = this.$store.getters['map/getDeviceByCode'](val);
if (centralizedStation) {
const sn = centralizedStation.sn;
this.showStationList = [centralizedStation];
this.stationCode = centralizedStation.code;
@ -222,6 +220,7 @@ export default {
}
});
}
}
},
getRouteStatus(status) {
if (status === '2') {

View File

@ -0,0 +1,128 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="封锁操作对话框"
:visible.sync="show"
width="600px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
>
<div class="content">
<el-tree
style="height: 50%; overflow-y: scroll;"
:data="treeData"
node-key="id"
show-checkbox
:expand-on-click-node="true"
default-expand-all
>
<span class="custom-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span v-if="data.id <= 2">封锁状态</span>
<span v-else>{{ getBlockState(data.id) ? '' : '' }}</span>
</span>
</el-tree>
<div class="info">
<div class="item">14:36:18 操作成功</div>
<div class="item">14:36:18 操作成功</div>
</div>
</div>
<div class="btn-bar">
<el-button>设置封锁</el-button>
<el-button>解除封锁</el-button>
<el-button>保存</el-button>
<el-button @click="doClose">关闭</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'BlockDevice',
data() {
return {
show: false,
treeData: [
{
label: '沈阳',
id: 1,
children: [
{
id: 3,
label: '股道',
children: [
{
id: 5,
label: '11G',
},
{
id: 6,
label: '12G',
},
{
id: 7,
label: 'XIIIG',
},
{
id: 8,
label: '14G',
},
{
id: 9,
label: '15G',
},
{
id: 10,
label: 'XVIG',
},
{
id: 11,
label: 'XVIIG',
},
],
},
],
},
],
}
},
methods: {
doShow() {
this.show = true
},
doClose() {
this.show = false
},
getBlockState(id) {
return true
},
},
}
</script>
<style lang="scss" scoped>
.content {
height: 400px;
.custom-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding-right: 2rem;
}
.info {
background-color: #fff;
margin-top: 6px;
padding: 8px;
height: 50%;
}
}
.btn-bar {
display: flex;
justify-content: space-between;
margin-top: 16px;
}
</style>

View File

@ -9,7 +9,6 @@
:modal="false"
:title="title"
:close-on-click-modal="false"
append-to-body
>
<!-- 密码校验 -->
<el-row>
@ -130,9 +129,11 @@ export default {
doShow(operate, title) {
this.title = title;
this.operate = operate || {};
this.operation = operate.operation;
if (operate.operateNext) {
console.log(this.operation , operate.operation)
this.operation = operate.operateNext;
} else {
this.operation = operate.operation;
}
this.dialogShow = true;
this.checkHasInput = false;

View File

@ -10,11 +10,11 @@
:modal="false"
:close-on-click-modal="false"
>
<div class="table">
<div :id="domIdChange" class="table">
<div v-for="(temp,index) in tempTable" :key="index" class="eachShunt">
<div class="shuntingName">{{ temp.name }}</div>
<div class="shuntingSelected">
<el-checkbox v-model="temp.selected" size="medium" />
<el-checkbox v-model="temp.selected" size="medium" @change="changeShuntingTypeList" />
</div>
</div>
</div>
@ -56,6 +56,9 @@ export default {
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Section.defectiveShunting.confirm.domId : '';
},
domIdChange() {
return this.dialogShow ? OperationEvent.Section.defectiveShunting.shuntingTypeListChange.domId : '';
}
},
methods:{
@ -84,6 +87,22 @@ export default {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
changeShuntingTypeList(val) {
const shuntingTypeList = [];
this.tempTable.forEach(each=>{
if (each.selected) {
shuntingTypeList.push(each.value);
}
});
const operate = {
operation: OperationEvent.Section.defectiveShunting.shuntingTypeListChange.operation,
userOperationType: 'leftClick',
shuntingTypeList: shuntingTypeList
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
// if (valid) {}
}).catch((error) => { console.error(error); });
},
commit() {
const shuntingTypeList = [];
this.tempTable.forEach(each=>{
@ -93,9 +112,9 @@ export default {
});
const operate = {
over: true,
code:this.sectionCode,
cmdType:CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING,
operation: OperationEvent.Section.defectiveShunting.confirm.operation,
userOperationType: 'leftClick',
param:{
sectionCode:this.sectionCode,
shuntingTypeList:shuntingTypeList
@ -104,6 +123,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
this.$emit('clearOperate');
}
}).catch((error) => { this.doClose(); this.$refs.noticeInfo.doShow(); console.log(error); });
},

View File

@ -0,0 +1,54 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="信息窗口"
:visible.sync="show"
width="800px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
>
<div class="info-content">
<div class="item" v-for="item in info" :key="item">
{{ item }}
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'InfoDialog',
data() {
return {
show: false,
info: [
'系统定时提醒>请检查股道 上行防溜设施: II道 > 上次确认时间: 2017-05-02 08:57:12',
'系统定时提醒>请检查股道 上行防溜设施: 3道 > 上次确认时间: 2017-05-02 08:57:12.请检查股道 上行防溜设施: II道 > 上次确认时间: 2017-05-02 08:57:12',
'系统定时提醒>请检查股道 上行防溜设施: 4道 > 上次确认时间: 2017-05-02 08:57:12',
],
}
},
methods: {
doShow() {
this.show = true
},
doClose() {
this.show = false
},
},
}
</script>
<style lang="scss" scoped>
.info-content {
background-color: #fff;
overflow-x: scroll;
.item {
line-height: 1.5em;
white-space: nowrap;
}
}
</style>

View File

@ -113,6 +113,7 @@ export default {
if (this.mapData && this.mapData.skinVO) {
const parser = parserFactory(ParserType.Graph.value);
this.mapDevice = parser.parser(this.mapData, this.mapData.skinVO.code, this.map.getShowConfig());
console.log('parsed mapDevice', this.mapDevice)
}
},
loadData() {

View File

@ -0,0 +1,90 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="操作日志查询"
:visible.sync="show"
width="1100px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
>
<el-form :model="formData" inline>
<el-form-item label="关键字" prop="keyword">
<el-input v-model="formData.keyword"></el-input>
</el-form-item>
<el-form-item label="起始" prop="startTime">
<el-date-picker v-model="formData.startTime" type="datetime"></el-date-picker>
</el-form-item>
<el-form-item label="终止" prop="endTime">
<el-date-picker v-model="formData.endTime" type="datetime"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button>查询</el-button>
<el-button>选择文件</el-button>
</el-form-item>
</el-form>
<div class="content">
<el-table stripe :data="tableData">
<el-table-column prop="order" label="序号" width="50px" />
<el-table-column prop="time" label="时间" width="120px" />
<el-table-column prop="origin" label="来源" width="120px" />
<el-table-column prop="desc" label=""> </el-table-column>
</el-table>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'OperationLogQuery',
data() {
return {
show: false,
formData: {
keyword: '',
startTime: '',
endTime: '',
},
tableData: [
{
order: 0,
time: '2017-05-09 08:53:11',
origin: '<12>12',
desc: '设置股道3防溜上行.铁鞋(无编号);下行.无防溜措施',
},
{
order: 1,
time: '2017-05-09 08:53:11',
origin: '<12>12',
desc: '设置股道3防溜上行.铁鞋(无编号);下行.无防溜措施',
},
{
order: 2,
time: '2017-05-09 08:53:11',
origin: '<12>12',
desc: '设置股道3防溜上行.铁鞋(无编号);下行.无防溜措施',
},
],
}
},
methods: {
doShow() {
this.show = true
},
doClose() {
this.show = false
},
},
}
</script>
<style lang="scss" scoped>
/deep/ .el-input {
width: 200px;
}
/deep/.el-input__icon {
line-height: 25px;
}
</style>

View File

@ -0,0 +1,114 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="电力臂状态操作"
:visible.sync="show"
width="600px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
>
<el-tree :data="treeData" node-key="id" show-checkbox :expand-on-click-node="true" default-expand-all>
<span class="custom-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span v-if="data.id <= 2">状态</span>
<span v-else>{{ getPowerState(data.id) ? '有电' : '无电' }}</span>
</span>
</el-tree>
<div class="btn-bar">
<el-button>设置有电</el-button>
<el-button>设置停电</el-button>
<el-button>刷新状态</el-button>
<el-button @click="doClose">关闭</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'PowerSupplyArmSetting',
data() {
return {
show: false,
treeData: [
{
id: 1,
label: '沈阳',
children: [
{
id: 3,
label: '三线14、15、16道',
},
{
id: 4,
label: '浑下、17、18、19道、机务段、机26、揽、皇',
},
{
id: 5,
label: '浑上、11、12、13道',
},
{
id: 6,
label: '沈北下行',
},
{
id: 7,
label: '沈北上行',
},
{
id: 8,
label: '沈阳站库线',
},
],
},
{
id: 2,
label: '沈阳北',
children: [
{
id: 9,
label: '沈北下行',
},
{
id: 10,
label: '沈北上行',
},
{
id: 11,
label: '沈阳北客技库',
},
],
},
],
}
},
methods: {
doShow() {
this.show = true
},
doClose() {
this.show = false
},
getPowerState(id) {
return true
},
},
}
</script>
<style lang="scss" scoped>
.custom-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding-right: 2rem;
}
.btn-bar {
display: flex;
justify-content: space-between;
margin-top: 10px;
}
</style>

View File

@ -31,7 +31,10 @@
</div>
<div class="row">
车站
<el-select style="width: 60%;"></el-select>
<el-select v-model="form.station" style="width: 60%;">
<el-option value="shenyang" label="沈阳"></el-option>
<el-option value="shenyangbei" label="沈阳北"></el-option>
</el-select>
</div>
<div class="wrapper">
<div class="list" style="width: 60%;">
@ -92,6 +95,9 @@ export default {
data() {
return {
show: false,
form: {
station: 'shenyang',
},
}
},
methods: {

View File

@ -0,0 +1,152 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="区域批量操作"
:visible.sync="show"
width="1400px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="16">
<map-visual :mapData="mapData" :width="870" :height="600" ref="mapVisual" />
</el-col>
<el-col :span="8">
<div class="form-area">
<div class="top">
<el-select v-model="workspaceName"></el-select>
<el-button>重命名</el-button>
<el-checkbox v-model="isEdit">编辑</el-checkbox>
</div>
<div class="mid">
<el-tree :data="treeData" node-key="id" show-checkbox :expand-on-click-node="true" default-expand-all>
<span class="custom-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span v-if="data.id <= 2">操作</span>
<span v-if="data.id <= 2">状态</span>
<span v-if="data.id > 2">{{ data.operation }}</span>
<span v-if="data.id > 2">{{ data.state }}</span>
</span>
</el-tree>
</div>
<div class="bottom">
<div class="line">
<el-button>增加分区</el-button>
<el-button>删除分区</el-button>
<el-button>保存分区</el-button>
<el-button>上传分区定义</el-button>
</div>
<div class="line">
<el-button>封锁/单锁</el-button>
<el-button>解封/解锁</el-button>
<el-button>刷新状态</el-button>
<el-button @click="doClose">关闭</el-button>
</div>
</div>
</div>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import MapVisual from './mapVisual.vue'
export default {
name: 'RegionBatchOperation',
components: { MapVisual },
data() {
return {
show: false,
workspaceName: '',
isEdit: false,
treeData: [
{
label: '临时批量工作区',
id: 1,
children: [
{
id: 3,
label: '道岔',
operation: '定',
state: '反位',
},
{
id: 4,
label: '股道/无岔',
},
{
id: 5,
label: '区间',
},
{
id: 6,
label: '信号机',
},
],
},
],
mapData: null,
}
},
created() {
this.mapData = JSON.parse(JSON.stringify(this.$store.state.map.map))
},
methods: {
doShow(stationCode) {
this.show = true
this.$nextTick(() => {
const picData = this.mapData.pictureList.find(pic => pic.stationCode === stationCode && pic.type === 'regionBatchOperation')
this.$store.dispatch('map/setPictureDeviceMap', picData.deviceMap)
const list = []
for (const deviceCode in picData.deviceMap) {
list.push(deviceCode)
}
this.$refs.mapVisual.loadData()
this.$refs.mapVisual.map.updatePicture(list)
this.$refs.mapVisual.map.updateTransform(picData.scaling, picData.origin)
})
},
doClose() {
this.show = false
},
},
}
</script>
<style lang="scss" scoped>
.form-area {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 600px;
.top {
display: flex;
width: 100%;
justify-content: space-between;
}
.mid {
flex: 1;
padding: 10px 0;
.el-tree {
height: 100%;
.custom-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
padding-right: 2rem;
}
}
}
.bottom {
.line {
display: flex;
justify-content: space-between;
}
}
}
</style>

View File

@ -266,8 +266,8 @@ export default {
commit() {
if (this.route) {
this.loading = true;
const type = this.route.lock ? menuOperate.Signal.cancelTrainRoute : menuOperate.Signal.arrangementRoute;
const param = this.route.lock ? { signalCode: this.route.startSignalCode } : { routeCode:this.route.code };
const type = this.route.lock ? menuOperate.Signal.cancelTrainRoute : menuOperate.CTC.setRoute;
const param = this.route.lock ? { signalCode: this.route.startSignalCode } : { routeCode:this.route.code, tripNumber: this.selected.tripNumber, force: false, duration: null };
commitOperate(type, param, 3).then(({valid, operate})=>{
this.loading = false;
if (valid) {

View File

@ -0,0 +1,253 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm train-set-plan"
title="站存车管理"
:visible.sync="show"
width="800px"
:before-close="doClose"
:z-index="3000"
:append-to-body="true"
:modal="true"
:close-on-click-modal="false"
>
<div class="top">
<div class="send">
<div class="edittime">修改时间: 11月14日16时49分</div>
<div class="title">发送时间:</div>
<div class="table">
<el-table height="100%" :data="sendTableData">
<el-table-column prop="name" label="股道名称" />
<el-table-column prop="info" label="现在存车信息" width="240" />
<el-table-column prop="subtotal" label="小计" width="50" />
</el-table>
</div>
</div>
<div class="receive">
<div class="title">接收时间:</div>
<div class="table">
<el-table height="100%" :data="receiveTableData">
<el-table-column prop="type" label="车种" />
<el-table-column prop="emptyNum" label="空车" />
<el-table-column prop="duplicateNum" label="重车" />
</el-table>
</div>
</div>
</div>
<div class="bottom">
<div class="saveInfo">
<div class="title">存车信息</div>
<div class="table">
<el-table height="100%" :data="savedData">
<el-table-column prop="type" label="车厢类型" />
<el-table-column prop="count" label="辆数" width="50px" />
<el-table-column prop="desc" label="说明/去向" />
<el-table-column prop="flag" label="运用标记" />
</el-table>
</div>
</div>
<div class="edit">
<div class="title">编辑站存车</div>
<el-form class="form" inline>
<div class="row">
<el-form-item label="类别">
<el-select v-model="editFormData.type"></el-select>
</el-form-item>
<el-form-item label="车种">
<el-select v-model="editFormData.trainType"></el-select>
</el-form-item>
<el-form-item label="作业说明">
<el-select v-model="editFormData.description"></el-select>
</el-form-item>
</div>
<div class="row">
<el-form-item label="辆数">
<el-input-number style="width: 90px;" v-model="editFormData.count" :controls="false"></el-input-number>
</el-form-item>
<el-form-item label="运用标记">
<el-select style="width: 220px;" v-model="editFormData.flag"></el-select>
</el-form-item>
</div>
<div class="row">
<el-form-item label="说明/去向">
<el-input style="width: 366px;" v-model="editFormData.destination"></el-input>
</el-form-item>
</div>
<div class="row">
<el-button>插入</el-button>
<el-button>增加</el-button>
<el-button>修改</el-button>
<el-button>删除</el-button>
</div>
</el-form>
</div>
</div>
<div class="btn-area">
<div class="total">合计: 5</div>
<div class="btngroup">
<el-button>上报调度所</el-button>
<el-button @click="doClose">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
export default {
name: 'StationManage',
data() {
return {
show: false,
sendTableData: [
{
name: '7道',
info: '空保留P5',
subtotal: 5,
},
{
name: 'V道',
info: '',
subtotal: 0,
},
{
name: '3道',
info: '',
subtotal: 0,
},
{
name: 'I道',
info: '',
subtotal: 0,
},
{
name: 'II道',
info: '',
subtotal: 0,
},
{
name: '4道',
info: '',
subtotal: 0,
},
{
name: '3道',
info: '',
subtotal: 0,
},
],
receiveTableData: [
{
type: '棚车',
emptyNum: 5,
duplicateNum: 0,
},
{
type: '敞车',
emptyNum: 0,
duplicateNum: 0,
},
{
type: '平板车',
emptyNum: 0,
duplicateNum: 0,
},
],
savedData: [
{
type: '空保留棚车',
count: 5,
desc: '八盘峡',
flag: '运用',
},
],
editFormData: {
type: '',
trainType: '',
description: '',
count: 0,
flag: '',
destination: '',
},
}
},
methods: {
doShow(stationCode) {
this.show = true
},
doClose() {
this.show = false
},
},
}
</script>
<style lang="scss" scoped>
.top,
.bottom {
height: 200px;
}
.top {
display: flex;
position: relative;
.send {
width: 66.7%;
height: 100%;
.edittime {
position: absolute;
top: 0%;
left: 0%;
line-height: 40px;
}
}
.receive {
width: 33.3%;
height: 100%;
}
.send,
.receive {
.title {
width: 100%;
text-align: center;
}
.table {
height: calc(100% - 40px);
}
}
}
.bottom {
display: flex;
.saveInfo {
width: 40%;
height: 100%;
.table {
height: calc(100% - 40px);
}
}
.edit {
width: 60%;
height: 100%;
.row {
display: flex;
justify-content: space-between;
}
}
.saveInfo,
.edit {
.title {
width: 100%;
text-align: center;
float: none;
}
/deep/ .el-select {
width: 90px;
}
/deep/ .el-form-item {
margin-bottom: 0;
}
}
}
.btn-area {
display: flex;
justify-content: space-between;
}
</style>

View File

@ -33,7 +33,7 @@
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div>
</div>
<div v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1560px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div id="tipInfoBox" v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1560px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div style="width: 60%;height: 30px;line-height: 30px;text-align: center;">提示信息窗</div>
<div style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div>
@ -96,8 +96,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import BottomTable from './bottomTable';
import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png';
@ -118,8 +117,8 @@ import CtcBarIcon15 from '@/assets/ctc_icon/pic15.png';
import CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue';
import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
import {getRunplanInStation} from '@/api/runplan';
import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
@ -227,14 +226,13 @@ export default {
return this.$route.query.dispatcherStation;
}
},
watch: {
watch: { // tipContentList
isShowBar(val) {
val && this.$store.dispatch('config/updateMenuBar');
},
'$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
this.initDate(date);
this.$store.dispatch('training/setInitTime', time);
this.initDate(time);
},
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) {
@ -271,6 +269,9 @@ export default {
}
}
});
},
'$store.state.socket.simulationReset':function(val) {
this.tipContentList = [];
}
// //
// '$store.state.map.mapViewLoadedCount': function (val) { //
@ -305,12 +306,12 @@ export default {
this.$store.dispatch('map/setPictureDeviceMap', {});
},
methods: {
changeSignedStatus(info) {
this.$refs.cmdManage.changeSignedStatus(info);
},
signedCmdClose() {
this.$refs.cmdManage.doShow();
},
// changeSignedStatus(info) {
// this.$refs.cmdManage.changeSignedStatus(info);
// },
// signedCmdClose() {
// this.$refs.cmdManage.doShow();
// },
getRunplanInStationData() {
getRunplanInStation(this.group).then(response => {
// debugger;
@ -424,14 +425,9 @@ export default {
}
},
initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`;
const years = date.getFullYear() + '';
let months = date.getMonth() + 1 + '';
let dates = date.getDate() + '';
if (months.length < 2) { months = '0' + months; }
if (dates.length < 2) { dates = '0' + dates; }
this.dateString = years + months + dates;
this.dateString1 = years + '年' + months + '月' + dates + '日';
this.time = timestampFormat('HH:mm:ss', date)
this.dateString = timestampFormat('YYYYMMDD', date)
this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
},
handleRunplan() {
this.$refs.runplanPane.doShow();

View File

@ -10,12 +10,14 @@
<manage-user ref="manageUser" />
<help-about ref="helpAbout" />
<set-limit-speed ref="setLimitSpeed" />
<train-fixed-path-pane ref="trainFixedPathPane" />
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import MenuBar from '@/jmapNew/theme/components/menus/menuBar';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import StationControlConvert from './menuDialog/stationControlConvert';
import TrainAdd from './menuDialog/trainAdd';
import TrainTranstalet from './menuDialog/trainTranstalet';
@ -25,6 +27,7 @@ import ViewName from './menuDialog/viewName';
import ManageUser from './menuDialog/manageUser';
import HelpAbout from './menuDialog/helpAbout';
import SetLimitSpeed from './menuDialog/setLimitSpeed';
import TrainFixedPathPane from './menuDialog/trainFixedPathPane';
import { EventBus } from '@/scripts/event-bus';
export default {
@ -39,7 +42,8 @@ export default {
TrainDelete,
ManageUser,
HelpAbout,
SetLimitSpeed
SetLimitSpeed,
TrainFixedPathPane
},
props: {
dateString: {
@ -168,11 +172,11 @@ export default {
},
{
title: '更新数据',
click: this.undeveloped
click: this.updateTrainFixedPath
},
{
title: '列车固定径路',
click: this.undeveloped
click: this.trainFixedPathPane
},
{
type: 'separator'
@ -306,6 +310,20 @@ export default {
}
});
},
updateTrainFixedPath() {
const stationCode = this.$store.state.training.roleDeviceCode;
commitOperate(menuOperate.CTC.updateTrainFixedPath2Station, { stationCode: stationCode }, 3).then(({valid, response}) => {
if (valid) {
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
});
},
trainFixedPathPane() {
const stationCode = this.$store.state.training.roleDeviceCode;
this.$refs.trainFixedPathPane.doShow(stationCode);
},
bottomTableShowOrHidden() {
EventBus.$emit('bottomTableShowOrHidden');
},

View File

@ -1,6 +1,7 @@
<template>
<div v-if="isShowBtn" id="menuButtons_box" class="menu menuButton" style="height:40px;" :style="{left: point.x+'px', bottom: point.y+'px' }">
<button :id="Station.stationMasterLock.rightButton.domId" class="button_box" :style="{width: width+'px', backgroundColor: xGuideMasterLock? guideColorDown: guideColorUp}" @click="guideLockRightButtonDown()">
<!-- backgroundColor: xGuideMasterLock? guideColorDown: guideColorUp -->
<button :id="Station.stationMasterLock.rightButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="guideLockRightButtonDown()">
<span style="color: #800000">
<center><b>X引导总锁</b></center>
</span>
@ -71,7 +72,7 @@
<center><b>道岔解封</b></center>
</span>
</button>
<button :id="Signal.signalTurnOn.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalTurnOn.menuButton.operation, ['Signal'])">
<button :id="Signal.signalTurnOn.menuButton.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Signal.signalTurnOn.menuButton.operation, ['SignalButton'])">
<span style="color: black">
<center><b>点灯</b></center>
</span>
@ -86,7 +87,8 @@
<center><b>S引导总锁</b></center>
</span>
</button>
<button :id="Station.powerUnLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="powerOnUnlock()">
<!-- powerOnUnlock -->
<button :id="Station.powerUnLock.button.domId" class="button_box" :style="{width: width+'px', backgroundColor:buttonUpColor}" @click="buttonDown(Station.powerUnLock.button.operation,['Station'])">
<!--<span style="color:black">-->
<span style="color:#800000">
<center><b>上电解锁</b></center>
@ -117,7 +119,7 @@
<!--</button>-->
<password-box ref="password" @checkOver="passWordCommit" @checkCancel="clearOperate" />
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<defective-shunting ref="defectiveShunting" />
<defective-shunting ref="defectiveShunting" @clearOperate="clearOperate" />
</div>
</template>
@ -131,7 +133,6 @@ import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { mapGetters } from 'vuex';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { MouseEvent } from '@/scripts/ConstDic';
// import { OperateMode } from '@/scripts/ConstDic';
export default {
name: 'MapButtonMenu',
@ -150,10 +151,6 @@ export default {
},
data() {
return {
// point: {
// x: 0,
// y: 30
// },
operation: '0',
buttonName: '',
guideColorDown: '#FEEE1A',
@ -266,10 +263,10 @@ export default {
this.guideLockLeftFlag = false;
},
'$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -283,6 +280,19 @@ export default {
const station = this.$store.getters['map/getDeviceByCode'](val);
this.$store.getters['map/checkStationGuideMaster'](station.code, station.sGuideMasterLock, station.xGuideMasterLock);
}
},
'$store.state.socket.simulationReset': function(val) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'Signal', hasSelected: 0}]);
}
this.deviceList = [];
this.commandTypeList = [];
this.$store.dispatch('menuOperation/setButtonOperation', null);
this.clearOperate();
this.guideLockRightFlag = false;
this.guideLockLeftFlag = false;
}
},
beforeDestroy() {
@ -299,14 +309,17 @@ export default {
}
operate = {
over: true,
operation: data.operation,
operation: data.operateNext,
operationPre: data.operation,
cmdType: data.nextCmdType,
userOperationType: 'leftClick',
param: data.param
};
} else {
operate = {
operationPre: data.operation,
operation: data.operateNext
operation: data.operateNext,
userOperationType: 'leftClick'
};
}
this.trainingOperation(operate);
@ -321,6 +334,9 @@ export default {
} else if (operate.operationPre === this.Switch.guideLock.rightButton.operation || operate.operation === this.Switch.guideLock.rightButton.operation) {
this.guideLockRightFlag = !this.guideLockRightFlag;
}
if (operate.operationPre == this.Station.powerUnLock.button.operation) {
this.clearOperate();
}
// debugger;
// this.$store.dispatch('menuOperation/setButtonOperation', operate.operation); //
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
@ -353,37 +369,59 @@ export default {
}
}
},
// 线
powerOnUnlock() {
const operate = {
over:true,
operation:this.Station.powerUnLock.button.operation,
cmdType:CMD.Station.CMD_STATION_POWER_ON_UNLOCK,
code:this.$store.state.map.showCentralizedStationCode,
param:{stationCode: this.$store.state.map.showCentralizedStationCode}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.clearOperate();
} else {
this.$refs.noticeInfo.doShow();
}
}).catch((error) => {
console.error(error);
this.$refs.noticeInfo.doShow();
});
},
// // 线
// handelPowerUnLock(model) {
// debugger;
// const operate = {
// over: true,
// code: model.code,
// operation: this.$store.state.menuOperation.buttonOperation,
// userOperationType: 'leftClick',
// cmdType: CMD.Station.CMD_STATION_POWER_ON_UNLOCK,
// param:{stationCode: this.$store.state.map.showCentralizedStationCode}
// };
// this.sendCommand(operate);
// },
// powerOnUnlock() {
// const operate = {
// over:true,
// operation:this.Station.powerUnLock.button.operation,
// cmdType:CMD.Station.CMD_STATION_POWER_ON_UNLOCK,
// code:this.$store.state.map.showCentralizedStationCode,
// param:{stationCode: this.$store.state.map.showCentralizedStationCode}
// };
// this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
// if (valid) {
// this.clearOperate();
// } else {
// this.$refs.noticeInfo.doShow();
// }
// }).catch((error) => {
// console.error(error);
// this.$refs.noticeInfo.doShow();
// });
// },
//
handelDefectiveShunting(model) {
// CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING;
const operate = {
operation: this.Section.defectiveShunting.button.operation,
code: model.code,
userOperationType: 'leftClick'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
const {switchSection, code, shuntingTypeList} = model;
this.clearOperate();
this.$refs.defectiveShunting.doShow({switchSection, code, shuntingTypeList});
}
});
// this.clearOperate();
},
// S
guideLockLeftButtonDown() {
const operate = {
operation: this.Station.stationMasterLock.leftButton.operation
operation: this.Station.stationMasterLock.leftButton.operation,
userOperationType: 'leftClick'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
@ -399,7 +437,8 @@ export default {
// X
guideLockRightButtonDown() {
const operate = {
operation: this.Station.stationMasterLock.rightButton.operation
operation: this.Station.stationMasterLock.rightButton.operation,
userOperationType: 'leftClick'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
@ -416,16 +455,21 @@ export default {
this.clearOperate();
if (operation != this.Command.cancel.clearMbm.operation) {
const operate = {
operation: operation
operation: operation,
userOperationType: 'leftClick'
};
//
const operationList = [this.Signal.humanTrainRoute.button.operation, this.Section.fault.button.operation, this.Section.defectiveShunting.button.operation,
const operationList = [this.Signal.humanTrainRoute.button.operation,
this.Section.fault.button.operation,
this.Section.defectiveShunting.button.operation,
this.Station.powerUnLock.button.operation,
this.Signal.signalTurnOff.menuButton.operation];
const operationMap = {
[this.Signal.humanTrainRoute.button.operation]:'总人解',
[this.Section.fault.button.operation]:'区故解',
[this.Section.defectiveShunting.button.operation]:'分路不良',
[this.Signal.signalTurnOff.menuButton.operation]:'灭灯'
[this.Signal.signalTurnOff.menuButton.operation]:'灭灯',
[this.Station.powerUnLock.button.operation]:'上电解锁'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
@ -436,6 +480,10 @@ export default {
//
if (operationList.includes(operation)) {
operate['operateNext'] = this.Command.close.password.operation;
if (operation == this.Station.powerUnLock.button.operation) {
operate.nextCmdType = CMD.Station.CMD_STATION_POWER_ON_UNLOCK;
operate.param = {stationCode: this.$store.state.map.showCentralizedStationCode};
}
this.$refs.password.doShow(operate, operationMap[operation]);
}
this.timeNode = this.$store.state.socket.simulationTimeSync;
@ -446,6 +494,7 @@ export default {
//
const operate = {
start: true,
userOperationType: 'leftClick',
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -478,12 +527,13 @@ export default {
// OR
arrangementRouteOperation(deviceList) {
const operate = {
operation: this.Signal.arrangementRoute.button.operation
operation: this.Signal.arrangementRoute.button.operation,
userOperationType: 'leftClick'
};
if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}
@ -531,18 +581,21 @@ export default {
}
},
//
handelTotalCancel(model) {
handleTotalCancel(model) {
const operate = {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE,
param: {
signalCode: model._type === 'Signal' ? model.code : model.signalCode
}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
if (valid) {
this.clearOperate();
}
}).catch((error) => {
this.clearOperate();
console.error(error);
@ -555,6 +608,7 @@ export default {
over: true,
code: model.code,
operation: this.Signal.guide.button.operation,
userOperationType: 'leftClick',
cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE,
param: {signalCode: model.signalCode}
};
@ -564,6 +618,7 @@ export default {
this.sendCommand(operate);
} else {
operate.nextCmdType = CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE;
operate['operateNext'] = this.Command.close.password.operation;
this.$refs.password.doShow(operate, '引导信号');
this.$store.dispatch('training/updateMapState', [{code: model.code, _type: model._type, pressDown: 1}]);
}
@ -574,6 +629,7 @@ export default {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
val: model.code,
cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
};
@ -591,6 +647,7 @@ export default {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
cmdType: this.cmdType,
param: { switchCode: model.code}
};
@ -598,10 +655,15 @@ export default {
},
//
sendCommand(operate) {
this.$store.dispatch('training/nextNew', operate).then(({valid, response}) => {}).catch((error) => {
this.$store.dispatch('training/nextNew', operate).then(({valid, response}) => {
if (valid) {
this.clearOperate();
}
}).catch((error) => {
this.clearOperate();
console.error(error);
this.$refs.noticeInfo.doShow();
}).finally(() =>{ this.clearOperate(); });
});
},
// ()
checkHasTrainButton(model) {
@ -622,6 +684,7 @@ export default {
over: true,
code: model.code,
operation: buttonOperation,
userOperationType: 'leftClick',
cmdType: '',
param: {}
};
@ -651,6 +714,7 @@ export default {
over: true,
code: model.code,
operation: this.guideLockRightFlag ? this.Switch.guideLock.rightButton : this.Switch.guideLock.leftButton,
userOperationType: 'leftClick',
nextCmdType: CMD.Switch.CMD_SWITCH_MASTER_LOCK,
param: {signalCode: model.signalCode}
};
@ -659,6 +723,7 @@ export default {
operate.cmdType = CMD.Switch.CMD_SWITCH_MASTER_LOCK;
this.sendCommand(operate);
} else {
operate['operateNext'] = this.Command.close.password.operation;
this.$refs.password.doShow(operate, '引导信号');
}
}
@ -669,6 +734,7 @@ export default {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK,
param: {sectionCode: model.code}
};
@ -680,8 +746,9 @@ export default {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
cmdType: CMD.Signal.CMD_SIGNAL_TURN_ON,
param: {signalCode: model.code}
param: {signalCode: model.signalCode}
};
this.sendCommand(operate);
},
@ -691,6 +758,7 @@ export default {
over: true,
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
cmdType: CMD.Signal.CMD_SIGNAL_TURN_OFF,
param: {signalCode: model.signalCode}
};
@ -717,7 +785,7 @@ export default {
this.handleGuideLock(model);
} else if (buttonOperation && this.commandTypeList.includes(model._type)) {
if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model);
this.handleTotalCancel(model);
} else if (buttonOperation === this.Signal.humanTrainRoute.button.operation) {
this.handleTotalHumanSolution(model);
} else if (switchOperation.includes(buttonOperation)) {
@ -771,6 +839,7 @@ export default {
name:'总辅助',
operation:this.CTCCommand.assistPressMainAssist.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_MAIN_ASSIST,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode,
@ -782,6 +851,7 @@ export default {
name:'改方',
operation:this.CTCCommand.assistPressDownTurnDirection.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_DOWN_TURN_DIRECTION,
operationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode,
@ -794,6 +864,7 @@ export default {
// this.CTCCommand.assistPressDownTurnDirection.menu.operation
operation:this.CTCCommand.assistPressReceiveAssist.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_RECEIVE_ASSIST,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode
@ -804,6 +875,7 @@ export default {
name:'发辅助',
operation:this.CTCCommand.assistPressDeliverAssist.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_DELIVER_ASSIST,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode
@ -814,6 +886,7 @@ export default {
name:'事故',
operation:this.CTCCommand.assistPressAccident.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_ACCIDENT,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode
@ -826,6 +899,7 @@ export default {
'OCCLUSION':{
operation:this.CTCCommand.assistPressBlock.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_BLOCK,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode
@ -835,6 +909,7 @@ export default {
'RECOVERY':{
operation:this.CTCCommand.assistPressRestore.menu.operation,
nextCmdType:CMD.CTC.CTC_ASSIST_PRESS_RESTORE,
userOperationType: 'leftClick',
param:{
labelEnum:model.labelEnum,
stationCode:model.stationCode
@ -847,7 +922,8 @@ export default {
operation: noPasswordModelTypeMap[model.type].operation,
code: model.code,
param: noPasswordModelTypeMap[model.type].param,
cmdType : noPasswordModelTypeMap[model.type].nextCmdType
cmdType : noPasswordModelTypeMap[model.type].nextCmdType,
userOperationType: 'leftClick'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
@ -864,7 +940,8 @@ export default {
const operate = {
operation: modelTypeMap[model.type].operation,
code: model.code,
param: modelTypeMap[model.type].param
param: modelTypeMap[model.type].param,
userOperationType: 'leftClick'
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {

View File

@ -265,16 +265,21 @@ export default {
},
'$store.state.menuOperation.menuCount': function (val) {
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Cancel)) {
const operate = {
userOperationType: 'rightClick',
operation: this.Command.commandRight.right.operation
};
this.$store.dispatch('training/nextNew', operate);
this.$refs && this.$refs.popMenu && this.$refs.popMenu.resetShowPosition(this.$store.state.menuOperation.menuPosition);
} else {
this.$refs && this.$refs.popMenu && this.$refs.popMenu.close();
}
},
'$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -322,12 +327,14 @@ export default {
if (data.nextCmdType) {
operate = {
over: true,
userOperationType: 'leftClick',
operation: data.operation,
cmdType: data.nextCmdType,
param: data.param
};
} else {
operate = {
userOperationType: 'leftClick',
operationPre: data.operation,
operation: data.operateNext
};
@ -368,6 +375,7 @@ export default {
// S
guideLockLeftButtonDown() {
const operate = {
userOperationType: 'leftClick',
operation: this.Switch.guideLock.leftButton.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -384,6 +392,7 @@ export default {
// X
guideLockRightButtonDown() {
const operate = {
userOperationType: 'leftClick',
operation: this.Switch.guideLock.rightButton.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -403,6 +412,7 @@ export default {
this.clearOperate();
if (operation != this.Command.cancel.clearMbm.operation) {
const operate = {
userOperationType: 'leftClick',
operation: operation
};
// 684
@ -430,6 +440,7 @@ export default {
//
const operate = {
start: true,
userOperationType: 'leftClick',
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -467,6 +478,7 @@ export default {
handelReopenSignal(device) {
const operate = {
operation: this.Signal.reopenSignal.button.operation,
userOperationType: 'leftClick',
code: device.code,
param: { signalCode: device.code }
};
@ -475,10 +487,10 @@ export default {
},
//
arrangementRouteOperation(deviceList) {
const operate = { operation: this.Signal.arrangementRoute.button.operation };
const operate = { userOperationType: 'leftClick', operation: this.Signal.arrangementRoute.button.operation };
if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}
@ -543,6 +555,7 @@ export default {
const operate = {
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
param: {
signalCode: model._type === 'Signal' ? model.code : model.signalCode
}
@ -557,6 +570,7 @@ export default {
const operate = {
code: model.code,
operation: this.Signal.guide.button.operation,
userOperationType: 'leftClick',
param: {signalCode: model.signalCode}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -570,6 +584,7 @@ export default {
const operate = {
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
val: model.code,
param: { signalCode: model.code }
};
@ -582,6 +597,7 @@ export default {
const operate = {
code: model.code,
operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
param: { switchCode: model.code}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -641,6 +657,7 @@ export default {
const operate = {
code: model.code,
operation: this.Signal.guide.button.operation,
userOperationType: 'leftClick',
param: {signalCode: model.signalCode}
};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -673,7 +690,7 @@ export default {
// this.handleGuideLock(model);
// this.handleGuideSignal(model);
// } else
debugger;
// debugger;
if (buttonOperation && this.commandTypeList.includes(model._type)) {
if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model);
@ -747,7 +764,7 @@ export default {
this.$store.dispatch('menuOperation/setButtonOperation', this.operation);
},
routeCommit(trainCode, duration) {
const operate = {over: true, cmdType: CMD.CTC.CTC_SET_ROUTE, param:{ tripNumber: trainCode || '', duration: duration >= 0 ? duration : null, force: false }};
const operate = {userOperationType: 'leftClick', over: true, cmdType: CMD.CTC.CTC_SET_ROUTE, param:{ tripNumber: trainCode || '', duration: duration >= 0 ? duration : null, force: false }};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate();
}).catch((e) => {
@ -766,7 +783,7 @@ export default {
this.routeCommit();
}
} else if (this.operation === OperationEvent.MixinCommand.totalCancel.button.operation) {
const operate = {over: true, cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE};
const operate = {userOperationType: 'leftClick', over: true, cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate();
}).catch((e) => {
@ -774,7 +791,7 @@ export default {
this.clearOperate();
});
} else if (this.operation === OperationEvent.Signal.reopenSignal.button.operation) {
const operate = {over: true, cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL};
const operate = {userOperationType: 'leftClick', over: true, cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate();
}).catch(() => {
@ -782,7 +799,7 @@ export default {
this.clearOperate();
});
} else if (this.operation === OperationEvent.Signal.guide.button.operation) {
const operate = {over: true, cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE};
const operate = {userOperationType: 'leftClick', over: true, cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.$store.dispatch('training/updateMapState', [{code: this.selected.code, _type: this.selected._type, hasSelected: 0}]);
this.clearOperate();
@ -792,13 +809,13 @@ export default {
this.clearOperate();
});
} else if (this.operation === OperationEvent.Signal.humanTrainRoute.button.operation) {
const operate = {over: true, cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE};
const operate = {userOperationType: 'leftClick', over: true, cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
}).catch((e) => {
this.$refs.noticeInfo.doShow();
}).finally(() => { this.clearOperate(); });
} else if (this.switchOperation.includes(this.operation)) {
const operate = {over:true, cmdType: this.cmdType};
const operate = {userOperationType: 'leftClick', over:true, cmdType: this.cmdType};
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
}).catch(() => {
this.$refs.noticeInfo.doShow();
@ -885,6 +902,7 @@ export default {
const operate = {
over:true,
operation: noPasswordModelTypeMap[model.type].operation,
userOperationType: 'leftClick',
code: model.code,
param: noPasswordModelTypeMap[model.type].param,
cmdType : noPasswordModelTypeMap[model.type].nextCmdType
@ -903,6 +921,7 @@ export default {
} else {
const operate = {
operation: modelTypeMap[model.type].operation,
userOperationType: 'leftClick',
code: model.code,
param: modelTypeMap[model.type].param
};

View File

@ -0,0 +1,249 @@
<template>
<el-dialog
v-dialogDrag
class="chengdou-03__systerm"
:title="title"
:visible.sync="show"
width="1220px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-table
id="trainFixedPathList"
:data="trainFixedPathList"
border
height="280"
style="width: 100%;border:1px #ccc solid"
>
<el-table-column
type="index"
label="序号"
width="70"
/>
<el-table-column
prop="stationCode"
label="站名"
width="120"
>
<template slot-scope="scope">
{{ stationMap[scope.row.stationCode].name }}
</template>
</el-table-column>
<el-table-column
prop="arriveTipNum"
label="到达车次"
width="80"
/>
<el-table-column
prop="arriveTime"
label="到达时间"
width="80"
/>
<el-table-column
prop="leaveTipNum"
label="出发车次"
width="80"
/>
<el-table-column
prop="leaveTime"
label="出发时间"
width="80"
/>
<el-table-column
prop="masterCode"
label="股道名"
width="75"
>
<template slot-scope="scope">
<div v-if="scope.row.masterCode">
{{ sectionMap[scope.row.masterCode].name }}
</div>
</template>
</el-table-column>
<el-table-column
prop="backStationCode"
label="来方车站"
width="120"
>
<!-- 后方车站 -->
<template slot-scope="scope">
<div v-if="scope.row.backStationCode">
{{ stationMap[scope.row.backStationCode].name }}
</div>
</template>
</el-table-column>
<el-table-column
prop="fontStationCode"
label="去方车站"
width="120"
>
<!-- 前方车站 -->
<template slot-scope="scope">
<div v-if="scope.row.fontStationCode">
{{ stationMap[scope.row.fontStationCode].name }}
</div>
</template>
</el-table-column>
<el-table-column
prop="enterDirCode"
label="入口"
width="170"
>
<template slot-scope="scope">
<div v-if="scope.row.enterDirCode">
{{ mapStationDirectionData[scope.row.enterDirCode].name }}
</div>
</template>
</el-table-column>
<el-table-column
prop="outDirCode"
label="出口"
width="170"
>
<template slot-scope="scope">
<div v-if="scope.row.outDirCode">
{{ mapStationDirectionData[scope.row.outDirCode].name }}
</div>
</template>
</el-table-column>
</el-table>
<el-row justify="center" class="button-group" style="margin-top:20px">
<el-col :span="3" :offset="5">
<el-button :id="domIdLoad " type="primary" :loading="loading" @click="loadUpdateTrainFixedPath">加载 </el-button>
</el-col>
<el-col :span="3" :offset="2">
<el-button :id="domIdUpdate " type="primary" :loading="loading" @click="updateTrainFixedPath2Station">更新 </el-button>
</el-col>
<el-col :span="3" :offset="2">
<el-button :id="domIdCancel" @click="cancel">取消</el-button>
</el-col>
</el-row>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'TrainFixedPathPane',
data() {
return {
dialogShow: false,
loading: false,
stationCode:'',
trainFixedPathList:[
],
title:''
};
},
computed: {
...mapGetters('map', [
'sectionList',
'stationList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
//
domIdLoad() {
return this.dialogShow ? OperationEvent.CTCCommand.loadUpdateStationTrainFixedPath.menu.domId : '';
},
//
domIdUpdate() {
return this.dialogShow ? OperationEvent.CTCCommand.updateTrainFixedPath2Station.menu.domId : '';
},
mapStationDirectionData() {
return this.$store.state.map.mapStationDirectionData;
},
stationMap() {
const stationMap = {};
this.stationList.forEach(station=>{
stationMap[station.code] = {code:station.code, name:station.name};
});
return stationMap;
},
sectionMap() {
const sectionMap = {};
this.sectionList.forEach(section=>{
sectionMap[section.code] = {code:section.code, name:section.name};
});
return sectionMap;
}
// domIdConfirm() {
// return this.dialogShow ? OperationEvent.Command.planTrain.addPlanTrain.domId : '';
// }
},
methods:{
doShow(stationCode) {
const title = '固定径路信息';
this.stationCode = stationCode;
commitOperate(menuOperate.CTC.getStationTrainFixedPath, { stationCode: stationCode }, 3).then(({valid, response}) => {
if (valid) {
this.trainFixedPathList = response.data.data;
this.dialogShow = true;
this.title = title + ' 版本:' + response.data.version;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
//
loadUpdateTrainFixedPath() {
commitOperate(menuOperate.CTC.loadUpdateStationTrainFixedPath, { stationCode: this.stationCode }, 3).then(({valid, response}) => {
if (valid) {
this.$message.success('加载成功!');
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
}).catch(()=>{
this.$message.error('加载失败');
});
},
//
updateTrainFixedPath2Station() {
commitOperate(menuOperate.CTC.updateTrainFixedPath2Station, { stationCode: this.stationCode }, 3).then(({valid, response}) => {
if (valid) {
//
commitOperate(menuOperate.CTC.getStationTrainFixedPath, { stationCode: this.stationCode }, 3).then(({valid, response}) => {
if (valid) {
const title = '固定径路信息';
this.trainFixedPathList = response.data.data;
this.title = title + ' 版本 :' + response.data.version;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
});
}
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>

View File

@ -31,6 +31,12 @@
<notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<BoardViewSetting ref="boardViewSetting" />
<RailViewSetting ref="railViewSetting" />
<PowerSupplyArmSetting ref="powerSupplyArmSetting" />
<BlockDevice ref="blockDevice" />
<RegionBatchOperation ref="regionBatchOperation" />
<StationTrainManage ref="stationTrainManage" />
<OperationLogQuery ref="operationLogQuery" />
<InfoDialog ref="infoDialog" />
</div>
</template>
@ -49,6 +55,12 @@ import { EventBus } from '@/scripts/event-bus'
import SettingsMenu from './components/menu.vue'
import BoardViewSetting from './dialog/boardViewSetting.vue'
import RailViewSetting from './dialog/railViewSetting.vue'
import PowerSupplyArmSetting from './dialog/powerSupplyArmSetting.vue'
import BlockDevice from './dialog/blockDevice'
import RegionBatchOperation from './dialog/regionBatchOperation'
import StationTrainManage from './dialog/stationTrainManage'
import OperationLogQuery from './dialog/operationLogQuery'
import InfoDialog from './dialog/infoDialog'
export default {
name: 'MenuPanel',
@ -57,6 +69,12 @@ export default {
SettingsMenu,
BoardViewSetting,
RailViewSetting,
PowerSupplyArmSetting,
BlockDevice,
RegionBatchOperation,
StationTrainManage,
OperationLogQuery,
InfoDialog,
},
data() {
return {
@ -82,22 +100,38 @@ export default {
{
label: '调车参数配置',
id: 'shuntingParam',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }],
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{
label: '调车优先级配置',
id: 'shuntingPriority',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }],
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{
label: '调车规则配置',
id: 'shuntingRule',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }],
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{
label: '功能按钮设置',
id: 'functionButton',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }],
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{ label: '站场界面显示设置', id: 'UIDisplay' },
{ label: '报警提示设置', id: 'alarm' },
@ -106,12 +140,39 @@ export default {
T3MenuItems: [
{ label: '设置供电臂状态', id: 'powerSupplyArm', ctc: true },
{ label: '封锁设备操作', id: 'blockedDeviceOperation', ctc: true },
{ label: '区域批量设备操作', id: 'regionBatchOperation', children: [{}], ctc: true },
{ label: '站存车管理', id: 'stationTrainManage', children: [{}], ctc: true },
{ label: '设备影响分析', id: 'deviceAffectAnalyze', children: [{}], ctc: true },
{ label: '操作日志查询', id: 'operationLog', ctc: true },
{ label: '防溜设置查询', id: 'deviceAffectAnalyze', ctc: true },
{ label: '设备影响分析', id: 'deviceAffectAnalyze', ctc: true },
{
label: '区域批量设备操作',
id: 'regionBatchOperation',
ctc: true,
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{
label: '站存车管理',
id: 'stationTrainManage',
ctc: true,
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{
label: '设备影响分析',
id: 'deviceAffectAnalyze',
ctc: true,
children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
},
{ label: '操作日志查询', id: 'operationLog' },
{ label: '防溜设置查询', id: 'antiSlipSettingQuery' },
{ label: '信息提示', id: 'info' },
],
}
},
@ -188,6 +249,31 @@ export default {
},
handleT3MenuSelect(id) {
console.log(id)
this.closeMenus()
const params = id.split('-')
switch (params[0]) {
case 'powerSupplyArm':
this.$refs.powerSupplyArmSetting.doShow()
break
case 'blockedDeviceOperation':
this.$refs.blockDevice.doShow()
break
case 'regionBatchOperation':
if (!params[1]) return
this.$refs.regionBatchOperation.doShow(params[1])
break
case 'stationTrainManage':
if (!params[1]) return
this.$refs.stationTrainManage.doShow(params[1])
break
case 'operationLog':
case 'antiSlipSettingQuery':
this.$refs.operationLogQuery.doShow()
break
case 'info':
this.$refs.infoDialog.doShow()
break
}
},
dragEvent() {
const offset = this.offset

View File

@ -19,7 +19,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -135,8 +135,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -581,8 +581,7 @@ import Rpb from '@/assets/ctc_icon/rpb.png';
import Rpwp from '@/assets/ctc_icon/rpwp.png';
import Rph from '@/assets/ctc_icon/rph.png';
import RpAdd from '@/assets/ctc_icon/rpadd.png';
import { timeFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SendRunplan from './dialog/sendRunplan';
import StageRunplan from './dialog/stageRunplan';
@ -594,8 +593,8 @@ import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuO
import { copyAssign } from '@/utils/index';
import { mapGetters, mapState } from 'vuex';
import { transfiniteList } from '@/scripts/ConstDic';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue';
import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default {
name:'RunplanPane',
components: {
@ -664,9 +663,8 @@ export default {
},
watch:{
'$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
this.initDate(date);
this.$store.dispatch('training/setInitTime', time);
this.initDate(time);
},
'$store.state.training.roleDeviceCode':function(newVal, oldVal) {
if (oldVal) {
@ -706,14 +704,9 @@ export default {
}
},
initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`;
const years = date.getFullYear() + '';
let months = date.getMonth() + 1 + '';
let dates = date.getDate() + '';
if (months.length < 2) { months = '0' + months; }
if (dates.length < 2) { dates = '0' + dates; }
this.dateString = years + months + dates;
this.dateString1 = years + '年' + months + '月' + dates + '日';
this.time = timestampFormat('HH:mm:ss', date)
this.dateString = timestampFormat('YYYYMMDD', date)
this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
},
judgeColor({row, rowIndex}) {
if (row.effect) {

View File

@ -1,14 +1,3 @@
// SECTION 区段
// SWITCH 道岔
// SIGNAL 信号机
// START_SIGNAL 进路起始信号机
// END_SIGNAL 进路终端信号机
// STATION 车站
// STAND 站台
// ROUTE 进路
// CYCLE 自动折返
// {id: "1", trainingType: "ControlConvertMenu", name: "车站名称"}
// {id: "2", trainingType: "ControlConvertMenu", name: "车站控制模式编号"}
// {id: "3", trainingType: "Signal", name: "进路名称"}
@ -46,83 +35,6 @@
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
list: [
// 控制模式
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL.value,
skinCode: '04',
trainingName: '请求站控({2})',
trainingRemark: '请求站控功能',
trainingType: 'ControlConvertMenu',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【站控】', codeType:'STATION', subType:'substation' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL.value,
skinCode: '04',
trainingName: '请求紧急站控({2})',
trainingRemark: '请求紧急站控功能',
trainingType: 'ControlConvertMenu',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【紧急站控】', codeType:'STATION', subType:'emergency' },
{ deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL.value,
skinCode: '04',
trainingName: '请求中控({2})',
trainingRemark: '请求中控功能',
trainingType: 'ControlConvertMenu',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【中控】', codeType:'STATION', subType:'center' },
{ deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.ControlConvertMenu.CMD_CM_INTERLOCK_CONTROL.value,
skinCode: '04',
trainingName: '请求联锁控({2})',
trainingRemark: '请求联锁控功能',
trainingType: 'ControlConvertMenu',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【联锁控】', codeType:'STATION', subType:'interconnected' },
{ deviceType: '04', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮' }
]
},
// 信号机列表
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_SET_ROUTE.value,
skinCode: '04',
trainingName: '办理进路({3} 进路)',
trainingRemark: '办理进路功能',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '301', tip: '鼠标右键菜单选择【办理进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3011', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 3, operateCode: '3012', tip: '鼠标左键点击【执行】按钮' },
{ deviceType: '04', orderNum: 4, operateCode: '301', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
@ -133,54 +45,8 @@ export default {
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 3, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'END_SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value,
skinCode: '04',
trainingName: '办理引导进路({3})',
trainingRemark: '进路办理信号引导',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '308', tip: '鼠标右键菜单选择【办理引导进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '308', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3086', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 4, operateCode: '3082', tip: '鼠标左键点击【执行】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE.value,
skinCode: '04',
trainingName: '引导进路({3})[进路已锁闭]',
trainingRemark: '进路办理信号引导',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3080', tip: '鼠标左键点击【引导进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3080', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL'}, // 进路编号值不正确
{ deviceType: 'mbm', orderNum: 3, operateCode: '0011', tip: '输入密码123点击【确定】按钮', codeType: 'START_SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE.value,
skinCode: '04',
trainingName: '取消进路({3} 进路)',
trainingRemark: '取消进路功能',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '303', tip: '鼠标右键菜单选择【取消进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '303', tip: '鼠标左键点击【确定】按钮' }
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'END_SIGNAL' }
]
},
{
@ -196,226 +62,6 @@ export default {
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_GUIDE.value,
skinCode: '04',
trainingName: '取消引导({3})',
trainingRemark: '取消引导进路功能(总取消)',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
skinCode: '04',
trainingName: '总人解({3})',
trainingRemark: '总人解',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '305', tip: '鼠标右键菜单选择【总人解】' },
{ deviceType: '04', orderNum: 2, operateCode: '3050', tip: '输入密码123点击【执行】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '305', tip: '鼠标左键点击【确定】按钮' },
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE.value,
skinCode: '04',
trainingName: '总人解({3})',
trainingRemark: '总人解',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3050', tip: '鼠标左键点击【总人解】' },
{ deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '3050', tip: '鼠标左键点击【{5}】', val: '{6}', codeType:'SIGNAL' }
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value,
skinCode: '04',
trainingName: '信号重开({5})',
trainingRemark: '信号重开功能',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '304', tip: '鼠标右键菜单选择【信号重开】' },
{ deviceType: '04', orderNum: 2, operateCode: '304', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 8,
minDuration: 5,
operateType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL.value,
skinCode: '04',
trainingName: '信号重开({5})',
trainingRemark: '信号重开功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value,
skinCode: '04',
trainingName: '信号封锁({5})',
trainingRemark: '信号封锁',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '306', tip: '鼠标右键菜单选择【信号封锁】' },
{ deviceType: '04', orderNum: 2, operateCode: '306', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_BLOCK.value,
skinCode: '04',
trainingName: '信号封锁({5})',
trainingRemark: '信号封锁功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【封锁】' },
{ deviceType: '04', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value,
skinCode: '04',
trainingName: '信号解封({5})',
trainingRemark: '信号解封',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '307', tip: '鼠标右键菜单选择【信号解封】' },
{ deviceType: '04', orderNum: 2, operateCode: '3072', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '307', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_UNBLOCK.value,
skinCode: '04',
trainingName: '信号解封({5})',
trainingRemark: '信号解封功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2992', tip: '鼠标左键点击【解封】' },
{ deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value,
skinCode: '04',
trainingName: '进路收人工控({3})',
trainingRemark: '进路收人工控',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '314', tip: '鼠标右键菜单选择【进路收人工控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3141', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 3, operateCode: '314', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING.value,
skinCode: '04',
trainingName: '人工控({5})',
trainingRemark: '人工控',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3140', tip: '鼠标左键点击【人工控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3140', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
],
// 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置
config:{onlySignalOP:true}
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value,
skinCode: '04',
trainingName: '进路交自动控({3})',
trainingRemark: '进路交自动控',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '315', tip: '鼠标右键菜单选择【进路交自动控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3151', tip: '鼠标左键选择进路名称【{3}】', val: '{4}' },
{ deviceType: '04', orderNum: 3, operateCode: '315', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING.value,
skinCode: '04',
trainingName: '自动控({5})',
trainingRemark: '自动控',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3150', tip: '鼠标左键点击【自动控】' },
{ deviceType: '04', orderNum: 2, operateCode: '3150', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' }
],
config:{onlySignalOP:true}
},
{
maxDuration: 15,
minDuration: 8,
operateType:CMD.Signal.CMD_SIGNAL_DETAIL.value,
skinCode: '04',
trainingName: '查询进路信息({5} 信号机)',
trainingRemark: '查询进路信息',
trainingType:'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '316', tip: '鼠标右键菜单选择【进路信息】' },
{ deviceType: '04', orderNum: 2, operateCode: '316', tip: '鼠标左键点击【确定】按钮' }
]
},
// 道岔列表
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION.value, // 0312 新增定位字典
skinCode: '04',
trainingName: '单操到定位({7})',
trainingRemark: '单操到定位({15})',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '101', tip: '鼠标右键菜单选择【单操到定位】' },
{ deviceType: '02', orderNum: 2, operateCode: '101', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
@ -427,24 +73,10 @@ export default {
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1010', tip: '鼠标左键点击【道岔定操】' },
{ deviceType: '02', orderNum: 1, operateCode: '1010', tip: '鼠标左键点击【总定位】' },
{ deviceType: '02', orderNum: 2, operateCode: '1010', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION.value, // 0313 新增定位字典
skinCode: '04',
trainingName: '单操到反位({7})',
trainingRemark: '单操到反位({7})',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '102', tip: '鼠标右键菜单选择【单操到反位】' },
{ deviceType: '02', orderNum: 2, operateCode: '102', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
@ -455,491 +87,9 @@ export default {
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1020', tip: '鼠标左键点击【道岔反操】' },
{ deviceType: '02', orderNum: 1, operateCode: '1020', tip: '鼠标左键点击【总反位】' },
{ deviceType: '02', orderNum: 2, operateCode: '1020', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value,
skinCode: '04',
trainingName: '道岔单锁({7})',
trainingRemark: '道岔单锁功能',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '103', tip: '鼠标右键菜单选择【道岔单锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '103', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK.value,
skinCode: '04',
trainingName: '道岔单锁({7})',
trainingRemark: '道岔单锁功能',
trainingType: 'Switch',
productTypes: ['01'], // 现地操作
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1030', tip: '鼠标左键点击【道岔单锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '1030', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value,
skinCode: '04',
trainingName: '道岔解锁({7})',
trainingRemark: '道岔解锁功能',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '104', tip: '鼠标右键菜单选择【道岔解锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '104', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK.value,
skinCode: '04',
trainingName: '道岔解锁({7})',
trainingRemark: '道岔解锁功能',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '1040', tip: '鼠标左键点击【道岔解锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '1040', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '04',
trainingName: '道岔封锁({7})',
trainingRemark: '道岔封锁功能',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '105', tip: '鼠标右键菜单选择【道岔封锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '1051', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '105', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_BLOCK.value,
skinCode: '04',
trainingName: '道岔封锁({7})',
trainingRemark: '道岔封锁功能',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '2991', tip: '鼠标左键点击【封锁】' },
{ deviceType: '02', orderNum: 2, operateCode: '2991', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '04',
trainingName: '道岔解封({7})',
trainingRemark: '道岔解封功能',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '106', tip: '鼠标右键菜单选择【道岔解封】' },
{ deviceType: '02', orderNum: 2, operateCode: '1062', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '106', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Switch.CMD_SWITCH_UNBLOCK.value,
skinCode: '04',
trainingName: '道岔解封({7})',
trainingRemark: '道岔解封功能',
trainingType: 'Switch',
productTypes: ['01'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '2992', tip: '鼠标左键点击【解封】' },
{ deviceType: '02', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '2992', tip: '鼠标左键点击【{7}】', codeType:'SWITCH' }
]
},
{
maxDuration: 20,
minDuration: 10,
operateType: CMD.Switch.CMD_SWITCH_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({7})',
trainingRemark: '道岔区段故障解锁功能',
trainingType: 'Switch',
productTypes: ['02'],
stepVOList: [
{ deviceType: '02', orderNum: 1, operateCode: '109', tip: '鼠标右键菜单选择【区故解】' },
{ deviceType: '02', orderNum: 2, operateCode: '1092', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '02', orderNum: 3, operateCode: '109', tip: '输入密码123点击【确定】按钮' }
]
},
// 区段列表
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({8}{9})',
trainingRemark: '故障解锁功能',
trainingType: 'Section',
productTypes: ['02'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '402', tip: '鼠标右键菜单选择【区故解】' },
{ deviceType: '03', orderNum: 2, operateCode: '4023', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: '03', orderNum: 3, operateCode: '402', tip: '输入密码123点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Section.CMD_SECTION_FAULT_UNLOCK.value,
skinCode: '04',
trainingName: '区故解({8}{9})',
trainingRemark: '故障解锁功能',
trainingType: 'Section',
productTypes: ['01'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '4020', tip: '鼠标左键点击【区故解】'},
{ deviceType: '03', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '03', orderNum: 3, operateCode: '4020', tip: '鼠标左键点击【{8}{9}】', codeType:'SECTION' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Section.CMD_SECTION_DETAILS.value,
skinCode: '04',
trainingName: '属性({8}{9})',
trainingRemark: '区段详情({8}{9})',
trainingType: 'Section',
productTypes: ['02'],
stepVOList: [
{ deviceType: '03', orderNum: 1, operateCode: '410', tip: '鼠标右键菜单选择【属性】' },
{ deviceType: '03', orderNum: 2, operateCode: '410', tip: '鼠标左键点击【确定】按钮' }
]
},
// 站台列表
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '设置扣车({10}-{12}站台)',
trainingRemark: '设置扣车功能',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '504', tip: '鼠标右键菜单选择【设置扣车】' },
{ deviceType: '06', orderNum: 2, operateCode: '504', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '取消扣车({10}-{12}站台)',
trainingRemark: '设置取消扣车功能',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' },
{ deviceType: '06', orderNum: 2, operateCode: '505', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_WHOLE_LINE_CANCEL_HOLD_TRAIN.value,
skinCode: '04',
trainingName: '全线取消扣车',
trainingRemark: '设置取消扣车功能({12}全线)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '505', tip: '鼠标右键菜单选择【取消扣车】' },
{ deviceType: '06', orderNum: 2, operateCode: 'com01', tip: '鼠标左键点击【{12}全线】按钮', val: 'true' },
{ deviceType: '06', orderNum: 3, operateCode: '505', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_JUMP_STOP.value,
skinCode: '04',
trainingName: '设置跳停({10}-{12}站台)',
trainingRemark: '设置跳停功能',
trainingType: 'Stand',
productTypes: ['01'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】'},
{ deviceType: '06', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【跳停】', codeType:'STAND', subType:'StopJumpLamp' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_JUMP_STOP.value,
skinCode: '04',
trainingName: '设置跳停({10}-{12}站台)',
trainingRemark: '设置跳停功能',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '502', tip: '鼠标右键菜单选择【跳停】' },
{ deviceType: '06', orderNum: 2, operateCode: '502', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP.value,
skinCode: '04',
trainingName: '取消跳停({10}-{12}站台)',
trainingRemark: '设置取消跳停功能',
trainingType: 'Stand',
productTypes: ['01'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】'},
{ deviceType: '06', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【取消跳停】', codeType:'STAND', subType:'CancelStopJumpLamp' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP.value,
skinCode: '04',
trainingName: '取消跳停({10}-{12}站台)',
trainingRemark: '设置取消跳停功能',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '503', tip: '鼠标右键菜单选择【取消跳停】' },
{ deviceType: '06', orderNum: 2, operateCode: '503', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(自动, 一直有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 3, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(人工, 20秒, 一直有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击调整为【20】', val: '20' },
{ deviceType: '06', orderNum: 4, operateCode: '5093', tip: '标左键点击,选择【一直有效】', val: '02' },
{ deviceType: '06', orderNum: 5, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_PARK_TIME.value,
skinCode: '04',
trainingName: '设置停站时间({10}-{12}站台)',
trainingRemark: '设置停站时间(人工, 20秒, 一次有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '509', tip: '鼠标右键菜单选择【设置停站时间】' },
{ deviceType: '06', orderNum: 2, operateCode: '5092', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5094', tip: '输入或鼠标点击调整为【20】', val: '20' },
{ deviceType: '06', orderNum: 4, operateCode: '509', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(自动, 一直有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(人工, 常速, 一直有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 3, operateCode: '5107', tip: '鼠标左键点击,取消选择【一直有效】', val: '02' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Stand.CMD_STAND_SET_RUN_TIME.value,
skinCode: '04',
trainingName: '设置站间运行等级({10}-{12}站台)',
trainingRemark: '设置站间运行等级(人工, 常速, 一次有效)',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '510', tip: '鼠标右键菜单选择【设置站间运行等级】' },
{ deviceType: '06', orderNum: 2, operateCode: '5106', tip: '鼠标左键点击,选择【人工】', val: '02' },
{ deviceType: '06', orderNum: 4, operateCode: '510', tip: '鼠标左键点击【确认】按钮' }
]
},
{
maxDuration: 8, // 自动生成实训失败
minDuration: 5,
operateType: CMD.Stand.CMD_STAND_VIEW_STATUS.value,
skinCode: '04',
trainingName: '显示站台信息({10}-{12}站台)',
trainingRemark: '查询站台状态功能',
trainingType: 'Stand',
productTypes: ['02'],
stepVOList: [
{ deviceType: '06', orderNum: 1, operateCode: '507', tip: '鼠标右键菜单选择【显示站台信息】' },
{ deviceType: '06', orderNum: 2, operateCode: '0012', tip: '鼠标左键点击【退出】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO.value,
skinCode: '04',
trainingName: '设置自动进路({3})',
trainingRemark: '设置自动进路功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' }
],
// 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置
config:{autoRouteBT:true}
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO.value,
skinCode: '04',
trainingName: '取消自动进路({3})',
trainingRemark: '取消自动进路功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' }
],
// 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置
config:{autoRouteBT:true}
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_SET_AUTO_TURN_BACK.value,
skinCode: '04',
trainingName: '设置自动折返({3})',
trainingRemark: '设置自动折返功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2993', tip: '鼠标左键点击【功能按钮】' },
{ deviceType: '04', orderNum: 2, operateCode: '2993', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' }
],
// 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置
config:{autoCycleBT:true}
},
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Signal.CMD_SIGNAL_CANCEL_AUTO_TURN_BACK.value,
skinCode: '04',
trainingName: '取消自动折返({3})',
trainingRemark: '取消自动折返功能',
trainingType: 'Signal',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{3}】', codeType:'BUTTON' }
],
// 成都三号线 特殊配置 类似于哈尔滨线的 atp/联锁进路 配置
config:{autoCycleBT:true}
},
/** 引导总锁 */
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Station.CMD_STATION_SET_MASTER_GUIDE_LOCK.value,
skinCode: '04',
trainingName: '引导总锁({26})',
trainingRemark: '设置引导总锁',
trainingType: 'Station',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '609', tip: '鼠标左键点击【引导总锁】' },
{ deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '609', tip: '鼠标左键点击【{26}】', codeType:'BUTTON' }
],
config:{guideTotalLockBT:true}
},
/** 取消引导总锁 */
{
maxDuration: 15,
minDuration: 8,
operateType: CMD.Station.CMD_STATION_CANCEL_MASTER_GUIDE_LOCK.value,
skinCode: '04',
trainingName: '取消引导总锁({26})',
trainingRemark: '取消引导总锁',
trainingType: 'Station',
productTypes: ['01'],
stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '609', tip: '鼠标左键点击【引导总锁】' },
{ deviceType: '04', orderNum: 2, operateCode: '0011', tip: '输入密码123点击【确定】按钮' },
{ deviceType: '04', orderNum: 3, operateCode: '609', tip: '鼠标左键点击【{26}】', codeType:'BUTTON' }
],
config:{guideTotalLockBT:true}
}
// totalGuideLock
//
]
};

View File

@ -33,7 +33,7 @@
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div>
</div>
<div v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1405px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div id="tipInfoBox" v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1405px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div style="width: 60%;height: 30px;line-height: 30px;text-align: center;">提示信息窗</div>
<div style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div>
@ -80,8 +80,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import BottomTable from './bottomTable';
import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png';
@ -102,8 +101,8 @@ import CtcBarIcon15 from '@/assets/ctc_icon/pic15.png';
import CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue';
import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default {
name: 'Menus',
@ -210,9 +209,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar');
},
'$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
this.initDate(date);
this.$store.dispatch('training/setInitTime', time);
this.initDate(time);
},
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) {
@ -273,14 +271,9 @@ export default {
}
},
initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`;
const years = date.getFullYear() + '';
let months = date.getMonth() + 1 + '';
let dates = date.getDate() + '';
if (months.length < 2) { months = '0' + months; }
if (dates.length < 2) { dates = '0' + dates; }
this.dateString = years + months + dates;
this.dateString1 = years + '年' + months + '月' + dates + '日';
this.time = timestampFormat('HH:mm:ss', date)
this.dateString = timestampFormat('YYYYMMDD', date)
this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
},
handleRunplan() {
this.$refs.runplanPane.doShow();

View File

@ -349,10 +349,10 @@ export default {
this.guideLockLeftFlag = false
},
'$store.state.socket.simulationTimeSync': function(val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate()
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{ code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0 }])
} else if (
@ -605,7 +605,7 @@ export default {
if (!this.checkHaveRoute(deviceList)) {
// deviceList
this.$message.error('无效的进路按钮')
// this.$message.error('')
this.clearOperate()
return
}

View File

@ -269,10 +269,10 @@ export default {
}
},
'$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -474,7 +474,7 @@ export default {
const operate = { operation: this.Signal.arrangementRoute.button.operation };
if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}

View File

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

View File

@ -19,7 +19,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -135,8 +135,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -515,8 +515,8 @@ import ModifyTripNumber from './dialog/modifyTripNumber';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { copyAssign } from '@/utils/index';
import { mapGetters, mapState } from 'vuex';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue';
import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default {
name:'RunplanPane',
components: {

View File

@ -33,7 +33,7 @@
<div style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div>
</div>
<div v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1405px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div id="tipInfoBox" v-if="$store.state.training.prdType == '01'&& !isCtc" style="width: 1405px;position: fixed;height: 30px;background: #808080;z-index: 9;bottom: 0;left: 0;display: flex;">
<div style="width: 60%;height: 30px;line-height: 30px;text-align: center;">提示信息窗</div>
<div style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div>
@ -80,8 +80,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import BottomTable from './bottomTable';
import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png';
@ -102,8 +101,8 @@ import CtcBarIcon15 from '@/assets/ctc_icon/pic15.png';
import CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue';
import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default {
name: 'Menus',
@ -210,9 +209,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar');
},
'$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`));
this.initDate(date);
this.$store.dispatch('training/setInitTime', time);
this.initDate(time);
},
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) {
@ -273,14 +271,9 @@ export default {
}
},
initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`;
const years = date.getFullYear() + '';
let months = date.getMonth() + 1 + '';
let dates = date.getDate() + '';
if (months.length < 2) { months = '0' + months; }
if (dates.length < 2) { dates = '0' + dates; }
this.dateString = years + months + dates;
this.dateString1 = years + '年' + months + '月' + dates + '日';
this.time = timestampFormat('HH:mm:ss', date)
this.dateString = timestampFormat('YYYYMMDD', date)
this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
},
handleRunplan() {
this.$refs.runplanPane.doShow();

View File

@ -273,7 +273,7 @@ export default {
this.clearOperate();
},
'$store.state.socket.simulationTimeSync': function(val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
const routeDeviceList = [];
@ -289,7 +289,7 @@ export default {
routeDeviceList.forEach(item => {
updateList.push({ code: item.code, _type: item._type, toSelected: 0 });
});
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', updateList);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -510,7 +510,7 @@ export default {
if (!this.checkHaveRoute(deviceList)) {
// deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}

View File

@ -269,10 +269,10 @@ export default {
}
},
'$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) {
if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate();
}
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15) {
if (this.deviceTimeNode && val - this.deviceTimeNode >= 15000) {
if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'SignalButton') {
this.$store.dispatch('training/updateMapState', [{code: this.deviceList[0].code, _type: 'SignalButton', hasSelected: 0}]);
} else if (this.deviceList && this.deviceList.length && this.deviceList[0]._type === 'Signal' && this.deviceList[0].type === 'SHUNTING') {
@ -474,7 +474,7 @@ export default {
const operate = { operation: this.Signal.arrangementRoute.button.operation };
if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮');
// this.$message.error('');
this.clearOperate();
return;
}

View File

@ -19,7 +19,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -135,8 +135,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -193,11 +193,11 @@ export default {
}
},
operationHandler(buttonOperation, selectType) {
debugger;
// debugger;
switch (buttonOperation) {
case OperationEvent.Section.fault.button.operation: {
//
debugger;
// debugger;
commitOperate(menuOperate.Section.fault, {sectionCode:selectType.code}, 3).then(({valid, operate})=>{
if (valid) {
// this.$refs.sectionUnLock.doShow(operate, this.selected);
@ -210,7 +210,7 @@ export default {
}
case OperationEvent.Section.axlePreReset.button.operation: {
//
debugger;
// debugger;
commitOperate(menuOperate.Section.axlePreReset, {sectionCode:selectType.code}, 3).then(({valid, operate})=>{
if (valid) {
// this.$refs.sectionUnLock.doShow(operate, this.selected);

View File

@ -10,7 +10,7 @@
</div>
</template>
<script>
import { prefixIntrger } from '@/utils/date';
import { timestampFormat } from '@/utils/date';
import SystemTime from '@/views/components/systemTime/index';
import logo_ from '@/assets/logo_.png';
@ -126,8 +126,7 @@ export default {
},
watch: {
'$store.state.training.initTime': function (initTime) {
const date = new Date(initTime);
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}${prefixIntrger(date.getSeconds(), 2)}`;
this.time = timestampFormat('HH:mmss', initTime)
}
},
mounted() {

View File

@ -71,6 +71,7 @@ export default {
},
methods: {
init() {
console.log(123)
document.getElementById(this.canvasId).oncontextmenu = function (e) {
return false;
};

View File

@ -203,6 +203,8 @@ const VoiceManage = () => import('@/views/fileManage/voiceManage');
const IscsDeviceManage = () => import('@/views/system/iscsDeviceManage');
const IscsResourcesManage = () => import('@/views/system/iscsResourcesManage');
const PisScreen = () => import('@/views/pis/index')
// import { GenerateRouteProjectList } from '@/scripts/ProjectConfig';
// import { getSessionStorage } from '@/utils/auth';
@ -703,6 +705,11 @@ export const publicAsyncRoute = [
path: '/bigTrainRunplanManage',
component: BigTrainRunplanManage,
hidden: true
},
{
path: '/pis',
component: PisScreen,
hidden: true
}
];

View File

@ -1,24 +1,12 @@
export default {
ConstSelect: {
Status: [
{ label: '无效', value: '0' },
{ label: '有效', value: '1' }
],
Status: [{ label: '无效', value: '0' }, { label: '有效', value: '1' }],
Whether: [
{ label: '否', value: false },
{ label: '是', value: true }
],
Whether: [{ label: '否', value: false }, { label: '是', value: true }],
DirectionCodeList: [
{ value: '2', label: '上行' },
{ value: '1', label: '下行' }
],
DirectionCodeList: [{ value: '2', label: '上行' }, { value: '1', label: '下行' }],
SignalLeftOrRightList: [
{ label: '左侧', value: 'L' },
{ label: '右侧', value: 'R' }
],
SignalLeftOrRightList: [{ label: '左侧', value: 'L' }, { label: '右侧', value: 'R' }],
roleList: [
{ label: '实训用户', value: '01' },
@ -26,20 +14,17 @@ export default {
{ label: '课程生成者', value: '03' },
{ label: '系统管理员', value: '04' },
{ label: '超级管理员', value: '05' },
{ label: '销售用户', value: '06' }
{ label: '销售用户', value: '06' },
],
examResultList: [
{ label: '未计算', value: '01' },
{ label: '通过', value: '02' },
{ label: '未通过', value: '03' },
{ label: '已放弃', value: '04' }
{ label: '已放弃', value: '04' },
],
PermissionUseList: [
{ label: '公用', value: true },
{ label: '专用', value: false }
],
PermissionUseList: [{ label: '公用', value: true }, { label: '专用', value: false }],
RegionTypeList: [
{ label: '零点西上行', value: '01' },
@ -60,7 +45,7 @@ export default {
{ label: 'SHZ一联段线', value: '16' },
{ label: 'SHZ二联段线', value: '17' },
{ label: 'SHD三联段线', value: '18' },
{ label: 'SHD四联段线', value: '19' }
{ label: 'SHD四联段线', value: '19' },
],
roleTypeNew: [
{ label: '管理员', value: 'ADMIN', enLabel: 'Admin ' },
@ -82,37 +67,34 @@ export default {
{ label: '车站引导员', value: 'STATION_FACILITATOR', enLabel: 'StationFacilitator' },
{ label: '车站工务工', value: 'STATION_WORKER', enLabel: 'StationWorker' },
{ label: '设备管理员', value: 'DEVICE_MANAGER', enLabel: 'DeviceManager' },
{label: '车务段段长', value: 'TRAIN_MASTER', enLabel: 'Train_Master'}
{ label: '车务段段长', value: 'TRAIN_MASTER', enLabel: 'Train_Master' },
],
releaseReview: [
{ enlabel: 'Unpublished', label: '未发布', value: '0' },
{ enlabel: 'Pending review', label: '待审核', value: '1' },
{ enlabel: 'Successfully released', label: '发布成功', value: '2' },
{ enlabel: 'Overrule', label: '被驳回', value: '3'}
{ enlabel: 'Overrule', label: '被驳回', value: '3' },
],
productType: [
{ enlabel: 'Lesson System', label: '教学系统', value: 'Lesson' },
{ enlabel: 'Exam System', label: '考试系统', value: 'Exam' },
{ enlabel: 'Simulation System', label: '仿真系统', value: 'Simulation' },
{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan'}
],
customeredProductType: [
{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan'}
{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan' },
],
customeredProductType: [{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan' }],
controlMode: [
{ label: '中控', value: 'OperateCenterControl' },
{ label: '站控', value: 'LocalStationControl' },
{ label: '紧急站控', value: 'EmergencyStationControl' },
{ label: '联锁控', value: 'InterlockStationControl' }
{ label: '联锁控', value: 'InterlockStationControl' },
],
simulationRole: [
{ label: '行调操作', value: 'Center' },
{ label: '现地操作', value: 'Local' },
{ label: '车辆段操作', value: 'Depot_IL'}
{ label: '车辆段操作', value: 'Depot_IL' },
],
deviceTypeList: [
@ -128,7 +110,8 @@ export default {
{ label: '列车', value: 'Train' },
{ label: '方向杆', value: 'DirectionRod' },
{ label: 'CTC', value: 'CTC' },
{ label: '路票', value: 'RAIL' }
{ label: '路票', value: 'RAIL' },
{ label: '会话', value: 'Conversation' },
],
simulationDeviceList: [
@ -149,14 +132,14 @@ export default {
{ label: '列车', value: 'TRAIN' },
{ label: '列车门', value: 'TRAIN_DOOR' },
{ label: '交路', value: 'ROUTING' },
{label:'站间运行等级', value:'RUN_LEVEL'}
{ label: '站间运行等级', value: 'RUN_LEVEL' },
],
QuestionTypeList: [
{ label: '选择题', value: 'select' },
{ label: '判断题', value: 'judge' },
{ label: '多选题', value: 'multi' },
{ label: '填空题', value: 'fill' },
{ label: '问答题', value: 'answer'}
{ label: '问答题', value: 'answer' },
],
// 新版的产品类型枚举
prdType: [
@ -166,7 +149,8 @@ export default {
{ enlabel: 'Driver simulation driving system', label: '司机模拟驾驶系统', value: '04' },
{ enlabel: 'Dispatch workstation', label: '派班工作站', value: '05' },
{ enlabel: 'ISCS workstation', label: 'ISCS工作站', value: '06' },
{ enlabel: 'Interlocking station at depot', label: '车辆段联锁工作站', value: '09' }
{ enlabel: 'Interlocking station at depot', label: '车辆段联锁工作站', value: '09' },
{ enlabel: 'Large screen vehicle real workstation', label: '应急调度指挥系统', value: '10' },
],
trainingDeviceType: {
Switch: { enlabel: 'Switch training', label: '道岔实训' },
@ -179,7 +163,7 @@ export default {
LimitControl: { enlabel: 'Control mode limit', label: '全线限速实训' },
TrainWindow: { enlabel: 'TrainWindow training', label: '车次窗实训' },
Driver: { enlabel: 'Driver training', label: '司机实训' },
DirectionRod: {enlabel: 'Direction rod training', label:'方向杆实训'}
DirectionRod: { enlabel: 'Direction rod training', label: '方向杆实训' },
},
interfaceErrorConfig: {
'500000': { type: '权限错误:', message: '您尚未有该操作权限!' },
@ -187,7 +171,7 @@ export default {
'500005': { type: '权限错误:', message: '您的权限时间已过!' },
'500006': { type: '权限错误:', message: '您已经领取,不能重复领取!' },
'500007': { type: '权限错误:', message: '剩余分发权限数量不足!' },
'500010': { type: '支付错误:', message: '微信统一支付调用失败!'}
'500010': { type: '支付错误:', message: '微信统一支付调用失败!' },
},
projectDeviceTypeList: [
{ label: '道岔', value: 'SWITCH' },
@ -214,7 +198,9 @@ export default {
{ label: 'UDP下位机', value: 'UDP_LOW' },
{ label: '区段', value: 'SECTION' },
{ label: '列车', value: 'TRAIN' },
{label: 'UDP客户端', value: 'UDP_CLIENT'}
{ label: 'UDP客户端', value: 'UDP_CLIENT' },
{ label: '站台PIS', value: 'PIS_STAND' },
{ label: '列车PIS', value: 'PIS_TRAIN' },
],
ossList: [
{ name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' },
@ -228,23 +214,19 @@ export default {
{ name: '场景9', url: '场景9—车站站台门故障配分版40分.pdf' },
{ name: '场景10', url: '场景10—列车限速配分版40分.pdf' },
{ name: '场景11', url: '场景11—区间疏导乘客配分版40分.pdf' },
{ name: '场景12', url: '场景12—区域控制器故障配分版40分.pdf' }
],
responderTypeList: [
{ name: '固定应答器', value: 'FB'},
{ name: '可变应答器', value: 'VB'},
{ name: '填充应答器', value: 'IB'}
{ name: '场景12', url: '场景12—区域控制器故障配分版40分.pdf' },
],
responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }],
loadRuleList: [
{ label: '每日加载', value: 'EVERY_DAY' },
{ label: '周内加载', value: 'WITHIN_A_WEEK' },
{ label: '周末加载', value: 'WEEKEND' }
{ label: '周末加载', value: 'WEEKEND' },
],
turnBackTypeList: [
{ label: '无折返', value: 'NONE' },
{ label: '默认', value: 'DEFAULT' },
{ label: '自动换端', value: 'AUTO' },
{ label: '无人折返', value: 'UNMANNED' }
{ label: '无人折返', value: 'UNMANNED' },
],
directionLabelList: [
{ label: 'X', value: 'X' },
@ -252,18 +234,44 @@ export default {
{ label: 'XD', value: 'XD' },
{ label: 'S', value: 'S' },
{ label: 'SF', value: 'SF' },
{ label: 'SD', value: 'SD' }
{ label: 'SD', value: 'SD' },
],
trainingType: [ // 实训类型
trainingType: [
// 实训类型
{ enlabel: 'single operation', label: '单操', value: 'SINGLE' },
{ enlabel: 'scene operation', label: '场景', value: 'SCENE'}
{ enlabel: 'scene operation', label: '场景', value: 'SCENE' },
],
ioDirectionList:[ // 出入口类型
ioDirectionList: [
// 出入口类型
{ value: 'DOWN_IN_STATION', label: '下行进站' },
{ value: 'UP_IN_STATION', label: '上行进站' },
{ value: 'DOWN_OUT_STATION', label: '下行出站' },
{ value: 'UP_OUT_STATION', label: '上行出站' },
{value:'BOTH_WAY_STATION', label:'双向'}
]
{ value: 'BOTH_WAY_STATION', label: '双向' },
],
conditionList: [{ label: '标识状态', value: 'S' }, { label: '表达式', value: 'E' }, { label: '代表值', value: 'V' }],
operationList: [
{ label: '且', value: 'AND' },
{ label: '或', value: 'OR' },
{ label: '非', value: 'NOT' },
{ label: '是', value: 'IS' },
{ label: '等于', value: 'EQ' },
{ label: '不等于', value: 'NEQ' },
{ label: '大于', value: 'GT' },
{ label: '大于等于', value: 'GTOE' },
{ label: '小于', value: 'LT' },
{ label: '小于等于', value: 'LTOE' },
],
operationDeviceList: [
{ label: '区段', value: 'Section' },
{ label: '道岔', value: 'Switch' },
{ label: '信号机', value: 'Signal' },
{ label: '站台', value: 'StationStand' }, // Stand
{ label: '车站', value: 'Station' },
{ label: '进路', value: 'Route' },
{ label: '列车', value: 'Train' },
{ label: '自动闭塞', value: 'StationDirectionAuto' },
{ label: '半自动闭塞', value: 'StationDirectionSemi' },
],
},
}
};

View File

@ -144,10 +144,10 @@ export const loginInfo = {
logoWidth: '0',
systemType: '011'
},
wh: {
title: '城市轨道交通实训平台',
loginPath: '/login?project=wh',
loginParam: 'WH',
yjddzh: {
title: '应急调度指挥系统',
loginPath: '/login?project=yjddzh',
loginParam: 'YJDDZH',
loginTitle: '空串',
navigationLogoWidth: '40px',
navigationMarginLeft: '60px',
@ -617,7 +617,7 @@ export const loginInfo = {
systemType: '027'
},
richorhhcj: {
title: '红河财经学校城市轨道交通实训平台',
title: '红河州职业技术学院红河财经学校城市轨道交通实训平台',
loginPath: '/login?project=richorhhcj',
bottomColumn: '中航锐创(北京)科技发展有限公司 联系电话:4000500081',
loginParam: 'RICHOR_HHCJ',
@ -777,7 +777,7 @@ export const ProjectIcon = {
hls: FaviconHls,
designhls: FaviconHls,
wjls: Favicon,
wh: Favicon,
yjddzh: Favicon,
drts: Favicon,
designdrts: Favicon,
hlsdrts: FaviconHls,
@ -832,7 +832,7 @@ export const ProjectCode = {
xadt: 'XADT',
designxadt: 'XADT',
wjls: 'WJLS',
wh: 'WH',
yjddzh: 'YJDDZH',
drts: 'DRTS',
designdrts: 'DRTS',
hlsdrts: 'DRTS',
@ -888,7 +888,7 @@ export const GetMapListByProjectList = ['xty', 'designxty', 'gzb', 'designgzb',
'nty', 'designnty', 'sdy', 'designsdy', 'ntyc', 'designntyc', 'ntyl', 'designntyl', 'designbjd', 'cgy', 'designcgy', 'zzww', 'zzwwtest', 'richor',
'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts', 'jxgm', 'designjxgm',
'richorygy', 'designrichorygy', 'say', 'designsay', 'unittecsty', 'designunittecsty', 'richorhhcj', 'designrichorhhcj', 'teaching', 'designteaching', 'richorcxjs',
'designrichorcxjs', 'hydrailway', 'designhydrailway', 'wh'];
'designrichorcxjs', 'hydrailway', 'designhydrailway', 'yjddzh'];
/** 案例展示隐藏的项目 */
export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy', 'richorhhcj', 'designrichorhhcj'];
/** 登录页右下角版本开发基于不展示 */
@ -1006,7 +1006,7 @@ export const ProjectList = [
{value: 'teaching', label: '教学通用'},
{value: 'richor_cxjs', label: '长兴技校'},
{value: 'hyd_railway', label: '哈盈达大铁'},
{value: 'wh', label: '武汉8号线'}
{value: 'yjddzh', label: '武汉8号线'}
];
/** 本地项目打包 */
export const localPackageProject = {

View File

@ -455,9 +455,15 @@ export default {
CTC_STATION_IO_GATE_PUBLISH:{value: 'STATION_IO_GATE_PUBLISH', label: '出入口发布生效区'},
CTC_STATION_IO_GATE_LIST:{value: 'STATION_IO_GATE_LIST', label: '获取出入口列表'},
CTC_STATION_IO_GATE_EDIT:{value: 'STATION_IO_GATE_EDIT', label: '修改出入口'},
CTC_REGULAR_TRAIN_LINE_EDIT:{value: 'REGULAR_TRAIN_LINE_EDIT', label: '增加列车固定径路'},
CTC_REGULAR_TRAIN_LINE_EDIT:{value: 'REGULAR_TRAIN_LINE_EDIT', label: '修改列车固定径路'},
CTC_REGULAR_TRAIN_LINE_SAVE:{value: 'REGULAR_TRAIN_LINE_SAVE', label: '增加列车固定径路'},
CTC_REGULAR_TRAIN_LINE_BATCH:{value: 'REGULAR_TRAIN_LINE_BATCH', label: '批量增加列车固定径路'},
CTC_REGULAR_TRAIN_LINE_STATION_UPDATE:{value: 'REGULAR_TRAIN_LINE_STATION_UPDATE', label: '固定列车径路从生效区更新'},
CTC_REGULAR_TRAIN_LINE_STATION_UPDATE_LOAD:{value: 'REGULAR_TRAIN_LINE_STATION_UPDATE_LOAD', label: '固定列车经路更新加载到计划'},
CTC_REGULAR_TRAIN_LINE_STATION_UPDATE_LIST:{value: 'REGULAR_TRAIN_LINE_STATION_UPDATE_LIST', label: '固定列车经路更新列表'},
CTC_SET_ROUTE:{value: 'CTC_SET_ROUTE', label: 'CTC办理进路'},
CTC_STATION_SIGN_RUN_PLAN:{value:'CTC_STATION_SIGN_RUN_PLAN', label: '车站签收阶段计划'},

View File

@ -4,6 +4,8 @@ import router from '@/router/index';
import store from '@/store/index';
import Command from './Command';
import Handler from './Handler';
import { ScriptMode } from '@/scripts/ConstDic';
import { objectIsEqual } from '@/utils/date';
class CommandHandle {
constructor() {
@ -113,6 +115,10 @@ class CommandHandle {
RAIL_FILL_IN_REGISTER: {
operate: 'RAIL_FILL_IN_REGISTER',
paramList: [{name: 'stationCode'}, {name: 'line'}]
},
Conversation_Chat_Text: {
operate: 'Conversation_Chat_Text',
paramList: [{name: 'content'}]
}
}
};
@ -164,6 +170,22 @@ class CommandHandle {
return new Promise((resolve, reject) => {
const group = router.currentRoute.query.group;
const newApi = router.currentRoute.query.newApi + '';
// if (router.currentRoute.path.includes('trainingDesign')) {
store.dispatch('trainingNew/setSceneOperate', {id, command});
// }
if (store.state.trainingNew.trainingSwitch && store.state.trainingNew.trainingDetail.type === 'SCENE') {
const stepList = JSON.parse(store.state.trainingNew.trainingDetail.stepJson);
const step = stepList[store.state.trainingNew.stepOrder - 1];
const stepOperation = step.operations[store.state.trainingNew.operateOrder];
let flag = true;
if (stepOperation.operationType !== id) {
flag = false;
}
if (!objectIsEqual(stepOperation.params, command)) {
flag = false;
}
store.dispatch('trainingNew/handleCheckNewTrainingResult', flag);
if (flag) {
if (newApi === 'true') {
const userInfo = store.state.training.simulationUserList.find(el => el.id == store.state.user.id);
sendSimulationCommand(group, userInfo.memberId, id, command).then((response) => {
@ -178,7 +200,25 @@ class CommandHandle {
reject(error);
});
}
} else if (store.state.trainingNew.teachMode === ScriptMode.TEACH || store.state.trainingNew.teachMode === ScriptMode.PRACTICE) {
store.dispatch('training/setOperateErrMsg');
}
} else {
if (newApi === 'true') {
const userInfo = store.state.training.simulationUserList.find(el => el.id == store.state.user.id);
sendSimulationCommand(group, userInfo.memberId, id, command).then((response) => {
resolve(response);
}).catch(error => {
reject(error);
});
} else {
sendCommandNew(group, id, command).then((response) => {
resolve(response);
}).catch(error => {
reject(error);
});
}
}
});
}

View File

@ -3,7 +3,6 @@ export const State2SimulationMap = {
'01': 'Local', // 现地工作站
'02': 'Center', // 中心调度工作站
'09':'Depot_IL', // 车辆段工作站
'10': 'Local',
'04': 'Local'
};

View File

@ -6,6 +6,7 @@ import { State2SimulationMap } from './Config.js';
import { sendTrainingNextStepNew } from '@/api/jmap/training';
import { getCmdList } from '@/api/management/dictionary';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { getLocalStorage } from '@/utils/auth';
class Handler {
constructor() {
@ -35,6 +36,7 @@ class Handler {
afterValid(operation, valid) {
return new Promise((resolve, reject) => {
const basicInfo = store.getters['training/basicInfo'];
const trainingDetail = store.getters['trainingNew/trainingDetail'];
if (basicInfo.id && valid) {
const group = router.currentRoute.query.group;
sendTrainingNextStepNew(basicInfo.id, operation, group).then(res=>{
@ -52,6 +54,16 @@ class Handler {
}
reject(error);
});
} else if (trainingDetail && trainingDetail.id) {
if (!valid) {
this.pop();
reject();
} else {
if (operation.cancel === true) {
this.clear();
}
resolve();
}
} else {
resolve();
}
@ -154,8 +166,12 @@ class Handler {
}
getTrainingMode () {
if (store.state.trainingNew.trainingSwitch && store.state.trainingNew.trainingDetail.type === 'SINGLE') {
return store.state.trainingNew.teachMode;
} else {
return store.state.training.mode;
}
}
getTrainingStart() {
return store.state.training.trainingStart;
@ -164,6 +180,35 @@ class Handler {
getOperateBreakStatus () {
return store.state.menuOperation.break;
}
getNewTrainingStart() {
return store.state.trainingNew.trainingSwitch;
}
getNewTrainingOperation() {
try {
let trainingDetail = getLocalStorage('trainingDetail') || `{}`;
trainingDetail = JSON.parse(trainingDetail);
const stepList = JSON.parse(trainingDetail.stepJson || `[]`);
let stepOrder = getLocalStorage('stepOrder') || `1`;
stepOrder = JSON.parse(stepOrder);
let operateOrder = getLocalStorage('operateOrder') || `1`;
operateOrder = JSON.parse(operateOrder);
const step = stepList[stepOrder - 1];
// const index = stepOrder - 1 >= 0 ? stepOrder - 1 : 0;
// const step = stepList[index];
const stepOperation = step.operations[operateOrder];
return stepOperation;
} catch (e) {
console.error(e);
return {};
}
}
getNewTrainingType() {
return store.state.trainingNew.trainingDetail.type;
}
handleCheckNewTrainingResult(valid) {
store.dispatch('trainingNew/handleCheckNewTrainingResult', valid);
}
}
export default new Handler();

View File

@ -668,6 +668,12 @@ export const OperationEvent = {
operation: '00c03s',
domId: '_Tips-ningBo-line_remoteResetFunc-sure{TOP}'
}
},
commandRight: {
right: {
operation: '00b',
domId: ''
}
}
},
// 站台概要表
@ -2311,6 +2317,10 @@ export const OperationEvent = {
confirm:{
operation: '4281',
domId: '_Tips-Section-Defective-Shunting-Confirm'
},
shuntingTypeListChange: {
operation: '4282',
domId: '_Tips-Section-Defective-Shunting-Change'
}
// menuButton: {
// operation: '428',
@ -3992,6 +4002,10 @@ export const OperationEvent = {
menu: {
operation: '1154',
domId: '_Tips-CTC-modifyStationTrack-Menu{TOP}'
},
edit: {
operation: '11541',
domId: '_Tips-CTC-modifyStationTrack-edit{TOP}'
}
},
// 出入口发布生效区
@ -4021,6 +4035,34 @@ export const OperationEvent = {
operation: '1158',
domId: '_Tips-CTC-batchTrainFixedPath-Menu{TOP}'
}
},
// 固定列车径路从生效区更新
updateTrainFixedPath2Station:{
menu: {
operation: '1159',
domId: '_Tips-CTC-updateTrainFixedPath2Station-Menu{TOP}'
}
},
// 固定列车经路更新列表
getStationTrainFixedPath:{
menu: {
operation: '1160',
domId: '_Tips-CTC-getStationTrainFixedPath-Menu{TOP}'
}
},
// 固定列车经路更新加载到计划
loadUpdateStationTrainFixedPath:{
menu: {
operation: '1161',
domId: '_Tips-CTC-loadUpdateStationTrainFixedPath-Menu{TOP}'
}
},
// 修改列车固定径路
modifyTrainFixedPath:{
menu: {
operation: '1161',
domId: '_Tips-CTC-loadUpdateStationTrainFixedPath-Menu{TOP}'
}
}
// CTC_ZONE_SAVE_TRIP_NUMBER
// CTC_ZONE_SAVE_STATION
@ -4136,6 +4178,44 @@ export const OperationEvent = {
domId: '_Tips-Driver-parkingTrain'
}
}
},
// 语音会话
Conversation: {
Chat: {
menu: {
operation: '1401',
domId: '_Tips-Conversation-Chat'
},
sideButton: {
operation: '1402',
domId: '_Tips-Conversation-Chat-sideButton'
}
}
},
// 实训设计
TrainingDesign: {
menuButton: {
goCtc: {
operation: '1501',
domId: '_Tips-TrainingDesign-menuButton-goCtc'
},
goRpManage: {
operation: '1502',
domId: '_Tips-TrainingDesign-menuButton-goRpManage'
},
trainTicket: {
operation: '1503',
domId: '_Tips-TrainingDesign-menuButton-trainTicket'
},
registerBook: {
operation: '1504',
domId: '_Tips-TrainingDesign-menuButton-registerBook'
},
faultMode: {
operation: '1505',
domId: '_Tips-TrainingDesign-menuButton-faultMode'
}
}
}
};

View File

@ -1,6 +1,6 @@
import { objectIsEqual } from '@/utils/date';
import Handler from './Handler.js';
import { TrainingMode } from '@/scripts/ConstDic';
import { TrainingMode, ScriptMode } from '@/scripts/ConstDic';
class ValidateHandler {
vaildate(mode, operate) {
@ -9,11 +9,36 @@ class ValidateHandler {
return this.vaildate_tips(operate);
case TrainingMode.TEACH: // 教学模式
return this.vaildate_tips(operate);
case ScriptMode.PRACTICE:
return this.vaildate_newTraining(operate);
case ScriptMode.TEACH:
return this.vaildate_newTraining(operate);
case ScriptMode.TEST:
return this.vaildate_newTrainingTest(operate);
}
return true;
}
vaildate_newTraining(operate) {
let valid = true;
if (Handler.getNewTrainingStart()) {
valid = this.judgeNewTraining(operate);
} else {
Handler.clear();
valid = false;
}
return valid;
}
vaildate_newTrainingTest(operate) {
let valid = true;
if (Handler.getNewTrainingStart()) {
this.judgeNewTraining(operate);
} else {
Handler.clear();
valid = false;
}
return valid;
}
vaildate_tips(operate) {
let valid = true;
if (Handler.getTrainingStart()) {
@ -25,7 +50,29 @@ class ValidateHandler {
return valid;
}
judgeNewTraining(operate) {
const stepOperation = Handler.getNewTrainingOperation();
let valid = true;
if (operate.cmdType || stepOperation.operationType) {
const cmd = operate.cmdType ? operate.cmdType.value : '';
valid = (cmd === stepOperation.operationType) && valid;
}
if (operate.code || stepOperation.deviceCode) {
valid = (operate.code === stepOperation.deviceCode) && valid;
}
if (operate.operation || stepOperation.domId) {
valid = (operate.operation === stepOperation.domId) && valid;
}
if (operate.userOperationType || stepOperation.userOperationType) {
valid = (operate.userOperationType === stepOperation.userOperationType) && valid;
}
const opParam = operate.param == undefined ? {} : operate.param;
if (opParam || stepOperation.params) {
valid = objectIsEqual(opParam, stepOperation.params) && valid;
}
Handler.handleCheckNewTrainingResult(valid);
return valid;
}
/** 判断操作步骤是否正确 */
judge (operate) {
const steps = Handler.getSteps();

View File

@ -14,7 +14,9 @@ const iscs = {
closeMusicNum: 0, // 关闭音乐标识
faultList: [], // 故障 元素状态
incidentList: [], // 事件列表
alarmList: [] // 报警列表
alarmList: [], // 报警列表
gateFaultList: [], // 闸机故障
gateFaultCount: 0
},
getters: {
@ -184,6 +186,15 @@ const iscs = {
},
updateIscsState: (state, deviceStatus) => {
Vue.prototype.$iscs && Vue.prototype.$iscs.update(deviceStatus);
},
handlerGateFaultList: (state, data) => {
if (data.type === 'SET') {
state.gateFaultList.push(data.stationCode);
} else if (data.type === 'CANCEL') {
const index = state.gateFaultList.findIndex(item => item === data.stationCode);
state.gateFaultList.splice(index, 1);
}
state.gateFaultCount++;
}
},
@ -224,6 +235,9 @@ const iscs = {
},
setDelIncidentList: ( { commit }) => {
commit('setDelIncidentList');
},
handlerGateFaultList: ({ commit }, data) => {
commit('handlerGateFaultList', data);
}
}
};

View File

@ -204,6 +204,7 @@ const map = {
namespaced: true,
state: {
disStationList: [], // 调度台list
routeData: {}, // 进路数据
routeList: [], // 进路list
mapStationDirectionData:{}, // 大铁项目 车站方向数据
@ -258,6 +259,13 @@ const map = {
},
getters: {
disStationList: state => {
if (state.map) {
return state.disStationList;
} else {
return [];
}
},
trainWindowSectionCode: state => {
return state.trainWindowSectionCode;
},
@ -710,19 +718,33 @@ const map = {
if (state.map && state.map.displayList && state.map.displayList.length && store.state.training.prdType) {
let flag = false;
const stationCode = state.showCentralizedStationCode;
state.map.displayList.forEach(item => {
if (
store.state.training.prdType === '01' &&
item.type === 'LOCAL' &&
((item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) || !stationCode)
) {
flag = true;
} else if (['02', '03', '04', '05', '07'].includes(store.state.training.prdType) && item.type === 'CENTER' && item.elementList.includes(deviceCode)) {
flag = true;
} else if (store.state.training.prdType === '09' && item.type === 'DEPOT_IL' && item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) {
flag = true;
// state.map.displayList.forEach(item => {
// if (
// store.state.training.prdType === '01' &&
// item.type === 'LOCAL' &&
// ((item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) || !stationCode)
// ) {
// flag = true;
// } else if (['02', '03', '04', '05', '07'].includes(store.state.training.prdType) && item.type === 'CENTER' && item.elementList.includes(deviceCode)) {
// flag = true;
// } else if (store.state.training.prdType === '09' && item.type === 'DEPOT_IL' && item.stationCodeList.includes(stationCode) && item.elementList.includes(deviceCode)) {
// flag = true;
// }
// });
const displayData = state.map.displayList.find(item => {
if (store.state.training.prdType === '01' && item.type === 'LOCAL' && (item.stationCodeList.includes(stationCode) || !stationCode)) {
return item;
} else if (['02', '03', '04', '05', '07'].includes(store.state.training.prdType) && item.type === 'CENTER') {
return item;
} else if (store.state.training.prdType === '09' && item.type === 'DEPOT_IL' && item.stationCodeList.includes(stationCode) ) {
return item;
}
});
if (displayData && displayData.elementList) {
return displayData.elementList.includes(deviceCode);
} else {
flag = true;
}
return flag;
} else {
return true;
@ -731,6 +753,10 @@ const map = {
},
mutations: {
// 设置调度台列表
setDisStationList: (state, list) => {
state.disStationList = list;
},
// 改变地图数据索引
flushMapRef: state => {
if (state.map) {
@ -1107,6 +1133,7 @@ const map = {
});
mapData.graphDataNew.overlapList = overlapData;
commit('setDisStationList', mapData.logicDataNew.disStationList || []);
commit('setMapName', mapData.name);
commit('setMapData', mapData.graphDataNew);
commit('setRouteData', mapData.logicDataNew.routeList);

View File

@ -193,6 +193,7 @@ function handle(state, data) {
} else {
store.dispatch('training/over');
}
state.trainingReloadCount++;
break;
case 'Simulation_PslStatus':
state.simulationPslStatus = msg;
@ -290,6 +291,15 @@ function handle(state, data) {
case 'Simulation_Training_Step_Tip':
state.trainingStepTip = msg;
break;
case 'Simulation_Training_Finish':
state.trainingOverCount++;
break;
case 'YJDDZH_TRAIN_POSITION':
state.whTrainInfo = msg;
break;
case 'Simulation_Training_Step_Finish':
state.trainingStepFinishCount++;
break;
//
// // 大铁项目 调度台 运行图信息 初始化消息
// case 'SIMULATION_RAILWAY_RUN_PLAN_INIT':
@ -477,9 +487,24 @@ const socket = {
railwaySimulationRunplanSendChange:0, // 大铁项目 调度台 发布 行车计划变化
voiceBroadcastMsgs: [], // 语音播报信息
voiceBroadcastChange: 0, // 语音播报信息变化
trainingStepTip: '' // 新实训推送消息
trainingStepTip: '', // 新实训推送消息
trainingOverCount: 0, // 新实训结束计数器
trainingReloadCount: 0,
whTrainInfo: null,
trainingStepFinishCount: 0,
// railwaySimulationRpMsg:{}, // 大铁项目 调度台 调度台
// railwaySimulationRpChange:0 // 大铁项目 调度台 运行图信息变化
// railwaySimulationRpChange:0, // 大铁项目 调度台 运行图信息变化
standPisState: {
stationName: '',
firstTrainRemain: '',
firstEndStationName: '',
secondTrainRemain: '',
secondEndStationName: '',
},
onboardPisState: {
nextStationName: '',
endStationName: '',
},
},
getters: {
},
@ -566,6 +591,12 @@ const socket = {
setIscsStatePisMessages: (state, speed) => {
state.iscsStatePisMessages = speed;
},
setStandPisMessages: (state, payload) => {
state.standPisState = payload
},
setOnboardPisMessages: (state, payload) => {
state.onboardPisState = payload
},
deleteRailwaySimulationRunplan: (state, stationCode) => {
delete state.railwaySimulationRunplanSendMap[stationCode];
state.railwaySimulationRunplanSendChange++;
@ -588,6 +619,9 @@ const socket = {
},
clearTrainingStepTip: (state) => {
state.trainingStepTip = '';
},
clearTrainingOverCount: (state) => {
state.trainingOverCount = 0;
}
},
@ -683,6 +717,12 @@ const socket = {
handleIscsPisState:({ commit }, state) => {
commit('setIscsStatePisMessages', state);
},
handleStandPisState: ({ commit }, payload) => {
commit('setStandPisMessages', payload);
},
handleOnboardPisState: ({ commit }, payload) => {
commit('setOnboardPisMessages', payload);
},
deleteRailwaySimulationRunplan:({ commit }, stationCode) => {
commit('deleteRailwaySimulationRunplan', stationCode);
},
@ -694,6 +734,9 @@ const socket = {
},
clearTrainingStepTip: ({ commit }) => {
commit('clearTrainingStepTip');
},
clearTrainingOverCount: ({ commit }) => {
commit('clearTrainingOverCount');
}
}
};

View File

@ -4,6 +4,9 @@ import deviceType from '../../jmapNew/constant/deviceType';
import LangStorage from '@/utils/lang';
import Handler from '@/scripts/cmdPlugin/Handler';
import { deepAssign } from '@/utils/index';
import store from '@/store/index';
import { ScriptMode } from '@/scripts/ConstDic';
import { setLocalStorage } from '@/utils/auth';
/**
* 实训状态数据
@ -428,13 +431,17 @@ const training = {
// 下一步
nextNew: ({ commit, state }, operate) => {
setLocalStorage('nextNew', JSON.stringify(operate));
return new Promise((resolve, reject) => {
commit('setOperate', operate);
if (!state.started && !state.mode) {
commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? 'Please click start, start training!' : '请点击开始,开始实训!', color: 'red' });
return;
}
if (store.state.trainingNew.trainingDetail && !store.state.trainingNew.trainingSwitch) {
commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? 'Please click start, start training!' : '请点击开始,开始实训!', color: 'red' });
return;
}
// 处理operation
Handler.handle(operate).then(rtn => {
if (state.trainingStart) {
@ -453,10 +460,20 @@ const training = {
// 测试和考试不给提示
rtn && rtn.valid && commit('next');
}
} else if (store.state.trainingNew.trainingSwitch && store.state.trainingNew.trainingDetail.type === 'SINGLE') {
if (store.state.trainingNew.teachMode === ScriptMode.TEACH || store.state.trainingNew.teachMode === ScriptMode.PRACTICE) {
if (rtn && rtn.valid) {
commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? "Correct operation! That's great!" : '操作正确!真棒!', color: 'green' });
} else {
commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? 'operation mistake!' : '操作错误!', color: 'red' });
}
}
} else {
store.dispatch('trainingNew/setTrainingOperate', operate);
}
resolve(rtn);
}).catch(error => {
// console.error(error);
console.error(error);
reject(error);
});
});
@ -662,6 +679,9 @@ const training = {
},
setUserRole: ({ commit }, userRole) => {
commit('setUserRole', userRole);
},
setOperateErrMsg: ({ commit }) => {
commit('setOperateErrMsg', { errMsg: '操作错误!', color: 'red' });
}
}
};

View File

@ -1,9 +1,17 @@
import { setLocalStorage } from '@/utils/auth';
const training = {
namespaced: true,
state: {
teachMode: '', // 实训模式
trainingDetail: null, // 实训详情
trainingSwitch: false // 实训开始结束标志
trainingSwitch: false, // 实训开始结束标志
trainingOperate: null,
simulationPause: false, // 实训 暂停判断
sceneOperate: null,
stepOrder: 0,
operateOrder: 0,
stepOverCount: 0,
trainingScore: ''
},
getters: {
teachMode: (state) => {
@ -14,6 +22,21 @@ const training = {
},
trainingSwitch: (state) => {
return state.trainingSwitch;
},
trainingOperate: (state) => {
return state.trainingOperate;
},
stepOrder: (state) => {
return state.stepOrder;
},
stepOverCount: (state) => {
return state.stepOverCount;
},
trainingScore: (state) => {
return state.trainingScore;
},
sceneOperate: (state) => {
return state.sceneOperate;
}
},
mutations: {
@ -22,9 +45,44 @@ const training = {
},
setTrainingDetail: (state, detail) => {
state.trainingDetail = detail;
setLocalStorage('trainingDetail', JSON.stringify(detail));
},
setTrainingSwitch: (state, flag) => {
state.trainingSwitch = flag;
},
setTrainingOperate: (state, trainingOperate) => {
state.trainingOperate = trainingOperate;
},
stepOrderIncrease: (state) => {
state.stepOrder++;
setLocalStorage('stepOrder', JSON.stringify(state.stepOrder));
},
clearStepOrder: (state) => {
state.stepOrder = 0;
setLocalStorage('stepOrder', JSON.stringify(state.stepOrder));
},
operateOrderIncrease: (state) => {
state.operateOrder++;
setLocalStorage('operateOrder', JSON.stringify(state.operateOrder));
},
setSimulationPause: (state, value) => {
state.simulationPause = value;
},
clearOperateOrder: (state) => {
state.operateOrder = 0;
setLocalStorage('operateOrder', JSON.stringify(state.operateOrder));
},
stepOverCountChange: (state) => {
state.stepOverCount++;
},
clearStepOverCount: (state) => {
state.clearStepOverCount = 0;
},
setTrainingScore: (state, score) => {
state.trainingScore = score;
},
setSceneOperate: (state, sceneOperate) => {
state.sceneOperate = sceneOperate;
}
},
actions: {
@ -36,10 +94,51 @@ const training = {
},
trainingStart: ({commit}) => {
commit('setTrainingSwitch', true);
setLocalStorage('nextNew', null);
},
trainingEnd: ({commit}) => {
commit('setTrainingSwitch', false);
setLocalStorage('nextNew', null);
},
setTrainingOperate: ({commit, state}, trainingOperate) => {
commit('setTrainingOperate', trainingOperate);
},
stepOrderIncrease: ({commit}) => {
commit('stepOrderIncrease');
},
clearStepOrder: ({commit}) => {
commit('clearStepOrder');
},
operateOrderIncrease: ({commit}) => {
commit('operateOrderIncrease');
},
setSimulationPause: ({commit}, simulationPause) => {
commit('setSimulationPause', simulationPause);
},
clearOperateOrder: ({commit}) => {
commit('clearOperateOrder');
},
clearStepOverCount: ({commit}) => {
commit('clearStepOverCount');
},
setTrainingScore: ({commit}, score) => {
commit('setTrainingScore', score);
},
setSceneOperate: ({commit}, sceneOperate) => {
commit('setSceneOperate', sceneOperate);
},
handleCheckNewTrainingResult:({commit, state}, valid) => {
const stepList = JSON.parse(state.trainingDetail.stepJson);
const step = stepList[state.stepOrder - 1];
if (valid && step.operations.length === (state.operateOrder + 1 )) {
commit('stepOverCountChange');
} else if (valid) {
commit('operateOrderIncrease');
} else {
console.error('校验失败;');
}
}
}
};
export default training;

View File

@ -1,4 +1,5 @@
import SessionStorage from 'sessionstorage';
import store from '@/store/index';
const TokenKey = 'Admin-Token';
@ -23,3 +24,22 @@ export function setSessionStorage(key, value) {
export function removeSessionStorage(key) {
return SessionStorage.removeItem(key);
}
// 操作LocalStorage
export function getLocalStorage(key) {
const idKey = getUserIdKey(key);
return localStorage.getItem(idKey);
}
export function setLocalStorage(key, value) {
const idKey = getUserIdKey(key);
return localStorage.setItem(idKey, value);
}
export function removeLocalStorage(key) {
const idKey = getUserIdKey(key);
return localStorage.removeItem(idKey);
}
export function getUserIdKey(key) {
const id = store.state.user.id;
const idKey = `${id}_${key}`;
return idKey;
}

View File

@ -27,7 +27,7 @@ export function handlerUrl(data) {
BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.233/rtss-server';
// BASE_API = 'http://114.116.51.125/jlcloud';
// BASE_API = 'http://192.168.8.152:9000'; // 袁琪
// BASE_API = 'http://192.168.3.90:9100'; // 周寅
// BASE_API = 'http://192.168.3.94:9000'; // 旭强
// BASE_API = 'http://192.168.3.15:9000'; // 张赛
// BASE_API = 'http://192.168.3.5:9000'; // 夏增彬

View File

@ -1,3 +1,17 @@
import dayjs from 'dayjs';
// import utc from 'dayjs/plugin/utc'
import 'dayjs/locale/zh-cn';
import duration from 'dayjs/plugin/duration';
import localizedFormat from 'dayjs/plugin/localizedFormat';
dayjs.locale('zh-cn');
dayjs
// .extend(utc)
.extend(localizedFormat)
.extend(duration);
/**
* @returns 当前时间, 格式: 'YYYY-MM-DD HH:mm:ss'
*/
export function now() {
var d = new Date();
var year = d.getFullYear();
@ -16,12 +30,19 @@ export function now() {
return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
}
/**
* @param {Number} usedTime 秒数
* @returns `HH:mm:ss`
*/
export function timeFormat(usedTime = 0) {
let hour = 0; let minute = 0; let second = 0; let sumTime = usedTime;
let hour = 0;
let minute = 0;
let second = 0;
let sumTime = usedTime;
if (sumTime) {
if (sumTime >= 3600) {
hour = Math.floor(sumTime / 3600) % 24;
sumTime = (sumTime % 3600);
sumTime = sumTime % 3600;
}
if (sumTime >= 60) {
minute = Math.floor(sumTime / 60);
@ -35,8 +56,11 @@ export function timeFormat(usedTime = 0) {
return getTimeStr(hour) + ':' + getTimeStr(minute) + ':' + getTimeStr(second);
}
// 时分秒转为时间戳
/**
* 时分秒转为时间戳
* @param {String} time 'HH:mm:ss'
* @returns 秒数
*/
export function toTimeStamp(time = '') {
let s = 0;
const hour = time.split(':')[0];
@ -46,8 +70,11 @@ export function toTimeStamp(time = '') {
return s;
}
// 时间戳的只转为时分秒
/**
* 时间戳的转换为时分秒
* @param {Number} mss Unix时间戳
* @returns 'HH:mm:ss'
*/
export function formatDuring(mss) {
const now = new Date(mss);
const hour = now.getHours(); // 返回日期中的小时数0到23
@ -56,41 +83,43 @@ export function formatDuring(mss) {
return hour + ':' + minute + ':' + second;
}
export function prefixIntrger(num, length) {
return (Array(length).join('0') + num).slice(-length);
}
/** 根据秒计算时间hh:mm:ss */
export function computationTime(time) {
let hours = Math.floor(time / 3600);
const newTime = time % 3600;
let minutes = Math.floor(newTime / 60) + '';
let seconds = newTime % 60;
if (hours < 0) {
hours = '00';
} else if (hours < 10) {
hours = '0' + hours;
}
if (minutes < 0) {
minutes = '00';
} else if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 0) {
seconds = '00';
} else if (seconds < 10) {
seconds = '0' + seconds;
}
return hours + ':' + minutes + ':' + seconds;
}
export function computationSeconds(seconds, hourUnit, minuteUnit, secondUnit) {
if (seconds) {
const h = parseInt(seconds / 3600);
const m = parseInt((seconds - h * 3600) / 60);
const s = (seconds - h * 3600) % 60;
return h ? `${h} ${hourUnit} ${m} ${minuteUnit} ${s} ${secondUnit}`
: m ? `${m} ${minuteUnit} ${s} ${secondUnit}`
: `${s} ${secondUnit}`;
return h ? `${h} ${hourUnit} ${m} ${minuteUnit} ${s} ${secondUnit}` : m ? `${m} ${minuteUnit} ${s} ${secondUnit}` : `${s} ${secondUnit}`;
}
return null;
}
export function timestampFormat(format, ms = new Date()) {
return dayjs/* .utc */(ms).format(format);
}
/* 对象是否相等 */
export function objectIsEqual(obj1, obj2) {
if (!(obj1 instanceof Object)) {
return false;
} else if (!(obj2 instanceof Object)) {
return false;
}
// 仅过滤值为null的项
const arr1 = Object.keys(obj1).filter(key => { return obj1[key] != null; });
const arr2 = Object.keys(obj2).filter(key => { return obj1[key] != null; });
if (arr1.length !== arr2.length) {
return false;
}
for (const key of arr1) {
if (obj1[key] instanceof Object && obj2[key] instanceof Object) {
if (!objectIsEqual(obj1[key], obj2[key])) {
console.log(obj1[key], obj2[key]);
return false;
}
} else if (obj1[key] !== obj2[key]) {
console.log(obj1[key], obj2[key]);
return false;
}
}
return true;
}

View File

@ -10,7 +10,7 @@ export const jl3dTopic = '/user/queue/simulation/jl3d'; // 三维topic
export const LPFTopic = '/user/queue/simulation/passenger'; // 客流topic
// export const iscsTopic = '/topic/simulation/iscs'; // iscs topic
export function getTopic(type, group, stationCode) {
export function getTopic(type, group, param) {
let topic = '';
switch (type) {
case 'SYSTIME':
@ -23,7 +23,7 @@ export function getTopic(type, group, stationCode) {
topic = `/queue/simulation/${group}/state`;
break;
case 'ISCSPSD':
topic = `/queue/simulation/${group}/iscs/psd/${stationCode}`;
topic = `/queue/simulation/${group}/iscs/psd/${param.stationCode}`;
break;
case 'ISCSPA':
topic = `/queue/simulation/${group}/iscs/pa`;
@ -31,6 +31,15 @@ export function getTopic(type, group, stationCode) {
case 'ISCSPIS':
topic = `/queue/simulation/${group}/iscs/pis`;
break;
case 'ISCSGATE':
topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`;
break;
case 'PIS_STAND':
topic = `/queue/simulation/${group}/standPis/${param.standCode}`;
break;
case 'PIS_TRAIN':
topic = `/queue/simulation/${group}/onboardPis/${param.groupNumber}`;
break;
case 'CTC':
topic = `/user/queue/simulation/${group}/ctc`;
break;
@ -52,7 +61,7 @@ export function creatSubscribe(topic, header) {
if (!Vue.prototype.$stomp) {
Vue.prototype.$stomp = new StompClient();
}
if (!Vue.prototype.$stomp.subscribeMap[topic]) {
if (!Vue.prototype.$stomp.subscribeMap.has(topic)) {
Vue.prototype.$stomp.subscribe(topic, callback, header);
}
} catch (error) {
@ -69,12 +78,16 @@ function callback(Response) {
store.dispatch('socket/setSimulationTimeSync', Number.parseInt(Response.body));
} else if (Response.headers.destination.includes('state')) {
store.dispatch('socket/handleSimulationState', Number.parseInt(Response.body));
} else if (Response.headers.destination.includes('iscs/psd')) {
} else if (Response.headers.destination.includes('iscs/psd') || Response.headers.destination.includes('iscs/gate')) {
store.dispatch('socket/handleIscsState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('iscs/pa')) {
store.dispatch('socket/handleIscsPaState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('iscs/pis')) {
store.dispatch('socket/handleIscsPisState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('standPis')) {
store.dispatch('socket/handleStandPisState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('onboardPis')) {
store.dispatch('socket/handleOnboardPisState', JSON.parse(Response.body));
} else {
const data = JSON.parse(Response.body);
store.dispatch('socket/setStomp', data);

View File

@ -144,6 +144,7 @@ export default {
loading: false,
title:'',
// mapStationDirectionList:[],
isAdd:false,
mapStationDirectionMap:{},
enterDirList:[], //
outDirList:[],
@ -231,7 +232,9 @@ export default {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.CTCCommand.addTrainFixedPath.menu.domId : '';
return this.dialogShow
? (this.isAdd ? OperationEvent.CTCCommand.addTrainFixedPath.menu.domId : OperationEvent.CTCCommand.modifyTrainFixedPath.menu.domId)
: '';
}
},
methods:{
@ -239,16 +242,26 @@ export default {
this.mapStationDirectionMap = mapStationDirectionMap;
const mapStationDirectionList = Object.values(mapStationDirectionMap);
this.enterDirList = mapStationDirectionList.filter(stationDirection=>{
return stationDirection.runStatus == 'R';
return stationDirection.stationCode == stationCode && (
stationDirection.ioDirection == 'DOWN_IN_STATION' ||
stationDirection.ioDirection == 'UP_IN_STATION' ||
stationDirection.ioDirection == 'BOTH_WAY_STATION'
);
});
this.outDirList = mapStationDirectionList.filter(stationDirection=>{
return stationDirection.runStatus == 'D';
return stationDirection.stationCode == stationCode && (
stationDirection.ioDirection == 'DOWN_OUT_STATION' ||
stationDirection.ioDirection == 'UP_OUT_STATION' ||
stationDirection.ioDirection == 'BOTH_WAY_STATION'
);
});
if (row) {
this.addModel = Object.assign({}, row);
this.title = '修改列车固定径路';
this.isAdd = false;
} else {
this.title = '增加列车固定径路';
this.isAdd = true;
this.addModel.stationCode = stationCode;
}
this.filterSectionList = Object.values(filterSectionMap);
@ -311,7 +324,8 @@ export default {
if (valid) {
this.loading = true;
const param = Object.assign({}, this.addModel);
if (this.title == '增加列车固定径路') { delete param.code; }
if (this.isAdd) {
delete param.code;
commitOperate(menuOperate.CTC.addTrainFixedPath, param, 3).then(({valid})=>{
if (valid) {
this.doClose();
@ -321,6 +335,18 @@ export default {
this.doClose();
this.$emit('noticeInfo');
});
} else {
commitOperate(menuOperate.CTC.modifyTrainFixedPath, param, 3).then(({valid})=>{
if (valid) {
this.doClose();
this.$emit('refresh');
}
}).catch(() => {
this.doClose();
this.$emit('noticeInfo');
});
}
}
});
},

View File

@ -206,10 +206,18 @@ export default {
this.mapStationDirectionMap = mapStationDirectionMap;
const mapStationDirectionList = Object.values(mapStationDirectionMap);
this.enterDirList = mapStationDirectionList.filter(stationDirection=>{
return stationDirection.runStatus == 'R';
return stationDirection.stationCode == stationCode && (
stationDirection.ioDirection == 'DOWN_IN_STATION' ||
stationDirection.ioDirection == 'UP_IN_STATION' ||
stationDirection.ioDirection == 'BOTH_WAY_STATION'
);
});
this.outDirList = mapStationDirectionList.filter(stationDirection=>{
return stationDirection.runStatus == 'D';
return stationDirection.stationCode == stationCode && (
stationDirection.ioDirection == 'DOWN_OUT_STATION' ||
stationDirection.ioDirection == 'UP_OUT_STATION' ||
stationDirection.ioDirection == 'BOTH_WAY_STATION'
);
});
this.addModel.stationCode = stationCode;
this.filterSectionList = Object.values(filterSectionMap);

View File

@ -68,6 +68,7 @@
</el-dialog>
</template>
<script>
// import { deepAssign } from '@/utils/index';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
@ -127,7 +128,7 @@ export default {
},
commit() {
this.loading = true;
const param = Object.assign({stationCode:this.stationCode}, this.model);
const param = Object.assign({stationCode:this.stationCode}, JSON.parse(JSON.stringify(this.model)));
delete param.ioName;
delete param.ioDirection;
commitOperate(menuOperate.CTC.modifyStationDirection, param, 3).then(({valid})=>{

View File

@ -4,7 +4,7 @@
<div class="BTRpMenuBar">
<div class="eachBTRpMenuBar" @click="addTab('StationTrack')">车站股道</div>
<div class="eachBTRpMenuBar" @click="addTab('StationDirection')">车站出入口</div>
<div class="eachBTRpMenuBar" @click="addTab('TrainFixedPath')">列车固定</div>
<div class="eachBTRpMenuBar" @click="addTab('TrainFixedPath')">列车固定</div>
<div class="eachBTRpMenuBar">车站用户管理</div>
<div class="eachBTRpMenuBar">备份区名称</div>
<div class="eachBTRpMenuBar">工作区选择</div>
@ -98,7 +98,7 @@ export default {
this.currentTabs = tabs.filter(tab => tab.name !== targetName);
},
addTab(name) {
const nameMap = {'StationTrack':{title:'车站股道', component:StationTrack }, 'TrainFixedPath':{title:'列车固定径', component:TrainFixedPath}, 'StationDirection':{title:'出入口', component:StationDirection}};
const nameMap = {'StationTrack':{title:'车站股道', component:StationTrack }, 'TrainFixedPath':{title:'列车固定', component:TrainFixedPath}, 'StationDirection':{title:'出入口', component:StationDirection}};
const findTab = this.currentTabs.find(tab=>{
return tab.name == name;
});
@ -133,7 +133,7 @@ export default {
this.$refs.noticeInfo.doShow();
}
// ''
//
//
}
};

View File

@ -8,12 +8,12 @@
<div class="stationTrackRMenu">
<div class="stationTrackRMenuL">
<!-- :id="domIdConfirm" :loading="loading" @click="commit"-->
<el-button class="stationTrackButton" size="small" @click="modifySection">修改</el-button>
<el-button :id="OperationEvent.CTCCommand.modifyStationTrack.edit.domId" class="stationTrackButton" size="small" @click="modifySection">修改</el-button>
</div>
<div class="stationTrackRMenuR">
<span class="stationTrackRVer">版本号</span>
<el-button class="stationTrackButton" size="small">备份</el-button>
<el-button class="stationTrackButton" size="small" @click="releaseStationTrack">更新至生效区</el-button>
<el-button :id="OperationEvent.CTCCommand.releaseStationTrack.menu.operation" class="stationTrackButton" size="small" @click="releaseStationTrack">更新至生效区</el-button>
<el-button class="stationTrackButton" size="small">导入</el-button>
<el-button class="stationTrackButton" size="small">比较</el-button>
</div>
@ -153,6 +153,7 @@ import { mapGetters } from 'vuex';
import TerminalStationList from './terminalStationList';
import TrackInformation from './trackInformation';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
export default {
name:'StationTrack',
components: {
@ -175,9 +176,9 @@ export default {
'D':'上下行'
},
typeMap:{
'VAN':'客车',
'VAN':'客车',
'GOODS_VAN':'货车',
'PASSENGER':'客车'
'PASSENGER':'客车'
},
transfiniteTypeMap:{
'NO':'不能接发超限列车',
@ -213,7 +214,10 @@ export default {
computed:{
...mapGetters('map', [
'sectionList'
])
]),
OperationEvent() {
return OperationEvent;
}
},
methods:{
loadStation() {
@ -252,12 +256,16 @@ export default {
},
modifySection() {
if (this.currentRow) {
commitOperate(menuOperate.CTC.editStationTrack, {}, 0).then(({valid})=>{
if (valid) {
this.$refs.trackInformation.doShow({
row:this.currentRow,
filterSectionMap:this.filterSectionMap,
stationCode:this.currentStationCode
});
}
});
}
},
noticeInfo() {
this.$emit('noticeInfo');

View File

@ -147,9 +147,9 @@ export default {
{label:'上下行', value:'D'}
],
typeList:[
{label:'客车', value:'VAN'},
{label:'客车', value:'VAN'},
{label:'货车', value:'GOODS_VAN'},
{label:'客车', value:'PASSENGER'}
{label:'客车', value:'PASSENGER'}
],
transfiniteTypeList:[
{label:'不能接发超限列车', value:'NO'},

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