This commit is contained in:
lVAL 2020-11-10 18:25:29 +08:00
commit 9b4039daab
48 changed files with 808 additions and 641 deletions

View File

@ -4,18 +4,18 @@
export function traverseLineElements(currentType, elementTypeList, model, style, obj) { export function traverseLineElements(currentType, elementTypeList, model, style, obj) {
const currentTypeList = currentType.elemnetType; const currentTypeList = currentType.elemnetType;
currentTypeList.forEach(element => { currentTypeList.forEach(element => {
const ClassName = elementTypeList[element]; const ClassName = elementTypeList[element];
if (ClassName) { if (ClassName) {
obj[element] = new ClassName({ obj[element] = new ClassName({
zlevel: model.zlevel, zlevel: model.zlevel,
z: 1 + currentType[element].z, z: 1 + currentType[element].z,
style: style, style: style,
modelData:model modelData:model
}); });
obj.add(obj[element]); obj.add(obj[element]);
} else { } else {
console.error(`not find class name: ${ClassName}`); console.error(`not find class name: ${ClassName}`);
} }
}); });
} }
// 遍历后端返回的状态控制的绘图 // 遍历后端返回的状态控制的绘图

View File

@ -151,10 +151,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -132,10 +132,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -129,10 +129,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -1,39 +1,79 @@
<template> <template>
<el-dialog v-dialogDrag :class="popClass" :title="title" :visible.sync="show" width="350px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false"> <div v-dialogDrag>
<el-row class="header"> <!-- <el-dialog v-dialogDrag :class="popClass" :title="title" :visible.sync="show" width="350px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false"> -->
<el-col :span="11"><span>设备:</span></el-col> <div
<el-col :span="11" :offset="2"><span>故障类型:</span></el-col> v-show="show"
</el-row> class="iscs_fuzhou-01__systerm route-detail el-dialog"
<el-row> >
<el-form ref="form" :model="form" :rules="rules"> <div class="el-dialog__header">
<el-col :span="11"> <span class="el-dialog__title">{{ title }}</span>
<el-form-item> <button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="doClose">
<el-input v-model="deviceName" size="small" style="height: 32px;line-height: 32px;" disabled /> <i class="el-dialog__close el-icon el-icon-close" />
</el-form-item> </button>
</el-col> </div>
<el-col :span="11" :offset="2"> <div class="el-dialog__body">
<el-form-item prop="faultType"> <template v-if="judge">
<el-select v-model="form.faultType" size="small" style="height: 32px;line-height: 32px;" placeholder="请选择"> <el-row>
<el-option <el-form ref="form" :model="formModel" :rules="rules">
v-for="item in faultList" <el-col :span="24">
:key="item.value" <el-form-item prop="targetDeviceCode" label="目的地:">
:label="item.label" <el-select v-model="formModel.targetDeviceCode" size="small" style="width: 165px;height: 32px;line-height: 32px;" placeholder="请选择">
:value="item.value" <el-option
/> v-for="item in selectedList"
</el-select> :key="item.code"
</el-form-item> :label="item.name"
</el-col> :value="item.code"
</el-form> />
</el-row> </el-select>
<el-row justify="center" class="button-group"> <el-button
<el-col :span="10" :offset="2"> :type="field == 'selectedCode' ? 'danger' : 'primary'"
<el-button :id="domIdConfirm" type="primary" :loading="loading" @click="commit">确定</el-button> size="small"
</el-col> @click="hover('selectedCode')"
<el-col :span="8" :offset="4"> >激活</el-button>
<el-button :id="domIdCancel" @click="cancel">取消</el-button> </el-form-item>
</el-col> </el-col>
</el-row> </el-form>
</el-dialog> </el-row>
</template>
<template v-else>
<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-form ref="form" :model="form" :rules="rules">
<el-col :span="11">
<el-form-item>
<el-input v-model="deviceName" size="small" style="height: 32px;line-height: 32px;" disabled />
</el-form-item>
</el-col>
<el-col :span="11" :offset="2">
<el-form-item prop="faultType">
<el-select v-model="form.faultType" size="small" style="height: 32px;line-height: 32px;" placeholder="请选择">
<el-option
v-for="item in faultList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-form>
</el-row>
</template>
<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>
</div>
</div>
<!-- </el-dialog> -->
</div>
</template> </template>
<script> <script>
@ -41,6 +81,7 @@ import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler'; import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config'; import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
import { menuOperate } from '@/jmapNew/theme/components/utils/menuOperate'; import { menuOperate } from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default { export default {
name: 'SwitchControl', name: 'SwitchControl',
@ -60,9 +101,15 @@ export default {
stationName: '', stationName: '',
switchName: '', switchName: '',
activeShow: false, activeShow: false,
judge: false,
deviceName: '', deviceName: '',
faultList: [], faultList: [],
form: { faultType: ''}, form: { faultType: ''},
formModel: {
targetDeviceCode: ''
},
groupNumber: '',
field: '',
rules: { rules: {
faultType: [ faultType: [
{ required: true, message: '请选择故障类型', trigger: 'change'} { required: true, message: '请选择故障类型', trigger: 'change'}
@ -71,6 +118,19 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters('map', [
'sectionList',
'trainList'
]),
selectedList() {
let list = [];
let sectionList = [];
if (this.sectionList && this.sectionList.length) {
sectionList = this.sectionList.filter(elem => { return (elem.standTrack || elem.reentryTrack || elem.transferTrack); });
}
list = [...sectionList, ...this.trainList];
return list;
},
show() { show() {
return this.dialogShow && !this.$store.state.menuOperation.break; return this.dialogShow && !this.$store.state.menuOperation.break;
}, },
@ -85,6 +145,8 @@ export default {
return '设置故障'; return '设置故障';
} else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) { } else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) {
return '取消故障'; return '取消故障';
} else if (this.operation == OperationEvent.MixinCommand.collocation.menu.operation) {
return '设置托管';
} }
return ''; return '';
} }
@ -94,6 +156,14 @@ export default {
if (this.dialogShow && this.popClass === 'ningbo-01__systerm') { if (this.dialogShow && this.popClass === 'ningbo-01__systerm') {
this.commit(); this.commit();
} }
},
'$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected;
if (device && device.code && this.judge && this.field) {
if (device._type == 'Section' || device._type == 'Train') {
this.deviceSelect(device);
}
}
} }
}, },
mounted() { mounted() {
@ -102,7 +172,10 @@ export default {
}); });
}, },
methods: { methods: {
doShow(operate, selected) { hover(field) {
this.field = field == this.field ? '' : field;
},
doShow(operate, selected, judge) {
if (!this.dialogShow) { if (!this.dialogShow) {
this.switchName = ''; this.switchName = '';
this.stationName = ''; this.stationName = '';
@ -128,6 +201,11 @@ export default {
if (this.faultList && this.faultList.length) { if (this.faultList && this.faultList.length) {
this.form.faultType = this.faultList[0].value; this.form.faultType = this.faultList[0].value;
} }
this.judge = false;
if (judge) {
this.judge = judge;
this.groupNumber = selected.groupNumber;
}
} }
if (selected._type) { if (selected._type) {
this.dialogShow = true; this.dialogShow = true;
@ -150,6 +228,8 @@ export default {
this.sendInstructions(); this.sendInstructions();
} else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) { } else if (this.operation == OperationEvent.MixinCommand.cancelStoppage.menu.operation) {
this.cancelCommand(); this.cancelCommand();
} else if (this.operation == OperationEvent.MixinCommand.collocation.menu.operation) {
this.handleCollocation();
} }
} }
}); });
@ -176,6 +256,18 @@ export default {
}; };
this.sendCommand(setp); this.sendCommand(setp);
}, },
handleCollocation() { //
const setp = {
over: true,
operation: menuOperate.Common.collocation.operation,
cmdType: menuOperate.Common.collocation.cmdType,
param: {
groupNumber: this.groupNumber,
targetDeviceCode: this.formModel.targetDeviceCode
}
};
this.sendCommand(setp);
},
sendCommand(setp) { sendCommand(setp) {
this.loading = true; this.loading = true;
this.$store.dispatch('training/nextNew', setp).then(({ valid }) => { this.$store.dispatch('training/nextNew', setp).then(({ valid }) => {
@ -206,6 +298,15 @@ export default {
}).catch(() => { }).catch(() => {
this.doClose(); this.doClose();
}); });
},
deviceSelect(em) {
if (this.field == 'selectedCode' && em._type == 'Section') {
this.formModel.targetDeviceCode = em.code;
this.field = '';
} else if (this.field == 'selectedCode' && em._type == 'Train') {
this.formModel.targetDeviceCode = em.code;
this.field = '';
}
} }
} }
}; };
@ -216,3 +317,44 @@ export default {
margin-top: 5px; margin-top: 5px;
} }
</style> </style>
<style rel="stylesheet/scss" lang="scss" scoped>
.route-detail{
position: absolute;
left: calc(50% - 175px);
margin-top: 15vh;
width: 350px;
z-index: 2000;
box-sizing: border-box;
background: rgba(100, 100, 100, 0.3);
border: 2px solid rgba(144, 144, 144, 0.8);
border-radius: 6px;
color: #000;
font-size: 14px;
.el-dialog__header{
padding: 0px 8px;
height: 26px;
.el-dialog__title{
color: #fff;
}
.el-dialog__headerbtn{
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 4px;
right: 12px;
line-height: 16px;
color: #fff;
.el-icon{
color: #fff;
}
}
}
.el-dialog__body{
background: #fff;
margin: 5px;
margin-top: 0;
padding: 10px;
}
}
</style>

