From a5b927cd42c69db6c50d66cee820f8c1ae71ba31 Mon Sep 17 00:00:00 2001 From: fan Date: Fri, 13 Oct 2023 15:58:15 +0800 Subject: [PATCH] =?UTF-8?q?psl=E7=BB=84=E5=90=88=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bj-rtss-message | 2 +- .../dialogs/GatedRelateDeviceList.vue | 50 ++-- .../properties/RelateDeviceConfig.vue | 255 ++++++------------ src/drawApp/pslApp.ts | 26 +- src/protos/pslGraphics.ts | 131 +-------- 5 files changed, 117 insertions(+), 347 deletions(-) diff --git a/bj-rtss-message b/bj-rtss-message index 7d027a7..73dcb43 160000 --- a/bj-rtss-message +++ b/bj-rtss-message @@ -1 +1 @@ -Subproject commit 7d027a7e5e284dc2f20e3380472efad533435ace +Subproject commit 73dcb43c7634f0b1ea69fd2745408f86456a56bb diff --git a/src/components/draw-app/dialogs/GatedRelateDeviceList.vue b/src/components/draw-app/dialogs/GatedRelateDeviceList.vue index 9b30eb2..e92dc7e 100644 --- a/src/components/draw-app/dialogs/GatedRelateDeviceList.vue +++ b/src/components/draw-app/dialogs/GatedRelateDeviceList.vue @@ -54,28 +54,28 @@ import { RelateDevicelistItem, } from 'src/drawApp/pslApp'; import { usePslDrawStore } from 'src/stores/psl-draw-store'; +import { PslButton } from 'src/graphics/pslButton/pslButton'; +import { PslKey } from 'src/graphics/pslKey/pslKey'; +import { PslLight } from 'src/graphics/pslLight/pslLight'; const pslDrawStore = usePslDrawStore(); const $q = useQuasar(); const tableRef = ref(); -const deviceTypeMap = { - 6: '车站', -}; const columns: QTable['columns'] = [ + { name: 'code', label: '组合类型', field: 'code', align: 'center' }, { - name: 'deviceType', - label: '设备类型', - field: (row) => deviceTypeMap[row.deviceType as keyof typeof deviceTypeMap], - align: 'center', - }, - { name: 'code', label: '设备编号', field: 'code', align: 'center' }, - { - name: 'combinationtypes', - label: '关联的组合类型', + name: 'refRelays', + label: '关联的设备', field: (row: RelateDevicelistItem) => { - if (row.combinationtypes) { - const ref = row.combinationtypes.map( - (combinationtype) => combinationtype.code + if (row.refDevices) { + const ref = row.refDevices.map( + (id) => + ( + pslDrawStore.getDrawApp().queryStore.queryById(id) as + | PslButton + | PslKey + | PslLight + ).datas.code ); return ref.join('\\'); } @@ -126,18 +126,16 @@ function creatData() { } function deleteData(row: RelateDevicelistItem) { - $q.dialog({ message: `确定删除 "${row.code}" 吗?`, cancel: true }).onOk( - async () => { - try { - deleteGatedRelateDevice(row); - successNotify('删除数据成功!'); - } catch (err) { - errorNotify('删除失败:', err); - } finally { - tableRef.value?.requestServerInteraction(); - } + $q.dialog({ message: '确定删除吗?', cancel: true }).onOk(async () => { + try { + deleteGatedRelateDevice(row); + successNotify('删除数据成功!'); + } catch (err) { + errorNotify('删除失败:', err); + } finally { + tableRef.value?.requestServerInteraction(); } - ); + }); } diff --git a/src/components/draw-app/properties/RelateDeviceConfig.vue b/src/components/draw-app/properties/RelateDeviceConfig.vue index e29d727..c8d36fb 100644 --- a/src/components/draw-app/properties/RelateDeviceConfig.vue +++ b/src/components/draw-app/properties/RelateDeviceConfig.vue @@ -6,80 +6,43 @@ - - - - - - - + + + +
+ + {{ item }} + +
+
+ -
- - {{ item }} - -
-
- - -
- - - - +
+
+
+
-
@@ -98,7 +61,6 @@ import { usePslDrawStore } from 'src/stores/psl-draw-store'; import { PslKey } from 'src/graphics/pslKey/pslKey'; import { PslButton } from 'src/graphics/pslButton/pslButton'; import { PslLight } from 'src/graphics/pslLight/pslLight'; -import { pslGraphicData } from 'src/protos/pslGraphics'; import { creatGatedRelateDevice, editGatedRelateDevice, @@ -112,32 +74,21 @@ const pslDrawStore = usePslDrawStore(); const $q = useQuasar(); const showRangeConfig = ref(true); const relateDeviceConfig = ref<{ - deviceType: graphicData.RelatedRef.DeviceType | undefined; code: string; - combinationtypes: { - code: string; - refDevices: string[]; - refDevicesCode: string[]; - expanded: boolean; - }[]; + refDevices: string[]; + refDevicesCode: string[]; }>({ - deviceType: undefined, - code: '', - combinationtypes: [ - { code: '组合类型', refDevices: [], refDevicesCode: [], expanded: false }, - ], + code: '组合类型', + refDevices: [], + refDevicesCode: [], }); const handleState = ref('新建门控箱关联设备'); -const optionsType = [ - { label: '车站', value: graphicData.RelatedRef.DeviceType.station }, -]; - let selectGraphic: JlGraphic[] = []; watch( () => pslDrawStore.selectedGraphics, (val) => { - if (val && val.length > 0 && clickIndex !== null) { + if (val && val.length > 0) { const selectFilter = pslDrawStore.selectedGraphics?.filter( (g) => g.type == PslKey.Type || @@ -147,14 +98,14 @@ watch( selectGraphic.push(...selectFilter); selectGraphic = Array.from(new Set(selectGraphic)); pslDrawStore.getDrawApp().updateSelected(...selectGraphic); - relateDeviceConfig.value.combinationtypes[clickIndex].refDevicesCode = - selectGraphic.map((g) => - (g as PslKey | PslButton | PslLight).datas.code == '' - ? g.id - : (g as PslKey | PslButton | PslLight).datas.code - ); - relateDeviceConfig.value.combinationtypes[clickIndex].refDevices = - selectGraphic.map((g) => g.id) as string[]; + relateDeviceConfig.value.refDevicesCode = selectGraphic.map((g) => + (g as PslKey | PslButton | PslLight).datas.code == '' + ? g.id + : (g as PslKey | PslButton | PslLight).datas.code + ); + relateDeviceConfig.value.refDevices = selectGraphic.map( + (g) => g.id + ) as string[]; } } ); @@ -171,28 +122,19 @@ async function onSubmit() { myForm.value?.validate().then(async (res) => { if (res) { try { - const combinationtypes: graphicData.DeviceCombinationtype[] = []; - relateDeviceConfig.value.combinationtypes.forEach((combinationtype) => { - combinationtypes.push( - new graphicData.DeviceCombinationtype({ - code: combinationtype.code, - refDevices: combinationtype.refDevices, - }) - ); - }); - const gatedRelateDevice = new pslGraphicData.GatedRelateDevice({ - deviceType: relateDeviceConfig.value.deviceType, - code: relateDeviceConfig.value.code, - combinationtypes: combinationtypes, - }); + const combinationtype: graphicData.DeviceCombinationtype = + new graphicData.DeviceCombinationtype({ + code: relateDeviceConfig.value.code, + refDevices: relateDeviceConfig.value.refDevices, + }); if (handleState.value == '新建门控箱关联设备') { handle.value = '创建成功'; handleError.value = '创建失败'; - creatGatedRelateDevice(gatedRelateDevice); + creatGatedRelateDevice(combinationtype); } else { handle.value = '更新成功'; handleError.value = '更新失败'; - editGatedRelateDevice(editRow, gatedRelateDevice); + editGatedRelateDevice(editRow, combinationtype); } pslDrawStore.table?.requestServerInteraction(); $q.notify({ @@ -221,27 +163,18 @@ async function editRelateDevices(row: RelateDevicelistItem) { selectGraphic = []; drawApp.updateSelected(); editRow = row; - relateDeviceConfig.value.deviceType = row.deviceType; + const refCode: string[] = []; + row.refDevices.forEach((id) => { + const g = drawApp.queryStore.queryById(id) as + | PslButton + | PslKey + | PslLight; + refCode.push(g.datas.code); + }); + row.refDevicesCode = refCode; relateDeviceConfig.value.code = row.code; - row.combinationtypes.forEach((combinationtype) => { - const refCode: string[] = []; - combinationtype.refDevices.forEach((id) => { - const g = drawApp.queryStore.queryById(id); - refCode.push(g.code); - }); - combinationtype.refDevicesCode = refCode; - combinationtype.expanded = false; - }); - relateDeviceConfig.value.combinationtypes = []; - row.combinationtypes.forEach((combinationtype) => { - const { code, refDevices, refDevicesCode, expanded } = combinationtype; - relateDeviceConfig.value.combinationtypes.push({ - code, - refDevices, - refDevicesCode: refDevicesCode as string[], - expanded: expanded as boolean, - }); - }); + relateDeviceConfig.value.refDevices = row.refDevices; + relateDeviceConfig.value.refDevicesCode = row.refDevicesCode; } catch (err) { $q.notify({ type: 'negative', @@ -250,40 +183,19 @@ async function editRelateDevices(row: RelateDevicelistItem) { } } -let clickIndex: null | number = null; -function toggleItem(index: number) { - const drawApp = pslDrawStore.getDrawApp(); - selectGraphic = []; - drawApp.updateSelected(); - const combinationtypes = relateDeviceConfig.value.combinationtypes; - if (combinationtypes[index].expanded == true) { - clickIndex = index; - const select: JlGraphic[] = []; - combinationtypes[index].refDevices.forEach((id: string) => { - const g = drawApp.queryStore.queryById(id); - select.push(g); - }); - drawApp.updateSelected(...select); - } else { - clickIndex = null; - } -} - function removeSelect(code: string) { - const clickTarget = - relateDeviceConfig.value.combinationtypes[clickIndex as number]; - const removeIndex = clickTarget.refDevicesCode.findIndex( + const removeIndex = relateDeviceConfig.value.refDevicesCode.findIndex( (item) => item == code ); selectGraphic.splice(removeIndex, 1); - clickTarget.refDevicesCode.splice(removeIndex, 1); - clickTarget.refDevices.splice(removeIndex, 1); + relateDeviceConfig.value.refDevicesCode.splice(removeIndex, 1); + relateDeviceConfig.value.refDevices.splice(removeIndex, 1); pslDrawStore.getDrawApp().updateSelected(...selectGraphic); } -function clearAllSelect(index: number) { - relateDeviceConfig.value.combinationtypes[index].refDevices = []; - relateDeviceConfig.value.combinationtypes[index].refDevicesCode = []; +function clearAllSelect() { + relateDeviceConfig.value.refDevices = []; + relateDeviceConfig.value.refDevicesCode = []; clearAllSelectAtCanvas(); } @@ -292,29 +204,12 @@ function clearAllSelectAtCanvas() { pslDrawStore.getDrawApp().updateSelected(); } -function addCombinationtype() { - relateDeviceConfig.value.combinationtypes.push({ +function onReset() { + handleState.value = '新建门控箱关联设备'; + relateDeviceConfig.value = { code: '组合类型', refDevices: [], refDevicesCode: [], - expanded: false, - }); -} - -function deleteCombinationtype(index: number) { - relateDeviceConfig.value.combinationtypes.splice(index, 1); - clearAllSelectAtCanvas(); -} - -function onReset() { - clickIndex = null; - handleState.value = '新建门控箱关联设备'; - relateDeviceConfig.value = { - deviceType: undefined, - code: '', - combinationtypes: [ - { code: '组合类型', refDevices: [], refDevicesCode: [], expanded: false }, - ], }; clearAllSelectAtCanvas(); } diff --git a/src/drawApp/pslApp.ts b/src/drawApp/pslApp.ts index 4db7ed9..ba8bee5 100644 --- a/src/drawApp/pslApp.ts +++ b/src/drawApp/pslApp.ts @@ -231,35 +231,28 @@ export async function loadPslDrawDatas(): Promise { //关联设备列表的增删改查 export interface RelateDevicelistItem { - deviceType: graphicData.RelatedRef.DeviceType | undefined; code: string; - combinationtypes: { - code: string; - refDevices: string[]; - refDevicesCode?: string[]; - expanded?: boolean; - }[]; + refDevices: string[]; + refDevicesCode?: string[]; } -let refDevicesList: pslGraphicData.GatedRelateDevice[] = []; +let refDevicesList: graphicData.DeviceCombinationtype[] = []; export function loadGatedRelateDeviceList() { return refDevicesList; } -export function creatGatedRelateDevice(row: pslGraphicData.GatedRelateDevice) { +export function creatGatedRelateDevice(row: graphicData.DeviceCombinationtype) { refDevicesList.push(row); + console.log(refDevicesList, '===='); drawApp?.emit('postdataloaded'); } export function editGatedRelateDevice( editRow: RelateDevicelistItem, - newData: pslGraphicData.GatedRelateDevice + newData: graphicData.DeviceCombinationtype ) { for (let i = 0; i < refDevicesList.length; i++) { - if ( - refDevicesList[i].deviceType == editRow.deviceType && - refDevicesList[i].code == editRow.code - ) { + if (refDevicesList[i].code == editRow.code) { refDevicesList[i] = newData; break; } @@ -269,10 +262,7 @@ export function editGatedRelateDevice( export function deleteGatedRelateDevice(row: RelateDevicelistItem) { for (let i = 0; i < refDevicesList.length; i++) { - if ( - refDevicesList[i].deviceType == row.deviceType && - refDevicesList[i].code == row.code - ) { + if (refDevicesList[i].code == row.code) { refDevicesList.splice(i, 1); break; } diff --git a/src/protos/pslGraphics.ts b/src/protos/pslGraphics.ts index 2f946e8..26ea3c7 100644 --- a/src/protos/pslGraphics.ts +++ b/src/protos/pslGraphics.ts @@ -19,7 +19,7 @@ export namespace pslGraphicData { pslButtons?: PslButton[]; pslKeys?: PslKey[]; pslTexts?: PslText[]; - gatedRelateDeviceList?: GatedRelateDevice[]; + gatedRelateDeviceList?: dependency_1.graphicData.DeviceCombinationtype[]; }) { super(); pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [2, 3, 4, 5, 6], this.#one_of_decls); @@ -78,9 +78,9 @@ export namespace pslGraphicData { pb_1.Message.setRepeatedWrapperField(this, 5, value); } get gatedRelateDeviceList() { - return pb_1.Message.getRepeatedWrapperField(this, GatedRelateDevice, 6) as GatedRelateDevice[]; + return pb_1.Message.getRepeatedWrapperField(this, dependency_1.graphicData.DeviceCombinationtype, 6) as dependency_1.graphicData.DeviceCombinationtype[]; } - set gatedRelateDeviceList(value: GatedRelateDevice[]) { + set gatedRelateDeviceList(value: dependency_1.graphicData.DeviceCombinationtype[]) { pb_1.Message.setRepeatedWrapperField(this, 6, value); } static fromObject(data: { @@ -89,7 +89,7 @@ export namespace pslGraphicData { pslButtons?: ReturnType[]; pslKeys?: ReturnType[]; pslTexts?: ReturnType[]; - gatedRelateDeviceList?: ReturnType[]; + gatedRelateDeviceList?: ReturnType[]; }): PslGraphicStorage { const message = new PslGraphicStorage({}); if (data.canvas != null) { @@ -108,7 +108,7 @@ export namespace pslGraphicData { message.pslTexts = data.pslTexts.map(item => PslText.fromObject(item)); } if (data.gatedRelateDeviceList != null) { - message.gatedRelateDeviceList = data.gatedRelateDeviceList.map(item => GatedRelateDevice.fromObject(item)); + message.gatedRelateDeviceList = data.gatedRelateDeviceList.map(item => dependency_1.graphicData.DeviceCombinationtype.fromObject(item)); } return message; } @@ -119,7 +119,7 @@ export namespace pslGraphicData { pslButtons?: ReturnType[]; pslKeys?: ReturnType[]; pslTexts?: ReturnType[]; - gatedRelateDeviceList?: ReturnType[]; + gatedRelateDeviceList?: ReturnType[]; } = {}; if (this.canvas != null) { data.canvas = this.canvas.toObject(); @@ -137,7 +137,7 @@ export namespace pslGraphicData { data.pslTexts = this.pslTexts.map((item: PslText) => item.toObject()); } if (this.gatedRelateDeviceList != null) { - data.gatedRelateDeviceList = this.gatedRelateDeviceList.map((item: GatedRelateDevice) => item.toObject()); + data.gatedRelateDeviceList = this.gatedRelateDeviceList.map((item: dependency_1.graphicData.DeviceCombinationtype) => item.toObject()); } return data; } @@ -156,7 +156,7 @@ export namespace pslGraphicData { if (this.pslTexts.length) writer.writeRepeatedMessage(5, this.pslTexts, (item: PslText) => item.serialize(writer)); if (this.gatedRelateDeviceList.length) - writer.writeRepeatedMessage(6, this.gatedRelateDeviceList, (item: GatedRelateDevice) => item.serialize(writer)); + writer.writeRepeatedMessage(6, this.gatedRelateDeviceList, (item: dependency_1.graphicData.DeviceCombinationtype) => item.serialize(writer)); if (!w) return writer.getResultBuffer(); } @@ -182,7 +182,7 @@ export namespace pslGraphicData { reader.readMessage(message.pslTexts, () => pb_1.Message.addToRepeatedWrapperField(message, 5, PslText.deserialize(reader), PslText)); break; case 6: - reader.readMessage(message.gatedRelateDeviceList, () => pb_1.Message.addToRepeatedWrapperField(message, 6, GatedRelateDevice.deserialize(reader), GatedRelateDevice)); + reader.readMessage(message.gatedRelateDeviceList, () => pb_1.Message.addToRepeatedWrapperField(message, 6, dependency_1.graphicData.DeviceCombinationtype.deserialize(reader), dependency_1.graphicData.DeviceCombinationtype)); break; default: reader.skipField(); } @@ -683,117 +683,4 @@ export namespace pslGraphicData { return PslText.deserialize(bytes); } } - export class GatedRelateDevice extends pb_1.Message { - #one_of_decls: number[][] = []; - constructor(data?: any[] | { - code?: string; - combinationtypes?: dependency_1.graphicData.DeviceCombinationtype[]; - deviceType?: dependency_1.graphicData.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, dependency_1.graphicData.DeviceCombinationtype, 2) as dependency_1.graphicData.DeviceCombinationtype[]; - } - set combinationtypes(value: dependency_1.graphicData.DeviceCombinationtype[]) { - pb_1.Message.setRepeatedWrapperField(this, 2, value); - } - get deviceType() { - return pb_1.Message.getFieldWithDefault(this, 3, dependency_1.graphicData.RelatedRef.DeviceType.Section) as dependency_1.graphicData.RelatedRef.DeviceType; - } - set deviceType(value: dependency_1.graphicData.RelatedRef.DeviceType) { - pb_1.Message.setField(this, 3, value); - } - static fromObject(data: { - code?: string; - combinationtypes?: ReturnType[]; - deviceType?: dependency_1.graphicData.RelatedRef.DeviceType; - }): GatedRelateDevice { - const message = new GatedRelateDevice({}); - if (data.code != null) { - message.code = data.code; - } - if (data.combinationtypes != null) { - message.combinationtypes = data.combinationtypes.map(item => dependency_1.graphicData.DeviceCombinationtype.fromObject(item)); - } - if (data.deviceType != null) { - message.deviceType = data.deviceType; - } - return message; - } - toObject() { - const data: { - code?: string; - combinationtypes?: ReturnType[]; - deviceType?: dependency_1.graphicData.RelatedRef.DeviceType; - } = {}; - if (this.code != null) { - data.code = this.code; - } - if (this.combinationtypes != null) { - data.combinationtypes = this.combinationtypes.map((item: dependency_1.graphicData.DeviceCombinationtype) => 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: dependency_1.graphicData.DeviceCombinationtype) => item.serialize(writer)); - if (this.deviceType != dependency_1.graphicData.RelatedRef.DeviceType.Section) - writer.writeEnum(3, this.deviceType); - if (!w) - return writer.getResultBuffer(); - } - static deserialize(bytes: Uint8Array | pb_1.BinaryReader): GatedRelateDevice { - const reader = bytes instanceof pb_1.BinaryReader ? bytes : new pb_1.BinaryReader(bytes), message = new GatedRelateDevice(); - 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, dependency_1.graphicData.DeviceCombinationtype.deserialize(reader), dependency_1.graphicData.DeviceCombinationtype)); - break; - case 3: - message.deviceType = reader.readEnum(); - break; - default: reader.skipField(); - } - } - return message; - } - serializeBinary(): Uint8Array { - return this.serialize(); - } - static deserializeBinary(bytes: Uint8Array): GatedRelateDevice { - return GatedRelateDevice.deserialize(bytes); - } - } }