This commit is contained in:
sunzhenyu 2020-07-14 09:25:11 +08:00
commit 006fd8f0a3
67 changed files with 951 additions and 771 deletions

View File

@ -31,6 +31,11 @@ export default {
this.subscribeMessage(val); this.subscribeMessage(val);
} }
}, },
'$store.state.socket.roomInvite': function (val) {
if (val.creator) {
this.subscribeMessage(val);
}
},
'$store.state.socket.beLogoutCount': async function(val) { '$store.state.socket.beLogoutCount': async function(val) {
this.$store.dispatch('disconnect').then(()=>{ this.$store.dispatch('disconnect').then(()=>{
this.$alert(this.$t('tip.logoutTips'), this.$t('tip.hint'), { this.$alert(this.$t('tip.logoutTips'), this.$t('tip.hint'), {
@ -74,6 +79,7 @@ export default {
this.$refs.deomonTopic.doShow(res); this.$refs.deomonTopic.doShow(res);
} }
this.$store.dispatch('socket/setSimulationInvite'); this.$store.dispatch('socket/setSimulationInvite');
this.$store.dispatch('socket/setRoomInvite');
} }
}, },
subscribe() { subscribe() {

View File

@ -142,7 +142,8 @@ export function loadDraftScript(scriptId, memberId, group) {
/** 剧本预览选择角色 */ /** 剧本预览选择角色 */
export function loadDraftScriptNew(memberId, group) { export function loadDraftScriptNew(memberId, group) {
return request({ return request({
url: `/simulation/${group}/choosePlay?memberId=${memberId}`, // url: `/simulation/${group}/choosePlay?memberId=${memberId}`,
url: `/api/scriptSimulation/${group}/chooseMember/${memberId}/StartScript`,
method: 'put' method: 'put'
}); });
} }

View File

@ -77,9 +77,9 @@ export function getAllDeviceInProject(params) {
}); });
} }
/** 添加/修改ibp设备配置 */ /** 添加/修改ibp设备配置 */
export function setIbpConfig(id, data) { export function setVrIbpConfig(id, data) {
return request({ return request({
url: `/api/device/${id}/config/ibp`, url: `/api/device/${id}/config/vribp`,
method: 'put', method: 'put',
data: data data: data
}); });

View File

@ -757,13 +757,6 @@ export function getTrainDetailBytripNumber(group, params) {
params: params params: params
}); });
} }
/** 根据memberId获取综合演练角色信息 */
export function getMemberInfo(group, memberId) {
return request({
url: `/simulation/${group}/${memberId}/memberInfo`,
method: 'get'
});
}
/** 获取新版综合仿真仿真成员列表 */ /** 获取新版综合仿真仿真成员列表 */
export function getSimulationMemberList(group) { export function getSimulationMemberList(group) {
return request({ return request({

View File

@ -96,8 +96,8 @@ export default {
synthesisTrainingTitle: 'Synthesis Training Fast Entrance', synthesisTrainingTitle: 'Synthesis Training Fast Entrance',
pleaseChooseRoom: 'You did not choose a room', pleaseChooseRoom: 'You did not choose a room',
inviteJoinRoom: 'Invite you to join the synthesis training!', inviteJoinRoom: 'Invite you to join the synthesis training!',
trainingHasStart: "{name}'s room (starting)", trainingHasStart: "{name}'s room",
trainingNotStart: "{name}'s room (not starting)", trainingNotStart: "{name}'s room",
inputRoomNumber: 'Please enter the room number.', inputRoomNumber: 'Please enter the room number.',
chooseRoom: 'Choose Room', chooseRoom: 'Choose Room',
codeError: 'The captcha is incorrect', codeError: 'The captcha is incorrect',

View File

@ -63,7 +63,7 @@ export default {
examRuleMaking: 'Exam Rule Making', examRuleMaking: 'Exam Rule Making',
testName: 'Test name', testName: 'Test name',
inputTestName: 'Please input test name', inputTestName: 'Please input test name',
testScope: 'Test scope', testScope: 'Attribution course',
selectTestScope: 'Please select test scope', selectTestScope: 'Please select test scope',
testDuration: 'duration', testDuration: 'duration',
testDate: 'Test time', testDate: 'Test time',

View File

@ -97,8 +97,8 @@ export default {
synthesisTrainingTitle: '综合演练快速入口', synthesisTrainingTitle: '综合演练快速入口',
pleaseChooseRoom: '您没有选择房间', pleaseChooseRoom: '您没有选择房间',
inviteJoinRoom: '邀请你加入综合演练!', inviteJoinRoom: '邀请你加入综合演练!',
trainingHasStart: '{name}的房间(已开始)', trainingHasStart: '{name}的房间',
trainingNotStart: '{name}的房间(未开始)', trainingNotStart: '{name}的房间',
inputRoomNumber: '请输入房间号', inputRoomNumber: '请输入房间号',
chooseRoom: '选择房间', chooseRoom: '选择房间',
month: '月', month: '月',

View File

@ -65,7 +65,7 @@ export default {
examRuleMaking: '考试规则制定', examRuleMaking: '考试规则制定',
testName: '试卷名称', testName: '试卷名称',
inputTestName: '请填写试卷名称', inputTestName: '请填写试卷名称',
testScope: '试题范围', testScope: '归属课程',
selectTestScope: '请选择试题范围', selectTestScope: '请选择试题范围',
testDuration: '时长', testDuration: '时长',
testDate: '考试时间', testDate: '考试时间',

View File

@ -12,12 +12,14 @@
<train-set-head ref="trainSetHead" /> <train-set-head ref="trainSetHead" />
<train-set-work ref="trainSetWork" /> <train-set-work ref="trainSetWork" />
<train-flag ref="trainFlag" /> <train-flag ref="trainFlag" />
<set-fault ref="setFault" pop-class="beijing-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperateMode } from '@/scripts/ConstDic'; import { OperateMode } from '@/scripts/ConstDic';
import { DeviceMenu } from '@/scripts/ConstDic'; import { DeviceMenu } from '@/scripts/ConstDic';
@ -31,9 +33,10 @@ import TrainDeletePlan from './dialog/trainDeletePlan';
import TrainSetHead from './dialog/trainSetHead'; import TrainSetHead from './dialog/trainSetHead';
import TrainSetWork from './dialog/trainSetWork'; import TrainSetWork from './dialog/trainSetWork';
import TrainFlag from './dialog/trainFlag'; import TrainFlag from './dialog/trainFlag';
import { mouseCancelState } from '@/jmapNew/theme/components/utils/menuItemStatus'; // import { mouseCancelState } from '@/jmapNew/theme/components/utils/menuItemStatus';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
// import CMD from '@/scripts/cmdPlugin/CommandEnum'; // import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default { export default {
@ -50,7 +53,8 @@ export default {
TrainDeletePlan, TrainDeletePlan,
TrainSetHead, TrainSetHead,
TrainSetWork, TrainSetWork,
TrainFlag TrainFlag,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -216,6 +220,14 @@ export default {
{ {
label: '取消通信故障', label: '取消通信故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
@ -261,7 +273,8 @@ export default {
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT) {
this.menu = [...this.menuForce, ...this.menuSpeed]; this.menu = [...this.menuForce];
// ...this.menuSpeed
} }
// this.menu = menuConvert(this.menu); // this.menu = menuConvert(this.menu);
@ -282,42 +295,30 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const operate = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.stoppage.menu.operation
};
mouseCancelState(this.selected);
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(operate);
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const operate = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.cancelStoppage.menu.operation
};
mouseCancelState(this.selected);
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => { });
this.$refs.noticeInfo.doShow(operate); },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
}); });
}, },
// //

View File

@ -2,18 +2,21 @@
<div> <div>
<pop-menu ref="popMenu" :menu="menu" /> <pop-menu ref="popMenu" :menu="menu" />
<notice-info ref="noticeInfo" pop-class="chengdou-01__system" /> <notice-info ref="noticeInfo" pop-class="chengdou-01__system" />
<set-fault ref="setFault" pop-class="chengdou-01__system" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
// import CMD from '@/scripts/cmdPlugin/CommandEnum'; // import CMD from '@/scripts/cmdPlugin/CommandEnum';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import CancelMouseState from '@/mixin/CancelMouseState'; import CancelMouseState from '@/mixin/CancelMouseState';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -22,7 +25,8 @@ export default {
NoticeInfo NoticeInfo
}, },
mixins: [ mixins: [
CancelMouseState CancelMouseState,
SetFault
], ],
props: { props: {
selected: { selected: {
@ -129,6 +133,14 @@ export default {
{ {
label: '取消通信故障', label: '取消通信故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
@ -190,44 +202,30 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const operate = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.stoppage.menu.operation
};
this.mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(operate);
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const operate = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.cancelStoppage.menu.operation
};
this.mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => { });
this.$refs.noticeInfo.doShow(operate); },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
}); });
}, },
// //

View File

@ -8,12 +8,14 @@
<train-move-number ref="trainMoveNumber" /> <train-move-number ref="trainMoveNumber" />
<train-delete-number ref="trainDeleteNumber" /> <train-delete-number ref="trainDeleteNumber" />
<train-detail-info ref="trainDetailInfo" /> <train-detail-info ref="trainDetailInfo" />
<set-fault ref="setFault" pop-class="chengdou-03__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import TrainControl from './dialog/trainControl'; import TrainControl from './dialog/trainControl';
@ -26,6 +28,7 @@ import CancelMouseState from '@/mixin/CancelMouseState';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -37,7 +40,8 @@ export default {
TrainMoveNumber, TrainMoveNumber,
TrainCreateNumber, TrainCreateNumber,
TrainDeleteNumber, TrainDeleteNumber,
TrainDetailInfo TrainDetailInfo,
SetFault
}, },
mixins: [ mixins: [
CancelMouseState CancelMouseState
@ -112,6 +116,14 @@ export default {
{ {
label: '取消通信故障', label: '取消通信故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
@ -170,44 +182,30 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const operate = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.stoppage.menu.operation
};
this.mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(operate);
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const operate = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.cancelStoppage.menu.operation
};
this.mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => { });
this.$refs.noticeInfo.doShow(operate); },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
}); });
}, },
// //

View File

@ -62,7 +62,7 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {getMemberInfo} from '@/api/simulation'; import {SimulationType} from '@/scripts/ConstDic';
export default { export default {
name: 'RequestControl', name: 'RequestControl',
@ -191,11 +191,23 @@ export default {
}); });
}, },
doShow(msgHead) { doShow(msgHead) {
getMemberInfo(this.$route.query.group, msgHead.sourceMemberId).then(resp => { const member = this.$store.state.training.memberData[msgHead.sourceMemberId];
if (resp.data && resp.data.deviceName && resp.data.name) { const simulationUserList = this.$store.state.training.simulationUserList;
this.requestInfo = `${ resp.data.deviceName}(${resp.data.name})`; if (member) {
let info = SimulationType[member.type];
if (member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
info = info + `(${device.name})`;
} }
}); if (member.userId) {
simulationUserList.forEach(item => {
if (item.userId === member.userId) {
info = info + '-' + item.nickName;
}
});
}
this.requestInfo = info;
}
this.dialogShow = true; this.dialogShow = true;
this.disabledAgree = true; this.disabledAgree = true;
this.createTimer(); this.createTimer();

View File

@ -108,7 +108,11 @@ export default {
selected._type = ''; selected._type = '';
} }
} }
this.deviceName = deviceType[selected._type] + '-' + selected.name; let name = selected.name;
if (selected._type == 'Train') {
name = selected.serviceNumber;
}
this.deviceName = deviceType[selected._type] + '-' + name;
this.faultList = deviceFaultType[selected._type]; this.faultList = deviceFaultType[selected._type];
if (this.faultList && this.faultList.length) { if (this.faultList && this.faultList.length) {
this.form.faultType = this.faultList[0].value; this.form.faultType = this.faultList[0].value;

View File

@ -405,6 +405,16 @@ export const menuOperate = {
createPlanTrain:{ createPlanTrain:{
operation: OperationEvent.Train.createPlanTrain.menu.operation, operation: OperationEvent.Train.createPlanTrain.menu.operation,
cmdType: CMD.Section.CMD_Train_Init_Plan cmdType: CMD.Section.CMD_Train_Init_Plan
},
// 确认列车行驶之前方站台
nextStation:{
operation: OperationEvent.Train.nextStation.menu.operation,
cmdType: CMD.Driver.CMD_DRIVER_NEXT_STATION
},
// 进路闭塞法行车
routeBlockRun:{
operation: OperationEvent.Train.routeBlockRun.menu.operation,
cmdType: CMD.Driver.CMD_DRIVER_BLOCK_ROUTE
} }
} }

View File

@ -12,12 +12,14 @@
<train-set-head ref="trainSetHead" /> <train-set-head ref="trainSetHead" />
<train-set-work ref="trainSetWork" /> <train-set-work ref="trainSetWork" />
<trainSetWorkATP ref="trainSetWorkATP" /> <trainSetWorkATP ref="trainSetWorkATP" />
<set-fault ref="setFault" pop-class="foshan-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import TrainDelete from './dialog/trainDelete'; import TrainDelete from './dialog/trainDelete';
import TrainDefine from './dialog/trainDefine'; import TrainDefine from './dialog/trainDefine';
import TrainMove from './dialog/trainMove'; import TrainMove from './dialog/trainMove';
@ -35,6 +37,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -50,7 +53,8 @@ export default {
// TrainDeletePlan, // TrainDeletePlan,
TrainSetHead, TrainSetHead,
TrainSetWork, TrainSetWork,
trainSetWorkATP trainSetWorkATP,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -121,6 +125,14 @@ export default {
{ {
label: '取消通信故障', label: '取消通信故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
@ -180,42 +192,30 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const step = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.stoppage.menu.operation,
cmdType: CMD.Train.CMD_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => {
this.$refs.noticeInfo.doShow();
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const step = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.cancelStoppage.menu.operation,
cmdType: CMD.Train.CMD_CANCEL_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => { });
this.$refs.noticeInfo.doShow(); },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
}); });
}, },
// //

View File

