Files
sionrui/frontend/app/web-gold/src/views/content-style/composables/useBenchmarkData.js

67 lines
1.8 KiB
JavaScript
Raw Normal View History

2025-11-13 01:06:28 +08:00
import { ref, reactive } from 'vue'
import storage from '@/utils/storage'
import { mapFromDouyin, mapFromXhs } from '../utils/benchmarkUtils'
const TABLE_DATA_STORAGE_KEY = 'benchmark_table_data'
export function useBenchmarkData() {
const data = ref([])
const selectedRowKeys = ref([])
const expandedRowKeys = ref([])
async function saveTableDataToSession() {
try {
const persistData = (data.value || []).map((item) => {
2025-12-01 22:27:50 +08:00
const rest = { ...item }
2025-11-13 01:06:28 +08:00
delete rest._analyzing
return rest
})
await storage.setJSON(TABLE_DATA_STORAGE_KEY, persistData)
} catch (error) {
console.warn('保存表格数据到session失败:', error)
}
}
async function loadTableDataFromSession() {
try {
const savedData = await storage.getJSON(TABLE_DATA_STORAGE_KEY)
2026-01-18 18:36:37 +08:00
if (savedData?.length) {
2025-11-13 01:06:28 +08:00
data.value = savedData.map((item) => ({ ...item, _analyzing: false }))
console.log('从session加载了表格数据:', savedData.length, '条')
}
} catch (error) {
console.warn('从session加载表格数据失败:', error)
}
}
function processApiResponse(resp, platform) {
if (platform === '抖音') {
const awemeList = resp?.data?.aweme_list || []
console.log('抖音返回的原始数据:', awemeList[0])
data.value = mapFromDouyin(awemeList)
console.log('映射后的第一条数据:', data.value[0])
} else {
const notes = resp?.data?.notes || resp?.data?.data || []
data.value = mapFromXhs(notes)
}
}
async function clearData() {
data.value = []
selectedRowKeys.value = []
expandedRowKeys.value = []
await storage.remove(TABLE_DATA_STORAGE_KEY)
}
return {
data,
selectedRowKeys,
expandedRowKeys,
saveTableDataToSession,
loadTableDataFromSession,
processApiResponse,
clearData,
}
}