import {axiosInstance} from './axiosInstance' import itemRanking1 from './itemRanking1' import itemRanking2 from './itemRanking2' const backEndURL = 'https://backend.huamei2001.com' const dataCache = new Map() export const getBidData = (instance: string, jwt:string) => { if(!axiosInstance.defaults.params){ axiosInstance.defaults.params = {} axiosInstance.defaults.params.jwt = jwt } let url = `${ backEndURL }/get-bid-data-raw?brand=${instance}` return new Promise((resolve, reject) => { const dataHash = instance if(dataCache.get(dataHash)) { resolve(dataCache.get(dataHash)) return } axiosInstance.get(url) .then((response) => { if(response.data.status === 200) { const _data = response.data.payload.filter(x=>{ return (Number(x.cost) > 0) }) const temp = {} for(const r of _data) { if((!r.cost) || Number.isNaN(Number(r.cost))) continue if(!r.bid_winner) continue if(!r.opening_structure || (r.opening_structure.length <= 0)) continue const category = r.opening_structure if(temp[category]){ temp[category].push(r) }else{ temp[category] = [r] } } const out = Object.keys(temp) .map(t=>{ const targetCompanies = temp[t] return { title:t, lookUpMajor:targetCompanies[0].opening_structure_major, children:targetCompanies.map(x=>{ return { title:x.bid_winner, agencyLink:x.agency_link } }), hotels:targetCompanies.map(x=>[]), links:targetCompanies.map(x=> '') } }) .sort((a,b) => { const aInd2 = itemRanking2.indexOf(a.title) const bInd2 = itemRanking2.indexOf(b.title) if((aInd2 > -1) && (bInd2 > -1)){ return aInd2 - bInd2} else{ const aInd1 = itemRanking1.indexOf(a.lookUpMajor) const bInd1 = itemRanking1.indexOf(b.lookUpMajor) if(aInd1 != bInd1){ return aInd1 - bInd1} else{ if((aInd2 > -1)){ return -1 }else if (bInd2 > -1){ return 1 }else{ return a.title.localeCompare(b.title) } } } }) dataCache.set(dataHash, out) resolve(out); }else{ console.error('getReportData Error 01', JSON.stringify(response.data)); reject('获取报告数据失败,请稍后再试!01'); } }).catch((error) => { console.error('getReportData Error 02', JSON.stringify(error)); reject('获取报告数据失败,请稍后再试!02'); }) }) }