Merge remote-tracking branch 'origin/test'
# Conflicts: # src/views/newMap/mapDraftPicture/createPicture.vue
This commit is contained in:
commit
24d64b91ac
@ -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",
|
||||||
|
11
src/App.vue
11
src/App.vue
@ -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();
|
||||||
});
|
});
|
||||||
|
@ -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
33
src/api/disStation.js
Normal 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
|
||||||
|
});
|
||||||
|
}
|
@ -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'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -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
|
||||||
|
});
|
||||||
|
}
|
||||||
|
@ -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'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
BIN
src/assets/icon/favicon_hhzy.png
Normal file
BIN
src/assets/icon/favicon_hhzy.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
BIN
src/assets/pis/train.png
Normal file
BIN
src/assets/pis/train.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
@ -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'
|
||||||
};
|
};
|
||||||
|
@ -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:'评分'
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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");
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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',
|
||||||
|
@ -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);
|
||||||
|
@ -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',
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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, // 列车竖杠的宽度
|
||||||
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -440,4 +440,7 @@ export default class SignalButton extends Group {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
getAnchorPoint() {}
|
getAnchorPoint() {}
|
||||||
|
getShapeTipPoint() {
|
||||||
|
return this.computedPosition;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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),
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 设置通信状态类型
|
// 设置通信状态类型
|
||||||
|
@ -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() {
|
||||||
|
@ -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() {
|
||||||
|
@ -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:{}
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
@ -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') {
|
||||||
|
128
src/jmapNew/theme/datie_02/menus/dialog/blockDevice.vue
Normal file
128
src/jmapNew/theme/datie_02/menus/dialog/blockDevice.vue
Normal 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>
|
@ -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;
|
||||||
|
@ -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); });
|
||||||
},
|
},
|
||||||
|
54
src/jmapNew/theme/datie_02/menus/dialog/infoDialog.vue
Normal file
54
src/jmapNew/theme/datie_02/menus/dialog/infoDialog.vue
Normal 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>
|
@ -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() {
|
||||||
|
@ -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>
|
@ -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>
|
@ -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: {
|
||||||
|
152
src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue
Normal file
152
src/jmapNew/theme/datie_02/menus/dialog/regionBatchOperation.vue
Normal 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>
|
@ -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) {
|
||||||
|
253
src/jmapNew/theme/datie_02/menus/dialog/stationTrainManage.vue
Normal file
253
src/jmapNew/theme/datie_02/menus/dialog/stationTrainManage.vue
Normal 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>
|
@ -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();
|
||||||
|
@ -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');
|
||||||
},
|
},
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
@ -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>
|
@ -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
|
||||||
|
@ -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() {
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
|
||||||
//
|
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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() {
|
||||||
|
@ -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: {
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
@ -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);
|
||||||
|
@ -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() {
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -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' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
@ -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 = {
|
||||||
|
@ -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: '车站签收阶段计划'},
|
||||||
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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'
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -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);
|
||||||
|
@ -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');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -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' });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
@ -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'; // 夏增彬
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -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);
|
||||||
|
@ -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})=>{
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
// '车站股道'
|
// '车站股道'
|
||||||
// 列车固定路径
|
// 列车固定径路
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -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');
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user