一键关联集中站
This commit is contained in:
parent
c06a9d7e85
commit
693e1de289
@ -125,7 +125,7 @@ onMounted(() => {
|
|||||||
.queryStore.queryByType<Station>(Station.Type);
|
.queryStore.queryByType<Station>(Station.Type);
|
||||||
centralizedStations.value = [{ label: '', value: 0 }];
|
centralizedStations.value = [{ label: '', value: 0 }];
|
||||||
stations.forEach((station) => {
|
stations.forEach((station) => {
|
||||||
if (station.datas.concentrationStations) {
|
if (station.datas.concentrationStations || station.datas.depots) {
|
||||||
centralizedStations.value.push({
|
centralizedStations.value.push({
|
||||||
label: station.datas.name,
|
label: station.datas.name,
|
||||||
value: station.datas.id,
|
value: station.datas.id,
|
||||||
|
@ -156,7 +156,7 @@ onMounted(() => {
|
|||||||
.queryStore.queryByType<Station>(Station.Type);
|
.queryStore.queryByType<Station>(Station.Type);
|
||||||
centralizedStations.value = [{ label: '', value: 0 }];
|
centralizedStations.value = [{ label: '', value: 0 }];
|
||||||
stations.forEach((station) => {
|
stations.forEach((station) => {
|
||||||
if (station.datas.concentrationStations) {
|
if (station.datas.concentrationStations || station.datas.depots) {
|
||||||
centralizedStations.value.push({
|
centralizedStations.value.push({
|
||||||
label: station.datas.name,
|
label: station.datas.name,
|
||||||
value: station.datas.id,
|
value: station.datas.id,
|
||||||
|
@ -120,7 +120,7 @@ onMounted(() => {
|
|||||||
.queryStore.queryByType<Station>(Station.Type);
|
.queryStore.queryByType<Station>(Station.Type);
|
||||||
centralizedStations.value = [{ label: '', value: 0 }];
|
centralizedStations.value = [{ label: '', value: 0 }];
|
||||||
stations.forEach((station) => {
|
stations.forEach((station) => {
|
||||||
if (station.datas.concentrationStations) {
|
if (station.datas.concentrationStations || station.datas.depots) {
|
||||||
centralizedStations.value.push({
|
centralizedStations.value.push({
|
||||||
label: station.datas.name,
|
label: station.datas.name,
|
||||||
value: station.datas.id,
|
value: station.datas.id,
|
||||||
|
@ -139,7 +139,7 @@ onMounted(() => {
|
|||||||
.queryStore.queryByType<Station>(Station.Type);
|
.queryStore.queryByType<Station>(Station.Type);
|
||||||
centralizedStations.value = [{ label: '', value: 0 }];
|
centralizedStations.value = [{ label: '', value: 0 }];
|
||||||
stations.forEach((station) => {
|
stations.forEach((station) => {
|
||||||
if (station.datas.concentrationStations) {
|
if (station.datas.concentrationStations || station.datas.depots) {
|
||||||
centralizedStations.value.push({
|
centralizedStations.value.push({
|
||||||
label: station.datas.name,
|
label: station.datas.name,
|
||||||
value: station.datas.id,
|
value: station.datas.id,
|
||||||
|
@ -8,6 +8,8 @@ import { TurnoutData } from 'src/drawApp/graphics/TurnoutInteraction';
|
|||||||
import { SectionData } from 'src/drawApp/graphics/SectionInteraction';
|
import { SectionData } from 'src/drawApp/graphics/SectionInteraction';
|
||||||
import { SignalData } from 'src/drawApp/graphics/SignalInteraction';
|
import { SignalData } from 'src/drawApp/graphics/SignalInteraction';
|
||||||
import { Signal } from '../signal/Signal';
|
import { Signal } from '../signal/Signal';
|
||||||
|
import { Platform } from '../platform/Platform';
|
||||||
|
import { PlatformData } from 'src/drawApp/graphics/PlatformInteraction';
|
||||||
|
|
||||||
//判断线段与线段有木有交点
|
//判断线段与线段有木有交点
|
||||||
export function isSegmentsIntersect(
|
export function isSegmentsIntersect(
|
||||||
@ -155,22 +157,23 @@ export function findContainDevice(
|
|||||||
|
|
||||||
export function handleCentralizedStationsData(
|
export function handleCentralizedStationsData(
|
||||||
devices: JlGraphic[],
|
devices: JlGraphic[],
|
||||||
centralizedStations: number[]
|
centralizedStation: number
|
||||||
) {
|
) {
|
||||||
interface GraphicData {
|
interface GraphicData {
|
||||||
centralizedStations: number[];
|
centralizedStation: number;
|
||||||
}
|
}
|
||||||
const dataMap = new Map<string, GraphicDataBase>([
|
const dataMap = new Map<string, GraphicDataBase>([
|
||||||
[Turnout.Type, new TurnoutData()],
|
[Turnout.Type, new TurnoutData()],
|
||||||
[Section.Type, new SectionData()],
|
[Section.Type, new SectionData()],
|
||||||
[Signal.Type, new SignalData()],
|
[Signal.Type, new SignalData()],
|
||||||
|
[Platform.Type, new PlatformData()],
|
||||||
]);
|
]);
|
||||||
devices.forEach((device) => {
|
devices.forEach((device) => {
|
||||||
const data = dataMap.get(device.type);
|
const data = dataMap.get(device.type);
|
||||||
if (data) {
|
if (data) {
|
||||||
data.copyFrom(device.saveData());
|
data.copyFrom(device.saveData());
|
||||||
const dataCopy = data as GraphicDataBase & GraphicData;
|
const dataCopy = data as GraphicDataBase & GraphicData;
|
||||||
dataCopy.centralizedStations = centralizedStations;
|
dataCopy.centralizedStation = centralizedStation;
|
||||||
device.updateData(data);
|
device.updateData(data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -246,10 +246,10 @@ const leftMenuConfig = [
|
|||||||
{ label: '一键生成分隔符', click: oneClickSeparator },
|
{ label: '一键生成分隔符', click: oneClickSeparator },
|
||||||
{ label: '一键生成计轴', click: oneClickAxleCounting },
|
{ label: '一键生成计轴', click: oneClickAxleCounting },
|
||||||
{ label: '一键生成道岔区段', click: oneClickTurnoutSection },
|
{ label: '一键生成道岔区段', click: oneClickTurnoutSection },
|
||||||
/* {
|
{
|
||||||
label: '一键关联设备所属的集中站',
|
label: '一键关联设备所属的集中站',
|
||||||
click: oneClickRelateCentralizedStation,
|
click: oneClickRelateCentralizedStation,
|
||||||
}, */
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
@ -343,7 +343,6 @@ function saveAllDrawDatas() {
|
|||||||
function buildRelations() {
|
function buildRelations() {
|
||||||
const app = getDrawApp();
|
const app = getDrawApp();
|
||||||
app?.detectRelations();
|
app?.detectRelations();
|
||||||
console.log(app);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function oneClickGeneration() {
|
function oneClickGeneration() {
|
||||||
@ -372,7 +371,7 @@ function oneClickTurnoutSection() {
|
|||||||
SDA.generateTurnoutSection();
|
SDA.generateTurnoutSection();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* function oneClickRelateCentralizedStation() {
|
function oneClickRelateCentralizedStation() {
|
||||||
const drawApp = drawStore.getDrawApp();
|
const drawApp = drawStore.getDrawApp();
|
||||||
const concentrationDividingLines = drawApp.queryStore
|
const concentrationDividingLines = drawApp.queryStore
|
||||||
.queryByType<ConcentrationDividingLine>(ConcentrationDividingLine.Type)
|
.queryByType<ConcentrationDividingLine>(ConcentrationDividingLine.Type)
|
||||||
@ -427,10 +426,10 @@ function oneClickTurnoutSection() {
|
|||||||
containDeviceIds = Array.from(new Set(containDeviceIds));
|
containDeviceIds = Array.from(new Set(containDeviceIds));
|
||||||
});
|
});
|
||||||
if (rightDatas.refRightStationId) {
|
if (rightDatas.refRightStationId) {
|
||||||
handleContainDevices(containDeviceIds, [rightDatas.refRightStationId]);
|
handleContainDevices(containDeviceIds, rightDatas.refRightStationId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//需要考虑是否绘制左右边界和车辆段这种
|
//需要考虑是否绘制左右边界
|
||||||
const leftBoundary = concentrationDividingLines[0];
|
const leftBoundary = concentrationDividingLines[0];
|
||||||
handleLeftBoundary(leftBoundary);
|
handleLeftBoundary(leftBoundary);
|
||||||
const rightBoundary =
|
const rightBoundary =
|
||||||
@ -485,7 +484,7 @@ function oneClickTurnoutSection() {
|
|||||||
|
|
||||||
function handleContainDevices(
|
function handleContainDevices(
|
||||||
containDeviceIds: number[],
|
containDeviceIds: number[],
|
||||||
centralizedStations: number
|
centralizedStation: number
|
||||||
) {
|
) {
|
||||||
const containDevices = containDeviceIds.map((id) => {
|
const containDevices = containDeviceIds.map((id) => {
|
||||||
return drawApp.queryStore.queryById(id);
|
return drawApp.queryStore.queryById(id);
|
||||||
@ -495,13 +494,26 @@ function oneClickTurnoutSection() {
|
|||||||
.filter((g) =>
|
.filter((g) =>
|
||||||
containDeviceIds.includes(g.datas.refDevice?.id as number)
|
containDeviceIds.includes(g.datas.refDevice?.id as number)
|
||||||
);
|
);
|
||||||
const allSetCentralizedStationsDevice = [...containDevices, ...signals];
|
let platforms: Platform[] = [];
|
||||||
|
if (centralizedStation !== 0) {
|
||||||
|
const station = drawApp.queryStore.queryById<Station>(centralizedStation);
|
||||||
|
platforms = drawApp.queryStore
|
||||||
|
.queryByType<Platform>(Platform.Type)
|
||||||
|
.filter((g) =>
|
||||||
|
station.datas.manageStations.includes(g.datas.refStation)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
const allSetCentralizedStationsDevice = [
|
||||||
|
...containDevices,
|
||||||
|
...signals,
|
||||||
|
...platforms,
|
||||||
|
];
|
||||||
allSetCentralizedStationsDevice.forEach(
|
allSetCentralizedStationsDevice.forEach(
|
||||||
(g) => ((g as Signal).datas.centralizedStation = [])
|
(g) => ((g as Signal).datas.centralizedStation = 0)
|
||||||
);
|
);
|
||||||
handleCentralizedStationsData(
|
handleCentralizedStationsData(
|
||||||
allSetCentralizedStationsDevice,
|
allSetCentralizedStationsDevice,
|
||||||
centralizedStations
|
centralizedStation
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function handleLeftBoundary(leftBoundary: ConcentrationDividingLine) {
|
function handleLeftBoundary(leftBoundary: ConcentrationDividingLine) {
|
||||||
@ -529,11 +541,12 @@ function oneClickTurnoutSection() {
|
|||||||
containDeviceIds = Array.from(new Set(containDeviceIds));
|
containDeviceIds = Array.from(new Set(containDeviceIds));
|
||||||
});
|
});
|
||||||
if (!leftBoundary.datas.refLeftStationId) {
|
if (!leftBoundary.datas.refLeftStationId) {
|
||||||
handleContainDevices(containDeviceIds, []);
|
handleContainDevices(containDeviceIds, 0);
|
||||||
} else {
|
} else {
|
||||||
handleContainDevices(containDeviceIds, [
|
handleContainDevices(
|
||||||
leftBoundary.datas.refLeftStationId,
|
containDeviceIds,
|
||||||
]);
|
leftBoundary.datas.refLeftStationId
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function handleRightBoundary(rightBoundary: ConcentrationDividingLine) {
|
function handleRightBoundary(rightBoundary: ConcentrationDividingLine) {
|
||||||
@ -560,15 +573,16 @@ function oneClickTurnoutSection() {
|
|||||||
);
|
);
|
||||||
containDeviceIds = Array.from(new Set(containDeviceIds));
|
containDeviceIds = Array.from(new Set(containDeviceIds));
|
||||||
});
|
});
|
||||||
if (rightBoundary.datas.refRightStationId) {
|
if (!rightBoundary.datas.refRightStationId) {
|
||||||
handleContainDevices(containDeviceIds, []);
|
handleContainDevices(containDeviceIds, 0);
|
||||||
} else {
|
} else {
|
||||||
handleContainDevices(containDeviceIds, [
|
handleContainDevices(
|
||||||
rightBoundary.datas.refRightStationId,
|
containDeviceIds,
|
||||||
]);
|
rightBoundary.datas.refRightStationId
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} */
|
|
||||||
|
|
||||||
function backConfirm() {
|
function backConfirm() {
|
||||||
router.go(-1);
|
router.go(-1);
|
||||||
|
Loading…
Reference in New Issue
Block a user