Merge remote-tracking branch 'origin/test'

This commit is contained in:
program-walker 2020-06-11 17:19:38 +08:00
commit a140c47f32
47 changed files with 1231 additions and 1607 deletions

View File

@ -1,14 +1,14 @@
<template>
<div class="container">
<li v-if="option.children && option.children.length" class="menu-item" :class="popClass" @mouseenter="enter($vnode.key)" @mouseleave="leave">
<div class="flex-box">
<div ref="flexBox" class="flex-box">
<el-button type="text" class="item" :disabled="checkDisabled(option)">
<el-link v-if="option.tipsType" :type="option.tipsType" :underline="false">{{ option.label }}</el-link>
<span v-else :style="{color: textColor(option) }">{{ option.label }}</span>
</el-button>
<i class="el-icon-caret-right" />
<i class="el-icon-arrow-right" />
</div>
<ul v-if="isPopup" ref="popup" class="menu" :style="{display: isShow? 'block': 'table'}">
<ul v-if="isPopup" ref="popup" class="menu" :style="{display: isShow? 'block': 'table', marginLeft: marginLeft+'px'}">
<div class="menu-pop">
<div v-show="isShow" class="arrow el-icon-arrow-down" />
<pop-menu-item v-for="(el, i) in option.children" :key="i" :option="el" :pop-class="popClass" @close="close" />
@ -66,6 +66,9 @@ export default {
},
isShow() {
return this.option.children.length > 12;
},
marginLeft() {
return this.$refs.flexBox.offsetWidth;
}
},
methods: {
@ -123,7 +126,6 @@ export default {
$item-border: #909399;
$item-disabled: #cccccc;
$item-height: 30px;
$item-width: 180px;
/deep/ {
.el-button--text {
@ -137,10 +139,8 @@ export default {
.menu {
padding: 0;
position: absolute;
margin-left: $item-width - 2;
margin-top: -$item-height - 1;
max-height: 360px;
min-width: 800px;
overflow: auto;
&-pop {
@ -162,15 +162,12 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 3px;
}
.menu-item {
background: $bg;
list-style: none;
width: $item-width;
// display: flex;
// justify-content: space-between;
// align-items: center;
}
.menu-item:hover {

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
export const keyboardEvents = {
C: {altKey:false, ctrlKey:true, shiftKey:false, event: 'Ctrl_C'}, // 绘图复制
V: {altKey:false, ctrlKey:true, shiftKey:false, event: 'Ctrl_V'} // 绘图粘贴
// DELETE: {altKey:false, ctrlKey:false, shiftKey:false, event: 'Delete'}, // 快捷删除绘图元素
V: {altKey:false, ctrlKey:true, shiftKey:false, event: 'Ctrl_V'}, // 绘图粘贴
DELETE: {altKey:false, ctrlKey:false, shiftKey:false, event: 'Delete'}, // 快捷删除绘图元素
// ENTER: {altKey:false, ctrlKey:false, shiftKey:false, event: 'Update'} // 快捷修改绘图元素
};

View File

@ -17,6 +17,10 @@ export default class jetFan extends Group {
position: [this.model.point.x, this.model.point.y]
});
this.path = createPathSvg(this.model);
if (this.model.rotate) {
this.grouper.origin = [this.model.width / 2, this.model.width / 2];
this.grouper.rotation = -Math.PI / 180 * Number(this.model.rotate);
}
this.add(this.grouper);
this.grouper.add(this.path);
}

View File

@ -202,6 +202,33 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
for (let tl=0; tl<6; tl++) {
trainmodel.children[tl].position.z = point.z;
}
if(trainmodel.openleft == "1"){
trainmodel.openleft = "0";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].stop();
}
trainmodel.openright = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].down[an]._clip.duration;
actions["traindoor"].down[an].timeScale = 1;
actions["traindoor"].down[an].play();
}
}else if(trainmodel.openright == "1"){
trainmodel.openright = "0";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].stop();
}
trainmodel.openleft = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = 1;
actions["traindoor"].top[an].play();
}
}
}else{
trainmodel.right = "1";
trainmodel.rotation.y = 0;
@ -210,7 +237,35 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
for (let tl=0; tl<6; tl++) {
trainmodel.children[tl].position.z = point.z;
}
if(trainmodel.openleft == "1"){
trainmodel.openleft = "0";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].stop();
}
trainmodel.openright = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].down[an]._clip.duration;
actions["traindoor"].down[an].timeScale = 1;
actions["traindoor"].down[an].play();
}
}else if(trainmodel.openright == "1"){
trainmodel.openright = "0";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].stop();
}
trainmodel.openleft = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = 1;
actions["traindoor"].top[an].play();
}
}
}
}
if(trainmodel.curve && trainmodel.offset != data.offset){
@ -356,6 +411,9 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
function traindoorupdate(data){
// console.log(data);
// console.log("direct:"+trainmodel.right);
// console.log(trainmodel.openleft);
// console.log(trainmodel.openright);
if(trainmodel.code == data.code){
if(trainmodel.right == "0"){
@ -403,16 +461,16 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
}else{
if(data.doorCode == "1"){
if(trainmodel.openright != data.open && data.open == "0"){
trainmodel.openright = "0";
if(trainmodel.openleft != data.open && data.open == "0"){
trainmodel.openleft = "0";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = actions["traindoor"].top[an]._clip.duration;
actions["traindoor"].top[an].timeScale = -1;
actions["traindoor"].top[an].play();
}
}else if(trainmodel.openright != data.open && data.open == "1"){
trainmodel.openright = "1";
}else if(trainmodel.openleft != data.open && data.open == "1"){
trainmodel.openleft = "1";
for(let an=actions["traindoor"].top.length-1;an>=0;an--){
actions["traindoor"].top[an].reset();
actions["traindoor"].top[an].time = 0;
@ -423,16 +481,16 @@ export function Jl3dDrivingNew(mixers,updatemmi,sound,translation,routegroup,sta
}else{
if (trainmodel.openleft != data.open && data.open == '0') {
trainmodel.openleft = '0';
if (trainmodel.openright != data.open && data.open == '0') {
trainmodel.openright = '0';
for (let an=actions["traindoor"].down.length-1; an>=0; an--) {
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = actions["traindoor"].down[an]._clip.duration;
actions["traindoor"].down[an].timeScale = -1;
actions["traindoor"].down[an].play();
}
} else if (trainmodel.openleft != data.open && data.open == '1') {
trainmodel.openleft = "1";
} else if (trainmodel.openright != data.open && data.open == '1') {
trainmodel.openright = "1";
for(let an=actions["traindoor"].down.length-1;an>=0;an--){
actions["traindoor"].down[an].reset();
actions["traindoor"].down[an].time = 0;

View File

@ -138,8 +138,8 @@ export function TrainListN() {
newmesh.speed = 0;
newmesh.speeds = 0;
newmesh.offset = null;
newmesh.openleft = '3';
newmesh.openright = '3';
newmesh.openleft = '0';
newmesh.openright = '0';
scope.group.add(newmesh);

View File

@ -253,7 +253,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -366,7 +366,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -203,7 +203,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -386,7 +386,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -13,7 +13,7 @@ class SkinCode extends defaultStyle {
show: true, // 物理区段名称显示
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 18, // 文字离区段距离
fontSize: 11, // 字体大小
fontSize: 12, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
@ -24,7 +24,7 @@ class SkinCode extends defaultStyle {
show: true, // 逻辑区段名称显示
position: 0, // 区段名称位置 1 上面 -1 下面 0 对称
distance: 6, // 文字离区段距离
fontSize: 8, // 字体大小
fontSize: 12, // 字体大小
fontWeight: 'normal', // 字体粗细
fontColor: '#FFFFFF', // 字体颜色
textAlign: 'center', // 水平对齐方式
@ -421,8 +421,7 @@ class SkinCode extends defaultStyle {
};
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 8 // 延伸长度
};

View File

@ -395,7 +395,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -415,7 +415,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -390,7 +390,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -514,7 +514,7 @@ class SkinCode extends defaultStyle {
// 供电线路
this[deviceType.Power] = {
lineColor: '#FFFFFF', // 线条颜色
strokeColor: '#ccc', // 线条颜色
strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度
};

View File

@ -167,9 +167,10 @@ class Jlmap {
const arr = [];
const rectList = [];
let rect = '';
// console.log(this.mapDevice);
for (const i in this.mapDevice) {
const element = this.mapDevice[i];
if (element.instance) {
if (element.instance && element._type == 'Section') {
if (!rect) {
rect = element.instance.getBoundingRect().clone();
} else {
@ -187,8 +188,8 @@ class Jlmap {
const scaleHeight = Math.floor(((opts.height - 100) / (rect.height * num)) * 100) / 100;
const scale = Math.min(scaleWidth, scaleHeight);
// const offsetHeight = (offsetY - (rect.height * scale)) / 2 + Math.abs(rect.x); // 高度差
// console.log(offsetHeight, opts.height, screenSplit, offsetY, rect);
// const offsetHeight = (offsetY - (rect.height * scale)) + Math.abs(rect.x * scale); // 高度差
// console.log(offsetHeight, opts.height, screenSplit, offsetY, rect, '缩放对比>', scaleWidth, scaleHeight);
for (let i = 0; i < splitList.length; i++) {
let offsetX = '';
@ -198,11 +199,11 @@ class Jlmap {
const dx = (opts.width - (splitList[i] - splitList[i - 1]) * scale) / 2; // 居中计算偏移值
offsetX = splitList[i - 1] * scale - dx;
}
// const param = { scaleRate: scale, offsetX: offsetX, offsetY: -offsetHeight - (offsetY * i) };
const param = { scaleRate: scale, offsetX: offsetX, offsetY: -120 - (offsetY * i) };
if (i == 0) {
param.offsetY = -160 - (opts.offsetY || 0);
}
// const param = { scaleRate: scale, offsetX: offsetX, offsetY: -(offsetY * i) - offsetHeight};
const param = { scaleRate: scale, offsetX: offsetX, offsetY: -160 - (offsetY * i) };
// if (i == 0) {
// param.offsetY -= -100;
// }
arr.push(param);
const rect = {x: 0, y: 0, width: Number(splitList[i]) + 5, height: opts.height};
rectList.push(rect);
@ -390,7 +391,7 @@ class Jlmap {
(list || []).forEach((elem, index) => {
const code = elem.code;
const type = elem._type;
if (elem.deviceType === 'ROUTE') { // 处理进路数据状态
if (elem.deviceType === 'ROUTE' && this.logicData.routeData) { // 处理进路数据状态
store.dispatch('map/updateRouteState', elem);
const route = this.logicData.routeData[code];
if (route.automaticRouteCode) {

View File

@ -489,7 +489,7 @@ class StationStand extends Group {
if (!this.isShowShape) return;
// 新版地图使用新版状态变更方式
this.recover();
model.free && this.spare(); /** 空闲*/
!model.trainParking && this.spare(); /** 空闲*/
model.trainParking && this.stop(); /** 列车停站*/
model.emergencyClosed && this.emergentClose(); /** 站台紧急关闭*/

View File

@ -38,7 +38,7 @@ export default class Text2 extends Group {
x: model.position.x,
y: model.position.y,
text: content,
textFont: model.font,
fontSize: Number(model.font),
textFill: model.fontColor,
textAlign: 'middle'
}

View File

@ -1,6 +1,16 @@
<template>
<el-dialog class="beijing-01__systerm notice-info" :title="title" :visible.sync="show" width="360px"
:before-close="doClose" :zIndex="2000" :modal="false" :close-on-click-modal="false" append-to-body v-dialogDrag>
<el-dialog
v-dialogDrag
class="beijing-01__systerm notice-info"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div class="context">
<template v-for="(message, index) in messages">
<div :key="index">{{ message }}</div>
@ -25,7 +35,7 @@
dialogShow: false,
messages: ['命令下达失败'],
operate: null
}
};
},
computed: {
show() {
@ -41,7 +51,7 @@
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
})
});
},
methods: {
doShow(operate, messages) {
@ -66,7 +76,7 @@
this.doClose();
}
}
}
};
</script>
<style>

View File

@ -1,300 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="beijing-01__systerm stand-detain-train"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row class="header">
<el-col :span="10"><span>集中站</span></el-col>
<el-col :span="10" :offset="2"><span>站台</span></el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="10" :offset="2">
<el-input v-model="standName" size="small" disabled />
</el-col>
</el-row>
<div v-if="!earlyDepar">
<div style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">类型</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio"
label="1"
:disabled="radio == 2"
style="display: block; text-align: left;"
>
本站台上行</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio"
label="2"
:disabled="radio == 1"
style="display: block; text-align: left;"
>
本站台下行</el-radio>
</el-col>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
label="1"
:disabled="radio1 == '2'"
style="display: block; text-align: left;"
>
扣车</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
label="2"
:disabled="radio1 == '1'"
style="display: block; text-align: left;"
>
取消扣车</el-radio>
</el-col>
</el-row>
</div>
</div>
<div v-if="earlyDepar">
<div style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">类型</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
:id="upRadioId"
v-model="radio2"
label="1"
style="display: block; text-align: left;"
@change="changeRadio"
>
本站台上行</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
:id="downRadioId"
v-model="radio2"
label="2"
style="display: block; text-align: left;"
@change="changeRadio"
>
本站台下行</el-radio>
</el-col>
</el-row>
</div>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import { mouseCancelState } from '../utils/menuItemStatus';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '../utils/menuOperate';
export default {
name: 'StandDetainTrain',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
standName: '',
stationName: '',
selected: null,
operation: null,
radio: '1',
radio1: '1',
radio2: '1',
earlyDepar: false
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
upRadioId() {
return this.dialogShow ? OperationEvent.StationStand.earlyDeparture.upSelect.domId : '';
},
downRadioId() {
return this.dialogShow ? OperationEvent.StationStand.earlyDeparture.downSelect.domId : '';
},
title() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
return '扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
return '取消扣车';
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
return '提前发车';
}
return '';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
this.standName = '';
this.stationName = '';
if (selected) {
this.standName = selected.name;
}
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
this.standName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.operation = operate.operation;
}
this.dialogShow = true;
this.earlyDepar = false;
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
if (this.selected.right) {
this.radio = '1';
} else {
this.radio = '2';
}
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
if (this.selected.right) {
this.radio = '1';
} else {
this.radio = '2';
}
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
this.earlyDepar = true;
if (this.selected.right) {
this.radio2 = '1';
} else {
this.radio2 = '2';
}
}
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
mouseCancelState(this.selected);
},
changeRadio(val) {
const operate = {
operation: '',
val: val
};
if (val == 1) {
operate.operation = OperationEvent.StationStand.earlyDeparture.upSelect.operation;
} else if (val == 2) {
operate.operation = OperationEvent.StationStand.earlyDeparture.downSelect.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch(error => {
console.log(error);
});
},
commit() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
/** 设置扣车*/
this.setDetainTrain();
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
/** 取消扣车*/
this.cancelDetainTrain();
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
/** 提前发车*/
this.earlyDeparture();
}
},
//
setDetainTrain() {
this.sendCommand(menuOperate.StationStand.setDetainTrain);
},
//
cancelDetainTrain() {
this.sendCommand(menuOperate.StationStand.cancelDetainTrain);
},
//
earlyDeparture() {
this.sendCommand(menuOperate.StationStand.earlyDeparture);
},
sendCommand(operate) { //
this.loading = true;
commitOperate(operate, {}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow({}, error.message);
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.loading = false;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.stand-detain-train .context {
height: 80px !important;
}
</style>

View File

@ -1,8 +1,8 @@
<template>
<div>
<pop-menu ref="popMenu" :menu="menu" />
<stand-control ref="standControl" />
<stand-jump-stop-control ref="standJumpStopControl" />
<stand-control ref="standControl" system-name="beijing-01__systerm" />
<stand-jump-stop-control ref="standJumpStopControl" system-name="beijing-01__systerm" />
<stand-detail ref="standDetail" />
<stand-run-level ref="standRunLevel" />
<stand-stop-time ref="standStopTime" />
@ -13,8 +13,8 @@
<script>
import PopMenu from '@/components/PopMenu';
import StandControl from './dialog/standControl';
import StandJumpStopControl from './dialog/standJumpStopControl';
import StandControl from '@/jmapNew/theme/components/menus/dialog/standControl';
import StandJumpStopControl from '@/jmapNew/theme/components/menus/dialog/standJumpStopControl';
import StandBackStrategy from './dialog/standBackStrategy';
import StandDetail from './dialog/standDetail';
import StandRunLevel from './dialog/standRunLevel';

View File

@ -0,0 +1,90 @@
<template>
<el-dialog
v-dialogDrag
:class="systemName+' notice-info'"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
append-to-body
>
<div class="context">
<template v-for="(message, index) in messages">
<div :key="index">{{ message }}</div>
</template>
</div>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="8">
<el-button :id="domIdSure" type="primary" @click="commit">确定</el-button>
</el-col>
</el-row>
</span>
</el-dialog>
</template>
<script>
import {OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'NoticeInfo',
props:{
systemName:{
type:String,
required:true
}
},
data() {
return {
dialogShow: false,
messages: ['命令下达失败']
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
title() {
return '提示';
},
domIdSure() {
return this.dialogShow ? OperationEvent.Command.close.notice.domId : '';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(messages) {
this.dialogShow = true;
this.messages = ['命令下达失败'];
if (messages && messages != 'null') {
this.messages.push(messages);
}
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.doClose();
},
cancel() {
this.doClose();
}
}
};
</script>
<style>
.notice-info .context {
padding-bottom: 40px !important;
border: 1px solid lightgray;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm stand-detain-train" :title="title" :visible.sync="show" width="320px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-dialog v-dialogDrag :class="systemName+' stand-detain-train'" :title="title" :visible.sync="show" width="320px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row class="header">
<el-col :span="10"><span>集中站</span></el-col>
<el-col :span="10" :offset="2"><span>站台</span></el-col>
@ -121,21 +121,27 @@
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
<notice-info ref="noticeInfo" :system-name="systemName" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '../utils/menuOperate';
import NoticeInfo from '../../menus/childDialog/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '../../utils/menuOperate';
export default {
name: 'StandDetainTrain',
components: {
NoticeInfo
},
props:{
systemName:{
type:String,
required:true
}
},
data() {
return {
dialogShow: false,

View File

@ -1,7 +1,7 @@
<template>
<el-dialog
v-dialogDrag
class="beijing-01__systerm stand-detain-train"
:class="systemName+' stand-detain-train'"
:title="title"
:visible.sync="show"
width="380px"
@ -97,23 +97,29 @@
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
<notice-info ref="noticeInfo" :system-name="systemName" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import { mouseCancelState } from '../utils/menuItemStatus';
// import { mouseCancelState } from '../utils/menuItemStatus';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import {menuOperate, commitOperate} from '../utils/menuOperate';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import NoticeInfo from '../../menus/childDialog/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '../../utils/menuOperate';
export default {
name: 'StandDetainTrains',
components: {
NoticeInfo
},
props:{
systemName:{
type:String,
required:true
}
},
data() {
return {
dialogShow: false,
@ -237,7 +243,7 @@ export default {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
mouseCancelState(this.selected);
// mouseCancelState(this.selected);
},
commit() {
if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {

View File

@ -0,0 +1,251 @@
import store from '@/store/index_APP_TARGET';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
// 操作
export const menuOperate = {
Section:{
active:{
// 区段激活
operation: OperationEvent.Section.active.menu.operation,
cmdType: CMD.Section.CMD_SECTION_ACTIVE
},
alxeEffective:{
// 确认计轴有效
operation: OperationEvent.Section.alxeEffective.menu.operation,
cmdType: CMD.Section.CMD_SECTION_COMFIRMATION_AXLE
},
split:{
// 区段切除
operation: OperationEvent.Section.split.menu.operation,
cmdType: CMD.Section.CMD_SECTION_CUT_OFF
},
setSpeed:{
// 设置速度
operation: OperationEvent.Section.setSpeed.menu.operation,
cmdType: CMD.Section.CMD_SECTION_SET_LIMIT_SPEED
},
axlePreReset:{
// 区段计轴预复位
operation: OperationEvent.Section.axlePreReset.menu.operation,
cmdType: CMD.Section.CMD_SECTION_AXIS_PRE_RESET
},
fault:{
// 区段故障解锁
operation: OperationEvent.Section.fault.menu.operation,
cmdType: CMD.Section.CMD_SECTION_FAULT_UNLOCK
}
},
Signal:{
arrangementRoute:{
// 排列进路
operation: OperationEvent.Signal.arrangementRoute.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_SET_ROUTE
},
cancelTrainRoute:{
// 取消进路
operation: OperationEvent.Signal.cancelTrainRoute.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_ROUTE
},
humanTrainRoute:{
// 总人解
operation: OperationEvent.Signal.humanTrainRoute.menu.operation,
cmdType:CMD.Signal.CMD_SIGNAL_HUMAN_RELEASE_ROUTE
},
reopenSignal:{
// 信号重开
operation: OperationEvent.Signal.reopenSignal.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_REOPEN_SIGNAL
},
signalClose:{
// 信号关灯
operation: OperationEvent.Signal.signalClose.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_SIGNAL
},
humanControl:{
// 进路交人工控
operation: OperationEvent.Signal.humanControl.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CLOSE_AUTO_SETTING
},
atsAutoControl:{
// 进路交自动控
operation: OperationEvent.Signal.atsAutoControl.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_OPEN_AUTO_SETTING
},
setAutoInterlock:{
// 设置通过模式
operation: OperationEvent.Signal.setAutoInterlock.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_SET_CI_AUTO
},
cancelAutoInterlock:{
// 取消通过模式
operation: OperationEvent.Signal.cancelAutoInterlock.menu.operation,
cmdType: CMD.Signal.CMD_SIGNAL_CANCEL_CI_AUTO
},
detail:{
// 查询进路状态
operation: OperationEvent.Signal.detail.menu.operation
}
},
Switch:{
lock:{
// 道岔单锁
operation: OperationEvent.Switch.lock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_LOCK
},
unlock:{
// 道岔解锁
operation: OperationEvent.Switch.unlock.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_SINGLE_UNLOCK
},
turnoutForce:{
// 道岔强扳
operation: OperationEvent.Switch.turnoutForce.menu.operation
},
locate:{
// 单操到定位
operation: OperationEvent.Switch.locate.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_NORMAL_POSITION
},
reverse:{
// 单操到反位
operation: OperationEvent.Switch.reverse.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_REVERSE_POSITION
},
split:{
// 区段切除
operation: OperationEvent.Switch.split.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_CUT_OFF
},
active:{
// 区段激活
operation: OperationEvent.Switch.active.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_ACTIVE
},
setSpeed:{
// 设置临时限速
operation: OperationEvent.Switch.setSpeed.menu.operation,
cmdType:CMD.Switch.CMD_SWITCH_SET_LIMIT_SPEED
},
alxeEffective:{
// 确认计轴有效
operation: OperationEvent.Switch.alxeEffective.menu.operation,
cmdType: CMD.Switch.CMD_SWITCH_COMFIRMATION_AXLE
}
},
StationStand:{
setDetainTrain:{
// 设置扣车
operation: OperationEvent.StationStand.setDetainTrain.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_HOLD_TRAIN
},
cancelDetainTrain:{
// 取消扣车
operation: OperationEvent.StationStand.cancelDetainTrain.menu.operation,
cmdType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN
},
setJumpStop:{
// 设置跳停
operation: OperationEvent.StationStand.setJumpStop.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_JUMP_STOP
},
cancelJumpStop:{
// 取消跳停
operation: OperationEvent.StationStand.cancelJumpStop.menu.operation,
cmdType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP
},
setStopTime:{
// 停站时间控制
operation: OperationEvent.StationStand.setStopTime.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_PARK_TIME
},
setRunLevel:{
// 运行时间控制
operation: OperationEvent.StationStand.setRunLevel.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_RUN_TIME
},
earlyDeparture:{
// 设置提前发车
operation: OperationEvent.StationStand.earlyDeparture.menu.operation,
cmdType: CMD.Stand.CMD_STAND_EARLY_DEPART
},
setBackStrategy:{
// 设置折返策略
operation: OperationEvent.StationStand.setBackStrategy.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_REENTRY_STRATEGY
},
setDetainTrainAuto:{
// 区间列车数量限制
operation: OperationEvent.StationStand.setDetainTrainAuto.menu.operation,
cmdType:CMD.Stand.CMD_STAND_SET_HOLD_TRAIN_AUTO
},
cancelDetainTrainAuto:{
// 取消区间列车数量限制
operation: OperationEvent.StationStand.cancelDetainTrainAuto.menu.operation,
cmdType:CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN_AUTO
},
detail:{
// 查询站台状态
operation: OperationEvent.StationStand.detail.menu.operation
}
},
StationControl:{
requestCentralControl:{
// 请求中控(遥控)
operation: OperationEvent.StationControl.requestCentralControl.menu.operation,
cmdType: CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_CENTER_CONTROL
},
requestStationControl:{
// 请求站控
operation: OperationEvent.StationControl.requestStationControl.menu.operation,
cmdType:CMD.ControlConvertMenu.CMD_CM_APPLY_FOR_STATION_CONTROL
},
emergencyStationControl:{
// 紧急站控
operation: OperationEvent.StationControl.emergencyStationControl.menu.operation,
cmdType:CMD.ControlConvertMenu.CMD_CM_EMERGENCY_STATION_CONTROL
}
},
Common: {
setFault: {
operation: OperationEvent.MixinCommand.stoppage.menu.operation,
cmdType: CMD.Fault.CMD_SET_FAULT
},
cancelFault: {
operation: OperationEvent.MixinCommand.cancelStoppage.menu.operation,
cmdType: CMD.Fault.CMD_CANCEL_FAULT
}
}
};
export function commitOperate(operate, paramList, over) {
const step = {
start: true,
operation: operate.operation,
param:{}
};
step.param = paramList;
// over 0为首次操作1为中间操作2为最后操作3为直接一次性操作
if (over == 0 || over == 3) {
const codeList = Object.values(paramList);
step.code = codeList[0];
}
if (over != 0 && over != 3) {
delete step.start;
}
if (over == 2 || over == 3) {
step.over = true;
step.cmdType = operate.cmdType;
}
return new Promise(function(resolve, reject) {
store.dispatch('training/nextNew', step).then(({ valid }) => {
if (valid) {
store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
resolve({ valid: valid, operate: step });
}).catch(error=>{
reject(error);
});
});
}

View File

@ -1,366 +0,0 @@
<template>
<el-dialog v-dialogDrag class="foshan-01__systerm stand-detain-train" :title="title" :visible.sync="show" width="320px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row class="header">
<el-col :span="10"><span>集中站</span></el-col>
<el-col :span="10" :offset="2"><span>站台</span></el-col>
</el-row>
<el-row>
<el-col :span="10">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="10" :offset="2">
<el-input v-model="standName" size="small" disabled />
</el-col>
</el-row>
<div v-if="buckle">
<div style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">类型</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio"
label="1"
:disabled="radio == 2"
style="display: block; text-align: left;"
>
本站台上行</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio"
label="2"
:disabled="radio == 1"
style="display: block; text-align: left;"
>
本站台下行</el-radio>
</el-col>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
label="1"
:disabled="radio1 == '2'"
style="display: block; text-align: left;"
>
扣车</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
label="2"
:disabled="radio1 == '1'"
style="display: block; text-align: left;"
>
取消扣车</el-radio>
</el-col>
</el-row>
</div>
</div>
<div v-if="AutomaticBuckle">
<div style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">类型</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio v-model="autoRadio" label="1" style="display: block; text-align: left;">上行</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio v-model="autoRadio" label="2" style="display: block; text-align: left;">下行</el-radio>
</el-col>
</el-row>
</div>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio v-model="autoRadio1" label="1" :disabled="autoRadio1 == '2'" style="display: block; text-align: left;">设置</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio v-model="autoRadio1" label="2" :disabled="autoRadio1 == '1'" style="display: block; text-align: left;">取消</el-radio>
</el-col>
</el-row>
</div>
</div>
<div v-if="earlyDepar">
<div style="padding: 15px; margin-bottom: 25px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">类型</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
:id="upRadioId"
v-model="radio2"
label="1"
style="display: block; text-align: left;"
:disabled="radio2 == 2"
@change="changeRadio"
>
本站台上行</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
:id="downRadioId"
v-model="radio2"
label="2"
style="display: block; text-align: left;"
:disabled="radio2 == 1"
@change="changeRadio"
>
本站台下行</el-radio>
</el-col>
</el-row>
</div>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default {
name: 'StandDetainTrain',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
standName: '',
stationName: '',
selected: null,
operation: null,
radio: '1',
radio1: '1',
radio2: '1',
earlyDepar: false, //
buckle: true, //
AutomaticBuckle: false, //
autoRadio: '1',
autoRadio1: '1'
};
},
computed: {
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
upRadioId() {
return this.dialogShow ? OperationEvent.StationStand.earlyDeparture.upSelect.domId : '';
},
downRadioId() {
return this.dialogShow ? OperationEvent.StationStand.earlyDeparture.downSelect.domId : '';
},
title() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
return '扣车';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
return '取消扣车';
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
return '提前发车';
}
return '';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
this.standName = '';
this.stationName = '';
if (selected) {
this.standName = selected.name;
}
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
this.standName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.deviceStationCode);
if (station) {
this.stationName = station.name;
}
}
this.radio = '2';
if (!this.selected.right) { //
this.radio = '1';
}
this.operation = operate.operation;
this.setDefaultItems();
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
setDefaultItems() { //
this.earlyDepar = false;
this.buckle = false;
this.AutomaticBuckle = false;
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
this.buckle = true;
this.radio1 = '1';
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
this.buckle = true;
this.radio1 = '2';
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
this.earlyDepar = true;
if (!this.selected.right) {
this.radio2 = '2';
} else {
this.radio2 = '1';
}
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.operation = '';
this.$store.dispatch('training/emitTipFresh');
this.mouseCancelState(this.selected);
},
changeRadio(val) { //
const operate = {
operation: '',
val: val
};
if (val == 1) {
operate.operation = OperationEvent.StationStand.earlyDeparture.upSelect.operation;
} else if (val == 2) {
operate.operation = OperationEvent.StationStand.earlyDeparture.downSelect.operation;
}
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
}).catch(error => {
console.log(error);
});
},
commit() {
if (this.operation == OperationEvent.StationStand.setDetainTrain.menu.operation) {
/** 设置扣车*/
this.setDetainTrain();
} else if (this.operation == OperationEvent.StationStand.cancelDetainTrain.menu.operation) {
/** 取消扣车*/
this.cancelDetainTrain();
} else if (this.operation == OperationEvent.StationStand.earlyDeparture.menu.operation) {
/** 提前发车*/
this.earlyDeparture();
}
},
//
setDetainTrain() {
const operate = {
over: true,
operation: OperationEvent.StationStand.setDetainTrain.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_HOLD_TRAIN,
param: {
leftDirection: this.radio == '2', // 1 2
rightDirection: this.radio == '1'
}
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
this.doClose();
if (!valid) {
this.$refs.noticeInfo.doShow(operate);
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
});
},
//
cancelDetainTrain() {
const operate = {
over: true,
operation: OperationEvent.StationStand.cancelDetainTrain.menu.operation,
cmdType: CMD.Stand.CMD_STAND_CANCEL_HOLD_TRAIN,
param: {
leftDirection: this.radio == '2', // 1 2
rightDirection: this.radio == '1'
}
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
this.doClose();
if (!valid) {
this.$refs.noticeInfo.doShow(operate);
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
});
},
//
earlyDeparture() {
const operate = {
over: true,
operation: OperationEvent.StationStand.earlyDeparture.menu.operation,
cmdType: CMD.Stand.CMD_STAND_EARLY_DEPART
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(error => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.loading = false;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>
<style>
.stand-detain-train .context {
height: 80px !important;
}
</style>

View File

@ -1,355 +0,0 @@
<template>
<el-dialog v-dialogDrag class="foshan-01__systerm stand-detain-train" :title="title" :visible.sync="show" width="380px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row class="header">
<el-col :span="11"><span>集中站</span></el-col>
<el-col :span="11" :offset="2"><span>站台</span></el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="11" :offset="2">
<el-input v-model="standName" size="small" disabled />
</el-col>
</el-row>
<el-form label-width="70px" size="mini" style="">
<el-row style="margin-top: 20px;padding: 10px 5px; border: 1px solid lightgray;">
<span class="base-label" style="display:block; padding-left: 20px;">范围</span>
<el-radio-group :id="selfStationStandId" v-model="model.val1" @change="upAndDownStreamChangeVal1">
<div style="margin-bottom: 8px;">
<el-radio :label="upstream" :disabled="model.direction !== '02'">本站台上行跳停</el-radio>
</div>
<div style="margin-bottom: 8px;">
<el-radio :label="downstream" :disabled="model.direction !== '01'">本站台下行跳停</el-radio>
</div>
</el-radio-group>
<el-row>
<el-col :span="10">
<el-radio-group :id="otherStationStandId" v-model="model.val2" @change="upAndDownStreamChange">
<div style="margin-bottom: 8px;">
<el-radio :label="upstream" :disabled="model.direction !== '02'">指定列车上行跳停</el-radio>
</div>
<div style="margin-bottom: 8px;">
<el-radio :label="downstream" :disabled="model.direction !== '01'">指定列车下行跳停</el-radio>
</div>
</el-radio-group>
</el-col>
<el-col :span="11" align="top" :offset="2">
<span>车组号</span>
<el-select
:id="selectTrainId"
v-model="model.tripNumber"
style="width: 110px;"
size="mini"
:disabled="!model.val2"
@change="trainNoSelectChange"
>
<el-option
v-for="option in trainList"
:key="option.groupNumber"
:label="option.groupNumber"
:value="option.groupNumber"
/>
</el-select>
</el-col>
</el-row>
</el-row>
</el-form>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
:label="JumpStopSet"
:disabled="radio1 == JumpStopCancel"
style="display: block; text-align: left;"
>
设置</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
:label="JumpStopCancel"
:disabled="radio1 == JumpStopSet"
style="display: block; text-align: left;"
>
取消</el-radio>
</el-col>
</el-row>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import CMD from '@/scripts/cmdPlugin/CommandEnum';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'StandDetainTrains',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
standName: '',
stationName: '',
selected: null,
operation: null,
trainList: [],
radio1: '',
model: {
val1: '',
val2: '',
tripNumber: '',
direction: ''
}
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
selectTrainId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.select.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.select.domId : '';
}
},
selfStationStandId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.selfStationStand.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.selfStationStand.domId : '';
}
},
otherStationStandId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.otherStationStand.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.otherStationStand.domId : '';
}
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
title() {
return '跳停';
},
upstream() {
return '02'; //
},
downstream() {
return '01'; //
},
JumpStopSet() {
return OperationEvent.StationStand.setJumpStop.menu.operation;
},
JumpStopCancel() {
return OperationEvent.StationStand.cancelJumpStop.menu.operation;
}
},
watch: {
'model.val1'(val) {
if (val) this.model.val2 = '';
},
'model.val2'(val) {
if (val) this.model.val1 = '';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
this.radio1 = '';
this.standName = '';
this.stationName = '';
if (selected) {
this.standName = selected.name;
}
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
this.standName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.deviceStationCode);
if (station) {
this.stationName = station.name;
}
}
this.model.direction = '01';
this.model.val1 = '01'; // , 01: /02:
if (!this.selected.right) {
this.model.direction = '02';
this.model.val1 = '02';
}
this.radio1 = operate.operation;
this.model.val2 = '';
this.model.tripNumber = '';
/** 加载列车数据*/
this.trainList = this.map.trainList;
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.mouseCancelState(this.selected);
},
commit() {
if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
/** 设置跳停*/
this.setJumpStop();
} else if (this.operation == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
/** 取消跳停*/
this.cancelJumpStop();
}
},
//
setJumpStop() {
// let val = this.model.val1;
// if (this.model.val2) {
// val = this.model.val2;
// }
const operate = {
over: true,
operation: OperationEvent.StationStand.setJumpStop.menu.operation,
cmdType: CMD.Stand.CMD_STAND_SET_JUMP_STOP,
param: {
// Is_This_Platform: val,
trainGroupNumber: this.model.tripNumber
}
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
});
},
//
cancelJumpStop() {
// let val = this.model.val1;
// if (this.model.val2) {
// val = this.model.val2;
// }
const operate = {
over: true,
operation: OperationEvent.StationStand.cancelJumpStop.menu.operation,
cmdType: CMD.Stand.CMD_STAND_CANCEL_JUMP_STOP,
param: {
// Is_This_Platform: val,
trainGroupNumber: this.model.tripNumber
}
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow(operate, [error.message]);
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.loading = false;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
},
upAndDownStreamChangeVal1(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.selfStationStand.operation : OperationEvent.StationStand.cancelJumpStop.selfStationStand.operation;
this.model.val2 = '';
this.model.tripNumber = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
upAndDownStreamChange(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.otherStationStand.operation : OperationEvent.StationStand.cancelJumpStop.otherStationStand.operation;
this.model.val1 = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
trainNoSelectChange(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.select.operation : OperationEvent.StationStand.cancelJumpStop.select.operation;
this.model.val1 = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
}
}
};
</script>
<style>
.stand-detain-train .context {
height: 80px !important;
}
</style>

View File

@ -1,8 +1,8 @@
<template>
<div>
<pop-menu ref="popMenu" :menu="menu" />
<stand-control ref="standControl" />
<stand-jump-stop-control ref="standJumpStopControl" />
<stand-control ref="standControl" system-name="foshan-01__systerm" />
<stand-jump-stop-control ref="standJumpStopControl" system-name="foshan-01__systerm" />
<stand-detail ref="standDetail" />
<stand-run-level ref="standRunLevel" />
<stand-stop-time ref="standStopTime" />
@ -14,8 +14,8 @@
<script>
import PopMenu from '@/components/PopMenu';
import StandControl from './dialog/standControl';
import StandJumpStopControl from './dialog/standJumpStopControl';
import StandControl from '@/jmapNew/theme/components/menus/dialog/standControl';
import StandJumpStopControl from '@/jmapNew/theme/components/menus/dialog/standJumpStopControl';
import StandBackStrategy from './dialog/standBackStrategy';
import StandDetail from './dialog/standDetail';
import StandRunLevel from './dialog/standRunLevel';

View File

@ -1,327 +0,0 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm stand-detain-train" :title="title" :visible.sync="show" width="380px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false">
<el-row class="header">
<el-col :span="11"><span>集中站</span></el-col>
<el-col :span="11" :offset="2"><span>站台</span></el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-input v-model="stationName" size="small" disabled />
</el-col>
<el-col :span="11" :offset="2">
<el-input v-model="standName" size="small" disabled />
</el-col>
</el-row>
<el-form label-width="70px" size="mini" style="">
<el-row style="margin-top: 20px;padding: 10px 5px; border: 1px solid lightgray;">
<span class="base-label" style="display:block; padding-left: 20px;">范围</span>
<el-radio-group :id="selfStationStandId" v-model="model.val1" @change="upAndDownStreamChangeVal1">
<div style="margin-bottom: 8px;">
<el-radio :label="upstream" :disabled="model.direction !== '02'">本站台上行跳停</el-radio>
</div>
<div style="margin-bottom: 8px;">
<el-radio :label="downstream" :disabled="model.direction !== '01'">本站台下行跳停</el-radio>
</div>
</el-radio-group>
<el-row>
<el-col :span="10">
<el-radio-group :id="otherStationStandId" v-model="model.val2" @change="upAndDownStreamChange">
<div style="margin-bottom: 8px;">
<el-radio :label="upstream" :disabled="model.direction !== '02'">指定列车上行跳停</el-radio>
</div>
<div style="margin-bottom: 8px;">
<el-radio :label="downstream" :disabled="model.direction !== '01'">指定列车下行跳停</el-radio>
</div>
</el-radio-group>
</el-col>
<el-col :span="11" align="top" :offset="2">
<span>车组号</span>
<el-select
:id="selectTrainId"
v-model="model.tripNumber"
style="width: 110px;"
size="mini"
:disabled="!model.val2"
@change="trainNoSelectChange"
>
<el-option
v-for="option in trainList"
:key="option.groupNumber"
:label="option.groupNumber"
:value="option.groupNumber"
/>
</el-select>
</el-col>
</el-row>
</el-row>
</el-form>
<div style="padding: 15px; margin-top: 20px; border: 1px solid lightgray;">
<span class="base-label" style="left: -5px; top: -22px; background: #f0f0f0; padding: 0 4px;">功能</span>
<el-row style="margin-top: -13px;">
<el-col :span="11">
<el-radio
v-model="radio1"
:label="JumpStopSet"
:disabled="radio1 == JumpStopCancel"
style="display: block; text-align: left;"
>
设置</el-radio>
</el-col>
<el-col :span="11" :offset="2">
<el-radio
v-model="radio1"
:label="JumpStopCancel"
:disabled="radio1 == JumpStopSet"
style="display: block; text-align: left;"
>
取消</el-radio>
</el-col>
</el-row>
</div>
<el-row class="button-group">
<el-col :span="10" :offset="2">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="4">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import NoticeInfo from './childDialog/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '../utils/menuOperate';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
export default {
name: 'StandDetainTrains',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
standName: '',
stationName: '',
selected: null,
operation: null,
trainList: [],
radio1: '',
model: {
val1: '',
val2: '',
tripNumber: '',
direction: ''
}
};
},
computed: {
...mapGetters('map', [
'map'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
selectTrainId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.select.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.select.domId : '';
}
},
selfStationStandId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.selfStationStand.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.selfStationStand.domId : '';
}
},
otherStationStandId() {
if (this.radio1 == this.JumpStopSet) {
return this.dialogShow ? OperationEvent.StationStand.setJumpStop.otherStationStand.domId : '';
} else {
return this.dialogShow ? OperationEvent.StationStand.cancelJumpStop.otherStationStand.domId : '';
}
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
title() {
return '跳停';
},
upstream() {
return '02'; //
},
downstream() {
return '01'; //
},
JumpStopSet() {
return OperationEvent.StationStand.setJumpStop.menu.operation;
},
JumpStopCancel() {
return OperationEvent.StationStand.cancelJumpStop.menu.operation;
}
},
watch: {
'model.val1'(val) {
if (val) this.model.val2 = '';
},
'model.val2'(val) {
if (val) this.model.val1 = '';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
if (!this.dialogShow) {
this.radio1 = '';
this.standName = '';
this.stationName = '';
if (selected) {
this.standName = selected.name;
}
if (selected && selected._type.toUpperCase() === 'StationStand'.toUpperCase()) {
this.standName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.deviceStationCode);
if (station) {
this.stationName = station.name;
}
}
this.model.direction = '01';
this.model.val1 = '01'; // , 01: /02:
if (this.selected.right) {
this.model.direction = '02';
this.model.val1 = '02';
}
this.radio1 = operate.operation;
this.model.val2 = '';
this.model.tripNumber = '';
/** 加载列车数据*/
this.trainList = this.map.trainList;
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.mouseCancelState(this.selected);
},
commit() {
if (this.operation == OperationEvent.StationStand.setJumpStop.menu.operation) {
/** 设置跳停*/
this.setJumpStop();
} else if (this.operation == OperationEvent.StationStand.cancelJumpStop.menu.operation) {
/** 取消跳停*/
this.cancelJumpStop();
}
},
//
setJumpStop() {
this.loading = true;
commitOperate(menuOperate.StationStand.setJumpStop, {trainGroupNumber:this.model.tripNumber}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
//
cancelJumpStop() {
this.loading = true;
commitOperate(menuOperate.StationStand.cancelJumpStop, {trainGroupNumber:this.model.tripNumber}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
operation: OperationEvent.Command.cancel.menu.operation
};
this.loading = false;
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
},
upAndDownStreamChangeVal1(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.selfStationStand.operation : OperationEvent.StationStand.cancelJumpStop.selfStationStand.operation;
this.model.val2 = '';
this.model.tripNumber = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
upAndDownStreamChange(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.otherStationStand.operation : OperationEvent.StationStand.cancelJumpStop.otherStationStand.operation;
this.model.val1 = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
trainNoSelectChange(val) {
const operation = this.radio1 == this.JumpStopSet
? OperationEvent.StationStand.setJumpStop.select.operation : OperationEvent.StationStand.cancelJumpStop.select.operation;
this.model.val1 = '';
const operate = {
operation: operation
};
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
}
}
};
</script>
<style>
.stand-detain-train .context {
height: 80px !important;
}
</style>

View File

@ -1,8 +1,8 @@
<template>
<div>
<pop-menu ref="popMenu" :menu="menu" />
<stand-control ref="standControl" />
<stand-jump-stop-control ref="standJumpStopControl" />
<stand-control ref="standControl" system-name="ningbo-01__systerm" />
<stand-jump-stop-control ref="standJumpStopControl" system-name="ningbo-01__systerm" />
<stand-detail ref="standDetail" />
<stand-run-level ref="standRunLevel" />
<stand-stop-time ref="standStopTime" />
@ -14,8 +14,8 @@
<script>
import PopMenu from '@/components/PopMenu';
import StandControl from './dialog/standControl';
import StandJumpStopControl from './dialog/standJumpStopControl';
import StandControl from '@/jmapNew/theme/components/menus/dialog/standControl';
import StandJumpStopControl from '@/jmapNew/theme/components/menus/dialog/standJumpStopControl';
import StandBackStrategy from './dialog/standBackStrategy';
import StandDetail from './dialog/standDetail';
import StandRunLevel from './dialog/standRunLevel';

View File

@ -791,7 +791,9 @@ const map = {
state.autoReentryData[status.code] = deepAssign(state.autoReentryData[status.code], status);
},
updateTrainState:(state, status) =>{
if (state.map.trainList) {
state.map.trainList[parseInt(status.code) - 1] = deepAssign(state.map.trainList[parseInt(status.code) - 1] || {}, status);
}
},
updateStationStand: (state, status) => {
const holdIndex = state.holdStandList.indexOf(status.code);

View File

@ -163,6 +163,12 @@ export default {
mode: 'bas',
id: '28',
type: 'interface'
},
{
name: '隧道通风-射流风机图',
mode: 'bas',
id: '29',
type: 'interface'
}
]
},

View File

@ -117,6 +117,7 @@ export default {
code:'',
isRight:true,
width: 40,
rotate: 0,
x: 10,
y: 10
};

View File

@ -7,6 +7,9 @@
<el-form-item label="图形宽度" prop="width">
<el-input-number v-model="form.width" :min="20" />
</el-form-item>
<el-form-item label="旋转角度" prop="rotate">
<el-input-number v-model="form.rotate" />
</el-form-item>
<el-form-item label="X轴坐标" prop="x">
<el-input-number v-model="form.x" controls-position="right" :min="1" />
</el-form-item>
@ -34,6 +37,7 @@ export default {
form:{
code:'',
width: 40,
rotate: 0,
x: 10,
y: 10
},
@ -67,6 +71,7 @@ export default {
this.isUpdate = true;
this.form.code = model.code;
this.form.width = model.width;
this.form.rotate = model.rotate || 0;
this.form.x = model.point.x;
this.form.y = model.point.y;
}
@ -87,6 +92,7 @@ export default {
_type: 'JetFan',
code: this.isUpdate ? this.form.code : getUID('JetFan', this.iscs.jetFanList),
width: this.form.width,
rotate: this.form.rotate,
color:'#00ff00'
};
this.$emit('createJetFan', jetFanModel);
@ -104,6 +110,7 @@ export default {
this.form = {
code:'',
width: 40,
rotate: 0,
x: 10,
y: 10
};

View File

@ -1,9 +1,11 @@
<template>
<div class="schedules-box">
<div class="title-name">车站运行时间表</div>
<div class="title-name">{{ modeName }}</div>
<station-running-schedule v-if="showMode === 'stationRunningSchedule'" @changeShowMode="changeShowMode" />
<weekly-status v-else-if="showMode==='weeklyStatus'" @changeShowMode="changeShowMode" />
<schedules-manage v-else-if="showMode === 'schedulesManage'" @changeShowMode="changeShowMode" />
<broad-overview v-else-if="showMode === 'broadOverview'" @changeShowMode="changeShowMode" />
<save-schedule-view v-else-if="showMode === 'saveScheduleView'" @changeShowMode="changeShowMode" />
</div>
</template>
@ -11,23 +13,47 @@
import StationRunningSchedule from './schedulesChild/stationRunningSchedule';
import WeeklyStatus from './schedulesChild/weeklyStatus';
import SchedulesManage from './schedulesChild/schedulesManage';
import BroadOverview from './schedulesChild/broadOverview';
import SaveScheduleView from './schedulesChild/saveScheduleView';
export default {
name: 'Schedules',
components: {
StationRunningSchedule,
WeeklyStatus,
SchedulesManage
SchedulesManage,
BroadOverview,
SaveScheduleView
},
data() {
return {
station: '',
stations: [],
showMode: 'stationRunningSchedule'
showMode: 'stationRunningSchedule',
modeName: '车站运行时间表'
};
},
computed: {
},
methods: {
changeShowMode(mode) {
this.showMode = mode;
switch (this.showMode) {
case 'stationRunningSchedule':
this.modeName = '车站运行时间表';
break;
case 'weeklyStatus':
this.modeName = '一周车站时间表定期下载';
break;
case 'broadOverview':
this.modeName = '';
break;
case 'schedulesManage':
this.modeName = '控制时间表管理';
break;
case 'saveScheduleView':
this.modeName = '车站保存时间表查看';
break;
}
}
}
};
@ -41,7 +67,7 @@ export default {
.title-name{
width: 100%;
text-align: center;
font-size: 26px;
font-size: 20px;
margin-top: 30px;
color: #56E5DE;
}

View File

@ -0,0 +1,112 @@
<template>
<div style="width: 100%;height: calc(100% - 50px);display: flex;justify-content: center">
<div style="width: 25px;font-size: 18px;color: #56E5DE;margin: auto 3px;">主线运行时间表总览</div>
<div class="table-box" style="font-size: 13px">
<div style="display: flex;justify-content: left">
<div class="table-head" style="width: 95px;">车站</div>
<div class="table-head" style="width: 95px;" />
<div class="table-head" style="width: 95px;">版本</div>
<div class="table-head" style="width: 95px;" />
<div class="table-head" style="width: 140px;">空调大系统</div>
<div class="table-head" style="width: 140px;">空调小系统</div>
<div class="table-head" style="width: 140px;">隧道通风系统</div>
<div class="table-head" style="width: 140px;">照明系统</div>
</div>
<template v-for="(item, index) in tableData">
<div :key="index" style="display: flex;justify-content: left">
<div style="height: 30px;line-height: 30px;width: 95px;color: #56E5DE;border-bottom: 1px solid #3E5770">{{ item.stationName }}</div>
<div style="height: 30px;width: 95px;background: #FFF;border-bottom: 1px solid #3E5770;" />
<div style="height: 30px;width: 95px;border-bottom: 1px solid #3E5770;" />
<div class="button-box" style="height: 30px;width: 95px;line-height: 30px;text-align: center;">内容</div>
<div style="width: 140px;border-bottom: 1px solid #3E5770;">
<div style="display: inline-block;height: 28px;line-height: 28px;width: 60px;text-align: center;" :style="{color: item.largeAirConditioning?'#0F0':'#F00'}">{{ item.largeAirConditioning?'允许': '禁止' }}</div>
<div class="button-box" style="display: inline-block;height: 28px;width: 60px;line-height: 28px;text-align: center;" @click="changeSystemMode(item, 'largeAirConditioning')">允许/禁止</div>
</div>
<div style="width: 140px;border-bottom: 1px solid #3E5770;">
<div style="display: inline-block;height: 28px;line-height: 28px;width: 60px;text-align: center;" :style="{color: item.smallAirConditioning?'#0F0':'#F00'}">{{ item.smallAirConditioning?'允许': '禁止' }}</div>
<div class="button-box" style="display: inline-block;height: 28px;width: 60px;line-height: 28px;text-align: center;" @click="changeSystemMode(item, 'smallAirConditioning')">允许/禁止</div>
</div>
<div style="width: 140px;border-bottom: 1px solid #3E5770;">
<div style="display: inline-block;height: 28px;line-height: 28px;width: 60px;text-align: center;" :style="{color: item.tunnelVentilation?'#0F0':'#F00'}">{{ item.tunnelVentilation?'允许': '禁止' }}</div>
<div class="button-box" style="display: inline-block;height: 28px;width: 60px;line-height: 28px;text-align: center;" @click="changeSystemMode(item, 'tunnelVentilation')">允许/禁止</div>
</div>
<div style="width: 140px;border-bottom: 1px solid #3E5770;">
<div style="display: inline-block;height: 28px;line-height: 28px;width: 60px;text-align: center;" :style="{color: item.lighting?'#0F0':'#F00'}">{{ item.lighting?'允许': '禁止' }}</div>
<div class="button-box" style="display: inline-block;height: 28px;width: 60px;line-height: 28px;text-align: center;" @click="changeSystemMode(item, 'lighting')">允许/禁止</div>
</div>
</div>
</template>
</div>
<div style="font-size: 13px;text-align: center;margin-left: 10px;display: flex;flex-direction: column-reverse;">
<div class="button-box" style="height: 35px;padding-top: 2px;margin-bottom: 60px;" @click="changeShowMode('saveScheduleView')">车站保存<br>时间表查看</div>
<div class="button-box" style="height: 35px;padding-top: 2px;margin-bottom: 10px;" @click="changeShowMode('weeklyStatus')">每周<br>下发一览</div>
<div class="button-box" style="height: 35px;line-height: 35px;margin-bottom: 10px;" @click="changeShowMode('schedulesManage')">时间表管理</div>
</div>
</div>
</template>
<script>
export default {
name: 'BroadOverview',
data() {
return {
tableData: [
{stationName:'会展中心站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'世纪大道站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'交通大学站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'市图书馆站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'中心医院站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'未来路站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'火车站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'人民广场站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true},
{stationName:'体育中心站', largeAirConditioning: true, smallAirConditioning: true, tunnelVentilation: true, lighting: true}
]
};
},
methods: {
changeSystemMode(item, system) {
item[system] = !item[system];
},
changeShowMode(mode) {
this.$emit('changeShowMode', mode);
}
}
};
</script>
<style scoped>
.table-head{
background: #43388A;
border-right: 1px solid #001528;
border-bottom: 1px solid #001528;
height: 25px;
color: #FFF;
text-align: center;
line-height: 25px;
}
.table-box {
width: 85%;
height: 90%;
margin-top: 10px;
border-top: 2px solid #5B6163;
border-right: 1px solid #64758A;
border-left: 1px solid #64758A;
border-bottom: 1px solid #64758A;
}
.button-box {
background: #BABABB;
border-top: 2px solid #FFFFFE;
border-right: 2px solid #797977;
border-bottom: 2px solid #797977;
border-left: 2px solid #FFFFFE;
cursor: pointer;
}
.button-box.active,
.button-box:hover{
background: #EBB570;
border-top: 2px solid #795B31;
border-left: 2px solid #795B31;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
</style>

View File

@ -0,0 +1,120 @@
<template>
<div style="width: 100%;margin-top: 10px;">
<div class="border-box" style="width: 840px;margin: auto">
<el-row>
<el-col class="table-header" :span="8">车站</el-col>
<el-col class="table-header" :span="8">时间表</el-col>
<el-col class="table-header" :span="8">版本</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-select v-model="station" size="mini" placeholder="请选择" style="width: 250px;margin: 5px 15px">
<el-option
v-for="item in stations"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="8">
<el-select v-model="schedule" size="mini" placeholder="请选择" style="width: 250px;margin: 5px 15px">
<el-option
v-for="item in schedules"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
<el-col :span="8">
<div style="width: 250px;background: #FFF;height: 28px;margin: 5px 15px" />
</el-col>
</el-row>
</div>
<div style="display: flex;justify-content: center;">
<div style="display: flex; flex-wrap: wrap;width: 950px;margin-top: 10px;margin-left: 90px;">
<div style="width: 460px;height: 280px;background: #FFF;margin: 5px;">
<el-row>
<el-col class="table-header" style="text-align: left;" :span="6">时间</el-col>
<el-col class="table-header" style="text-align: left;" :span="18">空调大系统</el-col>
</el-row>
</div>
<div style="width: 460px;height: 280px;background: #FFF;margin: 5px;">
<el-row>
<el-col class="table-header" style="text-align: left;" :span="6">时间</el-col>
<el-col class="table-header" style="text-align: left;" :span="18">空调小系统</el-col>
</el-row>
</div>
<div style="width: 460px;height: 280px;background: #FFF;margin: 5px;">
<el-row>
<el-col class="table-header" style="text-align: left;" :span="6">时间</el-col>
<el-col class="table-header" style="text-align: left;" :span="18">照明系统</el-col>
</el-row>
</div>
<div style="width: 460px;height: 280px;background: #FFF;margin: 5px;">
<el-row>
<el-col class="table-header" style="text-align: left;" :span="6">时间</el-col>
<el-col class="table-header" style="text-align: left;" :span="18">隧道通风系统</el-col>
</el-row>
</div>
</div>
<div style="position: relative;top: 50px;font-size: 12px;text-align: center;margin-top: 355px;">
<div class="button-box" style="height: 35px;width:70px;margin: 10px;padding: 0;line-height: 30px;" @click="changeShowMode('schedulesManage')">时间表管理</div>
<div class="button-box" style="height: 35px;width:70px;margin: 10px;padding: 3px 0;" @click="changeShowMode('broadOverview')">全线运行<br>时间表总览</div>
<div class="button-box" style="height: 35px;width:70px;margin: 10px;padding: 3px 0;" @click="changeShowMode('stationRunningSchedule')">车站运行<br>时间表查看</div>
<div class="button-box" style="height: 35px;width:70px;margin: 10px;padding: 3px 0;" @click="changeShowMode('weeklyStatus')">每周<br>下发一览</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'SaveScheduleView',
data() {
return {
station: '',
stations: [],
schedule: '',
schedules: []
};
},
methods: {
changeShowMode(mode) {
this.$emit('changeShowMode', mode);
}
}
};
</script>
<style scoped>
.border-box{
border-top: 2px solid #FFFFFE;
border-right: 2px solid #797977;
border-bottom: 2px solid #797977;
border-left: 2px solid #FFFFFE;
}
.table-header{
background: #43388A;
text-align: center;
color: #FFF;
}
.button-box {
background: #BABABB;
border-top: 2px solid #FFFFFE;
border-right: 2px solid #797977;
border-bottom: 2px solid #797977;
border-left: 2px solid #FFFFFE;
cursor: pointer;
}
.button-box.active,
.button-box:hover{
background: #EBB570;
border-top: 2px solid #795B31;
border-left: 2px solid #795B31;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
</style>

View File

@ -1,36 +1,128 @@
<template>
<div style="width: 100%;display: flex;justify-content: center;">
<div style="width: 100%;display: flex;justify-content: center;height: 600px;">
<div>
<div class="top-content-box">
<div class="content-box">
<div style="width: 950px;font-size: 18px;color: #56E5DE;margin: 10px;">全线车站时间表</div>
<div style="width: 100%;display: flex;justify-content: center;">
<div style="width: 240px;height: 300px;background: #FFF;">
<div style="width: 240px;height: 280px;background: #FFF;">
<el-row>
<div style="background: #43388A;font-size: 14px;height: 30px;line-height: 30px;color: #FFF;text-align: center;">公用时间列表</div>
</el-row>
</div>
<div style="width: 120px;margin-left: 10px;">
<div style="font-size: 18px;color: #56E5DE;width: 100%;text-align: center;margin: 85px 0;">增加时间表名</div>
<div style="font-size: 18px;color: #56E5DE;width: 100%;text-align: center;margin: 75px 0;">增加时间表名</div>
<el-input v-model="tableName" size="mini" />
<div class="button-box" style="text-align: center;padding: 5px 0;margin: 10px 0;">增加</div>
<div class="button-box" style="text-align: center;padding: 5px 0">删除</div>
</div>
<div style="width: 110px;height: 300px;padding: 0 15px;border-right: 2px solid #2B5932;margin-left: 40px;">
<div style="width: 110px;height: 280px;padding: 0 15px;border-right: 2px solid #2B5932;margin-left: 40px;">
<div style="font-size: 18px;color: #56E5DE;width: 100%;text-align: center;">下载选择</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 256px;">立即下发</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 236px;">立即下发</div>
</div>
<div style="width: 110px;height: 300px;margin-left: 15px;">
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期一</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期二</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期三</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期四</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期五</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期六</div>
<div style="color: #56E5DE;font-size: 13px;"><div class="check-box" />星期日</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 100px;">排定下发</div>
<div style="width: 70px;height: 280px;margin-left: 15px;">
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Mon')">
<div class="check-box" :style="{background: allStationDate.includes('Mon')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期一</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Tues')">
<div class="check-box" :style="{background: allStationDate.includes('Tues')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期二</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Wed')">
<div class="check-box" :style="{background: allStationDate.includes('Wed')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期三</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Thurs')">
<div class="check-box" :style="{background: allStationDate.includes('Thurs')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期四</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Fri')">
<div class="check-box" :style="{background: allStationDate.includes('Fri')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期五</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Sta')">
<div class="check-box" :style="{background: allStationDate.includes('Sta')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期六</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedAllStationDate('Sun')">
<div class="check-box" :style="{background: allStationDate.includes('Sun')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期日</div>
</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 80px;">排定下发</div>
</div>
</div>
</div>
<div class="content-box">
<div style="width: 950px;font-size: 18px;color: #56E5DE;margin: 10px;">车站时间表</div>
<div style="width: 100%;display: flex;justify-content: center;">
<div style="width: 180px;height: 280px;background: #FFF;">
<el-row>
<div style="background: #43388A;font-size: 14px;height: 30px;line-height: 30px;color: #FFF;text-align: center;">车站选择</div>
</el-row>
</div>
<div class="border-box" style="width: 380px;height: 280px;display: flex;justify-content: center;padding: 10px;margin-left: 20px;">
<div style="width: 240px;height: 260px;background: #FFF;">
<el-row>
<div style="background: #43388A;font-size: 14px;height: 30px;line-height: 30px;color: #FFF;text-align: center;">车站时间列表</div>
</el-row>
</div>
<div style="width: 110px;height: 260px;margin-left: 10px;">
<div style="width: 100%;font-size: 18px;color: #56E5DE;">新时间表名</div>
<el-input v-model="newTableName" size="mini" style="margin: 10px 0;" />
<div class="button-box" style="padding: 5px 10px;width: 50px;text-align: center;font-size: 12px;">改名</div>
<div style="padding: 10px 0; border-top: 2px solid #2B5932;margin-top: 10px;display: flex;justify-content: center;">
<div class="button-box" style="width: 45px;font-size: 12px;height: 65px;text-align: center;line-height: 65px;margin-right: 10px;">删除</div>
<div class="button-box" style="width: 55px;font-size: 12px;height: 65px;text-align: center;padding-top: 18px;">增到共用时间表列</div>
</div>
<div style="display: flex;justify-content: center;">
<div class="button-box" style="width: 45px;font-size: 12px;height: 65px;text-align: center;margin-right: 10px;padding-top: 18px;">编辑时间表</div>
<div class="button-box" style="width: 55px;font-size: 12px;height: 65px;line-height: 65px;text-align: center;">查看</div>
</div>
</div>
</div>
<div style="width: 110px;height: 280px;padding: 0 15px;border-right: 2px solid #2B5932;margin-left: 40px;">
<div style="font-size: 18px;color: #56E5DE;width: 100%;text-align: center;">下载选择</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 236px;">立即下发</div>
</div>
<div style="width: 70px;height: 280px;margin-left: 15px;">
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Mon')">
<div class="check-box" :style="{background: stationDate.includes('Mon')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期一</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Tues')">
<div class="check-box" :style="{background: stationDate.includes('Tues')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期二</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Wed')">
<div class="check-box" :style="{background: stationDate.includes('Wed')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期三</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Thurs')">
<div class="check-box" :style="{background: stationDate.includes('Thurs')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期四</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Fri')">
<div class="check-box" :style="{background: stationDate.includes('Fri')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期五</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Sta')">
<div class="check-box" :style="{background: stationDate.includes('Sta')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期六</div>
</div>
<div style="display: flex;align-items: center;cursor: pointer;" @click="selectedStationDate('Sun')">
<div class="check-box" :style="{background: stationDate.includes('Sun')?'#0F0':'#BFC1C1'}" />
<div class="check-text">星期日</div>
</div>
<div class="button-box" style="background: #3F8B66;text-align: center;margin-top: 80px;">排定下发</div>
</div>
</div>
</div>
<div style="position: relative;left: calc(50% + 470px);bottom: calc(100% - 280px);font-size: 12px;text-align: center;">
<div class="button-box" style="height: 70px;width:70px;margin: 10px;padding: 21px 0;" @click="changeShowMode('broadOverview')">全线运行<br>时间表总览</div>
<div class="button-box" style="height: 70px;width:70px;margin: 10px;padding: 21px 0;" @click="changeShowMode('stationRunningSchedule')">车站运行<br>时间表查看</div>
<div class="button-box" style="height: 70px;width:70px;margin: 10px;padding: 21px 0;" @click="changeShowMode('weeklyStatus')">每周<br>下发一览</div>
<div class="button-box" style="height: 70px;width:70px;margin: 10px;padding: 21px 0;" @click="changeShowMode('saveScheduleView')">车站保存<br>时间表查看</div>
</div>
</div>
</div>
</template>
@ -40,14 +132,38 @@ export default {
name: 'SchedulesManage',
data() {
return {
tableName: ''
tableName: '',
newTableName: '',
stationDate: [],
allStationDate: []
};
},
methods: {
selectedStationDate(day) {
const index = this.stationDate.indexOf(day);
if (index < 0) {
this.stationDate.push(day);
} else {
this.stationDate.splice(index, 1);
}
},
selectedAllStationDate(day) {
const index = this.allStationDate.indexOf(day);
if (index < 0) {
this.allStationDate.push(day);
} else {
this.allStationDate.splice(index, 1);
}
},
changeShowMode(mode) {
this.$emit('changeShowMode', mode);
}
}
};
</script>
<style scoped>
.top-content-box {
.content-box {
width: 950px;
margin-top: 10px;
border-top: 2px solid #A4A3A0;
@ -56,10 +172,24 @@ export default {
border-right: 2px solid #E5F1FE;
padding-bottom: 10px;
}
.border-box{
border-top: 2px solid #FFFFFE;
border-right: 2px solid #797977;
border-bottom: 2px solid #797977;
border-left: 2px solid #FFFFFE;
}
.check-text {
display: inline-block;
color: #56E5DE;
font-size: 13px;
height: 25px;
line-height: 25px;
margin-left: 5px;
}
.check-box {
display: inline-block;
height: 10px;
width: 10px;
height: 14px;
width: 14px;
background: #BFC1C1;
border-top: 2px solid #FFFFFE;
border-right: 2px solid #797977;
@ -79,8 +209,8 @@ export default {
background: #EBB570;
border-top: 2px solid #795B31;
border-left: 2px solid #795B31;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
/deep/
.el-input__inner{

View File

@ -1,5 +1,6 @@
<template>
<div style="width: 100%;height: 100%;">
<div style="width: 100%;height: 600px;display: flex;justify-content: center">
<div style="width: 550px;">
<div class="top-box">
<el-row style="background: #43388A;font-size: 12px;height: 20px;line-height: 20px;">
<el-col :span="8" style="text-align: center;color: #FFF;">车站</el-col>
@ -26,7 +27,7 @@
</el-row>
</div>
<div style="width: 100px;height: 20px;background: #FFF;position: relative;left: calc(25% + 450px);margin-top: 20px;" />
<div class="top-box" style="border: 0; height: 50%;background: #FFF;">
<div class="top-box" style="border: 0; height: 400px;background: #FFF;">
<el-row style="background: #43388A;font-size: 12px;height: 20px;line-height: 20px;">
<el-col :span="4" style="text-align: center;color: #FFF;border-right: 1px solid #000;border-bottom: 1px solid #000;">时间表</el-col>
<el-col :span="4" style="text-align: center;color: #FFF;border-right: 1px solid #000;border-bottom: 1px solid #000;">时间</el-col>
@ -40,40 +41,52 @@
<div class="button-box">更新时间表</div>
<div class="button-box">下一页</div>
</div>
<div style="width: 240px;position: absolute;left: calc(25% + 650px);font-size: 12px;top: calc(100% - 300px);">
</div>
<div style="margin-left: 180px;">
<div style="width: 280px;font-size: 12px;margin-top: 350px;margin-left: 65px;">
<el-row style="background: #43388A;height: 25px;line-height: 25px;">
<el-col :span="9" style="text-align: center;color: #FFF;border: 1px solid #000;">系统</el-col>
<el-col :span="9" style="text-align: center;color: #FFF;border-top: 1px solid #000;border-bottom: 1px solid #000;">允许/禁止操作</el-col>
<el-col :span="6" style="text-align: center;color: #FFF;border: 1px solid #000;">状态</el-col>
</el-row>
<el-row style="height: 25px;line-height: 25px;">
<el-col :span="9" style="text-align: center;background: #FFF;border: 1px solid #D2D2D2;border-top: 0;">空调大系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;"><div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;">允许/禁止</div></el-col>
<el-col :span="6" style="background: #0F0;text-align: center;border: 1px solid #D2D2D2;border-top: 0;">允许</el-col>
<el-col :span="9" class="table-system">空调大系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;">
<div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;" @click="changeSystemMode('largeAirConditioning')">允许/禁止</div>
</el-col>
<el-col :span="6" class="table-system" :style="{background:systemStatus.largeAirConditioning?'#0F0':'#F00'}">{{ systemStatus.largeAirConditioning?'允许':'禁止' }}</el-col>
</el-row>
<el-row style="height: 25px;line-height: 25px;">
<el-col :span="9" style="text-align: center;background: #FFF;border: 1px solid #D2D2D2;border-top: 0;">隧道通风系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;"><div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;">允许/禁止</div></el-col>
<el-col :span="6" style="background: #0F0;text-align: center;border: 1px solid #D2D2D2;border-top: 0;">允许</el-col>
<el-col :span="9" class="table-system">隧道通风系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;">
<div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;" @click="changeSystemMode('tunnelVentilation')">允许/禁止</div>
</el-col>
<el-col :span="6" class="table-system" :style="{background:systemStatus.tunnelVentilation?'#0F0':'#F00'}">{{ systemStatus.tunnelVentilation?'允许':'禁止' }}</el-col>
</el-row>
<el-row style="height: 25px;line-height: 25px;">
<el-col :span="9" style="text-align: center;background: #FFF;border: 1px solid #D2D2D2;border-top: 0;">空调小系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;"><div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;">允许/禁止</div></el-col>
<el-col :span="6" style="background: #0F0;text-align: center;border: 1px solid #D2D2D2;border-top: 0;">允许</el-col>
<el-col :span="9" class="table-system">空调小系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;">
<div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;" @click="changeSystemMode('smallAirConditioning')">允许/禁止</div>
</el-col>
<el-col :span="6" class="table-system" :style="{background:systemStatus.smallAirConditioning?'#0F0':'#F00'}">{{ systemStatus.smallAirConditioning?'允许':'禁止' }}</el-col>
</el-row>
<el-row style="height: 25px;line-height: 25px;">
<el-col :span="9" style="text-align: center;background: #FFF;border: 1px solid #D2D2D2;border-top: 0;">照明系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;"><div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;">允许/禁止</div></el-col>
<el-col :span="6" style="background: #0F0;text-align: center;border: 1px solid #D2D2D2;border-top: 0;">允许</el-col>
<el-col :span="9" class="table-system">照明系统</el-col>
<el-col :span="9" style="text-align: center;background: #FFF;">
<div class="button-box" style="padding: 3px 10px;height: 25px;line-height: 19px;" @click="changeSystemMode('lighting')">允许/禁止</div>
</el-col>
<el-col :span="6" class="table-system" :style="{background:systemStatus.lighting?'#0F0':'#F00'}">{{ systemStatus.lighting?'允许':'禁止' }}</el-col>
</el-row>
</div>
<div style="position: absolute;left: calc(25% + 600px);font-size: 12px;top: calc(100% - 150px);display: flex;text-align: center;">
<div style="font-size: 12px;display: flex;text-align: center;margin-top: 25px;width: 410px;">
<div class="button-box" style="height: 40px;line-height: 40px;margin: 10px;padding: 0 5px;" @click="changeShowMode('schedulesManage')">时间表管理</div>
<div class="button-box" style="height: 40px;margin: 10px;" @click="changeShowMode('stationRunningSchedule')">全线运行<br>时间表总览</div>
<div class="button-box" style="height: 40px;margin: 10px;" @click="changeShowMode('broadOverview')">全线运行<br>时间表总览</div>
<div class="button-box" style="height: 40px;line-height: 40px;margin: 10px;padding: 0 5px;" @click="changeShowMode('weeklyStatus')">每周下发一览</div>
<div class="button-box" style="height: 40px;margin: 10px;" @click="changeShowMode('saveScheduleView')">车站保存<br>时间表查看</div>
</div>
</div>
</div>
</template>
<script>
@ -82,12 +95,21 @@ export default {
data() {
return {
station: '',
stations: []
stations: [],
systemStatus: {
largeAirConditioning: true,
tunnelVentilation: true,
smallAirConditioning: true,
lighting:true
}
};
},
methods: {
changeShowMode(mode) {
this.$emit('changeShowMode', mode);
},
changeSystemMode(system) {
this.systemStatus[system] = !this.systemStatus[system];
}
}
};
@ -118,7 +140,13 @@ export default {
background: #EBB570;
border-top: 2px solid #795B31;
border-left: 2px solid #795B31;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
.table-system{
text-align: center;
background: #FFF;
border: 1px solid #D2D2D2;
border-top: 0;
}
</style>

View File

@ -1,5 +1,5 @@
<template>
<div style="width: 100%;display: flex;justify-content: center;">
<div style="width: 100%;height: 600px;display: flex;justify-content: center;">
<div>
<el-row style="margin-top: 120px;width: 560px;height: 28px;line-height: 28px;margin-bottom: 5px;">
<el-col :span="2" style="color: #56E5DE;">车站:</el-col>
@ -79,11 +79,11 @@
<el-col :span="4"><div class="button-box" style="text-align: center;padding: 5px 0;margin-top: 4px;">查看</div></el-col>
</el-row>
</div>
<div style="position: absolute;left: calc(50% + 320px);bottom: calc(100% - 735px);font-size: 12px;text-align: center;">
<div class="button-box" style="height: 40px;line-height: 40px;margin: 10px;padding: 0 5px;" @click="changeShowMode('schedulesManage')">时间表管理</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 10px;" @click="changeShowMode('')">全线运行<br>时间表管理</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 10px;" @click="changeShowMode('')">车站运行<br>时间表查看</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 10px;" @click="changeShowMode('saveScheduleView')">车站保存<br>时间表查看</div>
<div style="position: relative;left: calc(50% + 320px);bottom: calc(100% - 400px);font-size: 12px;text-align: center;width: 90px;">
<div class="button-box" style="height: 40px;line-height: 40px;margin: 10px;" @click="changeShowMode('schedulesManage')">时间表管理</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 0;" @click="changeShowMode('broadOverview')">全线运行<br>时间表管理</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 0;" @click="changeShowMode('')">车站运行<br>时间表查看</div>
<div class="button-box" style="height: 40px;margin: 10px;padding: 5px 0;" @click="changeShowMode('saveScheduleView')">车站保存<br>时间表查看</div>
</div>
</div>
</div>
@ -129,8 +129,8 @@ export default {
background: #EBB570;
border-top: 2px solid #795B31;
border-left: 2px solid #795B31;
border-right: 1px solid #fff;
border-bottom: 1px solid #fff;
border-right: 2px solid #fff;
border-bottom: 2px solid #fff;
}
.white-block{
width: 100%;

View File

@ -147,7 +147,7 @@ export default {
list.forEach(item => {
if (item && item.code) {
const copyModel = this.copyModelInfo(item, 30);
const type1 = item._type.charAt(0).toLowerCase() + item._type.slice(1); // .toLowerCase()
const type1 = item._type.charAt(0).toLowerCase() + item._type.slice(1);
if (!mapIscs[type1 + 'List']) {
mapIscs[type1 + 'List'] = this.iscs[type1 + 'List'] || [];
}
@ -159,7 +159,7 @@ export default {
});
} else if (this.selected._type != 'CheckBox') {
this.copyModel = this.copyModelInfo(this.selected, 10);
const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1); // .toLowerCase()
const type1 = this.selected._type.charAt(0).toLowerCase() + this.selected._type.slice(1);
this.copyModel.code = getUID(this.selected._type, this.iscs[type1 + 'List'] || []);
} else {
this.copyModel = {};
@ -175,12 +175,16 @@ export default {
this.copyModel.code && this.createDataModel(this.copyModel);
}
} break;
// case 'Delete': this.$store.dispatch('map/setDeleteCount');
// break;
// case 'Update':
// this.$refs.offsetX.focus();
// this.$store.dispatch('map/setUpdateCount');
// break;
case 'Delete': {
const list = this.getSelectList();
if (list.length) {
list.forEach(item => {
item && item.code && this.$store.dispatch('iscs/deleteIscsDevices', item);
});
} else {
this.copyModel.code && this.$store.dispatch('iscs/deleteIscsDevices', this.copyModel);
}
} break;
}
}
},

View File

@ -350,7 +350,7 @@
atpclick: function (e){
//console.log("atp");
trainSimulationAtp(this.group,this.groupNum).then(netdata => {
console.log(netdata);
// console.log(netdata);
});
},
@ -359,17 +359,17 @@
},
changehead: function(e){
trainSimulationChangeHead(this.group,this.groupNum).then(netdata => {
console.log(netdata);
// console.log(netdata);
});
},
bmcbtcclick: function (e){
trainSimulationDriveMode(this.group,this.groupNum,"CM").then(netdata => {
console.log(netdata);
// console.log(netdata);
});
},
rmclick: function (e){
trainSimulationDriveMode(this.group,this.groupNum,"RM").then(netdata => {
console.log(netdata);
// console.log(netdata);
});
},
dloclick: function (e){
@ -395,7 +395,7 @@
},
atoaclick: function (e){
trainSimulationAto(this.group,this.groupNum).then(netdata => {
console.log(netdata);
// console.log(netdata);
});
},
cbtcclick: function (e){

View File

@ -45,6 +45,7 @@
</div>
<chat-setting ref="chatSetting" :form="form" @setSetting="setSetting" />
<chat-create-group ref="createGroup" :group="group" @addCoversition="addCoversition" />
<chat-tooltip :group="group" @getCoversitionList="getCoversitionList" />
</div>
</template>
<script>
@ -165,6 +166,9 @@ export default {
}
this.$refs.chatContent.scrollTop();
},
getCoversitionList() {
this.$refs.chatCoversitionList.initPage(false);
},
quitCoversition() {
this.quitLoading = true;
quitCoversition(this.group, this.currentCoversition.id).then(res=>{

View File

@ -0,0 +1,110 @@
<template>
<div v-show="dialogVisible" class="chatTooltipAll">
<div class="chatTooltip">
<div class="chatTooltipHeader">
{{ userName }} 邀请您加入会话
</div>
<div class="chatTooltipBootom">
<div class="create-group-bottom">
<el-button :loading="loading" size="small" type="primary" @click="doCreate">接受</el-button>
<el-button size="small" @click="doClose">拒绝</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import ConstConfig from '@/scripts/ConstConfig';
import Cookies from 'js-cookie';
import {acceptCoversitionInvite} from '@/api/chat';
export default {
name:'ChatTooltip',
props: {
group: {
type: String,
required: true
}
},
data() {
return {
userName:'',
dialogVisible:false,
loading:false,
conversationId:''
};
},
watch:{
'$store.state.socket.inviteOtherIntoChat':function(val) {
this.userName = this.coverName(val);
this.dialogVisible = true;
this.conversationId = val.conversationId;
}
},
// {"conversationId":"22e10b17-7a6c-4b1b-8724-f87fb2053b76","from":{"id":"17","userId":"75","name":"",
// "role":"STATION_SUPERVISOR","deviceType":"STATION","deviceCode":"Station32955","deviceName":"","online":true,"robot":false}
methods:{
coverName(inviteUser) {
const member = inviteUser.from;
const roleTypeList = ConstConfig.ConstSelect.roleTypeNew;
let data = member.role;
roleTypeList.forEach(function(element) {
const rolename = element.value;
if (Cookies.get('user_lang') == 'en') {
data = data.replace(rolename, element.enLabel);
} else {
data = data.replace(rolename, element.label);
}
});
const deviceName = member.deviceName ? '-' + member.deviceName : '';
const memberName = member.name ? '-' + member.name : '';
return data + deviceName + memberName;
},
doCreate() {
this.loading = true;
acceptCoversitionInvite(this.group, this.conversationId).then(res=>{
this.loading = false;
this.dialogVisible = false;
this.$emit('getCoversitionList');
}).catch(error=>{
this.$messageBox('接受邀请失败: ' + error.message);
});
},
doClose() {
this.dialogVisible = false;
}
}
};
</script>
<style lang="scss" scoped>
.chatTooltip{
position: absolute;
width: 290px;
left: 32%;
top: 42%;
z-index: 5;
background: #fff;
padding: 15px;
box-shadow: #969090 0px 0px 10px;
border-radius: 4px;
line-height: 20px;
transform: translateY(-50%);
}
.chatTooltipHeader{
margin-top:10px;
font-size:14px;
}
.chatTooltipBootom{
margin-top:10px;
text-align: center;
margin-bottom:10px;
}
.chatTooltipAll{
position:absolute;
width:100%;
height:100%;
left:0;
top:0;
z-index: 10;
}
</style>

View File

@ -84,7 +84,7 @@
@switchStationMode="switchStationMode"
/>
<menu-system-time v-if="!isScreen" ref="menuSystemTime" :offset="offset" :right="right" :group="group" />
<menu-system-time ref="menuSystemTime" :offset="offset" :right="right" :group="group" />
</div>
<!-- <Jl3d-Simulation v-show="simulationShow" ref="Jl3dSimulation" :panel-show="simulationShow" @showpanel="showpanel" /> -->
@ -243,9 +243,6 @@ export default {
isPractice() {
return this.mode === 'practice';
},
isScreen() {
return this.model === 'dp';
},
isDrive() {
return this.prdType == '04';
},

View File

@ -31,9 +31,8 @@ import { mapGetters } from 'vuex';
import { Notification } from 'element-ui';
import { startTrainingNew, endTrainingNew } from '@/api/jmap/training';
import { trainingNotifyNew } from '@/api/simulation';
import { TrainingMode } from '@/scripts/ConstDic';
import { TrainingMode, UrlConfig } from '@/scripts/ConstDic';
import { timeFormat } from '@/utils/date';
import { UrlConfig } from '@/scripts/ConstDic';
export default {
name: 'MenuLesson',

View File

@ -71,9 +71,9 @@ export default {
height: 800,
roadData: [],
focus: false,
booleanList: ['lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute'],
booleanList: ['lockFirst', 'switchSingleHandle', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute', 'initSingleLockSwitch'],
selectList: ['upDirection', 'runMode'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute', 'runMode'],
generalConfig: ['lockFirst', 'switchSingleHandle', 'upDirection', 'switchNRTurnChain', 'switchSingleLockChain', 'signalForceCancelRoute', 'runMode', 'initSingleLockSwitch'],
numberList: [],
optionsMap: {
upDirection: [{label: 'right', value: 'right'}, {label: 'left', value: 'left'}],
@ -86,7 +86,8 @@ export default {
switchNRTurnChain:'道岔正/反操是否联动',
switchSingleLockChain:'道岔单解/锁是否联动',
signalForceCancelRoute:'是否强制取消进路/在接近区段占用时是否依旧强制执行取消进路',
runMode:'列车控制模式/级别'
runMode:'列车控制模式/级别',
initSingleLockSwitch: '初始加载设备时是否默认单锁正线道岔'
}
};
},