@ -62,7 +62,7 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {getMemberInfo} from '@/api/simulation'; import {SimulationType} from '@/scripts/ConstDic';
export default { export default {
name: 'RequestControl', name: 'RequestControl',
@ -190,11 +190,23 @@ export default {
}); });
}, },
doShow(msgHead) { doShow(msgHead) {
getMemberInfo(this.$route.query.group, msgHead.sourceMemberId).then(resp => { const member = this.$store.state.training.memberData[msgHead.sourceMemberId];
if (resp.data && resp.data.deviceName && resp.data.name) { const simulationUserList = this.$store.state.training.simulationUserList;
this.requestInfo = `${ resp.data.deviceName}(${resp.data.name})`; if (member) {
let info = SimulationType[member.type];
if (member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
info = info + `(${device.name})`;
} }
}); if (member.userId) {
simulationUserList.forEach(item => {
if (item.userId === member.userId) {
info = info + '-' + item.nickName;
}
});
}
this.requestInfo = info;
}
this.dialogShow = true; this.dialogShow = true;
this.disabledAgree = true; this.disabledAgree = true;
this.createTimer(); this.createTimer();

View File

@ -7,12 +7,14 @@
<train-move ref="trainMove" /> <train-move ref="trainMove" />
<train-switch ref="trainSwitch" /> <train-switch ref="trainSwitch" />
<train-edit-number ref="trainEditNumber" /> <train-edit-number ref="trainEditNumber" />
<set-fault ref="setFault" pop-class="fuzhou-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
@ -23,6 +25,7 @@ import TrainMove from './dialog/trainMove';
import TrainSwitch from './dialog/trainSwitch'; import TrainSwitch from './dialog/trainSwitch';
import TrainEditNumber from './dialog/trainEditNumber'; import TrainEditNumber from './dialog/trainEditNumber';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -33,7 +36,8 @@ export default {
TrainDelete, TrainDelete,
TrainMove, TrainMove,
TrainSwitch, TrainSwitch,
TrainEditNumber TrainEditNumber,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -84,13 +88,20 @@ export default {
menuForce: [ menuForce: [
{ {
label: this.$t('menu.menuTrain.setCommunicationFault'), label: this.$t('menu.menuTrain.setCommunicationFault'),
handler: this.undeveloped, handler: this.setStoppage
cmdType:CMD.Train.CMD_TRAIN_ADD_FAULT
}, },
{ {
label: this.$t('menu.menuTrain.cancelCommunicationFault'), label: this.$t('menu.menuTrain.cancelCommunicationFault'),
handler: this.undeveloped, handler: this.undeveloped,
cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
@ -145,7 +156,8 @@ export default {
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT) {
this.menu = [...this.menuForce, ...this.menuSpeed]; this.menu = [...this.menuForce];
// ...this.menuSpeed
} }
}, },
doShow(point) { doShow(point) {
@ -164,44 +176,31 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
// const step = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
// start: true, if (valid) {
// operation: OperationEvent.Train.stoppage.menu.operation, this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
// cmdType: CMD.Train.CMD_STOPPAGE, }
// param: { });
// code: this.selected.code
// }
// };
// this.$store.dispatch('training/next', step).then(({ valid }) => {
// if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// } else {
// this.$refs.noticeInfo.doShow(step);
// }
// }).catch(() => {
// this.$refs.noticeInfo.doShow(step);
// });
}, },
// //
cancelStoppage() { cancelStoppage() {
// const step = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
// start: true, if (valid) {
// this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
// operation: OperationEvent.Train.cancelStoppage.menu.operation, }
// cmdType: CMD.Train.CMD_CANCEL_STOPPAGE, });
// param: { },
// code: this.selected.code nextStation() {
// } commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
// }; }).catch((error) => {
// this.$store.dispatch('training/next', step).then(({ valid }) => { this.$refs.noticeInfo.doShow(error.message);
// if (valid) { });
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); },
// } else { routeBlockRun() {
// this.$refs.noticeInfo.doShow(step); commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
// } }).catch((error) => {
// }).catch(() => { this.$refs.noticeInfo.doShow(error.message);
// this.$refs.noticeInfo.doShow(step); });
// });
}, },
// //
limitSpeed() { limitSpeed() {

View File

@ -62,7 +62,7 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {getMemberInfo} from '@/api/simulation'; import {SimulationType} from '@/scripts/ConstDic';
export default { export default {
name: 'RequestControl', name: 'RequestControl',
@ -190,11 +190,23 @@ export default {
}); });
}, },
doShow(msgHead) { doShow(msgHead) {
getMemberInfo(this.$route.query.group, msgHead.sourceMemberId).then(resp => { const member = this.$store.state.training.memberData[msgHead.sourceMemberId];
if (resp.data && resp.data.deviceName && resp.data.name) { const simulationUserList = this.$store.state.training.simulationUserList;
this.requestInfo = `${ resp.data.deviceName}(${resp.data.name})`; if (member) {
let info = SimulationType[member.type];
if (member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
info = info + `(${device.name})`;
} }
}); if (member.userId) {
simulationUserList.forEach(item => {
if (item.userId === member.userId) {
info = info + '-' + item.nickName;
}
});
}
this.requestInfo = info;
}
this.dialogShow = true; this.dialogShow = true;
this.disabledAgree = true; this.disabledAgree = true;
this.createTimer(); this.createTimer();

View File

@ -1,13 +1,13 @@
<template> <template>
<div class="menus" :style="{width: width + 'px'}"> <div class="menus" :style="{width: width + 'px'}">
<menu-cancel ref="menuCancel" /> <menu-cancel ref="menuCancel" />
<menu-bar v-if="isShowBar" ref="menuBar" :selected="selected" /> <menu-bar v-if="$store.state.training.prdType === '01'" ref="menuBar" :selected="selected" />
<menu-station-stand ref="menuStationStand" :selected="selected" /> <!--<menu-station-stand ref="menuStationStand" :selected="selected" />-->
<menu-switch ref="menuSwitch" :selected="selected" /> <!--<menu-switch ref="menuSwitch" :selected="selected" />-->
<menu-signal ref="menuSignal" :selected="selected" /> <!--<menu-signal ref="menuSignal" :selected="selected" />-->
<menu-section ref="menuSection" :selected="selected" /> <!--<menu-section ref="menuSection" :selected="selected" />-->
<menu-train ref="menuTrain" :selected="selected" /> <menu-train ref="menuTrain" :selected="selected" />
<menu-station ref="menuStation" :selected="selected" /> <!--<menu-station ref="menuStation" :selected="selected" />-->
<menu-button v-if="isShowBar" ref="menuButton" :selected="selected" /> <menu-button v-if="isShowBar" ref="menuButton" :selected="selected" />
<passive-alarm ref="passiveAlarm" /> <passive-alarm ref="passiveAlarm" />
<passive-contorl ref="passiveControl" /> <passive-contorl ref="passiveControl" />
@ -59,7 +59,7 @@ export default {
'width' 'width'
]), ]),
isShowBar() { isShowBar() {
return this.$store.state.training.prdType === '01' && this.$store.state.training.prdType !== '07'; return this.$store.state.training.prdType === '01' || this.$store.state.training.prdType === '02';
} }
}, },
watch: { watch: {

View File

@ -7,7 +7,7 @@
<el-row class="nav-border-row"> <el-row class="nav-border-row">
<template v-for="(item, index) in centralizedStationList"> <template v-for="(item, index) in centralizedStationList">
<div :key="index" class="nav-border-row row-width-box flex-row"> <div :key="index" class="nav-border-row row-width-box flex-row">
<div v-if="item.name" :id="item.operate.domId" class="fake-button-active" :class="{'active': item.show}" @click="clickCommand(item)">{{ item.name }}</div> <div v-if="item.name" :id="item.operate.domId" class="fake-button-active" :class="{'active': item.show}" :style="{background: item.securityCommand ? '#87CEFA': '#E0E0E0'}" @click="clickCommand(item)">{{ item.name }}</div>
<div v-else class="fake-button" /> <div v-else class="fake-button" />
</div> </div>
</template> </template>
@ -31,7 +31,6 @@
class="haerbin_table" class="haerbin_table"
highlight-current-row highlight-current-row
:show-header="false" :show-header="false"
@row-click="clickEvent"
> >
<el-table-column prop="name" style="margin-left:10px" class-name="abc" /> <el-table-column prop="name" style="margin-left:10px" class-name="abc" />
</el-table> </el-table>
@ -85,48 +84,9 @@ export default {
oldClickObj: null, // oldClickObj: null, //
route: null, // route: null, //
centralizedStationList: new Array(15).fill({}), centralizedStationList: new Array(15).fill({}),
swicthParamList: [ ciStationParamList: [],
{ name: '封锁道岔', cmdType: CMD.Switch.CMD_SWITCH_BLOCK, operate: OperationEvent.Switch.block.menu, show: false }, startVirtual: false,
{ name: '解封道岔', cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK, operate: OperationEvent.Switch.unblock.menu, show: false }, endVirtual: false
{ name: '取消锁定', cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK, operate: OperationEvent.Switch.unlock.menu, show: false },
{ name: '单锁道岔', cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK, operate: OperationEvent.Switch.lock.menu, show: false },
{ name: '转换定位', cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION, operate: OperationEvent.Switch.locate.menu, show: false },
{ name: '转换反位', cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION, operate: OperationEvent.Switch.reverse.menu, show: false },
{ name: '封锁区段', cmdType: CMD.Switch.CMD_SWITCH_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show: false },
{ name: '解封区段', cmdType: CMD.Switch.CMD_SWITCH_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menu, show: false },
{ name: '轨区消限', cmdType: CMD.Switch.CMD_SWITCH_CANCEL_LIMIT_SPEED, operate: OperationEvent.Switch.cancelSpeed.menu, show: false },
{ name: '轨区设限', cmdType: CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED, operate: OperationEvent.Switch.setSpeed.menu, show: false },
{ name: '强解区段', cmdType: CMD.Switch.CMD_SWITCH_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menu, show: false }
],
signalParamList: [
{ name: '追踪单开', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.setAutoInterlock.menu, show: false },
{ name: '追踪单关', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.cancelAutoInterlock.menu, show: false },
{ name: '自排单开', cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING, operate: OperationEvent.Signal.atsAutoControl.menu, show: false },
{ name: '自排单关', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING, operate: OperationEvent.Signal.humanControl.menu, show: false },
{ name: '重复开放', cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL, operate: OperationEvent.Signal.reopenSignal.menu, show: false },
{ name: '封锁信号', cmdType: CMD.Signal.CMD_SIGNAL_BLOCK, operate: OperationEvent.Signal.lock.menu, show: false },
{ name: '解封信号', cmdType: CMD.Signal.CMD_SIGNAL_UNBLOCK, operate: OperationEvent.Signal.unlock.menu, show: false },
{ name: '关单信号', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menu, show: false }
],
routeParamList: [
{ name: 'ATP进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消ATP', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '引导进路', cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, operate: OperationEvent.Signal.guide.menu, show: false },
{ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE, operate: OperationEvent.Signal.humanTrainRoute.menu, show: false }
],
sectionParamList: [
{ name: '封锁区段', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show: false },
{ name: '解封区段', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menu, show: false },
{ name: '轨区消限', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menu, show: false },
{ name: '轨区设限', cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED, operate: OperationEvent.Section.setSpeed.menu, show: false },
{ name: '强解区段', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menu, show: false }
],
stationParamList: [
{ name: '关站信号', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false } //
],
ciStationParamList: []
}; };
}, },
computed: { computed: {
@ -135,6 +95,118 @@ export default {
]), ]),
commandId() { commandId() {
return OperationEvent.Command.commandHaerbin.confirm.domId; return OperationEvent.Command.commandHaerbin.confirm.domId;
},
basicParamList() {
return this.$store.state.training.prdType === '01' ? [
{ name: '接收控制', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '交出控制', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '强行站控', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false, securityCommand: true },
{ name: '重启另解', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false, securityCommand: true },
{ name: '追踪全开', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '追踪全关', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '关区信号', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '自排全开', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false },
{ name: '自排全关', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show:false }
] : [];
},
sectionParamList() {
return this.$store.state.training.prdType === '01' ? [
{ name: '封锁区段', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show: false },
{ name: '解封区段', cmdType: CMD.Section.CMD_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menu, show: false, securityCommand: true },
{ name: '轨区消限', cmdType: CMD.Section.CMD_SECTION_CANCEL_LIMIT_SPEED, operate: OperationEvent.Section.cancelSpeed.menu, show: false, securityCommand: true },
{ name: '轨区设限', cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED, operate: OperationEvent.Section.setSpeed.menu, show: false, securityCommand: true },
{ name: '强解区段', cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menu, show: false, securityCommand: true }
] : [
{ name: '封锁区段', cmdType: CMD.Section.CMD_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show: false }
];
},
swicthParamList() {
return this.$store.state.training.prdType === '01' ? [
{ name: '封锁道岔', cmdType: CMD.Switch.CMD_SWITCH_BLOCK, operate: OperationEvent.Switch.block.menu, show: false },
{ name: '解封道岔', cmdType: CMD.Switch.CMD_SWITCH_UNBLOCK, operate: OperationEvent.Switch.unblock.menu, show: false, securityCommand: true },
{ name: '取消锁定', cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK, operate: OperationEvent.Switch.unlock.menu, show: false, securityCommand: true },
{ name: '单锁道岔', cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK, operate: OperationEvent.Switch.lock.menu, show: false },
{ name: '转换定位', cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION, operate: OperationEvent.Switch.locate.menu, show: false },
{ name: '转换反位', cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION, operate: OperationEvent.Switch.reverse.menu, show: false },
{ name: '封锁区段', cmdType: CMD.Switch.CMD_SWITCH_SECTION_BLOCK, operate: OperationEvent.Section.lock.menu, show: false },
{ name: '解封区段', cmdType: CMD.Switch.CMD_SWITCH_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menu, show: false, securityCommand: true },
{ name: '轨区消限', cmdType: CMD.Switch.CMD_SWITCH_CANCEL_LIMIT_SPEED, operate: OperationEvent.Switch.cancelSpeed.menu, show: false, securityCommand: true },
{ name: '轨区设限', cmdType: CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED, operate: OperationEvent.Switch.setSpeed.menu, show: false, securityCommand: true},
{ name: '强解区段', cmdType: CMD.Switch.CMD_SWITCH_FAULT_UNLOCK, operate: OperationEvent.Section.fault.menu, show: false, securityCommand: true }
] : [
{ name: '封锁道岔', cmdType: CMD.Switch.CMD_SWITCH_BLOCK, operate: OperationEvent.Switch.block.menu, show: false },
{ name: '单锁道岔', cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK, operate: OperationEvent.Switch.lock.menu, show: false },
{ name: '转换定位', cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION, operate: OperationEvent.Switch.locate.menu, show: false },
{ name: '转换反位', cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION, operate: OperationEvent.Switch.reverse.menu, show: false },
{ name: '解封区段', cmdType: CMD.Switch.CMD_SWITCH_SECTION_UNBLOCK, operate: OperationEvent.Section.unlock.menu, show: false}
];
},
signalParamList() {
return this.$store.state.training.prdType === '01' ? [
{ name: '追踪单开', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.setAutoInterlock.menu, show: false },
{ name: '追踪单关', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.cancelAutoInterlock.menu, show: false },
{ name: '自排单开', cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING, operate: OperationEvent.Signal.atsAutoControl.menu, show: false },
{ name: '自排单关', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING, operate: OperationEvent.Signal.humanControl.menu, show: false },
{ name: '重复开放', cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL, operate: OperationEvent.Signal.reopenSignal.menu, show: false },
{ name: '封锁信号', cmdType: CMD.Signal.CMD_SIGNAL_BLOCK, operate: OperationEvent.Signal.lock.menu, show: false },
{ name: '解封信号', cmdType: CMD.Signal.CMD_SIGNAL_UNBLOCK, operate: OperationEvent.Signal.unlock.menu, show: false, securityCommand: true },
{ name: '关单信号', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menu, show: false }
] : [
{ name: '追踪单开', cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO, operate: OperationEvent.Signal.setAutoInterlock.menu, show: false },
{ name: '追踪单关', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO, operate: OperationEvent.Signal.cancelAutoInterlock.menu, show: false },
{ name: '自排单开', cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING, operate: OperationEvent.Signal.atsAutoControl.menu, show: false },
{ name: '自排单关', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING, operate: OperationEvent.Signal.humanControl.menu, show: false },
{ name: '封锁信号', cmdType: CMD.Signal.CMD_SIGNAL_BLOCK, operate: OperationEvent.Signal.lock.menu, show: false },
{ name: '重复开放', cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL, operate: OperationEvent.Signal.reopenSignal.menu, show: false },
{ name: '关单信号', cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL, operate: OperationEvent.Signal.signalClose.menu, show: false }
];
},
stationParamList() {
return this.$store.state.training.prdType === '01' ? [
{ name: '关站信号', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menu, show: false } //
] : [
{ name: '接收控制', cmdType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL, operate: OperationEvent.StationControl.requestStationControl.menu, show: false },
{ name: '交出控制', cmdType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL, operate: OperationEvent.StationControl.requestCentralControl.menu, show: false },
{ name: '追踪全开', cmdType: CMD.Station.CMD_STATION_SET_CI_AUTO_TRIGGER, operate: OperationEvent.Station.setAutoTrigger.menu, show: false },
{ name: '追踪全关', cmdType: CMD.Station.CMD_STATION_CANCEL_CI_AUTO_TRIGGER, operate: OperationEvent.Station.cancelAutoTrigger.menu, show: false },
{ name: '关区信号', cmdType: CMD.Station.CMD_STATION_CIAREA_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.ciAreaCloseAllSignal.menu, show: false },
{ name: '自排全开', cmdType: CMD.Section.CMD_STATION_OPEN_AUTO_SETTING, operate: OperationEvent.Station.atsAutoControlALL.menu, show: false },
{ name: '自排全关', cmdType: CMD.Section.CMD_STATION_CLOSE_AUTO_SETTING, operate: OperationEvent.Station.humanControlALL.menu, show: false },
{ name: '关站信号', cmdType: CMD.Station.CMD_STATION_CLOSE_ALLSIGNAL, operate: OperationEvent.Station.closeAllSignal.menu, show: false }
];
},
routeParamList() {
if (this.$store.state.training.prdType === '01') {
return [
{ name: 'ATP进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消ATP', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '引导进路', cmdType: CMD.Signal.CMD_SIGNAL_ROUTE_GUIDE, operate: OperationEvent.Signal.guide.menu, show: false, securityCommand: true },
{ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE, operate: OperationEvent.Signal.humanTrainRoute.menu, show: false }
];
} else if (this.$store.state.training.prdType === '02' && this.startVirtual) {
return [
{ name: 'ATP进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消ATP', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false }
];
} else if (this.$store.state.training.prdType === '02' && this.endVirtual) {
return [
{ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE, operate: OperationEvent.Signal.humanTrainRoute.menu, show: false },
{ name: 'ATP进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消ATP', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false }
];
} else if (this.$store.state.training.prdType === '02') {
return [
{ name: '联锁进路', cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE, operate: OperationEvent.Signal.arrangementRoute.menu, show: false },
{ name: '取消联锁', cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE, operate: OperationEvent.Signal.cancelTrainRoute.menu, show: false },
{ name: '取消引导', cmdType: CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE, operate: OperationEvent.Signal.humanTrainRoute.menu, show: false }
];
} else {
return [];
}
} }
}, },
watch: { watch: {
@ -176,9 +248,14 @@ export default {
}).catch((error) => { }).catch((error) => {
this.$refs.noticeInfo.doShow({}, error.message); this.$refs.noticeInfo.doShow({}, error.message);
}); });
} else {
this.handleBasicMenu();
} }
} }
}, },
mounted() {
this.handleBasicMenu();
},
methods: { methods: {
// //
deviceHighLight(device, flag) { deviceHighLight(device, flag) {
@ -289,6 +366,10 @@ export default {
this.route = null; this.route = null;
this.routeList.forEach(item => { this.routeList.forEach(item => {
if (item.startSignalCode == this.oldClickObj.code && item.endSignalCode == this.selected.code) { if (item.startSignalCode == this.oldClickObj.code && item.endSignalCode == this.selected.code) {
const startSignal = this.$store.getters['map/getDeviceByCode'](item.startSignalCode);
const endSignal = this.$store.getters['map/getDeviceByCode'](item.endSignalCode);
this.startVirtual = startSignal.virtual;
this.endVirtual = endSignal.virtual;
this.route = item; this.route = item;
} }
}); });
@ -316,6 +397,18 @@ export default {
speedLimitValue: '5' speedLimitValue: '5'
}; };
}, },
handleBasicMenu() {
this.centralizedStationList = new Array(15).fill({});
this.basicParamList.forEach((basic, index) => {
this.centralizedStationList[index] = basic;
});
this.tempData = [];
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.map.showCentralizedStationCode);
this.tempData.push(station);
this.param = {
stationCode: this.$store.state.map.showCentralizedStationCode
};
},
handleStationMenu() { handleStationMenu() {
this.centralizedStationList = new Array(15).fill({}); this.centralizedStationList = new Array(15).fill({});
this.stationParamList.forEach((swicth, index) => { this.stationParamList.forEach((swicth, index) => {
@ -348,7 +441,6 @@ export default {
const step = { const step = {
over: true, over: true,
cmdType: this.cmdType, cmdType: this.cmdType,
// operation: this.operate,
operation: OperationEvent.Command.commandHaerbin.confirm.operation, operation: OperationEvent.Command.commandHaerbin.confirm.operation,
param: this.param param: this.param
}; };

View File

@ -7,12 +7,14 @@
<train-move ref="trainMove" /> <train-move ref="trainMove" />
<train-switch ref="trainSwitch" /> <train-switch ref="trainSwitch" />
<train-edit-number ref="trainEditNumber" /> <train-edit-number ref="trainEditNumber" />
<set-fault ref="setFault" pop-class="haerbin-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
@ -23,6 +25,7 @@ import TrainMove from './dialog/trainMove';
import TrainSwitch from './dialog/trainSwitch'; import TrainSwitch from './dialog/trainSwitch';
import TrainEditNumber from './dialog/trainEditNumber'; import TrainEditNumber from './dialog/trainEditNumber';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -33,7 +36,8 @@ export default {
TrainDelete, TrainDelete,
TrainMove, TrainMove,
TrainSwitch, TrainSwitch,
TrainEditNumber TrainEditNumber,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -64,19 +68,26 @@ export default {
}, },
menuForce: [ menuForce: [
{ {
label: this.$t('menu.menuTrain.setCommunicationFault'), label: '设置故障',
handler: this.setStoppage, handler: this.setStoppage
cmdType:CMD.Train.CMD_TRAIN_ADD_FAULT
}, },
{ {
label: this.$t('menu.menuTrain.cancelCommunicationFault'), label: this.$t('menu.menuTrain.cancelCommunicationFault'),
handler: this.cancelStoppage, handler: this.cancelStoppage,
cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
{ {
label: this.$t('menu.menuTrain.confirmRunToFrontStation'), label: '限速行驶',
handler: this.limitSpeed, handler: this.limitSpeed,
cmdType:CMD.Train.CMD_TRAIN_MANUAL_LIMIT_DRIVE cmdType:CMD.Train.CMD_TRAIN_MANUAL_LIMIT_DRIVE
} }
@ -118,7 +129,8 @@ export default {
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT) {
this.menu = [...this.menuForce, ...this.menuSpeed]; this.menu = [...this.menuForce];
// ...this.menuSpeed
} }
// this.menu = MenuContextHandler.covert(this.menu); // this.menu = MenuContextHandler.covert(this.menu);
@ -139,44 +151,18 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const step = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.stoppage.menu.operation,
cmdType: CMD.Train.CMD_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/next', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(step);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(step);
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const step = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.cancelStoppage.menu.operation,
cmdType: CMD.Train.CMD_CANCEL_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/next', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(step);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(step);
}); });
}, },
// //
@ -200,6 +186,18 @@ export default {
this.$refs.noticeInfo.doShow(step); this.$refs.noticeInfo.doShow(step);
}); });
}, },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
// //
addTrainId() { addTrainId() {
const step = { const step = {

View File

@ -12,12 +12,14 @@
<train-set-head ref="trainSetHead" /> <train-set-head ref="trainSetHead" />
<train-set-work ref="trainSetWork" /> <train-set-work ref="trainSetWork" />
<trainSetWorkATP ref="trainSetWorkATP" /> <trainSetWorkATP ref="trainSetWorkATP" />
<set-fault ref="setFault" pop-class="ningbo-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import TrainDelete from './dialog/trainDelete'; import TrainDelete from './dialog/trainDelete';
import TrainDefine from './dialog/trainDefine'; import TrainDefine from './dialog/trainDefine';
import TrainMove from './dialog/trainMove'; import TrainMove from './dialog/trainMove';
@ -31,7 +33,8 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus'; // import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
import { menuOperate, commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -44,7 +47,8 @@ export default {
TrainSetPlan, TrainSetPlan,
TrainSetHead, TrainSetHead,
TrainSetWork, TrainSetWork,
trainSetWorkATP trainSetWorkATP,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -199,16 +203,24 @@ export default {
menuForce: [ menuForce: [
{ {
label: '设置故障', label: '设置故障',
handler: this.undeveloped handler: this.setStoppage
}, },
{ {
label: '取消故障', label: '取消故障',
handler: this.undeveloped handler: this.cancelStoppage
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
{ {
label: '确认运行至前方站', label: '限速行驶',
handler: this.limitSpeed handler: this.limitSpeed
} }
] ]
@ -263,44 +275,72 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const operate = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.stoppage.menu.operation
};
mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => {
this.$refs.noticeInfo.doShow();
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const operate = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.cancelStoppage.menu.operation
};
mouseCancelState(this.selected);
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => {
this.$refs.noticeInfo.doShow();
}); });
}, },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
// //
// setStoppage() {
// const operate = {
// start: true,
// send: true,
// code: this.selected.code,
// operation: OperationEvent.Train.stoppage.menu.operation
// };
// mouseCancelState(this.selected);
// this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
// if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// } else {
// this.$refs.noticeInfo.doShow();
// }
// }).catch(() => {
// this.$refs.noticeInfo.doShow();
// });
// },
// //
// cancelStoppage() {
// const operate = {
// start: true,
// send: true,
// code: this.selected.code,
// operation: OperationEvent.Train.cancelStoppage.menu.operation
// };
// mouseCancelState(this.selected);
// this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
// if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// } else {
// this.$refs.noticeInfo.doShow();
// }
// }).catch(() => {
// this.$refs.noticeInfo.doShow();
// });
// },
// //
limitSpeed() { limitSpeed() {
const operate = { const operate = {

View File

@ -8,12 +8,14 @@
<train-switch ref="trainSwitch" /> <train-switch ref="trainSwitch" />
<train-edit-number ref="trainEditNumber" /> <train-edit-number ref="trainEditNumber" />
<train-detail ref="trainDetail" /> <train-detail ref="trainDetail" />
<set-fault ref="setFault" pop-class="xian-01__systerm" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
@ -25,6 +27,7 @@ import TrainSwitch from './dialog/trainSwitch';
import TrainEditNumber from './dialog/trainEditNumber'; import TrainEditNumber from './dialog/trainEditNumber';
import TrainDetail from './dialog/trainDetail'; import TrainDetail from './dialog/trainDetail';
import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -36,7 +39,8 @@ export default {
TrainMove, TrainMove,
TrainSwitch, TrainSwitch,
TrainEditNumber, TrainEditNumber,
TrainDetail TrainDetail,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -102,18 +106,25 @@ export default {
menuForce: [ menuForce: [
{ {
label: '设置故障', label: '设置故障',
handler: this.undeveloped, handler: this.setStoppage
cmdType:CMD.Train.CMD_TRAIN_ADD_FAULT
}, },
{ {
label: '取消故障', label: '取消故障',
handler: this.undeveloped, handler: this.undeveloped,
cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT cmdType:CMD.Train.CMD_TRAIN_REMOVE_FAULT
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
{ {
label: this.$t('menu.menuTrain.confirmRunToFrontStation'), label: '限速行驶',
handler: this.limitSpeed, handler: this.limitSpeed,
cmdType:CMD.Train.CMD_TRAIN_MANUAL_LIMIT_DRIVE cmdType:CMD.Train.CMD_TRAIN_MANUAL_LIMIT_DRIVE
} }
@ -154,7 +165,8 @@ export default {
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT) {
this.menu = [...this.menuForce, ...this.menuSpeed]; this.menu = [...this.menuForce];
// ...this.menuSpeed
} }
}, },
doShow(point) { doShow(point) {
@ -172,42 +184,18 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const step = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.stoppage.menu.operation,
cmdType: CMD.Train.CMD_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => {
this.$refs.noticeInfo.doShow();
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const step = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
operation: OperationEvent.Train.cancelStoppage.menu.operation,
cmdType: CMD.Train.CMD_CANCEL_STOPPAGE,
param: {
code: this.selected.code
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow();
} }
}).catch(() => {
this.$refs.noticeInfo.doShow();
}); });
}, },
// //
@ -310,6 +298,18 @@ export default {
} }
}); });
}, },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
undeveloped() { undeveloped() {
this.doClose(); this.doClose();
this.$alert('实现中......', '提示', { this.$alert('实现中......', '提示', {

View File

@ -62,7 +62,7 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {getMemberInfo} from '@/api/simulation'; import {SimulationType} from '@/scripts/ConstDic';
export default { export default {
name: 'RequestControl', name: 'RequestControl',
@ -190,11 +190,23 @@ export default {
}); });
}, },
doShow(msgHead) { doShow(msgHead) {
getMemberInfo(this.$route.query.group, msgHead.sourceMemberId).then(resp => { const member = this.$store.state.training.memberData[msgHead.sourceMemberId];
if (resp.data && resp.data.deviceName && resp.data.name) { const simulationUserList = this.$store.state.training.simulationUserList;
this.requestInfo = `${ resp.data.deviceName}(${resp.data.name})`; if (member) {
let info = SimulationType[member.type];
if (member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
info = info + `(${device.name})`;
} }
}); if (member.userId) {
simulationUserList.forEach(item => {
if (item.userId === member.userId) {
info = info + '-' + item.nickName;
}
});
}
this.requestInfo = info;
}
this.dialogShow = true; this.dialogShow = true;
this.disabledAgree = true; this.disabledAgree = true;
this.createTimer(); this.createTimer();

View File

@ -10,12 +10,14 @@
<train-set-work ref="trainSetWork" /> <train-set-work ref="trainSetWork" />
<trainSetWorkATP ref="trainSetWorkATP" /> <trainSetWorkATP ref="trainSetWorkATP" />
<train-destination ref="trainDestination" /> <train-destination ref="trainDestination" />
<set-fault ref="setFault" pop-class="xian-02__system" />
</div> </div>
</template> </template>
<script> <script>
import PopMenu from '@/components/PopMenu/index'; import PopMenu from '@/components/PopMenu/index';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo'; import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import SetFault from '@/jmapNew/theme/components/menus/dialog/setFault';
import TrainDelete from './dialog/trainDelete'; import TrainDelete from './dialog/trainDelete';
import TrainDefine from './dialog/trainDefine'; import TrainDefine from './dialog/trainDefine';
import TrainMove from './dialog/trainMove'; import TrainMove from './dialog/trainMove';
@ -30,6 +32,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { DeviceMenu, OperateMode } from '@/scripts/ConstDic'; import { DeviceMenu, OperateMode } from '@/scripts/ConstDic';
// import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler'; // import MenuContextHandler from '@/scripts/cmdPlugin/MenuContextHandler';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default { export default {
name: 'MenuTrain', name: 'MenuTrain',
@ -43,7 +46,8 @@ export default {
TrainSetHead, TrainSetHead,
TrainSetWork, TrainSetWork,
trainSetWorkATP, trainSetWorkATP,
TrainDestination TrainDestination,
SetFault
}, },
props: { props: {
selected: { selected: {
@ -213,16 +217,24 @@ export default {
menuForce: [ menuForce: [
{ {
label: '设置故障', label: '设置故障',
handler: this.undeveloped handler: this.setStoppage
}, },
{ {
label: '取消故障', label: '取消故障',
handler: this.undeveloped handler: this.undeveloped
},
{
label: '确认运行至前方站',
handler: this.nextStation
},
{
label: '进路闭塞法行车',
handler: this.routeBlockRun
} }
], ],
menuSpeed: [ menuSpeed: [
{ {
label: '确认运行至前方站', label: '限速行驶',
handler: this.limitSpeed handler: this.limitSpeed
} }
] ]
@ -280,40 +292,30 @@ export default {
}, },
// //
setStoppage() { setStoppage() {
const operate = { commitOperate(menuOperate.Common.setFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.stoppage.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.setFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => {
this.$refs.noticeInfo.doShow(operate);
}); });
}, },
// //
cancelStoppage() { cancelStoppage() {
const operate = { commitOperate(menuOperate.Common.cancelFault, { code: this.selected.code }, 0).then(({valid, operate})=>{
start: true,
send: true,
code: this.selected.code,
operation: OperationEvent.Train.cancelStoppage.menu.operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) { if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true }); this.$refs.setFault.doShow(menuOperate.Common.cancelFault, this.selected);
} else {
this.$refs.noticeInfo.doShow(operate);
} }
}).catch(() => { });
this.$refs.noticeInfo.doShow(operate); },
nextStation() {
commitOperate(menuOperate.Train.nextStation, { code: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
});
},
routeBlockRun() {
commitOperate(menuOperate.Train.routeBlockRun, { code: this.selected.code }, 3).then(({valid, operate})=>{
}).catch((error) => {
this.$refs.noticeInfo.doShow(error.message);
}); });
}, },
// //

View File

@ -1,6 +1,7 @@
<template> <template>
<el-dialog v-dialogDrag title="选择仿真" :visible.sync="dialogShow" width="30%" center> <el-dialog v-dialogDrag title="选择仿真" :visible.sync="dialogShow" width="30%" center>
<el-input v-model="input" placeholder="请输入仿真号" /> <el-input v-model="input" placeholder="请输入仿真号" />
<el-checkbox v-if="!isShow" v-model="isNewMap">是否新版地图房间</el-checkbox>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="dialogShow = false">{{ $t('global.cancel') }}</el-button> <el-button @click="dialogShow = false">{{ $t('global.cancel') }}</el-button>
<el-button v-loading="loading" :disabled="!input.length" type="primary" @click="comit">{{ $t('global.confirm') }}</el-button> <el-button v-loading="loading" :disabled="!input.length" type="primary" @click="comit">{{ $t('global.confirm') }}</el-button>
@ -10,6 +11,7 @@
<script> <script>
import { jointSimulationByPermission } from '@/api/jointSimulation'; import { jointSimulationByPermission } from '@/api/jointSimulation';
import { getPermissionJoint } from '@/api/chat';
export default { export default {
name: 'Dashboard', name: 'Dashboard',
@ -17,7 +19,8 @@ export default {
return { return {
input: '', input: '',
dialogShow: false, dialogShow: false,
loading: false loading: false,
isNewMap: true
}; };
}, },
computed: { computed: {
@ -35,7 +38,11 @@ export default {
async comit() { async comit() {
try { try {
this.loading = true; this.loading = true;
await jointSimulationByPermission(`${this.input}`); if (this.isNewMap || this.isShow) {
await jointSimulationByPermission(`${this.input}`);
} else {
await getPermissionJoint(`${this.input}`);
}
this.dialogShow = false; this.dialogShow = false;
} catch (error) { } catch (error) {
const errorMessage = this.isShow ? this.$t('tip.failedToAddNewRoom') : this.$t('error.scanningError'); const errorMessage = this.isShow ? this.$t('tip.failedToAddNewRoom') : this.$t('error.scanningError');

View File

@ -59,7 +59,6 @@ function getRouteInfo(to) {
} }
function handleRoute(to, next, loginPath) { function handleRoute(to, next, loginPath) {
console.log(store.getters.roles, 'roles');
if (store.getters.roles.length == 0) { if (store.getters.roles.length == 0) {
store.dispatch('GetInfo', getToken()).then(res => { store.dispatch('GetInfo', getToken()).then(res => {
// 根据roles权限生成可访问的路由表 // 根据roles权限生成可访问的路由表
@ -88,8 +87,6 @@ function handleRoute(to, next, loginPath) {
} else { } else {
next(); next();
} }
// } else {
// next({ path: '/401', replace: true, query: { noGoBack: true } });
// } // }
} }
} }

View File

@ -27,7 +27,6 @@ const TrainRoom = () => import('@/views/trainRoom/index');
const JointTraining = () => import('@/views/jointTraining/index'); const JointTraining = () => import('@/views/jointTraining/index');
const JointTrainingNew = () => import('@/views/newMap/jointTrainingNew/index'); const JointTrainingNew = () => import('@/views/newMap/jointTrainingNew/index');
// const Error401 = () => import('@/views/error-page/401');
const Errpr404 = () => import('@/views/error-page/404'); const Errpr404 = () => import('@/views/error-page/404');
const Dictionary = () => import('@/views/system/dictionary/index'); const Dictionary = () => import('@/views/system/dictionary/index');

View File

@ -23,7 +23,6 @@ const TrainRoom = () => import('@/views/trainRoom/index');
const JointTraining = () => import('@/views/jointTraining/index'); const JointTraining = () => import('@/views/jointTraining/index');
const JointTrainingNew = () => import('@/views/newMap/jointTrainingNew/index'); const JointTrainingNew = () => import('@/views/newMap/jointTrainingNew/index');
// const Error401 = () => import('@/views/error-page/401');
const Errpr404 = () => import('@/views/error-page/404'); const Errpr404 = () => import('@/views/error-page/404');
const Dictionary = () => import('@/views/system/dictionary/index'); const Dictionary = () => import('@/views/system/dictionary/index');
@ -194,11 +193,6 @@ export const constantRoutes = [
component: Jlmap3dTrain, component: Jlmap3dTrain,
hidden: true hidden: true
}, },
// {
// path: '/401',
// component: Error401,
// hidden: true
// },
{ {
path: '/404', path: '/404',
component: Errpr404, component: Errpr404,

View File

@ -148,7 +148,8 @@ export default {
{ label: '车站', value: 'Station' }, { label: '车站', value: 'Station' },
{ label: '控制模式', value: 'ControlConvertMenu' }, { label: '控制模式', value: 'ControlConvertMenu' },
{ label: '车次窗', value: 'TrainWindow' }, { label: '车次窗', value: 'TrainWindow' },
{ label: '全线限速', value: 'LimitControl' } { label: '全线限速', value: 'LimitControl' },
{ label: '司机', value: 'Driver' }
], ],
simulationDeviceList:[ simulationDeviceList:[
@ -218,6 +219,7 @@ export default {
{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: '教员机', value: 'IM'}, {label: '教员机', value: 'IM'},
{label: '行调工作站', value: 'CW'}, {label: '行调工作站', value: 'CW'},
{label: '现地工作站', value: 'LW'}, {label: '现地工作站', value: 'LW'},
@ -227,7 +229,8 @@ export default {
{label: '现地综合监控', value: 'ISCS_LW'}, {label: '现地综合监控', value: 'ISCS_LW'},
{label: '中心综合监控', value: 'ISCS_CW'}, {label: '中心综合监控', value: 'ISCS_CW'},
{label: '车辆段终端', value: 'DEPOT'}, {label: '车辆段终端', value: 'DEPOT'},
{label: '虚拟CCTV', value: 'CCTV'} {label: '虚拟CCTV', value: 'CCTV'},
{label: 'PLC网关', value: 'PLC_GATEWAY'}
] ]
} }
}; };

View File

@ -2218,6 +2218,13 @@ export const TrainType = {
HEAD: '头码车', HEAD: '头码车',
MANUAL: '人工车' MANUAL: '人工车'
}; };
/** 仿真成员类型 */
export const SimulationType = {
DISPATCHER: '行调',
STATION_SUPERVISOR: '车站值班员',
DRIVER: '司机',
MAINTAINER: '通号'
};
export const UrlConfig = { export const UrlConfig = {
display: '/display', display: '/display',
displayNew: '/displayNew', displayNew: '/displayNew',

View File

@ -1,6 +1,6 @@
export const FaultStatusEnum = { export const FaultStatusEnum = {
Section: { Section: {
'01': '占用', '01': '占用'
}, },
Switch: { Switch: {

View File

@ -1,9 +1,5 @@
export default { export default {
Switch: { Switch: {
/** 设置故障 */
CMD_SWITCH_ADD_FAULT: {value:'Switch_Add_Fault', label: '设置道岔故障'},
/** 清除故障 */
CMD_SWITCH_REMOVE_FAULT: {value:'Switch_Remove_Fault', label: '清除道岔故障'},
/** 单锁 */ /** 单锁 */
CMD_SWITCH_SINGLE_LOCK: {value:'Switch_Single_Lock', label: '单锁'}, CMD_SWITCH_SINGLE_LOCK: {value:'Switch_Single_Lock', label: '单锁'},
/** 单解 */ /** 单解 */
@ -75,15 +71,13 @@ export default {
CMD_DRIVER_ATP_CHANGE:{value:'Driver_ATP_Change', label:'改变ATP状态'}, CMD_DRIVER_ATP_CHANGE:{value:'Driver_ATP_Change', label:'改变ATP状态'},
CMD_DRIVER_DRIVE_MODE_CHANGE:{value:'Driver_Drive_Mode_Change', label:'改变列车运行模式'}, CMD_DRIVER_DRIVE_MODE_CHANGE:{value:'Driver_Drive_Mode_Change', label:'改变列车运行模式'},
CMD_DRIVER_CHANGE_HEAD:{value:'Driver_Change_Head', label:'换端'}, CMD_DRIVER_CHANGE_HEAD:{value:'Driver_Change_Head', label:'换端'},
CMD_DRIVER_DOOR_ON_OFF:{value:'Driver_Door_On_Off', label:'列车车门开关'} CMD_DRIVER_DOOR_ON_OFF:{value:'Driver_Door_On_Off', label:'列车车门开关'},
CMD_DRIVER_NEXT_STATION:{value:'Driver_Next_Station', label:'确认列车行驶之前方站台'},
CMD_DRIVER_BLOCK_ROUTE:{value:'Driver_Block_Route', label:'进路闭塞法行车'}
}, },
// 信号机操作 // 信号机操作
Signal: { Signal: {
/** 设置故障 */
CMD_SIGNAL_ADD_FAULT: {value:'Signal_Add_Fault', label: '设置信号机故障'},
/** 清除故障 */
CMD_SIGNAL_REMOVE_FAULT: {value:'Signal_Remove_Fault', label: '清除信号机故障'},
/** 封锁 */ /** 封锁 */
CMD_SIGNAL_BLOCK: {value:'Signal_Block', label: '封锁'}, CMD_SIGNAL_BLOCK: {value:'Signal_Block', label: '封锁'},
/** 解封 */ /** 解封 */
@ -128,10 +122,6 @@ export default {
// 物理区段操作 // 物理区段操作
Section: { Section: {
/** 设置故障 */
CMD_SECTION_ADD_FAULT: {value:'Section_Add_Fault', label: '设置区段故障'},
/** 清除故障 */
CMD_SECTION_REMOVE_FAULT: {value:'Section_Remove_Fault', label: '清除区段故障'},
/** 封锁 */ /** 封锁 */
CMD_SECTION_BLOCK: {value:'Section_Block', label: '封锁'}, CMD_SECTION_BLOCK: {value:'Section_Block', label: '封锁'},
/** 解封 */ /** 解封 */
@ -158,10 +148,6 @@ export default {
// 站台 // 站台
Stand: { Stand: {
/** 设置故障 */
CMD_STAND_ADD_FAULT: {value:'Stand_Add_Fault', label: '设置站台故障'},
/** 清除故障 */
CMD_STAND_REMOVE_FAULT: {value:'Stand_Remove_Fault', label: '清除站台故障'},
/** 设置跳停 */ /** 设置跳停 */
CMD_STAND_SET_JUMP_STOP: {value:'Stand_Set_Jump_Stop', label: '设置跳停'}, CMD_STAND_SET_JUMP_STOP: {value:'Stand_Set_Jump_Stop', label: '设置跳停'},
/** 取消跳停 */ /** 取消跳停 */
@ -197,10 +183,6 @@ export default {
}, },
Station: { Station: {
/** 设置故障 */
CMD_STATION_ADD_FAULT: {value:'Station_Add_Fault', label: '设置车站故障'},
/** 清除故障 */
CMD_STATION_REMOVE_FAULT: {value:'Station_Remove_Fault', label: '清除车站故障'},
/** 全站设置联锁自动触发 */ /** 全站设置联锁自动触发 */
CMD_STATION_SET_CI_AUTO_TRIGGER: {value:'Station_Set_CI_Auto_Trigger', label: '全站设置联锁自动触发'}, CMD_STATION_SET_CI_AUTO_TRIGGER: {value:'Station_Set_CI_Auto_Trigger', label: '全站设置联锁自动触发'},
/** 全站取消联锁自动触发 */ /** 全站取消联锁自动触发 */
@ -220,15 +202,15 @@ export default {
/** 执行关键操作测试 */ /** 执行关键操作测试 */
CMD_STATION_KEY_OPERATION_TEST: {value: 'Station_Key_Operation_Test', label: '执行关键操作测试'}, CMD_STATION_KEY_OPERATION_TEST: {value: 'Station_Key_Operation_Test', label: '执行关键操作测试'},
// 设置折返策略 // 设置折返策略
CMD_STATION_SET_TURN_BACK_STRATEGY: {value: 'Station_Set_Turn_Back_Strategy', label: '设置折返策略'} CMD_STATION_SET_TURN_BACK_STRATEGY: {value: 'Station_Set_Turn_Back_Strategy', label: '设置折返策略'},
/** 关站信号 */
CMD_STATION_CLOSE_ALLSIGNAL: {value: 'Station_Close_AllSignal', label:'关站信号'},
/** 关区信号 */
CMD_STATION_CIAREA_CLOSE_ALLSIGNAL: {value: 'Station_CIArea_Close_AllSignal', label: '关区信号'}
}, },
// 列车 // 列车
Train: { Train: {
/** 设置故障 */
CMD_TRAIN_ADD_FAULT: {value:'Train_Add_Fault', label: '设置列车故障'},
/** 清除故障 */
CMD_TRAIN_REMOVE_FAULT: {value:'Train_Remove_Fault', label: '清除列车故障'},
/** 人工限速行驶 */ /** 人工限速行驶 */
CMD_TRAIN_MANUAL_LIMIT_DRIVE: {value:'Train_Manual_Limit_Drive', label: '人工限速行驶'}, CMD_TRAIN_MANUAL_LIMIT_DRIVE: {value:'Train_Manual_Limit_Drive', label: '人工限速行驶'},
/** 按进路闭塞法行车 */ /** 按进路闭塞法行车 */

View File

@ -43,6 +43,9 @@ export const deviceFaultType = {
], ],
ZcControl:[ ZcControl:[
{label: 'zc故障', value: 'FAULT'} {label: 'zc故障', value: 'FAULT'}
],
Train: [
{label: '通信异常', value: 'COMMUNICATION_ABNORMAL'}
] ]
}; };
/** 设备类型 */ /** 设备类型 */

View File

@ -1741,6 +1741,42 @@ export const OperationEvent = {
operation: '6102', operation: '6102',
domId: '_Tips-Station-setBackStrategy-confirm' domId: '_Tips-Station-setBackStrategy-confirm'
} }
},
closeAllSignal: {
menu: {
operation: '611',
domId: '_Tips-Station-closeAllSignal-menu'
},
mbar: {
operation: '6111',
domId: '_Tips-Station-closeAllSignal-Mbar'
},
choose: {
operation: '6112',
domId: '_Tips-Station-closeAllSignal-Choose'
},
confirm: {
operation: '6113',
domId: '_Tips-Station-closeAllSignal-confirm'
}
},
ciAreaCloseAllSignal: {
menu: {
operation: '612',
domId: '_Tips-Station-ciAreaCloseAllSignal-menu'
},
mbar: {
operation: '6121',
domId: '_Tips-Station-ciAreaCloseAllSignal-Mbar'
},
choose: {
operation: '6122',
domId: '_Tips-Station-ciAreaCloseAllSignal-Choose'
},
confirm: {
operation: '6123',
domId: '_Tips-Station-ciAreaCloseAllSignal-Confirm'
}
} }
}, },
@ -2007,6 +2043,20 @@ export const OperationEvent = {
operation: '70f1', operation: '70f1',
domId: '_Tips-Train-trainDetailInfo-Confirm' domId: '_Tips-Train-trainDetailInfo-Confirm'
} }
},
// 确认列车行驶之前方站台
nextStation:{
menu:{
operation: '70g',
domId: '_Tip-Train_nextStation-Menu'
}
},
// 进路闭塞法行车
routeBlockRun:{
menu:{
operation: '70h',
domId: '_Tip-Train_routeBlockRun-Menu'
}
} }
}, },

View File

@ -87,6 +87,9 @@ function handle(state, data) {
case 'Simulation_Invite': // 综合演练-仿真邀请消息 case 'Simulation_Invite': // 综合演练-仿真邀请消息
state.simulationInvite = msg; state.simulationInvite = msg;
break; break;
case 'JointTraining_Room_Invite': // 综合演练室-房间邀请消息
state.roomInvite = msg;
break;
case 'Big_Screen_Simulation_DeviceStatus': // 大屏仿真状态数据 case 'Big_Screen_Simulation_DeviceStatus': // 大屏仿真状态数据
state.equipmentStatus = msg; state.equipmentStatus = msg;
break; break;
@ -253,7 +256,8 @@ const socket = {
realDeviceInfo: 0, // 真实设备信息 realDeviceInfo: 0, // 真实设备信息
beLogoutCount: 0, // 被登出 beLogoutCount: 0, // 被登出
runPlanReloadCount: 0, // 仿真运行图变更 runPlanReloadCount: 0, // 仿真运行图变更
memberChangeCount: 0 // 仿真成员变更 memberChangeCount: 0, // 仿真成员变更
roomInvite: {}
}, },
getters: { getters: {
}, },
@ -298,6 +302,9 @@ const socket = {
setSimulationInvite: (state, simulationInvite) => { setSimulationInvite: (state, simulationInvite) => {
state.simulationInvite = simulationInvite; state.simulationInvite = simulationInvite;
}, },
setRoomInvite: (state, roomInvite) => {
state.roomInvite = roomInvite;
},
setRoomSubscribe:(state, roomIsSubscribe)=>{ setRoomSubscribe:(state, roomIsSubscribe)=>{
state.roomIsSubscribe = roomIsSubscribe; state.roomIsSubscribe = roomIsSubscribe;
}, },
@ -341,7 +348,9 @@ const socket = {
setSimulationInvite: ({ commit }) => { setSimulationInvite: ({ commit }) => {
commit('setSimulationInvite', {}); commit('setSimulationInvite', {});
}, },
setRoomInvite: ({ commit }) => {
commit('setRoomInvite', {});
},
setMessage: ({ state }, data) => { setMessage: ({ state }, data) => {
if (!state.message[data.key]) { if (!state.message[data.key]) {
state.message[data.key] = []; state.message[data.key] = [];

View File

@ -240,6 +240,7 @@ const training = {
state.memberData[newMemberId].name = name; state.memberData[newMemberId].name = name;
state.memberData[newMemberId].disabled = true; state.memberData[newMemberId].disabled = true;
}, },
updateMemberAndUser: (state, {simulationUserList, userId}) => { updateMemberAndUser: (state, {simulationUserList, userId}) => {
simulationUserList.forEach(item => { simulationUserList.forEach(item => {
let memberIndex = -1; let memberIndex = -1;

View File

@ -22,8 +22,7 @@
:style="{height: height+'px'}" :style="{height: height+'px'}"
> >
<div slot-scope="{ node, data }" class="list-elem custom-tree-node"> <div slot-scope="{ node, data }" class="list-elem custom-tree-node">
<span v-if="data.state=='01'">{{ '['+data.map.name+']'+($t('global.trainingNotStart').replace('{name}', data.creator.nickname)) }}</span> <span>{{ '['+data.map.name+']'+($t('global.trainingHasStart').replace('{name}', data.creator.nickname)) }}</span>
<span v-else>{{ '['+data.map.name+']'+($t('global.trainingHasStart').replace('{name}', data.creator.nickname)) }}</span>
<el-button <el-button
type="text" type="text"
size="mini" size="mini"
@ -43,6 +42,8 @@
</template> </template>
<script> <script>
import { getjointTrainList, getjointTraining, putJointTrainingSimulationEntrance } from '@/api/chat';
import { getPublishMapInfo } from '@/api/jmap/map';
import { getSimulationListCantainUser } from '@/api/jointSimulation'; import { getSimulationListCantainUser } from '@/api/jointSimulation';
import { launchFullscreen } from '@/utils/screen'; import { launchFullscreen } from '@/utils/screen';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
@ -115,9 +116,17 @@ export default {
}, },
async handleJoinRoom(data) { async handleJoinRoom(data) {
try { try {
const rest = await getPublishMapInfo(data.map.id);
launchFullscreen(); launchFullscreen();
const query = { lineCode: data.map.lineCode, mapId: data.map.id, group: data.group}; if (rest.data.drawWay) {
this.$router.push({path:'/jointTrainingNew', query:query}); const query = { lineCode: data.map.lineCode, mapId: data.map.id, group: data.group};
this.$router.push({path:'/jointTrainingNew', query:query});
} else {
await getjointTraining(data.group);
const query = { group: data.group, drawWay: rest.data.drawWay };
this.$router.push({ path: `/trainroom`, query: query });
}
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} finally { } finally {

View File

@ -19,7 +19,11 @@
<script> <script>
import { launchFullscreen } from '@/utils/screen'; import { launchFullscreen } from '@/utils/screen';
import { getjointTraining, putJointTrainingSimulationEntrance } from '@/api/chat';
import { getPublishMapInfo } from '@/api/jmap/map';
import { getToken } from '@/utils/auth';
import { creatSubscribe, clearSubscribe, roomTopic} from '@/utils/stomp';
// 仿
export default { export default {
name: 'DeomonList', name: 'DeomonList',
data() { data() {
@ -27,6 +31,7 @@ export default {
dialogShow: false, dialogShow: false,
group: '', group: '',
roomName: '', roomName: '',
state: '',
mapId: '', mapId: '',
lineCode: '', lineCode: '',
loading: false loading: false
@ -46,20 +51,49 @@ export default {
doShow(data) { doShow(data) {
this.roomName = data.creator.nickname; this.roomName = data.creator.nickname;
this.group = data.group; this.group = data.group;
this.mapId = data.map.id; this.mapId = data.mapId || data.map.id;
this.lineCode = data.map.lineCode; this.lineCode = (data.map || {}).lineCode;
this.state = data.state;
this.dialogShow = true; this.dialogShow = true;
this.loading = false; this.loading = false;
}, },
doClose() { doClose() {
this.dialogShow = false; this.dialogShow = false;
}, },
async subscribe() {
if (!this.$store.state.socket.roomIsSubscribe) {
this.clearSubscribe();
const header = { group: this.group || '', 'X-Token': getToken() };
creatSubscribe(`${roomTopic}\/${this.group}`, header);
await this.$store.dispatch('socket/setRoomSubscribe', true);
}
},
async clearSubscribe() {
clearSubscribe(`${roomTopic}\/${this.group}`);
await this.$store.dispatch('socket/setRoomSubscribe', false);
},
async handleJoin() { async handleJoin() {
try { try {
this.loading = true; this.loading = true;
launchFullscreen(); const rest = await getPublishMapInfo(this.mapId);
const query = { lineCode: this.lineCode, mapId: this.mapId, group: this.group}; const drawWay = rest.data.drawWay;
this.$router.push({path: `/jointTrainingNew`, query: query}); if (drawWay) {
launchFullscreen();
const query = { lineCode: this.lineCode, mapId: this.mapId, group: this.group};
this.$router.push({path: `/jointTrainingNew`, query: query});
} else {
await getjointTraining(this.group);
if (this.state == '02') {
this.subscribe();
launchFullscreen();
const query = { lineCode: rest.data.lineCode, mapId: this.mapId, group: this.group, drawWay: drawWay };
await putJointTrainingSimulationEntrance(this.group);
this.$router.push({ path: `/jointTraining`, query: query });
} else if (this.state == '01') {
const query = { group: this.group, drawWay: drawWay };
this.$router.push({ path: `/trainroom`, query: query });
}
}
this.dialogShow = false; this.dialogShow = false;
} catch (e) { } catch (e) {
this.$messageBox(this.$t('tip.enterTrainingRoomFailed')); this.$messageBox(this.$t('tip.enterTrainingRoomFailed'));

View File

@ -17,6 +17,8 @@
<el-button v-if="!isLocal" type="success" :disabled="disabled" @click="buy">{{ $t('global.buy') }}</el-button> <el-button v-if="!isLocal" type="success" :disabled="disabled" @click="buy">{{ $t('global.buy') }}</el-button>
<el-button v-if="hasPermssion && !isComprehensive && !isLocal" type="primary" :disabled="disabled" @click="distribute">{{ $t('global.distributePermission') }}</el-button> <el-button v-if="hasPermssion && !isComprehensive && !isLocal" type="primary" :disabled="disabled" @click="distribute">{{ $t('global.distributePermission') }}</el-button>
<el-button v-show="isStartDemon" :disabled="disabled" type="primary" @click="start">{{ $t('demonstration.startSimulation') }}</el-button> <el-button v-show="isStartDemon" :disabled="disabled" type="primary" @click="start">{{ $t('demonstration.startSimulation') }}</el-button>
<el-button v-show="isCreateRoom" :disabled="disabled" type="primary" @click="start">{{ $t('demonstration.createRoom') }}</el-button>
<el-button v-show="isInRoom" :disabled="disabled" type="primary" @click="joinRoom">{{ $t('demonstration.enterRoom') }}</el-button>
</div> </div>
</div> </div>
</template> </template>
@ -26,12 +28,13 @@ import { getPublishMapInfo } from '@/api/jmap/map';
import { getGoodsTryUse } from '@/api/management/goods'; import { getGoodsTryUse } from '@/api/management/goods';
import { PermissionType, UrlConfig } from '@/scripts/ConstDic'; import { PermissionType, UrlConfig } from '@/scripts/ConstDic';
import { launchFullscreen } from '@/utils/screen'; import { launchFullscreen } from '@/utils/screen';
import { } from '@/scripts/ConstDic';
import { simulationNotify, schedulingNotify, createSimulationNew } from '@/api/simulation'; import { simulationNotify, schedulingNotify, createSimulationNew } from '@/api/simulation';
import LimitList from '@/views/components/limits/index'; import LimitList from '@/views/components/limits/index';
import { getSubSystemDetail } from '@/api/trainingPlatform'; import { getSubSystemDetail } from '@/api/trainingPlatform';
import { getSessionStorage } from '@/utils/auth'; import { getSessionStorage } from '@/utils/auth';
import localStore from 'storejs'; import localStore from 'storejs';
import { postCreateRoom, getjointTraining } from '@/api/chat';
import { checkRoomExistNew } from '@/api/jointTraining';
export default { export default {
name: 'ExamDetailList', name: 'ExamDetailList',
@ -57,6 +60,8 @@ export default {
prdType: '', prdType: '',
pmsList: [] pmsList: []
}, },
jointShow: false,
jointGroup: '',
lineCode:'', lineCode:'',
drawWay: false // drawWay: false //
}; };
@ -82,13 +87,19 @@ export default {
return this.courseModel.prdType === '03'; return this.courseModel.prdType === '03';
}, },
isStartDemon() { isStartDemon() {
return this.hasPermssion || this.tryTime > 0; return (this.hasPermssion || this.tryTime > 0) && !(this.courseModel.prdType === '03' && !this.drawWay);
}, },
mapId() { mapId() {
return this.$route.query.mapId; return this.$route.query.mapId;
}, },
project() { project() {
return getSessionStorage('project'); return getSessionStorage('project');
},
isCreateRoom() {
return this.courseModel.prdType === '03' && this.hasPermssion && !this.jointShow && !this.drawWay;
},
isInRoom() {
return this.courseModel.prdType === '03' && this.hasPermssion && this.jointShow && !this.drawWay;
} }
}, },
watch: { watch: {
@ -119,7 +130,15 @@ export default {
this.tryUser = 0; this.tryUser = 0;
this.loading = false; this.loading = false;
this.drawWay = res.data.drawWay; this.drawWay = res.data.drawWay;
const remarksList = {'01':'ATS现地工作站原理级仿真系统实现车站值班员培训功能。', '02':'ATS行调工作站原理级仿真系统实现行车调度员培训功能。', '03':'各岗位应急综合演练', '04':'桌面版模拟驾驶系统,实现列车驾驶员培训功能。', '05':'派班工作站主要是供车辆段/停车场派班员进行派班操作,可以自动生成派班计划,极大的简化了派班计划管理的复杂性。', '06': '综合监控工作站原理级仿真系统,实现电调、环调及车站值班员培训功能。', '07':'大屏仿真系统,可显示全线全站场实时状况,便于教学及观摩使用。'}; const remarksList = {
'01':'ATS现地工作站原理级仿真系统实现车站值班员培训功能。',
'02':'ATS行调工作站原理级仿真系统实现行车调度员培训功能。',
'03':'各岗位应急综合演练',
'04':'桌面版模拟驾驶系统,实现列车驾驶员培训功能。',
'05':'派班工作站主要是供车辆段/停车场派班员进行派班操作,可以自动生成派班计划,极大的简化了派班计划管理的复杂性。',
'06': '综合监控工作站原理级仿真系统,实现电调、环调及车站值班员培训功能。',
'07':'大屏仿真系统,可显示全线全站场实时状况,便于教学及观摩使用。'
};
this.courseModel = { this.courseModel = {
id: resp.data.id, id: resp.data.id,
name: resp.data.name, name: resp.data.name,
@ -131,6 +150,9 @@ export default {
PermissionType: PermissionType.SIMULATION PermissionType: PermissionType.SIMULATION
}; };
this.currentPrdType = resp.data.prdType; this.currentPrdType = resp.data.prdType;
if (resp.data.prdType === '03' && !this.drawWay) {
this.getJointTrainingList();
}
if (!this.courseModel.pmsList) { if (!this.courseModel.pmsList) {
this.tryUser = 1; this.tryUser = 1;
const paras = { const paras = {
@ -159,6 +181,53 @@ export default {
refresh() { refresh() {
this.loadInitData(); this.loadInitData();
}, },
async getJointTrainingList() {
try {
if (this.mapId) {
const res = await checkRoomExistNew({mapId: this.mapId});
this.jointGroup = res.data;
this.jointShow = false;
if (res.data) {
this.jointShow = true;
}
}
} catch (error) {
console.error(error, '获取是否拥有综合演练房间');
}
},
async joinRoom() {
this.disabled = true;
await getjointTraining(this.jointGroup);
this.$store.dispatch('socket/setInRoom', true);
const query = { lineCode: this.courseModel.lineCode, group: this.jointGroup, drawWay: this.drawWay};
this.$router.push({ path: `/trainroom`, query: query });
},
async createRoom() {
try {
this.disabled = true;
const param = {
mapId: Number(this.mapId),
prdType: this.courseModel.prdType
};
const res = await postCreateRoom(param);
if (res && res.code == 200) {
const query = { lineCode: this.courseModel.lineCode, group: res.data, drawWay: this.drawWay };
this.$router.push({ path: `/trainroom`, query: query });
}
} catch (error) {
this.disabled = false;
if (error.code == 20001) {
this.$confirm(this.$t('tip.createRoomFailedHint'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'
}).then(() => {}).catch(() => {});
}
if (error.code == 500009) {
this.$messageBox(error.message);
}
}
},
async enterIntegratedSimulation() { async enterIntegratedSimulation() {
const data = { mapId: this.courseModel.mapId, prdType: this.currentPrdType }; const data = { mapId: this.courseModel.mapId, prdType: this.currentPrdType };
createSimulationNew(data).then(resp => { createSimulationNew(data).then(resp => {
@ -202,27 +271,14 @@ export default {
if (this.courseModel.prdType == '05') { if (this.courseModel.prdType == '05') {
this.jumpScheduling(); this.jumpScheduling();
} else if (this.courseModel.prdType == '03') { } else if (this.courseModel.prdType == '03') {
this.enterIntegratedSimulation(); this.drawWay && this.enterIntegratedSimulation();
!this.drawWay && this.createRoom();
} else if (this.courseModel.prdType == '06') { } else if (this.courseModel.prdType == '06') {
this.enterISCS(); this.enterISCS();
} else if (this.courseModel.prdType == '07') { } else if (this.courseModel.prdType == '07') {
this.enterScreen(); this.enterScreen();
} else { } else {
if (this.courseModel.pmsList && this.courseModel.pmsList.length) { this.jump();
this.jump();
} else {
if (this.tryTime <= 1) {
this.$confirm(this.$t('tip.noPermissionHint'), this.$t('global.tips'), {
confirmButtonText: this.$t('global.confirm'),
cancelButtonText: this.$t('global.cancel'),
type: 'warning'
}).then(() => {
this.buy();
}).catch(() => { });
} else {
this.jump();
}
}
} }
}, },
jumpScheduling() { jumpScheduling() {

View File

@ -215,11 +215,11 @@ export default {
}, },
bgImg() { bgImg() {
const bgImgAll = process.env.VUE_APP_PRO === 'local' || this.$route.query.project == 'heb' ? '' : bgImg; const bgImgAll = process.env.VUE_APP_PRO === 'local' || this.$route.query.project == 'heb' ? '' : bgImg;
const synchronousLogin = ['IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD']; const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD'];
const imgMap = { const imgMap = {
ISCS_LW: bgIscsImg, ISCS_LW: bgIscsImg,
ISCS_CW: bgIscsImg, ISCS_CW: bgIscsImg,
IBP: bgIbpImg, VR_IBP: bgIbpImg,
CCTV: bgCctvImg, CCTV: bgCctvImg,
VR_PSD: bgPsdImg, VR_PSD: bgPsdImg,
LSW: bgLswImg LSW: bgLswImg
@ -227,14 +227,14 @@ export default {
return synchronousLogin.includes(this.$route.query.type) ? imgMap[this.$route.query.type] : bgImgAll; return synchronousLogin.includes(this.$route.query.type) ? imgMap[this.$route.query.type] : bgImgAll;
}, },
syncLogin() { syncLogin() {
const synchronousLogin = ['IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD']; const synchronousLogin = ['VR_IBP', 'LSW', 'CCTV', 'ISCS_LW', 'ISCS_CW', 'VR_PSD'];
return this.$route.query.type ? synchronousLogin.includes(this.$route.query.type) : false; return this.$route.query.type ? synchronousLogin.includes(this.$route.query.type) : false;
}, },
loadingText() { loadingText() {
const textMap = { const textMap = {
ISCS_LW: '检测现地工作站登录中', ISCS_LW: '检测现地工作站登录中',
ISCS_CW: '检测行调工作站登录中', ISCS_CW: '检测行调工作站登录中',
IBP: '检测现地工作站登陆中', VR_IBP: '检测现地工作站登陆中',
CCTV: '检测教员机登录中', CCTV: '检测教员机登录中',
VR_PSD: '检测教员机登录中', VR_PSD: '检测教员机登录中',
LSW: '检测教员机登录中' LSW: '检测教员机登录中'

View File

@ -109,13 +109,6 @@ export default {
}, },
clearSubscribe() { clearSubscribe() {
clearSubscribe(`${displayTopic}\/${this.group}`); clearSubscribe(`${displayTopic}\/${this.group}`);
},
sendDeviceChangeEvent(data, header) {
//
sendCommand('', data).then(response => {
}).catch(error => {
console.error(error);
});
} }
} }
}; };

View File

@ -14,7 +14,7 @@
:key="member.id" :key="member.id"
class="each-chat-member" class="each-chat-member"
:label="member" :label="member"
:disabled="member.userId === userId" :disabled="member.disabled"
>{{ member.memberName }}</el-checkbox> >{{ member.memberName }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</div> </div>

View File

@ -30,13 +30,13 @@
<div> <div>
<el-form ref="ruleForm" :model="form" label-width="50px"> <el-form ref="ruleForm" :model="form" label-width="50px">
<el-form-item :label="$t('display.script.role')" prop="role"> <el-form-item :label="$t('display.script.role')" prop="role">
<el-select v-model="form.role" :placeholder="$t('display.script.pleaseSelect')"> <el-select v-model="form.type" :placeholder="$t('display.script.pleaseSelect')">
<el-option <el-option
v-for="item in memberList" v-for="item in memberList"
:key="item.id" :key="item.id"
:label="(roleConfig[item.role]?roleConfig[item.role]: '')+(item.name?item.name: '')" :label="(roleConfig[item.type]?roleConfig[item.type]: '')+(item.name?item.name: '')"
:value="item.id" :value="item.id"
:disabled="checkDisabled(item.role)" :disabled="checkDisabled(item.type)"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -82,7 +82,7 @@ export default {
}, },
row: {}, row: {},
form: { form: {
role: '' type: ''
}, },
memberList: [], memberList: [],
mapLocation:null, mapLocation:null,
@ -229,8 +229,8 @@ export default {
}, },
confirm() { confirm() {
const roleName = this.memberList.find(elem=>{ return elem.id == this.form.role; }); const roleName = this.memberList.find(elem=>{ return elem.id == this.form.type; });
this.$emit('selectQuest', this.row, this.form.role, this.mapLocation, roleName.role); this.$emit('selectQuest', this.row, this.form.type, this.mapLocation, roleName.type);
this.doClose(); this.doClose();
this.roleDoClose(); this.roleDoClose();
}, },
@ -260,7 +260,7 @@ export default {
}, },
handleName(item) { handleName(item) {
return this.roleConfig[item.role] ? this.roleConfig[item.role] : '' + (item.name ? item.name : ''); return this.roleConfig[item.type] ? this.roleConfig[item.type] : '' + (item.name ? item.name : '');
} }
} }
}; };

View File

@ -230,7 +230,6 @@ export default {
}, },
getFailureRulesNew(params) { getFailureRulesNew(params) {
if (this.dialogShow) { if (this.dialogShow) {
console.log(params, this.dialogShow, '=====');
params['lineCode'] = this.$route.query.lineCode; params['lineCode'] = this.$route.query.lineCode;
return getFailureRulesNew(params); return getFailureRulesNew(params);
} }

View File

@ -18,9 +18,7 @@
<chat-box ref="chatbox" :group="group" :user-role="userRole" /> <chat-box ref="chatbox" :group="group" :user-role="userRole" />
<div class="display-draft"> <div class="display-draft">
<template v-if="isscriptRun"> <el-button v-if="isscriptRun&&!dataError" type="danger" @click="handleQuitQuest">{{ $t('display.demon.exitScript') }}</el-button>
<el-button v-if="!dataError" type="danger" @click="handleQuitQuest">{{ $t('display.demon.exitScript') }}</el-button>
</template>
<el-button type="primary" @click="back">{{ $t('display.demon.back') }}</el-button> <el-button type="primary" @click="back">{{ $t('display.demon.back') }}</el-button>
</div> </div>
@ -117,7 +115,7 @@ export default {
'04': '02', // => '04': '02', // =>
'05': '' // => null '05': '' // => null
}, },
userRole:'ADMIN', userRole:'AUDIENCE',
isDrive: this.prdType == '04' isDrive: this.prdType == '04'
}; };
}, },
@ -345,14 +343,6 @@ export default {
}, },
// //
async selectQuest(row) { async selectQuest(row) {
debugger;
this.scriptId = parseInt(row.id);
if (this.isDemon) {
this.$refs.menuDemon.initLoadPage();
}
if (this.isScript) {
this.$refs.menuScript.initLoadPage();
}
}, },
// 退 // 退
handleQuitQuest() { handleQuitQuest() {
@ -473,4 +463,10 @@ export default {
-ms-user-select: none; -ms-user-select: none;
user-select: none; user-select: none;
} }
.display-draft {
position: absolute;
float: right;
right: 20px;
bottom: 15px;
}
</style> </style>

View File

@ -353,7 +353,7 @@ export default {
this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); // this.$store.dispatch('training/changeOperateMode', { mode: OperateMode.NORMAL }); //
this.switchMode('01'); this.switchMode('01');
if (parseInt(this.mapId)) { if (this.mapId) {
await this.loadNewMapDataByGroup(this.group); await this.loadNewMapDataByGroup(this.group);
} else { } else {
this.endViewLoading(); this.endViewLoading();

View File

@ -1,14 +1,12 @@
<template> <template>
<div> <div>
<chat-box ref="chatbox" :group="group" :user-role="userRole" /> <chat-box ref="chatbox" :group="group" :user-role="userRole" />
<!-- :style="{top: offset+'px'}" --> <div class="display-card" :style="{top: offset+'px'}">
<div class="display-card">
<el-row> <el-row>
<span v-if="countTime" class="display-score">{{ $t('display.demon.trialTime') }} {{ countTime }}</span> <span v-if="countTime" class="display-score">{{ $t('display.demon.trialTime') }} {{ countTime }}</span>
</el-row> </el-row>
</div> </div>
<!-- :style="{bottom: offsetBottom + 'px'}" --> <div class="display-draft" :style="{bottom: offsetBottom + 'px'}">
<div class="display-draft">
<el-button-group> <el-button-group>
<el-button v-if="isShowScheduling && !dataError" type="primary" @click="jumpScheduling">{{ $t('display.demon.dispatchingPlan') }}</el-button> <el-button v-if="isShowScheduling && !dataError" type="primary" @click="jumpScheduling">{{ $t('display.demon.dispatchingPlan') }}</el-button>
<el-button v-if="!isShowScheduling && !dataError" type="jl3dpassflow" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button> <el-button v-if="!isShowScheduling && !dataError" type="jl3dpassflow" @click="jumpjl3dpassflow">{{ jl3dpassflow }}</el-button>
@ -91,7 +89,8 @@ export default {
jl3dname: this.$t('display.demon.threeDimensionalView'), jl3dname: this.$t('display.demon.threeDimensionalView'),
jl3dstation: this.$t('display.demon.threeDimensionalStation'), jl3dstation: this.$t('display.demon.threeDimensionalStation'),
jl3dmodel: this.$t('display.demon.deviceView'), jl3dmodel: this.$t('display.demon.deviceView'),
isShow3dmodel :false isShow3dmodel :false,
isGoback: false
}; };
}, },
computed: { computed: {
@ -139,12 +138,12 @@ export default {
'$store.state.socket.simulationRoleList':function(val) { '$store.state.socket.simulationRoleList':function(val) {
(val || []).forEach(item => { (val || []).forEach(item => {
if (item.messageType === 'KICK_OUT' && item.userId == this.$store.state.user.id) { if (item.messageType === 'KICK_OUT' && item.userId == this.$store.state.user.id) {
this.back(); !this.isGoback && this.back();
} }
}); });
}, },
'$store.state.socket.simulationOver':function(val) { '$store.state.socket.simulationOver':function(val) {
this.back(); !this.isGoback && this.back();
} }
}, },
beforeDestroy() { beforeDestroy() {
@ -268,6 +267,7 @@ export default {
this.$refs.chatbox.clearAllData(); this.$refs.chatbox.clearAllData();
}, },
async back() { async back() {
this.isGoback = true;
if (this.projectDevice) { if (this.projectDevice) {
this.$store.dispatch('training/over').then(() => { this.$store.dispatch('training/over').then(() => {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {

View File

@ -183,15 +183,15 @@ export default {
}, },
'$store.state.training.prdType': function (val) { '$store.state.training.prdType': function (val) {
this.setPosition(); this.setPosition();
if (val === '01' && this.$route.query.lineCode === '06') { if (val == '01' && this.$route.query.lineCode == '06') {
this.showSelectStation = true; this.showSelectStation = true;
this.mapViewLoadedOver && this.setShowStation(this.showStation); this.mapViewLoadedOver && this.setShowStation(this.showStation);
this.cancelBigScreenMode(); this.cancelBigScreenMode();
} else if (val === '02' && this.$route.query.lineCode === '06') { } else if (val == '02' && this.$route.query.lineCode == '06') {
this.showSelectStation = false; this.showSelectStation = false;
this.mapViewLoadedOver && this.setShowStation(''); this.mapViewLoadedOver && this.setShowStation('');
this.cancelBigScreenMode(); this.cancelBigScreenMode();
} else if (val === '07') { // } else if (val == '07') { //
this.setBigScreenMode(); this.setBigScreenMode();
} else { } else {
this.cancelBigScreenMode(); this.cancelBigScreenMode();
@ -248,7 +248,7 @@ export default {
this.group = this.$route.query.group; this.group = this.$route.query.group;
this.mapId = this.$route.query.mapId; this.mapId = this.$route.query.mapId;
this.lineCode = this.$route.query.lineCode; this.lineCode = this.$route.query.lineCode;
this.drawWay = this.$route.query.drawWay; // this.drawWay = this.$route.query.drawWay;
Message.closeAll(); Message.closeAll();
}, },
async mounted() { async mounted() {
@ -413,7 +413,7 @@ export default {
this.isAdmin = data.admin; this.isAdmin = data.admin;
const deviceVO = this.$store.state.user.projectDevice; const deviceVO = this.$store.state.user.projectDevice;
if (deviceVO && deviceVO.type === 'IBP') { if (deviceVO && deviceVO.type === 'VR_IBP') {
this.showIbp(this.deviceCode); this.showIbp(this.deviceCode);
const config = JSON.parse(deviceVO.config); const config = JSON.parse(deviceVO.config);
this.ibpPart = config.part.toLowerCase(); this.ibpPart = config.part.toLowerCase();
@ -458,7 +458,6 @@ export default {
resp = await this.getUserRole(); resp = await this.getUserRole();
} }
if (resp && resp.code == 200) { if (resp && resp.code == 200) {
this.userRole = resp.data.type || 'AUDIENCE';
this.setSimulationPrdType(); this.setSimulationPrdType();
} }
await this.getTrainDetail(); await this.getTrainDetail();
@ -471,11 +470,33 @@ export default {
// Admin Dispatcher STATION_SUPERVISOR Audience Driver MAINTAINER IBP:IBP // Admin Dispatcher STATION_SUPERVISOR Audience Driver MAINTAINER IBP:IBP
switch (this.userRole) { switch (this.userRole) {
// case 'ADMIN': this.$store.dispatch('training/setPrdType', '02'); this.$store.dispatch('training/setRoles', 'ADMIN'); this.hideIbp(); break; // case 'ADMIN': this.$store.dispatch('training/setPrdType', '02'); this.$store.dispatch('training/setRoles', 'ADMIN'); this.hideIbp(); break;
case 'DISPATCHER': this.$store.dispatch('training/setPrdType', '02'); this.$store.dispatch('training/setRoles', 'DISPATCHER'); this.hideIbp(); this.drivingShow = false; break; case 'DISPATCHER':
case 'STATION_SUPERVISOR': this.$store.dispatch('training/setPrdType', '01'); this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR'); this.hideIbp(); this.drivingShow = false; break; this.$store.dispatch('training/setPrdType', '02');
case 'AUDIENCE': this.$store.dispatch('training/setPrdType', ''); this.$store.dispatch('training/setRoles', 'AUDIENCE'); this.hideIbp(); break; this.$store.dispatch('training/setRoles', 'DISPATCHER');
case 'DRIVER': this.$store.dispatch('training/setPrdType', ''); this.$store.dispatch('training/setRoles', 'DRIVER'); break; this.hideIbp();
case 'MAINTAINER': this.$store.dispatch('training/setPrdType', ''); this.$store.dispatch('training/setRoles', 'MAINTAINER'); this.hideIbp(); this.jl3dmaintainershow = true; break; this.drivingShow = false;
break;
case 'STATION_SUPERVISOR':
this.$store.dispatch('training/setPrdType', '01');
this.$store.dispatch('training/setRoles', 'STATION_SUPERVISOR');
this.hideIbp();
this.drivingShow = false;
break;
case 'AUDIENCE':
this.$store.dispatch('training/setPrdType', '');
this.$store.dispatch('training/setRoles', 'AUDIENCE');
this.hideIbp();
break;
case 'DRIVER':
this.$store.dispatch('training/setPrdType', '');
this.$store.dispatch('training/setRoles', 'DRIVER');
break;
case 'MAINTAINER':
this.$store.dispatch('training/setPrdType', '');
this.$store.dispatch('training/setRoles', 'MAINTAINER');
this.hideIbp();
this.jl3dmaintainershow = true;
break;
} }
if (this.isAdmin && this.adminMode) { if (this.isAdmin && this.adminMode) {
this.$store.dispatch('training/setPrdType', swch || '02'); this.$store.dispatch('training/setPrdType', swch || '02');
@ -658,7 +679,7 @@ export default {
addSimulationMember() { addSimulationMember() {
this.$refs.addMember.doShow(); this.$refs.addMember.doShow();
}, },
changeAdminMode(adminMode, swch) { changeAdminMode(adminMode, swch) { // (/)
this.adminMode = adminMode; this.adminMode = adminMode;
this.setSimulationPrdType(swch); this.setSimulationPrdType(swch);
}, },

View File

@ -6,7 +6,7 @@
</div> </div>
<div class="member__container"> <div class="member__container">
<el-input v-model="filterText" :placeholder="this.$t('global.enterNameToFilter')" clearable /> <el-input v-model="filterText" :placeholder="this.$t('global.enterNameToFilter')" clearable />
<el-scrollbar class="member__container--list" wrap-class="scrollbar-wrapper" :style="{height: treeHeight+'px'}"> <el-scrollbar class="member__container--list" wrap-class="scrollbar-wrapper" style="{height: calc(100% - 64px)}">
<el-tree <el-tree
ref="tree" ref="tree"
:data="filterMembers" :data="filterMembers"
@ -43,10 +43,6 @@ export default {
type: Array, type: Array,
required: true required: true
}, },
height: {
type: Number,
required: true
},
isAdmin: { isAdmin: {
type: Boolean, type: Boolean,
default() { default() {
@ -66,9 +62,6 @@ export default {
defaultProps() { defaultProps() {
return { label: 'nickName' }; return { label: 'nickName' };
}, },
treeHeight() {
return this.height - 64;
},
filterMembers() { filterMembers() {
return this.members.filter(e =>{ return e.nickName.includes(this.filterText); }); return this.members.filter(e =>{ return e.nickName.includes(this.filterText); });
}, },
@ -144,11 +137,10 @@ export default {
&__container { &__container {
flex-grow: 1; flex-grow: 1;
height: 520px;
&--list { &--list {
background: #fff; background: #fff;
height: auto; height: 490px;
min-height: calc(100% - 200px);
max-height: calc(100% - 200px);
border-bottom: 1px #ccc solid; border-bottom: 1px #ccc solid;
&::-webkit-scrollbar { &::-webkit-scrollbar {

View File

@ -3,11 +3,10 @@
v-dialogDrag v-dialogDrag
title="仿真成员管理" title="仿真成员管理"
:visible.sync="show" :visible.sync="show"
width="100%" width="75%"
:before-close="doClose" :before-close="doClose"
:z-index="2000" :z-index="2000"
:modal="false" :modal="false"
fullscreen
:close-on-click-modal="false" :close-on-click-modal="false"
center center
> >
@ -25,8 +24,7 @@
:data="treeData" :data="treeData"
:props="defaultProps" :props="defaultProps"
default-expand-all default-expand-all
style="margin: 10px;margin-bottom: 0;border: 1px solid #ccc;overflow-y: auto;" style="margin: 10px;margin-bottom: 0;border: 1px solid #ccc;overflow-y: auto;height: 520px;"
:style="{height: height - 35 + 'px'}"
:filter-node-method="filterNode" :filter-node-method="filterNode"
@node-click="handleNodeClick" @node-click="handleNodeClick"
> >
@ -50,7 +48,7 @@
:room="room" :room="room"
:members="simulationUserList" :members="simulationUserList"
:is-admin="isAdmin" :is-admin="isAdmin"
:height="height" style="height:570px"
@message="messageInfo" @message="messageInfo"
/> />
</div> </div>
@ -291,7 +289,7 @@ export default {
} }
.room { .room {
width: 100%; width: 100%;
height: 100%; height: 600px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box; box-sizing: border-box;

View File

@ -316,6 +316,8 @@ export default {
if (this.isAdmin) { if (this.isAdmin) {
await clearSimulation(this.group); await clearSimulation(this.group);
} }
this.$store.dispatch('training/setMemberList', {memberList:[], userId: this.$store.state.user.id});
this.$store.dispatch('training/setSimulationUserList', []);
this.$store.dispatch('training/over').then(() => { this.$store.dispatch('training/over').then(() => {
this.backLoading = true; this.backLoading = true;
this.$store.dispatch('map/resetActiveTrainList'); this.$store.dispatch('map/resetActiveTrainList');

View File

@ -5,7 +5,6 @@
v-model="swch" v-model="swch"
size="small" size="small"
style="width: 100px;" style="width: 100px;"
:placeholder="this.$t('rules.productTypeInput')"
@change="switchMode" @change="switchMode"
> >
<el-option v-for="item in swchList" :key="item.value" :label="item.name" :value="item.value" /> <el-option v-for="item in swchList" :key="item.value" :label="item.name" :value="item.value" />
@ -19,7 +18,7 @@
</template> </template>
<template v-if="isAdmin && adminMode"> <template v-if="isAdmin && adminMode">
<el-button v-if="!runing && !dataError" size="small" type="warning" @click="loadRunPlan"> <el-button v-if="!runing && !dataError" size="small" type="warning" @click="loadRunPlan">
{{ $t('joinTraining.runGraphLoading') }}</el-button> {{ $t('joinTraining.runGraphLoading') }}</el-button><!-- -->
</template> </template>
<template v-if="isAdmin && adminMode"> <template v-if="isAdmin && adminMode">
<el-button v-if="mode==OperateMode.FAULT && !dataError" size="small" type="danger" @click="setFault">{{ $t('joinTraining.faultSetting') }}</el-button> <el-button v-if="mode==OperateMode.FAULT && !dataError" size="small" type="danger" @click="setFault">{{ $t('joinTraining.faultSetting') }}</el-button>

View File

@ -50,7 +50,7 @@ export default {
}, },
methods:{ methods:{
computedStyle(member) { computedStyle(member) {
const userId = this.memberData[member.memberId].userId; const userId = (this.memberData[member.memberId] || {}).userId;
if (userId && userId == this.userId) { if (userId && userId == this.userId) {
return {color: 'red'}; return {color: 'red'};
} else { } else {

View File

@ -8,7 +8,6 @@
import MapCommon from './common/index'; import MapCommon from './common/index';
import { getToken } from '@/utils/auth'; import { getToken } from '@/utils/auth';
import { creatSubscribe, clearSubscribe, displayTopic} from '@/utils/stomp'; import { creatSubscribe, clearSubscribe, displayTopic} from '@/utils/stomp';
import { sendCommand } from '@/api/jmap/training';
import { getSessionStorage } from '@/utils/auth'; import { getSessionStorage } from '@/utils/auth';
export default { export default {
@ -112,13 +111,6 @@ export default {
}, },
setCenter(code) { setCenter(code) {
this.$refs.mapCommon && this.$refs.mapCommon.setCenter(code); this.$refs.mapCommon && this.$refs.mapCommon.setCenter(code);
},
sendDeviceChangeEvent(data, header) {
//
sendCommand('', data).then(response => {
}).catch(error => {
console.error(error);
});
} }
} }
}; };

View File

@ -128,7 +128,7 @@ export default {
}, },
hover(field) { hover(field) {
this.field = field === this.field ? '' : field; this.field = field === this.field ? '' : field;
this.$emit('standStationCode', this.field); this.$emit('espCode', this.field);
}, },
deviceSelect(selected) { deviceSelect(selected) {
if (selected && selected._type.toUpperCase() === 'Esp'.toUpperCase()) { if (selected && selected._type.toUpperCase() === 'Esp'.toUpperCase()) {
@ -140,7 +140,7 @@ export default {
this.addModel.standCode = selected.code; this.addModel.standCode = selected.code;
this.activeName = 'second'; this.activeName = 'second';
this.field = ''; this.field = '';
this.$emit('standStationCode', ''); this.$emit('espCode', '');
} }
}, },
hasPSD(data) { hasPSD(data) {

View File

@ -21,183 +21,24 @@
<el-button type="text" style="float: right; padding: 3px 0; margin-right: 5px;" @click="showMap">绘图显隐</el-button> <el-button type="text" style="float: right; padding: 3px 0; margin-right: 5px;" @click="showMap">绘图显隐</el-button>
</div> </div>
<el-tabs v-show="projectType" v-model="enabledTab" class="mapEdit" type="card"> <el-tabs v-show="projectType" v-model="enabledTab" class="mapEdit" type="card">
<el-tab-pane :label="$t('map.section')" class="tab_pane_box" name="Section" :lazy="lazy"> <el-tab-pane v-for="(each,index) in tabList" :key="index" :label="each.label" class="tab_pane_box" :name="each.name" :lazy="lazy">
<section-draft <component
ref="Section" :is="each.menus"
:ref="each.name"
:selected="selected" :selected="selected"
@updateMapModel="updateMapModel" @updateMapModel="updateMapModel"
@setCenter="setCenter" @setCenter="setCenter"
@fieldSelect="fieldSelect" @fieldSelect="fieldSelect"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.switch')" class="tab_pane_box" name="Switch" :lazy="lazy">
<switch-draft
ref="Switch"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@fieldSelectSwitchSection="fieldSelectSwitchSection" @fieldSelectSwitchSection="fieldSelectSwitchSection"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.station')" class="tab_pane_box" name="Station" :lazy="lazy">
<station-draft
ref="Station"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@stationSectionCode="stationEnabledTab" @stationSectionCode="stationEnabledTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.signal')" class="tab_pane_box" name="Signal" :lazy="lazy">
<signal-draft
ref="Signal"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@signalSectionCode="selectEnabledTab" @signalSectionCode="selectEnabledTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.platform')" class="tab_pane_box" name="StationStand" :lazy="lazy">
<station-stand-draft
ref="StationStand"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@standStationCode="standStationTab" @standStationCode="standStationTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.psd')" class="tab_pane_box" name="Psd" :lazy="lazy">
<psd-draft
ref="Psd"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@standStationCode="psdTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.platformEmergencyStop')" class="tab_pane_box" name="Esp" :lazy="lazy">
<esp-draft
ref="Esp"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@standStationCode="esqTab"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.trainWindow')" class="tab_pane_box" name="TrainWindow" :lazy="lazy">
<train-window-draft
ref="TrainWindow"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.zcZoneControl')" class="tab_pane_box" name="ZcControl" :lazy="lazy">
<zc-control-draft
ref="ZcControl"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.functionButton')" class="tab_pane_box" name="ControlDraft" :lazy="lazy">
<control-draft
ref="ControlDraft"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@selectFiled="selectFiled" @selectFiled="selectFiled"
/> @psdCode="psdTab"
</el-tab-pane> @espCode="esqTab"
<el-tab-pane :label="$t('map.saidLamp')" class="tab_pane_box" name="ControlLamp" :lazy="lazy">
<control-lamp
ref="ControlLamp"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
@saidLampHover="saidLampTab" @saidLampHover="saidLampTab"
/> />
</el-tab-pane> </el-tab-pane>
<el-tab-pane :label="$t('map.train')" class="tab_pane_box" name="Train" :lazy="lazy">
<train-draft
ref="Train"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.line')" class="tab_pane_box" name="Line" :lazy="lazy">
<line-draft
ref="Line"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane label="供电线" class="tab_pane_box" name="Power" :lazy="lazy">
<power-draft
ref="Power"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.text')" class="tab_pane_box" name="Text" :lazy="lazy">
<text-draft
ref="Text"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.lcControl')" class="tab_pane_box" name="LcControl" :lazy="lazy">
<lc-control-draft
ref="LcControl"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.rectangularBox')" class="tab_pane_box" name="OutFrame" :lazy="lazy">
<out-frame-draft
ref="OutFrame"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.image')" class="tab_pane_box" name="Resource" :lazy="lazy">
<Image-control-draft
ref="Resource"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane :label="$t('map.boundingBox')" class="tab_pane_box" name="CheckBox" :lazy="lazy">
<checkbox-draft
ref="CheckBox"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane label="站间分隔" class="tab_pane_box" name="SplitStation" :lazy="lazy">
<split-station
ref="SplitStation"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
<el-tab-pane label="箭头" class="tab_pane_box" name="Arrow" :lazy="lazy">
<arrow
ref="Arrow"
:selected="selected"
@updateMapModel="updateMapModel"
@setCenter="setCenter"
/>
</el-tab-pane>
</el-tabs> </el-tabs>
<template v-show="!projectType"> <template v-show="!projectType">
<split-screen <split-screen
@ -280,6 +121,29 @@ export default {
data() { data() {
return { return {
lazy: true, lazy: true,
tabList:[
{label:this.$t('map.section'), name:'Section', menus:SectionDraft},
{label:this.$t('map.switch'), name:'Switch', menus:SwitchDraft},
{label:this.$t('map.station'), name:'Station', menus:StationDraft},
{label:this.$t('map.signal'), name:'Signal', menus:SignalDraft},
{label:this.$t('map.platform'), name:'StationStand', menus:StationStandDraft},
{label:this.$t('map.psd'), name:'Psd', menus:PsdDraft},
{label:this.$t('map.platformEmergencyStop'), name:'Esp', menus:EspDraft},
{label:this.$t('map.trainWindow'), name:'TrainWindow', menus:TrainWindowDraft},
{label:this.$t('map.zcZoneControl'), name:'ZcControl', menus:ZcControlDraft},
{label:this.$t('map.functionButton'), name:'ControlDraft', menus:ControlDraft},
{label:this.$t('map.saidLamp'), name:'ControlLamp', menus:ControlLamp},
{label:this.$t('map.train'), name:'Train', menus:TrainDraft},
{label:this.$t('map.line'), name:'Line', menus:LineDraft},
{label:'供电线', name:'Power', menus:PowerDraft},
{label:this.$t('map.text'), name:'Text', menus:TextDraft},
{label:this.$t('map.lcControl'), name:'LcControl', menus:LcControlDraft},
{label:this.$t('map.rectangularBox'), name:'OutFrame', menus:OutFrameDraft},
{label:this.$t('map.image'), name:'Resource', menus:ImageControlDraft},
{label:this.$t('map.boundingBox'), name:'CheckBox', menus:CheckboxDraft},
{label:'站间分隔', name:'SplitStation', menus:SplitStation},
{label:'箭头', name:'Arrow', menus:Arrow}
],
feild: '', feild: '',
singlaType: '', singlaType: '',
stationType: '', stationType: '',
@ -306,16 +170,16 @@ export default {
watch: { watch: {
'$store.state.map.deleteCount': function (val) { '$store.state.map.deleteCount': function (val) {
if (this.selected) { if (this.selected) {
this.$refs[this.enabledTab].deleteObj(); this.$refs[this.enabledTab][0].deleteObj();
} }
}, },
'$store.state.map.updateCount': function (val) { '$store.state.map.updateCount': function (val) {
this.$refs[this.enabledTab].edit(); this.$refs[this.enabledTab][0].edit();
}, },
selected(val, oldVal) { selected(val, oldVal) {
if (this.selected) { if (this.selected) {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs[this.enabledTab].deviceSelect(val); this.$refs[this.enabledTab][0].deviceSelect(val);
}); });
} }
} }

View File

@ -211,7 +211,7 @@ export default {
}, },
hover(field) { hover(field) {
this.field = field === this.field ? '' : field; this.field = field === this.field ? '' : field;
this.$emit('standStationCode', this.field); this.$emit('psdCode', this.field);
}, },
deviceSelect(selected) { deviceSelect(selected) {
if (selected && selected._type.toUpperCase() === 'Psd'.toUpperCase()) { if (selected && selected._type.toUpperCase() === 'Psd'.toUpperCase()) {
@ -223,7 +223,7 @@ export default {
this.addModel.standCode = selected.code; this.addModel.standCode = selected.code;
this.activeName = 'second'; this.activeName = 'second';
this.field = ''; this.field = '';
this.$emit('standStationCode', ''); this.$emit('psdCode', '');
} }
}, },
create() { create() {

View File

@ -158,21 +158,23 @@ export default {
}, },
handleList(data) { handleList(data) {
this.tableData = []; this.tableData = [];
data.bigScreenSplitConfig.forEach(item => { if (data.bigScreenSplitConfig) {
const section = this.$store.getters['map/getDeviceByCode'](item.sectionCode); data.bigScreenSplitConfig.forEach(item => {
const param = { const section = this.$store.getters['map/getDeviceByCode'](item.sectionCode);
position: String(section.points[section.points.length - 1].x), const param = {
name: `${section.name}(${section.code})`, position: String(section.points[section.points.length - 1].x),
offsetTop: 0, name: `${section.name}(${section.code})`,
sectionCode: section.code offsetTop: 0,
sectionCode: section.code
};
this.tableData.push(param);
});
this.formData = {
width: data.width,
height: data.height
}; };
this.tableData.push(param); }
}); if (data.offsetList && data.offsetList.length) {
this.formData = {
width: data.width,
height: data.height
};
if (data.offsetList.length) {
this.list = []; this.list = [];
data.offsetList.forEach(item => { data.offsetList.forEach(item => {
const param = {offsetTop: item}; const param = {offsetTop: item};

View File

@ -258,10 +258,10 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
if (this.form.startDate) { if (this.form.startDate) {
this.form.startDate = this.getDate(this.form.startDate); this.form.startTime = this.getDate(this.form.startDate);
} }
if (this.form.endDate) { if (this.form.endDate) {
this.form.endDate = this.getDate(this.form.endDate); this.form.endTime = this.getDate(this.form.endDate);
} }
this.form['trial'] = this.trial; this.form['trial'] = this.trial;
this.$store.dispatch('exam/setCourseDetail', this.form); this.$store.dispatch('exam/setCourseDetail', this.form);
@ -273,10 +273,10 @@ export default {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
if (valid) { if (valid) {
if (this.form.startDate) { if (this.form.startDate) {
this.form.startDate = this.getDate(this.form.startDate); this.form.startTime = this.getDate(this.form.startDate);
} }
if (this.form.endDate) { if (this.form.endDate) {
this.form.endDate = this.getDate(this.form.endDate); this.form.endTime = this.getDate(this.form.endDate);
} }
this.form['trial'] = this.trial; this.form['trial'] = this.trial;
this.$store.dispatch('exam/setCourseDetail', this.form); this.$store.dispatch('exam/setCourseDetail', this.form);

View File

@ -136,8 +136,8 @@ export default {
name: data.name, // name: data.name, //
passingPoint: Number(data.passMark), // passingPoint: Number(data.passMark), //
remarks: data.desc, // remarks: data.desc, //
endTime: data.endDate, endTime: data.endTime,
startTime: data.startDate, startTime: data.startTime,
type: data.type, // type: data.type, //
trial: data.trial == 2 // trial: data.trial == 2 //
}; };

View File

@ -211,8 +211,8 @@ export default {
name: this.course.name, // name: this.course.name, //
passingPoint: Number(this.course.passMark), // passingPoint: Number(this.course.passMark), //
remarks: this.course.desc, // remarks: this.course.desc, //
endTime: this.course.endDate, endTime: this.course.endTime,
startTime: this.course.startDate, startTime: this.course.startTime,
type: this.course.type, // type: this.course.type, //
trial: this.course.trial == 2 // trial: this.course.trial == 2 //
}; };

View File

@ -455,8 +455,8 @@ export default {
}); });
that.$message.success('学生信息导入成功!'); that.$message.success('学生信息导入成功!');
}).catch(() => { }).catch((err) => {
that.$message.error('学生信息导入失败'); that.$message.error('学生信息导入失败' + err.message);
}); });
} catch (error) { } catch (error) {
that.$message.warning(`解析成绩单失败:${error}`); that.$message.warning(`解析成绩单失败:${error}`);

View File

@ -1,6 +1,6 @@
<template> <template>
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" center :close-on-click-modal="false"> <el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="500px" :before-close="handleClose" center :close-on-click-modal="false">
<el-form v-show="data.type === 'IBP'" ref="formIbp" :model="formIbp" label-width="100px" :rules="rulesIbp"> <el-form v-show="data.type === 'VR_IBP'" ref="formIbp" :model="formIbp" label-width="100px" :rules="rulesIbp">
<el-form-item label="显示位置:" prop="part"> <el-form-item label="显示位置:" prop="part">
<el-select v-model="formIbp.part" placeholder="请选择" size="small"> <el-select v-model="formIbp.part" placeholder="请选择" size="small">
<el-option <el-option
@ -64,7 +64,7 @@
</template> </template>
<script> <script>
import { getDeviceDetail, setIbpConfig, setLwConfig, getDevicesByType, setIscsLwConfig, setIscsCwConfig } from '@/api/project'; import { getDeviceDetail, setVrIbpConfig, setLwConfig, getDevicesByType, setIscsLwConfig, setIscsCwConfig } from '@/api/project';
import { getAllMapOnline, getStationListNeedAttendant } from '@/api/jmap/map'; import { getAllMapOnline, getStationListNeedAttendant } from '@/api/jmap/map';
export default { export default {
@ -122,7 +122,7 @@ export default {
methods: { methods: {
initData(row) { initData(row) {
getDeviceDetail(row.id).then(resp => { getDeviceDetail(row.id).then(resp => {
if (resp.data.config && resp.data.type === 'IBP') { if (resp.data.config && resp.data.type === 'VR_IBP') {
this.formIbp = JSON.parse(resp.data.config); this.formIbp = JSON.parse(resp.data.config);
} else if (resp.data.config && resp.data.type === 'LW') { } else if (resp.data.config && resp.data.type === 'LW') {
this.formLw = JSON.parse(resp.data.config); this.formLw = JSON.parse(resp.data.config);
@ -139,7 +139,7 @@ export default {
this.data = row; this.data = row;
this.mapList = []; this.mapList = [];
this.stationList = []; this.stationList = [];
if (this.data.type === 'IBP' || this.data.type === 'ISCS_LW') { if (this.data.type === 'VR_IBP' || this.data.type === 'ISCS_LW') {
getDevicesByType('LW').then(res => { getDevicesByType('LW').then(res => {
if (res.data && res.data.length) { if (res.data && res.data.length) {
this.lwList = res.data; this.lwList = res.data;
@ -170,10 +170,10 @@ export default {
}, },
doSave() { doSave() {
const self = this; const self = this;
if (this.data.type === 'IBP') { if (this.data.type === 'VR_IBP') {
this.$refs.formIbp.validate(() => { this.$refs.formIbp.validate(() => {
setIbpConfig(this.data.id, this.formIbp).then(response => { setVrIbpConfig(this.data.id, this.formIbp).then(response => {
self.$message.success('设置IBP设备配置成功'); self.$message.success('设置虚拟IBP设备配置成功');
self.handleClose(); self.handleClose();
self.$emit('reloadTable'); self.$emit('reloadTable');
}).catch(error => { }).catch(error => {

View File

@ -175,7 +175,7 @@ export default {
}); });
}, },
editConfig(index, row) { editConfig(index, row) {
if (row.type === 'LW' || row.type === 'IBP' || row.type === 'ISCS_LW' || row.type === 'ISCS_CW') { if (row.type === 'LW' || row.type === 'VR_IBP' || row.type === 'ISCS_LW' || row.type === 'ISCS_CW') {
this.$refs.editConfig.doShow(row); this.$refs.editConfig.doShow(row);
} else if (row.type === 'SWITCH' || row.type === 'SIGNAL' || row.type === 'PSD') { } else if (row.type === 'SWITCH' || row.type === 'SIGNAL' || row.type === 'PSD') {
this.$refs.editConfigGateway.doShow(row); this.$refs.editConfigGateway.doShow(row);

View File

@ -7,7 +7,7 @@
<script> <script>
import PopMenu from '@/components/PopMenu'; import PopMenu from '@/components/PopMenu';
import { DeviceMenu } from '@/scripts/ConstDic'; import { DeviceMenu } from '@/scripts/ConstDic';
import { kickOutMember } from '@/api/jointSimulation'; import { putJointTrainingUserkicked } from '@/api/chat';
export default { export default {
components: { components: {
@ -17,18 +17,14 @@ export default {
clickUserId: { clickUserId: {
type: String, type: String,
default: '' default: ''
},
menuDisabled: {
type: Boolean,
default: false
} }
}, },
data() { data() {
return { return {
// menu: [{ menu: [{
// label: this.$t('trainRoom.kickOutTheRoom'), label: this.$t('trainRoom.kickOutTheRoom'),
// handler: this.kicked handler: this.kicked
// }] }]
}; };
}, },
computed: { computed: {
@ -40,13 +36,6 @@ export default {
}, },
drawWay() { drawWay() {
return this.$route.query.drawWay + ''; return this.$route.query.drawWay + '';
},
menu() {
return [{
label: this.$t('trainRoom.kickOutTheRoom'),
handler: this.kicked,
disabled: this.menuDisabled
}];
} }
}, },
watch: { watch: {
@ -83,7 +72,7 @@ export default {
}, },
async kicked() { async kicked() {
try { try {
await kickOutMember(this.$route.query.group, this.clickUserId); await putJointTrainingUserkicked(this.clickUserId, this.$route.query.group);
} catch (error) { } catch (error) {
console.error(error); console.error(error);
} }

View File

@ -16,13 +16,13 @@
@node-contextmenu="handleShowContextMenu" @node-contextmenu="handleShowContextMenu"
> >
<span slot-scope="{ node, data }"> <span slot-scope="{ node, data }">
<span v-if="node.data.online" style="color: green;">{{ data.nickName + (data.admin? '管理员':'') + (data.referee? '裁判员':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span> <span v-if="node.data.inRoom" style="color: green;">{{ data.nickName }}</span>
<span v-else style="color: #ccc;">{{ data.nickName + (data.admin? '【管理员】':'') + (data.referee? '【裁判员】':'') + (data.deviceVO? ` -- (${data.deviceVO.code})`:'') }}</span> <span v-else style="color: #ccc;">{{ data.nickName }}</span>
</span> </span>
</el-tree> </el-tree>
</el-scrollbar> </el-scrollbar>
</div> </div>
<content-menu ref="menu" :click-user-id="clickUserId" :menu-disabled="menuDisabled" /> <content-menu ref="menu" :click-user-id="clickUserId" />
</div> </div>
</template> </template>
@ -46,19 +46,12 @@ export default {
height: { height: {
type: Number, type: Number,
required: true required: true
},
isAdmin: {
type: Boolean,
default() {
return false;
}
} }
}, },
data() { data() {
return { return {
filterText: '', filterText: '',
clickUserId: '', clickUserId: ''
menuDisabled: false
}; };
}, },
computed: { computed: {
@ -86,9 +79,8 @@ export default {
x: e.clientX, x: e.clientX,
y: e.clientY y: e.clientY
}; };
if (this.isAdmin) { if (this.userId == this.room.creatorId) {
this.clickUserId = `${obj.userId || ''}`; this.clickUserId = `${obj.id || ''}`;
this.menuDisabled = !!obj.deviceVO;
this.$store.dispatch('menuOperation/setPopMenu', { position, menu: DeviceMenu.JointRoom }); this.$store.dispatch('menuOperation/setPopMenu', { position, menu: DeviceMenu.JointRoom });
} }
} }
@ -129,8 +121,8 @@ export default {
&--list { &--list {
background: #fff; background: #fff;
height: auto; height: auto;
min-height: calc(100% - 200px); min-height: calc(100% - 40px);
max-height: calc(100% - 200px); max-height: calc(100% - 40px);
border-bottom: 1px #ccc solid; border-bottom: 1px #ccc solid;
&::-webkit-scrollbar { &::-webkit-scrollbar {