From c4803ef6503de43a18c4c7c395f2e9fa51abb162 Mon Sep 17 00:00:00 2001 From: Sirttas Date: Thu, 9 Jul 2026 17:43:28 +0200 Subject: [PATCH] feat(#16): Appraisal page --- src/market/appraisal/AppraisalResultTable.vue | 64 +++++++++++++++++++ src/market/appraisal/appraise.ts | 32 ++++++++++ src/market/appraisal/index.ts | 3 + src/pages/Market.vue | 3 + src/pages/market/Appraise.vue | 28 ++++++++ src/routes.ts | 2 + 6 files changed, 132 insertions(+) create mode 100644 src/market/appraisal/AppraisalResultTable.vue create mode 100644 src/market/appraisal/appraise.ts create mode 100644 src/pages/market/Appraise.vue diff --git a/src/market/appraisal/AppraisalResultTable.vue b/src/market/appraisal/AppraisalResultTable.vue new file mode 100644 index 0000000..6c0f86e --- /dev/null +++ b/src/market/appraisal/AppraisalResultTable.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/market/appraisal/appraise.ts b/src/market/appraisal/appraise.ts new file mode 100644 index 0000000..052556c --- /dev/null +++ b/src/market/appraisal/appraise.ts @@ -0,0 +1,32 @@ +import {marketApi} from '@/mammon'; +import {getMarketTypes} from '../type'; + +export type AppraisalItemValue = { + typeID: number; + name: string; + quantity: number; + buy: number; + sell: number; + buyUnit: number; + sellUnit: number; +}; + +export const appraise = async (raw?: string, locationId?: number): Promise => { + if (!raw?.trim()) { + return []; + } + + const results = await marketApi.pastePrices(raw, locationId).then(r => r.data); + const names = await getMarketTypes(results.map(r => r.marketTypeId)) + .then(types => new Map(types.map(t => [t.id, t.name]))); + + return results.map(r => ({ + typeID: r.marketTypeId, + name: names.get(r.marketTypeId) ?? '', + quantity: r.quantity, + buy: r.buy, + sell: r.sell, + buyUnit: r.quantity ? r.buy / r.quantity : 0, + sellUnit: r.quantity ? r.sell / r.quantity : 0, + })); +}; diff --git a/src/market/appraisal/index.ts b/src/market/appraisal/index.ts index 6db8ae4..3635217 100644 --- a/src/market/appraisal/index.ts +++ b/src/market/appraisal/index.ts @@ -1,2 +1,5 @@ export * from './MarketTypePrice'; export * from './appraisal'; +export * from './appraise'; + +export { default as AppraisalResultTable } from './AppraisalResultTable.vue'; diff --git a/src/pages/Market.vue b/src/pages/Market.vue index 66c6e9d..ab60362 100644 --- a/src/pages/Market.vue +++ b/src/pages/Market.vue @@ -15,6 +15,9 @@ import {routeNames} from '@/routes'; Acquisitions + + Appraisal + diff --git a/src/pages/market/Appraise.vue b/src/pages/market/Appraise.vue new file mode 100644 index 0000000..ba87410 --- /dev/null +++ b/src/pages/market/Appraise.vue @@ -0,0 +1,28 @@ + + +