diff --git a/src/components/draw-app/dialogs/SectionCodePointList.vue b/src/components/draw-app/dialogs/SectionCodePointList.vue new file mode 100644 index 0000000..369e589 --- /dev/null +++ b/src/components/draw-app/dialogs/SectionCodePointList.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/components/draw-app/properties/KilometerConvertConfig.vue b/src/components/draw-app/properties/KilometerConvertConfig.vue index 0f4d7cd..dce0f5f 100644 --- a/src/components/draw-app/properties/KilometerConvertConfig.vue +++ b/src/components/draw-app/properties/KilometerConvertConfig.vue @@ -116,7 +116,7 @@ onMounted(() => { watch( () => drawStore.editKilometerConvertIndex, (val) => { - if (val) { + if (val > -1) { getData(); } } @@ -161,7 +161,7 @@ async function onSubmit() { } function onReset() { - handleState.value = '新建'; + // handleState.value = '新建'; data.kmA.coordinateSystem = 'MAIN_LINE'; data.kmA.kilometer = 0; data.kmA.direction = 0; diff --git a/src/components/draw-app/properties/SectionCodePointConfig.vue b/src/components/draw-app/properties/SectionCodePointConfig.vue new file mode 100644 index 0000000..2516c20 --- /dev/null +++ b/src/components/draw-app/properties/SectionCodePointConfig.vue @@ -0,0 +1,261 @@ + + + diff --git a/src/drawApp/commonApp.ts b/src/drawApp/commonApp.ts index 36f7e76..8fdac52 100644 --- a/src/drawApp/commonApp.ts +++ b/src/drawApp/commonApp.ts @@ -237,6 +237,7 @@ export function initCommonDrawApp(app: IDrawApp) { app.on('destroy', async () => { UniqueIdPrefix = new graphicData.UniqueIdOfStationLayout(); kilometerConvertList = []; + sectionCodePointList = []; }); } @@ -246,6 +247,7 @@ export function loadCommonDrawDatas( const datas: GraphicData[] = []; UniqueIdPrefix = storage.UniqueIdPrefix; kilometerConvertList = storage.kilometerConvertList; + sectionCodePointList = storage.sectionCodePointList; storage.Platforms.forEach((platform) => { datas.push(new PlatformData(platform)); }); @@ -380,6 +382,7 @@ export function saveCommonDrawDatas( } storage.UniqueIdPrefix = UniqueIdPrefix; storage.kilometerConvertList = kilometerConvertList; + storage.sectionCodePointList = sectionCodePointList; return storage; } @@ -465,3 +468,27 @@ export const directionOptions = [ { label: '左行', value: 0 }, { label: '右行', value: 1 }, ]; + +//区段码位列表增删改查 +let sectionCodePointList: graphicData.SectionCodePoint[] = []; +export function loadSectionCodePointList() { + return sectionCodePointList; +} +export function creatSectionCodePoint(row: graphicData.SectionCodePoint) { + sectionCodePointList.push(row); +} +export function editSectionCodePoint(row: graphicData.SectionCodePoint) { + const drawStore = useDrawStore(); + const sIndex = drawStore.editSectionCodePointIndex; + const find = sectionCodePointList.find( + (item, index) => + index != sIndex && item.centralizedStation == row.centralizedStation + ); + if (!find && sIndex > -1) { + sectionCodePointList.splice(sIndex, 1, row); + } +} + +export function deleteSectionCodePoint(index: number) { + sectionCodePointList.splice(index, 1); +} diff --git a/src/layouts/DrawLayout.vue b/src/layouts/DrawLayout.vue index 69c7db1..598cf3a 100644 --- a/src/layouts/DrawLayout.vue +++ b/src/layouts/DrawLayout.vue @@ -75,6 +75,11 @@ 公里标转换 + + + 区段码位列表 + + @@ -89,6 +94,9 @@ + @@ -288,6 +296,8 @@ import { CategoryType } from 'src/components/CategoryType'; import { graphicData } from 'src/protos/stationLayoutGraphics'; import KilometerConvertList from 'src/components/draw-app/dialogs/KilometerConvertList.vue'; import KilometerConvertConfig from 'src/components/draw-app/properties/KilometerConvertConfig.vue'; +import SectionCodePointList from 'src/components/draw-app/dialogs/SectionCodePointList.vue'; +import SectionCodePointConfig from 'src/components/draw-app/properties/SectionCodePointConfig.vue'; import StationRelateDeviceConfig from 'src/components/draw-app/properties/StationRelateDeviceConfig.vue'; import StationRelateDeviceList from 'src/components/draw-app/dialogs/StationRelateDeviceList.vue'; import { PictureType } from 'src/protos/picture'; @@ -749,6 +759,18 @@ function openkilometerConvertList() { }); } +const sectionCodePointDialog = ref(); +function openSectionCodePointList() { + if (sectionCodePointDialog.value) return; + sectionCodePointDialog.value = $q + .dialog({ + component: SectionCodePointList, + }) + .onCancel(() => { + sectionCodePointDialog.value = null; + }); +} + let relateDeviceDialogInstance: DialogChainObject | null = null; const relateDeviceConfigEdit = ref>(); diff --git a/src/protos/request.ts b/src/protos/request.ts index fd21add..87c51db 100644 --- a/src/protos/request.ts +++ b/src/protos/request.ts @@ -250,4 +250,52 @@ export namespace request { LightBCancelDs = 11 } } + export class Section extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | {}) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { } + } + static fromObject(data: {}): Section { + const message = new Section({}); + return message; + } + toObject() { + const data: {} = {}; + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Section { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Section(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): Section { + return Section.deserialize(bytes); + } + } + export namespace Section { + export enum AxleOperation { + Drst = 0, + Pdrst = 1, + TrainIn = 2, + TrainOut = 3 + } + } } diff --git a/src/protos/stationLayoutGraphics.ts b/src/protos/stationLayoutGraphics.ts index 5c081bf..455c69a 100644 --- a/src/protos/stationLayoutGraphics.ts +++ b/src/protos/stationLayoutGraphics.ts @@ -40,9 +40,10 @@ export namespace graphicData { kilometerConvertList?: KilometerConvert[]; screenDoors?: ScreenDoor[]; stationRelateDeviceList?: StationRelateDevice[]; + sectionCodePointList?: SectionCodePoint[]; }) { super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4, 5, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34], this.#one_of_decls); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [4, 5, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35], this.#one_of_decls); if (!Array.isArray(data) && typeof data == "object") { if ("canvas" in data && data.canvas != undefined) { this.canvas = data.canvas; @@ -128,6 +129,9 @@ export namespace graphicData { if ("stationRelateDeviceList" in data && data.stationRelateDeviceList != undefined) { this.stationRelateDeviceList = data.stationRelateDeviceList; } + if ("sectionCodePointList" in data && data.sectionCodePointList != undefined) { + this.sectionCodePointList = data.sectionCodePointList; + } } } get canvas() { @@ -304,6 +308,12 @@ export namespace graphicData { set stationRelateDeviceList(value: StationRelateDevice[]) { pb_1.Message.setRepeatedWrapperField(this, 34, value); } + get sectionCodePointList() { + return pb_1.Message.getRepeatedWrapperField(this, SectionCodePoint, 35) as SectionCodePoint[]; + } + set sectionCodePointList(value: SectionCodePoint[]) { + pb_1.Message.setRepeatedWrapperField(this, 35, value); + } static fromObject(data: { canvas?: ReturnType; Platforms?: ReturnType[]; @@ -333,6 +343,7 @@ export namespace graphicData { kilometerConvertList?: ReturnType[]; screenDoors?: ReturnType[]; stationRelateDeviceList?: ReturnType[]; + sectionCodePointList?: ReturnType[]; }): RtssGraphicStorage { const message = new RtssGraphicStorage({}); if (data.canvas != null) { @@ -419,6 +430,9 @@ export namespace graphicData { if (data.stationRelateDeviceList != null) { message.stationRelateDeviceList = data.stationRelateDeviceList.map(item => StationRelateDevice.fromObject(item)); } + if (data.sectionCodePointList != null) { + message.sectionCodePointList = data.sectionCodePointList.map(item => SectionCodePoint.fromObject(item)); + } return message; } toObject() { @@ -451,6 +465,7 @@ export namespace graphicData { kilometerConvertList?: ReturnType[]; screenDoors?: ReturnType[]; stationRelateDeviceList?: ReturnType[]; + sectionCodePointList?: ReturnType[]; } = {}; if (this.canvas != null) { data.canvas = this.canvas.toObject(); @@ -536,6 +551,9 @@ export namespace graphicData { if (this.stationRelateDeviceList != null) { data.stationRelateDeviceList = this.stationRelateDeviceList.map((item: StationRelateDevice) => item.toObject()); } + if (this.sectionCodePointList != null) { + data.sectionCodePointList = this.sectionCodePointList.map((item: SectionCodePoint) => item.toObject()); + } return data; } serialize(): Uint8Array; @@ -598,6 +616,8 @@ export namespace graphicData { writer.writeRepeatedMessage(33, this.screenDoors, (item: ScreenDoor) => item.serialize(writer)); if (this.stationRelateDeviceList.length) writer.writeRepeatedMessage(34, this.stationRelateDeviceList, (item: StationRelateDevice) => item.serialize(writer)); + if (this.sectionCodePointList.length) + writer.writeRepeatedMessage(35, this.sectionCodePointList, (item: SectionCodePoint) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); } @@ -691,6 +711,9 @@ export namespace graphicData { case 34: reader.readMessage(message.stationRelateDeviceList, () => pb_1.Message.addToRepeatedWrapperField(message, 34, StationRelateDevice.deserialize(reader), StationRelateDevice)); break; + case 35: + reader.readMessage(message.sectionCodePointList, () => pb_1.Message.addToRepeatedWrapperField(message, 35, SectionCodePoint.deserialize(reader), SectionCodePoint)); + break; default: reader.skipField(); } } @@ -7131,4 +7154,94 @@ export namespace graphicData { return DeviceCombinationtype.deserialize(bytes); } } + export class SectionCodePoint extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + centralizedStation?: string; + sectionIds?: string[]; + }) { + super(); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2], this.#one_of_decls); + if (!Array.isArray(data) && typeof data == "object") { + if ("centralizedStation" in data && data.centralizedStation != undefined) { + this.centralizedStation = data.centralizedStation; + } + if ("sectionIds" in data && data.sectionIds != undefined) { + this.sectionIds = data.sectionIds; + } + } + } + get centralizedStation() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set centralizedStation(value: string) { + pb_1.Message.setField(this, 1, value); + } + get sectionIds() { + return pb_1.Message.getFieldWithDefault(this, 2, []) as string[]; + } + set sectionIds(value: string[]) { + pb_1.Message.setField(this, 2, value); + } + static fromObject(data: { + centralizedStation?: string; + sectionIds?: string[]; + }): SectionCodePoint { + const message = new SectionCodePoint({}); + if (data.centralizedStation != null) { + message.centralizedStation = data.centralizedStation; + } + if (data.sectionIds != null) { + message.sectionIds = data.sectionIds; + } + return message; + } + toObject() { + const data: { + centralizedStation?: string; + sectionIds?: string[]; + } = {}; + if (this.centralizedStation != null) { + data.centralizedStation = this.centralizedStation; + } + if (this.sectionIds != null) { + data.sectionIds = this.sectionIds; + } + return data; + } + serialize(): Uint8Array; + serialize(w: pb_1.BinaryWriter): void; + serialize(w?: pb_1.BinaryWriter): Uint8Array | void { + const writer = w || new pb_1.BinaryWriter(); + if (this.centralizedStation.length) + writer.writeString(1, this.centralizedStation); + if (this.sectionIds.length) + writer.writeRepeatedString(2, this.sectionIds); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): SectionCodePoint { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new SectionCodePoint(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.centralizedStation = reader.readString(); + break; + case 2: + pb_1.Message.addToRepeatedField(message, 2, reader.readString()); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): SectionCodePoint { + return SectionCodePoint.deserialize(bytes); + } + } } diff --git a/src/stores/draw-store.ts b/src/stores/draw-store.ts index 57c9792..7c3b22d 100644 --- a/src/stores/draw-store.ts +++ b/src/stores/draw-store.ts @@ -28,6 +28,7 @@ export const useDrawStore = defineStore('draw', { categoryType: null as CategoryType | null, oneClickType: '', editKilometerConvertIndex: -1, + editSectionCodePointIndex: -1, table: undefined as QTable | undefined, showRelateDeviceConfig: false, }), @@ -81,6 +82,9 @@ export const useDrawStore = defineStore('draw', { showEditKilometerConvert: (state) => { return state.editKilometerConvertIndex >= 0; }, + showEditSectionCodePoint: (state) => { + return state.editSectionCodePointIndex >= 0; + }, }, actions: { getDrawApp(): IDrawApp { @@ -151,5 +155,8 @@ export const useDrawStore = defineStore('draw', { setEditKilometerConvertIndex(index: number) { this.editKilometerConvertIndex = index; }, + setEditSectionCodePointIndex(index: number) { + this.editSectionCodePointIndex = index; + }, }, });