From a269851c538eea4d1dbb1c783bd79fa9a3556f23 Mon Sep 17 00:00:00 2001 From: fan Date: Thu, 12 Oct 2023 13:23:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=95=B0=E6=8D=AE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BB=84=E5=90=88=E6=9A=82=E6=8F=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bj-rtss-message | 2 +- .../dialogs/StationRelateDeviceList.vue | 151 ++++++++ .../properties/StationRelateDeviceConfig.vue | 327 ++++++++++++++++++ src/drawApp/thApp.ts | 50 +++ src/protos/stationLayoutGraphics.ts | 228 +++++++++++- src/stores/draw-store.ts | 3 + src/stores/psl-draw-store.ts | 1 - 7 files changed, 759 insertions(+), 3 deletions(-) create mode 100644 src/components/draw-app/dialogs/StationRelateDeviceList.vue create mode 100644 src/components/draw-app/properties/StationRelateDeviceConfig.vue diff --git a/bj-rtss-message b/bj-rtss-message index 85290a8..6a2a393 160000 --- a/bj-rtss-message +++ b/bj-rtss-message @@ -1 +1 @@ -Subproject commit 85290a8ba96ee41ab47a61f44e913f308c8599d7 +Subproject commit 6a2a393bf035066167d68d8538a8160aa866da4e diff --git a/src/components/draw-app/dialogs/StationRelateDeviceList.vue b/src/components/draw-app/dialogs/StationRelateDeviceList.vue new file mode 100644 index 0000000..9aec704 --- /dev/null +++ b/src/components/draw-app/dialogs/StationRelateDeviceList.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/components/draw-app/properties/StationRelateDeviceConfig.vue b/src/components/draw-app/properties/StationRelateDeviceConfig.vue new file mode 100644 index 0000000..6d8ae2d --- /dev/null +++ b/src/components/draw-app/properties/StationRelateDeviceConfig.vue @@ -0,0 +1,327 @@ + + + diff --git a/src/drawApp/thApp.ts b/src/drawApp/thApp.ts index dc859e1..3a0d0e0 100644 --- a/src/drawApp/thApp.ts +++ b/src/drawApp/thApp.ts @@ -143,3 +143,53 @@ export function saveThDrawDatas(app: IDrawApp) { const base64 = fromUint8Array(storage.serialize()); return base64; } + +//关联设备列表的增删改查 +export interface RelateDevicelistItem { + deviceType: graphicData.RelatedRef.DeviceType | undefined; + code: string; + combinationtypes: { + code: string; + refDevices: string[]; + refDevicesCode?: string[]; + expanded?: boolean; + }[]; +} + +const refDevicesList: graphicData.StationRelateDevice[] = []; +export function loadStationRelateDeviceList() { + return refDevicesList; +} + +export function creatStationRelateDevice(row: graphicData.StationRelateDevice) { + refDevicesList.push(row); + thDrawApp?.emit('postdataloaded'); +} + +export function editStationRelateDevice( + editRow: RelateDevicelistItem, + newData: graphicData.StationRelateDevice +) { + for (let i = 0; i < refDevicesList.length; i++) { + if ( + refDevicesList[i].deviceType == editRow.deviceType && + refDevicesList[i].code == editRow.code + ) { + refDevicesList[i] = newData; + break; + } + } + thDrawApp?.emit('postdataloaded'); +} + +export function deleteStationRelateDevice(row: RelateDevicelistItem) { + for (let i = 0; i < refDevicesList.length; i++) { + if ( + refDevicesList[i].deviceType == row.deviceType && + refDevicesList[i].code == row.code + ) { + refDevicesList.splice(i, 1); + break; + } + } +} diff --git a/src/protos/stationLayoutGraphics.ts b/src/protos/stationLayoutGraphics.ts index 649006b..36a09ab 100644 --- a/src/protos/stationLayoutGraphics.ts +++ b/src/protos/stationLayoutGraphics.ts @@ -39,9 +39,10 @@ export namespace graphicData { UniqueIdPrefix?: UniqueIdOfStationLayout; kilometerConvertList?: KilometerConvert[]; screenDoors?: ScreenDoor[]; + stationRelateDeviceList?: StationRelateDevice[]; }) { 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], 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], this.#one_of_decls); if (!Array.isArray(data) && typeof data == "object") { if ("canvas" in data && data.canvas != undefined) { this.canvas = data.canvas; @@ -124,6 +125,9 @@ export namespace graphicData { if ("screenDoors" in data && data.screenDoors != undefined) { this.screenDoors = data.screenDoors; } + if ("stationRelateDeviceList" in data && data.stationRelateDeviceList != undefined) { + this.stationRelateDeviceList = data.stationRelateDeviceList; + } } } get canvas() { @@ -294,6 +298,12 @@ export namespace graphicData { set screenDoors(value: ScreenDoor[]) { pb_1.Message.setRepeatedWrapperField(this, 33, value); } + get stationRelateDeviceList() { + return pb_1.Message.getRepeatedWrapperField(this, StationRelateDevice, 34) as StationRelateDevice[]; + } + set stationRelateDeviceList(value: StationRelateDevice[]) { + pb_1.Message.setRepeatedWrapperField(this, 34, value); + } static fromObject(data: { canvas?: ReturnType; Platforms?: ReturnType[]; @@ -322,6 +332,7 @@ export namespace graphicData { UniqueIdPrefix?: ReturnType; kilometerConvertList?: ReturnType[]; screenDoors?: ReturnType[]; + stationRelateDeviceList?: ReturnType[]; }): RtssGraphicStorage { const message = new RtssGraphicStorage({}); if (data.canvas != null) { @@ -405,6 +416,9 @@ export namespace graphicData { if (data.screenDoors != null) { message.screenDoors = data.screenDoors.map(item => ScreenDoor.fromObject(item)); } + if (data.stationRelateDeviceList != null) { + message.stationRelateDeviceList = data.stationRelateDeviceList.map(item => StationRelateDevice.fromObject(item)); + } return message; } toObject() { @@ -436,6 +450,7 @@ export namespace graphicData { UniqueIdPrefix?: ReturnType; kilometerConvertList?: ReturnType[]; screenDoors?: ReturnType[]; + stationRelateDeviceList?: ReturnType[]; } = {}; if (this.canvas != null) { data.canvas = this.canvas.toObject(); @@ -518,6 +533,9 @@ export namespace graphicData { if (this.screenDoors != null) { data.screenDoors = this.screenDoors.map((item: ScreenDoor) => item.toObject()); } + if (this.stationRelateDeviceList != null) { + data.stationRelateDeviceList = this.stationRelateDeviceList.map((item: StationRelateDevice) => item.toObject()); + } return data; } serialize(): Uint8Array; @@ -578,6 +596,8 @@ export namespace graphicData { writer.writeRepeatedMessage(32, this.kilometerConvertList, (item: KilometerConvert) => item.serialize(writer)); if (this.screenDoors.length) 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 (!w) return writer.getResultBuffer(); } @@ -668,6 +688,9 @@ export namespace graphicData { case 33: reader.readMessage(message.screenDoors, () => pb_1.Message.addToRepeatedWrapperField(message, 33, ScreenDoor.deserialize(reader), ScreenDoor)); break; + case 34: + reader.readMessage(message.stationRelateDeviceList, () => pb_1.Message.addToRepeatedWrapperField(message, 34, StationRelateDevice.deserialize(reader), StationRelateDevice)); + break; default: reader.skipField(); } } @@ -6595,4 +6618,207 @@ export namespace graphicData { return KilometerConvert.deserialize(bytes); } } + export class StationRelateDevice extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + code?: string; + combinationtypes?: Combinationtype[]; + deviceType?: RelatedRef.DeviceType; + }) { + 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 ("code" in data && data.code != undefined) { + this.code = data.code; + } + if ("combinationtypes" in data && data.combinationtypes != undefined) { + this.combinationtypes = data.combinationtypes; + } + if ("deviceType" in data && data.deviceType != undefined) { + this.deviceType = data.deviceType; + } + } + } + get code() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set code(value: string) { + pb_1.Message.setField(this, 1, value); + } + get combinationtypes() { + return pb_1.Message.getRepeatedWrapperField(this, Combinationtype, 2) as Combinationtype[]; + } + set combinationtypes(value: Combinationtype[]) { + pb_1.Message.setRepeatedWrapperField(this, 2, value); + } + get deviceType() { + return pb_1.Message.getFieldWithDefault(this, 3, RelatedRef.DeviceType.Section) as RelatedRef.DeviceType; + } + set deviceType(value: RelatedRef.DeviceType) { + pb_1.Message.setField(this, 3, value); + } + static fromObject(data: { + code?: string; + combinationtypes?: ReturnType[]; + deviceType?: RelatedRef.DeviceType; + }): StationRelateDevice { + const message = new StationRelateDevice({}); + if (data.code != null) { + message.code = data.code; + } + if (data.combinationtypes != null) { + message.combinationtypes = data.combinationtypes.map(item => Combinationtype.fromObject(item)); + } + if (data.deviceType != null) { + message.deviceType = data.deviceType; + } + return message; + } + toObject() { + const data: { + code?: string; + combinationtypes?: ReturnType[]; + deviceType?: RelatedRef.DeviceType; + } = {}; + if (this.code != null) { + data.code = this.code; + } + if (this.combinationtypes != null) { + data.combinationtypes = this.combinationtypes.map((item: Combinationtype) => item.toObject()); + } + if (this.deviceType != null) { + data.deviceType = this.deviceType; + } + 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.code.length) + writer.writeString(1, this.code); + if (this.combinationtypes.length) + writer.writeRepeatedMessage(2, this.combinationtypes, (item: Combinationtype) => item.serialize(writer)); + if (this.deviceType != RelatedRef.DeviceType.Section) + writer.writeEnum(3, this.deviceType); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): StationRelateDevice { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new StationRelateDevice(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.code = reader.readString(); + break; + case 2: + reader.readMessage(message.combinationtypes, () => pb_1.Message.addToRepeatedWrapperField(message, 2, Combinationtype.deserialize(reader), Combinationtype)); + break; + case 3: + message.deviceType = reader.readEnum(); + break; + default: reader.skipField(); + } + } + return message; + } + serializeBinary(): Uint8Array { + return this.serialize(); + } + static deserializeBinary(bytes: Uint8Array): StationRelateDevice { + return StationRelateDevice.deserialize(bytes); + } + } + export class Combinationtype extends pb_1.Message { + #one_of_decls: number[][] = []; + constructor(data?: any[] | { + code?: string; + refDevices?: 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 ("code" in data && data.code != undefined) { + this.code = data.code; + } + if ("refDevices" in data && data.refDevices != undefined) { + this.refDevices = data.refDevices; + } + } + } + get code() { + return pb_1.Message.getFieldWithDefault(this, 1, "") as string; + } + set code(value: string) { + pb_1.Message.setField(this, 1, value); + } + get refDevices() { + return pb_1.Message.getFieldWithDefault(this, 2, []) as string[]; + } + set refDevices(value: string[]) { + pb_1.Message.setField(this, 2, value); + } + static fromObject(data: { + code?: string; + refDevices?: string[]; + }): Combinationtype { + const message = new Combinationtype({}); + if (data.code != null) { + message.code = data.code; + } + if (data.refDevices != null) { + message.refDevices = data.refDevices; + } + return message; + } + toObject() { + const data: { + code?: string; + refDevices?: string[]; + } = {}; + if (this.code != null) { + data.code = this.code; + } + if (this.refDevices != null) { + data.refDevices = this.refDevices; + } + 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.code.length) + writer.writeString(1, this.code); + if (this.refDevices.length) + writer.writeRepeatedString(2, this.refDevices); + if (!w) + return writer.getResultBuffer(); + } + static deserialize(bytes: Uint8Array | pb_1.BinaryReader): Combinationtype { + const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new Combinationtype(); + while (reader.nextField()) { + if (reader.isEndGroup()) + break; + switch (reader.getFieldNumber()) { + case 1: + message.code = 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): Combinationtype { + return Combinationtype.deserialize(bytes); + } + } } diff --git a/src/stores/draw-store.ts b/src/stores/draw-store.ts index 376487d..57c9792 100644 --- a/src/stores/draw-store.ts +++ b/src/stores/draw-store.ts @@ -1,5 +1,6 @@ import { defineStore } from 'pinia'; import { CategoryType } from 'src/components/CategoryType'; +import { QTable } from 'quasar'; import { destroyThDrawApp, getThDrawApp, @@ -27,6 +28,8 @@ export const useDrawStore = defineStore('draw', { categoryType: null as CategoryType | null, oneClickType: '', editKilometerConvertIndex: -1, + table: undefined as QTable | undefined, + showRelateDeviceConfig: false, }), getters: { drawMode: (state) => state.drawAssistant != null, diff --git a/src/stores/psl-draw-store.ts b/src/stores/psl-draw-store.ts index 2df7187..4673d54 100644 --- a/src/stores/psl-draw-store.ts +++ b/src/stores/psl-draw-store.ts @@ -16,7 +16,6 @@ export const usePslDrawStore = defineStore('pslDraw', { oneClickType: '', table: undefined as QTable | undefined, showRelateDeviceConfig: false, - tableOfCombinationType: undefined as QTable | undefined, }), getters: { drawMode: (state) => state.drawAssistant != null,