fix,去掉大部分indexdb的逻辑

This commit is contained in:
zwgczx committed 2026-03-11 12:01:16 +08:00
1 parent 9a045cfe86
commit 3d26b0b259
19 files changed
+416 -103

No files matched your search

+45 -25
View File
@@ -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) {