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": { "dependencies": {
"axios": "^0.18.0", "axios": "^0.18.0",
"dayjs": "^1.11.5",
"echarts": "^4.7.0", "echarts": "^4.7.0",
"element-ui": "^2.12.0", "element-ui": "^2.12.0",
"file-saver": "^1.3.3", "file-saver": "^1.3.3",

View File

@ -17,7 +17,7 @@
</template> </template>
<script> <script>
import { getToken } from '@/utils/auth'; import { getToken, getUserIdKey } from '@/utils/auth';
import { getSessionStorage } from '@/utils/auth'; import { getSessionStorage } from '@/utils/auth';
import { loginInfo, ProjectIcon } from '@/scripts/ProjectConfig'; import { loginInfo, ProjectIcon } from '@/scripts/ProjectConfig';
import DeomonTopic from '@/views/demonstration/deomonTopic'; import DeomonTopic from '@/views/demonstration/deomonTopic';
@ -88,6 +88,15 @@ export default {
await this.$store.dispatch('preLogout'); 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(() => { this.$nextTick(() => {
openIndexedDB(); openIndexedDB();
}); });

View File

@ -47,3 +47,11 @@ export function uploadAudio(file) {
upload: true 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

@ -221,7 +221,7 @@ export function loadPublishTraining(group, trainingId) {
/** 加载草稿实训 */ /** 加载草稿实训 */
export function loadDraftTraining(group, trainingId) { export function loadDraftTraining(group, trainingId) {
return request({ return request({
url: ` /api/training2Simulation/${group}/load/draft/${trainingId}`, url: `/api/training2Simulation/${group}/load/draft/${trainingId}`,
method: 'post' method: 'post'
}); });
} }
@ -247,3 +247,10 @@ export function endTrainingStep(group, stepId) {
method: 'put' 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 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' 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({ return request({
url: `/api/v2/draft/training/${id}/step/update`, url: `/api/v2/draft/training/${group}/${trainingId}/step/update`,
method: 'put', method: 'put',
data: data data: data
}); });
@ -63,6 +64,22 @@ export function publishTraining(data) {
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) { export function updateTrainingContent(data) {
return request({ return request({
@ -81,7 +98,7 @@ export function getTrainingAll(trainingId) {
/** 单独更新当前用户的某个实训草稿的初始背景 */ /** 单独更新当前用户的某个实训草稿的初始背景 */
export function updateTrainingBackgroud(data) { export function updateTrainingBackgroud(data) {
return request({ return request({
url: `/api/v2/draft/training/update/content/backgroud`, url: `/api/v2/draft/training/update/content/background`,
method: 'post', method: 'post',
data data
}); });
@ -94,3 +111,51 @@ export function updateTrainingMaplocation(data) {
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', modify: 'modify',
delete: 'delete', delete: 'delete',
publish: 'publish', publish: 'publish',
publishTrack: 'track',
preview: 'preview', preview: 'preview',
mapLocation: 'Save map positioning', mapLocation: 'Save map positioning',
saveBackground: 'Save Background', saveBackground: 'Save Background',
@ -21,5 +22,11 @@ export default {
createStepInfo: 'Creating Procedure Information', createStepInfo: 'Creating Procedure Information',
editStepInfo: 'Modifying Step Information', editStepInfo: 'Modifying Step Information',
saveStepData: 'Save 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: '修改', modify: '修改',
delete: '删除', delete: '删除',
publish: '发布', publish: '发布',
publishTrack: '发布轨迹',
preview: '预览', preview: '预览',
mapLocation: '保存地图定位', mapLocation: '保存地图定位',
saveBackground: '保存背景', saveBackground: '保存背景',
@ -21,5 +22,11 @@ export default {
createStepInfo: '创建步骤信息', createStepInfo: '创建步骤信息',
editStepInfo: '修改步骤信息', editStepInfo: '修改步骤信息',
saveStepData: '保存步骤', saveStepData: '保存步骤',
roleSelect: '角色选择' roleSelect: '角色选择',
triggerCondition: '触发条件',
operateCondition: '关联操作',
completionCondition: '完成条件',
editCompletionCondition: '编辑完成条件',
editOperationCondition: '编辑运算条件',
gradeRules:'评分'
}; };

View File

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

View File

@ -299,6 +299,44 @@ class Iscs {
this.$painter.update(this.iscsDevice[psdCode]); 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 { } else {
const oDevice = this.iscsDevice[code]; const oDevice = this.iscsDevice[code];
if (oDevice && elem.dispose) { 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 checkSell2 from '@/assets/iscs_picture/check_sell2.png';
import checkSell2Lv from '@/assets/iscs_picture/check_sell2_lv.png'; import checkSell2Lv from '@/assets/iscs_picture/check_sell2_lv.png';
import checkSell2Hong from '@/assets/iscs_picture/check_sell2_hong.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 bgShowRoom from '@/assets/iscs_picture/bg-showroom.jpg';
import bgStand from '@/assets/iscs_picture/bg-stand.jpg'; import bgStand from '@/assets/iscs_picture/bg-stand.jpg';
import bgFasPlatformA from '@/assets/iscs_picture/fas_platform_a_bg.png'; import bgFasPlatformA from '@/assets/iscs_picture/fas_platform_a_bg.png';
@ -146,6 +146,8 @@ const pictureObj = {
checkArrowRightLv, checkArrowRightLv,
checkArrowRightHong, checkArrowRightHong,
checkArrowDouble, checkArrowDouble,
checkArrowDoubleLv,
checkArrowDoubleHong,
checkFlowCumulative, checkFlowCumulative,
checkSell, checkSell,
checkSell2, checkSell2,
@ -190,6 +192,7 @@ export default class Picture extends Group {
this._function = device.model.function; this._function = device.model.function;
this.z = device.model.z; this.z = device.model.z;
this.create(); this.create();
this.setState(this.model);
if (this.model.groupId) { if (this.model.groupId) {
this.createMouseEvent(); this.createMouseEvent();
} }
@ -232,6 +235,11 @@ export default class Picture extends Group {
this.model.point.x += dx; this.model.point.x += dx;
this.model.point.y += dy; this.model.point.y += dy;
} }
setState(model) {
if (model.picture) {
this.imageButton && this.imageButton.setStyle({image: pictureObj[model.picture]});
}
}
getBoundingRect() { getBoundingRect() {
const rect = this.imageButton.getBoundingRect().clone(); const rect = this.imageButton.getBoundingRect().clone();
rect.x = rect.x + this.model.point.x; 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 teststomp = new StompClient();
// let topic = '/user/topic/simulation/assistant/'+group; // 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}; let header = {'X-Token': token};
try { try {
teststomp.subscribe(topic, callback, header); teststomp.subscribe(topic, callback, header);

View File

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

View File

@ -177,7 +177,8 @@ export function jl3dFaultDeviceVr(dom,group,skinCode) {
let connectmsg = { let connectmsg = {
type:'init', type:'init',
baseurl:store.state.user.baseUrl, 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(), token:getToken(),
}; };
vrwebworker.postMessage(connectmsg); vrwebworker.postMessage(connectmsg);

View File

@ -175,7 +175,8 @@ export function Jl3dOtherVR(dom,group,skinCode) {
let connectmsg = { let connectmsg = {
type:'init', type:'init',
baseurl:store.state.user.baseUrl, 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(), token:getToken(),
}; };
otherVrViewWorker.postMessage(connectmsg); otherVrViewWorker.postMessage(connectmsg);

View File

@ -171,7 +171,8 @@ export function Jl3dTrainRescueVr(dom,group,skinCode) {
let connectmsg = { let connectmsg = {
type:'init', type:'init',
baseurl:store.state.user.baseUrl, 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(), token:getToken(),
}; };
vrwebworker.postMessage(connectmsg); vrwebworker.postMessage(connectmsg);

View File

@ -41,7 +41,8 @@ export function Maintainerconnect(jlmap3d,routegroup,jsonwebwork,lablecodemap) {
var datatype = '00'; var datatype = '00';
this.teststomp = new StompClient(); 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 header = {'X-Token': getToken() };
let connectmsg = { let connectmsg = {
type:'init', type:'init',

View File

@ -7,7 +7,8 @@ export function PassflowConnect(deviceaction,toptrain,downtrain,routegroup,passe
const scope = this; const scope = this;
this.teststomp = new StompClient(); 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 header = {'X-Token': getToken() };
socketon(topic); socketon(topic);

View File

@ -42,7 +42,8 @@ export function Jlmap3dSubscribeNew(jlmap3d,routegroup,jsonwebwork) {
var datatype = '00'; var datatype = '00';
this.teststomp = new StompClient(); 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 header = {'X-Token': getToken() };
let connectmsg = { let connectmsg = {
type:'init', type:'init',

View File

@ -7,7 +7,8 @@ export function silumationConnect(deviceaction,toptrain,downtrain,routegroup,pas
const scope = this; const scope = this;
this.teststomp = new StompClient(); this.teststomp = new StompClient();
let start = true; 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 header = {'X-Token': getToken() };
// scope.socketon(topic); // scope.socketon(topic);

View File

@ -7,7 +7,8 @@ export function PassflowConnect(deviceaction,toptrain,downtrain,routegroup,passe
const scope = this; const scope = this;
this.teststomp = new StompClient(); this.teststomp = new StompClient();
let start = true; 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 header = {'X-Token': getToken() };
socketon(topic); socketon(topic);

View File

@ -7,7 +7,8 @@ export function TrainConnect(trafficTrain,deviceaction,toptrain,routegroup,passe
const scope = this; const scope = this;
this.teststomp = new StompClient(); 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 header = {'X-Token': getToken() };
let restart = false; let restart = false;
socketon(topic); socketon(topic);

View File

@ -8,7 +8,8 @@ export function sandBoxConnect(manager,routegroup,section,signal,station,train )
let scope = this; let scope = this;
this.teststomp = new StompClient(); this.teststomp = new StompClient();
let start = true; 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 header = {'X-Token': getToken() };
let topswitch = false; let topswitch = false;
let downswitch = false; let downswitch = false;

View File

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

View File

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

View File

@ -166,7 +166,7 @@ class Painter {
updatePicture(device) { updatePicture(device) {
if (device) { if (device) {
try { try {
if (device._dispose) { if (device._pictureHide) {
this.delete(device); this.delete(device);
} else { } else {
device.instance && this.mapInstanceLevel[device._type].remove(device.instance); 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; // if (!this.isShowShape) return;
this.recover(); this.recover();
if (!store.getters['map/checkDeviceShow'](this._code)) { if (!store.getters['map/checkDeviceShow'](this._code)) {
this.arrow && this.arrow.hide();
} else {
this.arrow && this.arrow.show(); this.arrow && this.arrow.show();
} }
} }

View File

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

View File

@ -17,13 +17,13 @@ export default class ETriangle extends Group {
if (model && model.point) { if (model && model.point) {
const right = model.right == 1 ? 1 : -1; const right = model.right == 1 ? 1 : -1;
if (this.style.Section.trainPosition.specialShow) { if (this.style.Section.trainPosition.specialShow) {
this.stopRect = new Rect({ // 停车标识 this.openDoorRect = new Rect({ // 停车标识
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z, z: model.z,
shape: { shape: {
x: model.point.x - this.style.Section.trainPosition.stopTrainRectWidth, x: model.point.x - this.style.Section.trainPosition.stopTrainRectWidth,
y: model.point.y - this.style.Section.line.width / 4, 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 height: this.style.Section.line.width - 2
}, },
style: { style: {
@ -31,6 +31,20 @@ export default class ETriangle extends Group {
fill: 'rgba(26, 54, 88, 0.7)' 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({ this.angle1 = new Rect({
zlevel: model.zlevel, zlevel: model.zlevel,
z: model.z, z: model.z,
@ -64,8 +78,9 @@ export default class ETriangle extends Group {
}); });
this.add(this.angle1); this.add(this.angle1);
this.add(this.angle); this.add(this.angle);
this.add(this.openDoorRect);
this.add(this.stopRect); this.add(this.stopRect);
this.stopRect.hide(); this.openDoorRect.hide();
} else { } else {
this.angle = new Polygon({ this.angle = new Polygon({
zlevel: model.zlevel, zlevel: model.zlevel,
@ -136,18 +151,38 @@ export default class ETriangle extends Group {
}); });
this.angle1.dirty(); this.angle1.dirty();
} }
if (this.stopRect) { if (this.openDoorRect) {
const offset = (this.style.Section.trainPosition.specialRectWidth - this.style.Section.trainPosition.stopTrainRectWidth) / 2; const offset = (this.style.Section.trainPosition.specialRectWidth - this.style.Section.line.width) / 2;
let trainRight = model.x + offset; let trainRight = model.x + offset;
if (right == 1) { if (right == 1) {
trainRight = model.x - offset - this.style.Section.trainPosition.stopTrainRectWidth; trainRight = model.x - offset - this.style.Section.line.width + 2;
} }
const pointsData = { const pointsData = {
x: trainRight, x: trainRight,
y: model.y - this.style.Section.line.width / 4, y: model.y - this.style.Section.line.width / 4 - 1,
width: this.style.Section.trainPosition.stopTrainRectWidth, width: this.style.Section.line.width - 2,
height: 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({ this.stopRect.attr({
shape: pointsData shape: pointsData
}); });
@ -161,7 +196,6 @@ export default class ETriangle extends Group {
trainB.setPositionText(model, right); trainB.setPositionText(model, right);
} }
} }
setStopShow(flag) { setStopShow(flag) {
if (flag) { if (flag) {
this.stopRect && this.stopRect.show(); this.stopRect && this.stopRect.show();
@ -169,4 +203,11 @@ export default class ETriangle extends Group {
this.stopRect && this.stopRect.hide(); 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 store from '@/store/index';
import Circle from 'zrender/src/graphic/shape/Circle'; import Circle from 'zrender/src/graphic/shape/Circle';
import BoundingRect from 'zrender/src/core/BoundingRect'; import BoundingRect from 'zrender/src/core/BoundingRect';
import Vue from 'vue'; // import Vue from 'vue';
/** 车身*/ /** 车身*/
export default class TrainBody extends Group { export default class TrainBody extends Group {
@ -527,6 +527,9 @@ export default class TrainBody extends Group {
this.textTrainTrip.dirty(); this.textTrainTrip.dirty();
} }
if (this.textTrainGroup) { if (this.textTrainGroup) {
if (store.state.training.prdType === '10') {
widthText = 0;
}
this.textTrainGroup.attr({ this.textTrainGroup.attr({
style: { style: {
x: parseInt(point.x + widthText), 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.fontSize = model.nameFontSize || style.Train.common.trainTextFontSize;
this.newScale = this.fontSize / style.Train.common.trainTextFontSize; this.newScale = this.fontSize / style.Train.common.trainTextFontSize;
this.nameFormat = model.nameFormat || style.Train.trainBody.trainNameFormat; 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) => { style.Train.trainBody.specialTrainType.some((item) => {
if (model.type === item.type) { if (model.type === item.type) {
this.nameFormat = item.nameFormat; this.nameFormat = item.nameFormat;
@ -345,11 +347,14 @@ export default class Train extends Group {
if (status != undefined) { if (status != undefined) {
if (status) { if (status) {
this.trainB && this.trainB.setDShow(false); this.trainB && this.trainB.setDShow(false);
this.triangle && this.triangle.setOpenDoorShow(false);
} else { } else {
this.trainB && this.trainB.setDShow(true); this.trainB && this.trainB.setDShow(true);
this.triangle && this.triangle.setOpenDoorShow(true);
} }
} else { } else {
this.trainB && this.trainB.setDShow(false); this.trainB && this.trainB.setDShow(false);
this.triangle && this.triangle.setOpenDoorShow(false);
} }
} }
// 设置通信状态类型 // 设置通信状态类型

View File

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

View File

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

View File

@ -750,17 +750,36 @@ export const menuOperate = {
operation: OperationEvent.CTCCommand.setEndRunplan.menu.operation, operation: OperationEvent.CTCCommand.setEndRunplan.menu.operation,
cmdType: CMD.CTC.CTC_LOG_SET_END_RUN_PLAN 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:{ addTrainFixedPath:{
operation: OperationEvent.CTCCommand.addTrainFixedPath.menu.operation, operation: OperationEvent.CTCCommand.addTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_EDIT cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_SAVE
}, },
// 批量增加列车固定径路 // 批量增加列车固定径路
batchTrainFixedPath:{ batchTrainFixedPath:{
operation: OperationEvent.CTCCommand.batchTrainFixedPath.menu.operation, operation: OperationEvent.CTCCommand.batchTrainFixedPath.menu.operation,
cmdType: CMD.CTC.CTC_REGULAR_TRAIN_LINE_BATCH 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:{ importTrainFixedPath:{
@ -792,6 +811,11 @@ export const menuOperate = {
operation: OperationEvent.CTCCommand.modifyStationTrack.menu.operation, operation: OperationEvent.CTCCommand.modifyStationTrack.menu.operation,
cmdType: CMD.CTC.CTC_STATION_DETAIL_EDIT cmdType: CMD.CTC.CTC_STATION_DETAIL_EDIT
}, },
// 编辑股道信息
editStationTrack:{
operation: OperationEvent.CTCCommand.modifyStationTrack.edit.operation,
cmdType: CMD.CTC.CTC_STATION_DETAIL_EDIT
},
// 股道发布生效区 // 股道发布生效区
releaseStationTrack:{ releaseStationTrack:{
operation: OperationEvent.CTCCommand.releaseStationTrack.menu.operation, operation: OperationEvent.CTCCommand.releaseStationTrack.menu.operation,
@ -878,6 +902,12 @@ export const menuOperate = {
operation: OperationEvent.RailCommand.railQueryRegister.menu.operation, operation: OperationEvent.RailCommand.railQueryRegister.menu.operation,
cmdType: CMD.RAIL.CMD_RAIL_QUERY_REGISTER 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 = {}) { export function commitOperate(operate, paramList, over, fillStep = {}) {
const step = { const step = {
start: true, start: true,
userOperationType: operate.userOperationType || 'leftClick',
operation: operate.operation, operation: operate.operation,
param:{} param:{}
}; };

View File

@ -232,10 +232,10 @@ export default {
this.guideLockLeftFlag = false; this.guideLockLeftFlag = false;
}, },
'$store.state.socket.simulationTimeSync': function (val) { '$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) { if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate(); 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') { 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}]); 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') { } 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 = []; 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() { beforeDestroy() {
@ -404,7 +417,7 @@ export default {
if (!this.routeDataMap) { this.handleRouteDataMap(); } if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮'); // this.$message.error('');
this.clearOperate(); this.clearOperate();
return; return;
} }

View File

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

View File

@ -196,9 +196,6 @@ export default {
EventBus.$on('bottomTableShowOrHidden', () => { EventBus.$on('bottomTableShowOrHidden', () => {
this.showTable = !this.showTable; this.showTable = !this.showTable;
}); });
// if (this.stationList && this.stationList.length) {
// this.stationCode = this.stationList[0].code;
// }
}, },
methods: { methods: {
doShow() { doShow() {
@ -211,6 +208,7 @@ export default {
initShowStationList(val) { initShowStationList(val) {
if (val) { if (val) {
const centralizedStation = this.$store.getters['map/getDeviceByCode'](val); const centralizedStation = this.$store.getters['map/getDeviceByCode'](val);
if (centralizedStation) {
const sn = centralizedStation.sn; const sn = centralizedStation.sn;
this.showStationList = [centralizedStation]; this.showStationList = [centralizedStation];
this.stationCode = centralizedStation.code; this.stationCode = centralizedStation.code;
@ -222,6 +220,7 @@ export default {
} }
}); });
} }
}
}, },
getRouteStatus(status) { getRouteStatus(status) {
if (status === '2') { 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" :modal="false"
:title="title" :title="title"
:close-on-click-modal="false" :close-on-click-modal="false"
append-to-body
> >
<!-- 密码校验 --> <!-- 密码校验 -->
<el-row> <el-row>
@ -130,9 +129,11 @@ export default {
doShow(operate, title) { doShow(operate, title) {
this.title = title; this.title = title;
this.operate = operate || {}; this.operate = operate || {};
this.operation = operate.operation;
if (operate.operateNext) { if (operate.operateNext) {
console.log(this.operation , operate.operation)
this.operation = operate.operateNext; this.operation = operate.operateNext;
} else {
this.operation = operate.operation;
} }
this.dialogShow = true; this.dialogShow = true;
this.checkHasInput = false; this.checkHasInput = false;

View File

@ -10,11 +10,11 @@
:modal="false" :modal="false"
:close-on-click-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 v-for="(temp,index) in tempTable" :key="index" class="eachShunt">
<div class="shuntingName">{{ temp.name }}</div> <div class="shuntingName">{{ temp.name }}</div>
<div class="shuntingSelected"> <div class="shuntingSelected">
<el-checkbox v-model="temp.selected" size="medium" /> <el-checkbox v-model="temp.selected" size="medium" @change="changeShuntingTypeList" />
</div> </div>
</div> </div>
</div> </div>
@ -56,6 +56,9 @@ export default {
}, },
domIdConfirm() { domIdConfirm() {
return this.dialogShow ? OperationEvent.Section.defectiveShunting.confirm.domId : ''; return this.dialogShow ? OperationEvent.Section.defectiveShunting.confirm.domId : '';
},
domIdChange() {
return this.dialogShow ? OperationEvent.Section.defectiveShunting.shuntingTypeListChange.domId : '';
} }
}, },
methods:{ methods:{
@ -84,6 +87,22 @@ export default {
this.dialogShow = false; this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh'); 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() { commit() {
const shuntingTypeList = []; const shuntingTypeList = [];
this.tempTable.forEach(each=>{ this.tempTable.forEach(each=>{
@ -93,9 +112,9 @@ export default {
}); });
const operate = { const operate = {
over: true, over: true,
code:this.sectionCode,
cmdType:CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING, cmdType:CMD.Section.CMD_SECTION_DEFECTIVE_SHUNTING,
operation: OperationEvent.Section.defectiveShunting.confirm.operation, operation: OperationEvent.Section.defectiveShunting.confirm.operation,
userOperationType: 'leftClick',
param:{ param:{
sectionCode:this.sectionCode, sectionCode:this.sectionCode,
shuntingTypeList:shuntingTypeList shuntingTypeList:shuntingTypeList
@ -104,6 +123,7 @@ export default {
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.doClose(); this.doClose();
this.$emit('clearOperate');
} }
}).catch((error) => { this.doClose(); this.$refs.noticeInfo.doShow(); console.log(error); }); }).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) { if (this.mapData && this.mapData.skinVO) {
const parser = parserFactory(ParserType.Graph.value); const parser = parserFactory(ParserType.Graph.value);
this.mapDevice = parser.parser(this.mapData, this.mapData.skinVO.code, this.map.getShowConfig()); this.mapDevice = parser.parser(this.mapData, this.mapData.skinVO.code, this.map.getShowConfig());
console.log('parsed mapDevice', this.mapDevice)
} }
}, },
loadData() { 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>
<div class="row"> <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>
<div class="wrapper"> <div class="wrapper">
<div class="list" style="width: 60%;"> <div class="list" style="width: 60%;">
@ -92,6 +95,9 @@ export default {
data() { data() {
return { return {
show: false, show: false,
form: {
station: 'shenyang',
},
} }
}, },
methods: { 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() { commit() {
if (this.route) { if (this.route) {
this.loading = true; this.loading = true;
const type = this.route.lock ? menuOperate.Signal.cancelTrainRoute : menuOperate.Signal.arrangementRoute; const type = this.route.lock ? menuOperate.Signal.cancelTrainRoute : menuOperate.CTC.setRoute;
const param = this.route.lock ? { signalCode: this.route.startSignalCode } : { routeCode:this.route.code }; 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})=>{ commitOperate(type, param, 3).then(({valid, operate})=>{
this.loading = false; this.loading = false;
if (valid) { 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 style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div> </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: 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 style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div> </div>
@ -96,8 +96,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm'; import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control'; import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout'; import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date'; import { timestampFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import BottomTable from './bottomTable'; import BottomTable from './bottomTable';
import MenuPanel from './menuPanel'; import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png'; 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 CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png'; import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png'; import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue'; import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue'; import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
import {getRunplanInStation} from '@/api/runplan'; import {getRunplanInStation} from '@/api/runplan';
import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config'; import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
@ -227,14 +226,13 @@ export default {
return this.$route.query.dispatcherStation; return this.$route.query.dispatcherStation;
} }
}, },
watch: { watch: { // tipContentList
isShowBar(val) { isShowBar(val) {
val && this.$store.dispatch('config/updateMenuBar'); val && this.$store.dispatch('config/updateMenuBar');
}, },
'$store.state.socket.simulationTimeSync': function (time) { // 仿 '$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.$store.dispatch('training/setInitTime', time);
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.initDate(time);
this.initDate(date);
}, },
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) { '$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) { if (this.isCtc) {
@ -271,6 +269,9 @@ export default {
} }
} }
}); });
},
'$store.state.socket.simulationReset':function(val) {
this.tipContentList = [];
} }
// // // //
// '$store.state.map.mapViewLoadedCount': function (val) { // // '$store.state.map.mapViewLoadedCount': function (val) { //
@ -305,12 +306,12 @@ export default {
this.$store.dispatch('map/setPictureDeviceMap', {}); this.$store.dispatch('map/setPictureDeviceMap', {});
}, },
methods: { methods: {
changeSignedStatus(info) { // changeSignedStatus(info) {
this.$refs.cmdManage.changeSignedStatus(info); // this.$refs.cmdManage.changeSignedStatus(info);
}, // },
signedCmdClose() { // signedCmdClose() {
this.$refs.cmdManage.doShow(); // this.$refs.cmdManage.doShow();
}, // },
getRunplanInStationData() { getRunplanInStationData() {
getRunplanInStation(this.group).then(response => { getRunplanInStation(this.group).then(response => {
// debugger; // debugger;
@ -424,14 +425,9 @@ export default {
} }
}, },
initDate(date) { initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`; this.time = timestampFormat('HH:mm:ss', date)
const years = date.getFullYear() + ''; this.dateString = timestampFormat('YYYYMMDD', date)
let months = date.getMonth() + 1 + ''; this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
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 + '日';
}, },
handleRunplan() { handleRunplan() {
this.$refs.runplanPane.doShow(); this.$refs.runplanPane.doShow();

View File

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

View File

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

View File

@ -265,16 +265,21 @@ export default {
}, },
'$store.state.menuOperation.menuCount': function (val) { '$store.state.menuOperation.menuCount': function (val) {
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Cancel)) { 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); this.$refs && this.$refs.popMenu && this.$refs.popMenu.resetShowPosition(this.$store.state.menuOperation.menuPosition);
} else { } else {
this.$refs && this.$refs.popMenu && this.$refs.popMenu.close(); this.$refs && this.$refs.popMenu && this.$refs.popMenu.close();
} }
}, },
'$store.state.socket.simulationTimeSync': function (val) { '$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) { if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate(); 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') { 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}]); 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') { } 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) { if (data.nextCmdType) {
operate = { operate = {
over: true, over: true,
userOperationType: 'leftClick',
operation: data.operation, operation: data.operation,
cmdType: data.nextCmdType, cmdType: data.nextCmdType,
param: data.param param: data.param
}; };
} else { } else {
operate = { operate = {
userOperationType: 'leftClick',
operationPre: data.operation, operationPre: data.operation,
operation: data.operateNext operation: data.operateNext
}; };
@ -368,6 +375,7 @@ export default {
// S // S
guideLockLeftButtonDown() { guideLockLeftButtonDown() {
const operate = { const operate = {
userOperationType: 'leftClick',
operation: this.Switch.guideLock.leftButton.operation operation: this.Switch.guideLock.leftButton.operation
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -384,6 +392,7 @@ export default {
// X // X
guideLockRightButtonDown() { guideLockRightButtonDown() {
const operate = { const operate = {
userOperationType: 'leftClick',
operation: this.Switch.guideLock.rightButton.operation operation: this.Switch.guideLock.rightButton.operation
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -403,6 +412,7 @@ export default {
this.clearOperate(); this.clearOperate();
if (operation != this.Command.cancel.clearMbm.operation) { if (operation != this.Command.cancel.clearMbm.operation) {
const operate = { const operate = {
userOperationType: 'leftClick',
operation: operation operation: operation
}; };
// 684 // 684
@ -430,6 +440,7 @@ export default {
// //
const operate = { const operate = {
start: true, start: true,
userOperationType: 'leftClick',
operation: operation operation: operation
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
@ -467,6 +478,7 @@ export default {
handelReopenSignal(device) { handelReopenSignal(device) {
const operate = { const operate = {
operation: this.Signal.reopenSignal.button.operation, operation: this.Signal.reopenSignal.button.operation,
userOperationType: 'leftClick',
code: device.code, code: device.code,
param: { signalCode: device.code } param: { signalCode: device.code }
}; };
@ -475,10 +487,10 @@ export default {
}, },
// //
arrangementRouteOperation(deviceList) { 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.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮'); // this.$message.error('');
this.clearOperate(); this.clearOperate();
return; return;
} }
@ -543,6 +555,7 @@ export default {
const operate = { const operate = {
code: model.code, code: model.code,
operation: this.$store.state.menuOperation.buttonOperation, operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
param: { param: {
signalCode: model._type === 'Signal' ? model.code : model.signalCode signalCode: model._type === 'Signal' ? model.code : model.signalCode
} }
@ -557,6 +570,7 @@ export default {
const operate = { const operate = {
code: model.code, code: model.code,
operation: this.Signal.guide.button.operation, operation: this.Signal.guide.button.operation,
userOperationType: 'leftClick',
param: {signalCode: model.signalCode} param: {signalCode: model.signalCode}
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -570,6 +584,7 @@ export default {
const operate = { const operate = {
code: model.code, code: model.code,
operation: this.$store.state.menuOperation.buttonOperation, operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
val: model.code, val: model.code,
param: { signalCode: model.code } param: { signalCode: model.code }
}; };
@ -582,6 +597,7 @@ export default {
const operate = { const operate = {
code: model.code, code: model.code,
operation: this.$store.state.menuOperation.buttonOperation, operation: this.$store.state.menuOperation.buttonOperation,
userOperationType: 'leftClick',
param: { switchCode: model.code} param: { switchCode: model.code}
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -641,6 +657,7 @@ export default {
const operate = { const operate = {
code: model.code, code: model.code,
operation: this.Signal.guide.button.operation, operation: this.Signal.guide.button.operation,
userOperationType: 'leftClick',
param: {signalCode: model.signalCode} param: {signalCode: model.signalCode}
}; };
this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
@ -673,7 +690,7 @@ export default {
// this.handleGuideLock(model); // this.handleGuideLock(model);
// this.handleGuideSignal(model); // this.handleGuideSignal(model);
// } else // } else
debugger; // debugger;
if (buttonOperation && this.commandTypeList.includes(model._type)) { if (buttonOperation && this.commandTypeList.includes(model._type)) {
if (buttonOperation === this.MixinCommand.totalCancel.button.operation) { if (buttonOperation === this.MixinCommand.totalCancel.button.operation) {
this.handelTotalCancel(model); this.handelTotalCancel(model);
@ -747,7 +764,7 @@ export default {
this.$store.dispatch('menuOperation/setButtonOperation', this.operation); this.$store.dispatch('menuOperation/setButtonOperation', this.operation);
}, },
routeCommit(trainCode, duration) { 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.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate(); this.clearOperate();
}).catch((e) => { }).catch((e) => {
@ -766,7 +783,7 @@ export default {
this.routeCommit(); this.routeCommit();
} }
} else if (this.operation === OperationEvent.MixinCommand.totalCancel.button.operation) { } 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.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate(); this.clearOperate();
}).catch((e) => { }).catch((e) => {
@ -774,7 +791,7 @@ export default {
this.clearOperate(); this.clearOperate();
}); });
} else if (this.operation === OperationEvent.Signal.reopenSignal.button.operation) { } 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.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
this.clearOperate(); this.clearOperate();
}).catch(() => { }).catch(() => {
@ -782,7 +799,7 @@ export default {
this.clearOperate(); this.clearOperate();
}); });
} else if (this.operation === OperationEvent.Signal.guide.button.operation) { } 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/nextNew', operate).then(({ valid, response }) => {
this.$store.dispatch('training/updateMapState', [{code: this.selected.code, _type: this.selected._type, hasSelected: 0}]); this.$store.dispatch('training/updateMapState', [{code: this.selected.code, _type: this.selected._type, hasSelected: 0}]);
this.clearOperate(); this.clearOperate();
@ -792,13 +809,13 @@ export default {
this.clearOperate(); this.clearOperate();
}); });
} else if (this.operation === OperationEvent.Signal.humanTrainRoute.button.operation) { } 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 }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
}).catch((e) => { }).catch((e) => {
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow();
}).finally(() => { this.clearOperate(); }); }).finally(() => { this.clearOperate(); });
} else if (this.switchOperation.includes(this.operation)) { } 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 }) => { this.$store.dispatch('training/nextNew', operate).then(({ valid, response }) => {
}).catch(() => { }).catch(() => {
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow();
@ -885,6 +902,7 @@ export default {
const operate = { const operate = {
over:true, over:true,
operation: noPasswordModelTypeMap[model.type].operation, operation: noPasswordModelTypeMap[model.type].operation,
userOperationType: 'leftClick',
code: model.code, code: model.code,
param: noPasswordModelTypeMap[model.type].param, param: noPasswordModelTypeMap[model.type].param,
cmdType : noPasswordModelTypeMap[model.type].nextCmdType cmdType : noPasswordModelTypeMap[model.type].nextCmdType
@ -903,6 +921,7 @@ export default {
} else { } else {
const operate = { const operate = {
operation: modelTypeMap[model.type].operation, operation: modelTypeMap[model.type].operation,
userOperationType: 'leftClick',
code: model.code, code: model.code,
param: modelTypeMap[model.type].param 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" /> <notice-info ref="noticeInfo" pop-class="chengdou-03__systerm" />
<BoardViewSetting ref="boardViewSetting" /> <BoardViewSetting ref="boardViewSetting" />
<RailViewSetting ref="railViewSetting" /> <RailViewSetting ref="railViewSetting" />
<PowerSupplyArmSetting ref="powerSupplyArmSetting" />
<BlockDevice ref="blockDevice" />
<RegionBatchOperation ref="regionBatchOperation" />
<StationTrainManage ref="stationTrainManage" />
<OperationLogQuery ref="operationLogQuery" />
<InfoDialog ref="infoDialog" />
</div> </div>
</template> </template>
@ -49,6 +55,12 @@ import { EventBus } from '@/scripts/event-bus'
import SettingsMenu from './components/menu.vue' import SettingsMenu from './components/menu.vue'
import BoardViewSetting from './dialog/boardViewSetting.vue' import BoardViewSetting from './dialog/boardViewSetting.vue'
import RailViewSetting from './dialog/railViewSetting.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 { export default {
name: 'MenuPanel', name: 'MenuPanel',
@ -57,6 +69,12 @@ export default {
SettingsMenu, SettingsMenu,
BoardViewSetting, BoardViewSetting,
RailViewSetting, RailViewSetting,
PowerSupplyArmSetting,
BlockDevice,
RegionBatchOperation,
StationTrainManage,
OperationLogQuery,
InfoDialog,
}, },
data() { data() {
return { return {
@ -82,22 +100,38 @@ export default {
{ {
label: '调车参数配置', label: '调车参数配置',
id: 'shuntingParam', id: 'shuntingParam',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }], children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
}, },
{ {
label: '调车优先级配置', label: '调车优先级配置',
id: 'shuntingPriority', id: 'shuntingPriority',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }], children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
}, },
{ {
label: '调车规则配置', label: '调车规则配置',
id: 'shuntingRule', id: 'shuntingRule',
children: [{ label: '标准站', id: 'std' }, { label: '标准甲站', id: 'std1' }, { label: '标准乙站', id: 'std2' }], children: [
{ label: '标准站', id: 'Station58852' },
{ label: '标准甲站', id: 'Station32295' },
{ label: '标准丙站', id: 'Station47980' },
],
}, },
{ {
label: '功能按钮设置', label: '功能按钮设置',
id: 'functionButton', 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: 'UIDisplay' },
{ label: '报警提示设置', id: 'alarm' }, { label: '报警提示设置', id: 'alarm' },
@ -106,12 +140,39 @@ export default {
T3MenuItems: [ T3MenuItems: [
{ label: '设置供电臂状态', id: 'powerSupplyArm', ctc: true }, { label: '设置供电臂状态', id: 'powerSupplyArm', ctc: true },
{ label: '封锁设备操作', id: 'blockedDeviceOperation', ctc: true }, { label: '封锁设备操作', id: 'blockedDeviceOperation', ctc: true },
{ label: '区域批量设备操作', id: 'regionBatchOperation', children: [{}], ctc: true }, {
{ label: '站存车管理', id: 'stationTrainManage', children: [{}], ctc: true }, label: '区域批量设备操作',
{ label: '设备影响分析', id: 'deviceAffectAnalyze', children: [{}], ctc: true }, id: 'regionBatchOperation',
{ label: '操作日志查询', id: 'operationLog', ctc: true }, ctc: true,
{ label: '防溜设置查询', id: 'deviceAffectAnalyze', ctc: true }, children: [
{ label: '设备影响分析', id: 'deviceAffectAnalyze', ctc: true }, { 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) { handleT3MenuSelect(id) {
console.log(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() { dragEvent() {
const offset = this.offset const offset = this.offset

View File

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

View File

@ -581,8 +581,7 @@ import Rpb from '@/assets/ctc_icon/rpb.png';
import Rpwp from '@/assets/ctc_icon/rpwp.png'; import Rpwp from '@/assets/ctc_icon/rpwp.png';
import Rph from '@/assets/ctc_icon/rph.png'; import Rph from '@/assets/ctc_icon/rph.png';
import RpAdd from '@/assets/ctc_icon/rpadd.png'; import RpAdd from '@/assets/ctc_icon/rpadd.png';
import { timeFormat } from '@/utils/date'; import { timestampFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SendRunplan from './dialog/sendRunplan'; import SendRunplan from './dialog/sendRunplan';
import StageRunplan from './dialog/stageRunplan'; import StageRunplan from './dialog/stageRunplan';
@ -594,8 +593,8 @@ import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuO
import { copyAssign } from '@/utils/index'; import { copyAssign } from '@/utils/index';
import { mapGetters, mapState } from 'vuex'; import { mapGetters, mapState } from 'vuex';
import { transfiniteList } from '@/scripts/ConstDic'; import { transfiniteList } from '@/scripts/ConstDic';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue'; import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue'; import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default { export default {
name:'RunplanPane', name:'RunplanPane',
components: { components: {
@ -664,9 +663,8 @@ export default {
}, },
watch:{ watch:{
'$store.state.socket.simulationTimeSync': function (time) { // 仿 '$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.$store.dispatch('training/setInitTime', time);
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.initDate(time);
this.initDate(date);
}, },
'$store.state.training.roleDeviceCode':function(newVal, oldVal) { '$store.state.training.roleDeviceCode':function(newVal, oldVal) {
if (oldVal) { if (oldVal) {
@ -706,14 +704,9 @@ export default {
} }
}, },
initDate(date) { initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`; this.time = timestampFormat('HH:mm:ss', date)
const years = date.getFullYear() + ''; this.dateString = timestampFormat('YYYYMMDD', date)
let months = date.getMonth() + 1 + ''; this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
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 + '日';
}, },
judgeColor({row, rowIndex}) { judgeColor({row, rowIndex}) {
if (row.effect) { 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: "1", trainingType: "ControlConvertMenu", name: "车站名称"}
// {id: "2", trainingType: "ControlConvertMenu", name: "车站控制模式编号"} // {id: "2", trainingType: "ControlConvertMenu", name: "车站控制模式编号"}
// {id: "3", trainingType: "Signal", name: "进路名称"} // {id: "3", trainingType: "Signal", name: "进路名称"}
@ -46,83 +35,6 @@
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default { export default {
list: [ 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, maxDuration: 15,
minDuration: 8, minDuration: 8,
@ -133,54 +45,8 @@ export default {
trainingType: 'Signal', trainingType: 'Signal',
productTypes: ['01'], productTypes: ['01'],
stepVOList: [ stepVOList: [
{ deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【排列进路】' }, { deviceType: '04', orderNum: 1, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' },
{ deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'START_SIGNAL' }, { deviceType: '04', orderNum: 2, operateCode: '3010', tip: '鼠标左键点击【{5}】', codeType:'END_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: '鼠标左键点击【确定】按钮' }
] ]
}, },
{ {
@ -196,226 +62,6 @@ export default {
{ deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' }, { deviceType: '04', orderNum: 1, operateCode: '2994', tip: '鼠标左键点击【总取消】' },
{ deviceType: '04', orderNum: 2, operateCode: '2994', tip: '鼠标左键点击【{5}】', codeType:'SIGNAL' } { 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, maxDuration: 15,
@ -427,24 +73,10 @@ export default {
trainingType: 'Switch', trainingType: 'Switch',
productTypes: ['01'], productTypes: ['01'],
stepVOList: [ 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' } { 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, maxDuration: 15,
minDuration: 8, minDuration: 8,
@ -455,491 +87,9 @@ export default {
trainingType: 'Switch', trainingType: 'Switch',
productTypes: ['01'], productTypes: ['01'],
stepVOList: [ 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' } { 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 style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div> </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: 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 style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div> </div>
@ -80,8 +80,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm'; import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control'; import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout'; import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date'; import { timestampFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import BottomTable from './bottomTable'; import BottomTable from './bottomTable';
import MenuPanel from './menuPanel'; import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png'; 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 CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png'; import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png'; import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue'; import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue'; import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default { export default {
name: 'Menus', name: 'Menus',
@ -210,9 +209,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar'); val && this.$store.dispatch('config/updateMenuBar');
}, },
'$store.state.socket.simulationTimeSync': function (time) { // 仿 '$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.$store.dispatch('training/setInitTime', time);
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.initDate(time);
this.initDate(date);
}, },
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) { '$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) { if (this.isCtc) {
@ -273,14 +271,9 @@ export default {
} }
}, },
initDate(date) { initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`; this.time = timestampFormat('HH:mm:ss', date)
const years = date.getFullYear() + ''; this.dateString = timestampFormat('YYYYMMDD', date)
let months = date.getMonth() + 1 + ''; this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
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 + '日';
}, },
handleRunplan() { handleRunplan() {
this.$refs.runplanPane.doShow(); this.$refs.runplanPane.doShow();

View File

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

View File

@ -269,10 +269,10 @@ export default {
} }
}, },
'$store.state.socket.simulationTimeSync': function (val) { '$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) { if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate(); 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') { 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}]); 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') { } 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 }; const operate = { operation: this.Signal.arrangementRoute.button.operation };
if (!this.routeDataMap) { this.handleRouteDataMap(); } if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮'); // this.$message.error('');
this.clearOperate(); this.clearOperate();
return; return;
} }

View File

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

View File

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

View File

@ -515,8 +515,8 @@ import ModifyTripNumber from './dialog/modifyTripNumber';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate'; import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
import { copyAssign } from '@/utils/index'; import { copyAssign } from '@/utils/index';
import { mapGetters, mapState } from 'vuex'; import { mapGetters, mapState } from 'vuex';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue'; import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue'; import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default { export default {
name:'RunplanPane', name:'RunplanPane',
components: { 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 style="width: 200px;height: 25px;border: 2px #D1D1D1 inset;line-height: 21px;text-align: center;margin-left: 5px;">与中心通信正常</div>
</div> </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: 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 style="width: 40%;height: 30px;line-height: 30px;text-align: center;border-left: 2px #ccc solid;">{{ '操控A:主机' + ' ' + dateString + ' ' + time }}</div>
</div> </div>
@ -80,8 +80,7 @@ import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'
import PassiveAlarm from './passiveDialog/alarm'; import PassiveAlarm from './passiveDialog/alarm';
import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control'; import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/control';
import PassiveTimeout from './passiveDialog/timeout'; import PassiveTimeout from './passiveDialog/timeout';
import { timeFormat } from '@/utils/date'; import { timestampFormat } from '@/utils/date';
import { prefixIntrger } from '@/utils/date';
import BottomTable from './bottomTable'; import BottomTable from './bottomTable';
import MenuPanel from './menuPanel'; import MenuPanel from './menuPanel';
import CtcBarIcon1 from '@/assets/ctc_icon/pic1.png'; 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 CtcBarIcon16 from '@/assets/ctc_icon/pic16.png';
import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png'; import CtcBarIcon17 from '@/assets/ctc_icon/pic17.png';
import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png'; import CtcBarIcon18 from '@/assets/ctc_icon/pic18.png';
import cmdManage from '@/views/dispatcherStationManage/cmdManage.vue'; import cmdManage from '@/jmapNew/theme/components/menus/dialog/cmdManage.vue';
import signedCmd from '@/views/dispatcherStationManage/signedCmd.vue'; import signedCmd from '@/jmapNew/theme/components/menus/dialog/signedCmd.vue';
export default { export default {
name: 'Menus', name: 'Menus',
@ -210,9 +209,8 @@ export default {
val && this.$store.dispatch('config/updateMenuBar'); val && this.$store.dispatch('config/updateMenuBar');
}, },
'$store.state.socket.simulationTimeSync': function (time) { // 仿 '$store.state.socket.simulationTimeSync': function (time) { // 仿
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.$store.dispatch('training/setInitTime', time);
const date = new Date(+new Date(`${new Date().toLocaleDateString()} ${timeFormat(time)}`)); this.initDate(time);
this.initDate(date);
}, },
'$store.state.socket.railwaySimulationRunplanSendChange': function (val) { '$store.state.socket.railwaySimulationRunplanSendChange': function (val) {
if (this.isCtc) { if (this.isCtc) {
@ -273,14 +271,9 @@ export default {
} }
}, },
initDate(date) { initDate(date) {
this.time = `${prefixIntrger(date.getHours(), 2)}:${prefixIntrger(date.getMinutes(), 2)}:${prefixIntrger(date.getSeconds(), 2)}`; this.time = timestampFormat('HH:mm:ss', date)
const years = date.getFullYear() + ''; this.dateString = timestampFormat('YYYYMMDD', date)
let months = date.getMonth() + 1 + ''; this.dateString1 = timestampFormat('YYYY年MM月DD日', date)
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 + '日';
}, },
handleRunplan() { handleRunplan() {
this.$refs.runplanPane.doShow(); this.$refs.runplanPane.doShow();

View File

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

View File

@ -269,10 +269,10 @@ export default {
} }
}, },
'$store.state.socket.simulationTimeSync': function (val) { '$store.state.socket.simulationTimeSync': function (val) {
if (this.timeNode && val - this.timeNode >= 15) { if (this.timeNode && val - this.timeNode >= 15000) {
this.clearOperate(); 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') { 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}]); 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') { } 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 }; const operate = { operation: this.Signal.arrangementRoute.button.operation };
if (!this.routeDataMap) { this.handleRouteDataMap(); } if (!this.routeDataMap) { this.handleRouteDataMap(); }
if (!this.checkHaveRoute(deviceList)) { // deviceList if (!this.checkHaveRoute(deviceList)) { // deviceList
this.$message.error('无效的进路按钮'); // this.$message.error('');
this.clearOperate(); this.clearOperate();
return; return;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,24 +1,12 @@
export default { export default {
ConstSelect: { ConstSelect: {
Status: [ Status: [{ label: '无效', value: '0' }, { label: '有效', value: '1' }],
{ label: '无效', value: '0' },
{ label: '有效', value: '1' }
],
Whether: [ Whether: [{ label: '否', value: false }, { label: '是', value: true }],
{ label: '否', value: false },
{ label: '是', value: true }
],
DirectionCodeList: [ DirectionCodeList: [{ value: '2', label: '上行' }, { value: '1', label: '下行' }],
{ value: '2', label: '上行' },
{ value: '1', label: '下行' }
],
SignalLeftOrRightList: [ SignalLeftOrRightList: [{ label: '左侧', value: 'L' }, { label: '右侧', value: 'R' }],
{ label: '左侧', value: 'L' },
{ label: '右侧', value: 'R' }
],
roleList: [ roleList: [
{ label: '实训用户', value: '01' }, { label: '实训用户', value: '01' },
@ -26,20 +14,17 @@ export default {
{ label: '课程生成者', value: '03' }, { label: '课程生成者', value: '03' },
{ label: '系统管理员', value: '04' }, { label: '系统管理员', value: '04' },
{ label: '超级管理员', value: '05' }, { label: '超级管理员', value: '05' },
{ label: '销售用户', value: '06' } { label: '销售用户', value: '06' },
], ],
examResultList: [ examResultList: [
{ label: '未计算', value: '01' }, { label: '未计算', value: '01' },
{ label: '通过', value: '02' }, { label: '通过', value: '02' },
{ label: '未通过', value: '03' }, { label: '未通过', value: '03' },
{ label: '已放弃', value: '04' } { label: '已放弃', value: '04' },
], ],
PermissionUseList: [ PermissionUseList: [{ label: '公用', value: true }, { label: '专用', value: false }],
{ label: '公用', value: true },
{ label: '专用', value: false }
],
RegionTypeList: [ RegionTypeList: [
{ label: '零点西上行', value: '01' }, { label: '零点西上行', value: '01' },
@ -60,59 +45,56 @@ export default {
{ label: 'SHZ一联段线', value: '16' }, { label: 'SHZ一联段线', value: '16' },
{ label: 'SHZ二联段线', value: '17' }, { label: 'SHZ二联段线', value: '17' },
{ label: 'SHD三联段线', value: '18' }, { label: 'SHD三联段线', value: '18' },
{ label: 'SHD四联段线', value: '19' } { label: 'SHD四联段线', value: '19' },
], ],
roleTypeNew:[ roleTypeNew: [
{label: '管理员', value: 'ADMIN', enLabel: 'Admin '}, { label: '管理员', value: 'ADMIN', enLabel: 'Admin ' },
{label: '教员', value: 'Instructor', enLabel: 'Instructor '}, { label: '教员', value: 'Instructor', enLabel: 'Instructor ' },
{label: '行值', value: 'STATION_SUPERVISOR', enLabel: 'Attendant '}, { label: '行值', value: 'STATION_SUPERVISOR', enLabel: 'Attendant ' },
{label: '观众', value: 'AUDIENCE', enLabel: 'Audience '}, { label: '观众', value: 'AUDIENCE', enLabel: 'Audience ' },
{label: '司机', value: 'DRIVER', enLabel: 'Driver '}, { label: '司机', value: 'DRIVER', enLabel: 'Driver ' },
{label: '通号', value: 'MAINTAINER', enLabel: 'Repairman '}, { label: '通号', value: 'MAINTAINER', enLabel: 'Repairman ' },
{label: '车辆段信号楼', value: 'DEPOT_DISPATCHER', enLabel: 'Depot dispatcher '}, { label: '车辆段信号楼', value: 'DEPOT_DISPATCHER', enLabel: 'Depot dispatcher ' },
{label: '电力调度', value: 'ELECTRIC_DISPATCHER', enLabel: 'Electric dispatcher'}, { label: '电力调度', value: 'ELECTRIC_DISPATCHER', enLabel: 'Electric dispatcher' },
{label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '}, { label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher ' },
{label: '上级部门', value: 'PARENT_DEPARTMENT', enLabel: 'Parent department'}, { label: '上级部门', value: 'PARENT_DEPARTMENT', enLabel: 'Parent department' },
{label: '停车场信号楼', value: 'PARKING_LOT_SIGNAL_BUILDING', enLabel: 'Parking Signal Building'}, { label: '停车场信号楼', value: 'PARKING_LOT_SIGNAL_BUILDING', enLabel: 'Parking Signal Building' },
{label: '车站助理', value: 'STATION_ASSISTANT', enLabel: 'StationAssistant'}, { label: '车站助理', value: 'STATION_ASSISTANT', enLabel: 'StationAssistant' },
{label: '车站站长', value: 'STATION_MASTER', enLabel: 'StationMaster'}, { label: '车站站长', value: 'STATION_MASTER', enLabel: 'StationMaster' },
{label: '车站信号员', value: 'STATION_SIGNALER', enLabel: 'StationSignaler'}, { label: '车站信号员', value: 'STATION_SIGNALER', enLabel: 'StationSignaler' },
{label: '车站客运员', value: 'STATION_PASSENGER', enLabel: 'StationPassenger'}, { label: '车站客运员', value: 'STATION_PASSENGER', enLabel: 'StationPassenger' },
{label: '车站扳道员', value: 'STATION_SWITCH_MAN', enLabel: 'StationSwitchMan'}, { label: '车站扳道员', value: 'STATION_SWITCH_MAN', enLabel: 'StationSwitchMan' },
{label: '车站引导员', value: 'STATION_FACILITATOR', enLabel: 'StationFacilitator'}, { label: '车站引导员', value: 'STATION_FACILITATOR', enLabel: 'StationFacilitator' },
{label: '车站工务工', value: 'STATION_WORKER', enLabel: 'StationWorker'}, { label: '车站工务工', value: 'STATION_WORKER', enLabel: 'StationWorker' },
{label: '设备管理员', value: 'DEVICE_MANAGER', enLabel: 'DeviceManager'}, { label: '设备管理员', value: 'DEVICE_MANAGER', enLabel: 'DeviceManager' },
{label: '车务段段长', value: 'TRAIN_MASTER', enLabel: 'Train_Master'} { label: '车务段段长', value: 'TRAIN_MASTER', enLabel: 'Train_Master' },
], ],
releaseReview: [ releaseReview: [
{ enlabel: 'Unpublished', label: '未发布', value: '0'}, { enlabel: 'Unpublished', label: '未发布', value: '0' },
{ enlabel: 'Pending review', label: '待审核', value: '1'}, { enlabel: 'Pending review', label: '待审核', value: '1' },
{ enlabel: 'Successfully released', label: '发布成功', value: '2'}, { enlabel: 'Successfully released', label: '发布成功', value: '2' },
{ enlabel: 'Overrule', label: '被驳回', value: '3'} { enlabel: 'Overrule', label: '被驳回', value: '3' },
], ],
productType: [ productType: [
{ enlabel: 'Lesson System', label: '教学系统', value: 'Lesson'}, { enlabel: 'Lesson System', label: '教学系统', value: 'Lesson' },
{ enlabel: 'Exam System', label: '考试系统', value: 'Exam'}, { enlabel: 'Exam System', label: '考试系统', value: 'Exam' },
{ enlabel: 'Simulation System', label: '仿真系统', value: 'Simulation'}, { enlabel: 'Simulation System', label: '仿真系统', value: 'Simulation' },
{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan'} { enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan' },
],
customeredProductType: [
{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan'}
], ],
customeredProductType: [{ enlabel: 'Plan Draw', label: '运行图编制', value: 'Plan' }],
controlMode: [ controlMode: [
{ label: '中控', value: 'OperateCenterControl' }, { label: '中控', value: 'OperateCenterControl' },
{ label: '站控', value: 'LocalStationControl' }, { label: '站控', value: 'LocalStationControl' },
{ label: '紧急站控', value: 'EmergencyStationControl' }, { label: '紧急站控', value: 'EmergencyStationControl' },
{ label: '联锁控', value: 'InterlockStationControl' } { label: '联锁控', value: 'InterlockStationControl' },
], ],
simulationRole: [ simulationRole: [
{ label: '行调操作', value: 'Center' }, { label: '行调操作', value: 'Center' },
{ label: '现地操作', value: 'Local' }, { label: '现地操作', value: 'Local' },
{ label: '车辆段操作', value: 'Depot_IL'} { label: '车辆段操作', value: 'Depot_IL' },
], ],
deviceTypeList: [ deviceTypeList: [
@ -126,95 +108,99 @@ export default {
{ label: '全线限速', value: 'LimitControl' }, { label: '全线限速', value: 'LimitControl' },
{ label: '司机', value: 'Driver' }, { label: '司机', value: 'Driver' },
{ label: '列车', value: 'Train' }, { label: '列车', value: 'Train' },
{ label: '方向杆', value: 'DirectionRod'}, { label: '方向杆', value: 'DirectionRod' },
{ label: 'CTC', value: 'CTC' }, { label: 'CTC', value: 'CTC' },
{ label: '路票', value: 'RAIL' } { label: '路票', value: 'RAIL' },
{ label: '会话', value: 'Conversation' },
], ],
simulationDeviceList:[ simulationDeviceList: [
{label:'区段', value:'SECTION'}, { label: '区段', value: 'SECTION' },
{label:'计轴器', value:'AXLE_COUNTER'}, { label: '计轴器', value: 'AXLE_COUNTER' },
{label:'道岔', value:'SWITCH'}, { label: '道岔', value: 'SWITCH' },
{label:'信号机', value:'SIGNAL'}, { label: '信号机', value: 'SIGNAL' },
{label:'车站', value:'STATION'}, { label: '车站', value: 'STATION' },
{label:'站台', value:'STAND'}, { label: '站台', value: 'STAND' },
{label:'屏蔽门', value:'PSD'}, { label: '屏蔽门', value: 'PSD' },
{label:'紧急停车按钮', value:'ESP'}, { label: '紧急停车按钮', value: 'ESP' },
{label:'区域控制器', value:'ZC'}, { label: '区域控制器', value: 'ZC' },
{label:'线路控制器', value:'LC'}, { label: '线路控制器', value: 'LC' },
{label:'进路', value:'ROUTE'}, { label: '进路', value: 'ROUTE' },
{label:'进路延续保护', value:'OVERLAP'}, { label: '进路延续保护', value: 'OVERLAP' },
{label:'自动信号', value:'AUTO_SIGNAL'}, { label: '自动信号', value: 'AUTO_SIGNAL' },
{label:'自动折返', value:'CYCLE'}, { label: '自动折返', value: 'CYCLE' },
{label:'列车', value:'TRAIN'}, { label: '列车', value: 'TRAIN' },
{label:'列车门', value:'TRAIN_DOOR'}, { label: '列车门', value: 'TRAIN_DOOR' },
{label:'交路', value:'ROUTING'}, { label: '交路', value: 'ROUTING' },
{label:'站间运行等级', value:'RUN_LEVEL'} { label: '站间运行等级', value: 'RUN_LEVEL' },
], ],
QuestionTypeList: [ QuestionTypeList: [
{ label: '选择题', value: 'select' }, { label: '选择题', value: 'select' },
{ label: '判断题', value: 'judge' }, { label: '判断题', value: 'judge' },
{ label: '多选题', value: 'multi'}, { label: '多选题', value: 'multi' },
{ label: '填空题', value: 'fill'}, { label: '填空题', value: 'fill' },
{ label: '问答题', value: 'answer'} { label: '问答题', value: 'answer' },
], ],
// 新版的产品类型枚举 // 新版的产品类型枚举
prdType:[ prdType: [
{ enlabel: 'ATS local workstation', label: 'ATS现地工作站', value: '01'}, { enlabel: 'ATS local workstation', label: 'ATS现地工作站', value: '01' },
{ enlabel: 'ATS Traffic dispatching workstation', label: 'ATS行调工作站', value: '02'}, { enlabel: 'ATS Traffic dispatching workstation', label: 'ATS行调工作站', value: '02' },
{ enlabel: 'Comprehensive exercise cloud platform', label: '综合演练云平台', value: '03'}, { enlabel: 'Comprehensive exercise cloud platform', label: '综合演练云平台', value: '03' },
{ enlabel: 'Driver simulation driving system', label: '司机模拟驾驶系统', value: '04'}, { enlabel: 'Driver simulation driving system', label: '司机模拟驾驶系统', value: '04' },
{ enlabel: 'Dispatch workstation', label: '派班工作站', value: '05'}, { enlabel: 'Dispatch workstation', label: '派班工作站', value: '05' },
{ enlabel: 'ISCS workstation', label: 'ISCS工作站', value: '06'}, { 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: { trainingDeviceType: {
Switch: {enlabel: 'Switch training', label:'道岔实训'}, Switch: { enlabel: 'Switch training', label: '道岔实训' },
Section: {enlabel: 'Section training', label:'区段实训'}, Section: { enlabel: 'Section training', label: '区段实训' },
Signal: {enlabel: 'Signal training', label:'信号机实训'}, Signal: { enlabel: 'Signal training', label: '信号机实训' },
Stand: {enlabel: 'Stand training', label:'站台实训'}, Stand: { enlabel: 'Stand training', label: '站台实训' },
Station: {enlabel: 'Station training', label:'车站实训'}, Station: { enlabel: 'Station training', label: '车站实训' },
Train: { enlabel: 'Train training', label: '列车实训'}, Train: { enlabel: 'Train training', label: '列车实训' },
ControlConvertMenu: {enlabel: 'Control mode training', label:'控制模式实训'}, ControlConvertMenu: { enlabel: 'Control mode training', label: '控制模式实训' },
LimitControl: {enlabel: 'Control mode limit', label:'全线限速实训'}, LimitControl: { enlabel: 'Control mode limit', label: '全线限速实训' },
TrainWindow: {enlabel: 'TrainWindow training', label:'车次窗实训'}, TrainWindow: { enlabel: 'TrainWindow training', label: '车次窗实训' },
Driver: {enlabel: 'Driver training', label:'司机实训'}, Driver: { enlabel: 'Driver training', label: '司机实训' },
DirectionRod: {enlabel: 'Direction rod training', label:'方向杆实训'} DirectionRod: { enlabel: 'Direction rod training', label: '方向杆实训' },
}, },
interfaceErrorConfig: { interfaceErrorConfig: {
'500000': { type: '权限错误:', message: '您尚未有该操作权限!'}, '500000': { type: '权限错误:', message: '您尚未有该操作权限!' },
'500004': { type: '权限错误:', message: '您剩余的权限数量不足!'}, '500004': { type: '权限错误:', message: '您剩余的权限数量不足!' },
'500005': { type: '权限错误:', message: '您的权限时间已过!'}, '500005': { type: '权限错误:', message: '您的权限时间已过!' },
'500006': { type: '权限错误:', message: '您已经领取,不能重复领取!'}, '500006': { type: '权限错误:', message: '您已经领取,不能重复领取!' },
'500007': { type: '权限错误:', message: '剩余分发权限数量不足!'}, '500007': { type: '权限错误:', message: '剩余分发权限数量不足!' },
'500010': { type: '支付错误:', message: '微信统一支付调用失败!'} '500010': { type: '支付错误:', message: '微信统一支付调用失败!' },
}, },
projectDeviceTypeList:[ projectDeviceTypeList: [
{label: '道岔', value: 'SWITCH'}, { label: '道岔', value: 'SWITCH' },
{label: '信号机', value:'SIGNAL'}, { label: '信号机', value: 'SIGNAL' },
{label: '屏蔽门', value: 'PSD'}, { label: '屏蔽门', value: 'PSD' },
{label: 'IBP盘', value: 'IBP'}, { label: 'IBP盘', value: 'IBP' },
{label: '虚拟IBP盘', value: 'VR_IBP'}, { label: '虚拟IBP盘', value: 'VR_IBP' },
{label: '教员机', value: 'IM'}, { label: '教员机', value: 'IM' },
{label: '行调工作站', value: 'CW'}, { label: '行调工作站', value: 'CW' },
{label: '现地工作站', value: 'LW'}, { label: '现地工作站', value: 'LW' },
{label: '大屏工作站', value: 'LSW'}, { label: '大屏工作站', value: 'LSW' },
{label: '列车驾驶终端', value: 'DRIVE'}, { label: '列车驾驶终端', value: 'DRIVE' },
{label: '虚拟站台屏蔽门终端', value: 'VR_PSD'}, { label: '虚拟站台屏蔽门终端', value: 'VR_PSD' },
{label: '现地综合监控', value: 'ISCS_LW'}, { label: '现地综合监控', value: 'ISCS_LW' },
{label: '中心综合监控', value: 'ISCS_CW'}, { label: '中心综合监控', value: 'ISCS_CW' },
{label: '车辆段终端', value: 'DEPOT'}, { label: '车辆段终端', value: 'DEPOT' },
{label: '派班工作站', value: 'SCHEDULING'}, { label: '派班工作站', value: 'SCHEDULING' },
{label: '虚拟CCTV', value: 'CCTV'}, { label: '虚拟CCTV', value: 'CCTV' },
{label: 'PLC网关', value: 'PLC_GATEWAY'}, { label: 'PLC网关', value: 'PLC_GATEWAY' },
{label: '端头控制盒', value: 'PSL'}, { label: '端头控制盒', value: 'PSL' },
{label: 'PSC控制柜', value: 'PSC'}, { label: 'PSC控制柜', value: 'PSC' },
{label: '虚拟电子沙盘', value: 'SANDBOX'}, { label: '虚拟电子沙盘', value: 'SANDBOX' },
{label: '联锁工作站', value: 'ILW'}, { label: '联锁工作站', value: 'ILW' },
{label: 'UDP下位机', value: 'UDP_LOW'}, { label: 'UDP下位机', value: 'UDP_LOW' },
{label: '区段', value: 'SECTION'}, { label: '区段', value: 'SECTION' },
{label: '列车', value: 'TRAIN'}, { label: '列车', value: 'TRAIN' },
{label: 'UDP客户端', value: 'UDP_CLIENT'} { label: 'UDP客户端', value: 'UDP_CLIENT' },
{ label: '站台PIS', value: 'PIS_STAND' },
{ label: '列车PIS', value: 'PIS_TRAIN' },
], ],
ossList: [ ossList: [
{ name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' }, { name: '场景1', url: '场景1—桂花园道岔故障配分版60分.pdf' },
@ -228,23 +214,19 @@ export default {
{ name: '场景9', url: '场景9—车站站台门故障配分版40分.pdf' }, { name: '场景9', url: '场景9—车站站台门故障配分版40分.pdf' },
{ name: '场景10', url: '场景10—列车限速配分版40分.pdf' }, { name: '场景10', url: '场景10—列车限速配分版40分.pdf' },
{ name: '场景11', url: '场景11—区间疏导乘客配分版40分.pdf' }, { name: '场景11', url: '场景11—区间疏导乘客配分版40分.pdf' },
{ name: '场景12', url: '场景12—区域控制器故障配分版40分.pdf' } { name: '场景12', url: '场景12—区域控制器故障配分版40分.pdf' },
],
responderTypeList: [
{ name: '固定应答器', value: 'FB'},
{ name: '可变应答器', value: 'VB'},
{ name: '填充应答器', value: 'IB'}
], ],
responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }],
loadRuleList: [ loadRuleList: [
{ label: '每日加载', value:'EVERY_DAY' }, { label: '每日加载', value: 'EVERY_DAY' },
{ label: '周内加载', value: 'WITHIN_A_WEEK' }, { label: '周内加载', value: 'WITHIN_A_WEEK' },
{ label: '周末加载', value: 'WEEKEND' } { label: '周末加载', value: 'WEEKEND' },
], ],
turnBackTypeList: [ turnBackTypeList: [
{ label: '无折返', value: 'NONE' }, { label: '无折返', value: 'NONE' },
{ label: '默认', value: 'DEFAULT' }, { label: '默认', value: 'DEFAULT' },
{ label: '自动换端', value: 'AUTO' }, { label: '自动换端', value: 'AUTO' },
{ label: '无人折返', value: 'UNMANNED' } { label: '无人折返', value: 'UNMANNED' },
], ],
directionLabelList: [ directionLabelList: [
{ label: 'X', value: 'X' }, { label: 'X', value: 'X' },
@ -252,18 +234,44 @@ export default {
{ label: 'XD', value: 'XD' }, { label: 'XD', value: 'XD' },
{ label: 'S', value: 'S' }, { label: 'S', value: 'S' },
{ label: 'SF', value: 'SF' }, { 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: 'single operation', label: '单操', value: 'SINGLE' },
{ enlabel: 'scene operation', label: '场景', value: 'SCENE' },
], ],
ioDirectionList:[ // 出入口类型 ioDirectionList: [
{value:'DOWN_IN_STATION', label:'下行进站'}, // 出入口类型
{value:'UP_IN_STATION', label :'上行进站'}, { value: 'DOWN_IN_STATION', label: '下行进站' },
{value:'DOWN_OUT_STATION', label:'下行出站'}, { value: 'UP_IN_STATION', label: '上行进站' },
{value:'UP_OUT_STATION', label:'上行出站'}, { value: 'DOWN_OUT_STATION', label: '下行出站' },
{value:'BOTH_WAY_STATION', label:'双向'} { value: 'UP_OUT_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', logoWidth: '0',
systemType: '011' systemType: '011'
}, },
wh: { yjddzh: {
title: '城市轨道交通实训平台', title: '应急调度指挥系统',
loginPath: '/login?project=wh', loginPath: '/login?project=yjddzh',
loginParam: 'WH', loginParam: 'YJDDZH',
loginTitle: '空串', loginTitle: '空串',
navigationLogoWidth: '40px', navigationLogoWidth: '40px',
navigationMarginLeft: '60px', navigationMarginLeft: '60px',
@ -617,7 +617,7 @@ export const loginInfo = {
systemType: '027' systemType: '027'
}, },
richorhhcj: { richorhhcj: {
title: '红河财经学校城市轨道交通实训平台', title: '红河州职业技术学院红河财经学校城市轨道交通实训平台',
loginPath: '/login?project=richorhhcj', loginPath: '/login?project=richorhhcj',
bottomColumn: '中航锐创(北京)科技发展有限公司 联系电话:4000500081', bottomColumn: '中航锐创(北京)科技发展有限公司 联系电话:4000500081',
loginParam: 'RICHOR_HHCJ', loginParam: 'RICHOR_HHCJ',
@ -777,7 +777,7 @@ export const ProjectIcon = {
hls: FaviconHls, hls: FaviconHls,
designhls: FaviconHls, designhls: FaviconHls,
wjls: Favicon, wjls: Favicon,
wh: Favicon, yjddzh: Favicon,
drts: Favicon, drts: Favicon,
designdrts: Favicon, designdrts: Favicon,
hlsdrts: FaviconHls, hlsdrts: FaviconHls,
@ -832,7 +832,7 @@ export const ProjectCode = {
xadt: 'XADT', xadt: 'XADT',
designxadt: 'XADT', designxadt: 'XADT',
wjls: 'WJLS', wjls: 'WJLS',
wh: 'WH', yjddzh: 'YJDDZH',
drts: 'DRTS', drts: 'DRTS',
designdrts: 'DRTS', designdrts: 'DRTS',
hlsdrts: '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', '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', 'richorlesson3d', 'richorjoint', 'designrichorjoint', 'nologo', 'designnologo', 'srsandbox', 'designsrsandbox', 'designhlsdrts', 'hlsdrts', 'jxgm', 'designjxgm',
'richorygy', 'designrichorygy', 'say', 'designsay', 'unittecsty', 'designunittecsty', 'richorhhcj', 'designrichorhhcj', 'teaching', 'designteaching', 'richorcxjs', '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']; export const CaseHideProjectList = ['heb', 'designheb', 'cgy', 'designcgy', 'richorhhcj', 'designrichorhhcj'];
/** 登录页右下角版本开发基于不展示 */ /** 登录页右下角版本开发基于不展示 */
@ -1006,7 +1006,7 @@ export const ProjectList = [
{value: 'teaching', label: '教学通用'}, {value: 'teaching', label: '教学通用'},
{value: 'richor_cxjs', label: '长兴技校'}, {value: 'richor_cxjs', label: '长兴技校'},
{value: 'hyd_railway', label: '哈盈达大铁'}, {value: 'hyd_railway', label: '哈盈达大铁'},
{value: 'wh', label: '武汉8号线'} {value: 'yjddzh', label: '武汉8号线'}
]; ];
/** 本地项目打包 */ /** 本地项目打包 */
export const localPackageProject = { 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_PUBLISH:{value: 'STATION_IO_GATE_PUBLISH', label: '出入口发布生效区'},
CTC_STATION_IO_GATE_LIST:{value: 'STATION_IO_GATE_LIST', label: '获取出入口列表'}, CTC_STATION_IO_GATE_LIST:{value: 'STATION_IO_GATE_LIST', label: '获取出入口列表'},
CTC_STATION_IO_GATE_EDIT:{value: 'STATION_IO_GATE_EDIT', 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_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_SET_ROUTE:{value: 'CTC_SET_ROUTE', label: 'CTC办理进路'},
CTC_STATION_SIGN_RUN_PLAN:{value:'CTC_STATION_SIGN_RUN_PLAN', label: '车站签收阶段计划'}, 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 store from '@/store/index';
import Command from './Command'; import Command from './Command';
import Handler from './Handler'; import Handler from './Handler';
import { ScriptMode } from '@/scripts/ConstDic';
import { objectIsEqual } from '@/utils/date';
class CommandHandle { class CommandHandle {
constructor() { constructor() {
@ -113,6 +115,10 @@ class CommandHandle {
RAIL_FILL_IN_REGISTER: { RAIL_FILL_IN_REGISTER: {
operate: 'RAIL_FILL_IN_REGISTER', operate: 'RAIL_FILL_IN_REGISTER',
paramList: [{name: 'stationCode'}, {name: 'line'}] 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) => { return new Promise((resolve, reject) => {
const group = router.currentRoute.query.group; const group = router.currentRoute.query.group;
const newApi = router.currentRoute.query.newApi + ''; 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') { if (newApi === 'true') {
const userInfo = store.state.training.simulationUserList.find(el => el.id == store.state.user.id); const userInfo = store.state.training.simulationUserList.find(el => el.id == store.state.user.id);
sendSimulationCommand(group, userInfo.memberId, id, command).then((response) => { sendSimulationCommand(group, userInfo.memberId, id, command).then((response) => {
@ -178,7 +200,25 @@ class CommandHandle {
reject(error); 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', // 现地工作站 '01': 'Local', // 现地工作站
'02': 'Center', // 中心调度工作站 '02': 'Center', // 中心调度工作站
'09':'Depot_IL', // 车辆段工作站 '09':'Depot_IL', // 车辆段工作站
'10': 'Local',
'04': 'Local' '04': 'Local'
}; };

View File

@ -6,6 +6,7 @@ import { State2SimulationMap } from './Config.js';
import { sendTrainingNextStepNew } from '@/api/jmap/training'; import { sendTrainingNextStepNew } from '@/api/jmap/training';
import { getCmdList } from '@/api/management/dictionary'; import { getCmdList } from '@/api/management/dictionary';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { getLocalStorage } from '@/utils/auth';
class Handler { class Handler {
constructor() { constructor() {
@ -35,6 +36,7 @@ class Handler {
afterValid(operation, valid) { afterValid(operation, valid) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const basicInfo = store.getters['training/basicInfo']; const basicInfo = store.getters['training/basicInfo'];
const trainingDetail = store.getters['trainingNew/trainingDetail'];
if (basicInfo.id && valid) { if (basicInfo.id && valid) {
const group = router.currentRoute.query.group; const group = router.currentRoute.query.group;
sendTrainingNextStepNew(basicInfo.id, operation, group).then(res=>{ sendTrainingNextStepNew(basicInfo.id, operation, group).then(res=>{
@ -52,6 +54,16 @@ class Handler {
} }
reject(error); reject(error);
}); });
} else if (trainingDetail && trainingDetail.id) {
if (!valid) {
this.pop();
reject();
} else {
if (operation.cancel === true) {
this.clear();
}
resolve();
}
} else { } else {
resolve(); resolve();
} }
@ -154,8 +166,12 @@ class Handler {
} }
getTrainingMode () { getTrainingMode () {
if (store.state.trainingNew.trainingSwitch && store.state.trainingNew.trainingDetail.type === 'SINGLE') {
return store.state.trainingNew.teachMode;
} else {
return store.state.training.mode; return store.state.training.mode;
} }
}
getTrainingStart() { getTrainingStart() {
return store.state.training.trainingStart; return store.state.training.trainingStart;
@ -164,6 +180,35 @@ class Handler {
getOperateBreakStatus () { getOperateBreakStatus () {
return store.state.menuOperation.break; 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(); export default new Handler();

View File

@ -668,6 +668,12 @@ export const OperationEvent = {
operation: '00c03s', operation: '00c03s',
domId: '_Tips-ningBo-line_remoteResetFunc-sure{TOP}' domId: '_Tips-ningBo-line_remoteResetFunc-sure{TOP}'
} }
},
commandRight: {
right: {
operation: '00b',
domId: ''
}
} }
}, },
// 站台概要表 // 站台概要表
@ -2311,6 +2317,10 @@ export const OperationEvent = {
confirm:{ confirm:{
operation: '4281', operation: '4281',
domId: '_Tips-Section-Defective-Shunting-Confirm' domId: '_Tips-Section-Defective-Shunting-Confirm'
},
shuntingTypeListChange: {
operation: '4282',
domId: '_Tips-Section-Defective-Shunting-Change'
} }
// menuButton: { // menuButton: {
// operation: '428', // operation: '428',
@ -3992,6 +4002,10 @@ export const OperationEvent = {
menu: { menu: {
operation: '1154', operation: '1154',
domId: '_Tips-CTC-modifyStationTrack-Menu{TOP}' domId: '_Tips-CTC-modifyStationTrack-Menu{TOP}'
},
edit: {
operation: '11541',
domId: '_Tips-CTC-modifyStationTrack-edit{TOP}'
} }
}, },
// 出入口发布生效区 // 出入口发布生效区
@ -4021,6 +4035,34 @@ export const OperationEvent = {
operation: '1158', operation: '1158',
domId: '_Tips-CTC-batchTrainFixedPath-Menu{TOP}' 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_TRIP_NUMBER
// CTC_ZONE_SAVE_STATION // CTC_ZONE_SAVE_STATION
@ -4136,6 +4178,44 @@ export const OperationEvent = {
domId: '_Tips-Driver-parkingTrain' 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 Handler from './Handler.js';
import { TrainingMode } from '@/scripts/ConstDic'; import { TrainingMode, ScriptMode } from '@/scripts/ConstDic';
class ValidateHandler { class ValidateHandler {
vaildate(mode, operate) { vaildate(mode, operate) {
@ -9,11 +9,36 @@ class ValidateHandler {
return this.vaildate_tips(operate); return this.vaildate_tips(operate);
case TrainingMode.TEACH: // 教学模式 case TrainingMode.TEACH: // 教学模式
return this.vaildate_tips(operate); 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; 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) { vaildate_tips(operate) {
let valid = true; let valid = true;
if (Handler.getTrainingStart()) { if (Handler.getTrainingStart()) {
@ -25,7 +50,29 @@ class ValidateHandler {
return valid; 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) { judge (operate) {
const steps = Handler.getSteps(); const steps = Handler.getSteps();

View File

@ -14,7 +14,9 @@ const iscs = {
closeMusicNum: 0, // 关闭音乐标识 closeMusicNum: 0, // 关闭音乐标识
faultList: [], // 故障 元素状态 faultList: [], // 故障 元素状态
incidentList: [], // 事件列表 incidentList: [], // 事件列表
alarmList: [] // 报警列表 alarmList: [], // 报警列表
gateFaultList: [], // 闸机故障
gateFaultCount: 0
}, },
getters: { getters: {
@ -184,6 +186,15 @@ const iscs = {
}, },
updateIscsState: (state, deviceStatus) => { updateIscsState: (state, deviceStatus) => {
Vue.prototype.$iscs && Vue.prototype.$iscs.update(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 }) => { setDelIncidentList: ( { commit }) => {
commit('setDelIncidentList'); commit('setDelIncidentList');
},
handlerGateFaultList: ({ commit }, data) => {
commit('handlerGateFaultList', data);
} }
} }
}; };

View File

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

View File

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

View File

@ -4,6 +4,9 @@ import deviceType from '../../jmapNew/constant/deviceType';
import LangStorage from '@/utils/lang'; import LangStorage from '@/utils/lang';
import Handler from '@/scripts/cmdPlugin/Handler'; import Handler from '@/scripts/cmdPlugin/Handler';
import { deepAssign } from '@/utils/index'; 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) => { nextNew: ({ commit, state }, operate) => {
setLocalStorage('nextNew', JSON.stringify(operate));
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
commit('setOperate', operate); commit('setOperate', operate);
if (!state.started && !state.mode) { if (!state.started && !state.mode) {
commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? 'Please click start, start training!' : '请点击开始,开始实训!', color: 'red' }); commit('setOperateErrMsg', { errMsg: LangStorage.getLang() == 'en' ? 'Please click start, start training!' : '请点击开始,开始实训!', color: 'red' });
return; 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 // 处理operation
Handler.handle(operate).then(rtn => { Handler.handle(operate).then(rtn => {
if (state.trainingStart) { if (state.trainingStart) {
@ -453,10 +460,20 @@ const training = {
// 测试和考试不给提示 // 测试和考试不给提示
rtn && rtn.valid && commit('next'); 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); resolve(rtn);
}).catch(error => { }).catch(error => {
// console.error(error); console.error(error);
reject(error); reject(error);
}); });
}); });
@ -662,6 +679,9 @@ const training = {
}, },
setUserRole: ({ commit }, userRole) => { setUserRole: ({ commit }, userRole) => {
commit('setUserRole', userRole); commit('setUserRole', userRole);
},
setOperateErrMsg: ({ commit }) => {
commit('setOperateErrMsg', { errMsg: '操作错误!', color: 'red' });
} }
} }
}; };

View File

@ -1,9 +1,17 @@
import { setLocalStorage } from '@/utils/auth';
const training = { const training = {
namespaced: true, namespaced: true,
state: { state: {
teachMode: '', // 实训模式 teachMode: '', // 实训模式
trainingDetail: null, // 实训详情 trainingDetail: null, // 实训详情
trainingSwitch: false // 实训开始结束标志 trainingSwitch: false, // 实训开始结束标志
trainingOperate: null,
simulationPause: false, // 实训 暂停判断
sceneOperate: null,
stepOrder: 0,
operateOrder: 0,
stepOverCount: 0,
trainingScore: ''
}, },
getters: { getters: {
teachMode: (state) => { teachMode: (state) => {
@ -14,6 +22,21 @@ const training = {
}, },
trainingSwitch: (state) => { trainingSwitch: (state) => {
return state.trainingSwitch; 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: { mutations: {
@ -22,9 +45,44 @@ const training = {
}, },
setTrainingDetail: (state, detail) => { setTrainingDetail: (state, detail) => {
state.trainingDetail = detail; state.trainingDetail = detail;
setLocalStorage('trainingDetail', JSON.stringify(detail));
}, },
setTrainingSwitch: (state, flag) => { setTrainingSwitch: (state, flag) => {
state.trainingSwitch = 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: { actions: {
@ -36,10 +94,51 @@ const training = {
}, },
trainingStart: ({commit}) => { trainingStart: ({commit}) => {
commit('setTrainingSwitch', true); commit('setTrainingSwitch', true);
setLocalStorage('nextNew', null);
}, },
trainingEnd: ({commit}) => { trainingEnd: ({commit}) => {
commit('setTrainingSwitch', false); 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; export default training;

View File

@ -1,4 +1,5 @@
import SessionStorage from 'sessionstorage'; import SessionStorage from 'sessionstorage';
import store from '@/store/index';
const TokenKey = 'Admin-Token'; const TokenKey = 'Admin-Token';
@ -23,3 +24,22 @@ export function setSessionStorage(key, value) {
export function removeSessionStorage(key) { export function removeSessionStorage(key) {
return SessionStorage.removeItem(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 = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.233/rtss-server'; // BASE_API = 'http://192.168.3.233/rtss-server';
// BASE_API = 'http://114.116.51.125/jlcloud'; // 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.94:9000'; // 旭强
// BASE_API = 'http://192.168.3.15:9000'; // 张赛 // BASE_API = 'http://192.168.3.15:9000'; // 张赛
// BASE_API = 'http://192.168.3.5: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() { export function now() {
var d = new Date(); var d = new Date();
var year = d.getFullYear(); var year = d.getFullYear();
@ -16,12 +30,19 @@ export function now() {
return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
} }
/**
* @param {Number} usedTime 秒数
* @returns `HH:mm:ss`
*/
export function timeFormat(usedTime = 0) { 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) {
if (sumTime >= 3600) { if (sumTime >= 3600) {
hour = Math.floor(sumTime / 3600) % 24; hour = Math.floor(sumTime / 3600) % 24;
sumTime = (sumTime % 3600); sumTime = sumTime % 3600;
} }
if (sumTime >= 60) { if (sumTime >= 60) {
minute = Math.floor(sumTime / 60); minute = Math.floor(sumTime / 60);
@ -35,8 +56,11 @@ export function timeFormat(usedTime = 0) {
return getTimeStr(hour) + ':' + getTimeStr(minute) + ':' + getTimeStr(second); return getTimeStr(hour) + ':' + getTimeStr(minute) + ':' + getTimeStr(second);
} }
// 时分秒转为时间戳 /**
* 时分秒转为时间戳
* @param {String} time 'HH:mm:ss'
* @returns 秒数
*/
export function toTimeStamp(time = '') { export function toTimeStamp(time = '') {
let s = 0; let s = 0;
const hour = time.split(':')[0]; const hour = time.split(':')[0];
@ -46,8 +70,11 @@ export function toTimeStamp(time = '') {
return s; return s;
} }
// 时间戳的只转为时分秒 /**
* 时间戳的转换为时分秒
* @param {Number} mss Unix时间戳
* @returns 'HH:mm:ss'
*/
export function formatDuring(mss) { export function formatDuring(mss) {
const now = new Date(mss); const now = new Date(mss);
const hour = now.getHours(); // 返回日期中的小时数0到23 const hour = now.getHours(); // 返回日期中的小时数0到23
@ -56,41 +83,43 @@ export function formatDuring(mss) {
return hour + ':' + minute + ':' + second; 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) { export function computationSeconds(seconds, hourUnit, minuteUnit, secondUnit) {
if (seconds) { if (seconds) {
const h = parseInt(seconds / 3600); const h = parseInt(seconds / 3600);
const m = parseInt((seconds - h * 3600) / 60); const m = parseInt((seconds - h * 3600) / 60);
const s = (seconds - h * 3600) % 60; const s = (seconds - h * 3600) % 60;
return h ? `${h} ${hourUnit} ${m} ${minuteUnit} ${s} ${secondUnit}` return h ? `${h} ${hourUnit} ${m} ${minuteUnit} ${s} ${secondUnit}` : m ? `${m} ${minuteUnit} ${s} ${secondUnit}` : `${s} ${secondUnit}`;
: m ? `${m} ${minuteUnit} ${s} ${secondUnit}`
: `${s} ${secondUnit}`;
} }
return null; 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 LPFTopic = '/user/queue/simulation/passenger'; // 客流topic
// export const iscsTopic = '/topic/simulation/iscs'; // iscs topic // export const iscsTopic = '/topic/simulation/iscs'; // iscs topic
export function getTopic(type, group, stationCode) { export function getTopic(type, group, param) {
let topic = ''; let topic = '';
switch (type) { switch (type) {
case 'SYSTIME': case 'SYSTIME':
@ -23,7 +23,7 @@ export function getTopic(type, group, stationCode) {
topic = `/queue/simulation/${group}/state`; topic = `/queue/simulation/${group}/state`;
break; break;
case 'ISCSPSD': case 'ISCSPSD':
topic = `/queue/simulation/${group}/iscs/psd/${stationCode}`; topic = `/queue/simulation/${group}/iscs/psd/${param.stationCode}`;
break; break;
case 'ISCSPA': case 'ISCSPA':
topic = `/queue/simulation/${group}/iscs/pa`; topic = `/queue/simulation/${group}/iscs/pa`;
@ -31,6 +31,15 @@ export function getTopic(type, group, stationCode) {
case 'ISCSPIS': case 'ISCSPIS':
topic = `/queue/simulation/${group}/iscs/pis`; topic = `/queue/simulation/${group}/iscs/pis`;
break; 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': case 'CTC':
topic = `/user/queue/simulation/${group}/ctc`; topic = `/user/queue/simulation/${group}/ctc`;
break; break;
@ -52,7 +61,7 @@ export function creatSubscribe(topic, header) {
if (!Vue.prototype.$stomp) { if (!Vue.prototype.$stomp) {
Vue.prototype.$stomp = new StompClient(); 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); Vue.prototype.$stomp.subscribe(topic, callback, header);
} }
} catch (error) { } catch (error) {
@ -69,12 +78,16 @@ function callback(Response) {
store.dispatch('socket/setSimulationTimeSync', Number.parseInt(Response.body)); store.dispatch('socket/setSimulationTimeSync', Number.parseInt(Response.body));
} else if (Response.headers.destination.includes('state')) { } else if (Response.headers.destination.includes('state')) {
store.dispatch('socket/handleSimulationState', Number.parseInt(Response.body)); 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)); store.dispatch('socket/handleIscsState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('iscs/pa')) { } else if (Response.headers.destination.includes('iscs/pa')) {
store.dispatch('socket/handleIscsPaState', JSON.parse(Response.body)); store.dispatch('socket/handleIscsPaState', JSON.parse(Response.body));
} else if (Response.headers.destination.includes('iscs/pis')) { } else if (Response.headers.destination.includes('iscs/pis')) {
store.dispatch('socket/handleIscsPisState', JSON.parse(Response.body)); 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 { } else {
const data = JSON.parse(Response.body); const data = JSON.parse(Response.body);
store.dispatch('socket/setStomp', data); store.dispatch('socket/setStomp', data);

View File

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

View File

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

View File

@ -4,7 +4,7 @@
<div class="BTRpMenuBar"> <div class="BTRpMenuBar">
<div class="eachBTRpMenuBar" @click="addTab('StationTrack')">车站股道</div> <div class="eachBTRpMenuBar" @click="addTab('StationTrack')">车站股道</div>
<div class="eachBTRpMenuBar" @click="addTab('StationDirection')">车站出入口</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> <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); this.currentTabs = tabs.filter(tab => tab.name !== targetName);
}, },
addTab(name) { 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=>{ const findTab = this.currentTabs.find(tab=>{
return tab.name == name; return tab.name == name;
}); });
@ -133,7 +133,7 @@ export default {
this.$refs.noticeInfo.doShow(); this.$refs.noticeInfo.doShow();
} }
// '' // ''
// //
} }
}; };

View File

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

View File

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

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