This commit is contained in:
fan 2019-12-17 16:41:40 +08:00
commit 6195338947
9 changed files with 138 additions and 91 deletions

View File

@ -199,16 +199,17 @@
<el-form-item :label="$t('map.hostileApproachData') + ':'" prop="conflictingRouteList"> <el-form-item :label="$t('map.hostileApproachData') + ':'" prop="conflictingRouteList">
<el-select v-model="addModel.conflictingRouteList" multiple clearable :filterable="true"> <el-select v-model="addModel.conflictingRouteList" multiple clearable :filterable="true">
<el-option <el-option
v-for="item in sectionList" v-for="item in routeList"
:key="item.code" :key="item.code"
:label="item.name + ' (' + item.code+ ')'" :label="item.name"
:value="item.code" :value="item.code"
/> />
</el-select> </el-select>
<el-button <!-- <el-button type="primary" @click="selectedConflictingRouteList">选择</el-button> -->
<!-- <el-button
:type=" field === 'conflictingRouteList' ? 'danger' : 'primary'" :type=" field === 'conflictingRouteList' ? 'danger' : 'primary'"
@click="hover('conflictingRouteList')" @click="hover('conflictingRouteList')"
>{{ $t('map.activate') }}</el-button> >{{ $t('map.activate') }}</el-button> -->
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button-group> <el-button-group>
@ -219,19 +220,22 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-scrollbar> </el-scrollbar>
<protect-detail ref="routeDetail" :map-info="mapInfo" @setOverlapCode="setOverlapCode" /> <protect-detail ref="protectDetail" :map-info="mapInfo" @setOverlapCode="setOverlapCode" />
<route-detail ref="routeDetail" :map-info="mapInfo" @setRouteCode="setRouteCode" />
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import { getUID } from '@/jmap/utils/Uid'; import { getUID } from '@/jmap/utils/Uid';
import { postRouteNew, putRouteNew, getContinueProtectList } from '@/api/jmap/mapdraft'; import { postRouteNew, putRouteNew, getContinueProtectList, getRouteNewList } from '@/api/jmap/mapdraft';
import ProtectDetail from '../protectoperate/detail'; import ProtectDetail from '../protectoperate/detail';
import RouteDetail from './detail';
export default { export default {
name: 'RouteOperation', name: 'RouteOperation',
components: { components: {
ProtectDetail ProtectDetail,
RouteDetail
}, },
props: { props: {
selected: { selected: {
@ -262,7 +266,7 @@ export default {
routeCode: '', routeCode: '',
routeType: '', routeType: '',
loading: false, loading: false,
interBlockStationList:[], // interBlockStationList:[],
SwitchLocateTypeList: [ SwitchLocateTypeList: [
{ name: '定位', code: true }, { name: '定位', code: true },
{ name: '反位', code: false } { name: '反位', code: false }
@ -288,7 +292,8 @@ export default {
overlapCode:'', overlapCode:'',
conflictingRouteList: [] // conflictingRouteList: [] //
}, },
overlapName: '' overlapName: '',
routeList: [] //
}; };
}, },
computed: { computed: {
@ -337,6 +342,11 @@ export default {
] ]
}; };
return baseRules; return baseRules;
},
interBlockStationList() { //
return this.stationList.filter(station=>{
return station.isCIStation;
});
} }
}, },
watch: { watch: {
@ -366,11 +376,13 @@ export default {
// this.$Dictionary.normal().then(list => { // this.$Dictionary.normal().then(list => {
// this.SwitchLocateTypeList = list; // this.SwitchLocateTypeList = list;
// }); // });
this.interBlockStationList = this.stationList.filter(station=>{ this.getRouteList();
return station.isCIStation;
});
}, },
methods: { methods: {
async getRouteList() {
const response = await getRouteNewList(this.$route.params.mapId, { pageSize: 9999, pageNum: 1 });
this.routeList = response.data.list;
},
swictchName(code) { swictchName(code) {
let name = ''; let name = '';
if (code) { if (code) {
@ -389,7 +401,7 @@ export default {
this.overlapName = data.name; this.overlapName = data.name;
}, },
selectedOverlapCode() { selectedOverlapCode() {
this.$refs.routeDetail.doShow('select'); this.$refs.protectDetail.doShow('select');
}, },
hover(field) { hover(field) {
this.field = field === this.field ? '' : field; this.field = field === this.field ? '' : field;
@ -418,6 +430,7 @@ export default {
postRouteNew(this.buildModel(getUID('Route'))).then(response => { postRouteNew(this.buildModel(getUID('Route'))).then(response => {
this.$message.success('创建成功'); this.$message.success('创建成功');
this.loading = false; this.loading = false;
this.routeList.push(this.buildModel(getUID('Route')));
this.clear(); this.clear();
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('tip.operationAbnormal')); this.$messageBox(this.$t('tip.operationAbnormal'));
@ -434,6 +447,7 @@ export default {
this.$message.success(this.$t('map.updateSuccessfully')); this.$message.success(this.$t('map.updateSuccessfully'));
this.loading = false; this.loading = false;
this.clear(); this.clear();
this.getRouteList();
}).catch(() => { }).catch(() => {
this.$messageBox(this.$t('tip.operationAbnormal')); this.$messageBox(this.$t('tip.operationAbnormal'));
this.loading = false; this.loading = false;
@ -450,24 +464,35 @@ export default {
this.addModel.routeFlankProtectionList = []; this.addModel.routeFlankProtectionList = [];
this.overlapName = ''; this.overlapName = '';
this.addModel.overlapCode = ''; this.addModel.overlapCode = '';
if (this.selected && this.selected._type.toUpperCase() === 'Station'.toUpperCase()) { // if (this.selected && this.selected._type.toUpperCase() === 'Station'.toUpperCase()) {
this.addModel.stationCode = this.selected.code; // this.addModel.stationCode = this.selected.code;
} // }
this.isSave = true; this.isSave = true;
} }
}, },
selectedConflictingRouteList() {
this.$refs.routeDetail.doShow('select');
},
setRouteCode(data) {
console.log(data);
if (this.addModel.conflictingRouteList.indexOf(data.code) === -1) {
this.addModel.conflictingRouteList.push(data.code);
}
},
setSelected(selected) { setSelected(selected) {
if (selected) { if (selected) {
if (selected._type.toUpperCase() === 'Station'.toUpperCase()) { // if (selected._type.toUpperCase() === 'Station'.toUpperCase()) {
this.addModel.stationCode = selected.code; // this.addModel.stationCode = selected.code;
} else if (selected._type.toUpperCase() === 'Signal'.toUpperCase() && this.field.toUpperCase() === 'startSignalCode'.toUpperCase()) { // } else
// else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'conflictingRouteList'.toUpperCase()) {
// if (this.addModel.conflictingRouteList.indexOf(selected.code) === -1) {
// this.addModel.conflictingRouteList.push(selected.code);
// }
// }
if (selected._type.toUpperCase() === 'Signal'.toUpperCase() && this.field.toUpperCase() === 'startSignalCode'.toUpperCase()) {
this.addModel.startSignalCode = selected.code; this.addModel.startSignalCode = selected.code;
} else if (selected._type.toUpperCase() === 'Signal'.toUpperCase() && this.field.toUpperCase() === 'endSignalCode'.toUpperCase()) { } else if (selected._type.toUpperCase() === 'Signal'.toUpperCase() && this.field.toUpperCase() === 'endSignalCode'.toUpperCase()) {
this.addModel.endSignalCode = selected.code; this.addModel.endSignalCode = selected.code;
} else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'conflictingRouteList'.toUpperCase()) {
if (this.addModel.conflictingRouteList.indexOf(selected.code) === -1) {
this.addModel.conflictingRouteList.push(selected.code);
}
} else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'routeSectionList'.toUpperCase()) { } else if (selected._type.toUpperCase() === 'Section'.toUpperCase() && this.field.toUpperCase() === 'routeSectionList'.toUpperCase()) {
if (this.addModel.routeSectionList.indexOf(selected.code) === -1) { if (this.addModel.routeSectionList.indexOf(selected.code) === -1) {
this.addModel.routeSectionList.push(selected.code); this.addModel.routeSectionList.push(selected.code);

View File

@ -180,8 +180,8 @@ export default {
edit() { edit() {
this.$refs.dataform.validate((valid) => { this.$refs.dataform.validate((valid) => {
if (valid) { if (valid) {
// const data = Object.assign({_type: 'Esp'}, this.editModel); const data = Object.assign({_type: 'Esp'}, this.editModel);
// console.log(data); this.$emit('updateMapModel', data);
} }
}); });
}, },

View File

@ -442,7 +442,7 @@ export default {
map: { map: {
name: this.$t('map.mapData'), name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation') + ':', type: 'select', mode: true, optionLabel: 'name&&code', optionValue: 'code', disabled: this.isStationCodeDisabled, options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation') + ':', type: 'select', mode: true, optionLabel: 'name&&code', optionValue: 'code', disabled: this.isStationCodeDisabled, options: this.centralizedStationList },
{ prop: 'lengthFact', label: this.$t('map.actualLength') + ':', type: 'number', min: 0, placeholder: this.$t('map.meter') }, { prop: 'lengthFact', label: this.$t('map.actualLength') + ':', type: 'number', min: 0, placeholder: this.$t('map.meter') },
{ prop: 'leftStopPointOffset', label: this.$t('map.leftStopPointOffset'), type: 'number', min: 0, isHidden: !this.isStopPointOffset }, { prop: 'leftStopPointOffset', label: this.$t('map.leftStopPointOffset'), type: 'number', min: 0, isHidden: !this.isStopPointOffset },
{ prop: 'rightStopPointOffset', label: this.$t('map.rightStopPointOffset'), type: 'number', min: 0, isHidden: !this.isStopPointOffset }, { prop: 'rightStopPointOffset', label: this.$t('map.rightStopPointOffset'), type: 'number', min: 0, isHidden: !this.isStopPointOffset },
@ -618,6 +618,13 @@ export default {
}, },
isLSectionOffsetShow() { isLSectionOffsetShow() {
return this.editModel.type === '02'; return this.editModel.type === '02';
},
centralizedStationList() {
let list = [];
list = this.stationList.filter(station=>{
return station.centralized;
});
return list;
} }
}, },
watch: { watch: {

View File

@ -93,10 +93,11 @@ export default {
activeName: 'first', activeName: 'first',
// field: '', // field: '',
chargeStation:[], chargeStation:[],
controlled:false,
editModel: { editModel: {
centralized: false, centralized: false,
concentrateStationCode: '', // // concentrateStationCode: '', //
isCIStation:false, // isCIStation: false, //
number:'', // number:'', //
code: '', code: '',
zcCode: '', zcCode: '',
@ -119,7 +120,7 @@ export default {
chargeStationCodeList:[], chargeStationCodeList:[],
position: { x: 0, y: 0 }, position: { x: 0, y: 0 },
kilometerPosition: { x: 0, y: 0 }, // kilometerPosition: { x: 0, y: 0 }, //
controlled:false, // controlled:false,
isCreateControlMode:false, isCreateControlMode:false,
isCreateTurnBack:false, isCreateTurnBack:false,
turnBackPoint: {x: 0, y: 0}, // turnBackPoint: {x: 0, y: 0}, //
@ -198,7 +199,7 @@ export default {
name: this.$t('map.mapData'), name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'isCIStation', label: this.$t('map.isCIStation'), type: 'checkbox'}, { prop: 'isCIStation', label: this.$t('map.isCIStation'), type: 'checkbox'},
{ prop: 'centralized', label: this.$t('map.centralized'), type: 'checkbox', disabled:this.editModel.controlled, change:true, deviceChange:this.changeCentralized }, { prop: 'centralized', label: this.$t('map.centralized'), type: 'checkbox', disabled:this.controlled, change:true, deviceChange:this.changeCentralized },
{ prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList, isHidden: !this.isZcCode }, { prop: 'zcCode', label: this.$t('map.zcCode'), type: 'select', optionLabel: 'code&&name', optionValue: 'code', options: this.zcList, isHidden: !this.isZcCode },
{ prop: 'chargeStationCodeList', label: this.$t('map.chargeStationList'), type: 'multiSelect', optionLabel: 'name', optionValue: 'code', options: this.chargeStation, isHidden: !this.isZcCode, deviceChange:this.changeChargeStation}, { prop: 'chargeStationCodeList', label: this.$t('map.chargeStationList'), type: 'multiSelect', optionLabel: 'name', optionValue: 'code', options: this.chargeStation, isHidden: !this.isZcCode, deviceChange:this.changeChargeStation},
{ prop: 'runPlanName', label: this.$t('map.stationRunPlanName'), type: 'input' } { prop: 'runPlanName', label: this.$t('map.stationRunPlanName'), type: 'input' }
@ -261,10 +262,25 @@ export default {
this.activeName = 'first'; this.activeName = 'first';
this.editModel = deepAssign(this.editModel, selected); this.editModel = deepAssign(this.editModel, selected);
this.editModel.runPlanName = selected.runPlanName || ''; this.editModel.runPlanName = selected.runPlanName || '';
let beCentralizedStation={};
this.stationList.forEach(data=>{
if(data.centralized){
data.chargeStationCodeList.forEach(charge=>{
let object={};
beCentralizedStation[charge]=data.code;
})
}
});
//
// //
this.chargeStation = this.stationList.filter(data=>{ this.chargeStation = this.stationList.filter(data=>{
return !data.centralized && data.code != this.editModel.code && !(data.controlled && data.concentrateStationCode != this.editModel.code); console.log(beCentralizedStation[data.code]);
return !data.centralized && data.code != this.editModel.code && !(beCentralizedStation[data.code] && beCentralizedStation[data.code] != this.editModel.code);
}); });
this.controlled= !!beCentralizedStation[selected.code];
// this.chargeStation = this.stationList.filter(data=>{
// return !data.centralized && data.code != this.editModel.code && !(data.controlled && data.concentrateStationCode != this.editModel.code);
// });
} }
}, },
changeControlMode(data) { changeControlMode(data) {
@ -286,14 +302,14 @@ export default {
if (data.length > 0) { if (data.length > 0) {
this.chargeStation.forEach(station=>{ this.chargeStation.forEach(station=>{
const newModal = Object.assign({}, station); const newModal = Object.assign({}, station);
newModal.controlled = false; // newModal.controlled = false;
newModal.concentrateStationCode = ''; // newModal.concentrateStationCode = '';
this.setStationStand(station, ''); this.setStationStand(station, '');
data.forEach(each=>{ data.forEach(each=>{
switch (each) { switch (each) {
case station.code: { case station.code: {
newModal.controlled = true; // newModal.controlled = true;
newModal.concentrateStationCode = this.editModel.code; // newModal.concentrateStationCode = this.editModel.code;
this.setStationStand(station, this.editModel.code); this.setStationStand(station, this.editModel.code);
break; break;
} }
@ -321,8 +337,8 @@ export default {
modifyChargeStation() { modifyChargeStation() {
this.chargeStation.forEach(station=>{ this.chargeStation.forEach(station=>{
const newModal = Object.assign({}, station); const newModal = Object.assign({}, station);
newModal.controlled = false; // newModal.controlled = false;
newModal.concentrateStationCode = ''; // newModal.concentrateStationCode = '';
// {} // {}
this.setStationStand(station, ''); this.setStationStand(station, '');
@ -368,8 +384,8 @@ export default {
kmPostFontColor: '#FFFFFF', kmPostFontColor: '#FFFFFF',
kilometerPosition: { x: 0, y: 0 }, kilometerPosition: { x: 0, y: 0 },
centralized: false, centralized: false,
concentrateStationCode: '', // concentrateStationCode: '',
controlled: false, // controlled: false,
chargeStationCodeList:[], chargeStationCodeList:[],
isCreateControlMode: item.control, isCreateControlMode: item.control,
isCreateTurnBack: false, isCreateTurnBack: false,

View File

@ -254,16 +254,16 @@ export default {
this.deviceSelect(this.$store.getters['map/getDeviceByCode'](code)); this.deviceSelect(this.$store.getters['map/getDeviceByCode'](code));
this.edit(); this.edit();
}, },
changeStation(data) { // changeStation(data) {
const station = this.stationList.find(elem => { return elem.code == data; }); // const station = this.stationList.find(elem => { return elem.code == data; });
if (station) { // if (station) {
if (station.centralized) { // if (station.centralized) {
this.addModel.deviceStationCode = station.code; // this.addModel.deviceStationCode = station.code;
} else { // } else {
this.addModel.deviceStationCode = station.concentrateStationCode; // this.addModel.deviceStationCode = station.concentrateStationCode;
} // }
} // }
}, // },
hover(field) { hover(field) {
this.field = field === this.field ? '' : field; this.field = field === this.field ? '' : field;
this.$emit('standStationCode', this.field); this.$emit('standStationCode', this.field);
@ -297,6 +297,8 @@ export default {
const models = []; const models = [];
const space = 8; const space = 8;
const Standuid = getUID('PF', this.stationStandList); const Standuid = getUID('PF', this.stationStandList);
//
//
const model = { const model = {
_type: 'StationStand', _type: 'StationStand',
code: Standuid, code: Standuid,

View File

@ -122,7 +122,7 @@ export default {
map: { map: {
name: this.$t('map.mapData'), name: this.$t('map.mapData'),
item: [ item: [
{ prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.stationList }, { prop: 'stationCode', label: this.$t('map.equipmentStation'), type: 'select', optionLabel: 'name&&code', optionValue: 'code', options: this.centralizedStationList },
{ prop: 'turnTime', label: this.$t('map.turnTime'), type: 'number', min: 0, max: 1000, placeholder: 's' } { prop: 'turnTime', label: this.$t('map.turnTime'), type: 'number', min: 0, max: 1000, placeholder: 's' }
] ]
} }
@ -168,7 +168,14 @@ export default {
'switchList', 'switchList',
'stationList', 'stationList',
'lineCode' 'lineCode'
]) ]),
centralizedStationList() {
let list = [];
list = this.stationList.filter(station=>{
return station.centralized;
});
return list;
}
}, },
watch: { watch: {
selected: function (val, oldVal) { selected: function (val, oldVal) {

View File

@ -45,6 +45,7 @@
</template> </template>
<script> <script>
import { mapGetters } from 'vuex';
import { getUID } from '@/jmapNew/utils/Uid'; import { getUID } from '@/jmapNew/utils/Uid';
export default { export default {
@ -70,6 +71,9 @@ export default {
}; };
}, },
computed: { computed: {
...mapGetters('map', [
'trainList'
]),
rules() { rules() {
return { return {
range: [ range: [

View File

@ -102,7 +102,7 @@ export default {
} }
}, },
create(list) { create(list) {
this.$emit('addOrUpdateMapModel', list); this.$emit('updateMapModel', list);
}, },
// //
edit(elem) { edit(elem) {

View File

@ -118,8 +118,8 @@ export default {
field: '', field: '',
addModel: { addModel: {
pointY: '', pointY: '',
width: '', width: 40,
height: '', height: 15,
modelList: [] modelList: []
}, },
mergeRules: { mergeRules: {
@ -289,6 +289,13 @@ export default {
_dispose: true _dispose: true
}); });
}); });
this.sectionList.forEach(elem => {
if (elem.trainWindowCode) {
const section = deepAssign({}, elem);
section.trainWindowCode = '';
remove.push(section);
}
});
this.$emit('updateMapModel', remove); this.$emit('updateMapModel', remove);
} }
}).catch(() => { }).catch(() => {
@ -298,24 +305,10 @@ export default {
// //
createTrainWindow() { createTrainWindow() {
const models = []; const models = [];
const switchSectionList = []; this.addList = []; // codelist
// const PhysicalSectionList = [];
this.addList = [];
const remove = []; //
if (this.trainWindowList && this.trainWindowList.length) {
this.trainWindowList.forEach(elem => {
remove.push({
_type: 'TrainWindow',
code: elem.code,
_dispose: true
});
});
this.$emit('updateMapModel', remove);
}
if (this.sectionList && this.sectionList.length) { if (this.sectionList && this.sectionList.length) {
this.sectionList.forEach(elem => { this.sectionList.forEach(elem => {
if (elem.type !== '04' && !elem.isSwitchSection && (elem.logicSectionNum.length == 0 || elem.logicSectionNum.length == 1 && elem.logicSectionNum[0] == 0)) { if (elem.type !== '04' && !elem.isSwitchSection && !elem.trainWindowCode && (elem.logicSectionNum.length == 0 || elem.logicSectionNum.length == 1 && elem.logicSectionNum[0] == 0)) {
const triangle = new JTriangle(elem.points[0], elem.points[elem.points.length - 1]); const triangle = new JTriangle(elem.points[0], elem.points[elem.points.length - 1]);
const param = this.createModel({ const param = this.createModel({
triangle: triangle, triangle: triangle,
@ -323,36 +316,19 @@ export default {
}); });
models.push(param); models.push(param);
const section = deepAssign(elem, { trainWindowCode: param.code }); const section = deepAssign(elem, { trainWindowCode: param.code });
// if (section.type == '02') { models.push(section);
// if (!switchSectionList.find(ele => { return ele.code == section.parentCode; })) {
// const sectionParent = deepAssign({}, this.$store.getters['map/getDeviceByCode'](section.parentCode));
// sectionParent['trainWindowCode'] = section.trainWindowCode;
// switchSectionList.push(sectionParent);
// }
// }
switchSectionList.push(section);
this.addList.push(param); this.addList.push(param);
} else if (elem.type === '04') { } else if (elem.type === '04' && !elem.trainWindowCode) {
const param = this.createModel({ const param = this.createModel({
section: elem section: elem
}); });
models.push(param); models.push(param);
const section = deepAssign(elem, { trainWindowCode: param.code }); const section = deepAssign(elem, { trainWindowCode: param.code });
switchSectionList.push(section); models.push(section);
this.addList.push(param); this.addList.push(param);
} }
}); });
} }
switchSectionList.forEach(elem => {
if (elem.type === '04') {
elem.relevanceSectionList.forEach(item => {
const section = deepAssign({}, this.$store.getters['map/getDeviceByCode'](item));
section['trainWindowCode'] = elem.trainWindowCode;
models.push(section);
});
}
models.push(elem);
});
this.$emit('updateMapModel', models); this.$emit('updateMapModel', models);
}, },
@ -375,7 +351,17 @@ export default {
cancelButtonText: this.$t('tip.cancel'), cancelButtonText: this.$t('tip.cancel'),
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
_that.$emit('updateMapModel', {...selected, _dispose: true}); const models = [];
this.sectionList.forEach(elem => {
if (elem.trainWindowCode == selected.code) {
const section = deepAssign({}, elem);
section.trainWindowCode = '';
models.push(section);
}
});
models.push(deepAssign(selected, { _dispose: true }));
console.log(models);
_that.$emit('updateMapModel', models);
_that.deviceSelect(); _that.deviceSelect();
}).catch(() => { }).catch(() => {
_that.$message.info(this.$t('tip.cancelledDelete')); _that.$message.info(this.$t('tip.cancelledDelete'));