Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
蒋秀川
/
miniProject
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 751e48b1
authored
Jun 07, 2025
by
Tianqing Liu
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge remote-tracking branch 'origin/app' into app
2 parents
b8833ab1
5e10a594
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
87 additions
and
5 deletions
h5/src/views/areaHeat/index.vue
h5/src/views/heatMap/index.vue
h5/src/views/areaHeat/index.vue
View file @
751e48b
<
template
>
<div>
<div
class=
"heat-map-container"
>
<div
class=
"heat-map"
style=
"background-color: #fff"
>
<div
class=
"canvas"
>
<img
...
...
@@ -7,6 +7,7 @@
class=
"editFloorimg"
id=
"editFloorimg"
style=
"width: 100%"
@
load=
"handleLoad"
/>
<canvas
class=
"canvas-position"
id=
"canvas-position"
></canvas>
</div>
...
...
@@ -58,6 +59,22 @@ const getFloorImage = async () => {
return
""
;
}
};
const
handleLoad
=
()
=>
{
const
domHeight
=
document
.
querySelector
(
".heat-map-container"
)?.
clientHeight
||
0
;
uni
.
postMessage
({
data
:
{
height
:
domHeight
,
type
:
"setHeight"
,
},
});
window
.
postMessage
({
data
:
{
height
:
domHeight
,
type
:
"setHeight"
,
},
});
};
/************** 通道数据相关 **************/
const
channelList
=
ref
([]);
// 渠道列表
...
...
@@ -78,6 +95,7 @@ const getChannelList = async (mallId) => {
};
// 获取区域数据
const
gateData
=
ref
([]);
const
gateDataMap
=
ref
({});
// 用于存储区域数据的映射
const
getGateStatistics
=
async
()
=>
{
try
{
const
params
=
{
...
...
@@ -88,10 +106,16 @@ const getGateStatistics = async () => {
const
{
data
}
=
await
heatmap
.
getAreaGateStatisticsApi
(
params
);
if
(
data
.
code
===
200
)
{
gateData
.
value
=
data
.
data
||
[];
gateDataMap
.
value
=
{};
gateData
.
value
.
forEach
((
item
)
=>
{
gateDataMap
.
value
[
item
.
gateId
]
=
item
;
});
processGateLegend
();
if
(
gateData
.
value
.
length
>
0
)
{
drawAreaCanvas
();
}
const
domHeight
=
document
.
documentElement
.
clientHeight
;
console
.
log
(
domHeight
);
}
}
catch
(
error
)
{
console
.
error
(
"获取区域数据失败:"
,
error
);
...
...
@@ -185,14 +209,43 @@ function drawAreaCanvas() {
let
selectedArea
=
areas
.
value
.
find
((
area
)
=>
{
return
ctx
.
isPointInPath
(
area
.
path
,
x
,
y
);
});
const
item
=
gateDataMap
.
value
[
selectedArea
?.
gateId
];
if
(
item
)
{
const
params
=
{
gateId
:
selectedArea
?.
gateId
,
gateName
:
item
.
gateName
||
""
,
indicatorKey
:
indicatorKey
.
value
,
val
:
item
[
indicatorKey
.
value
]
||
0
,
};
if
(
[
"totalResidenceTime"
,
"avgResidenceTime"
,
"validDwellTime"
,
"avgValidDwellTime"
,
].
includes
(
indicatorKey
.
value
)
)
{
params
.
val
=
getTimeMin
(
params
.
val
);
}
window
.
postMessage
(
JSON
.
parse
(
JSON
.
stringify
({
type
:
"areaClick"
,
data
:
params
,
})
)
);
console
.
log
(
params
);
uni
.
postMessage
(
JSON
.
parse
(
JSON
.
stringify
({
type
:
"areaClick"
,
data
:
selectedArea
?
selectedArea
:
null
,
data
:
params
,
})
)
);
}
};
}
...
...
@@ -314,6 +367,19 @@ watch(
},
{
immediate
:
true
}
);
function
getTimeMin
(
seconds
)
{
if
(
isNaN
(
seconds
))
return
seconds
;
return
(
numFormat
(
parseInt
(
seconds
/
3600
))
+
":"
+
numFormat
(
parseInt
((
seconds
%
3600
)
/
60
))
+
":00"
);
}
function
numFormat
(
val
)
{
return
val
>
9
?
val
:
"0"
+
val
;
}
</
script
>
<
style
>
.canvas
{
...
...
@@ -329,9 +395,8 @@ watch(
z-index
:
1
;
}
.color-legend
{
width
:
auto
;
height
:
auto
;
margin-top
:
20px
;
height
:
70px
;
margin-top
:
30px
;
}
.color-box
{
float
:
left
;
...
...
h5/src/views/heatMap/index.vue
View file @
751e48b
...
...
@@ -6,6 +6,7 @@
class=
"editFloorimg"
id=
"editFloorimg"
style=
"width: 100%"
@
load=
"handleLoad"
/>
<div
class=
"canvas-position"
id=
"canvas-position"
></div>
</div>
...
...
@@ -93,6 +94,7 @@ const getHeatMapData = async (params) => {
dealHeatData
();
});
}
else
{
Toast
.
fail
(
"获取热力图数据失败"
);
}
}
catch
(
error
)
{
console
.
error
(
"Error fetching heat map data:"
,
error
);
...
...
@@ -114,6 +116,21 @@ const getFloorImage = async () => {
return
""
;
}
};
const
handleLoad
=
()
=>
{
const
domHeight
=
document
.
querySelector
(
".heat-map"
)?.
clientHeight
||
0
;
uni
.
postMessage
({
data
:
{
height
:
domHeight
+
60
,
type
:
"setHeight"
,
},
});
window
.
postMessage
({
data
:
{
height
:
domHeight
+
60
,
type
:
"setHeight"
,
},
});
};
/************** 热力图相关 **************/
const
heatInstance
=
ref
(
null
);
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment