|
|
@ -3,9 +3,7 @@ import icons from "./image-helper"; |
|
|
let mallInfos = new Map(); |
|
|
let mallInfos = new Map(); |
|
|
const href = window.location.href; |
|
|
const href = window.location.href; |
|
|
let baseUrl = |
|
|
let baseUrl = |
|
|
href.includes("localhost") || href.includes("-dev") |
|
|
|
|
|
? "https://iot-dev.123.1000my.com" |
|
|
|
|
|
: href.includes("-test") |
|
|
|
|
|
|
|
|
href.includes("localhost") || href.includes("-dev") || href.includes("-test") |
|
|
? "https://project-iot.test.1000my.com" |
|
|
? "https://project-iot.test.1000my.com" |
|
|
: "https://iot.1000my.com"; |
|
|
: "https://iot.1000my.com"; |
|
|
|
|
|
|
|
|
@ -26,97 +24,95 @@ const getMallInfo = async (code) => { |
|
|
cloud: "1000my", |
|
|
cloud: "1000my", |
|
|
offsetToNorth, |
|
|
offsetToNorth, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
let cdnUrl; |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: uploadUrl }, |
|
|
|
|
|
} = await axios.get(`${baseUrl}/api/info/v1/web/getUploadUrl`); |
|
|
|
|
|
cdnUrl = uploadUrl; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
} |
|
|
const config = { |
|
|
const config = { |
|
|
mapDataUrl: `${baseUrl}/api/data/v1/web/getMallMapData/${code}/Aeditor`, |
|
|
|
|
|
shopInfoUrl: `${baseUrl}/api/data/v1/web/getMapInfo?projectCode=${code}`, |
|
|
|
|
|
|
|
|
mapDataUrl: `${cdnUrl}/ar/${code}/Aeditor/Aeditor.json?t=${new Date().getTime()}`, |
|
|
|
|
|
shopInfoUrl: `${cdnUrl}/ar/${code}/QueryShopListForMap/QueryShopListForMap.json?t=${new Date().getTime()}`, |
|
|
}; |
|
|
}; |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { mapUrl, shopUrl }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${cdnUrl}/ar/${code}/config.json?t=${new Date().getTime()}` |
|
|
|
|
|
); |
|
|
|
|
|
if (mapUrl) config.mapDataUrl = mapUrl; |
|
|
|
|
|
if (shopUrl) config.shopInfoUrl = shopUrl; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.log("获取config失败"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
const [ |
|
|
|
|
|
cdnUrl, |
|
|
|
|
|
mapDataJSON, |
|
|
|
|
|
[buildingList, serverShopInfo], |
|
|
|
|
|
facs, |
|
|
|
|
|
theme, |
|
|
|
|
|
{ cityName, projectName }, |
|
|
|
|
|
] = await Promise.all([ |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: cdnUrl }, |
|
|
|
|
|
} = await axios.get(`${baseUrl}/api/info/v1/web/getUploadUrl`); |
|
|
|
|
|
return cdnUrl; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { |
|
|
|
|
|
data: { mapData: mapDataJSON }, |
|
|
|
|
|
}, |
|
|
|
|
|
} = await axios.get(config.mapDataUrl); |
|
|
|
|
|
return mapDataJSON; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { |
|
|
|
|
|
data: { buildingList, shopList: serverShopInfo }, |
|
|
|
|
|
}, |
|
|
|
|
|
} = await axios.get(config.shopInfoUrl); |
|
|
|
|
|
return [buildingList, serverShopInfo]; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: facs }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/data/v1/web/getProjectUsedIconList?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return facs; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return []; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: theme }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/guide/v1/web/getProjectBindingTheme?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return theme; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/data/v1/web/getMallData?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return data; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
]); |
|
|
|
|
|
|
|
|
const [mapDataJSON, serverShopInfo, facs, theme, { cityName, projectName }] = |
|
|
|
|
|
await Promise.all([ |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data }, |
|
|
|
|
|
} = await axios.get(config.mapDataUrl); |
|
|
|
|
|
return data[0].mapData; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data }, |
|
|
|
|
|
} = await axios.get(config.shopInfoUrl); |
|
|
|
|
|
return data[0]; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: facs }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/data/v1/web/getProjectUsedIconList?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return facs; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return []; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data: theme }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/guide/v1/web/getProjectBindingTheme?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return theme; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
(async () => { |
|
|
|
|
|
try { |
|
|
|
|
|
const { |
|
|
|
|
|
data: { data }, |
|
|
|
|
|
} = await axios.get( |
|
|
|
|
|
`${baseUrl}/api/data/v1/web/getMallData?projectCode=${code}` |
|
|
|
|
|
); |
|
|
|
|
|
return data; |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
console.error(error); |
|
|
|
|
|
return {}; |
|
|
|
|
|
} |
|
|
|
|
|
})(), |
|
|
|
|
|
]); |
|
|
mall.name = projectName |
|
|
mall.name = projectName |
|
|
.replace("导视", "") |
|
|
.replace("导视", "") |
|
|
.replace("信发", "") |
|
|
.replace("信发", "") |
|
|
@ -124,12 +120,14 @@ const getMallInfo = async (code) => { |
|
|
.replace("/", ""); |
|
|
.replace("/", ""); |
|
|
document.title = mall.name; |
|
|
document.title = mall.name; |
|
|
mall.city = cityName; |
|
|
mall.city = cityName; |
|
|
|
|
|
|
|
|
const mapData = JSON.parse(mapDataJSON)[0]; |
|
|
const mapData = JSON.parse(mapDataJSON)[0]; |
|
|
mall.floors = buildingList[0].floorList.map(({ floor, floorOrder }) => ({ |
|
|
|
|
|
|
|
|
mall.floors = serverShopInfo.map(({ floor, floorOrd }) => ({ |
|
|
name: floor, |
|
|
name: floor, |
|
|
floorOrder, |
|
|
|
|
|
|
|
|
floorOrder: floorOrd, |
|
|
url: true, |
|
|
url: true, |
|
|
})); |
|
|
})); |
|
|
|
|
|
|
|
|
mall.facilityTypeMap = facs.reduce( |
|
|
mall.facilityTypeMap = facs.reduce( |
|
|
(acc, nxt) => ({ |
|
|
(acc, nxt) => ({ |
|
|
...acc, |
|
|
...acc, |
|
|
@ -137,22 +135,20 @@ const getMallInfo = async (code) => { |
|
|
}), |
|
|
}), |
|
|
{} |
|
|
{} |
|
|
); |
|
|
); |
|
|
const shopInfo = serverShopInfo |
|
|
|
|
|
.filter(({ buildingOrder }) => buildingOrder === 0) |
|
|
|
|
|
.map((iot) => ({ |
|
|
|
|
|
|
|
|
const shopInfo = serverShopInfo.map(({ floorOrd: floorOrder, shopList }) => ({ |
|
|
|
|
|
floorOrder, |
|
|
|
|
|
shopList: shopList.map((iot) => ({ |
|
|
...iot, |
|
|
...iot, |
|
|
name: iot.shopName, |
|
|
|
|
|
|
|
|
code: iot.shopCode, |
|
|
houseNum: iot.houseNumber, |
|
|
houseNum: iot.houseNumber, |
|
|
nameEn: iot.shopNameEn, |
|
|
|
|
|
logoPath: cdnUrl + iot.logoUrl, |
|
|
logoPath: cdnUrl + iot.logoUrl, |
|
|
shopFormat: iot.industryFatherName, |
|
|
shopFormat: iot.industryFatherName, |
|
|
})) |
|
|
|
|
|
.reduce((acc, nxt) => { |
|
|
|
|
|
if (!acc[nxt.floorOrder]) acc[nxt.floorOrder] = [nxt]; |
|
|
|
|
|
else acc[nxt.floorOrder] = [...acc[nxt.floorOrder], nxt]; |
|
|
|
|
|
return acc; |
|
|
|
|
|
}, []) |
|
|
|
|
|
.map((shopList, floorOrder) => ({ floorOrder, shopList })); |
|
|
|
|
|
|
|
|
shopFormatName: iot.industryFatherName, |
|
|
|
|
|
intro: true, |
|
|
|
|
|
formatColor: iot.color, |
|
|
|
|
|
floorOrder, |
|
|
|
|
|
})), |
|
|
|
|
|
})); |
|
|
|
|
|
|
|
|
shopInfo.forEach(({ shopList }) => |
|
|
shopInfo.forEach(({ shopList }) => |
|
|
shopList.forEach((shop) => { |
|
|
shopList.forEach((shop) => { |
|
|
|