View File

@ -0,0 +1,279 @@
<template>
<div v-dialogDrag>
<!-- <el-dialog v-dialogDrag :class="popClass" :title="title" :visible.sync="show" width="350px" :before-close="doClose" :z-index="2000" :modal="false" :close-on-click-modal="false"> -->
<div
v-show="show"
class="iscs_fuzhou-01__systerm route-detail el-dialog"
>
<div class="el-dialog__header">
<span class="el-dialog__title">{{ title }}</span>
<button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="doClose">
<i class="el-dialog__close el-icon el-icon-close" />
</button>
</div>
<div class="el-dialog__body">
<el-row>
<el-form ref="form" :model="formModel" :rules="rules">
<el-col :span="24">
<el-form-item prop="groupNumber1" label="主动车:">
<el-select v-model="formModel.groupNumber1" size="small" style="width: 165px;height: 32px;line-height: 32px;" placeholder="请选择">
<el-option
v-for="item in selectedList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-button
:type="field == 'selectedCode1' ? 'danger' : 'primary'"
size="small"
@click="hover('selectedCode1')"
>激活</el-button>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item prop="groupNumber2" label="被动车:">
<el-select v-model="formModel.groupNumber2" size="small" style="width: 165px;height: 32px;line-height: 32px;" placeholder="请选择">
<el-option
v-for="item in selectedList"
:key="item.code"
:label="item.name"
:value="item.code"
/>
</el-select>
<el-button
:type="field == 'selectedCode2' ? 'danger' : 'primary'"
size="small"
@click="hover('selectedCode2')"
>激活</el-button>
</el-form-item>
</el-col>
</el-form>
</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>
</div>
</div>
<!-- </el-dialog> -->
</div>
</template>
<script>
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
import OperationHandler from '@/scripts/cmdPlugin/OperationHandler';
// import { deviceFaultType, deviceType} from '@/scripts/cmdPlugin/Config';
import { menuOperate } from '@/jmapNew/theme/components/utils/menuOperate';
import { mapGetters } from 'vuex';
export default {
name: 'SwitchControl',
props: {
popClass: {
type: String,
default() {
return '';
}
}
},
data() {
return {
dialogShow: false,
loading: false,
operation: '',
formModel: {
groupNumber1: '',
groupNumber2: ''
},
groupNumber: '',
field: '',
rules: {
faultType: [
{ required: true, message: '请选择故障类型', trigger: 'change'}
]
}
};
},
computed: {
...mapGetters('map', [
'trainList'
]),
selectedList() {
let list = [];
list = [...this.trainList];
return list;
},
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() {
if (this.operation == OperationEvent.MixinCommand.setLink.menu.operation) {
return '设置连挂';
}
return '';
}
},
watch:{
'$store.state.map.keyboardEnterCount': function (val) {
if (this.dialogShow && this.popClass === 'ningbo-01__systerm') {
this.commit();
}
},
'$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected;
if (device && device.code && this.field) {
if (device._type == 'Train') {
this.deviceSelect(device);
}
}
}
},
mounted() {
this.$nextTick(() => {
this.$store.dispatch('training/tipReload');
});
},
methods: {
hover(field) {
this.field = field == this.field ? '' : field;
},
doShow(operate, selected) {
if (!this.dialogShow) {
this.operation = operate.operation;
this.cmdType = operate.cmdType;
}
if (selected._type) {
this.dialogShow = true;
this.$nextTick(function () {
this.$store.dispatch('training/emitTipFresh');
});
}
},
doClose() {
this.loading = false;
this.dialogShow = false;
this.$refs.form.resetFields();
this.$store.dispatch('training/emitTipFresh');
},
commit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.operation == OperationEvent.MixinCommand.setLink.menu.operation) {
this.handleLink();
}
}
});
},
handleLink() { //
const setp = {
over: true,
operation: menuOperate.Common.setLink.operation,
cmdType: menuOperate.Common.setLink.cmdType,
param: {
groupNumber1: this.formModel.groupNumber1,
groupNumber2: this.formModel.groupNumber2
}
};
this.sendCommand(setp);
},
sendCommand(setp) {
this.loading = true;
this.$store.dispatch('training/nextNew', setp).then(({ valid }) => {
this.loading = false;
if (valid) {
this.$store.dispatch('menuOperation/handleBreakFlag', { break: true });
this.doClose();
} else {
this.doClose();
this.$messageBox('设置或取消故障操作失败!');
}
}).catch((error) => {
this.loading = false;
this.doClose();
this.$messageBox(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();
});
},
deviceSelect(em) {
if (this.field == 'selectedCode1' && em._type == 'Train') {
this.formModel.groupNumber1 = em.code;
this.field = '';
} else if (this.field == 'selectedCode2' && em._type == 'Train') {
this.formModel.groupNumber2 = em.code;
this.field = '';
}
}
}
};
</script>
<style>
.el-select-dropdown.el-popper{
margin-top: 5px;
}
</style>
<style rel="stylesheet/scss" lang="scss" scoped>
.route-detail{
position: absolute;
left: calc(50% - 175px);
margin-top: 15vh;
width: 350px;
z-index: 2000;
box-sizing: border-box;
background: rgba(100, 100, 100, 0.3);
border: 2px solid rgba(144, 144, 144, 0.8);
border-radius: 6px;
color: #000;
font-size: 14px;
.el-dialog__header{
padding: 0px 8px;
height: 26px;
.el-dialog__title{
color: #fff;
}
.el-dialog__headerbtn{
background: linear-gradient(#CD98A0, #C27D6E, #B63022, #C68770);
border: 1px solid #fff;
border-radius: 4px;
top: 4px;
right: 12px;
line-height: 16px;
color: #fff;
.el-icon{
color: #fff;
}
}
}
.el-dialog__body{
background: #fff;
margin: 5px;
margin-top: 0;
padding: 10px;
}
}
</style>

View File

@ -66,7 +66,7 @@ export const menuOperate = {
cmdType: CMD.Section.CMD_SECTION_DETAILS cmdType: CMD.Section.CMD_SECTION_DETAILS
}, },
loadSpareTrain: { loadSpareTrain: {
// 添加备用车 // 添加备用车
operation: OperationEvent.Section.loadSpareTrain.menu.operation, operation: OperationEvent.Section.loadSpareTrain.menu.operation,
cmdType: CMD.Section.CMD_TRAIN_LOAD_SPARE_TRAIN cmdType: CMD.Section.CMD_TRAIN_LOAD_SPARE_TRAIN
} }
@ -370,6 +370,16 @@ export const menuOperate = {
cancelFault: { cancelFault: {
operation: OperationEvent.MixinCommand.cancelStoppage.menu.operation, operation: OperationEvent.MixinCommand.cancelStoppage.menu.operation,
cmdType: CMD.Fault.CMD_CANCEL_FAULT cmdType: CMD.Fault.CMD_CANCEL_FAULT
},
// 设置托管
collocation: {
operation: OperationEvent.MixinCommand.collocation.menu.operation,
cmdType: CMD.Train.CMD_TRAIN_TRUST
},
// 设置连挂
setLink: {
operation: OperationEvent.MixinCommand.setLink.menu.operation,
cmdType: CMD.Train.CMD_TRAIN_LINK
} }
}, },
Station:{ Station:{

View File

@ -164,9 +164,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -199,10 +199,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -107,10 +107,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -169,9 +169,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -151,9 +151,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -129,6 +129,18 @@ export default {
handler: this.loadSpare, handler: this.loadSpare,
cmdType: CMD.Section.CMD_TRAIN_LOAD_SPARE_TRAIN cmdType: CMD.Section.CMD_TRAIN_LOAD_SPARE_TRAIN
} }
],
faultList: [
{
label: '设置故障',
handler: this.setStoppage,
cmdType: CMD.Fault.CMD_SET_FAULT
},
{
label: '取消故障',
handler: this.cancelStoppage,
cmdType: CMD.Fault.CMD_CANCEL_FAULT
}
] ]
}; };
}, },
@ -169,11 +181,18 @@ export default {
}, },
initMenu() { initMenu() {
// //
this.menu = MenuContextHandler.covert(this.menuNormal); if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode == OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
if (this.operatemode == OperateMode.FAULT && this.selected.type == '04') {
this.menu = this.faultList;
}
}, },
doShow(point) { doShow(point) {
this.clickEvent(); this.clickEvent();

View File

@ -11,6 +11,7 @@
<trainSetWorkATP ref="trainSetWorkATP" /> <trainSetWorkATP ref="trainSetWorkATP" />
<SpeedLimit ref="speedLimit" pop-class="ningbo-01__systerm" /> <SpeedLimit ref="speedLimit" pop-class="ningbo-01__systerm" />
<set-fault ref="setFault" pop-class="ningbo-01__systerm" /> <set-fault ref="setFault" pop-class="ningbo-01__systerm" />
<set-train-operation ref="setTrainOperation" pop-class="ningbo-01__systerm" />
</div> </div>
</template> </template>
@ -26,6 +27,7 @@ import TrainSetHead from './dialog/trainSetHead';
import TrainSetWork from './dialog/trainSetWork'; import TrainSetWork from './dialog/trainSetWork';
import trainSetWorkATP from './dialog/trainSetWorkATP'; import trainSetWorkATP from './dialog/trainSetWorkATP';
import SpeedLimit from '@/jmapNew/theme/components/menus/dialog/trainSpeedLimit'; import SpeedLimit from '@/jmapNew/theme/components/menus/dialog/trainSpeedLimit';
import SetTrainOperation from '@/jmapNew/theme/components/menus/dialog/setTrainOperation';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler'; import { OperationEvent } from '@/scripts/cmdPlugin/OperationHandler';
@ -47,7 +49,8 @@ export default {
TrainSetWork, TrainSetWork,
trainSetWorkATP, trainSetWorkATP,
SetFault, SetFault,
SpeedLimit SpeedLimit,
SetTrainOperation
}, },
props: { props: {
selected: { selected: {
@ -207,6 +210,14 @@ export default {
{ {
label: '取消故障', label: '取消故障',
handler: this.cancelStoppage handler: this.cancelStoppage
},
{
label: '托管',
handler: this.setCollocation
},
{
label: '连挂',
handler: this.setLink
} }
], ],
menuDirective: [ menuDirective: [
@ -321,6 +332,22 @@ export default {
} }
}); });
}, },
//
setCollocation() {
commitOperate(menuOperate.Common.collocation, { code: this.selected.code }, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.setFault.doShow(menuOperate.Common.collocation, this.selected, true);
}
});
},
//
setLink() {
commitOperate(menuOperate.Common.setLink, { code: this.selected.code }, 0).then(({valid, operate})=>{
if (valid) {
this.$refs.setTrainOperation.doShow(menuOperate.Common.setLink, this.selected, true);
}
});
},
nextStation() { nextStation() {
// commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{ // commitOperate(menuOperate.Train.nextStation, { groupNumber: this.selected.code }, 3).then(({valid, operate})=>{
// }).catch((error) => { // }).catch((error) => {

View File

@ -177,11 +177,13 @@ export default {
}, },
initMenu() { initMenu() {
// //
if (this.selected.type != '04') {
this.menu = MenuContextHandler.covert(this.menuNormal); this.menu = MenuContextHandler.covert(this.menuNormal);
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -182,9 +182,13 @@ export default {
initMenu() { initMenu() {
// //
// this.menu = MenuContextHandler.covert(this.menuNormal); // this.menu = MenuContextHandler.covert(this.menuNormal);
this.menu = this.menuNormal.Center; if (this.selected.type != '04') {
this.menu = this.menuNormal.Center;
} else {
this.menu = [];
}
// //
if (this.operatemode === OperateMode.FAULT) { if (this.operatemode === OperateMode.FAULT && this.selected.type != '04') {
this.menu = this.menuForce; this.menu = this.menuForce;
} }
}, },

View File

@ -94,12 +94,11 @@ export default {
{label: '观众', value: 'AUDIENCE', enLabel: 'Audience '}, {label: '观众', value: 'AUDIENCE', enLabel: 'Audience '},
{label: '司机', value: 'DRIVER', enLabel: 'Driver '}, {label: '司机', value: 'DRIVER', enLabel: 'Driver '},
{label: '通号', value: 'MAINTAINER', enLabel: 'Repairman '}, {label: '通号', value: 'MAINTAINER', enLabel: 'Repairman '},
{label: '车辆段调度', value: 'DEPOT_DISPATCHER', enLabel: 'Depot dispatcher '}, {label: '车辆段信号楼', value: 'DEPOT_DISPATCHER', enLabel: 'Depot dispatcher '},
{label: '电力调度', value: 'ELECTRIC_DISPATCHER', enLabel: 'Electric dispatcher'}, {label: '电力调度', value: 'ELECTRIC_DISPATCHER', enLabel: 'Electric dispatcher'},
{label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '}, {label: '行调', value: 'DISPATCHER', enLabel: 'Dispatcher '},
{label: '上级部门', value: 'PARENT_DEPARTMENT', enLabel: 'Parent department'}, {label: '上级部门', value: 'PARENT_DEPARTMENT', enLabel: 'Parent department'},
{label: '停车场信号楼', value: 'PARKING_LOT_SIGNAL_BUILDING', enLabel: 'Parking Signal Building'} {label: '停车场信号楼', value: 'PARKING_LOT_SIGNAL_BUILDING', enLabel: 'Parking Signal Building'}
], ],
SimulationType: [ SimulationType: [
{ label: '实训', value: 'Training'}, { label: '实训', value: 'Training'},

View File

@ -229,7 +229,9 @@ export default {
CMD_TRAIN_CANCEL_HOLD: {value:'Train_Cancel_Hold', label: '列车发车'}, CMD_TRAIN_CANCEL_HOLD: {value:'Train_Cancel_Hold', label: '列车发车'},
CMD_TRAIN_CHANGE_TRIP_NUMBER: {value:'Train_Change_Trip_Number', label: '更改列车车次'}, CMD_TRAIN_CHANGE_TRIP_NUMBER: {value:'Train_Change_Trip_Number', label: '更改列车车次'},
CMD_TRAIN_DELETE_SERVICE_NUMBER: {value:'Train_Delete_Service_Number', label: '删除车次号'}, CMD_TRAIN_DELETE_SERVICE_NUMBER: {value:'Train_Delete_Service_Number', label: '删除车次号'},
CMD_TRAIN_CHANGE_DESTINATION_CODE: {value:'Train_Change_Destination_Code', label: '更改目的地码'} CMD_TRAIN_CHANGE_DESTINATION_CODE: {value:'Train_Change_Destination_Code', label: '更改目的地码'},
CMD_TRAIN_TRUST: {value: 'Train_Trust', label: '设置托管'},
CMD_TRAIN_LINK: {value: 'Train_Link', label: '设置连挂'}
}, },
TrainWindow: { TrainWindow: {
/** 修改列车识别号 */ /** 修改列车识别号 */

View File

@ -32,6 +32,20 @@ class CommandHandle {
simulationRole: 'Center', simulationRole: 'Center',
controlMode: ['OperateCenterControl'], controlMode: ['OperateCenterControl'],
conditionList: [] conditionList: []
},
Train_Trust: {
operate: 'Train_Trust',
paramList:[{name: 'groupNumber'}, {name: 'targetDeviceCode'}],
simulationRole: 'Center',
controlMode: ['OperateCenterControl'],
conditionList: []
},
Train_Link: {
operate: 'Train_Link',
paramList:[{name: 'groupNumber1'}, {name: 'groupNumber2'}],
simulationRole: 'Center',
controlMode: ['OperateCenterControl'],
conditionList: []
} }
} }
}; };

View File

@ -38,8 +38,8 @@ export const deviceFaultType = {
Switch: [ Switch: [
{label: '失表', value: 'SPLIT'}, {label: '失表', value: 'SPLIT'},
{label: '定位失表', value: 'NORMAL_SPLIT'}, {label: '定位失表', value: 'NORMAL_SPLIT'},
{label: '反位失表', value: 'REVERSE_SPLIT'}, {label: '反位失表', value: 'REVERSE_SPLIT'}
{label: '道岔区段计轴故障', value: 'AXLE_FAULT'} // {label: '道岔区段计轴故障', value: 'AXLE_FAULT'}
], ],
StationStand: [ StationStand: [
{label: '屏蔽门无法关闭', value: 'PSD_CANNOT_BE_CLOSED'}, {label: '屏蔽门无法关闭', value: 'PSD_CANNOT_BE_CLOSED'},
@ -49,7 +49,8 @@ export const deviceFaultType = {
{label: 'zc故障', value: 'FAULT'} {label: 'zc故障', value: 'FAULT'}
], ],
Train: [ Train: [
{label: '通信异常', value: 'COMMUNICATION_ABNORMAL'} {label: '通信异常', value: 'COMMUNICATION_ABNORMAL'},
{label: '驾驶故障', value: 'DRIVE_FAULT'}
], ],
Power:[ Power:[
{label: '供电故障', value: 'FAULT'} {label: '供电故障', value: 'FAULT'}

View File

@ -2442,6 +2442,18 @@ export const OperationEvent = {
menu: { menu: {
operation: '2996' operation: '2996'
} }
},
// 设置托管
collocation: {
menu: {
operation: '2997'
}
},
// 设置连挂
setLink: {
menu: {
operation: '2999'
}
} }
} }

View File

@ -874,11 +874,10 @@ const map = {
let isExist = false; let isExist = false;
state.activeTrainList.forEach(elem => { state.activeTrainList.forEach(elem => {
if (elem == data.code) { if (elem == data.code) {
isExist = true;
if (data.dispose) { if (data.dispose) {
state.activeTrainList.splice(state.activeTrainList.indexOf(data.code), 1); state.activeTrainList.splice(state.activeTrainList.indexOf(data.code), 1);
state.activeTrainListChange += 1; state.activeTrainListChange += 1;
} else {
isExist = true;
} }
} }
}); });

View File

@ -22,36 +22,6 @@ const runPlan = {
}, },
draftStations: (state) => { draftStations: (state) => {
return state.draftStations || []; return state.draftStations || [];
},
convertPlanData: (state) => () => {
const data = { serviceNumberDataList: [] };
const serviceNumberList = Object.keys(state.editData).sort((a, b) => {
return state.editData[a].oldIndex - state.editData[b].oldIndex;
});
serviceNumberList.forEach(serviceNumber => {
const serviceObj = {
serviceNumber: serviceNumber,
tripNumberDataList: []
};
if (state.editData[serviceNumber].backup) {
serviceObj['backup'] = state.editData[serviceNumber].backup;
}
const trainMap = state.editData[serviceNumber].trainMap;
const tripNumberList = Object.keys(trainMap).sort((a, b) => {
return trainMap[a].oldIndex - trainMap[b].oldIndex;
});
tripNumberList.forEach(tripNumber => {
serviceObj.tripNumberDataList.push(trainMap[tripNumber]);
});
data.serviceNumberDataList.push(serviceObj);
});
return data;
} }
}, },
mutations: { mutations: {
@ -77,7 +47,6 @@ const runPlan = {
const trainList = service.tripNumberDataList; const trainList = service.tripNumberDataList;
state.initialPlanData[service.serviceNumber] = { oldIndex: i, serviceNumber: service.serviceNumber, backup: service.backup, trainMap: {} }; state.initialPlanData[service.serviceNumber] = { oldIndex: i, serviceNumber: service.serviceNumber, backup: service.backup, trainMap: {} };
trainList.forEach((train, j) => { trainList.forEach((train, j) => {
// ${train.directionCode}
state.initialPlanData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList }; state.initialPlanData[service.serviceNumber].trainMap[`${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList };
}); });
}); });

View File

@ -103,7 +103,7 @@ export default {
}; };
}, },
created() { created() {
getScriptPageListOnlineNew().then(response=>{ getScriptPageListOnlineNew({pageSize:999, pageNum:1}).then(response=>{
this.scriptList = response.data.list.map(elem => { return { value: parseInt(elem.id), label: elem.name }; }); this.scriptList = response.data.list.map(elem => { return { value: parseInt(elem.id), label: elem.name }; });
// this.queryForm.queryObject.scriptId.config.data = this.scriptList; // this.queryForm.queryObject.scriptId.config.data = this.scriptList;
}); });

View File

@ -4,17 +4,6 @@
v-show="show" v-show="show"
class="iscs_fuzhou-01__systerm route-detail el-dialog" class="iscs_fuzhou-01__systerm route-detail el-dialog"
> >
<!-- <el-dialog
v-dialogDrag
class="iscs_fuzhou-01__systerm route-detail"
title="报警浏览"
:visible.sync="show"
width="500px"
:before-close="doClose"
:z-index="2000"
:modal="false"
:close-on-click-modal="false"
> -->
<div class="el-dialog__header"> <div class="el-dialog__header">
<span class="el-dialog__title">报警浏览</span> <span class="el-dialog__title">报警浏览</span>
<button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="doClose"> <button type="button" aria-label="Close" class="el-dialog__headerbtn" @click="doClose">
@ -34,7 +23,6 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<!-- </el-dialog> -->
</div> </div>
</div> </div>
</template> </template>
@ -80,7 +68,6 @@ export default {
<style rel="stylesheet/scss" lang="scss" scoped> <style rel="stylesheet/scss" lang="scss" scoped>
.route-detail{ .route-detail{
position: absolute; position: absolute;
// top: 300px;
left: calc(50% - 250px); left: calc(50% - 250px);
margin-top: 15vh; margin-top: 15vh;
width: 500px; width: 500px;

View File

@ -394,8 +394,8 @@ export default {
electricDispatcherList[item.id] = this.memberData[item.id]; electricDispatcherList[item.id] = this.memberData[item.id];
break; break;
case 'DEPOT_DISPATCHER': case 'DEPOT_DISPATCHER':
this.memberData[item.id].label = '车辆段'; this.memberData[item.id].label = '车辆段信号楼';
this.memberData[item.id].labelName = '车辆段' + (item.name || ''); this.memberData[item.id].labelName = '车辆段信号楼' + (item.name || '');
depotDispatcherList[item.id] = this.memberData[item.id]; depotDispatcherList[item.id] = this.memberData[item.id];
break; break;
case 'STATION_SUPERVISOR': case 'STATION_SUPERVISOR':
@ -451,7 +451,7 @@ export default {
type: 'role', type: 'role',
children: maintainerList children: maintainerList
}, { }, {
label: '车辆段', label: '车辆段信号楼',
id: 'depotDispatcher', id: 'depotDispatcher',
type: 'role', type: 'role',
children: depotDispatcherList children: depotDispatcherList

View File

@ -188,7 +188,7 @@ export default {
}, },
'$store.state.menuOperation.selectedCount':function(em) { '$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected; const device = this.$store.state.menuOperation.selected;
if (device.code) { if (device && device.code) {
this.deviceSelect(device); this.deviceSelect(device);
} }
} }
@ -232,8 +232,8 @@ export default {
return name; return name;
}, },
formatTriggerStatus(condition) { formatTriggerStatus(condition) {
if (!condition.triggerDeviceType) { if (!condition.triggerDeviceType) {
return ''; return '';
} }
const faultStatus = FaultStatusEnum[condition.triggerDeviceType]; const faultStatus = FaultStatusEnum[condition.triggerDeviceType];
return faultStatus[condition.triggerDeviceStatus]; return faultStatus[condition.triggerDeviceStatus];
@ -248,7 +248,7 @@ export default {
handleDelete(row) { handleDelete(row) {
cancelFailureModeNew(row.id, this.$route.query.group).then(resp => { cancelFailureModeNew(row.id, this.$route.query.group).then(resp => {
this.getSimulationFaultRules(); this.getSimulationFaultRules();
}).catch(error => { }).catch(() => {
this.$message.error('取消故障失败!'); this.$message.error('取消故障失败!');
}); });
}, },

View File

@ -1,5 +1,5 @@
<template> <template>
<el-dialog v-dialogDrag :title="title" :visible.sync="show" width="550px" :before-close="doClose" modal-append-to-body> <el-dialog v-dialogDrag :title="title" :visible.sync="show" width="550px" :before-close="doClose">
<el-form ref="form" label-width="120px" :model="formModel" :rules="rules"> <el-form ref="form" label-width="120px" :model="formModel" :rules="rules">
<el-form-item :label="$t('display.setTime.systemTime')" prop="initTime"> <el-form-item :label="$t('display.setTime.systemTime')" prop="initTime">
<el-time-picker <el-time-picker

View File

@ -1,5 +1,4 @@
<template> <template>
<!-- {} -->
<div> <div>
<div v-if="isAllShow" class="display_top_draft" :style="allStyle"> <div v-if="isAllShow" class="display_top_draft" :style="allStyle">
<div class="btn_hover" @click="menuClick">菜单</div> <div class="btn_hover" @click="menuClick">菜单</div>

View File

@ -1,15 +1,10 @@
<template> <template>
<div> <div>
<demon-chat ref="chatbox" :group="group" :user-role="userRole" :offset="offset" /> <demon-chat ref="chatbox" :group="group" :user-role="userRole" :offset="offset" />
<div class="display-card" :style="{top: offset+'px'}">
<el-row>
<span v-if="countTime" class="display-score">{{ $t('display.demon.trialTime') }} {{ countTime }}</span>
</el-row>
</div>
<demon-menu <demon-menu
ref="demonMenu" ref="demonMenu"
:is-all-show="!dataError" :is-all-show="!dataError"
:jl3dmodel-show="isShow3dmodel && !isShowScheduling" :jl3dmodel-show="false"
:jl3dname-show="!isShowScheduling&&!isDrive" :jl3dname-show="!isShowScheduling&&!isDrive"
:cctv-show="!isShowScheduling" :cctv-show="!isShowScheduling"
:schedule-load-show="isShowScheduling && !runing" :schedule-load-show="isShowScheduling && !runing"
@ -92,14 +87,14 @@ import TheoryExamSelect from './theoryExamSelect';
import TheoryExam from './theoryExam'; import TheoryExam from './theoryExam';
// import TheoryQuiz from './quiz'; // import TheoryQuiz from './quiz';
// import ThroryResult from './result'; // import ThroryResult from './result';
import { getGoodsTryUse } from '@/api/management/goods'; // import { getGoodsTryUse } from '@/api/management/goods';
import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@/api/simulation'; import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@/api/simulation';
import { PermissionType } from '@/scripts/ConstDic'; // import { PermissionType } from '@/scripts/ConstDic';
import { getCountTime } from '@/utils/index'; // import { getCountTime } from '@/utils/index';
import { prefixIntrger } from '@/utils/date'; import { prefixIntrger } from '@/utils/date';
import { ScriptMode, TrainingMode } from '@/scripts/ConstDic'; import { ScriptMode, TrainingMode } from '@/scripts/ConstDic';
import SelectRole from '@/views/newMap/displayNew/scriptDisplay/component/selectRole'; import SelectRole from '@/views/newMap/displayNew/scriptDisplay/component/selectRole';
import { setGoodsTryUse } from '@/api/management/goods'; // import { setGoodsTryUse } from '@/api/management/goods';
import {competitionPracticalSceneStart, competitionPracticalSceneExit, competitionPracticalSceneFinish, getEmptyOperationalStatistics} from '@/api/competition'; import {competitionPracticalSceneStart, competitionPracticalSceneExit, competitionPracticalSceneFinish, getEmptyOperationalStatistics} from '@/api/competition';
import { launchFullscreen } from '@/utils/screen'; import { launchFullscreen } from '@/utils/screen';
@ -149,34 +144,34 @@ export default {
}, },
data() { data() {
return { return {
tryTime: 0, // // tryTime: 0, //
timeNow: 0, // // timeNow: 0, //
time: null, // // time: null, //
countTime: 0, // // countTime: 0, //
remainingTime: 0, // remainingTime: 0,
userRole:'AUDIENCE', userRole: 'AUDIENCE',
goodsId: this.$route.query.goodsId, // goodsId: this.$route.query.goodsId,
try: this.$route.query.try, // // try: this.$route.query.try, //
training: { // training: {
id: '', // id: '',
name: '', // name: '',
remarks: '' // remarks: ''
}, // },
isScriptLoad:false, isScriptLoad: false,
isScriptRun:false, isScriptRun: false,
scriptMode: ScriptMode.TEACH, scriptMode: ScriptMode.TEACH,
mapLocation:{}, mapLocation: {},
playerList:[], playerList: [],
currentPlayList:[], currentPlayList: [],
// formatUsedTime:'', // formatUsedTime:'',
formatScore:0, // formatScore: 0,
jl3dpassflow:this.$t('display.demon.passengerflow'), // jl3dpassflow: this.$t('display.demon.passengerflow'),
jl3dname: this.$t('display.demon.threeDimensionalView'), // jl3dname: this.$t('display.demon.threeDimensionalView'),
jl3dstation: this.$t('display.demon.threeDimensionalStation'), // jl3dstation: this.$t('display.demon.threeDimensionalStation'),
jl3dmodel: this.$t('display.demon.deviceView'), // jl3dmodel: this.$t('display.demon.deviceView'),
isShow3dmodel :false, // isShow3dmodel: false,
isGoback: false, isGoback: false,
runing:false, runing: false,
prdTypeMap: { prdTypeMap: {
'01': '01', // => '01': '01', // =>
'02': '02', // => '02': '02', // =>
@ -262,10 +257,10 @@ export default {
} }
}, },
beforeDestroy() { beforeDestroy() {
if (this.time) { // if (this.time) {
this.setTryTime(); // this.setTryTime();
clearTimeout(this.time); // clearTimeout(this.time);
} // }
this.$store.dispatch('scriptRecord/updateSimulationPause', false); this.$store.dispatch('scriptRecord/updateSimulationPause', false);
this.$store.dispatch('map/resetActiveTrainList', true); this.$store.dispatch('map/resetActiveTrainList', true);
}, },
@ -292,28 +287,28 @@ export default {
const ss = prefixIntrger(initTime.getSeconds(), 2); const ss = prefixIntrger(initTime.getSeconds(), 2);
return `${hh}:${mm}:${ss}`; return `${hh}:${mm}:${ss}`;
}, },
loadInitData() { // loadInitData() {
const data = { // const data = {
mapId: this.$route.query.mapId, // mapId: this.$route.query.mapId,
prdType: this.$route.query.prdType, // prdType: this.$route.query.prdType,
permissionType: PermissionType.SIMULATION // permissionType: PermissionType.SIMULATION
}; // };
getGoodsTryUse(data).then(res => { // getGoodsTryUse(data).then(res => {
this.remainingTime = res.data.tryTime; // this.remainingTime = res.data.tryTime;
this.timeNow = Date.parse(new Date()) / 1000 + this.remainingTime; // this.timeNow = Date.parse(new Date()) / 1000 + this.remainingTime;
if (this.try) { // if (this.try) {
this.time = setInterval(() => { // this.time = setInterval(() => {
this.tryTime += 1; // this.tryTime += 1;
this.countTime = getCountTime(this.timeNow); // this.countTime = getCountTime(this.timeNow);
if (this.countTime == -1) { // if (this.countTime == -1) {
this.back(); // this.back();
} // }
}, 1000); // }, 1000);
} // }
}).catch(() => { // }).catch(() => {
this.$messageBox(this.$t('display.demon.getTimeFail')); // this.$messageBox(this.$t('display.demon.getTimeFail'));
}); // });
}, // },
selectBeginTime() { selectBeginTime() {
this.$refs.setTime.doShow(); this.$refs.setTime.doShow();
}, },
@ -595,15 +590,15 @@ export default {
this.$message.error('结束仿真失败!'); this.$message.error('结束仿真失败!');
}); });
}, },
setTryTime() { // setTryTime() {
if (this.try) { // if (this.try) {
const data = { time: this.tryTime, goodsId: this.goodsId }; // const data = { time: this.tryTime, goodsId: this.goodsId };
if (data.goodsId) { // if (data.goodsId) {
setGoodsTryUse(data); // setGoodsTryUse(data);
} // }
} // }
}, // },
fieldPractice() { fieldPractice() {
this.$refs.sceneList.doShow(); this.$refs.sceneList.doShow();
}, },
@ -630,18 +625,6 @@ export default {
position: absolute; position: absolute;
left: 5px; left: 5px;
} }
.display-card {
z-index: 9;
display: inline-block;
position: absolute;
top: 17px;
left: 160px;
height: 32px;
}
.display-card .el-row {
line-height: 32px !important;
}
.display-score { .display-score {
background-color: black; background-color: black;

View File

@ -185,6 +185,10 @@ export default {
member.label = '通号' + (member.name ? member.name : ''); member.label = '通号' + (member.name ? member.name : '');
break; break;
} }
case 'DEPOT_DISPATCHER': {
member.label = '车辆段信号楼' + (member.name ? member.name : '');
break;
}
case 'PARENT_DEPARTMENT': { case 'PARENT_DEPARTMENT': {
member.label = '上级部门' + (member.name ? member.name : ''); member.label = '上级部门' + (member.name ? member.name : '');
break; break;

View File

@ -146,7 +146,6 @@ export default {
cancelButtonText: this.$t('global.cancel'), cancelButtonText: this.$t('global.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.$emit('quit');
if (this.$route.query.noPreLogout) { if (this.$route.query.noPreLogout) {
this.$router.replace({path: `/device/exam/${this.$route.query.examId}`, query: {mapId: this.$route.query.mapId, noPreLogout: this.$route.query.noPreLogout}}); this.$router.replace({path: `/device/exam/${this.$route.query.examId}`, query: {mapId: this.$route.query.mapId, noPreLogout: this.$route.query.noPreLogout}});
} else { } else {

View File

@ -4,26 +4,10 @@
<transition name="el-zoom-in-bottom"> <transition name="el-zoom-in-bottom">
<map-system-draft ref="mapCanvas" @back="back" /> <map-system-draft ref="mapCanvas" @back="back" />
</transition> </transition>
<status-icon v-if="($route.query.lineCode == '11' || $route.query.lineCode == '10') && isDemon" ref="statusIcon" />
<menu-demon v-if="isDemon" ref="menuDemon" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" /> <menu-demon v-if="isDemon" ref="menuDemon" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" />
<menu-lesson v-if="isLesson" ref="lessonMenu" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" :tip-bottom="tipBottom" /> <menu-lesson v-if="isLesson" ref="lessonMenu" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" :tip-bottom="tipBottom" />
<menu-exam v-if="isExam" ref="menuExam" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" /> <menu-exam v-if="isExam" ref="menuExam" :offset="offset" :data-error="dataError" :offset-bottom="offsetBottom" />
<menu-script <menu-script v-if="isScript" ref="menuScript" :offset-bottom="offsetBottom" :offset="offset" :text-status-height="textStatusHeight" :data-error="dataError" />
v-if="isScript"
ref="menuScript"
:offset-bottom="offsetBottom"
:offset="offset"
:project="project"
:text-status-height="textStatusHeight"
:data-error="dataError"
/>
<menu-practice
v-if="isPractice"
ref="menuPractice"
:offset="offset"
:offset-bottom="offsetBottom"
:data-error="dataError"
/>
<menu-dispather-contest v-if="isContest" ref="menuDispatherContest" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" /> <menu-dispather-contest v-if="isContest" ref="menuDispatherContest" :offset="offset" :offset-bottom="offsetBottom" :data-error="dataError" :text-status-height="textStatusHeight" />
</template> </template>
<menu-train-list v-if="isDemon||isContest||isScript" @setCenter="setCenter" /> <menu-train-list v-if="isDemon||isContest||isScript" @setCenter="setCenter" />
@ -35,12 +19,11 @@ import { getSessionStorage } from '@/utils/auth';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { OperateMode } from '@/scripts/ConstDic'; import { OperateMode } from '@/scripts/ConstDic';
import { timeFormat } from '@/utils/date'; import { timeFormat } from '@/utils/date';
import MapSystemDraft from '@/views/newMap/mapsystemNew/index';
import StatusIcon from '@/views/components/StatusIcon/statusIcon';
import MenuDemon from '@/views/newMap/displayNew/menuDemon';
import MenuExam from './exam/index'; import MapSystemDraft from '@/views/newMap/mapsystemNew/index';
import MenuLesson from './lesson/index'; import MenuLesson from './lesson/index';
import MenuDemon from './menuDemon';
import MenuExam from './exam/index';
import MenuScript from './scriptDisplay/scriptRecord/index'; import MenuScript from './scriptDisplay/scriptRecord/index';
import MenuDispatherContest from './dispatherContest/index'; import MenuDispatherContest from './dispatherContest/index';
@ -50,11 +33,11 @@ import MenuSystemTime from '@/views/newMap/displayNew/menuSystemTime';
import { clearSimulation, getSimulationInfoNew } from '@/api/simulation'; import { clearSimulation, getSimulationInfoNew } from '@/api/simulation';
import { loadNewMapDataByGroup } from '@/utils/loaddata'; import { loadNewMapDataByGroup } from '@/utils/loaddata';
import { EventBus } from '@/scripts/event-bus'; import { EventBus } from '@/scripts/event-bus';
export default { export default {
name: 'DisplayDraft', name: 'DisplayDraft',
components: { components: {
MapSystemDraft, MapSystemDraft,
StatusIcon,
MenuDemon, MenuDemon,
MenuExam, MenuExam,
MenuLesson, MenuLesson,
@ -99,9 +82,6 @@ export default {
isScript() { isScript() {
return this.mode === 'script'; return this.mode === 'script';
}, },
isPractice() {
return this.mode === 'practice';
},
mapId() { mapId() {
return this.$route.query.mapId; return this.$route.query.mapId;
}, },
@ -140,12 +120,11 @@ export default {
} }
}, },
beforeDestroy() { beforeDestroy() {
this.quit(this.group); clearSimulation(this.group);
this.$store.dispatch('training/reset'); this.$store.dispatch('training/reset');
this.$store.dispatch('map/mapClear'); this.$store.dispatch('map/mapClear');
}, },
async mounted() { async mounted() {
this.setWindowSize();
this.initLoadData(); this.initLoadData();
}, },
methods:{ methods:{
@ -158,11 +137,6 @@ export default {
EventBus.$emit('viewLoading', false); EventBus.$emit('viewLoading', false);
}); });
}, },
// 仿
quit(group) {
clearSimulation(group);
this.$store.dispatch('training/over');
},
// 仿退 // 仿退
async back() { async back() {
if (this.isExam) { if (this.isExam) {
@ -227,18 +201,19 @@ export default {
// 仿group仿 // 仿group仿
async loadSimulationInfo() { async loadSimulationInfo() {
const resp = await getSimulationInfoNew(this.group); const resp = await getSimulationInfoNew(this.group);
if (resp && resp.code == 200 && resp.data && !resp.data.dataError) { if (resp && resp.code == 200 && resp.data) {
this.dataError = false; if (!resp.data.dataError) {
this.$store.dispatch('scriptRecord/updateSimulationPause', resp.data.pause); // this.$store.dispatch('scriptRecord/updateSimulationPause', resp.data.pause); //
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(resp.data.systemTime)}`)); this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${timeFormat(resp.data.systemTime)}`));
this.$store.dispatch('training/countTime'); this.$store.dispatch('training/countTime');
this.planRunning = resp.data.planRunning; this.planRunning = resp.data.planRunning;
if (resp.data.planRunning) { if (resp.data.planRunning) {
this.$store.commit('training/start'); this.$store.commit('training/start');
}
} else {
this.$messageBox('此地图数据正在维护中,无法运行!');
} }
} else if (resp && resp.code == 200 && resp.data && resp.data.dataError) { this.dataError = resp.data.dataError;
this.dataError = true;
this.$messageBox('此地图数据正在维护中,无法运行!');
} }
}, },
// //

View File

@ -1,5 +1,6 @@
<template> <template>
<div> <div>
<status-icon v-if="$route.query.lineCode == '11' || $route.query.lineCode == '10'" ref="statusIcon" />
<demon-chat ref="chatbox" :group="group" :user-role="userRole" :offset="offset" /> <demon-chat ref="chatbox" :group="group" :user-role="userRole" :offset="offset" />
<div class="display-card" :style="{top: offset+'px'}"> <div class="display-card" :style="{top: offset+'px'}">
<el-row> <el-row>
@ -56,13 +57,14 @@ import DemonChat from './demonChat';
import { Notification } from 'element-ui'; import { Notification } from 'element-ui';
import MenuSchema from '@/views/newMap/displayNew/menuSchema'; import MenuSchema from '@/views/newMap/displayNew/menuSchema';
import { getGoodsTryUse } from '@/api/management/goods'; import { getGoodsTryUse } from '@/api/management/goods';
import { ranAsPlan, exitRunPlan, clearSimulation, getSimulationInfoNew } from '@/api/simulation'; import { ranAsPlan, exitRunPlan, getSimulationInfoNew } from '@/api/simulation';
import { PermissionType } from '@/scripts/ConstDic'; import { PermissionType } from '@/scripts/ConstDic';
import { getCountTime } from '@/utils/index'; import { getCountTime } from '@/utils/index';
import { TrainingMode } from '@/scripts/ConstDic'; import { TrainingMode } from '@/scripts/ConstDic';
import { quitScriptNew } from '@/api/simulation'; import { quitScriptNew } from '@/api/simulation';
import { setGoodsTryUse } from '@/api/management/goods'; import { setGoodsTryUse } from '@/api/management/goods';
import {loadScriptNew } from '@/api/simulation'; import {loadScriptNew } from '@/api/simulation';
import StatusIcon from '@/views/components/StatusIcon/statusIcon';
import Vue from 'vue'; import Vue from 'vue';
import { EventBus } from '@/scripts/event-bus'; import { EventBus } from '@/scripts/event-bus';
@ -72,7 +74,8 @@ export default {
SetTime, SetTime,
DemonChat, DemonChat,
MenuSchema, MenuSchema,
DemonMenu DemonMenu,
StatusIcon
}, },
props: { props: {
offset: { offset: {
@ -383,14 +386,10 @@ export default {
}); });
}); });
} else { } else {
await clearSimulation(this.group); this.$store.dispatch('map/setShowCentralizedStationCode', '');
this.$store.dispatch('training/over').then(() => { history.go(-1);
this.$store.dispatch('map/setShowCentralizedStationCode', ''); Notification.closeAll();
history.go(-1);
Notification.closeAll();
});
} }
}, },
setTryTime() { setTryTime() {
if (this.try) { if (this.try) {

View File

@ -1,178 +0,0 @@
<template>
<div class="menuPractice">
<div class="practice-schema" :style="{top: offset+'px'}">
<el-select v-model="swch" size="small" :placeholder="$t('display.schema.selectProduct')" @change="switchMode">
<el-option v-for="item in swchList" :key="item.value" :label="item.name" :value="item.value" />
</el-select>
<select-station ref="selectStation" :style-css="'width: 100px;'" />
</div>
<div class="practice-bottom" :style="{bottom: offsetBottom + 'px'}">
<el-button-group>
<el-button type="success" :disabled="isDisable || dataError" @click="selectBeginTime">按计划行车</el-button>
<el-button type="danger" :disabled="dataError" @click="end">初始化</el-button>
<el-button type="primary" @click="back">返回</el-button>
</el-button-group>
</div>
<set-time ref="setTime" @ConfirmSelectBeginTime="start" />
</div>
</template>
<script>
import SelectStation from './selectStation';
import { TrainingMode } from '@/scripts/ConstDic';
import SetTime from '@/views/newMap/displayNew/demon/setTime';
import { ranAsPlan, exitRunPlan } from '@/api/simulation';
import { Notification } from 'element-ui';
export default {
name: 'MenuPractice',
components:{
SetTime,
SelectStation
},
props: {
offset: {
type: Number,
required: true
},
offsetBottom: {
type: Number,
required: true
},
dataError: {
type: Boolean,
default() {
return false;
}
}
},
data() {
return {
isDisable: false,
swch: '01',
showStationContent:'',
swchList: [
{ value: '01', name: '现地' },
{ value: '02', name: '行调' }
]
};
},
computed:{
group() {
return this.$route.query.group;
}
},
watch:{
'showStation':function(val) {
this.showStationContent = this.showStation;
}
},
methods:{
back() {
this.$store.dispatch('training/over').then(() => {
history.go(-1);
Notification.closeAll();
});
},
selectBeginTime() {
this.$refs.setTime.doShow();
},
start(model) {
this.isDisable = true;
const data = {
time: model.initTime
};
ranAsPlan(data, this.group).then(res => {
this.$store.dispatch('training/simulationStart').then(() => {
this.$store.dispatch('training/setInitTime', +new Date(`${new Date().toLocaleDateString()} ${model.initTime}`));
this.$store.dispatch('map/setShowCentralizedStationNum');
});
}).catch((error) => {
this.isDisable = false;
if (error.code == '5001') {
this.$messageBox(this.$t('error.mapDataError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5002') {
this.$messageBox(this.$t('error.runningChartDataError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5003') {
this.$messageBox(this.$t('error.runningChartIsNotLoaded') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5004') {
this.$messageBox(this.$t('error.runningDataError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '5000') {
this.$messageBox(this.$t('error.systemError') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4000') {
this.$messageBox(this.$t('error.simulationDoesNotExist') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4001') {
this.$messageBox(this.$t('error.simulationOperationIsNotDefined') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4002') {
this.$messageBox(this.$t('error.simulationOperationProcessingMethodNotFound') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4003') {
this.$messageBox(this.$t('error.simulationOperationFailed') + ',' + this.$t('error.startSimulationFailed'));
} else if (error.code == '4004') {
this.$messageBox(this.$t('error.operationConflict') + ',' + this.$t('error.startSimulationFailed'));
}
});
},
switchMode(swch) {
this.$store.dispatch('training/setPrdType', swch); // prdType
this.switchModeInner(swch);
},
switchModeInner(swch) {
let showMode = '03';
if (swch == '01') {
showMode = '03';
} else if (swch == '02') {
showMode = '02';
}
const nameList = Object.keys(this.$store.state.map.map || {});
let list = [];
nameList.forEach(item => {
if (item !== 'skinVO') {
const data = this.$store.state.map.map[item];
if (data && data.constructor === Array) {
list = [...list, ...data];
}
}
});
this.$jlmap.updateShowMode(list, showMode);
},
end() {
this.isDisable = false;
exitRunPlan(this.group).then(() => {
this.$store.dispatch('training/over').then(() => {
this.$store.dispatch('training/setMapDefaultState').then(() => {
this.$store.dispatch('map/clearJlmapTrainView');
this.$store.dispatch('map/setTrainWindowShow', false);
});
});
}).catch(() => {
this.isDisable = true;
this.$messageBox(this.$t('display.demon.endSimulationFail'));
});
},
//
async initData() {
this.$store.dispatch('training/end', TrainingMode.NORMAL);
this.$store.dispatch('training/setPrdType', '01'); // prdType
},
//
endViewLoading(isSuccess) {
if (!isSuccess) {
this.$store.dispatch('map/mapClear');
}
}
}
};
</script>
<style lang="scss" scoped>
.practice-schema {
z-index: 9;
display: inline;
position: absolute;
right: 15px;
}
.practice-bottom {
position: absolute;
float: right;
right: 15px;
bottom: 15px;
}
</style>

View File

@ -67,8 +67,8 @@ export default {
viewDisabled: true, viewDisabled: true,
swch: '02', swch: '02',
isScriptCommand:false, isScriptCommand:false,
faultMode: false, faultMode: false
firstLoad: true // firstLoad: true
}; };
}, },
computed: { computed: {

View File

@ -233,7 +233,7 @@ export default {
type: 'role', type: 'role',
children: result.deviceListData[1] children: result.deviceListData[1]
}, { }, {
label: '车辆段', label: '车辆段信号楼',
id: 'depotDispatcher', id: 'depotDispatcher',
type: 'role', type: 'role',
children: result.deviceListData[4] children: result.deviceListData[4]

View File

@ -88,12 +88,6 @@ export default {
default() { default() {
return 0; return 0;
} }
},
project:{
type: String,
default() {
return '';
}
} }
}, },
data() { data() {
@ -228,10 +222,8 @@ export default {
}); });
}, },
back() { back() {
this.$store.dispatch('training/over').then(() => { history.go(-1);
history.go(-1); Notification.closeAll();
Notification.closeAll();
});
}, },
resetChat() { resetChat() {
// this.$refs.chatbox.resetCoversition(); // this.$refs.chatbox.resetCoversition();

View File

@ -37,7 +37,7 @@ export function covertMemberData (activeTrainList, resp) {
member.label = member.type + name + userName; member.label = member.type + name + userName;
member.normalName = member.type + name; member.normalName = member.type + name;
} }
const deviceType = ['行调', '通号', '行值', '司机', '车辆段调度', '上级部门', '电力调度', '停车场信号楼']; const deviceType = ['行调', '通号', '行值', '司机', '车辆段信号楼', '上级部门', '电力调度', '停车场信号楼'];
const deviceTypeIndex = deviceType.indexOf(member.type); const deviceTypeIndex = deviceType.indexOf(member.type);
if (deviceTypeIndex >= 0) { if (deviceTypeIndex >= 0) {
if (deviceTypeIndex == 3) { if (deviceTypeIndex == 3) {

View File

@ -158,7 +158,7 @@ export default {
electricDispatcherList.push(this.memberData[item.id]); electricDispatcherList.push(this.memberData[item.id]);
break; break;
case 'DEPOT_DISPATCHER': case 'DEPOT_DISPATCHER':
this.memberData[item.id].labelName = '车辆段调度' + (item.name || ''); this.memberData[item.id].labelName = '车辆段信号楼' + (item.name || '');
depotDispatcherList.push(this.memberData[item.id]); depotDispatcherList.push(this.memberData[item.id]);
break; break;
case 'STATION_SUPERVISOR': case 'STATION_SUPERVISOR':
@ -192,7 +192,7 @@ export default {
id: 'maintainer', id: 'maintainer',
children: maintainerList children: maintainerList
}, { }, {
labelName: '车辆段', labelName: '车辆段信号楼',
id: 'depotDispatcher', id: 'depotDispatcher',
children: depotDispatcherList children: depotDispatcherList
}, { }, {

View File

@ -83,9 +83,9 @@ export default {
if (device._type == 'Section' && device.type == '03') { // model if (device._type == 'Section' && device.type == '03') { // model
device = this.$store.getters['map/getDeviceByCode'](device.switch.code); device = this.$store.getters['map/getDeviceByCode'](device.switch.code);
} }
if (device._type == 'Section' && device.type == '04') { // if (device._type == 'Section' && device.type == '04') {
device = null; // device = null;
} // }
return device; return device;
}, },
clickEvent(em) { clickEvent(em) {
@ -180,12 +180,14 @@ export default {
}, },
checkShouldPop(device) { checkShouldPop(device) {
const lineCode = this.$store.getters['map/lineCode']; const lineCode = this.$store.getters['map/lineCode'];
if (device._type === 'Signal') { if (device) {
return device._viewVal === '3'; if (device._type === 'Signal') {
} else if (device._type === 'StationControl' && lineCode == '01') { // return device._viewVal === '3';
return device._viewVal === '1'; } else if (device._type === 'StationControl' && lineCode == '01') { //
} else { return device._viewVal === '1';
return true; } else {
return true;
}
} }
}, },
mapViewLoaded(loading) { mapViewLoaded(loading) {

View File

@ -467,8 +467,8 @@ export default {
}); });
}, },
updateMapModel(data) { updateMapModel(data) {
this.$emit('updateMapModel', data); this.$emit('updateMapModel', data);
this.field = ''; this.field = '';
}, },
deleteObj() { deleteObj() {
this.$refs.dataform.deleteObj(); this.$refs.dataform.deleteObj();

View File

@ -136,7 +136,7 @@ export default {
watch: { watch: {
'$store.state.menuOperation.selectedCount':function(em) { '$store.state.menuOperation.selectedCount':function(em) {
const device = this.$store.state.menuOperation.selected; const device = this.$store.state.menuOperation.selected;
if (device.code) { if (device && device.code) {
this.deviceSelect(device); this.deviceSelect(device);
} }
} }

View File

@ -195,7 +195,7 @@ export default {
type: 'role', type: 'role',
children: result.deviceListData[1] children: result.deviceListData[1]
}, { }, {
label: '车辆段', label: '车辆段信号楼',
id: 'depotDispatcher', id: 'depotDispatcher',
type: 'role', type: 'role',
children: result.deviceListData[4] children: result.deviceListData[4]
@ -273,7 +273,7 @@ export default {
const covertmember = this.covert(lastData, ConstConfig.ConstSelect.roleTypeNew); const covertmember = this.covert(lastData, ConstConfig.ConstSelect.roleTypeNew);
const newMember = covertmember[0]; const newMember = covertmember[0];
this.memberList.push(newMember); this.memberList.push(newMember);
const deviceTypeList = ['行调', '行值', '司机', '通号', '车辆段调度', '上级部门', '电力调度', '停车场信号楼']; const deviceTypeList = ['行调', '行值', '司机', '通号', '车辆段信号楼', '上级部门', '电力调度', '停车场信号楼'];
const index = deviceTypeList.indexOf(newMember.type); const index = deviceTypeList.indexOf(newMember.type);
if (index >= 0) { if (index >= 0) {
const treeDataIn = this.treeData[index]; const treeDataIn = this.treeData[index];
@ -479,7 +479,7 @@ export default {
} }
}); });
this.openWindow = window.open(routeData.href); this.openWindow = window.open(routeData.href);
} else if (role.type == '车辆段调度') { } else if (role.type == '车辆段信号楼') {
prdType = '05'; prdType = '05';
role.type = 'DEPOT_DISPATCHER'; role.type = 'DEPOT_DISPATCHER';
this.$store.dispatch('training/setRoles', 'DEPOT_DISPATCHER'); this.$store.dispatch('training/setRoles', 'DEPOT_DISPATCHER');
@ -520,7 +520,7 @@ export default {
'DISPATCHER':'行调', 'DISPATCHER':'行调',
'DRIVER':'司机', 'DRIVER':'司机',
'MAINTAINER':'通号', 'MAINTAINER':'通号',
'DEPOT_DISPATCHER':'车辆段调度', 'DEPOT_DISPATCHER':'车辆段信号楼',
'PARENT_DEPARTMENT':'上级部门', 'PARENT_DEPARTMENT':'上级部门',
'ELECTRIC_DISPATCHER':'电力调度', 'ELECTRIC_DISPATCHER':'电力调度',
'PARKING_LOT_SIGNAL_BUILDING':'停车场信号楼' 'PARKING_LOT_SIGNAL_BUILDING':'停车场信号楼'

View File

@ -19,6 +19,12 @@ export default {
default() { default() {
return []; return [];
} }
},
deviceTypeList:{
type: Array,
default() {
return [];
}
} }
}, },
data() { data() {
@ -30,9 +36,7 @@ export default {
targetIds: '', targetIds: '',
deviceType: [] deviceType: []
}, },
deviceTypeList: [], targetList: []
targetList: [],
lineCode: ''
}; };
}, },
computed: { computed: {
@ -58,36 +62,17 @@ export default {
}; };
} }
}, },
watch: {
taskStatusList(list) {
this.targetList = [];
list.forEach(item => {
if (item.value != this.lineCode) {
this.targetList.push(item);
}
});
}
},
created() {
this.deviceTypeList = [];
this.$ConstSelect.deviceTypeList.forEach(item => {
this.deviceTypeList.push(item);
});
},
methods: { methods: {
doShow(lineCode) { doShow(lineCode) {
this.dialogVisible = true; this.dialogVisible = true;
if (lineCode) { if (lineCode) {
this.lineCode = lineCode;
this.targetList = []; this.targetList = [];
this.taskStatusList.forEach(item => { this.taskStatusList.forEach(item => {
item.value = item.code; if (item.value != lineCode) {
item.label = item.name;
if (item.code != lineCode) {
this.targetList.push(item); this.targetList.push(item);
} else { } else {
this.formModel.fromCode = item.code; this.formModel.fromCode = item.value;
this.formModel.fromName = item.name; this.formModel.fromName = item.label;
} }
}); });
} }

View File

@ -27,10 +27,14 @@
<div style="overflow: hidden;"> <div style="overflow: hidden;">
<div class="param-title">指令参数:</div> <div class="param-title">指令参数:</div>
<el-table :data="formModel.paramList" border class="param-table"> <el-table :data="formModel.paramList" border class="param-table">
<el-table-column prop="name" label="参数名" /> <el-table-column prop="name" label="参数名">
<template slot-scope="scope">
<input :id="'param'+scope.$index" v-model="scope.row.name" type="text" class="paramCode">
</template>
</el-table-column>
<el-table-column :label="this.$t('global.operate')" width="180"> <el-table-column :label="this.$t('global.operate')" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="editParam(scope.$index, scope.row)">修改</el-button> <el-button type="text" size="small" @click="editParam(scope.$index)">修改</el-button>
<el-button type="text" size="small" @click="delParam(scope.$index)">删除</el-button> <el-button type="text" size="small" @click="delParam(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -44,9 +48,6 @@
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button> <el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="handleBack">返回</el-button> <el-button @click="handleBack">返回</el-button>
</div> </div>
<command-edit ref="create" type="ADD" @addData="addData" />
<command-edit ref="edit" type="EDIT" @editData="editData" />
<edit-condition ref="addCondition" type="ADD" @addData="addCondition" /> <edit-condition ref="addCondition" type="ADD" @addData="addCondition" />
<edit-condition ref="editCondition" type="EDIT" @editData="editCondition" /> <edit-condition ref="editCondition" type="EDIT" @editData="editCondition" />
</div> </div>
@ -56,7 +57,6 @@
import ConstConfig from '@/scripts/ConstConfig'; import ConstConfig from '@/scripts/ConstConfig';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { createCommand, editCommand, getCommandDetail } from '@/api/management/dictionary'; import { createCommand, editCommand, getCommandDetail } from '@/api/management/dictionary';
import CommandEdit from './editParam';
import { getLineCodeList } from '@/api/management/mapline'; import { getLineCodeList } from '@/api/management/mapline';
import EditCondition from './editCondition'; import EditCondition from './editCondition';
import CMD from '@/scripts/cmdPlugin/CommandEnum'; import CMD from '@/scripts/cmdPlugin/CommandEnum';
@ -64,7 +64,6 @@ import CMD from '@/scripts/cmdPlugin/CommandEnum';
export default { export default {
name: 'DictionaryEdit', name: 'DictionaryEdit',
components: { components: {
CommandEdit,
EditCondition EditCondition
}, },
props: { props: {
@ -165,6 +164,9 @@ export default {
}, },
doSave() { doSave() {
this.$refs.dataform.validateForm(() => { this.$refs.dataform.validateForm(() => {
this.formModel.paramList = this.formModel.paramList.filter(param=>{
return param.name != '';
});
if (this.type == 'add') { if (this.type == 'add') {
this.create(); this.create();
} else { } else {
@ -191,21 +193,16 @@ export default {
}); });
}, },
handleBack() { handleBack() {
this.$router.push({ path: `/system/commands`, query: { } }); this.$router.go(-1);
},
editData(data) {
this.formModel.paramList.splice(this.editIndex, 1, data);
},
addData(data) {
this.formModel.paramList.push(data);
}, },
addParam() { addParam() {
this.$refs.create.doShow(); this.formModel.paramList.push({name:''});
this.$nextTick(()=>{
document.querySelector('#param' + (this.formModel.paramList.length - 1)).focus();
});
}, },
editParam(index, row) { editParam(index) {
this.$refs.edit.doShow(row); document.querySelector('#param' + index).focus();
this.editIndex = index;
}, },
delParam(index) { delParam(index) {
this.formModel.paramList.splice(index, 1); this.formModel.paramList.splice(index, 1);
@ -274,4 +271,15 @@ export default {
justify-content: center; justify-content: center;
} }
} }
.paramCode{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
border: none;
text-indent: 10px;
outline: none;
color: #606266;
}
</style> </style>

View File

@ -1,96 +0,0 @@
<template>
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="400px" :before-close="handleClose" center :close-on-click-modal="false">
<data-form ref="dataform" :form="form" :form-model="formModel" :rules="rules" />
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="doSave">{{ $t('global.confirm') }}</el-button>
<el-button @click="dialogVisible = false">{{ $t('global.cancel') }}</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
name: 'DictionaryEdit',
props: {
type: {
type: String,
required: true
}
},
data() {
return {
dialogVisible: false,
formModel: {
id: '',
name: ''
}
};
},
computed: {
form() {
const form = {
labelWidth: '100px',
items: [
{ prop: 'name', label: '参数名', type: 'text' }
]
};
return form;
},
rules() {
return {
name: [
{ required: true, message: '请输入内容', trigger: 'blur' }
]
};
},
title() {
if (this.type === 'ADD') {
return this.$t('system.createDirectory');
} else {
return this.$t('system.editDictionary');
}
}
},
methods: {
doShow(data) {
this.dialogVisible = true;
if (data) {
this.formModel = {
name: data.name,
pattern: data.pattern,
val: data.val
};
}
},
doSave() {
const self = this;
this.$refs.dataform.validateForm(() => {
if (self.type === 'ADD') {
self.create();
} else {
self.update();
}
});
},
getData() {
return {
id: this.formModel.id,
name: this.formModel.name
};
},
create() {
this.$emit('addData', this.getData());
this.handleClose();
},
update() {
this.$emit('editData', this.getData());
this.handleClose();
},
handleClose() {
this.$refs.dataform.resetForm();
this.dialogVisible = false;
}
}
};
</script>

View File

@ -2,7 +2,7 @@
<div> <div>
<QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" /> <QueryListPage ref="queryListPage" :pager-config="pagerConfig" :query-form="queryForm" :query-list="queryList" />
<show-condition ref="showCondition" /> <show-condition ref="showCondition" />
<copy-param ref="copyParam" :task-status-list="taskStatusList" /> <copy-param ref="copyParam" :task-status-list="taskStatusList" :device-type-list="deviceTypeList" />
</div> </div>
</template> </template>
@ -22,6 +22,7 @@ export default {
data() { data() {
return { return {
taskStatusList: [], taskStatusList: [],
deviceTypeList:[],
operateList: [], operateList: [],
pagerConfig: { pagerConfig: {
pageSize: 'pageSize', pageSize: 'pageSize',
@ -57,14 +58,14 @@ export default {
title: this.$t('system.lineCode'), // 线 title: this.$t('system.lineCode'), // 线
prop: 'lineCode', prop: 'lineCode',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.lineCode, this.taskStatusList, ['code', 'name']); }, columnValue: (row) => { return this.convertField(this.taskStatusList, row.lineCode); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
title: this.$t('system.simulationRole'), // 仿 title: this.$t('system.simulationRole'), // 仿
prop: 'simulationRole', prop: 'simulationRole',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.simulationRole, this.$ConstSelect.simulationRole, ['value', 'label']); }, columnValue: (row) => { return this.convertField(this.$ConstSelect.simulationRole, row.simulationRole); },
tagType: (row) => { return 'success'; } tagType: (row) => { return 'success'; }
}, },
{ {
@ -78,7 +79,7 @@ export default {
title: this.$t('system.deviceType'), // title: this.$t('system.deviceType'), //
prop: 'operateObject', prop: 'operateObject',
type: 'tag', type: 'tag',
columnValue: (row) => { return this.$convertField(row.operateObject, this.$ConstSelect.deviceTypeList, ['value', 'label']); }, columnValue: (row) => { return this.convertField( this.deviceTypeList, row.operateObject); },
tagType: (row) => { return ''; } tagType: (row) => { return ''; }
}, },
{ {
@ -130,7 +131,6 @@ export default {
currentModel: {} currentModel: {}
}; };
}, },
mounted () { mounted () {
this.loadInitData(); this.loadInitData();
}, },
@ -140,13 +140,14 @@ export default {
this.taskStatusList = []; this.taskStatusList = [];
this.mapList = []; this.mapList = [];
const list = await getLineCodeList(); const list = await getLineCodeList();
this.taskStatusList = list.data;
list.data.forEach(elem => { list.data.forEach(elem => {
this.queryForm.queryObject.lineCode.config.data.push({ value: elem.code, label: elem.name }); this.taskStatusList.push({ value: elem.code, label: elem.name });
}); });
this.queryForm.queryObject.lineCode.config.data = this.taskStatusList;
this.$ConstSelect.deviceTypeList.forEach(elem => { this.$ConstSelect.deviceTypeList.forEach(elem => {
this.queryForm.queryObject.operateObject.config.data.push(elem); this.deviceTypeList.push(elem);
}); });
this.queryForm.queryObject.operateObject.config.data = this.deviceTypeList;
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
@ -161,13 +162,11 @@ export default {
}, },
replace(fieldValue) { replace(fieldValue) {
const arr = []; const arr = [];
if (fieldValue && fieldValue.length) { fieldValue.forEach((v, j) => {
fieldValue.forEach((v, j) => { if (v.name) {
if (v.name) { arr.push(v.name);
arr.push(v.name); }
} });
});
}
return arr; return arr;
}, },
// //
@ -192,7 +191,6 @@ export default {
this.$message.success(this.$t('system.deleteSuccess')); this.$message.success(this.$t('system.deleteSuccess'));
this.reloadTable(); this.reloadTable();
}).catch(() => { }).catch(() => {
this.reloadTable();
this.$messageBox(this.$t('error.deleteFailed')); this.$messageBox(this.$t('error.deleteFailed'));
}); });
}); });
@ -218,6 +216,10 @@ export default {
}, },
reloadTable() { reloadTable() {
this.queryList.reload(); this.queryList.reload();
},
convertField(list, status) {
console.log(list, typeof list, status);
if (list && list.length > 0) { return list.find(each=>{ return status == each.value; }).label; }
} }
} }
}; };