diff --git a/src/api/trainingManage.js b/src/api/trainingManage.js index 97f016604..2ee4542e7 100644 --- a/src/api/trainingManage.js +++ b/src/api/trainingManage.js @@ -32,14 +32,21 @@ export function updateTraining(data) { data }); } -/** 更新实训标签 */ -export function updateTrainingLabel(data) { +/** 更新发布实训信息(标签, 描述, 标题) */ +export function updateTrainingInfo(data) { return request({ - url: `/api/v2/training/published/update/label`, + url: `/api/v2/training/published/update`, method: 'put', data }); } +/** 已发布实训转为草稿 */ +export function saveAsTrainingDraft(trainingId) { + return request({ + url: `/api/v2/training/published/${trainingId}/saveAsDraft`, + method: 'post' + }); +} /** 查询步骤列表 */ export function getTrainingStepList(trainingId) { return request({ diff --git a/src/assets/bg_pis.png b/src/assets/bg_pis.png new file mode 100644 index 000000000..bc230e4dd Binary files /dev/null and b/src/assets/bg_pis.png differ diff --git a/src/assets/bg_tms.png b/src/assets/bg_tms.png new file mode 100644 index 000000000..a2fe27c29 Binary files /dev/null and b/src/assets/bg_tms.png differ diff --git a/src/jmapNew/shape/graph/Station/index.js b/src/jmapNew/shape/graph/Station/index.js index 05e9b530f..13a8bfd8a 100644 --- a/src/jmapNew/shape/graph/Station/index.js +++ b/src/jmapNew/shape/graph/Station/index.js @@ -357,7 +357,7 @@ export default class Station extends Group { zlevel: this.zlevel, z: this.z, style: { - x: computedControlModePoint.x + this.style.Station.StationControl.text.offsetX, + x: computedControlModePoint.x, y: computedControlModePoint.y + this.style.Station.StationControl.text.offsetY, fontWeight: this.style.Station.StationControl.text.fontWeight, fontSize: this.style.Station.StationControl.text.fontSize, diff --git a/src/jmapNew/theme/fuzhou_01/menus/menuTrain.vue b/src/jmapNew/theme/fuzhou_01/menus/menuTrain.vue index 50f100a0b..4047f9792 100644 --- a/src/jmapNew/theme/fuzhou_01/menus/menuTrain.vue +++ b/src/jmapNew/theme/fuzhou_01/menus/menuTrain.vue @@ -145,6 +145,10 @@ export default { handler: this.handlerApplyRmMode } ] + }, + { + label: '停车', + handler: this.handleParkingTrain } ], menuSpeed: [ @@ -352,6 +356,13 @@ export default { this.$refs.noticeInfo.doShow(); }); }, + handleParkingTrain() { + commitOperate(menuOperate.Train.driverStop, { groupNumber: this.selected.code }, 3).then(({ valid, operate }) => { + }).catch((error) => { + console.error(error); + this.$refs.noticeInfo.doShow(); + }); + }, // 限速行驶 limitSpeed() { const step = { diff --git a/src/jmapNew/theme/xian_02/menus/menuStation.vue b/src/jmapNew/theme/xian_02/menus/menuStation.vue index 1c007c93d..bd5c744d7 100644 --- a/src/jmapNew/theme/xian_02/menus/menuStation.vue +++ b/src/jmapNew/theme/xian_02/menus/menuStation.vue @@ -50,7 +50,7 @@ export default { children: [ { label: '请求', - handler: this.setStationControl, + handler: this.work === 'localWork' ? this.setStationControl : this.setCenterControl, cmdType: this.work === 'localWork' ? CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL : CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL, isDisabled: (station, work) => { if (work === 'localWork') { diff --git a/src/jmapNew/theme/xian_02/menus/menuTrain.vue b/src/jmapNew/theme/xian_02/menus/menuTrain.vue index 066ac4d8b..14220c2b5 100644 --- a/src/jmapNew/theme/xian_02/menus/menuTrain.vue +++ b/src/jmapNew/theme/xian_02/menus/menuTrain.vue @@ -498,7 +498,7 @@ export default { trainOrder(orderStop) { const operate = { start: true, - send: true, + // send: true, param:{}, code: this.selected.code }; diff --git a/src/scripts/ConstConfig.js b/src/scripts/ConstConfig.js index ade82e58a..c58fcb581 100644 --- a/src/scripts/ConstConfig.js +++ b/src/scripts/ConstConfig.js @@ -148,26 +148,6 @@ export default { { label: '会话', value: 'Conversation' } ], - simulationDeviceList: [ - { label: '区段', value: 'SECTION' }, - { label: '计轴器', value: 'AXLE_COUNTER' }, - { label: '道岔', value: 'SWITCH' }, - { label: '信号机', value: 'SIGNAL' }, - { label: '车站', value: 'STATION' }, - { label: '站台', value: 'STAND' }, - { label: '屏蔽门', value: 'PSD' }, - { label: '紧急停车按钮', value: 'ESP' }, - { label: '区域控制器', value: 'ZC' }, - { label: '线路控制器', value: 'LC' }, - { label: '进路', value: 'ROUTE' }, - { label: '进路延续保护', value: 'OVERLAP' }, - { label: '自动信号', value: 'AUTO_SIGNAL' }, - { label: '自动折返', value: 'CYCLE' }, - { label: '列车', value: 'TRAIN' }, - { label: '列车门', value: 'TRAIN_DOOR' }, - { label: '交路', value: 'ROUTING' }, - { label: '站间运行等级', value: 'RUN_LEVEL' } - ], QuestionTypeList: [ { label: '选择题', value: 'select' }, { label: '判断题', value: 'judge' }, @@ -175,17 +155,6 @@ export default { { label: '填空题', value: 'fill' }, { label: '问答题', value: 'answer' } ], - // 新版的产品类型枚举 - prdType: [ - { enlabel: 'ATS local workstation', label: 'ATS现地工作站', value: '01' }, - { enlabel: 'ATS Traffic dispatching workstation', label: 'ATS行调工作站', value: '02' }, - { enlabel: 'Comprehensive exercise cloud platform', label: '综合演练云平台', value: '03' }, - { enlabel: 'Driver simulation driving system', label: '司机模拟驾驶系统', value: '04' }, - { enlabel: 'Dispatch workstation', label: '派班工作站', value: '05' }, - { enlabel: 'ISCS workstation', label: 'ISCS工作站', value: '06' }, - { enlabel: 'Interlocking station at depot', label: '车辆段联锁工作站', value: '09' }, - { enlabel: 'Large screen vehicle real workstation', label: '应急调度指挥系统', value: '10' } - ], trainingDeviceType: { Switch: { enlabel: 'Switch training', label: '道岔实训' }, Section: { enlabel: 'Section training', label: '区段实训' }, @@ -234,21 +203,9 @@ export default { { label: '列车', value: 'TRAIN' }, { label: 'UDP客户端', value: 'UDP_CLIENT' }, { label: '站台PIS', value: 'PIS_STAND' }, - { label: '列车PIS', value: 'PIS_TRAIN' } - ], - ossList: [ - { name: '场景1', url: '场景1—桂花园道岔故障(配分版60分).pdf' }, - { name: '场景2', url: '场景2—体育馆道岔故障(配分版60分).pdf' }, - { name: '场景3', url: '场景3—火车站道岔故障(配分版60分).pdf' }, - { name: '场景4', url: '场景4—列车救援(配分版60分).pdf' }, - { name: '场景5', url: '场景5—接触网无电(配分版60分).pdf' }, - { name: '场景6', url: '场景6—计轴故障试题(配分版60分).pdf' }, - { name: '场景7', url: '场景7—大学城道岔故障(配分版40分).pdf' }, - { name: '场景8', url: '场景8—车站照明故障(配分版40分).pdf' }, - { name: '场景9', url: '场景9—车站站台门故障(配分版40分).pdf' }, - { name: '场景10', url: '场景10—列车限速(配分版40分).pdf' }, - { name: '场景11', url: '场景11—区间疏导乘客(配分版40分).pdf' }, - { name: '场景12', url: '场景12—区域控制器故障(配分版40分).pdf' } + { label: '列车PIS', value: 'PIS_TRAIN' }, + { label: '乘客PIS', value: 'PIS' }, + { label: 'TMS', value: 'TMS' } ], responderTypeList: [{ name: '固定应答器', value: 'FB' }, { name: '可变应答器', value: 'VB' }, { name: '填充应答器', value: 'IB' }], loadRuleList: [ diff --git a/src/utils/stomp.js b/src/utils/stomp.js index b4ad3f919..cad94cbde 100644 --- a/src/utils/stomp.js +++ b/src/utils/stomp.js @@ -33,10 +33,10 @@ export function getTopic(type, group, param) { break; case 'ISCSGATE': topic = `/queue/simulation/${group}/iscs/gate/${param.stationCode}`; - break; - case 'TMS': - topic = `/queue/simulation/${group}/train/001/tms` - break; + break; + case 'TMS': + topic = `/queue/simulation/${group}/train/001/tms`; + break; case 'PIS_STAND': topic = `/queue/simulation/${group}/standPis/${param.standCode}`; break; diff --git a/src/views/jlmap3d/drive/sceneview/tmsPage.vue b/src/views/jlmap3d/drive/sceneview/tmsPage.vue index 72e3d9d87..a1462ca8a 100644 --- a/src/views/jlmap3d/drive/sceneview/tmsPage.vue +++ b/src/views/jlmap3d/drive/sceneview/tmsPage.vue @@ -1,304 +1,430 @@ diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 5e7f24712..acd68be23 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -22,7 +22,7 @@
{{ loginOrgTitle }} - +
{{ loginProtitle }}
@@ -57,6 +57,8 @@ import bgIscsImg from '@/assets/bg_iscs.jpg'; import bgCctvImg from '@/assets/bg_cctv.jpg'; import bgLswImg from '@/assets/bg_lsw.jpg'; import bgPsdImg from '@/assets/bg_psd.png'; +import bgPisImg from '@/assets/bg_pis.png'; +import bgTmsImg from '@/assets/bg_tms.png'; import ZongheIcon from '@/assets/icon/icon_zonghe.png'; import { getLoginWmurl, checkLoginStatus, getLoginInfo } from '@/api/login'; import { getToken} from '@/utils/auth'; @@ -97,7 +99,7 @@ export default { return this.$route.query.type; }, syncLogin() { - const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN']; + const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD', 'SANDBOX', 'ILW', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS']; return this.type ? synchronousLogin.includes(this.type) : false; }, bgImg() { @@ -142,7 +144,9 @@ export default { ILW:{text:'检测教员机登录中', Img:bgLswImg}, PIS_TRAIN:{text:'检测教员机登录中'}, PIS_STAND:{text:'检测教员机登录中'}, - SANDBOX:{Img:bgLswImg, text:'检测教员机登录中'} + SANDBOX:{Img:bgLswImg, text:'检测教员机登录中'}, + PIS:{text:'检测教员机登录中', Img: bgPisImg}, + TMS:{text:'检测列车驾驶终端登录中', Img: bgTmsImg} }; this.loadingText = deviceMap[this.type].text; this.deviceImg = deviceMap[this.type].Img; diff --git a/src/views/newMap/display/trainingDesign/draftTrainingList.vue b/src/views/newMap/display/trainingDesign/draftTrainingList.vue index 234411d39..ff54eb823 100644 --- a/src/views/newMap/display/trainingDesign/draftTrainingList.vue +++ b/src/views/newMap/display/trainingDesign/draftTrainingList.vue @@ -24,7 +24,7 @@ import { loadTrainingBg } from '@/api/jmap/training'; import Cookies from 'js-cookie'; import ConstConfig from '@/scripts/ConstConfig'; import { loadDraftTraining } from '@/api/jmap/training'; -import { deleteTraining, publishTraining } from '@/api/trainingManage'; +import { deleteTraining, publishTraining, jumpToTraining } from '@/api/trainingManage'; import { OperateMode } from '@/scripts/ConstDic'; export default { @@ -206,6 +206,18 @@ export default { this.$jlmap && this.$jlmap.updateTransform(mapLocation.scale, {x:mapLocation.x, y:mapLocation.y}); } this.$emit('updateDetails', resp.data); + if (resp.data && resp.data.needRunToFinalStep) { + this.$confirm('此草稿实训为转存后实训且未保存步骤背景,如需编辑则需快速仿真到最后一步!', this.$t('global.tips'), { + confirmButtonText: '快速仿真', + cancelButtonText: this.$t('global.cancel'), + type: 'info' + }).then(() => { + const stepList = JSON.parse(resp.data.stepJson); + jumpToTraining(this.$route.query.group, stepList[stepList.length - 1].id).then(()=>{ + this.$message.success('开始快速仿真!'); + }).catch(e => this.$message.error('开始快速仿真失败!')); + }); + } }).catch((e) => { console.error(e); this.$emit('updateDetails', {}); diff --git a/src/views/organization/trainingManage/editTraining.vue b/src/views/organization/trainingManage/editTraining.vue index 18360f47b..0be52bbdf 100644 --- a/src/views/organization/trainingManage/editTraining.vue +++ b/src/views/organization/trainingManage/editTraining.vue @@ -53,7 +53,7 @@ diff --git a/src/views/system/deviceManage/editConfigScreen.vue b/src/views/system/deviceManage/editConfigScreen.vue index 221aef105..3d32a0964 100644 --- a/src/views/system/deviceManage/editConfigScreen.vue +++ b/src/views/system/deviceManage/editConfigScreen.vue @@ -111,7 +111,7 @@ export default { { prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' }, { prop: 'quadrant', label: '屏幕配置:', type: 'select', options: this.screenList, optionLabel: 'label', optionValue: 'value'}, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, - { prop: 'client', label: '初始客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, + { prop: 'client', label: '初始客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }, { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } ] }; @@ -121,7 +121,7 @@ export default { items: [ { prop: 'deviceCode', label: '教研机:', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code' }, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, - { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, + { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }, { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } ] }; @@ -131,7 +131,7 @@ export default { items: [ { prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'}, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, - { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, + { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }, { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } ] }; @@ -141,7 +141,7 @@ export default { items: [ { prop: 'deviceCode', label: '教研机', type: 'select', options: this.deviceList, optionLabel: 'code', optionValue: 'code'}, { prop: 'roleCode', label: '关联角色:', type: 'select', options: this.roleList, optionLabel: 'label', optionValue: 'value' }, - { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'label', optionValue: 'value' }, + { prop: 'client', label: '关联客户端:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' }, { prop: 'clientList', label: '客户端列表:', type: 'select', options: this.clientList, optionLabel: 'name', optionValue: 'id' } ] }; diff --git a/src/views/system/deviceManage/index.vue b/src/views/system/deviceManage/index.vue index ce1f709bc..cf7b1a263 100644 --- a/src/views/system/deviceManage/index.vue +++ b/src/views/system/deviceManage/index.vue @@ -187,7 +187,7 @@ export default { }); }, editConfig(index, row) { - const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT', 'PIS_STAND', 'PIS_TRAIN']; + const configGatewayList = ['SWITCH', 'SIGNAL', 'PSD', 'PSL', 'PSC', 'UDP_LOW', 'SECTION', 'TRAIN', 'UDP_CLIENT', 'PIS_STAND', 'PIS_TRAIN', 'PIS', 'TMS']; if (['LW', 'VR_IBP', 'ISCS_LW', 'ISCS_CW', 'IM', 'CW', 'DRIVE', 'DEPOT'].includes(row.type)) { this.$refs.editConfig.doShow(row); } else if (configGatewayList.includes(row.type)) {