fix,去掉大部分indexdb的逻辑
This commit is contained in:
1 parent
9a045cfe86
commit
3d26b0b259
19 files changed
+416
-103
No files matched your search
@@ -1,4 +1,3 @@
|
||||
import localforage from 'localforage'
|
||||
import {
|
||||
expertList,
|
||||
getMajorDictEntries,
|
||||
@@ -10,6 +9,7 @@ import { roundTo, sumByNumber, toDecimal } from '@/lib/decimal'
|
||||
import { toFiniteNumberOrNull } from '@/lib/number'
|
||||
import { getBenchmarkBudgetByScale, getScaleBudgetFee } from '@/lib/pricingScaleFee'
|
||||
import { useZxFwPricingStore, type ServicePricingMethod } from '@/pinia/zxFwPricing'
|
||||
import { useKvStore } from '@/pinia/kv'
|
||||
|
||||
interface StoredDetailRowsState<T = any> {
|
||||
detailRows?: T[]
|
||||
@@ -123,6 +123,26 @@ const getZxFwStoreSafely = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const getKvStoreSafely = () => {
|
||||
try {
|
||||
return useKvStore()
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
const kvGetItem = async <T = unknown>(key: string): Promise<T | null> => {
|
||||
const store = getKvStoreSafely()
|
||||
if (!store) return null
|
||||
return store.getItem<T>(key)
|
||||
}
|
||||
|
||||
const kvSetItem = async <T = unknown>(key: string, value: T): Promise<void> => {
|
||||
const store = getKvStoreSafely()
|
||||
if (!store) return
|
||||
await store.setItem(key, value)
|
||||
}
|
||||
|
||||
const toStoredDetailRowsState = <TRow = unknown>(state: { detailRows?: TRow[] } | null | undefined): StoredDetailRowsState<TRow> | null => {
|
||||
if (!state || !Array.isArray(state.detailRows)) return null
|
||||
return {
|
||||
@@ -594,10 +614,10 @@ const loadPricingMethodDefaultBuildContext = async (
|
||||
const baseInfoDbKey = 'xm-base-info-v1'
|
||||
|
||||
const [htData, consultFactorData, majorFactorData, baseInfo] = await Promise.all([
|
||||
localforage.getItem<StoredDetailRowsState>(htDbKey),
|
||||
localforage.getItem<StoredFactorState>(consultFactorDbKey),
|
||||
localforage.getItem<StoredFactorState>(majorFactorDbKey),
|
||||
localforage.getItem<XmBaseInfoState>(baseInfoDbKey)
|
||||
kvGetItem<StoredDetailRowsState>(htDbKey),
|
||||
kvGetItem<StoredFactorState>(consultFactorDbKey),
|
||||
kvGetItem<StoredFactorState>(majorFactorDbKey),
|
||||
kvGetItem<XmBaseInfoState>(baseInfoDbKey)
|
||||
])
|
||||
|
||||
return {
|
||||
@@ -668,10 +688,10 @@ export const persistDefaultPricingMethodDetailRowsForServices = async (params: {
|
||||
}
|
||||
}
|
||||
await Promise.all([
|
||||
localforage.setItem(dbKeys.investScale, { detailRows: defaultRows.investScale }),
|
||||
localforage.setItem(dbKeys.landScale, { detailRows: defaultRows.landScale }),
|
||||
localforage.setItem(dbKeys.workload, { detailRows: defaultRows.workload }),
|
||||
localforage.setItem(dbKeys.hourly, { detailRows: defaultRows.hourly })
|
||||
kvSetItem(dbKeys.investScale, { detailRows: defaultRows.investScale }),
|
||||
kvSetItem(dbKeys.landScale, { detailRows: defaultRows.landScale }),
|
||||
kvSetItem(dbKeys.workload, { detailRows: defaultRows.workload }),
|
||||
kvSetItem(dbKeys.hourly, { detailRows: defaultRows.hourly })
|
||||
])
|
||||
})
|
||||
)
|
||||
@@ -695,17 +715,17 @@ export const getPricingMethodTotalsForService = async (params: {
|
||||
store?.loadServicePricingMethodState<Record<string, unknown>>(params.contractId, serviceId, 'landScale') || Promise.resolve(null),
|
||||
store?.loadServicePricingMethodState<Record<string, unknown>>(params.contractId, serviceId, 'workload') || Promise.resolve(null),
|
||||
store?.loadServicePricingMethodState<Record<string, unknown>>(params.contractId, serviceId, 'hourly') || Promise.resolve(null),
|
||||
localforage.getItem<StoredDetailRowsState>(htDbKey),
|
||||
localforage.getItem<StoredFactorState>(consultFactorDbKey),
|
||||
localforage.getItem<StoredFactorState>(majorFactorDbKey),
|
||||
localforage.getItem<XmBaseInfoState>(baseInfoDbKey)
|
||||
kvGetItem<StoredDetailRowsState>(htDbKey),
|
||||
kvGetItem<StoredFactorState>(consultFactorDbKey),
|
||||
kvGetItem<StoredFactorState>(majorFactorDbKey),
|
||||
kvGetItem<XmBaseInfoState>(baseInfoDbKey)
|
||||
])
|
||||
|
||||
const [investDataFallback, landDataFallback, workloadDataFallback, hourlyDataFallback] = await Promise.all([
|
||||
storeInvestData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.investScale),
|
||||
storeLandData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.landScale),
|
||||
storeWorkloadData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.workload),
|
||||
storeHourlyData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.hourly)
|
||||
storeInvestData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.investScale),
|
||||
storeLandData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.landScale),
|
||||
storeWorkloadData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.workload),
|
||||
storeHourlyData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.hourly)
|
||||
])
|
||||
|
||||
const investData = toStoredDetailRowsState(storeInvestData) || investDataFallback
|
||||
@@ -799,10 +819,10 @@ export const ensurePricingMethodDetailRowsForServices = async (params: {
|
||||
store?.loadServicePricingMethodState<Record<string, unknown>>(params.contractId, serviceId, 'hourly') || Promise.resolve(null)
|
||||
])
|
||||
const [investDataFallback, landDataFallback, workloadDataFallback, hourlyDataFallback] = await Promise.all([
|
||||
storeInvestData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.investScale),
|
||||
storeLandData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.landScale),
|
||||
storeWorkloadData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.workload),
|
||||
storeHourlyData ? Promise.resolve(null) : localforage.getItem<StoredDetailRowsState>(dbKeys.hourly)
|
||||
storeInvestData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.investScale),
|
||||
storeLandData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.landScale),
|
||||
storeWorkloadData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.workload),
|
||||
storeHourlyData ? Promise.resolve(null) : kvGetItem<StoredDetailRowsState>(dbKeys.hourly)
|
||||
])
|
||||
const investData = toStoredDetailRowsState(storeInvestData) || investDataFallback
|
||||
const landData = toStoredDetailRowsState(storeLandData) || landDataFallback
|
||||
@@ -829,7 +849,7 @@ export const ensurePricingMethodDetailRowsForServices = async (params: {
|
||||
detailRows: getDefaultRows().investScale
|
||||
}, { force: true })
|
||||
}
|
||||
writeTasks.push(localforage.setItem(dbKeys.investScale, { detailRows: getDefaultRows().investScale }))
|
||||
writeTasks.push(kvSetItem(dbKeys.investScale, { detailRows: getDefaultRows().investScale }))
|
||||
}
|
||||
|
||||
if (shouldInitLand) {
|
||||
@@ -838,7 +858,7 @@ export const ensurePricingMethodDetailRowsForServices = async (params: {
|
||||
detailRows: getDefaultRows().landScale
|
||||
}, { force: true })
|
||||
}
|
||||
writeTasks.push(localforage.setItem(dbKeys.landScale, { detailRows: getDefaultRows().landScale }))
|
||||
writeTasks.push(kvSetItem(dbKeys.landScale, { detailRows: getDefaultRows().landScale }))
|
||||
}
|
||||
|
||||
if (shouldInitWorkload) {
|
||||
@@ -847,7 +867,7 @@ export const ensurePricingMethodDetailRowsForServices = async (params: {
|
||||
detailRows: getDefaultRows().workload
|
||||
}, { force: true })
|
||||
}
|
||||
writeTasks.push(localforage.setItem(dbKeys.workload, { detailRows: getDefaultRows().workload }))
|
||||
writeTasks.push(kvSetItem(dbKeys.workload, { detailRows: getDefaultRows().workload }))
|
||||
}
|
||||
|
||||
if (shouldInitHourly) {
|
||||
@@ -856,7 +876,7 @@ export const ensurePricingMethodDetailRowsForServices = async (params: {
|
||||
detailRows: getDefaultRows().hourly
|
||||
}, { force: true })
|
||||
}
|
||||
writeTasks.push(localforage.setItem(dbKeys.hourly, { detailRows: getDefaultRows().hourly }))
|
||||
writeTasks.push(kvSetItem(dbKeys.hourly, { detailRows: getDefaultRows().hourly }))
|
||||
}
|
||||
|
||||
if (writeTasks.length > 0) {
|
||||
|
||||
Reference in new issue
Block a user