Commit 484a935d by 陈岩

feat: h5页面增加页面ip适配

1 parent 81b755f5
No preview for this file type
...@@ -10,8 +10,8 @@ const heatmap = { ...@@ -10,8 +10,8 @@ const heatmap = {
return req("post", `/report/heatMap/getNew`, params, config); return req("post", `/report/heatMap/getNew`, params, config);
}, },
// 获取门店数据 // 获取门店数据
getStoreDataApi(mallId) { getStoreDataApi(mallId, config) {
return req("get", `/report/b-mall/${mallId}`); return req("get", `/report/b-mall/${mallId}`, {}, config);
}, },
getAreaGateStatisticsApi(params, config) { getAreaGateStatisticsApi(params, config) {
return req("get", `/report/gate/analyse/statistics`, params, config); return req("get", `/report/gate/analyse/statistics`, params, config);
......
import axios from 'axios' import axios from "axios";
import md5 from 'blueimp-md5' import md5 from "blueimp-md5";
import { param2 } from '@/utils' import { param2 } from "@/utils";
import { Toast } from 'vant'; import { Toast } from "vant";
//const baseURL = 'https://store.keliuyun.com/report'; //const baseURL = 'https://store.keliuyun.com/report';
//const baseURL = 'https://mall.keliuyun.com'; //const baseURL = 'https://mall.keliuyun.com';
const baseURL = 'https://store.keliuyun.com'; // const baseURL = "https://store.keliuyun.com";
const Axios = axios.create({ const Axios = axios.create({
baseURL: baseURL, // 因为我本地做了反向代理 // baseURL 通过接口信息数据传递
// baseURL: baseURL, // 因为我本地做了反向代理
timeout: 0, timeout: 0,
// responseType: "json", // responseType: "json",
// changeOrigin: true,//允许跨域 // changeOrigin: true,//允许跨域
withCredentials: true, // 是否允许带cookie这些 withCredentials: true, // 是否允许带cookie这些
headers: { headers: {
"Content-Type": "application/json;charset=UTF-8" "Content-Type": "application/json;charset=UTF-8",
// 'Content-Type': 'application/x-www-form-urlencoded' // 'Content-Type': 'application/x-www-form-urlencoded'
} },
}) });
let store = { let store = {
source: { source: {
token: null, token: null,
cancel: null cancel: null,
} },
} };
// 请求拦截器 // 请求拦截器
Axios.interceptors.request.use( Axios.interceptors.request.use(
config => { (config) => {
const suffix = '4c413628731691abc99eb2fca5f69aab' // 如果有serverIp, 则用传入值替换baseURL
const { method, params, data, url } = config if (config.serverIp) {
let language = localStorage.getItem('lang'), config.baseURL = config.serverIp;
aToken = localStorage.getItem('atoken'); } else if (config.config?.serverIp) {
config.baseURL = config.config.serverIp;
} else {
config.baseURL = "https://store.keliuyun.com";
}
const suffix = "4c413628731691abc99eb2fca5f69aab";
const { method, params, data, url } = config;
let language = localStorage.getItem("lang"),
aToken = localStorage.getItem("atoken");
if (language) { if (language) {
let languageObj = { let languageObj = {
'mall_CN': 'zh-CN,zh;q=0.9', mall_CN: "zh-CN,zh;q=0.9",
'zh_CN': 'zh-CN,zh;q=0.9', zh_CN: "zh-CN,zh;q=0.9",
'en_US': 'en-US,en;q=0.5', en_US: "en-US,en;q=0.5",
'zh_TW': 'zh-TW,zh;q=0.3', zh_TW: "zh-TW,zh;q=0.3",
// 'zh_ar': 'zh-AR,zh;q=0.9' // 'zh_ar': 'zh-AR,zh;q=0.9'
} };
languageObj[language] && (config.headers['Accept-Language'] = languageObj[language]); languageObj[language] &&
(config.headers["Accept-Language"] = languageObj[language]);
} }
aToken && (config.headers.Authorization = aToken); aToken && (config.headers.Authorization = aToken);
config.cancelToken = store.source.token config.cancelToken = store.source.token;
const signalStr = method.toUpperCase() + const signalStr =
(params ? param2(params) : '') + method.toUpperCase() +
(data ? JSON.stringify(data) : '') + (params ? param2(params) : "") +
suffix + (config.headers.Authorization ? config.headers.Authorization : ''); (data ? JSON.stringify(data) : "") +
const hashSignature = md5(signalStr) suffix +
config.headers['signature'] = hashSignature (config.headers.Authorization ? config.headers.Authorization : "");
const hashSignature = md5(signalStr);
config.headers["signature"] = hashSignature;
return config; return config;
}, error => { },
(error) => {
console.error(error); console.error(error);
return Promise.reject(error.data.msg) return Promise.reject(error.data.msg);
} }
) );
Axios.interceptors.response.use( Axios.interceptors.response.use((res) => {
res => {
if (res.data && !res.data.success) { if (res.data && !res.data.success) {
if (res.data.ecode && res.data.ecode != 200) { if (res.data.ecode && res.data.ecode != 200) {
Toast.fail(res.data.enote) Toast.fail(res.data.enote);
console.error(res.data.enote) console.error(res.data.enote);
return ; return;
} else { } else {
// 非标准返回体 // 非标准返回体
if (res.status == 200) { if (res.status == 200) {
...@@ -67,34 +80,33 @@ Axios.interceptors.response.use( ...@@ -67,34 +80,33 @@ Axios.interceptors.response.use(
} }
} }
if (res.data.code == 500) { if (res.data.code == 500) {
console.error(res.data.msg) console.error(res.data.msg);
} }
return Promise.reject(res.data.msg); return Promise.reject(res.data.msg);
} else if (!res.data && res.status == 200) { } else if (!res.data && res.status == 200) {
return res; return res;
} else if (res.data.success && res.config.method != 'get') { } else if (res.data.success && res.config.method != "get") {
// //
} }
return res; return res;
} });
) export default function (method, url, data = null, config = null, bodyDelete) {
export default function(method, url, data = null, config = null, bodyDelete) { method = method.toLowerCase();
method = method.toLowerCase() if (method == "post") {
if (method == 'post') { return Axios.post(url, data, config);
return Axios.post(url, data, config) } else if (method == "get") {
} else if (method == 'get') {
let defaultParam = { let defaultParam = {
_t: Date.parse(new Date()) / 1000 _t: Date.parse(new Date()) / 1000,
} };
return Axios.get(url, { params: {...defaultParam, ...data }, config }) return Axios.get(url, { params: { ...defaultParam, ...data }, config });
} else if (bodyDelete) { } else if (bodyDelete) {
return Axios.delete(url, { data: data }, config) return Axios.delete(url, { data: data }, config);
} else if (method == 'delete') { } else if (method == "delete") {
return Axios.delete(url, { params: data }, config) return Axios.delete(url, { params: data }, config);
} else if (method == 'put') { } else if (method == "put") {
return Axios.put(url, data, config) return Axios.put(url, data, config);
} else { } else {
console.error('unknown method' + method) console.error("unknown method" + method);
return false return false;
} }
} }
import req from '@/api/http.js' import req from "@/api/http.js";
function getCommonConfig(config) {
return {
...config,
serverIp:
window.localStorage.getItem("serverIp") || "https://store.keliuyun.com",
};
}
const tourApi = { const tourApi = {
getLiveAddress(params,config) { getLiveAddress(params, config) {
return req('get', `/patrol/patrolDeviceChannel/getLiveAddress/${params.id}`, params, config) return req(
"get",
`/patrol/patrolDeviceChannel/getLiveAddress/${params.id}`,
params,
getCommonConfig(config)
);
}, },
// 查询视频平台token // 查询视频平台token
getPatrolDeviceToken(params, config){ getPatrolDeviceToken(params, config) {
return req('GET', `/patrol/patrolDevice/token`, params, config) return req("GET", `/patrol/patrolDevice/token`, params, config);
}, },
getLiveInfo(params,config){ getLiveInfo(params, config) {
return req('get', `/patrol/patrolDeviceChannel/getLiveInfo/${params.id}`, params, config) return req(
"get",
`/patrol/patrolDeviceChannel/getLiveInfo/${params.id}`,
params,
getCommonConfig(config)
);
}, },
// 截图 // 截图
getCapture(params,config) { getCapture(params, config) {
return req('get', `/patrol/patrolDeviceChannel/capture/${params.id}`, params, config) return req(
"get",
`/patrol/patrolDeviceChannel/capture/${params.id}`,
params,
getCommonConfig(config)
);
}, },
// 提交巡店记录 // 提交巡店记录
submitPatrolRecord(params,config) { submitPatrolRecord(params, config) {
return req('post', `/patrol/patrolRecord`, params, config) return req("post", `/patrol/patrolRecord`, params, getCommonConfig(config));
}, },
setBookmark(params,config) { setBookmark(params, config) {
return req('post', `/patrol/patrolGate/bookmark`, params, config) return req(
}, "post",
delBookmark(params,config) { `/patrol/patrolGate/bookmark`,
return req('post', `/patrol/patrolGate/unbookmark`, params, config) params,
getCommonConfig(config)
);
},
delBookmark(params, config) {
return req(
"post",
`/patrol/patrolGate/unbookmark`,
params,
getCommonConfig(config)
);
}, },
// 获取监控点 // 获取监控点
getPatrolGateList(params,config) { getPatrolGateList(params, config) {
return req('get', `/patrol/patrolGate/list`, params, config) return req(
}, "get",
uploadScreenshot(params,config){ `/patrol/patrolGate/list`,
return req('post', `/patrol/b-patrol-screenshot`, params, config) params,
getCommonConfig(config)
);
},
uploadScreenshot(params, config) {
return req(
"post",
`/patrol/b-patrol-screenshot`,
params,
getCommonConfig(config)
);
}, },
// 获取抓拍图 // 获取抓拍图
getScreenshotList(params,config){ getScreenshotList(params, config) {
return req('GET', `/b-patrol-screenshot/list`, params, config) return req(
"GET",
`/b-patrol-screenshot/list`,
params,
getCommonConfig(config)
);
}, },
// 巡店模板 // 巡店模板
getPatrolTemplateListFun(params,config){ getPatrolTemplateListFun(params, config) {
return req('get', `/patrol/b-patrol-template/list`, params, config) return req(
"get",
`/patrol/b-patrol-template/list`,
params,
getCommonConfig(config)
);
}, },
// 查询单个模板 // 查询单个模板
getPatrolTemplateOne(params,config){ getPatrolTemplateOne(params, config) {
return req('get', `/patrol/b-patrol-template/${params.id}`, params, config) return req(
}, "get",
getPatrolSopTypeTree(params,config) { `/patrol/b-patrol-template/${params.id}`,
return req('get', `/patrol/patrolSopType/tree`, params, config) params,
}, getCommonConfig(config)
getUsers(params,config) { );
return req('get', `/patrol/s-user/mall/${params.mallId}`) },
getPatrolSopTypeTree(params, config) {
return req(
"get",
`/patrol/patrolSopType/tree`,
params,
getCommonConfig(config)
);
},
getUsers(params, config) {
return req(
"get",
`/patrol/s-user/mall/${params.mallId}`,
{},
getCommonConfig(config)
);
}, },
//提交巡店记录 //提交巡店记录
confirmPatrolRecord(params,config) { confirmPatrolRecord(params, config) {
return req('post', `/patrol/patrolRecord`, params, config) return req("post", `/patrol/patrolRecord`, params, getCommonConfig(config));
}, },
// 获取通道的视频直播与回放地址 // 获取通道的视频直播与回放地址
getLiveAndPlaybackAddress(params, config){ getLiveAndPlaybackAddress(params, config) {
return req('GET', `/patrol/patrolDeviceChannel/getLiveAndPlaybackAddress`, params, config) return req(
"GET",
`/patrol/patrolDeviceChannel/getLiveAndPlaybackAddress`,
params,
getCommonConfig(config)
);
}, },
// 云控制 // 云控制
ptzStart(params,config) { ptzStart(params, config) {
return req('PUT', `/patrol/patrolDeviceChannel/ptzStart`, params, config) return req(
}, "PUT",
ptzStop(params,config) { `/patrol/patrolDeviceChannel/ptzStart`,
return req('PUT', `/patrol/patrolDeviceChannel/ptzStop`, params, config) params,
getCommonConfig(config)
);
},
ptzStop(params, config) {
return req(
"PUT",
`/patrol/patrolDeviceChannel/ptzStop`,
params,
getCommonConfig(config)
);
}, },
// 获取设备录像记录 // 获取设备录像记录
getThroughVideoRecord(params, config){ getThroughVideoRecord(params, config) {
return req('GET', `/patrol/patrolDeviceChannel/video/record`, params, config) return req(
"GET",
`/patrol/patrolDeviceChannel/video/record`,
params,
getCommonConfig(config)
);
}, },
// 获取设备分组 // 获取设备分组
getDeviceGroupList(shopId) { getDeviceGroupList(shopId) {
return req('GET', `/patrol/b-mall-org/mall/${shopId}`); return req(
"GET",
`/patrol/b-mall-org/mall/${shopId}`,
{},
getCommonConfig({})
);
}, },
// 修改监控场景 // 修改监控场景
editPatrolGate(params,config) { editPatrolGate(params, config) {
return req('PUT', `/patrol/patrolGate/${params.id}`, params, config) return req(
}, "PUT",
} `/patrol/patrolGate/${params.id}`,
params,
getCommonConfig(config)
);
},
};
export default tourApi; export default tourApi;
<!-- <template>
<div class="heat-map-container">
<div class="heat-map" style="background-color: #f00">
<div class="canvas">
<img
:src="floorImage"
class="editFloorimg"
id="editFloorimg"
style="width: 100%"
/>
<canvas class="canvas-position" id="canvas-position"></canvas>
</div>
</div>
</div>
</template>
<script setup>
import { watch, ref, onMounted } from "vue";
import { Toast } from "vant";
import { useRoute } from "vue-router";
import heatmap from "@/api/heatMap";
/************** 图片相关 **************/
const $route = useRoute();
const floorImage = ref(""); // 楼层图片
const startDate = ref(""); // 开始日期
const endDate = ref(""); // 结束日期
const getFloorImage = async () => {
try {
const { data } = await heatmap.getStoreDataApi(storeId.value);
if (data.code === 200) {
return data.data?.mallPlan || "";
}
return "";
} catch (error) {
return "";
}
};
watch(
() => $route.query,
async (newVal) => {
const { token, mallId, startDate: sDate, endDate: eDate, key } = newVal;
if (token) {
window.localStorage.setItem("atoken", token);
}
startDate.value = sDate;
endDate.value = eDate;
Toast(startDate.value, endDate.value);
if (mallId) {
indicatorKey.value = key;
storeId.value = mallId;
const url = await getFloorImage();
if (!url) {
Toast.fail("未找到门店平面图");
return false;
}
floorImage.value = `https://store.keliuyun.com/images/${url}`;
// getFloorImage();
// if (floorImage.value) {
// getChannelList(mallId);
// }
}
},
{ immediate: true }
);
</script>
<style>
.canvas {
position: relative;
width: 100%;
}
.canvas .canvas-position {
position: absolute !important;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1;
}
.color-legend {
height: 70px;
margin-top: 30px;
}
.color-box {
float: left;
position: relative;
}
.color-block {
float: left;
width: 60px;
height: 40px;
}
.color-text {
width: 100%;
text-align: center;
font-size: 1em;
left: -15px;
position: absolute;
}
</style> -->
<template> <template>
<div class="heat-map-container"> <div class="heat-map-container">
<div class="heat-map" style="background-color: #fff"> <div class="heat-map" style="background-color: #fff">
<div class="canvas"> <div class="canvas">
<img <img :src="floorImage" class="editFloorimg" id="editFloorimg" style="width: 100%" @load="handleLoad" />
:src="floorImage"
class="editFloorimg"
id="editFloorimg"
style="width: 100%"
@load="handleLoad"
/>
<canvas class="canvas-position" id="canvas-position"></canvas> <canvas class="canvas-position" id="canvas-position"></canvas>
</div> </div>
</div> </div>
<div class="color-legend" v-if="floorImage"> <div class="color-legend" v-if="floorImage">
<div v-for="(item, index) in gateLegend" :key="index" class="color-box"> <div v-for="(item, index) in gateLegend" :key="index" class="color-box">
<p <p class="color-text" :style="{ top: (index + 1) % 2 == 0 ? '19px' : '-21px' }">
class="color-text"
:style="{ top: (index + 1) % 2 == 0 ? '19px' : '-21px' }"
>
{{ item.text }} {{ item.text }}
</p> </p>
<span <span class="color-block" :style="{ 'background-color': item.color }"></span>
class="color-block" <span class="border-span" :style="{ top: (index + 1) % 2 == 0 ? '14px' : '-5px' }"></span>
:style="{ 'background-color': item.color }"
></span>
<span
class="border-span"
:style="{ top: (index + 1) % 2 == 0 ? '14px' : '-5px' }"
></span>
</div> </div>
</div> </div>
</div> </div>
...@@ -158,7 +35,7 @@ const indicatorKey = ref(""); // 时间级别,默认实时 ...@@ -158,7 +35,7 @@ const indicatorKey = ref(""); // 时间级别,默认实时
const floorImage = ref(""); // 楼层图片 const floorImage = ref(""); // 楼层图片
const getFloorImage = async () => { const getFloorImage = async () => {
try { try {
const { data } = await heatmap.getStoreDataApi(storeId.value); const { data } = await heatmap.getStoreDataApi(storeId.value, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
return data.data?.mallPlan || ""; return data.data?.mallPlan || "";
} }
...@@ -188,7 +65,7 @@ const handleLoad = () => { ...@@ -188,7 +65,7 @@ const handleLoad = () => {
const channelList = ref([]); // 渠道列表 const channelList = ref([]); // 渠道列表
const getChannelList = async (mallId) => { const getChannelList = async (mallId) => {
try { try {
const { data } = await heatmap.getChannelsListApi({ mallId, status: 1 }); const { data } = await heatmap.getChannelsListApi({ mallId, status: 1 }, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
channelList.value = data.data || []; channelList.value = data.data || [];
...@@ -199,7 +76,7 @@ const getChannelList = async (mallId) => { ...@@ -199,7 +76,7 @@ const getChannelList = async (mallId) => {
} else { } else {
channelList.value = []; channelList.value = [];
} }
} catch (error) {} } catch (error) { }
}; };
// 获取区域数据 // 获取区域数据
const gateData = ref([]); const gateData = ref([]);
...@@ -211,7 +88,7 @@ const getGateStatistics = async () => { ...@@ -211,7 +88,7 @@ const getGateStatistics = async () => {
startDate: startDate.value, startDate: startDate.value,
endDate: endDate.value, endDate: endDate.value,
}; };
const { data } = await heatmap.getAreaGateStatisticsApi(params); const { data } = await heatmap.getAreaGateStatisticsApi(params, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
gateData.value = data.data || []; gateData.value = data.data || [];
gateDataMap.value = {}; gateDataMap.value = {};
...@@ -449,11 +326,13 @@ function formatSecondsMin(val) { ...@@ -449,11 +326,13 @@ function formatSecondsMin(val) {
if (isNaN(val)) return val; if (isNaN(val)) return val;
return parseInt(val / 60) + "m"; return parseInt(val / 60) + "m";
} }
const serverIp = ref('')
watch( watch(
() => $route.query, () => $route.query,
async (newVal) => { async (newVal) => {
const { token, mallId, startDate: sDate, endDate: eDate, key } = newVal; const { token, mallId, startDate: sDate, endDate: eDate, key, serverIp: httpsIp } = newVal;
serverIp.value = httpsIp || 'https://store.keliuyun.com'
if (token) { if (token) {
window.localStorage.setItem("atoken", token); window.localStorage.setItem("atoken", token);
...@@ -469,7 +348,7 @@ watch( ...@@ -469,7 +348,7 @@ watch(
Toast.fail("未找到门店平面图"); Toast.fail("未找到门店平面图");
return false; return false;
} }
floorImage.value = `https://store.keliuyun.com/images/${url}`; floorImage.value = `${serverIp.value}/images/${url}`;
if (floorImage.value) { if (floorImage.value) {
getChannelList(mallId); getChannelList(mallId);
} }
...@@ -496,6 +375,7 @@ function numFormat(val) { ...@@ -496,6 +375,7 @@ function numFormat(val) {
position: relative; position: relative;
width: 100%; width: 100%;
} }
.canvas .canvas-position { .canvas .canvas-position {
position: absolute !important; position: absolute !important;
top: 0; top: 0;
...@@ -504,14 +384,17 @@ function numFormat(val) { ...@@ -504,14 +384,17 @@ function numFormat(val) {
height: 100%; height: 100%;
z-index: 1; z-index: 1;
} }
.color-legend { .color-legend {
height: 70px; height: 70px;
margin-top: 30px; margin-top: 30px;
} }
.color-box { .color-box {
float: left; float: left;
position: relative; position: relative;
} }
.color-block { .color-block {
float: left; float: left;
width: 60px; width: 60px;
......
<template> <template>
<div class="heat-map" style="background-color: #fff"> <div class="heat-map" style="background-color: #fff">
<div class="canvas"> <div class="canvas">
<img <img :src="floorImage" class="editFloorimg" id="editFloorimg" style="width: 100%" @load="handleLoad" />
:src="floorImage"
class="editFloorimg"
id="editFloorimg"
style="width: 100%"
@load="handleLoad"
/>
<div class="canvas-position" id="canvas-position"></div> <div class="canvas-position" id="canvas-position"></div>
</div> </div>
</div> </div>
<div <div style="width: 90%; margin-top: 20px; padding: 0 20px" v-if="channelList.length">
style="width: 90%; margin-top: 20px; padding: 0 20px" <van-slider bar-height="15px" :max="sliderMax" :min="1" v-model="sliderVal" @change="slideHandle">
v-if="channelList.length"
>
<van-slider
bar-height="15px"
:max="sliderMax"
:min="1"
v-model="sliderVal"
@change="slideHandle"
>
</van-slider> </van-slider>
<!-- <div v-if="sliderVal" class="custom-button">{{ getSliderVal }}</div> --> <!-- <div v-if="sliderVal" class="custom-button">{{ getSliderVal }}</div> -->
</div> </div>
...@@ -38,7 +23,7 @@ let map = null; // 地图对象 ...@@ -38,7 +23,7 @@ let map = null; // 地图对象
const $route = useRoute(); const $route = useRoute();
const getSliderVal = computed(() => { const getSliderVal = computed(() => {
return timeLevel.value == "rt" return timeLevel.value === "rt"
? getTimeMin(sliderVal.value) ? getTimeMin(sliderVal.value)
: Math.round(sliderVal.value) + ""; : Math.round(sliderVal.value) + "";
}); });
...@@ -49,7 +34,7 @@ const storeId = ref(""); // 店铺id ...@@ -49,7 +34,7 @@ const storeId = ref(""); // 店铺id
const channelList = ref([]); // 渠道列表 const channelList = ref([]); // 渠道列表
const getChannelList = async (mallId) => { const getChannelList = async (mallId) => {
try { try {
const { data } = await heatmap.getChannelsListApi({ mallId, status: 1 }); const { data } = await heatmap.getChannelsListApi({ mallId, status: 1 }, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
channelList.value = channelList.value =
...@@ -87,9 +72,11 @@ const getHeatMapData = async (params) => { ...@@ -87,9 +72,11 @@ const getHeatMapData = async (params) => {
mallId: params.mallId, mallId: params.mallId,
}; };
const { data } = await heatmap.getHeatMapValueApi(options); const { data } = await heatmap.getHeatMapValueApi(options, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
heatDataObj.value = data.data || []; heatDataObj.value = data.data || [];
console.log(111222);
nextTick(() => { nextTick(() => {
dealHeatData(); dealHeatData();
}); });
...@@ -106,7 +93,7 @@ const getHeatMapData = async (params) => { ...@@ -106,7 +93,7 @@ const getHeatMapData = async (params) => {
const floorImage = ref(""); const floorImage = ref("");
const getFloorImage = async () => { const getFloorImage = async () => {
try { try {
const { data } = await heatmap.getStoreDataApi(storeId.value); const { data } = await heatmap.getStoreDataApi(storeId.value, { serverIp: serverIp.value });
if (data.code === 200) { if (data.code === 200) {
return data.data?.mallPlan || ""; return data.data?.mallPlan || "";
} }
...@@ -174,7 +161,7 @@ function dealHeatData() { ...@@ -174,7 +161,7 @@ function dealHeatData() {
heatInstance.value = heatmapFactory.create({ heatInstance.value = heatmapFactory.create({
container: heatDom, container: heatDom,
radius: heatRadius.value, radius: heatRadius.value,
onExtremaChange: () => {}, onExtremaChange: () => { },
}); });
let points = []; let points = [];
let maxVal = 1; let maxVal = 1;
...@@ -259,10 +246,12 @@ function numFormat(val) { ...@@ -259,10 +246,12 @@ function numFormat(val) {
return val > 9 ? val : "0" + val; return val > 9 ? val : "0" + val;
} }
const serverIp = ref("");
watch( watch(
() => $route.query, () => $route.query,
async (newVal) => { async (newVal) => {
const { token, mallId, startDate: sDate, endDate: eDate, level } = newVal; const { token, mallId, startDate: sDate, endDate: eDate, level, serverIp: httpsIp } = newVal;
serverIp.value = httpsIp || 'https://store.keliuyun.com'
if (token) { if (token) {
window.localStorage.setItem("atoken", token); window.localStorage.setItem("atoken", token);
...@@ -282,7 +271,7 @@ watch( ...@@ -282,7 +271,7 @@ watch(
Toast.fail("未找到门店平面图"); Toast.fail("未找到门店平面图");
return false; return false;
} }
floorImage.value = `https://store.keliuyun.com/images/${url}`; floorImage.value = `${serverIp.value}/images/${url}`;
if (floorImage.value) { if (floorImage.value) {
getChannelList(mallId); getChannelList(mallId);
} }
...@@ -296,6 +285,7 @@ watch( ...@@ -296,6 +285,7 @@ watch(
position: relative; position: relative;
width: 100%; width: 100%;
} }
.canvas .canvas-position { .canvas .canvas-position {
position: absolute !important; position: absolute !important;
top: 0; top: 0;
......
...@@ -196,6 +196,9 @@ function handleScreenshot() { ...@@ -196,6 +196,9 @@ function handleScreenshot() {
} }
// const paramObj = parse(url).search || {} // const paramObj = parse(url).search || {}
const paramObj = parse(window.location.href).search || {}; const paramObj = parse(window.location.href).search || {};
window.localStorage.setItem('serverIp', paramObj.serverIp ? decodeURIComponent(paramObj.serverIp) : 'https://store.keliuyun.com');
/********************************/ /********************************/
paramObj.name = paramObj.name ? decodeURIComponent(paramObj.name) : ""; paramObj.name = paramObj.name ? decodeURIComponent(paramObj.name) : "";
paramObj.mallName = paramObj.mallName paramObj.mallName = paramObj.mallName
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!