This commit is contained in:
joylink_cuiweidong 2020-08-17 18:48:46 +08:00
commit cb916647c5
50 changed files with 4056 additions and 4898 deletions

View File

@ -100,6 +100,13 @@ export function publishRunPlan(planId, data) {
data: data data: data
}); });
} }
/** 发布运行图(所有权限用户) */
export function publishRunPlanAllUser(planId, runPlanName) {
return request({
url: `/api/review/${planId}/directPublishRunPlan?runPlanName=${runPlanName}`,
method: 'post'
});
}
/** 普通用户申请或撤销运行图发布 */ /** 普通用户申请或撤销运行图发布 */
export function releaseOrCancelRunPlan(planId, status) { export function releaseOrCancelRunPlan(planId, status) {
return request({ return request({

View File

@ -66,10 +66,20 @@ export function getPublishMapExport(mapId) {
} }
/** 发布地图数据导出*/ /** 发布地图数据导出*/
export function getPublishMapExportNew(mapId, list) { export function getPublishMapExportNew(mapId, params) {
return request({ return request({
url: `/api/map/${mapId}/export/new?configs=${list}`, url: `/api/map/${mapId}/export/new`,
method: 'get' method: 'get',
params
});
}
/** 发布地图数据导出*/
export function getPublishMapImportNew(mapId, data) {
return request({
url: `/api/map/${mapId}/import/new`,
method: 'put',
data
}); });
} }

View File

@ -134,6 +134,21 @@
> >
<template slot-scope="scope"> <template slot-scope="scope">
<template v-for="(button, idx) in column.buttons"> <template v-for="(button, idx) in column.buttons">
<template v-if="button.type == 'file'">
<el-button
v-if="button.show === undefined ? ((button.showControl === undefined) ? true: button.showControl(scope.row)): button.show"
:key="idx"
:type="button.type ? button.type: 'primary'"
size="mini"
class="button_style uploadDemo"
:disabled="isTableBtnDisabled(button, scope.$index, scope.row)"
:loading="scope.row['loading'+idx]"
>
<input :id="button.id" type="file" class="file_box" accept=".json, application/json" @change="button.handleClick(scope.$index, scope.row, idx)">
{{ getTableBtnName(button.name, scope.$index, scope.row) }}
</el-button>
</template>
<template v-else>
<el-button <el-button
v-if="button.show === undefined ? ((button.showControl === undefined) ? true: button.showControl(scope.row)): button.show" v-if="button.show === undefined ? ((button.showControl === undefined) ? true: button.showControl(scope.row)): button.show"
:key="idx" :key="idx"
@ -146,6 +161,7 @@
>{{ getTableBtnName(button.name, scope.$index, scope.row) }}</el-button> >{{ getTableBtnName(button.name, scope.$index, scope.row) }}</el-button>
</template> </template>
</template> </template>
</template>
</el-table-column> </el-table-column>
</template> </template>
</el-table> </el-table>
@ -530,3 +546,24 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped>
.uploadDemo {
position: relative;
overflow: hidden;
margin-right: 3px;
cursor: pointer;
padding: 0 15px;
height: 32px;
.file_box {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
opacity: 0;
cursor: pointer;
z-index: 100;
}
}
</style>

View File

@ -231,8 +231,7 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
vrwebworker.postMessage(connectmsg); vrwebworker.postMessage(connectmsg);
vrwebworker.onmessage = function (event) { vrwebworker.onmessage = function (event) {
console.log(event.data.type);
console.log(event.data);
if(event.data.type == "Device_Fault_Set_3D"){ if(event.data.type == "Device_Fault_Set_3D"){
let newfault = { let newfault = {
code:event.data.body.code, code:event.data.body.code,
@ -409,7 +408,6 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
if(scope.stationtexture["stationlist"]){ if(scope.stationtexture["stationlist"]){
vrPlane.setStationPlane(stationList,scope.stationtexture); vrPlane.setStationPlane(stationList,scope.stationtexture);
console.log(scope.nowStationModel.getObjectByName("zhantailiebiao"));
scope.nowStationModel.getObjectByName("zhantailiebiao").material.map =scope.stationtexture["stationlist"]; scope.nowStationModel.getObjectByName("zhantailiebiao").material.map =scope.stationtexture["stationlist"];
scope.nowStationModel.getObjectByName("zhantailiebiao").material.map.needsUpdate = true; scope.nowStationModel.getObjectByName("zhantailiebiao").material.map.needsUpdate = true;
if(scope.nowStationModel.getObjectByName("menkuangyanse")){ if(scope.nowStationModel.getObjectByName("menkuangyanse")){
@ -420,7 +418,7 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
scope.nowStationModel.getObjectByName("zhantaiming").material.map.needsUpdate = true; scope.nowStationModel.getObjectByName("zhantaiming").material.map.needsUpdate = true;
} }
trainControl.inittrain(scope.scene,scope.modelmanager.train.mesh,mixers); trainControl.inittrain(scope.scene,scope.modelmanager.train.mesh,scope.modelmanager.train.animations,mixers);
scope.scene.add(scope.modelmanager.otherDevice.mesh); scope.scene.add(scope.modelmanager.otherDevice.mesh);
scope.scene.add( vrPlane.group ); scope.scene.add( vrPlane.group );
vrwebworker.postMessage("connect"); vrwebworker.postMessage("connect");
@ -443,7 +441,6 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
let intersects = raycaster.intersectObjects( vrPlane.group.children,true); let intersects = raycaster.intersectObjects( vrPlane.group.children,true);
if(intersects[0]){ if(intersects[0]){
console.log(intersects[0]);
var object = intersects[0].object; var object = intersects[0].object;
if(object.name == "buttonHome"){ if(object.name == "buttonHome"){
@ -744,9 +741,9 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
var intersections = getIntersections( controller ); var intersections = getIntersections( controller );
// console.log(intersections); // console.log(intersections);
if ( intersections.length > 0 ) { if ( intersections.length > 0 ) {
console.log(intersections); // console.log(intersections);
var intersection = intersections[ 0 ]; var intersection = intersections[ 0 ];
console.log(intersection); // console.log(intersection);
var object = intersection.object; var object = intersection.object;
// object.matrix.premultiply( tempMatrix ); // object.matrix.premultiply( tempMatrix );
@ -809,7 +806,6 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
} }
function squeezeStart(){ function squeezeStart(){
console.log("squeez");
scope.modelmanager.otherDevice.action.play(); scope.modelmanager.otherDevice.action.play();
if(vrPlaneStatus){ if(vrPlaneStatus){
vrPlaneStatus = false; vrPlaneStatus = false;
@ -1029,7 +1025,7 @@ export function Jl3dfaultdeviceVR(dom,group,token,skinCode) {
} }
scope.nowstation = stationList[0]; scope.nowstation = stationList[0];
console.log(scope.nowstation);
} }

View File

@ -3,14 +3,14 @@ export function TrainControl(){
this.toptrain = null; this.toptrain = null;
this.downtrain = null; this.downtrain = null;
this.inittrain = function(scene,object,mixers){ this.inittrain = function(scene,object,animations,mixers){
let ntracks1,ntracks2,tclip,fclip; let ntracks1,ntracks2,tclip,fclip;
console.log(object);
ntracks1 = object.animations.slice(16,27); ntracks1 = animations.slice(16,27);
tclip = new THREE.AnimationClip("three",2,ntracks1); tclip = new THREE.AnimationClip("three",2,ntracks1);
ntracks2 = object.animations.slice(0,15); ntracks2 = animations.slice(0,15);
fclip = new THREE.AnimationClip("four",2,ntracks2); fclip = new THREE.AnimationClip("four",2,ntracks2);
@ -45,16 +45,17 @@ export function TrainControl(){
inittrainanimation(scope.downtrain,tclip,fclip,mixers); inittrainanimation(scope.downtrain,tclip,fclip,mixers);
scope.toptrain.position.z = -20; scope.toptrain.position.z = 8.8;
scope.toptrain.position.y = -20000; // scope.toptrain.position.y = -20000;
scope.toptrain.rotation.y = Math.PI; scope.toptrain.rotation.y = Math.PI;
scope.downtrain.position.z = 40; scope.downtrain.position.z = -8.3;
scope.downtrain.position.y = -20000; // scope.downtrain.position.y = -20000;
scene.add(scope.toptrain); scene.add(scope.toptrain);
scene.add(scope.downtrain); scene.add(scope.downtrain);
} }
function inittrainanimation(train,tclip,fclip,mixers){ function inittrainanimation(train,tclip,fclip,mixers){
for(let j=0;j<train.children.length;j++){ for(let j=0;j<train.children.length;j++){
if(train.children[j].name == "c1" || train.children[j].name == "c6"){ if(train.children[j].name == "c1" || train.children[j].name == "c6"){
for(let n=0,lenn = train.children[j].children.length;n<lenn;n++){ for(let n=0,lenn = train.children[j].children.length;n<lenn;n++){
@ -97,6 +98,7 @@ export function TrainControl(){
if(train.children[j].children[n].name == "down"){ if(train.children[j].children[n].name == "down"){
train.children[j].children[n].animations = []; train.children[j].children[n].animations = [];
train.children[j].children[n].animations.push(fclip.clone()); train.children[j].children[n].animations.push(fclip.clone());
let mixer = new THREE.AnimationMixer( train.children[j].children[n] ); let mixer = new THREE.AnimationMixer( train.children[j].children[n] );
mixers.push(mixer); mixers.push(mixer);
let action = mixer.clipAction( train.children[j].children[n].animations[ 0 ] ); let action = mixer.clipAction( train.children[j].children[n].animations[ 0 ] );

View File

@ -287,7 +287,7 @@ export function VrGui(){
} }
posY = Math.floor(i/4)*0.16; posY = Math.floor(i/4)*0.16;
console.log(posY);
setTextStation(stations[i],scope.stationListGroup,posX-0.5,0.6-posY,"stationList"); setTextStation(stations[i],scope.stationListGroup,posX-0.5,0.6-posY,"stationList");
} }
setTextMsg(stations[0],scope.homeGroup,0,0,"stationMsg"); setTextMsg(stations[0],scope.homeGroup,0,0,"stationMsg");
@ -363,7 +363,6 @@ export function VrGui(){
nowGroupComponent = scope.faultListGroup; nowGroupComponent = scope.faultListGroup;
plane.add(nowGroupComponent); plane.add(nowGroupComponent);
console.log(scope.faultListGroup.children);
} }
this.updataDeviceFaultMsg = function(faultData){ this.updataDeviceFaultMsg = function(faultData){

View File

@ -20,7 +20,7 @@ export function ModelManagerVR(){
code:"stationOut", code:"stationOut",
locateType:"2", locateType:"2",
mesh:null, mesh:null,
url:"../../static/vrtest/stationOut.FBX" url:"../../static/vrtest/stationIn.FBX"
}; };
this.otherDevice = { this.otherDevice = {
@ -71,16 +71,39 @@ function fbxpromise(mixers,model){
let mixer = new THREE.AnimationMixer( object ); let mixer = new THREE.AnimationMixer( object );
object.animacode = model.code; object.animacode = model.code;
model.mesh = object; // model.mesh = object;
if(object.animations.length>0 && model.code != "train"){
if(model.code == "train"){
let realtrain = new THREE.Group();
for(let j=6;j>0;j--){
let name = "c"+j;
for(let i=0;i<object.children.length;i++){
if(object.children[i].name == name){
object.children[i].position.x = object.children[i].position.x;
//object.children[i].position.y = j*10;
realtrain.add(object.children[i]);
i--;
}
}
}
model.mesh = realtrain;
model.animations = object.animations[0].tracks;
}else{
model.mesh = object;
model.action = mixer.clipAction( object.animations[ 0 ] ); model.action = mixer.clipAction( object.animations[ 0 ] );
model.action.setLoop(THREE.LoopOnce); model.action.setLoop(THREE.LoopOnce);
model.action.clampWhenFinished = true; model.action.clampWhenFinished = true;
mixers.push(mixer); mixers.push(mixer);
//model.action.play();
} }
// if(object.animations.length>0 && model.code != "train"){
//
//
// //model.action.play();
// }
resolve(model.locateType); resolve(model.locateType);
} ); } );

View File

@ -278,6 +278,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.StationStand] = { this[deviceType.StationStand] = {
common: { // 通用属性 common: { // 通用属性
textFontSize: 8, // 站台默认字体大小 textFontSize: 8, // 站台默认字体大小

View File

@ -387,6 +387,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.Switch] = { this[deviceType.Switch] = {
text: { text: {
show: true, // 道岔名称显示 show: true, // 道岔名称显示

View File

@ -207,6 +207,10 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.StationStand] = { this[deviceType.StationStand] = {
common: { // 通用属性 common: { // 通用属性
textFontSize: 10, // 站台默认字体大小 textFontSize: 10, // 站台默认字体大小

View File

@ -408,6 +408,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.Switch] = { this[deviceType.Switch] = {
text: { text: {
show: true, // 道岔名称显示 show: true, // 道岔名称显示

View File

@ -441,6 +441,11 @@ class SkinCode extends defaultStyle {
extendLength: 8 // 延伸长度 extendLength: 8 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.LcControl] = { this[deviceType.LcControl] = {
text: { text: {
fontSize: 10, // 灯字体大小 fontSize: 10, // 灯字体大小

View File

@ -420,6 +420,10 @@ class SkinCode extends defaultStyle {
strokeColor: 'red', // 线条颜色 strokeColor: 'red', // 线条颜色
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: true
};
this[deviceType.Switch] = { this[deviceType.Switch] = {
text: { text: {

View File

@ -458,6 +458,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.StationDelayUnlock] = { this[deviceType.StationDelayUnlock] = {
text: { text: {
distance: 3, // 延迟解锁和设备之间的距离 distance: 3, // 延迟解锁和设备之间的距离

View File

@ -411,6 +411,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.Switch] = { this[deviceType.Switch] = {
text: { text: {
show: true, // 道岔名称显示 show: true, // 道岔名称显示

View File

@ -534,6 +534,11 @@ class SkinCode extends defaultStyle {
extendLength: 10 // 延伸长度 extendLength: 10 // 延伸长度
}; };
// 延续保护计时
this[deviceType.OverAp] = {
show: false
};
this[deviceType.AutomaticRoute] = { this[deviceType.AutomaticRoute] = {
// 是否显示 // 是否显示
displayCondition: '03', // 显示条件 prdType displayCondition: '03', // 显示条件 prdType

View File

@ -103,6 +103,12 @@ class Status {
fault: device.fault /** 非故障*/ fault: device.fault /** 非故障*/
}; };
} }
handleOverAp(device) {
this.statusObj = {
remainTime: device.remainTime
};
}
handleZcControl(device) { handleZcControl(device) {
this.statusObj = { }; this.statusObj = { };
} }

View File

@ -444,6 +444,7 @@ class Jlmap {
overlapRoute['points'] = { x: model.points[model.points.length - 1].x, y: model.points[model.points.length - 1].y }; overlapRoute['points'] = { x: model.points[model.points.length - 1].x, y: model.points[model.points.length - 1].y };
} }
overlapRoute['offsetRight'] = overlapRoute.pathList[0].right; overlapRoute['offsetRight'] = overlapRoute.pathList[0].right;
overlapRoute['sectionName'] = model.name;
this.$painter.update(overlapRoute); this.$painter.update(overlapRoute);
} else if (elem.deviceType === 'CYCLE') { } else if (elem.deviceType === 'CYCLE') {
store.dispatch('map/updateAutoReentryState', elem); store.dispatch('map/updateAutoReentryState', elem);

View File

@ -164,6 +164,7 @@ class MouseController extends Eventful {
click(e) { click(e) {
var em = this.checkEvent(e); var em = this.checkEvent(e);
// console.log(e, em, '====');
this.trigger(this.events.Selected, em); this.trigger(this.events.Selected, em);
} }

View File

@ -43,13 +43,13 @@ export default class OverAp extends Group {
setState(model) { setState(model) {
this.text && this.text.hide(); this.text && this.text.hide();
if (model.remainTime) { if (model.remainTime && this.style.OverAp.show) { // 目前哈尔滨线路显示
// console.log(model, model.remainTime, model.sectionName, '=====');
this.text && this.text.show(); this.text && this.text.show();
let offset = 40; let offset = 40;
if (!model.offsetRight) { if (!model.offsetRight) {
offset = -40; offset = -40;
} }
// console.log(model.offsetRight, 'model');
this.text && this.text.attr({ this.text && this.text.attr({
style: { style: {
text: model.remainTime, text: model.remainTime,

View File

@ -795,7 +795,6 @@ export default class Section extends Group {
showRemainTime(number) { // 区段延时保护倒计时显示 showRemainTime(number) { // 区段延时保护倒计时显示
this.releaseName && this.releaseName.show(); this.releaseName && this.releaseName.show();
// this.releaseName && this.releaseName.setStyle({ text: number }); // this.releaseName && this.releaseName.setStyle({ text: number });
console.log(number, this.model.name, '====');
let pointX = this.model.points[0].x + 45; let pointX = this.model.points[0].x + 45;
let pointY = this.model.points[0].y; let pointY = this.model.points[0].y;
if (!this.model.timeRight) { if (!this.model.timeRight) {
@ -884,9 +883,12 @@ export default class Section extends Group {
getBoundingRect() { getBoundingRect() {
if (this.section) { if (this.section) {
return this.section.getBoundingRect(); // if (this.model.code == 'T197' || this.model.code == 'T189') {
// console.log(this.section.getBoundingRect().clone(), this.model, this.model.name);
// }
return this.section.getBoundingRect().clone();
} else if (this.name) { } else if (this.name) {
return this.name.getBoundingRect(); return this.name.getBoundingRect().clone();
} }
} }

View File

@ -1,129 +0,0 @@
<template>
<el-dialog v-dialogDrag class="ningbo-01__systerm switch-control" :title="title" :visible.sync="show" width="300px" :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="deviceName" size="small" disabled />
</el-col>
<el-col :span="11" :offset="2">
<el-select v-model="faultType" style="height: 32px;" placeholder="请选择">
<el-option
v-for="item in faultList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-col>
</el-row>
<el-row justify="center" 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" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import { commitOperate } from '@/jmapNew/theme/components/utils/menuOperate';
import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
export default {
name: 'SwitchControl',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
operation: '',
stationName: '',
switchName: '',
activeShow: false,
deviceName: '',
faultType: '',
faultList: []
};
},
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) : '';
},
title() {
return '设置故障';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
if (!this.dialogShow) {
this.switchName = '';
this.stationName = '';
this.operation = operate.operation;
this.deviceName = deviceType[selected._type] + '-' + selected.name;
this.faultList = deviceFaultType[selected._type];
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
},
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.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -17,12 +17,10 @@
:default-expand-all="true" :default-expand-all="true"
style="background: #f0f0f0;" style="background: #f0f0f0;"
> >
<div slot-scope="{ node, data }" style="height: 24px; width: 100%;"> <div slot-scope="{ data }" style="height: 24px; width: 100%;">
<div v-if="data.level == 1" style="line-height: 26px;">{{ data.name }}</div> <div v-if="data.level == 1" style="line-height: 26px;">{{ data.name }}</div>
<div v-if="data.level == 2" style="background: lightgray; overflow: hidden; height: 100%;"> <div v-if="data.level == 2" style="background: lightgray; overflow: hidden; height: 100%;">
<div <div style="width: 46%;float: left; height: 24px; line-height: 24px; padding-left: 5px; border-right: 1px solid #f0f0f0;">
style="width: 46%;float: left; height: 24px; line-height: 24px; padding-left: 5px; border-right: 1px solid #f0f0f0;"
>
{{ data.name }}</div> {{ data.name }}</div>
<div style="width: 54%;float: left; height: 24px; line-height: 24px; padding-left: 5px;"> <div style="width: 54%;float: left; height: 24px; line-height: 24px; padding-left: 5px;">
{{ data.value }}</div> {{ data.value }}</div>
@ -108,11 +106,6 @@ export default {
}, },
{ {
children: [ children: [
// {
// name: '',
// value: '',
// level: 2
// },
{ {
name: '站台', name: '站台',
value: '', value: '',
@ -179,19 +172,15 @@ export default {
// //
this.treeData[1].children[1].value = selected.stationHoldTrain ? '已设置' : '未设置'; this.treeData[1].children[1].value = selected.stationHoldTrain ? '已设置' : '未设置';
// //
this.treeData[0].children[2].value = selected.parkingTime == 0 ? '自动' : `${selected.parkingTime}`; this.treeData[0].children[2].value = selected.parkingTime >= 0 ? `${selected.parkingTime}` : '自动';
// //
this.treeData[0].children[3].value = selected.allSkip || selected.assignSkip ? '已设置' : '未设置'; this.treeData[0].children[3].value = selected.allSkip || selected.assignSkip ? '已设置' : '未设置';
// if (selected.direction == '01') {
//
// }
if (!stationStand || !station) { if (!stationStand || !station) {
this.treeData[2].children[0].value = `自动`; this.treeData[2].children[0].value = `自动`;
} else { } else {
this.treeData[2].children[0].value = selected.runLevelTime > 0 ? `${station.name}${stationStand.name}:人工` : `${station.name}${stationStand.name}:自动`; this.treeData[2].children[0].value = selected.runLevelTime > 0 ? `${station.name}${stationStand.name}:人工` : `${station.name}${stationStand.name}:自动`;
} }
//
// this.tempData.push({ item: '', status: this.strategyMap[selected.reentryStrategy] ? this.strategyMap[selected.reentryStrategy] : '' });
}, },
doShow(operate, selected) { doShow(operate, selected) {
this.selected = selected; this.selected = selected;

View File

@ -15,8 +15,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.controlMode == 'Center'">遥控</span> <span v-if="scope.row.controlMode == 'Center'">遥控</span>
<span v-else-if="scope.row.controlMode == 'Local'">站控</span> <span v-else-if="scope.row.controlMode == 'Local'">站控</span>
<span v-else-if="scope.row.controlMode == 'Local' && $route.query.prdType == '02'">中心请求站控</span> <!-- <span v-else-if="scope.row.controlMode == 'Local' && $route.query.prdType == '02'">中心请求站控</span>
<span v-else-if="scope.row.controlMode == 'Center' && $route.query.prdType == '01'">现地请求遥控</span> <span v-else-if="scope.row.controlMode == 'Center' && $route.query.prdType == '01'">现地请求遥控</span> -->
<span v-else>获取状态中...</span> <span v-else>获取状态中...</span>
</template> </template>
</el-table-column> </el-table-column>

View File

@ -1,169 +0,0 @@
<template>
<!-- <el-dialog class="fuzhou_01 stand-stop-time" :title="title" :visible.sync="show" width="640px" :before-close="doClose" :zIndex="2000" -->
<el-dialog
v-dialogDrag
class="ningbo-01__systerm train-set-plan"
:title="title"
:visible.sync="show"
width="380px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules">
<div style="overflow: hidden;">
<div style="width: 98%; float: left; padding: 10px 15px; margin: 20px 0px; height: 120px;">
<!-- <span class="base-label">目的</span> -->
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandGoal">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandGoal" filterable placeholder="请选择">
<el-option v-for="item in stationStandList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>
<el-form-item label="车 次 号:" prop="trainGoal" style="width:280px">
<el-input v-model="addModel.trainGoal" />
</el-form-item>
</div>
</div>
</div>
</el-form>
<el-row justify="center" 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>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'TrainMove',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
// trainNo: '',
trainSource: '',
// stationStandSource: '',
trainGoal: '',
stationStandGoal: ''
},
rules: {
// trainNo: [
// { required: true, message: '', trigger: 'blur' }
// ],
trainSource: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
// stationStandSource: [
// { required: true, message: '', trigger: 'change' }
// ],
trainGoal: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandGoal: [
{ required: true, message: '请选择车站', trigger: 'change' }
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.moveTrainId.menu.domId : '';
},
title() {
return '删除计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
type: MapDeviceType.Train.type,
// operation: OperationEvent.Train.moveTrainId.menu.operation,
operation: OperationEvent.Train.deletePlanTrainId.menu.operation
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style scoped>
.fuzhou_01 .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,181 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm train-edit"
:title="title"
:visible.sync="show"
width="360px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="12">新车组号</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input :id="domIdInput" v-model="addModel.groupNumber" @change="inputGroupNumber" />
</el-col>
</el-row>
<el-row>
<el-col :span="12">车站</el-col>
<el-col :span="11" :offset="1">车次窗</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input v-model="addModel.stationName" :disabled="true" />
</el-col>
<el-col :span="11" :offset="1">
<el-input v-model="addModel.trainWindowCode" :disabled="true" />
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
export default {
name: 'TrainEdit',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
stationName: '',
trainWindowCode: '',
groupNumber: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdInput() {
return this.dialogShow ? OperationEvent.Train.editTrainId.input.domId : '';
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
},
title() {
return '修改计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
const section = this.$store.getters['map/getDeviceByCode'](selected.sectionCode);
if (section) {
const station = this.$store.getters['map/getDeviceByCode'](section.stationCode);
if (station) {
this.addModel.stationName = station.name;
}
}
this.addModel.trainWindowCode = selected.code;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
mouseCancelState(this.selected);
},
inputGroupNumber() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.input.operation,
val: this.addModel.groupNumber
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
val: this.addModel.groupNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
margin: 10px
}
.ningbo-01__systerm .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,160 +0,0 @@
<template>
<el-dialog
v-dialogDrag
class="ningbo-01__systerm train-flag"
:title="title"
:visible.sync="show"
width="320px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-row>
<el-col :span="12">车组号:</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-input v-model="addModel.groupNumber" />
</el-col>
</el-row>
<el-row style="margin-top: 15px; margin-bottom: 30px">
<el-col :span="24">
<el-radio-group v-model="addModel.type" :disabled="true">
<el-radio label="01">备选项</el-radio>
<el-radio label="02">备选项</el-radio>
</el-radio-group>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10">
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button>
</el-col>
<el-col :span="8" :offset="5">
<el-button :id="domIdCancel" @click="cancel"> </el-button>
</el-col>
</el-row>
<notice-info ref="noticeInfo" pop-class="ningbo-01__systerm" />
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {mouseCancelState} from '@/jmapNew/theme/components/utils/menuItemStatus';
export default {
name: 'TrainFlag',
components: {
NoticeInfo
},
data() {
return {
trainNoList: [],
selected: null,
addModel: {
type: '01',
groupNumber: ''
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.editTrainId.menu.domId : '';
},
title() {
return 'ATP切除功能';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
this.selected = selected;
//
if (!this.dialogShow) {
const section = this.$store.getters['map/getDeviceByCode'](selected.sectionCode);
if (section) {
const station = this.$store.getters['map/getDeviceByCode'](section.stationCode);
if (station) {
this.addModel.stationName = station.name;
}
}
this.addModel.trainWindowCode = selected.code;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
mouseCancelState(this.selected);
},
commit() {
const operate = {
send: true,
type: MapDeviceType.Train.type,
operation: OperationEvent.Train.editTrainId.menu.operation,
val: this.addModel.tripNumber
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
/deep/ .el-row {
margin: 10px
}
.ningbo-01__systerm .el-dialog .base-label {
// background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -1,189 +0,0 @@
<template>
<!-- <el-dialog class="fuzhou_01 stand-stop-time" :title="title" :visible.sync="show" width="640px" :before-close="doClose" :zIndex="2000" -->
<el-dialog
v-dialogDrag
class="ningbo-01__systerm train-set-plan"
:title="title"
:visible.sync="show"
width="640px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
>
<el-form ref="form" size="small" label-width="80px" :model="addModel" :rules="rules">
<!-- <div style="width: 46%;">
<el-form-item label="车 组 号:" label-width="95px" prop="trainNo">
<el-input v-model="addModel.trainNo" disabled></el-input>
</el-form-item>
</div> -->
<div style="overflow: hidden;">
<div style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px; margin-right: 4%;">
<span class="base-label"></span>
<div style="position: relative; top:-10px;">
<!-- <el-form-item prop="stationStandSource">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandSource" filterable placeholder="请选择">
<el-option v-for="item in stationStandList" :key="item.code" :label="item.name" :value="item.code">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item label="车 次 号:" prop="trainSource">
<el-input v-model="addModel.trainSource" />
</el-form-item>
</div>
</div>
<div style="width: 48%; float: left; padding: 10px 15px; border: 1px double lightgray; margin: 20px 0px; height: 120px;">
<span class="base-label">目的</span>
<div style="position: relative; top:-10px;">
<el-form-item prop="stationStandGoal">
<span slot="label">&emsp; :</span>
<el-select v-model="addModel.stationStandGoal" filterable placeholder="请选择">
<el-option v-for="item in stationStandList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>
<el-form-item label="车 次 号:" prop="trainGoal">
<el-input v-model="addModel.trainGoal" />
</el-form-item>
</div>
</div>
</div>
</el-form>
<el-row justify="center" 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>
</el-dialog>
</template>
<script>
import { mapGetters } from 'vuex';
import { MapDeviceType, OperationEvent } from '@/scripts/ConstDic';
export default {
name: 'TrainMove',
components: {
},
data() {
return {
trainNoList: [],
addModel: {
// trainNo: '',
trainSource: '',
// stationStandSource: '',
trainGoal: '',
stationStandGoal: ''
},
rules: {
// trainNo: [
// { required: true, message: '', trigger: 'blur' }
// ],
trainSource: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
// stationStandSource: [
// { required: true, message: '', trigger: 'change' }
// ],
trainGoal: [
{ required: true, message: '请输入车次号', trigger: 'blur' }
],
stationStandGoal: [
{ required: true, message: '请选择车站', trigger: 'change' }
]
},
dialogShow: false,
loading: false
};
},
computed: {
...mapGetters('map', [
'stationStandList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Train.moveTrainId.menu.domId : '';
},
title() {
return '平移计划车';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected) {
//
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
this.$store.dispatch('map/setTrainWindowShow', false);
},
commit() {
this.$refs['form'].validate((valid) => {
if (valid) {
const operate = {
send: true,
type: MapDeviceType.Train.type,
// operation: OperationEvent.Train.moveTrainId.menu.operation,
operation: OperationEvent.Train.moveEventlyTrainId.menu.operation
};
this.loading = true;
this.$store.dispatch('training/next', operate).then(({ valid }) => {
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
});
} else {
return false;
}
});
},
cancel() {
const operate = {
type: MapDeviceType.Train.type,
operation: OperationEvent.Command.cancel.menu.operation
};
this.$store.dispatch('training/next', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => { this.doClose(); });
}
}
};
</script>
<style scoped>
.fuzhou_01 .el-dialog .base-label {
background: rgba(0, 0, 0, x);
position: relative;
left: -5px;
top: -18px;
padding: 0 5px;
background-color: #F0F0F0;
}
</style>

View File

@ -5,10 +5,7 @@
<train-delete ref="trainDelete" /> <train-delete ref="trainDelete" />
<train-define ref="trainDefine" /> <train-define ref="trainDefine" />
<train-move ref="trainMove" /> <train-move ref="trainMove" />
<!-- <train-edit ref="trainEdit" /> -->
<train-set-plan ref="trainSetPlan" /> <train-set-plan ref="trainSetPlan" />
<!-- <train-move-evently ref="trainMoveEvently" /> -->
<!-- <train-delete-plan ref="trainDeletePlan" /> -->
<train-set-head ref="trainSetHead" /> <train-set-head ref="trainSetHead" />
<train-set-work ref="trainSetWork" /> <train-set-work ref="trainSetWork" />
<trainSetWorkATP ref="trainSetWorkATP" /> <trainSetWorkATP ref="trainSetWorkATP" />

View File

@ -1,162 +0,0 @@
<template>
<div>
<el-dialog
v-dialogDrag
class="xian-01__systerm route-detail"
:title="title"
:visible.sync="show"
width="340px"
: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="signalName" size="small" disabled />
</el-col>
</el-row>
<div class="table">
<span>进路列表</span>
<el-table
ref="tempTable"
:data="tempData"
border
style="width: 100%"
size="mini"
highlight-current-row
:height="140"
>
<el-table-column label="进路">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column prop="status" label="控制状态" width="180">
<template slot-scope="scope">
{{ scope.row.atsControl == '0' ? '人工' : '自动' }}
</template>
</el-table-column>
</el-table>
</div>
<el-row justify="center" 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" pop-class="xian-01__systerm" />
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
export default {
name: 'RouteDetail',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
selected: null,
tempData: [],
stationName: '',
signalName: ''
};
},
computed: {
...mapGetters('map', [
'signalList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdConfirm() {
return this.dialogShow ? OperationEvent.Signal.detail.menu.domId : '';
},
title() {
return '查询进路状态';
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected, tempData) {
this.selected = selected;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
this.tempData = tempData || [];
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$store.dispatch('training/emitTipFresh');
},
commit() {
const operate = {
send: true,
operation: OperationEvent.Signal.detail.menu.operation
};
this.loading = true;
this.$store.dispatch('training/nextNew', operate).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.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -1,335 +0,0 @@
<template>
<div>
<el-dialog
v-dialogDrag
class="xian-01__systerm route-hand-control"
:title="title"
:visible.sync="show"
width="300px"
: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="signalName" size="small" disabled />
</el-col>
</el-row>
<div class="table">
<el-table
ref="tempTable"
:data="tempData"
border
style="width: 100%"
size="mini"
highlight-current-row
:height="140"
>
<el-table-column label="选择" width="55" style="margin-left:50px; text-align: right;">
<template slot-scope="scope">
<el-checkbox
v-model="changeList[scope.$index]"
style="text-align: center; display: block;"
:disabled="scope.row.disabled"
@change="changeCheck(changeList[scope.$index],scope.row.code)"
/>
</template>
</el-table-column>
<el-table-column :id="domIdChoose" prop="name" label="进路" style="margin-left:30px">
<template slot-scope="scope">
<span :style="{color: scope.row.disabled ? '#CBCBCB':'unset'}">{{ scope.row.name }}</span>
</template>
</el-table-column>
</el-table>
</div>
<el-row>
<el-col :span="22" :offset="1">
<el-checkbox v-model="allSelect" size="small" @change="allSelectChange">全选</el-checkbox>
</el-col>
</el-row>
<el-row justify="center" class="button-group">
<el-col :span="10" :offset="2">
<el-button
:id="domIdConfirm"
type="primary"
:disabled="commitDisabled"
: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" pop-class="xian-01__systerm" />
</el-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import NoticeInfo from '@/jmapNew/theme/components/menus/childDialog/noticeInfo';
import {menuOperate, commitOperate} from '@/jmapNew/theme/components/utils/menuOperate';
export default {
name: 'RouteHandControl',
components: {
NoticeInfo
},
data() {
return {
dialogShow: false,
loading: false,
selected: null,
tempData: [],
operation: null,
selection: [],
stationName: '',
signalName: '',
allSelect: false,
changeList:[],
commitDisabled: true,
disabledLength: 0
};
},
computed: {
...mapGetters('map', [
'signalList'
]),
show() {
return this.dialogShow && !this.$store.state.menuOperation.break;
},
domIdCancel() {
return this.dialogShow ? OperationEvent.Command.cancel.menu.domId : '';
},
domIdChoose() {
if (this.dialogShow) {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
return OperationEvent.Signal.humanControl.choose.domId;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
return OperationEvent.Signal.atsAutoControl.choose.domId;
} else {
return '';
}
} else {
return '';
}
},
domIdConfirm() {
return this.dialogShow ? OperationHandler.getDomIdByOperation(this.operation) : '';
},
title() {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
return '进路交人工控';
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
return '进路交自动控';
} else {
return '';
}
}
},
watch: {
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
doShow(operate, selected, tempData) {
this.selected = selected;
this.allSelect = false;
this.changeList = [];
this.commitDisabled = true;
this.selection = [];
this.disabledLength = 0;
//
if (!this.dialogShow) {
this.signalName = '';
this.stationName = '';
if (selected && selected._type.toUpperCase() === 'Signal'.toUpperCase()) {
this.signalName = selected.name;
const station = this.$store.getters['map/getDeviceByCode'](selected.stationCode);
if (station) {
this.stationName = station.name;
}
}
if (tempData && tempData.length > 0) {
tempData.forEach(elem => {
this.changeList.push(false);
elem.disabled = false;
//
if (operate.operation == OperationEvent.Signal.humanControl.menu.operation &&
(elem.atsControl == 0)) {
elem.disabled = true;
this.disabledLength++;
} if (operate.operation == OperationEvent.Signal.atsAutoControl.menu.operation &&
(elem.atsControl != 0)) {
elem.disabled = true;
this.disabledLength++;
}
});
}
this.tempData = tempData || [];
this.operation = operate.operation;
}
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.tempTable.setCurrentRow();
this.$store.dispatch('training/emitTipFresh');
},
changeCheck(check, code) {
if (check) {
this.selection.push(code);
} else {
this.selection.splice(this.selection.indexOf(code), 1);
}
if (this.selection.length >= (this.tempData.length - this.disabledLength) ) {
this.allSelect = true;
} else {
this.allSelect = false;
}
if (this.selection.length > 0) {
this.commitDisabled = false;
} else {
this.commitDisabled = true;
}
const operate = {val:code};
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
operate.operation = OperationEvent.Signal.humanControl.choose.operation;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
operate.operation = OperationEvent.Signal.atsAutoControl.choose.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
},
allSelectChange() {
this.changeList = [];
if (this.allSelect) {
this.tempData.forEach((item, index)=> {
if (!item.disabled) {
this.changeList.push(true);
this.selection.push(item.code);
} else {
this.changeList.push('');
}
});
this.allSelect = true;
if (this.selection.length > 0) {
this.commitDisabled = false;
}
} else {
this.tempData.forEach((item, index) => {
if (!item.disabled) {
this.changeList.push(false);
this.selection.splice(this.selection.indexOf(item.code), 1);
}
});
this.allSelect = false;
this.commitDisabled = true;
}
},
handleChooseChange(selection) {
this.selection = selection;
if (selection && selection.length) {
const operate = {
repeat: true,
operation: '',
selection: selection
};
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
operate.operation = OperationEvent.Signal.humanControl.choose.operation;
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
operate.operation = OperationEvent.Signal.atsAutoControl.choose.operation;
}
this.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
}
});
} else if (!selection) {
this.$messageBox(`请选择一条数据`);
}
},
commit() {
if (this.operation == OperationEvent.Signal.humanControl.menu.operation) {
/** 进路交人工控*/
this.humanControl();
} else if (this.operation == OperationEvent.Signal.atsAutoControl.menu.operation) {
/** 进路交自动控*/
this.atsAutoControl();
}
},
//
humanControl() {
this.loading = true;
commitOperate(menuOperate.Signal.humanControl, {routeCodeList:this.selection}, 2).then(({valid})=>{
this.loading = false;
if (valid) {
this.doClose();
}
}).catch(() => {
this.loading = false;
this.doClose();
this.$refs.noticeInfo.doShow();
});
},
//
atsAutoControl() {
this.loading = true;
commitOperate(menuOperate.Signal.atsAutoControl, {routeCodeList:this.selection}, 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.$store.dispatch('training/nextNew', operate).then(({ valid }) => {
if (valid) {
this.doClose();
}
}).catch(() => {
this.doClose();
});
}
}
};
</script>

View File

@ -1,14 +1,14 @@
<template> <template>
<div> <div>
<pop-menu ref="popMenu" :menu="menu" :pop-menu-class="systemName" /> <pop-menu ref="popMenu" :menu="menu" pop-menu-class="xian-01__systerm" />
<route-selection ref="routeSelection" /> <route-selection ref="routeSelection" />
<route-lock ref="routeLock" /> <route-lock ref="routeLock" />
<route-control ref="routeControl" :pop-class="systemName" /> <route-control ref="routeControl" pop-class="xian-01__systerm" />
<route-cmd-control ref="routeCmdControl" /> <route-cmd-control ref="routeCmdControl" />
<notice-info ref="noticeInfo" pop-class="xian-01__systerm" /> <notice-info ref="noticeInfo" pop-class="xian-01__systerm" />
<route-hand-control ref="routeHandControl" :system-name="systemName" /> <route-hand-control ref="routeHandControl" system-name="xian-01__systerm" />
<route-detail ref="routeDetail" :system-name="systemName" /> <route-detail ref="routeDetail" system-name="xian-01__systerm" />
<set-fault ref="setFault" :pop-class="systemName" /> <set-fault ref="setFault" pop-class="xian-01__systerm" />
</div> </div>
</template> </template>
@ -52,7 +52,6 @@ export default {
data() { data() {
return { return {
menu: [], menu: [],
systemName:'xian-01__systerm',
menuNormal: { menuNormal: {
Local: [ Local: [
{ {

View File

@ -276,6 +276,36 @@ export const publicAsyncRoute = [
hidden: true hidden: true
} }
] ]
},
{
path: '/device/teachDetail',
component: TeachDetail,
hidden: true
},
{
path: '/device/course',
component: ExamCourseDetail,
hidden: true
},
{
path: '/device/examRule/manage',
component: PublishExamRule,
hidden: true
},
{
path: '/device/examRule/draft/:mode/:ruleId/:lessonId',
component: PublishExamRuleDraft,
hidden: true
},
{ // 试卷详情
path: '/device/exam/:examId',
component: ExamDetail,
hidden: true
},
{ // 考试结果
path: '/device/result/:userExamId',
component: ExamResult,
hidden: true
} }
]; ];
export const asyncRouter = [ export const asyncRouter = [

View File

@ -20,6 +20,9 @@ const runPlan = {
stations: (state) => { stations: (state) => {
return state.stations || []; return state.stations || [];
}, },
draftStations: (state) => {
return state.draftStations || [];
},
convertPlanData: (state) => () => { convertPlanData: (state) => () => {
const data = { serviceNumberDataList: [] }; const data = { serviceNumberDataList: [] };
const serviceNumberList = Object.keys(state.editData).sort((a, b) => { const serviceNumberList = Object.keys(state.editData).sort((a, b) => {

View File

@ -3,7 +3,7 @@ export function getBaseUrl() {
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
// BASE_API = 'https://joylink.club/jlcloud'; // BASE_API = 'https://joylink.club/jlcloud';
BASE_API = 'https://test.joylink.club/jlcloud'; BASE_API = 'https://test.joylink.club/jlcloud';
// BASE_API = 'http://192.168.3.5:9000'; // 袁.el-button+.el-button // BASE_API = 'http://192.168.3.5:9000'; // 袁
// BASE_API = 'http://192.168.3.6:9000'; // 旭强 // BASE_API = 'http://192.168.3.6:9000'; // 旭强
// BASE_API = 'http://192.168.3.41:9000'; // 张赛 // BASE_API = 'http://192.168.3.41:9000'; // 张赛
// BASE_API = 'http://192.168.3.82:9000'; // 杜康 // BASE_API = 'http://192.168.3.82:9000'; // 杜康

View File

@ -457,6 +457,8 @@ export default {
} }
}); });
window.open(routeData.href, '_blank', 'noopener noreferrer'); window.open(routeData.href, '_blank', 'noopener noreferrer');
} else {
this.$message.error('暂无教学系统数据!');
} }
}).catch(() => { }).catch(() => {
this.$message.error('获取课程ID失败'); this.$message.error('获取课程ID失败');
@ -487,21 +489,13 @@ export default {
} }
}); });
window.open(routeData.href, '_blank', 'noopener noreferrer'); window.open(routeData.href, '_blank', 'noopener noreferrer');
} else {
this.$message.error('暂无考试系统数据!');
} }
}).catch(() => { }).catch(() => {
this.$message.error('获取课程ID失败'); this.$message.error('获取课程ID失败');
}); });
} }
},
handleRunPlan() {
const routeData = this.$router.resolve({
path:`/device/runPlan/${this.mapId}`,
query:{
lineCode:this.lineCode,
noPreLogout: true
}
});
window.open(routeData.href, '_blank', 'noopener noreferrer');
} }
} }
}; };

View File

@ -78,7 +78,6 @@ export default {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
delete this.editModel.children;
this.verifyMapName(); this.verifyMapName();
} }
}); });
@ -93,12 +92,13 @@ export default {
} }
} catch (error) { } catch (error) {
console.log(error); console.log(error);
this.loading = false;
} }
}, },
confirmPublish() { confirmPublish() {
this.$confirm(this.$t('map.verifyMapName'), this.$t('tip.hint'), { this.$confirm('地图名称重复,您确认发布此地图将会覆盖公共地图?', '提示', {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: '确 定',
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: '取 消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.publishMap(); this.publishMap();

View File

@ -347,19 +347,7 @@ export default {
return menus; return menus;
}, },
initMenu() { initMenu() {
const menuLoading = [];
const menuDelete = [];
const menuPublish = [];
this.runPlanList.forEach(item => {
menuLoading.push({title: item.name, planId:item.id, planName: item.name, click: this.loadingRunPlan});
menuDelete.push({title: item.name, planId:item.id, planName: item.name, click: this.deleteRunPlanOperate});
menuPublish.push({title: item.name, planId:item.id, planName: item.name, click: this.publishRunPlan});
});
if (this.runPlanList.length) {
this.menus = this.menuConvert([...this.menuBase, {title: '加载', children: menuLoading}, {title: '删除', children: menuDelete}, {title: '发布', children:menuPublish}]);
} else {
this.menus = this.menuConvert(this.menuBase); this.menus = this.menuConvert(this.menuBase);
}
this.clickEvent(); this.clickEvent();
this.closeMenu(); this.closeMenu();
}, },
@ -387,7 +375,6 @@ export default {
}, },
hookClick(item, event) { hookClick(item, event) {
this.closeMenu(); this.closeMenu();
// launchFullscreen();
if (!item.disabled) { if (!item.disabled) {
setTimeout(() => { setTimeout(() => {
if (item && typeof item.click == 'function') { if (item && typeof item.click == 'function') {
@ -590,7 +577,9 @@ export default {
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('tip.deleteOperationGraphFailed')); this.$messageBox(this.$t('tip.deleteOperationGraphFailed'));
}); });
}).catch(() => { }); }).catch(() => {
this.$message.error('删除运行图失败!');
});
}, },
publishRunPlan(param) { publishRunPlan(param) {
this.$confirm(this.$t('tip.publishRunPlanTips'), this.$t('tip.hint'), { this.$confirm(this.$t('tip.publishRunPlanTips'), this.$t('tip.hint'), {

View File

@ -5,10 +5,11 @@
:plan-convert="PlanConvert" :plan-convert="PlanConvert"
:run-plan-list="runPlanList" :run-plan-list="runPlanList"
:load-run-plan-id="loadRunPlanId" :load-run-plan-id="loadRunPlanId"
:load-run-plan-name="loadRunPlanName"
@doClose="doClose" @doClose="doClose"
@dispatchDialog="dispatchDialog" @dispatchDialog="dispatchDialog"
@loadingRunPlan="loadingRunPlan" @loadingRunPlan="loadingRunPlan"
@checkIsLoadRunPlan="checkIsLoadRunPlan" @refresh="refreshRunPlanList"
@modifyRunPlanName="modifyRunPlanName" @modifyRunPlanName="modifyRunPlanName"
/> />
<schedule <schedule
@ -179,12 +180,19 @@ export default {
refresh() { refresh() {
this.$store.dispatch('runPlan/refresh'); this.$store.dispatch('runPlan/refresh');
}, },
refreshRunPlanList(firstLoad) { refreshRunPlanList(planId) {
getRpListByMapId(this.$route.query.mapId).then(resp => { getRpListByMapId(this.$route.query.mapId).then(resp => {
this.runPlanList = resp.data || []; this.runPlanList = resp.data || [];
if (firstLoad && this.runPlanList.length) { if (planId && this.runPlanList.length) {
this.loadRunPlanId = this.runPlanList[0].id; this.runPlanList.forEach(item => {
this.loadRunPlanName = this.runPlanList[0].name; if (item.id === planId) {
this.loadRunPlanId = item.id;
this.loadRunPlanName = item.name;
}
});
} else {
this.loadRunPlanId = '';
this.loadRunPlanName = '';
} }
}).catch(() => { }).catch(() => {
this.$message.error('获取草稿运行图列表失败'); this.$message.error('获取草稿运行图列表失败');
@ -197,9 +205,6 @@ export default {
this.loadRunPlanId = param.planId; this.loadRunPlanId = param.planId;
this.loadRunPlanName = param.planName; this.loadRunPlanName = param.planName;
}, },
checkIsLoadRunPlan(planId) {
this.refreshRunPlanList(planId === this.loadRunPlanId);
},
modifyRunPlanName() { modifyRunPlanName() {
if (this.loadRunPlanId && this.loadRunPlanName) { if (this.loadRunPlanId && this.loadRunPlanName) {
this.$refs.editPlan.doShow({id: this.loadRunPlanId, name: this.loadRunPlanName}); this.$refs.editPlan.doShow({id: this.loadRunPlanId, name: this.loadRunPlanName});

View File

@ -37,9 +37,11 @@
<div class="menu-li-block" :disabled="child.disabled"> <div class="menu-li-block" :disabled="child.disabled">
<span class="menu-li-text"> <span class="menu-li-text">
<span class="label">{{ child.title }}</span> <span class="label">{{ child.title }}</span>
<i v-if="j!==classB" class="el-icon-arrow-right" style="float: right;height: 30px;line-height: 30px;" />
<i v-if="j===classB" class="el-icon-arrow-left" style="float: right;height: 30px;line-height: 30px;" />
</span> </span>
</div> </div>
<ul class="menu-ul" :class="{'active' :j==classB}"> <ul class="menu-ul" :class="{'children-active' :j==classB}" style="padding-left: 2px;">
<template v-for="(grandchild,k) in child.children"> <template v-for="(grandchild,k) in child.children">
<li v-if="grandchild.type === 'separator'" :key="k" class="menu-separator"> <li v-if="grandchild.type === 'separator'" :key="k" class="menu-separator">
<span class="separator">&ensp;</span> <span class="separator">&ensp;</span>
@ -110,13 +112,27 @@
<span class="nav-li-text">{{ dispaly?'关闭':$t('global.back') }}</span> <span class="nav-li-text">{{ dispaly?'关闭':$t('global.back') }}</span>
</div> </div>
</div> </div>
<el-dialog
title="运行图发布"
:visible.sync="publishVisible"
width="30%"
center
:modal="false"
:before-close="handleClose"
>
<el-input v-model="publishName"><template slot="prepend">运行图名称:</template></el-input>
<span slot="footer" class="dialog-footer">
<el-button @click="publishVisible = false"> </el-button>
<el-button type="primary" @click="confirmPublish"> </el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { planEffectiveCheck } from '@/api/runplan'; import { planEffectiveCheck } from '@/api/runplan';
import { EventBus } from '@/scripts/event-bus'; import { EventBus } from '@/scripts/event-bus';
import { publishRunPlan } from '@/api/designPlatform'; import { publishRunPlanAllUser } from '@/api/designPlatform';
import { deleteRunPlan } from '@/api/runplan'; import { deleteRunPlan } from '@/api/runplan';
export default { export default {
@ -139,6 +155,12 @@ export default {
default: function() { default: function() {
return ''; return '';
} }
},
loadRunPlanName: {
type: String,
default: function() {
return '';
}
} }
}, },
data() { data() {
@ -150,14 +172,16 @@ export default {
tempClassB: -1, tempClassB: -1,
menus: [], menus: [],
loading: null, loading: null,
publishName: '',
publishVisible: false,
menuBase: [ menuBase: [
{ {
title: this.$t('planMonitor.file'), title: this.$t('planMonitor.file'),
children: [ children: [
{ // {
title: '查看站间运行等级', // title: '',
click: this.handleModifyingStationIntervalTime // click: this.handleModifyingStationIntervalTime
}, // },
{ {
title: '填充通用数据', title: '填充通用数据',
click: this.populatingGenericData click: this.populatingGenericData
@ -165,14 +189,26 @@ export default {
{ {
title: '创建运行图', title: '创建运行图',
click: this.newRunPlan click: this.newRunPlan
},
{
title: '打开',
children: []
},
{
title: '删除',
click: this.deleteRunPlanOperate
},
{
title: '发布',
click: this.publishRunPlan
} }
] ]
}, },
{ // {
title: this.$t('planMonitor.view'), // title: this.$t('planMonitor.view'),
children: [ // children: [
] // ]
}, // },
{ {
title: this.$t('planMonitor.tool'), title: this.$t('planMonitor.tool'),
children: [ children: [
@ -290,18 +326,19 @@ export default {
}, },
initMenu() { initMenu() {
const menuLoading = []; const menuLoading = [];
const menuDelete = [];
const menuPublish = [];
this.runPlanList.forEach(item => { this.runPlanList.forEach(item => {
menuLoading.push({title: item.name, planId:item.id, planName: item.name, click: this.loadingRunPlan}); menuLoading.push({title: item.name, planId:item.id, planName: item.name, click: this.loadingRunPlan});
menuDelete.push({title: item.name, planId:item.id, planName: item.name, click: this.deleteRunPlanOperate});
menuPublish.push({title: item.name, planId:item.id, planName: item.name, click: this.publishRunPlan});
}); });
if (this.runPlanList.length) { this.menuBase.forEach(item => {
this.menus = this.menuConvert([...this.menuBase, {title: '加载', children: menuLoading}, {title: '删除', children: menuDelete}, {title: '发布', children:menuPublish}]); if (item.title === this.$t('planMonitor.file')) {
} else { item.children.forEach(elem => {
this.menus = this.menuConvert(this.menuBase); if (elem.title === '打开') {
elem.children = menuLoading;
} }
});
}
});
this.menus = this.menuConvert(this.menuBase);
this.clickEvent(); this.clickEvent();
this.closeMenu(); this.closeMenu();
}, },
@ -504,32 +541,43 @@ export default {
loadingRunPlan(param) { loadingRunPlan(param) {
this.$emit('loadingRunPlan', param); this.$emit('loadingRunPlan', param);
}, },
deleteRunPlanOperate(param) { deleteRunPlanOperate() {
// //
if (this.loadRunPlanId) {
this.$confirm(this.$t('planMonitor.openRunPlan.confirmDeleteRunPlan'), this.$t('tip.hint'), { this.$confirm(this.$t('planMonitor.openRunPlan.confirmDeleteRunPlan'), this.$t('tip.hint'), {
confirmButtonText: this.$t('tip.confirm'), confirmButtonText: this.$t('tip.confirm'),
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('tip.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
deleteRunPlan(param.planId).then(Response => { deleteRunPlan(this.loadRunPlanId).then(Response => {
this.$message.success(this.$t('planMonitor.openRunPlan.deleteSuccess')); this.$message.success(this.$t('planMonitor.openRunPlan.deleteSuccess'));
this.$emit('checkIsLoadRunPlan', param.planId); this.$emit('refresh');
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('tip.deleteOperationGraphFailed')); this.$messageBox(this.$t('tip.deleteOperationGraphFailed'));
}); });
}).catch(() => { }); }).catch(() => { });
} else {
this.$message.error('请先打开运行图!');
}
}, },
publishRunPlan(param) { publishRunPlan() {
this.$confirm(this.$t('tip.publishRunPlanTips'), this.$t('tip.hint'), { if (this.loadRunPlanId) {
confirmButtonText: this.$t('tip.confirm'), this.publishVisible = true;
cancelButtonText: this.$t('tip.cancel'), this.publishName = this.loadRunPlanName;
type: 'warning' } else {
}).then(() => { this.$message.error('请先打开运行图!');
publishRunPlan(param.planId, {runPlanName: param.planName}).then(resp => { }
},
handleClose() {
this.publishVisible = false;
},
confirmPublish() {
publishRunPlanAllUser(this.loadRunPlanId, this.publishName || this.loadRunPlanName).then(resp => {
this.$message.success(this.$t('tip.publishRunPlanSuccess')); this.$message.success(this.$t('tip.publishRunPlanSuccess'));
this.publishVisible = false;
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('tip.publishRunPlanFail')); this.$messageBox(this.$t('tip.publishRunPlanFail'));
}); this.publishVisible = false;
}); });
} }
} }
@ -621,7 +669,11 @@ export default {
left: 0; left: 0;
display: block !important; display: block !important;
} }
.children-active {
position: relative;
left: 160px;
display: block !important;
}
.menu-ul-text { .menu-ul-text {
font-size: 14px; font-size: 14px;
letter-spacing: 0; letter-spacing: 0;

View File

@ -40,7 +40,7 @@
</el-form> </el-form>
</el-row> </el-row>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="导入运行图" name="three"> <el-tab-pane v-if="$route.path.includes('device')" label="导入运行图" name="three">
<el-row> <el-row>
<el-button type="text" class="uploadDemo"> <el-button type="text" class="uploadDemo">
<input <input
@ -152,7 +152,7 @@ export default {
if (valid) { if (valid) {
this.loading = true; this.loading = true;
createEmptyPlan(this.newModel).then(resp => { createEmptyPlan(this.newModel).then(resp => {
this.$emit('refresh'); this.$emit('refresh', resp.data);
this.$message.success(this.$t('tip.createAnEmptyRunGraphSuccessfully')); this.$message.success(this.$t('tip.createAnEmptyRunGraphSuccessfully'));
this.doClose(); this.doClose();
}).catch((error) => { }).catch((error) => {
@ -167,7 +167,7 @@ export default {
this.loading = true; this.loading = true;
postCreatePlan(this.pullModel).then(resp => { postCreatePlan(this.pullModel).then(resp => {
this.$message.success(this.$t('tip.createARunGraphSuccessfully')); this.$message.success(this.$t('tip.createARunGraphSuccessfully'));
this.$emit('refresh'); this.$emit('refresh', resp.data);
this.doClose(); this.doClose();
}).catch((error) => { }).catch((error) => {
this.$messageBox(this.$t('error.createOperationGraphFailed') + this.$t('global.colon') + error.message); this.$messageBox(this.$t('error.createOperationGraphFailed') + this.$t('global.colon') + error.message);

View File

@ -24,7 +24,6 @@
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { timeFormat } from '@/utils/date'; import { timeFormat } from '@/utils/date';
import { getStationList, queryRunPlan } from '@/api/runplan'; import { getStationList, queryRunPlan } from '@/api/runplan';
import { getPublishMapInfo } from '@/api/jmap/map';
import DataTable from './menus/components/dataTable'; import DataTable from './menus/components/dataTable';
import echarts from 'echarts'; import echarts from 'echarts';
@ -63,7 +62,6 @@ export default {
return { return {
top: 0, top: 0,
height: 0, height: 0,
mapName: '',
runPlanId: 'plan-tool', runPlanId: 'plan-tool',
myChart: null, myChart: null,
showTrain: false, showTrain: false,
@ -223,7 +221,7 @@ export default {
}, },
computed: { computed: {
...mapGetters('runPlan', [ ...mapGetters('runPlan', [
'stations' 'draftStations'
]) ])
}, },
watch: { watch: {
@ -365,7 +363,7 @@ export default {
} }
height = height - top; height = height - top;
this.$store.dispatch('runPlan/resize', { width, height }); this.$store.dispatch('runPlan/resize', { width, height:height - 20 });
if (this.top != top) { if (this.top != top) {
this.top = top; this.top = top;
@ -378,9 +376,6 @@ export default {
}, },
async loadChartPage() { async loadChartPage() {
try { try {
getPublishMapInfo(this.$route.query.mapId).then(resp => {
this.mapName = `${resp.data.name} (${this.$route.query.planName || this.loadRunPlanName || ''})`;
});
this.$store.dispatch('runPlan/draftClear').then(() => { this.$store.dispatch('runPlan/draftClear').then(() => {
// this.loadInitChart().then(() => { // this.loadInitChart().then(() => {
if (this.$route.query.mapId) { if (this.$route.query.mapId) {
@ -399,9 +394,13 @@ export default {
this.myChart && this.myChart.hideLoading(); this.myChart && this.myChart.hideLoading();
this.$messageBox(this.$t('error.obtainOperationGraphFailed')); this.$messageBox(this.$t('error.obtainOperationGraphFailed'));
}); });
} else { } else {
this.clearCanvas(); // this.clearCanvas();
this.$store.dispatch('runPlan/setDraftPlanData', {serviceNumberDataList: []}).then(()=> {
this.analyticalServiceNumber(this.$store.state.runPlan.draftEditData);
this.loadChartData();
this.myChart && this.myChart.hideLoading();
});
} }
}); });
}).catch(() => { }).catch(() => {
@ -428,7 +427,7 @@ export default {
this.option.series = []; this.option.series = [];
this.kmRangeCoordMap = this.planConvert.convertStationsToMap(stations); this.kmRangeCoordMap = this.planConvert.convertStationsToMap(stations);
this.pushModels(this.option.series, [this.planConvert.initializeYaxis(this.stations)]); this.pushModels(this.option.series, [this.planConvert.initializeYaxis(this.draftStations)]);
this.pushModels(this.option.series, this.planConvert.convertDataToModels(planData, stations, this.kmRangeCoordMap, { width: 0.5, color: '#000' })); this.pushModels(this.option.series, this.planConvert.convertDataToModels(planData, stations, this.kmRangeCoordMap, { width: 0.5, color: '#000' }));
await this.loadInitChart(); await this.loadInitChart();
@ -472,7 +471,7 @@ export default {
if (this.myChart && this.myChart.isDisposed) { if (this.myChart && this.myChart.isDisposed) {
this.myChart.clear(); this.myChart.clear();
} }
this.option.title.text = this.mapName; this.option.title.text = this.loadRunPlanName;
this.myChart = echarts.init(document.getElementById(this.runPlanId)); this.myChart = echarts.init(document.getElementById(this.runPlanId));
this.myChart.setOption(this.option); this.myChart.setOption(this.option);
this.reSize({ width: this.$store.state.runPlan.width, height: this.$store.state.runPlan.height }); this.reSize({ width: this.$store.state.runPlan.width, height: this.$store.state.runPlan.height });
@ -482,31 +481,19 @@ export default {
} }
}); });
}, },
refreshRunPlanName(name) {
getPublishMapInfo(this.$route.query.mapId).then(resp => {
this.mapName = `${resp.data.name} (${name})`;
this.myChart.setOption({
title: {
text: this.mapName,
left: 'center', //
top: '10px'
}
});
});
},
clearCanvas() { clearCanvas() {
this.option.series = []; this.option.series = [];
this.option.title.text = ''; this.option.title.text = '';
if (this.myChart) { if (this.myChart) {
this.myChart.clear(); this.myChart.clear();
} }
this.myChart.setOption(this.option); this.myChart && this.myChart.setOption(this.option);
}, },
xAxisPointFormat(params) { xAxisPointFormat(params) {
return timeFormat(params.value); return timeFormat(params.value);
}, },
yAxisPointFormat(params) { yAxisPointFormat(params) {
return this.planConvert.computedFormatYAxis(this.stations, params); return this.planConvert.computedFormatYAxis(this.draftStations, params);
}, },
xAxisLableFormat(value, index) { xAxisLableFormat(value, index) {
if (value % 60 === 0) { if (value % 60 === 0) {
@ -536,9 +523,9 @@ export default {
}, },
yAxisInit() { yAxisInit() {
if (Object.keys(this.planConvert).length) { if (Object.keys(this.planConvert).length) {
this.pushModels(this.option.series, [this.planConvert.initializeYaxis(this.stations)]); this.pushModels(this.option.series, [this.planConvert.initializeYaxis(this.draftStations)]);
this.option.yAxis.min = this.planConvert.computedYaxisMinValue(this.stations); this.option.yAxis.min = this.planConvert.computedYaxisMinValue(this.draftStations);
this.option.yAxis.max = this.planConvert.computedYaxisMaxValue(this.stations); this.option.yAxis.max = this.planConvert.computedYaxisMaxValue(this.draftStations);
} }
}, },
axisTooltip(param) { axisTooltip(param) {

View File

@ -32,27 +32,6 @@ export default {
pageIndex: 'pageNum' pageIndex: 'pageNum'
}, },
lessonName: '', lessonName: '',
queryForm: {
labelWidth: '160px',
queryObject: {
'lessonId': {
type: this.$route.query.lessonId ? '' : 'select',
label: this.$t('publish.lessonName'),
config: {
data: []
}
},
'name': {
type: 'text',
label: this.$t('publish.paperName')
},
'creatorName': {
type: 'text',
label: this.$t('publish.creator')
}
},
reset: !this.$route.query.lessonId
},
queryList: { queryList: {
query: this.queryFunction, query: this.queryFunction,
selectCheckShow: false, selectCheckShow: false,
@ -163,11 +142,52 @@ export default {
], ],
actions: [ actions: [
{ text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleNormalAdd }, { text: this.$t('global.add'), btnCode: 'employee_insert', handler: this.handleNormalAdd },
{ text: this.$t('global.back'), btnCode: 'employee_back', handler: this.handlerBack } { text: this.$t('global.back'), show: !this.$route.path.includes('device'), btnCode: 'employee_back', handler: this.handlerBack }
] ]
} }
}; };
}, },
computed: {
queryForm() {
return this.$route.path.includes('device') ? {
labelWidth: '160px',
queryObject: {
'lessonId': {
type: this.$route.query.lessonId ? '' : 'select',
label: this.$t('publish.lessonName'),
config: {
data: []
}
},
'name': {
type: 'text',
label: this.$t('publish.paperName')
}
},
reset: !this.$route.query.lessonId
} : {
labelWidth: '160px',
queryObject: {
'lessonId': {
type: this.$route.query.lessonId ? '' : 'select',
label: this.$t('publish.lessonName'),
config: {
data: []
}
},
'name': {
type: 'text',
label: this.$t('publish.paperName')
},
'creatorName': {
type: 'text',
label: this.$t('publish.creator')
}
},
reset: !this.$route.query.lessonId
};
}
},
created() { created() {
this.loadInitData(); this.loadInitData();
}, },
@ -184,7 +204,13 @@ export default {
if (elem.id == this.$route.query.lessonId) { if (elem.id == this.$route.query.lessonId) {
this.lessonName = elem.name; this.lessonName = elem.name;
} }
if (this.$route.path.includes('device')) {
if (elem.mapId === this.$route.query.mapId) {
this.queryForm.queryObject.lessonId.config.data.push({ value: elem.id, label: elem.name }); this.queryForm.queryObject.lessonId.config.data.push({ value: elem.id, label: elem.name });
}
} else {
this.queryForm.queryObject.lessonId.config.data.push({ value: elem.id, label: elem.name });
}
}); });
}); });
@ -203,6 +229,8 @@ export default {
queryFunction(params) { queryFunction(params) {
if (this.$route.query.lessonId) { if (this.$route.query.lessonId) {
params.lessonId = this.$route.query.lessonId; params.lessonId = this.$route.query.lessonId;
} else if (this.$route.path.includes('device')) {
params.mapId = this.$route.query.mapId;
} }
return getExamList(params); return getExamList(params);
}, },

View File

@ -45,7 +45,15 @@ export default {
this.dialogVisible = false; this.dialogVisible = false;
this.$set(this.row, 'loading' + this.idx, true); this.$set(this.row, 'loading' + this.idx, true);
try { try {
const res = await getPublishMapExportNew(this.row.id, this.checkList); const data = {
mapData: this.checkList.includes('MAP_DATA'),
runPlan: this.checkList.includes('RUN_PLAN'),
map3dData: this.checkList.includes('MAP_3D_DATA'),
map3dModel: this.checkList.includes('MAP_3D_MODEL'),
commandDefinition: this.checkList.includes('COMMAND_DEFINITION'),
realLineConfig: this.checkList.includes('REAL_LINE_CONFIG')
};
const res = await getPublishMapExportNew(this.row.id, data);
const resultData = res.data; const resultData = res.data;
if (resultData === false) { if (resultData === false) {
return; return;

View File

@ -12,7 +12,7 @@
<script> <script>
// getPublishMapExport // getPublishMapExport
import { getPublishMapList, delPublishMap, putMapOnLine, putMapOffLine, simulationCheck, localImportMap, updatePublishMapInfo, getPublishMapExport } from '@/api/jmap/map'; import { getPublishMapList, delPublishMap, putMapOnLine, putMapOffLine, simulationCheck, localImportMap, updatePublishMapInfo, getPublishMapExport, getPublishMapImportNew } from '@/api/jmap/map';
import { getLineCodeList } from '@/api/management/mapline'; import { getLineCodeList } from '@/api/management/mapline';
import localStore from 'storejs'; import localStore from 'storejs';
import UpdateOperate from './draft.vue'; import UpdateOperate from './draft.vue';
@ -133,8 +133,9 @@ export default {
}, },
{ {
name: '导入', name: '导入',
handleClick: this.handleExportMap, handleClick: this.handleImportMap,
type: 'default' type: 'file',
id: 'queryPagesFilesInput'
}, },
{ {
name: '导出', name: '导出',
@ -354,42 +355,64 @@ export default {
formatJson(filterVal, jsonData) { formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j])); return jsonData.map(v => filterVal.map(j => v[j]));
}, },
// // //
queryExportData(data) { // queryExportData(data) {
return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
const result = { // const result = {
base: [] // base: []
}; // };
const obj = {}; // const obj = {};
const list = ['graphData', 'logicData']; // const list = ['graphData', 'logicData'];
for (const i in data) { // for (const i in data) {
if (list.includes(i)) { // if (list.includes(i)) {
for (const v in data[i]) { // for (const v in data[i]) {
if (data[i][v].length) { // if (data[i][v].length) {
result[v] = [...data[i][v]]; // result[v] = [...data[i][v]];
} else if (v == 'skinVO') { // } else if (v == 'skinVO') {
result[v] = [data[i][v]]; // result[v] = [data[i][v]];
} // }
} // }
} else if (data[i] instanceof Object || typeof data[i] != 'object') { // } else if (data[i] instanceof Object || typeof data[i] != 'object') {
obj[i] = data[i]; // obj[i] = data[i];
} else if (data[i] instanceof Array) { // } else if (data[i] instanceof Array) {
if (data[i].length) { // if (data[i].length) {
obj[i] = [...data[i]]; // obj[i] = [...data[i]];
} // }
} // }
} // }
result.base.push(obj); // result.base.push(obj);
resolve(result); // resolve(result);
}); // });
}, // },
mapSort() { mapSort() {
this.$router.push({ path: `/publish/mapSort`}); this.$router.push({ path: `/publish/mapSort`});
}, },
localExport() { localExport() {
this.$refs['localMap'].doShow(); this.$refs['localMap'].doShow();
}, },
handleImportMap(index, row, idx) {
setTimeout(() => {
this.$set(row, 'loading' + idx, true);
const obj = document.getElementById('queryPagesFilesInput');
if (!obj.files) return;
const f = obj.files[0];
const reader = new FileReader();
const that = this;
reader.readAsText(f, 'utf-8');
reader.onload = function(e) {
const data = e.target.result;
getPublishMapImportNew(row.id, JSON.parse(data)).then(res => {
that.$message.success('导入成功!');
that.$set(row, 'loading' + idx, false);
}).catch(error => {
that.$message.error('导入失败' + error.message);
that.$set(row, 'loading' + idx, false);
});
obj.value = '';
};
});
},
localImport() { localImport() {
const loading = this.$loading({ const loading = this.$loading({
lock: true, lock: true,
@ -417,124 +440,124 @@ export default {
obj.value = ''; obj.value = '';
}; };
}); });
}, }
// // //
queryExportDataSame(data) { // queryExportDataSame(data) {
const mapProps = {}; // const mapProps = {};
mapProps['stationStandList'] = { // mapProps['stationStandList'] = {
filter: item => { return true; }, // filter: item => { return true; },
propList: { // propList: {
'direction': item => { // 'direction': item => {
switch (item.direction) { // switch (item.direction) {
case '01': return '下行'; // case '01': return '';
case '02': return '上行'; // case '02': return '';
default: return '未知'; // default: return '';
} // }
}, // },
'name': (item, devices) =>{ // 'name': (item, devices) =>{
let name = ''; // let name = '';
if (item.stationCode) { // if (item.stationCode) {
const stationList = devices['stationList']; // const stationList = devices['stationList'];
const station = stationList.find(elem => { return item.stationCode == elem.code; }); // const station = stationList.find(elem => { return item.stationCode == elem.code; });
if (station) { // if (station) {
name = station.name; // name = station.name;
} // }
} // }
return name; // return name;
}, // },
'code': item => { // 'code': item => {
return item.code; // return item.code;
} // }
} // }
}; // };
mapProps['switchList'] = { // mapProps['switchList'] = {
filter: item => { return true; }, // filter: item => { return true; },
propList: { // propList: {
'name': item =>{ // 'name': item =>{
return item.name; // return item.name;
}, // },
'code': item => { // 'code': item => {
return item.code; // return item.code;
} // }
} // }
}; // };
mapProps['signalList'] = { // mapProps['signalList'] = {
filter: item => { return true; }, // filter: item => { return true; },
propList: { // propList: {
'name': item =>{ // 'name': item =>{
return item.name; // return item.name;
}, // },
'code': item => { // 'code': item => {
return item.code; // return item.code;
} // }
} // }
}; // };
mapProps['sectionList'] = { // mapProps['sectionList'] = {
filter: item => { return item.type == '01'; }, // filter: item => { return item.type == '01'; },
propList: { // propList: {
'name': (item, devices) =>{ // 'name': (item, devices) =>{
let name = item.name; // let name = item.name;
if (item.isSwitchSection) { // if (item.isSwitchSection) {
const swchList = devices['switchList']; // const swchList = devices['switchList'];
const swch = swchList.find(elem => { return item.relSwitchCode == elem.code; }); // const swch = swchList.find(elem => { return item.relSwitchCode == elem.code; });
if (swch) { // if (swch) {
if (item.code == swch.sectionACode) { // if (item.code == swch.sectionACode) {
name = `${name} (${swch.name}-A)`; // name = `${name} (${swch.name}-A)`;
} else if (item.code == swch.sectionBCode) { // } else if (item.code == swch.sectionBCode) {
name = `${name} (${swch.name}-B)`; // name = `${name} (${swch.name}-B)`;
} else if (item.code == swch.sectionCCode) { // } else if (item.code == swch.sectionCCode) {
name = `${name} (${swch.name}-C)`; // name = `${name} (${swch.name}-C)`;
} // }
} // }
} // }
return name; // return name;
}, // },
'code': item => { // 'code': item => {
return item.code; // return item.code;
} // }
} // }
}; // };
return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
const result = { // const result = {
base: [] // base: []
}; // };
const obj = {}; // const obj = {};
const list = ['graphData', 'logicData']; // const list = ['graphData', 'logicData'];
for (const i in data) { // for (const i in data) {
if (list.includes(i)) { // if (list.includes(i)) {
for (const v in data[i]) { // for (const v in data[i]) {
if (data[i][v].length) { // if (data[i][v].length) {
if (mapProps[v]) { // if (mapProps[v]) {
const list = []; // const list = [];
data[i][v].forEach(device => { // data[i][v].forEach(device => {
if (mapProps[v].filter(device)) { // if (mapProps[v].filter(device)) {
const obj = {}; // const obj = {};
Object.keys(mapProps[v].propList || []).forEach(key => { // Object.keys(mapProps[v].propList || []).forEach(key => {
obj[key] = mapProps[v].propList[key](device, data[i]); // obj[key] = mapProps[v].propList[key](device, data[i]);
}); // });
list.push(obj); // list.push(obj);
} // }
}); // });
result[v] = list; // result[v] = list;
} // }
} // }
} // }
} else if (data[i] instanceof Object || typeof data[i] != 'object') { // } else if (data[i] instanceof Object || typeof data[i] != 'object') {
obj[i] = data[i]; // obj[i] = data[i];
} else if (data[i] instanceof Array) { // } else if (data[i] instanceof Array) {
if (data[i].length) { // if (data[i].length) {
obj[i] = [...data[i]]; // obj[i] = [...data[i]];
} // }
} // }
} // }
result.base.push(obj); // result.base.push(obj);
resolve(result); // resolve(result);
}); // });
} // }
} }
}; };
</script> </script>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.