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 @@ + + +