This commit is contained in:
sunzhenyu 2020-08-28 17:27:00 +08:00
commit 4668783e72
35 changed files with 411 additions and 87 deletions

View File

@ -6,7 +6,7 @@ NODE_ENV = 'development'
# VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
# VUE_APP_BASE_API = 'http://192.168.3.4:9000'
VUE_APP_BASE_API = 'http://192.168.3.6:9000'
VUE_APP_VOICE_API = 'https://test.joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://test.joylink.club/jlcloud/'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.

View File

@ -4,4 +4,4 @@ VUE_APP_PRO = 'local'
# base api
VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://joylink.club/jlcloud/'

View File

@ -3,4 +3,4 @@ NODE_ENV = 'production'
# base api
VUE_APP_BASE_API = 'https://joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://joylink.club/jlcloud/'

View File

@ -3,4 +3,4 @@ NODE_ENV = 'production'
# base api
VUE_APP_BASE_API = 'https://test.joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://test.joylink.club/jlcloud'
VUE_APP_VOICE_API = 'https://test.joylink.club/jlcloud/'

View File

@ -713,7 +713,7 @@ class SkinCode extends defaultStyle {
this[deviceType.Train] = {
trainBody: {
fontFamily: 'consolas',
trainBodyLineWidth: 2, // 车身line宽
trainBodyLineWidth: 0, // 车身line宽
changeTrainWidth: false, // 是否根据车身上车组号、服务号、车次号、目的地码显示情况改变列车长度
specialTrainType: [], // 特殊列车类型需设置显示格式
lrPadding: 4, // 两边间隔
@ -728,7 +728,7 @@ class SkinCode extends defaultStyle {
lrPaddingHSDA: 3, // HSDA两边间隔
upPaddingHSDA: 4, // HSDA上边距离
trainHSDATextFontSize: 8, // 列车HDSA字号
textHContent: '', // textH文本
textHContent: '', // textH文本
textSContent: '跳', // textS文本
textDContent: '门', // textD文本
textAContent: '警' // textA文本
@ -769,11 +769,12 @@ class SkinCode extends defaultStyle {
},
common: {
trainHeight: 20, // 列车高度
trainHeadDistance: 2, // 列车和车头之间的间距
trainHeadDistance: 0.3, // 列车和车头之间的间距
trainWidth: 55, // 列车长度
trainTextFontSize: 16, // 列车字号
fontFamily: 'consolas', // 默认字体 族类
haveTextHSDA: true, // 是否需创建textHSDA对象
haveTextHSDA: false, // 是否需创建textHSDA对象
HSDASpliceShow: true, // 列车扣车特殊显示
haveArrowText: true, // 是否需创建arrowText对象
textOffset: 4, // 字体偏移(用以控制字体据车头的距离)
trainWidthMoreText: 8, // 计算列车长度时--列车长比text多出尺寸

View File

@ -6,6 +6,7 @@ import EMouse from './EMouse';
import store from '@/store/index_APP_TARGET';
import Circle from 'zrender/src/graphic/shape/Circle';
import BoundingRect from 'zrender/src/core/BoundingRect';
import Vue from 'vue';
/** 车身*/
export default class TrainBody extends Group {
@ -43,8 +44,11 @@ export default class TrainBody extends Group {
const tripNumber = style.Train.trainTarget.tripNumberPrefix + (style.Train.trainTarget.defaultDirectionCode
? (model.directionCode || style.Train.trainTarget.defaultDirectionCode) + (model.tripNumber || style.Train.trainTarget.defaultTripNumber)
: model.tripNumber || style.Train.trainTarget.defaultTripNumber); // 车次号
const targetCode = style.Train.trainNumber.targetCodePrefix + (model.destinationCode || style.Train.trainNumber.defaultTargetCode); // 目的地码
let targetCode = style.Train.trainNumber.targetCodePrefix + (model.destinationCode || style.Train.trainNumber.defaultTargetCode); // 目的地码
const groupNumber = style.Train.trainTargetNumber.groupNumberPrefix + (style.Train.trainTargetNumber.lineNumber || '') + (model.groupNumber || style.Train.trainTargetNumber.defaultGroupNumber); // 车组号
if (Vue.prototype.$jlmap.lineCode == '09') { // 暂时先写死 后面有了删掉就好
targetCode = '01';
}
// 服务号
this.textTrainServer = new ETextName({
zlevel: model.zlevel,
@ -120,6 +124,7 @@ export default class TrainBody extends Group {
zlevel: model.zlevel,
z: model.z,
point: model.point,
speed: model.speed,
style: style
});
const beginX = (model.point.x + style.Train.trainBody.lrPadding);
@ -280,6 +285,9 @@ export default class TrainBody extends Group {
if (this.textH) {
isShow ? this.textH.show() : this.textH.hide();
}
if (this.style.Train.common.HSDASpliceShow) {
isShow ? this.trainBodyBox.buckleTrain() : this.trainBodyBox.release();
}
}
setSShow(isShow) {
if (this.textS) {

View File

@ -37,4 +37,24 @@ export default class TrainBodyBox extends Group {
return tempRect;
}
}
// 列车扣车
buckleTrain() {
if (this.trainBodyBox) {
this.trainBodyBox.setStyle('fill', 'yellow');
if (this.model.speed) { // 列车停稳状态下开始闪烁
this.trainBodyBox.animateStyle(true)
.when(0, { fill: this.model.style.backgroundColor })
.when(1000, { fill: 'yellow' })
.when(2000, { fill: this.model.style.backgroundColor })
.start();
}
}
}
// 列车放行
release() {
if (this.trainBodyBox) {
this.trainBodyBox.setStyle('fill', this.model.style.Train.trainBody.trainBodyFillColor);
this.trainBodyBox.stopAnimation(false);
}
}
}

View File

@ -260,14 +260,15 @@ export default {
this.model.confirmSectionName = '';
if (selected) {
if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) {
if (selected.isSwitchSection) {
if (selected.type == '03') {
const section = this.$store.getters['map/getDeviceByCode'](selected.parentCode);
if (section) {
this.model.sectionName = section.name;
}
} else {
const hasParentCode = (this.selected.type == '02');
const section = this.$store.getters['map/getDeviceByCode'](selected.parentCode);
if (section) {
if (section && hasParentCode) {
this.model.sectionName = section.name;
this.model.sectionName = `${section.name}-${selected.name}`;
} else {

View File

@ -218,7 +218,8 @@ export default {
},
//
split() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.split, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);
@ -234,7 +235,8 @@ export default {
},
//
active() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.active, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);
@ -257,7 +259,8 @@ export default {
// },
//
setSpeed() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.setSpeed, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.speedLimitControl.doShow(operate, this.selected);

View File

@ -80,7 +80,8 @@ export default {
//
if (!this.dialogShow) {
if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) {
this.formModel.sectionName = selected.parentCode ? selected.parentName + '-' + selected.name : selected.name;
const hasParentCode = (this.selected.type == '02');
this.formModel.sectionName = hasParentCode ? selected.parentName + '-' + selected.name : selected.name;
this.formModel.lengthFact = selected.lengthFact;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {

View File

@ -947,7 +947,7 @@ export default {
padding: 0px;
margin: 0px;
max-height: 550px;
overflow-y: scroll;
/*overflow-y: scroll;*/
&::-webkit-scrollbar {
width: 4px;
@ -972,10 +972,13 @@ export default {
line-height: $menuItemHeight;
width: $menuItemWidth;
bottom: $menuItemHeight;
position: relative;
left: 180px;
padding-left: 0;
}
.active {
position: absolute;
/*position: absolute;*/
display: block !important;
}

View File

@ -189,7 +189,7 @@ export default {
if (controlTransfer.applicantId) {
const member = this.$store.state.training.memberData[controlTransfer.applicantId];
const simulationUserList = this.$store.state.training.simulationUserList;
if (member.type == 'DISPATCHER' && controlTransferList.length > 1) {
if (member && member.type == 'DISPATCHER' && controlTransferList.length > 1) {
controlTransferList.forEach(each=>{
this.showDialog(this.$store.state.training.memberData[each.applicantId], each, simulationUserList, [each]);
});

View File

@ -49,7 +49,7 @@ export default {
{ deviceType: '05', orderNum: 4, operateCode: '204', tip: '鼠标左键点击【请求中控】', val: '{2}' },
{ deviceType: '05', orderNum: 5, operateCode: '2043', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '05', orderNum: 6, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: 'bar', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
{ deviceType: '05', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
]
},
{
@ -68,7 +68,7 @@ export default {
{ deviceType: '05', orderNum: 4, operateCode: '202', tip: '鼠标左键点击【请求站控】', val: '{2}' },
{ deviceType: '05', orderNum: 5, operateCode: '2023', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '05', orderNum: 6, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: 'bar', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
{ deviceType: '05', orderNum: 7, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
]
},
{
@ -88,7 +88,7 @@ export default {
{ deviceType: '05', orderNum: 5, operateCode: '203', tip: '鼠标左键点击【强制站控】', val: '{2}' },
{ deviceType: '05', orderNum: 6, operateCode: '2033', tip: '鼠标左键点击【确认】按钮' },
{ deviceType: '05', orderNum: 7, operateCode: '0013', tip: '鼠标左键点击【确定】按钮' },
{ deviceType: 'bar', orderNum: 8, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
{ deviceType: '05', orderNum: 8, operateCode: '000', tip: '鼠标左键点击【关闭】按钮' }
]
},
{
@ -119,7 +119,7 @@ export default {
{ deviceType: '06', orderNum: 2, operateCode: '505', tip: '鼠标左键点击【确定】按钮' }
]
},
{
{ // 实训未生成
maxDuration: 15,
minDuration: 8,
operateType: 'Stand_Force_Cancel_Hold_Train',

View File

@ -230,7 +230,8 @@ export default {
this.model.sectionCode = selected.code;
if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) {
const section = this.$store.getters['map/getDeviceByCode'](selected.parentCode);
if (section) {
const hasParentCode = (this.selected.type == '02');
if (section && hasParentCode) {
this.model.sectionName = `${section.name}-${selected.name}(${selected.code})`;
} else {
this.model.sectionName = `${selected.name}(${selected.code})`;

View File

@ -195,7 +195,8 @@ export default {
},
//
split() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.split, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);
@ -212,7 +213,8 @@ export default {
},
//
active() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.active, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);

View File

@ -221,7 +221,6 @@ export default {
{ deviceType: '06', orderNum: 2, operateCode: '0012', tip: '鼠标左键点击【确定】按钮' }
]
},
{
maxDuration: 15,
minDuration: 8,
@ -766,8 +765,8 @@ export default {
minDuration: 8,
operateType: 'Signal_Set_Auto_Turn_Back',
skinCode: '06',
trainingName: '设置自动折返进路({3})',
trainingRemark: '设置自动折返进路',
trainingName: '设置自动折返({3})',
trainingRemark: '设置自动折返',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
@ -780,14 +779,32 @@ export default {
minDuration: 8,
operateType: 'Signal_Cancel_Auto_Turn_Back',
skinCode: '06',
trainingName: ' 取消自动折返进路({3})',
trainingRemark: ' 取消自动折返进路',
trainingName: ' 取消自动折返({3})',
trainingRemark: ' 取消自动折返',
trainingType: 'Signal',
productTypes: ['02'],
stepVOList: [
{ deviceType: '05', orderNum: 1, operateCode: '901', tip: '鼠标右键菜单选择【取消自动折返】'},
{ deviceType: '05', orderNum: 2, operateCode: '901', tip: '鼠标左键点击【应用】' }
]
},
{
maxDuration: 20,
minDuration: 15,
operateType: 'Cancel_All_Limit_Speed',
skinCode: '06',
trainingName: ' 取消全线临时限速',
trainingRemark: ' 取消全线临时限速',
trainingType: 'LimitControl',
productTypes: ['02'],
stepVOList: [
{ deviceType: '10', orderNum: 1, operateCode: '800', tip: '鼠标右键菜单选择【取消全线临时限速】'},
{ deviceType: '10', orderNum: 2, operateCode: '8001', tip: '鼠标左键点击【打开会话】'},
{ deviceType: '10', orderNum: 3, operateCode: '8003', tip: '鼠标左键点击【确认】'},
{ deviceType: '10', orderNum: 4, operateCode: '8004', tip: '鼠标左键点击【确认】'},
{ deviceType: '10', orderNum: 5, operateCode: '8005', tip: '鼠标左键点击【关闭】'},
{ deviceType: '10', orderNum: 6, operateCode: '8006', tip: '鼠标左键点击【确认】' }
]
}
]
};

View File

@ -230,7 +230,8 @@ export default {
this.model.sectionCode = selected.code;
if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) {
const section = this.$store.getters['map/getDeviceByCode'](selected.parentCode);
if (section) {
const hasParentCode = (this.selected.type == '02');
if (section && hasParentCode) {
this.model.sectionName = `${section.name}-${selected.name}(${selected.code})`;
} else {
this.model.sectionName = `${selected.name}(${selected.code})`;

View File

@ -195,7 +195,8 @@ export default {
},
//
split() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.split, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);
@ -212,7 +213,8 @@ export default {
},
//
active() {
const sectionCode = this.selected.parentCode ? this.selected.parentCode : this.selected.code;
const hasParentCode = (this.selected.type == '02' || this.selected.type == '03');
const sectionCode = hasParentCode ? this.selected.parentCode : this.selected.code;
commitOperate(menuOperate.Section.active, {sectionCode:sectionCode}, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.sectionControl.doShow(operate, this.selected);

View File

@ -66,6 +66,7 @@
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import { mapGetters } from 'vuex';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'ChangeTID',
@ -116,13 +117,48 @@ export default {
this.dialogShow = true;
this.selected = selected;
this.groupNumber = selected.code;
this.tid = selected.tripNumber;
this.tid = selected.serviceNumber;
this.operate = step;
},
cancel() {
this.doClose();
},
commit() {
if (this.isUpdate) {
this.setTrainNumber();
}
},
//
setTrainNumber() {
const step = {
over: true,
code: `${this.selected.code}`,
operation: OperationEvent.Train.setTrainNumber.menu.operation,
cmdType: CMD.Train.CMD_TRAIN_CHANGE_TRIP_NUMBER,
param: {
groupNumber: this.selected.groupNumber,
serviceNumber: this.newTid
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
// this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
// this.$store.dispatch('menuOperation/pushRequestList', {
// device: this.selected,
// operation: { code: OperationEvent.Train.setTrainNumber.menu.operation, name: ''},
// cmdType: CMD.Train.CMD_TRAIN_CHANGE_TRIP_NUMBER,
// param: step.param
// });
this.doClose();
} else {
this.$refs.noticeInfo.doShow();
this.doClose();
}
}).catch(() => {
this.doClose();
this.$refs.noticeInfo.doShow();
});
}
}
};

View File

@ -126,12 +126,12 @@ export default {
children:[
{
label: '扣车',
handler: this.undeveloped,
handler: this.setDetainTrain,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
},
{
label: '发车 ',
handler: this.undeveloped,
handler: this.setTrainDeparture,
cmdType: CMD.TrainWindow.CMD_TRAIN_UPDATE_TYPE
}
]
@ -445,6 +445,40 @@ export default {
}
});
},
//
setDetainTrain() {
const step = {
over: true,
code: `${this.selected.code}`,
operation: OperationEvent.Train.setDetainTrain.menu.operation,
cmdType: CMD.Train.CMD_TRAIN_HOLD,
param: {
groupNumber: this.selected.groupNumber
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
}).catch(() => {
this.$refs.noticeInfo.doShow();
});
},
//
setTrainDeparture() {
const step = {
over: true,
code: `${this.selected.code}`,
operation: OperationEvent.Train.setTrainDeparture.menu.operation,
cmdType: CMD.Train.CMD_TRAIN_CANCEL_HOLD,
param: {
groupNumber: this.selected.groupNumber
}
};
this.$store.dispatch('training/nextNew', step).then(({ valid }) => {
}).catch(() => {
this.$refs.noticeInfo.doShow(step);
});
},
deletDestionation() {
const operate = {
start: true,

View File

@ -149,7 +149,8 @@ export default {
{ label: '控制模式', value: 'ControlConvertMenu' },
{ label: '车次窗', value: 'TrainWindow' },
{ label: '全线限速', value: 'LimitControl' },
{ label: '司机', value: 'Driver' }
{ label: '司机', value: 'Driver' },
{ label: '列车', value: 'Train' }
],
simulationDeviceList:[

View File

@ -220,7 +220,10 @@ export default {
/** 越信号机红灯 */
CMD_TRAIN_PASS_RED_SIGNAL: {value:'Train_Pass_Red_Signal', label: '越信号机红灯'},
/** 引导信号行车 */
CMD_TRAIN_DRIVE_BY_GUIDE_SIGNAL: {value:'Train_Drive_By_Guide_Signal', label: '引导信号行车'}
CMD_TRAIN_DRIVE_BY_GUIDE_SIGNAL: {value:'Train_Drive_By_Guide_Signal', label: '引导信号行车'},
CMD_TRAIN_HOLD: {value:'Train_Hold', label: '列车扣车'},
CMD_TRAIN_CANCEL_HOLD: {value:'Train_Cancel_Hold', label: '列车发车'},
CMD_TRAIN_CHANGE_TRIP_NUMBER: {value:'Train_Change_Trip_Number', label: '更改列车车次'}
},
TrainWindow: {
/** 修改列车识别号 */

View File

@ -2262,6 +2262,27 @@ export const OperationEvent = {
operation: '70j2',
domId: '_Tips-Train-updateIdleRunningMode-Choose'
}
},
// 设置扣车
setDetainTrain: {
menu: {
operation: '70k',
domId: '_Tips-Train-setDetainTrain-Menu'
}
},
// 列车发车
setTrainDeparture: {
menu: {
operation: '70l',
domId: '_Tips-Train-setTrainDeparture-Menu'
}
},
// 更改列车车次
setTrainNumber: {
menu: {
operation: '70m',
domId: '_Tips-Train-setTrainNumber-Menu'
}
}
},

View File

@ -34,7 +34,8 @@ export default {
{ label: this.$t('lesson.platform'), value: '06' },
{ label: this.$t('lesson.train'), value: '07' },
{ label: this.$t('lesson.station'), value: '08' },
{ label: this.$t('lesson.trainWindow'), value: '09' }
{ label: this.$t('lesson.trainWindow'), value: '09' },
{ label: '全线限速', value: '10' }
],
pagerConfig: {
pageSize: 'pageSize',
@ -119,6 +120,7 @@ export default {
}
return fieldValue;
}
return fieldValue;
},
queryFunction(params) {
return getOperateStepDataList(this.dicId, params);

View File

@ -167,7 +167,8 @@ export default {
this.memberIdList = [];
if (memberList && memberList.length) {
memberList.forEach(member => {
if (member && !(member.children) && (member.userId == '' || member.userId)) {
// (!member.userId)
if (member && !(member.children)) {
this.userString += member.label + ',';
this.memberIdList.push(member.id);
}

View File

@ -51,6 +51,7 @@
@switchMode="switchMode" -->
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
<scene-list ref="sceneList" @selectQuest="selectQuest" />
</div>
</template>
@ -60,6 +61,7 @@
import SetTime from '../demon/setTime';
import DemonMenu from '../demonMenu';
import DemonChat from '../demonChat';
import SceneList from './sceneList';
import MenuSchema from '@/views/newMap/displayNew/menuSchema';
import { getGoodsTryUse } from '@/api/management/goods';
import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@/api/simulation';
@ -80,7 +82,8 @@ export default {
SetTime,
DemonChat,
MenuSchema,
DemonMenu
DemonMenu,
SceneList
},
props: {
offset: {
@ -436,7 +439,7 @@ export default {
}
},
fieldPractice() {
this.$refs.menuSchema.viewRunQuest();
this.$refs.sceneList.doShow();
}
}
};

View File

@ -0,0 +1,149 @@
<template>
<div>
<el-dialog v-dialogDrag title="场景列表" :visible.sync="dialogVisible" width="800px" center>
<el-tabs v-model="activeName" type="card" style="height: 450px;">
<el-tab-pane label="主场景列表" name="first">
<el-table :data="mainSceneData" border :span-method="objectSpanMethod" stripe :cell-style="{padding: '8px 0'}">
<el-table-column type="index" width="50" label="序号" />
<el-table-column prop="type" width="200" label="类别" />
<el-table-column prop="scene" width="350" label="场景" />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.id" type="primary" size="small" @click="handleLoad(scope.row)">加载</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="副场景列表" name="second">
<el-table :data="deputySceneData" border stripe>
<el-table-column type="index" width="50" label="序号" />
<el-table-column prop="scene" width="550" label="场景" />
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.id" type="text" size="small" @click="handleLoad(scope.row)">加载</el-button>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</el-dialog>
</div>
</template>
<script>
import {getScriptByIdNew } from '@/api/script';
import { EventBus } from '@/scripts/event-bus';
import Cookies from 'js-cookie';
export default {
name:'ChangeMap',
data() {
return {
projectMapList:[],
dialogVisible: false,
selectMapId:'',
form: {
type: ''
},
row: '',
activeName: 'first',
memberList: [],
memberId:'',
selectMapLineCode:'',
mainSceneData: [
{type: '车辆故障', scene: '列车救援'},
{type: '信号系统故障', scene: '道岔故障', id: '11'},
{type: '信号系统故障', scene: '区域控制器故障'},
{type: '信号系统故障', scene: '联锁故障'},
{type: '供电系统故障', scene: '接触轨(网)断电'},
{type: '供电系统故障', scene: '车站照明熄灭影响乘降'},
{type: '车站机电设备故障', scene: '站台门故障'},
{type: '轨道故障', scene: '线路故障影响列车运行'}
],
deputySceneData: [
{ scene: '列车在站停车超时' },
{ scene: '列车无移动授权(站间区间或车站)' },
{ scene: '信号机故障(防护、分界点、出站等)' },
{ scene: '站台门关不上(单个或多个)' },
{ scene: '客流激增行车处置' },
{ scene: '路网协调请求(限流、换乘站通过)' }
]
};
},
mounted() {
},
methods:{
doShow(row) {
this.dialogVisible = true;
},
doClose() {
this.dialogVisible = false;
},
async handleLoad(row) {
this.row = row;
const res = await getScriptByIdNew(row.id);
this.memberId = '';
if (res.code == 200) {
EventBus.$emit('clearRunSeries');
if (res.data.memberList && res.data.memberList.length > 0) {
this.form.type = '';
this.$store.dispatch('training/setMemberList', {memberList:res.data.memberList, userId:this.$store.state.user.id});
const activeMemberList = [];
res.data.actionList.forEach((activeMember)=>{
if (!(activeMemberList.length > 0 && activeMemberList.includes(activeMember.memberId))) {
activeMemberList.push(activeMember.memberId);
}
});
const playerList = res.data.memberList.filter(member=>{
return activeMemberList.includes(member.id);
});
playerList.map(member=>{
if (!member.deviceName && member.deviceCode) {
const device = this.$store.getters['map/getDeviceByCode'](member.deviceCode);
if (device.name) {
member.deviceName = device.name;
} else {
member.deviceName = member.deviceCode;
}
}
if (member.type === 'DISPATCHER') {
this.memberId = member.id;
}
});
}
if (res.data.mapLocation) {
this.mapLocation = res.data.mapLocation;
}
}
this.confirm();
},
confirm() {
this.$emit('selectQuest', {row:this.row, id:this.memberId, mapLocation:this.mapLocation});
this.doClose();
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex === 1 && columnIndex === 1) {
return {
rowspan: 3,
colspan: 1
};
} else if (rowIndex === 4 && columnIndex === 1) {
return {
rowspan: 2,
colspan: 1
};
} else if ((rowIndex === 2 || rowIndex === 3 || rowIndex === 5) && columnIndex === 1) {
return {
rowspan: 0,
colspan: 0
};
} else {
return {
rowspan: 1,
colspan: 1
};
}
}
}
};
</script>

View File

@ -209,7 +209,6 @@ export default {
this.textStatusHeight = textStatus.offsetHeight || 0;
textStatus.style.top = this.offset - 15 + 'px';
}
console.log(this.offset, '*************');
});
},
//

View File

@ -155,7 +155,7 @@ function covertOperation(deviceType, operationParamMap, operationType) {
deviceName += '【车站-' + station.name + '】/';
}
if (device._type == 'Section') {
if (device.parentCode) {
if (device.parentCode && device.type == '02') {
const parentSection = store.getters['map/getDeviceByCode'](device.parentCode);
deviceName += '【' + operateEnum[deviceType].type + ' ' + parentSection.name + '-' + device.name + '】';
}

View File

@ -3,6 +3,8 @@
</template>
<script>
import {covertOperate} from './covertOperation.js';
import LangStorage from '@/utils/lang';
export default {
name:'ScriptTip',
props: {
@ -61,11 +63,22 @@ export default {
'$store.state.socket.simulationScriptTipFinish':function(val, old) {
//
this.scriptTipMessage = '';
this.tipInfo({ message: LangStorage.getLang() == 'en' ? "Correct operation! That's great!" : '操作正确!真棒!', color: 'green' });
}
},
methods:{
resetScriptTip() {
this.scriptTipMessage = '';
},
tipInfo(opt) {
if (opt && opt.hasOwnProperty('color') && opt.hasOwnProperty('message')) {
const h = this.$createElement;
this.$notify({
title: this.$t('global.tips'),
message: h('i', { style: 'color:' + opt.color }, opt.message)
});
}
}
}
};

View File

@ -129,7 +129,7 @@ export default {
},
'$store.state.training.rezoomCount': function () {
let code = this.$store.state.training.offsetStationCode; //
if (code && code.includes('TurnedAround')) { //
if (code && code.includes('Cycle')) { //
const cycleButtonList = this.$store.state.map.map.cycleButtonList;
if (cycleButtonList && cycleButtonList.length > 0) {
cycleButtonList.forEach(element => {

View File

@ -106,7 +106,7 @@ export default {
var position = null;
//
const newStep = Object.assign({}, step);
if (newStep.code.includes('TurnedAround')) {
if (newStep.code.includes('Cycle')) {
const buttonList = this.$store.state.map.map.cycleButtonList;
if (buttonList && buttonList.length > 0) {
buttonList.forEach(element => {

View File

@ -11,7 +11,7 @@
<el-table-column prop="label" label="描述" />
<el-table-column label="配置默认" width="100px">
<template slot-scope="scope">
<el-checkbox @click.native.prevent="checkOverlab(editModel.optionList, scope.$index)" v-model="scope.row.checked"></el-checkbox>
<el-checkbox v-model="scope.row.checked" @click.native.prevent="checkOverlab(editModel.optionList, scope.$index)" />
</template>
</el-table-column>
<el-table-column label="操作" width="100px">
@ -388,12 +388,14 @@ export default {
this.$refs.dataform && this.$refs.dataform.resetFields();
this.$refs.make && this.$refs.make.resetFields();
this.activeName = 'first';
if (selected.optionList) {
selected.optionList.forEach(item => {
item.checked = false;
if (item.id == selected.initId) {
item.checked = true;
}
});
}
this.editModel = deepAssign(this.editModel, selected);
this.editModel.type = selected._type;
this.$nextTick(() => {
@ -489,7 +491,7 @@ export default {
if (i != index) {
item.checked = false;
}
})
});
list[index].checked = !list[index].checked;
if (list[index].checked) {
this.editModel.initId = list[index].id;

View File

@ -136,7 +136,7 @@ export default {
{ prop: 'namePosition.x', firstLevel: 'namePosition', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '25px' },
{ prop: 'namePosition.y', firstLevel: 'namePosition', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '25px' }
] },
{ prop: 'type', label: this.$t('map.sectionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SectionTypeList }, //
{ prop: 'type', label: this.$t('map.sectionType'), type: 'select', optionLabel: 'name', optionValue: 'code', options: this.SectionTypeList, disabled: true }, //
{ prop: 'roadType', label: '线路类型:', type: 'select', optionLabel: 'name', optionValue: 'code', options: this.sectionRoadTypeList, clearable: true, isHidden: !this.isSwitchSectionType, deviceChange: this.roadTypeChange },
{ prop: 'leftSectionCode', label: this.$t('map.leftAssociatedSection'), type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', clearable: true, options: this.switchAndPhySicalSectionList, hover: this.hover, buttonType: 'leftSection', buttonShowType: this.isLeftSectionButtonShow, isHidden: !this.hasAssociatedSection }, //
{ prop: 'rightSectionCode', label: this.$t('map.rightAssociatedSection'), type: 'selectHover', optionLabel: 'name&&code', optionValue: 'code', clearable: true, options: this.switchAndPhySicalSectionList, hover: this.hover, buttonType: 'rightSection', buttonShowType: this.isRightSectionButtonShow, isHidden: !this.hasAssociatedSection }, //