From 73c3cc4983629120fc3015398309c3ba91e2389d Mon Sep 17 00:00:00 2001 From: Hide_D Date: Tue, 29 Mar 2022 02:36:28 +0900 Subject: [PATCH] =?UTF-8?q?feat(wip):=20=EC=84=B8=EB=A0=A5=20=EC=9E=A5?= =?UTF-8?q?=EC=88=98=20=EC=9E=91=EC=97=85=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/API/Nation/GeneralList.php | 4 +-- hwe/ts/PageNationGeneral.vue | 54 ++++++++++++++++++++++------ hwe/ts/components/GeneralList.vue | 19 ++++++++++ hwe/ts/defs/API/Nation/index.ts | 30 ++++++---------- hwe/ts/util/merge2DArrToObjectArr.ts | 2 +- 5 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 hwe/ts/components/GeneralList.vue diff --git a/hwe/sammo/API/Nation/GeneralList.php b/hwe/sammo/API/Nation/GeneralList.php index ce93e391..729cd701 100644 --- a/hwe/sammo/API/Nation/GeneralList.php +++ b/hwe/sammo/API/Nation/GeneralList.php @@ -1,6 +1,6 @@ $this->permission) { continue; } - $resultColumns[] = $column; + $resultColumns[$column] = $column; } $generalList = []; diff --git a/hwe/ts/PageNationGeneral.vue b/hwe/ts/PageNationGeneral.vue index 065027ae..e9986766 100644 --- a/hwe/ts/PageNationGeneral.vue +++ b/hwe/ts/PageNationGeneral.vue @@ -1,18 +1,52 @@ + \ No newline at end of file +const title = "세력 장수"; + +onMounted(async () => { + try { + const { column, list, permission } = await SammoAPI.Nation.GeneralList(); + //XXX: 로직상 똑같은데.... + if (permission == 0) { + const rawGeneralList = merge2DArrToObjectArr(column, list); + generalList.value = new Map(rawGeneralList.map((v) => [v.no, { permission, ...v }])); + } else if (permission == 1) { + const rawGeneralList = merge2DArrToObjectArr(column, list); + generalList.value = new Map(rawGeneralList.map((v) => [v.no, { permission, ...v }])); + } else if ([2, 3, 4].includes(permission)) { + const rawGeneralList = merge2DArrToObjectArr(column, list); + generalList.value = new Map(rawGeneralList.map((v) => [v.no, { permission, ...v }])); + } else { + throw `?? ${permission}`; + } + + } catch (e) { + console.error(e); + throw e; + } +}); + diff --git a/hwe/ts/components/GeneralList.vue b/hwe/ts/components/GeneralList.vue new file mode 100644 index 00000000..6e410b75 --- /dev/null +++ b/hwe/ts/components/GeneralList.vue @@ -0,0 +1,19 @@ + + + diff --git a/hwe/ts/defs/API/Nation/index.ts b/hwe/ts/defs/API/Nation/index.ts index 71b69f31..d5fbf43a 100644 --- a/hwe/ts/defs/API/Nation/index.ts +++ b/hwe/ts/defs/API/Nation/index.ts @@ -43,39 +43,31 @@ export type GeneralListItemP2 = GeneralListItemP1 & { officer_city: number, } -export type GeneralListItemP9 = GeneralListItemP2 & { - owner_name: string, -} + +export type RawGeneralListItem = GeneralListItemP0 | GeneralListItemP1 | GeneralListItemP2; export type GeneralListItem = -({permission : 0} & GeneralListItemP0) | -({permission : 1} & GeneralListItemP1) | -({permission : 2} & GeneralListItemP2) | -({permission : 9} & GeneralListItemP9); + ({ permission: 0 } & GeneralListItemP0) | + ({ permission: 1 } & GeneralListItemP1) | + ({ permission: 2 | 3 | 4 } & GeneralListItemP2); export type RawGeneralListP0 = ValidResponse & { permission: 0, - column: keyof GeneralListItemP0[], - list: ValuesOf[], + column: (keyof GeneralListItemP0)[], + list: ValuesOf[][], } export type RawGeneralListP1 = ValidResponse & { permission: 1, - column: keyof GeneralListItemP1[], + column: (keyof GeneralListItemP1)[], list: ValuesOf[][], } export type RawGeneralListP2 = ValidResponse & { - permission: 2, - column: keyof GeneralListItemP2[], + permission: 2 | 3 | 4, + column: (keyof GeneralListItemP2)[], list: ValuesOf[][], } -export type RawGeneralListP9 = ValidResponse & { - permission: 9, - column: keyof GeneralListItemP9[], - list: ValuesOf[][], -} - -export type GeneralListResponse = RawGeneralListP0 | RawGeneralListP1 | RawGeneralListP2 | RawGeneralListP9; +export type GeneralListResponse = RawGeneralListP0 | RawGeneralListP1 | RawGeneralListP2; diff --git a/hwe/ts/util/merge2DArrToObjectArr.ts b/hwe/ts/util/merge2DArrToObjectArr.ts index a019d021..bea7836a 100644 --- a/hwe/ts/util/merge2DArrToObjectArr.ts +++ b/hwe/ts/util/merge2DArrToObjectArr.ts @@ -7,7 +7,7 @@ export function merge2DArrToObjectArr>(column: for(const rawItem of list){ const item: Record = {}; - if(column.length != item.length){ + if(column.length != rawItem.length){ throw `column과 item의 길이가 같지 않습니다: ${column.length} != ${list.length}, ${JSON.stringify(item)}`; }