diff --git a/src/App.vue b/src/App.vue
index 1bc2274ca..10e0788ac 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -80,8 +80,9 @@ export default {
},
created() {
this.project = getSessionStorage('project');
- if (this.project) {
- document.querySelector("link[rel*='icon']").href = loginInfo[this.project].linkIcon || ProjectIcon[this.project];
+ const linkIcon = loginInfo[this.project] ? loginInfo[this.project].linkIcon : (ProjectIcon[this.project] || '');
+ if (this.project && linkIcon) {
+ document.querySelector("link[rel*='icon']").href = linkIcon;
}
},
mounted() {
diff --git a/src/api/trainingPlatform.js b/src/api/trainingPlatform.js
index 842b033cc..906be28c8 100644
--- a/src/api/trainingPlatform.js
+++ b/src/api/trainingPlatform.js
@@ -146,3 +146,50 @@ export function updateMapFunctionSubset(data) {
data
});
}
+/** 根据模板生成地图功能 */
+export function generateMapFunctionByTemplate(data) {
+ return request({
+ url: `/api/mapFunction/generate/from/template`,
+ method: 'post',
+ data
+ });
+}
+/** 创建模板线路功能 */
+export function createTemplateMapFunction(data) {
+ return request({
+ url: `/api/mapFunction/template`,
+ method: 'post',
+ data
+ });
+}
+/** 修改模板线路功能 */
+export function updateTemplateMapFunction(data) {
+ return request({
+ url: `/api/mapFunction/template/${data.id}`,
+ method: 'put',
+ data
+ });
+}
+/** 删除模板线路功能 */
+export function deleteTemplateMapFunction(id) {
+ return request({
+ url: `/api/mapFunction/template/${id}`,
+ method: 'delete'
+ });
+}
+/** 查询模板线路功能列表 */
+export function queryTemplateMapFunctionList(params) {
+ return request({
+ url: `/api/mapFunction/template/list`,
+ method: 'get',
+ params
+ });
+}
+/** 分页查询模板线路功能列表 */
+export function queryTemplateMapFunPaged(params) {
+ return request({
+ url: `/api/mapFunction/template/paged`,
+ method: 'get',
+ params
+ });
+}
diff --git a/src/i18n/langs/en/login.js b/src/i18n/langs/en/login.js
index c241f5567..e082e8152 100644
--- a/src/i18n/langs/en/login.js
+++ b/src/i18n/langs/en/login.js
@@ -18,5 +18,7 @@ export default {
getLoginQrCode: 'Failed to get login qr code, please refresh and try again',
language: 'Language',
clickSwitchLanguage: 'Click switch language',
- accountName: 'Account name'
+ accountName: 'Account name',
+ registerAccount: 'Register account',
+ forgetPassword: 'Forget password?'
};
diff --git a/src/i18n/langs/zh/login.js b/src/i18n/langs/zh/login.js
index fc3fdbcd7..864a59201 100644
--- a/src/i18n/langs/zh/login.js
+++ b/src/i18n/langs/zh/login.js
@@ -18,5 +18,7 @@ export default {
getLoginQrCode: '获取登录二维码失败,请刷新重试',
language: '语言',
clickSwitchLanguage: '点击切换语言',
- accountName: '账户名'
+ accountName: '账户名',
+ registerAccount: '注册账号',
+ forgetPassword: '忘记密码?'
};
diff --git a/src/jmapNew/config/skinCode/datie_02.js b/src/jmapNew/config/skinCode/datie_02.js
index 174999e02..34f98aaed 100644
--- a/src/jmapNew/config/skinCode/datie_02.js
+++ b/src/jmapNew/config/skinCode/datie_02.js
@@ -476,49 +476,49 @@ class SkinCode extends defaultStyle {
offset: { x: 0, y: 0 },
text: '分散自律',
lightColor: '#0f0',
- defaultColor: '#ccc'
+ defaultColor: '#7F7F7F'
},
graphRoad: {
show: true,
offset: { x: 0, y: 0 },
text: '按图排路',
- lightColor: '#0f0',
- defaultColor: '#ccc'
+ lightColor: '#ff0',
+ defaultColor: '#0f0'
},
planControl: {
show: true,
offset: { x: 0, y: 0 },
text: '计划控制',
lightColor: '#0f0',
- defaultColor: '#ccc'
+ defaultColor: '#7F7F7F'
},
centerCommunication: {
show: true,
offset: { x: 0, y: 30 },
text: '中心通信',
- lightColor: '#0f0',
- defaultColor: '#ccc'
+ lightColor: '#FF0000',
+ defaultColor: '#0f0'
},
selfDisciplineCommunication: {
show: true,
offset: { x: 0, y: 30 },
text: '自律机通信',
- lightColor: '#0f0',
- defaultColor: '#ccc'
+ lightColor: '#7F7F7F',
+ defaultColor: '#0f0'
},
allowedTurnBack: {
show: true,
offset: { x: 0, y: 30 },
text: '允许转回',
- lightColor: '#0f0',
- defaultColor: '#ccc'
+ lightColor: '#ff0',
+ defaultColor: '#7F7F7F'
},
trainControl: {
show: true,
offset: { x: 0, y: 30 },
text: '列控',
- lightColor: '#0f0',
- defaultColor: '#ccc'
+ lightColor: '#ff0',
+ defaultColor: '#0f0'
}
}
};
diff --git a/src/jmapNew/shape/graph/Station/index.js b/src/jmapNew/shape/graph/Station/index.js
index 3bfc9d237..2035ad1ea 100644
--- a/src/jmapNew/shape/graph/Station/index.js
+++ b/src/jmapNew/shape/graph/Station/index.js
@@ -165,7 +165,11 @@ export default class Station extends Group {
const queryCtc = queryList.find(item => {
return item.includes('ctc');
});
- if (queryCtc && model.createControlMode) {
+ const queryCtcLineCode = queryList.find(item => {
+ return item.includes('lineCode=16');
+ });
+ const pic = store.state.map.picture;
+ if ((queryCtc || (pic == 'trafficTerminal' && queryCtcLineCode)) && model.createControlMode) {
this.createCtcControlMode();
} else if (this.style.Station.StationControl.special) {
if (model.visible && model.createControlMode) { // model.createControlMode 控制模式
@@ -850,7 +854,7 @@ export default class Station extends Group {
// }
}
- handleLocal() { // 站控
+ handleLocal(model) { // 站控
this.noneBeforeMode = 'Local';
this.emergencyControl && this.emergencyControl.setColor(this.style.Station.StationControl.lamp.grayColor);
this.substationControl && this.substationControl.setColor(this.style.Station.StationControl.lamp.yellowColor);
@@ -859,7 +863,23 @@ export default class Station extends Group {
this.substationArrowsControl && this.substationArrowsControl.setColor(this.style.Station.StationControl.lamp.greenColor);
this.stationControlCC && this.stationControlCC.setStyle({text:'LC', textFill:this.style.Station.StationControl.text.stationControlColor});
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.lightColor);
- this.selfDisciplineThree && this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.lightColor, 3);
+ // this.selfDisciplineThree && this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.lightColor, 3);
+ if (this.selfDisciplineThree) {
+ const arr = ['', 'Center', 'Station', 'Station_Shunt'];
+ let index = arr.findIndex(item => {
+ return model.operationMode == item;
+ });
+ if (index < 1) {
+ index = 1;
+ }
+ this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.lightColor, index);
+ }
+ if (this.graphRoad && model.routeSetMode == 'Manual_Set_Route') {
+ this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.lightColor);
+ }
+ if (this.planControl && model.planControl) {
+ this.planControl.setColor(this.style.Station.StationControl.planControl.lightColor);
+ }
// if (this.style.Station.StationControl.disPlayNone) {
// this.stationText && this.stationText.setStyle('textFill', '#fff');
// if (this.model.subheadDisplay) { // 副标题
@@ -938,7 +958,17 @@ export default class Station extends Group {
this.selfDiscipline && this.selfDiscipline.setColor(this.style.Station.StationControl.selfDiscipline.defaultColor);
this.selfDisciplineControl && this.selfDisciplineControl.setColor(this.style.Station.StationControl.selfDisciplineControl.defaultColor);
this.veryControlButton && this.veryControlButton.setStyle({ fill: this.style.Station.StationControl.veryControlButton.defaultColor });
- this.selfDisciplineThree && this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.defaultColor, 3);
+ this.centerCommunication && this.centerCommunication.setColor(this.style.Station.StationControl.centerCommunication.defaultColor);
+ this.graphRoad && this.graphRoad.setColor(this.style.Station.StationControl.graphRoad.defaultColor);
+ this.planControl && this.planControl.setColor(this.style.Station.StationControl.planControl.defaultColor);
+ this.trainControl && this.trainControl.setColor(this.style.Station.StationControl.trainControl.defaultColor);
+ this.allowedTurnBack && this.allowedTurnBack.setColor(this.style.Station.StationControl.allowedTurnBack.defaultColor);
+ this.selfDisciplineCommunication && this.selfDisciplineCommunication.setColor(this.style.Station.StationControl.selfDisciplineCommunication.defaultColor);
+ if (this.selfDisciplineThree) {
+ this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.defaultColor, 1);
+ this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.defaultColor, 2);
+ this.selfDisciplineThree.setColor(this.style.Station.StationControl.selfDisciplineThree.defaultColor, 3);
+ }
if (this.style.Station.stationText.isSpecialType) {
this.stationText.setColor(this.style.Station.stationText.noneModeColor);
this.stationText.setBackground(this.style.Station.stationText.defaultBackColor);
@@ -972,12 +1002,12 @@ export default class Station extends Group {
this.eachChild(item => { item.hide(); });
} else {
store.getters['map/checkStationGuideMaster'](this._code, model.sguideMasterLock, model.xguideMasterLock);
- model.controlMode && this['handle' + model.controlMode]();
+ model.controlMode && this['handle' + model.controlMode](model);
model.preResetValidDuration && this.handlePreResetLamp();
model.controller && this.handleComplexControl(model.controller);
model.emergencyController != undefined && this.handleEmergencyChange(model.emergencyController);
model.controlApplicant && this.handleControlApplicant(model);
- model.allowAutonomy && this.handleAllowAutonomy();
+ model.allowAutonomy && this.handleAllowAutonomy(model);
this.handleGuideLock(model);
if (this.style.Station.syncCentralizeStation && (model.controlMode || model.controller || model.emergencyController != undefined) && model.centralized) {
model.chargeStationCodeList.forEach(item => {
diff --git a/src/jmapNew/theme/components/utils/menuOperate.js b/src/jmapNew/theme/components/utils/menuOperate.js
index e57f202a6..abfa281ed 100644
--- a/src/jmapNew/theme/components/utils/menuOperate.js
+++ b/src/jmapNew/theme/components/utils/menuOperate.js
@@ -899,6 +899,16 @@ export const menuOperate = {
switchRouteSetModel:{
operation: OperationEvent.CTCCommand.switchRouteSetModel.confirm.operation,
cmdType: CMD.CTC.CTC_SWITCH_ROUTE_SET_MODEL
+ },
+ // 操作模式转换
+ switchControlMode:{
+ operation: OperationEvent.MixinCommand.modeCovert.applyModeCovertCommit.operation,
+ cmdType: CMD.CTC.CTC_SWITCH_CONTROL_OPERATION_MODEL
+ },
+ // 同意操作模式转换
+ agreeSwitchControlMode:{
+ operation: OperationEvent.MixinCommand.modeCovert.agreeModeCovertCommit.operation,
+ cmdType: CMD.CTC.CTC_AGREE_OPERATION_MODEL
}
},
Rail: {
diff --git a/src/jmapNew/theme/datie_02/menus/dialog/applyOrAgreeModeCovert.vue b/src/jmapNew/theme/datie_02/menus/dialog/applyOrAgreeModeCovert.vue
index 7b22d36e2..4af0f0509 100644
--- a/src/jmapNew/theme/datie_02/menus/dialog/applyOrAgreeModeCovert.vue
+++ b/src/jmapNew/theme/datie_02/menus/dialog/applyOrAgreeModeCovert.vue
@@ -5,47 +5,61 @@
class="apply-agree chengdou-03__systerm"
:title="title"
:visible.sync="show"
- width="500px"
+ width="600px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
-
-
-
Station name
-
-
- Select all
-
-
- Select all
-
-
- Select all
-
-
-
-
-
{{ station.name }}
-
- Central control
-
-
- Station control
-
-
- Station switching
-
-
-
+
+
+
+
+
+ 全选
+
+
+ 同意
+
+
+
+
+ 全选
+
+
+
+ 中心控制
+
+
+
+
+
+ 全选
+
+
+
+ 车站控制
+
+
+
+
+
+ 全选
+
+
+
+ 车站调车
+
+
+
+
-
+
- Confirm
+ 确定
- Cancel
+ 取 消
@@ -55,19 +69,31 @@
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { mapGetters } from 'vuex';
+import {menuOperate} from '@/jmapNew/theme/components/utils/menuOperate';
+import { UserOperationType } from '@/scripts/ConstDic';
export default {
name: 'ForkDirective',
components: {
NoticeInfo
},
+ props: {
+ work: {
+ type: String,
+ default: () => {
+ return 'ctcWork';
+ }
+ }
+ },
data() {
return {
dialogShow: false,
- title:'Mode of operation conversion',
- controlTypeAll:'',
- selectedControlList:[],
+ title: '操作方式转换',
+ controlTypeAll: '',
+ tableData: [],
loading: false,
- domIdConfirm:''
+ isAgreeMode: false,
+ allAgreeChecked: false,
+ domIdConfirm: ''
};
},
computed: {
@@ -79,33 +105,190 @@ export default {
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
+ },
+ roleDeviceCode() {
+ return this.$store.state.training.roleDeviceCode;
+ },
+ operationModeApplyList() {
+ return this.$store.state.socket.operationModeApplyList;
+ }
+ },
+ watch: {
+ tableData: {
+ handler: function() {
+ const hasTableData = !!this.tableData.length;
+ const isAgreeEvery = hasTableData && this.tableData.every(item => {
+ return item.isAgree;
+ });
+ this.allAgreeChecked = isAgreeEvery;
+ const centerEvery = hasTableData && this.tableData.every(item => {
+ return item.target == 'Center';
+ });
+ const stationEvery = hasTableData && this.tableData.every(item => {
+ return item.target == 'Station';
+ });
+ const shuntEvery = hasTableData && this.tableData.every(item => {
+ return item.target == 'Station_Shunt';
+ });
+ if (centerEvery) {
+ this.controlTypeAll = 'Center';
+ } else if (stationEvery) {
+ this.controlTypeAll = 'Station';
+ } else if (shuntEvery) {
+ this.controlTypeAll = 'Station_Shunt';
+ } else {
+ this.controlTypeAll = '';
+ }
+ },
+ deep: true
}
},
methods:{
+ getTextColor(row, type) {
+ let colorClass = '';
+ if (row.source == type) {
+ colorClass = 'redText';
+ }
+ if (this.isAgreeMode) {
+ if (row.target == type) {
+ colorClass = 'orangeText';
+ }
+ }
+ return colorClass;
+ },
+ changeAllAgreeChecked() {
+ this.tableData.forEach(item => {
+ this.$set(item, 'isAgree', this.allAgreeChecked);
+ });
+ },
+ changeControlTypeAll() {
+ this.tableData.forEach(item => {
+ this.$set(item, 'target', this.controlTypeAll);
+ });
+ },
doShow(operate) {
this.operation = operate.operation;
if (this.operation == OperationEvent.MixinCommand.modeCovert.applyModeCovert.operation) {
this.domIdConfirm = OperationEvent.MixinCommand.modeCovert.applyModeCovertCommit.domId;
+ this.isAgreeMode = false;
} else if (this.operation == OperationEvent.MixinCommand.modeCovert.agreeModeCovert.operation) {
this.domIdConfirm = OperationEvent.MixinCommand.modeCovert.agreeModeCovertCommit.domId;
+ this.isAgreeMode = true;
}
- this.selectedControlList = [];
+ this.getListData();
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
+ getListData() {
+ this.tableData = [];
+ if (this.isAgreeMode) {
+ this.operationModeApplyList.forEach(item => {
+ const info = this.$store.getters['map/getDeviceByCode'](item.code);
+ const obj = {
+ ...item,
+ name: info ? info.name : '',
+ isAgree: false
+ };
+ this.tableData.push(obj);
+ });
+ } else {
+ let list = this.stationList;
+ if (this.work == 'ctcWork') {
+ const roleDeviceInfo = this.$store.getters['map/getDeviceByCode'](this.roleDeviceCode);
+ if (roleDeviceInfo) {
+ list = [roleDeviceInfo];
+ }
+ }
+ list.forEach(item => {
+ const info = this.$store.getters['map/getDeviceByCode'](item.code);
+ if (info) {
+ const obj = {
+ name: info.name,
+ isAgree: false,
+ code: info.code,
+ source: info.operationMode,
+ target: info.operationMode
+ };
+ this.tableData.push(obj);
+ }
+ });
+ }
+ },
commit() {
- console.log('--commit---');
+ if (this.isAgreeMode) {
+ const list = [];
+ const noList = [];
+ this.tableData.forEach(item => {
+ if (item.isAgree) {
+ list.push(item.code);
+ } else {
+ noList.push(item.code);
+ }
+ });
+ const operate = {
+ over: true,
+ operation: menuOperate.CTC.agreeSwitchControlMode.operation,
+ userOperationType: UserOperationType.LEFTCLICK,
+ cmdType: menuOperate.CTC.agreeSwitchControlMode.cmdType,
+ param: {
+ agreeStationCodes: list,
+ noAgreeStationCodes: noList
+ }
+ };
+ this.loading = true;
+ this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
+ if (valid) {
+ this.loading = false;
+ this.doClose();
+ this.$store.commit('socket/clearOperationModeApplyList', JSON.parse(JSON.stringify(this.tableData)));
+ }
+ }).catch((err) => {
+ this.loading = false;
+ this.doClose();
+ this.$refs.noticeInfo.doShow(err.message);
+ });
+ } else {
+ const list = [];
+ this.tableData.forEach(item => {
+ if (item.source != item.target) {
+ list.push({
+ stationCode: item.code,
+ target: item.target
+ });
+ }
+ });
+ if (list.length) {
+ const operate = {
+ over: true,
+ operation: menuOperate.CTC.switchControlMode.operation,
+ userOperationType: UserOperationType.LEFTCLICK,
+ cmdType: menuOperate.CTC.switchControlMode.cmdType,
+ param: {
+ params: list
+ }
+ };
+ this.loading = true;
+ this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
+ if (valid) {
+ this.loading = false;
+ this.doClose();
+ }
+ }).catch((err) => {
+ this.loading = false;
+ this.doClose();
+ this.$refs.noticeInfo.doShow(err.message);
+ });
+ }
+ }
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({ valid }) => {
- if (valid) {
- this.doClose();
- }
+ this.doClose();
}).catch(() => {
this.doClose();
});
@@ -119,33 +302,17 @@ export default {
}
};
-
diff --git a/src/jmapNew/theme/datie_02/menus/dialog/statusSelect.vue b/src/jmapNew/theme/datie_02/menus/dialog/statusSelect.vue
index 1963f5c24..9821a2b17 100644
--- a/src/jmapNew/theme/datie_02/menus/dialog/statusSelect.vue
+++ b/src/jmapNew/theme/datie_02/menus/dialog/statusSelect.vue
@@ -155,7 +155,7 @@ export default {
const localArr = ['Station'];
list.forEach(item => {
const obj = this.$store.getters['map/getDeviceByCode'](item.code);
- if (obj && localArr.includes(obj.operationMode)) {
+ if (obj && obj.controlMode == 'Local' && localArr.includes(obj.operationMode)) {
const param = {
code: obj.code,
name: obj.name,
@@ -194,7 +194,6 @@ export default {
},
commit() {
const list = this.getChangeInfoList();
- console.log('🚀 ~ file: statusSelect.vue:154 ~ commit ~ list', list);
if (list.length) {
const operate = {
over: true,
@@ -211,10 +210,10 @@ export default {
this.loading = false;
this.doClose();
}
- }).catch(() => {
+ }).catch((err) => {
this.loading = false;
this.doClose();
- this.$refs.noticeInfo.doShow();
+ this.$refs.noticeInfo.doShow(err.message);
});
}
},
@@ -224,9 +223,7 @@ export default {
operation: OperationEvent.CTCCommand.switchRouteSetModel.cancel.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
- if (valid) {
- this.doClose();
- }
+ this.doClose();
});
},
doClose() {
diff --git a/src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue b/src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue
index f8b220c6c..b8015321c 100644
--- a/src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue
+++ b/src/jmapNew/theme/datie_02/menus/dispatchWorkMenu.vue
@@ -10,6 +10,7 @@
+
@@ -28,6 +29,7 @@ import PassiveContorl from '@/jmapNew/theme/components/menus/passiveDialog/contr
import { timestampFormat } from '@/utils/date';
// import BottomTable from './bottomTable';
import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
+import MenuButtonCtc from './menuButtonCtc';
export default {
name: 'DispatchWorkMenu',
@@ -39,7 +41,8 @@ export default {
MenuStationStand,
MenuStation,
MenuTrain,
- PassiveContorl
+ PassiveContorl,
+ MenuButtonCtc
// BottomTable
},
props: {
diff --git a/src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue b/src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
index ac5e56e75..2cb7f6448 100644
--- a/src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
+++ b/src/jmapNew/theme/datie_02/menus/menuButtonCtc.vue
@@ -1,96 +1,96 @@
@@ -216,6 +216,12 @@ export default {
'autoReentryList',
'autoReentryData'
]),
+ hasModeApplyList() {
+ return this.$store.state.socket.operationModeApplyList.length;
+ },
+ isDispatchWork () {
+ return this.work == 'dispatchWork';
+ },
Switch() {
return OperationEvent.Switch;
},
@@ -282,7 +288,11 @@ export default {
this.$store.dispatch('menuOperation/setButtonOperation', null);
this.clearOperate();
},
+ '$store.state.menuOperation.leftClickCount': function (val) {
+ this.modeCovertShow = false;
+ },
'$store.state.menuOperation.menuCount': function (val) {
+ this.modeCovertShow = false;
if (this.$store.getters['menuOperation/checkDialogIsOpen'](DeviceMenu.Cancel)) {
const operate = {
userOperationType: 'rightClick',
@@ -309,6 +319,7 @@ export default {
}
},
beforeDestroy() {
+ this.$store.dispatch('menuOperation/setButtonOperation', null);
this.routeDataMap = null;
this.routeButtonCodeList = [];
},
@@ -399,13 +410,23 @@ export default {
operation: OperationEvent.CTCCommand.switchRouteSetModel.menu.operation
};
this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
- if (valid) {
- this.$refs.statusSelect.doShow();
- }
+ // if (valid) {
+ this.$refs.statusSelect.doShow();
+ // }
+ });
+ },
+ modeCovertBtn(operation) {
+ const operate = {
+ operation: operation
+ };
+ this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
+ this.modeCovertShow = true;
+ // this.operation = operation;
});
},
buttonDown(operation, commandTypeList) {
// MixinCommand.modeCovert.button.operation
+ this.modeCovertShow = false;
const station = this.$store.getters['map/getDeviceByCode'](this.$store.state.training.roleDeviceCode);
if (!station || station.controlMode === 'Interlock') { return; }
const operate = {
@@ -419,7 +440,6 @@ export default {
this.operation = operation;
});
} else {
- this.modeCovertShow = false;
this.$store.dispatch('trainingNew/next', operate).then(({valid}) => {
if (valid) {
this.$store.dispatch('menuOperation/setButtonOperation', operation === this.Command.cancel.clearMbm.operation ? null : operation);
@@ -1052,4 +1072,27 @@ export default {
.eachModeCovertPop:hover{
background: #c3c3c3;
}
+ .disabled {
+ cursor: not-allowed;
+ span {
+ color: #ccc !important;
+ }
+ }
+ .redFlick {
+ background: red;
+ }
+ @keyframes fade {
+ from {
+ opacity: 1.0;
+ }
+ 50% {
+ opacity: 0.2;
+ }
+ to {
+ opacity: 1.0;
+ }
+ }
+ .flicker {
+ animation: fade 600ms infinite;
+ }
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 90b1d393d..831c80e1e 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -3,9 +3,9 @@
ref="keMenu"
class="navbar"
router
+ background-color="#00172E"
:default-active="activePath"
mode="horizontal"
- background-color="#545c64"
text-color="#fff"
active-text-color="#ffd04b"
@select="handleSelect"
@@ -35,7 +35,7 @@
-
+
{{ $t(item.meta.i18n) }}
@@ -222,9 +222,39 @@ export default {
};
-
diff --git a/src/views/newMap/display/lineBoard/mapVisual.vue b/src/views/newMap/display/lineBoard/mapVisual.vue
new file mode 100644
index 000000000..c2073391e
--- /dev/null
+++ b/src/views/newMap/display/lineBoard/mapVisual.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
diff --git a/src/views/newMap/display/lineBoard/recDep.vue b/src/views/newMap/display/lineBoard/recDep.vue
new file mode 100644
index 000000000..1d99ffe15
--- /dev/null
+++ b/src/views/newMap/display/lineBoard/recDep.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
完成接预
+
完成发预
+
取消接预
+
取消发预
+
完成到点
+
取消到点
+
完成发点
+
取消发点
+
关闭
+
+
+
+
+
+
diff --git a/src/views/newMap/display/lineBoard/routeSelection1.vue b/src/views/newMap/display/lineBoard/routeSelection1.vue
new file mode 100644
index 000000000..26df9e930
--- /dev/null
+++ b/src/views/newMap/display/lineBoard/routeSelection1.vue
@@ -0,0 +1,308 @@
+
+
+
+ 列车车次
+ {{ selected.tripNumber }}
+
+
+ 进路描述
+
+
+ {{ `${type === 'dep' ? '发车/通过': '接车/通过'}; 股道:${selected.trackName};进路按钮:${getRouteNames()}` }}
+
+
+
+
+ 进路显示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分段办理
+
+
+
+ 办理接车
+ 办理发车
+ 办理通过
+ 进路单锁
+ 取消进路
+ 关闭
+
+
+
+
+
+
+
+
diff --git a/src/views/newMap/display/terminals/index.vue b/src/views/newMap/display/terminals/index.vue
index 749df5fdc..76773b573 100644
--- a/src/views/newMap/display/terminals/index.vue
+++ b/src/views/newMap/display/terminals/index.vue
@@ -206,6 +206,7 @@ export default {
this.$store.dispatch('map/initJlmapLoadedCountClear');
this.$store.dispatch('socket/clearSimulationRoleList');
this.$store.dispatch('trainingNew/clearTrainingData');
+ this.$store.dispatch('map/resetActiveTrainList');
this.$store.dispatch('runPlan/setPlanData', []);
},
methods: {
diff --git a/src/views/newMap/display/trainingDesign/designPane.vue b/src/views/newMap/display/trainingDesign/designPane.vue
index f77267261..bb68b7b85 100644
--- a/src/views/newMap/display/trainingDesign/designPane.vue
+++ b/src/views/newMap/display/trainingDesign/designPane.vue
@@ -468,6 +468,7 @@ export default {
this.addPlayerIdList(val);
},
addPlayerIdList(playId) {
+ console.log(this.playerIdList.includes(playId), this.playerIdList, playId);
if (!this.playerIdList.includes(playId)) {
this.playerIdList.push(playId);
}
@@ -476,7 +477,7 @@ export default {
checkPlayerIdHas() {
const list = [];
this.tableData.forEach(elem => {
- if (this.playerIdList.includes(elem.memberId)) {
+ if (this.playerIdList.includes(elem.memberId) && !list.includes(elem.memberId)) {
list.push(elem.memberId);
}
});
diff --git a/src/views/organization/index.vue b/src/views/organization/index.vue
index a06468b69..204712ff9 100644
--- a/src/views/organization/index.vue
+++ b/src/views/organization/index.vue
@@ -4,7 +4,6 @@