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 5251f39d
authored
Aug 31, 2022
by
李君
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
优化
1 parent
ddbfeaaf
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
638 additions
and
87 deletions
miniProject/components/echart/hbar/index.wxml
miniProject/components/echart/trend/index.js
miniProject/pages/index/account/index.js
miniProject/pages/index/account/index.wxml
miniProject/pages/index/index.js
miniProject/pages/index/index.wxml
miniProject/pages/index/mall/index.js
miniProject/pages/index/mall/index.wxml
miniProject/pages/index/mall/index.wxss
miniProject/project.config.json
miniProject/project.private.config.json
miniProject/utils/card.js
miniProject/components/echart/hbar/index.wxml
View file @
5251f39
<!--components/echart/trend/index.wxml-->
<!--components/echart/trend/index.wxml-->
<view class="cwrap">
<view class="cwrap">
<
view class="stay" wx:if="{{avgVal}}">人均停留时长<text>{{avgVal}}</text>分</view
>
<
!-- <view class="stay" wx:if="{{avgVal}}">人均停留时长<text>{{avgVal}}</text>分</view> --
>
<basic chartId="{{chartId}}" chartData="{{chartData}}" height="{{height}}"></basic>
<basic chartId="{{chartId}}" chartData="{{chartData}}" height="{{height}}"></basic>
</view>
</view>
miniProject/components/echart/trend/index.js
View file @
5251f39
...
@@ -122,6 +122,14 @@ Component({
...
@@ -122,6 +122,14 @@ Component({
//optionFormat.xAxis.axisLabel.interval = optionFormat.series[0].length>30?'auto':0;
//optionFormat.xAxis.axisLabel.interval = optionFormat.series[0].length>30?'auto':0;
optionFormat
.
legend
.
bottom
=
legendBottom
||
0
;
optionFormat
.
legend
.
bottom
=
legendBottom
||
0
;
let
option
=
Object
.
assign
({},
optionFormat
,
coverTemp
);
let
option
=
Object
.
assign
({},
optionFormat
,
coverTemp
);
option
.
yAxis
.
axisLabel
.
formatter
=
function
(
value
,
index
)
{
if
(
value
>=
10000
&&
value
<
10000000
)
{
value
=
value
/
10000
+
"万"
;
}
else
if
(
value
>=
10000000
)
{
value
=
value
/
10000000
+
"千万"
;
}
return
value
;
}
return
option
;
return
option
;
}
}
}
}
...
...
miniProject/pages/index/account/index.js
View file @
5251f39
...
@@ -38,7 +38,7 @@ Component({
...
@@ -38,7 +38,7 @@ Component({
deploymentType
:
wx
.
getStorageSync
(
'deploymentType'
),
deploymentType
:
wx
.
getStorageSync
(
'deploymentType'
),
trendVal
:
'account_passenger_flow'
,
trendVal
:
'account_passenger_flow'
,
trendName
:
'客流量'
,
trendName
:
'客流量'
,
rankVal
:
'
total_passenger
'
,
rankVal
:
'
outside_traffic
'
,
rankData
:
{},
rankData
:
{},
belongTo
:
'NewAccount'
,
belongTo
:
'NewAccount'
,
params
:
{
params
:
{
...
...
miniProject/pages/index/account/index.wxml
View file @
5251f39
...
@@ -13,9 +13,11 @@
...
@@ -13,9 +13,11 @@
</view>
</view>
</view>
</view>
<view class="sitem">
<view class="sitem">
<view class="snum color2">--</view>
<view class="snum color2">{{cardData.account_passenger_flow.value || '--'}}</view>
<view class="sname">销售额(元)</view>
<view class="sname">客流量(人次)</view>
<view class="spercent">较{{dateStr}}:--% <image src="/images/ico.png" mode="aspecFill"/></view>
<view class="spercent">较{{dateStr}}:{{cardData.account_passenger_flow.ratio}}
<image src="/images/ico{{cardData.account_passenger_flow.rstatus}}.png" mode="aspecFill"/>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
...
@@ -23,7 +25,7 @@
...
@@ -23,7 +25,7 @@
<view class="mcards ~acea-row">
<view class="mcards ~acea-row">
<view class="card">
<view class="card">
<view class="mnum">{{ cardData.account_passenger_flow.value||'--' }}</view>
<view class="mnum">{{ cardData.account_passenger_flow.value||'--' }}</view>
<view class="mname">
客流量
(人次)</view>
<view class="mname">
过店客流
(人次)</view>
</view>
</view>
<view class="card">
<view class="card">
<view class="mnum">{{ cardData.account_entry_rate_average.value||'--' }}</view>
<view class="mnum">{{ cardData.account_entry_rate_average.value||'--' }}</view>
...
@@ -35,7 +37,7 @@
...
@@ -35,7 +37,7 @@
</view>
</view>
<view class="card">
<view class="card">
<view class="mnum">{{ '--' }}</view>
<view class="mnum">{{ '--' }}</view>
<view class="mname">
客单价(元
)</view>
<view class="mname">
深逛率(%
)</view>
</view>
</view>
</view>
</view>
<view class="~echart-item">
<view class="~echart-item">
...
@@ -61,10 +63,10 @@
...
@@ -61,10 +63,10 @@
</view>
</view>
<view class="~tablist" style="width:73%;margin-top:10rpx;">
<view class="~tablist" style="width:73%;margin-top:10rpx;">
<van-tabs bindclick="changeRank" active="{{rankVal}}">
<van-tabs bindclick="changeRank" active="{{rankVal}}">
<van-tab title="
客流量" name="total_passenger
"></van-tab>
<van-tab title="
过店客流" name="outside_traffic
"></van-tab>
<van-tab title="进店
率" name="avg_entry_rate
"></van-tab>
<van-tab title="进店
客流" name="total_passenger
"></van-tab>
<van-tab title="
停留时长" name="custom_residence_time
"></van-tab>
<van-tab title="
顾客人数" name="total_traffic
"></van-tab>
<van-tab title="
销售额" disabled name="4
"></van-tab>
<van-tab title="
深逛率" name="deep_shopping_rate
"></van-tab>
</van-tabs>
</van-tabs>
</view>
</view>
<view class="~echart-item-content">
<view class="~echart-item-content">
...
...
miniProject/pages/index/index.js
View file @
5251f39
...
@@ -51,9 +51,9 @@ Page({
...
@@ -51,9 +51,9 @@ Page({
},
},
mallLoad
(
data
){
mallLoad
(
data
){
let
list
=
data
.
detail
;
let
list
=
data
.
detail
;
if
(
list
.
length
==
1
){
if
(
list
.
length
>
1
){
this
.
setData
({
this
.
setData
({
isMall
:
tru
e
,
isMall
:
fals
e
,
indexType
:
'mall'
indexType
:
'mall'
});
});
this
.
onZonePickerCallback
({
detail
:
list
[
0
]});
this
.
onZonePickerCallback
({
detail
:
list
[
0
]});
...
@@ -68,7 +68,7 @@ Page({
...
@@ -68,7 +68,7 @@ Page({
accountBtn
(){
accountBtn
(){
const
orgName
=
wx
.
getStorageSync
(
'accountName'
)
const
orgName
=
wx
.
getStorageSync
(
'accountName'
)
const
accountId
=
wx
.
getStorageSync
(
'accountId'
)
const
accountId
=
wx
.
getStorageSync
(
'accountId'
)
const
indexType
=
'
account
'
;
const
indexType
=
'
mall
'
;
this
.
setData
({
this
.
setData
({
accountId
:
accountId
,
accountId
:
accountId
,
orgName
:
orgName
,
orgName
:
orgName
,
...
...
miniProject/pages/index/index.wxml
View file @
5251f39
<view class="container" style="padding-top: {{navHeight}}px">
<view class="container" style="padding-top: {{navHeight}}px">
<navbar2 bg-color="#001C90" navbar-color="#fff">
<navbar2 bg-color="#001C90" navbar-color="#fff">
<view class="navtitle">
<view class="navtitle">
<
van-icon bindtap="accountBtn" size="22" name="arrow-left" custom-class="back {{indexType!='mall'||isMall?'hide':''}}"/
>
<
!-- <van-icon bindtap="accountBtn" size="22" name="arrow-left" custom-class="back {{indexType!='mall'||isMall?'hide':''}}"/> --
>
<time-picker class="picker" placeholder="请选择时间"
<time-picker class="picker" placeholder="请选择时间"
initDate="{{date}}"
initDate="{{date}}"
dateType="{{dateType}}"
dateType="{{dateType}}"
...
...
miniProject/pages/index/mall/index.js
View file @
5251f39
...
@@ -14,7 +14,7 @@ import {
...
@@ -14,7 +14,7 @@ import {
import
{
import
{
getCharts
getCharts
}
from
"../../../api/report.js"
;
}
from
"../../../api/report.js"
;
import
cardConfig
from
'../../../utils/card'
Component
({
Component
({
behaviors
:
[
customBehavior
],
behaviors
:
[
customBehavior
],
...
@@ -37,8 +37,8 @@ Component({
...
@@ -37,8 +37,8 @@ Component({
windowWidth
:
App
.
globalData
.
windowWidth
,
windowWidth
:
App
.
globalData
.
windowWidth
,
navHeight
:
getApp
().
globalData
.
navHeight
,
navHeight
:
getApp
().
globalData
.
navHeight
,
deploymentType
:
wx
.
getStorageSync
(
'deploymentType'
),
deploymentType
:
wx
.
getStorageSync
(
'deploymentType'
),
trendVal
:
'
mall_passenger_flow
'
,
trendVal
:
''
,
trendName
:
'
客流量
'
,
trendName
:
''
,
rankVal
:
'total_passenger'
,
rankVal
:
'total_passenger'
,
rankData
:
{},
rankData
:
{},
belongTo
:
'NewMall'
,
belongTo
:
'NewMall'
,
...
@@ -52,14 +52,20 @@ Component({
...
@@ -52,14 +52,20 @@ Component({
dateStr
:
'昨日'
,
dateStr
:
'昨日'
,
trendData
:
{},
trendData
:
{},
hbarData
:
{},
hbarData
:
{},
cardData
:
{}
cardData
:
{},
isOnce
:
true
,
cardsList
:[],
showTab
:
true
/********************************************/
/********************************************/
},
},
lifetimes
:
{
lifetimes
:
{
attached
:
function
()
{
attached
:
function
()
{
this
.
data
.
isOnce
=
false
this
.
getCharts
().
then
(
res
=>
{
this
.
getCharts
().
then
(
res
=>
{
this
.
data
.
cardsList
=
res
.
data
.
cards
this
.
data
.
isOnce
=
true
this
.
changeTimerFn
({
this
.
changeTimerFn
({
...
this
.
data
.
time
,
...
this
.
data
.
time
,
dateType
:
this
.
data
.
timeType
dateType
:
this
.
data
.
timeType
...
@@ -78,15 +84,14 @@ Component({
...
@@ -78,15 +84,14 @@ Component({
}
}
},
},
// 获取报表chartIds
// 获取报表chartIds
getReportCharts
:
function
()
{
getReportCharts
:
function
(
res
)
{
if
(
this
.
data
.
chartList
.
length
==
0
)
return
;
if
(
this
.
data
.
chartList
.
length
==
0
)
return
;
wx
.
showLoading
({
wx
.
showLoading
({
title
:
'数据加载中'
,
title
:
'数据加载中'
,
mask
:
true
mask
:
true
});
});
this
.
loadHeadData
();
this
.
loadHeadData
();
this
.
loaTrendData
();
this
.
loadBarData
();
this
.
loadBarData
();
this
.
loaRankData
();
this
.
loaRankData
();
},
},
...
@@ -97,7 +102,7 @@ Component({
...
@@ -97,7 +102,7 @@ Component({
chartIds
,
chartIds
,
orgIds
orgIds
}).
then
(
res
=>
{
}).
then
(
res
=>
{
let
cardData
=
{}
;
let
cardData
=
[]
;
Object
.
keys
(
res
.
data
).
forEach
(
key
=>
{
Object
.
keys
(
res
.
data
).
forEach
(
key
=>
{
let
item
=
res
.
data
[
key
];
let
item
=
res
.
data
[
key
];
if
(
this
.
data
.
params
.
dateType
==
'day'
)
{
if
(
this
.
data
.
params
.
dateType
==
'day'
)
{
...
@@ -113,10 +118,41 @@ Component({
...
@@ -113,10 +118,41 @@ Component({
item
.
value
=
String
(
item
.
value
&&
this
.
toThousands
(
item
.
value
)).
replace
(
'分'
,
''
);
item
.
value
=
String
(
item
.
value
&&
this
.
toThousands
(
item
.
value
)).
replace
(
'分'
,
''
);
item
.
rstatus
=
(
item
.
ratio
&&
item
.
ratio
.
includes
(
'-'
))
?
1
:
2
;
item
.
rstatus
=
(
item
.
ratio
&&
item
.
ratio
.
includes
(
'-'
))
?
1
:
2
;
item
.
name
=
this
.
getChartName
(
key
);
item
.
name
=
this
.
getChartName
(
key
);
cardData
[
key
]
=
item
;
item
.
key
=
key
;
item
.
dateType
=
this
.
data
.
params
.
dateType
cardData
.
push
(
item
)
});
});
let
newData
=
[]
this
.
data
.
cardsList
.
forEach
(
item
=>
{
cardData
.
forEach
(
card
=>
{
if
(
item
.
chartKey
==
card
.
key
){
newData
.
push
(
card
)
}
})
})
let
name
=
''
,
title
=
''
this
.
data
.
trendVal
=
''
Object
.
keys
(
cardConfig
).
forEach
(
key
=>
{
newData
.
forEach
(
card
=>
{
if
(
key
==
card
.
key
){
card
.
unit
=
cardConfig
[
key
].
unit
;
card
.
hasTrend
=
cardConfig
[
key
][
card
.
dateType
].
level
&&
cardConfig
[
key
][
card
.
dateType
].
level
.
length
>
0
if
(
!
name
&&
card
.
hasTrend
){
name
=
key
title
=
card
.
name
}
}
})
})
this
.
data
.
showTab
=
true
this
.
setData
({
trendVal
:
name
,
trendName
:
title
},
()
=>
{
this
.
loaTrendData
();
})
this
.
setData
({
this
.
setData
({
cardData
cardData
:
newData
})
})
})
})
},
},
...
@@ -195,10 +231,12 @@ Component({
...
@@ -195,10 +231,12 @@ Component({
});
});
},
},
changeAccountFn
:
function
(
value
)
{
changeAccountFn
:
function
(
value
)
{
this
.
getReportCharts
();
// this.getReportCharts();
// this.getCharts({accountId:value}).then(res=>{
if
(
!
this
.
data
.
isOnce
)
return
// this.getReportCharts();
this
.
getCharts
({
mallId
:
value
}).
then
(
res
=>
{
// })
this
.
data
.
cardsList
=
res
.
data
.
cards
this
.
getReportCharts
();
})
},
},
changeTimerFn
:
async
function
(
value
)
{
changeTimerFn
:
async
function
(
value
)
{
let
{
let
{
...
...
miniProject/pages/index/mall/index.wxml
View file @
5251f39
...
@@ -5,49 +5,48 @@
...
@@ -5,49 +5,48 @@
<view class="mallselect" bindtap="mallBtn">{{orgName}} <van-icon name="play" custom-class="drop {{isMall?'hide':''}}"/></view>
<view class="mallselect" bindtap="mallBtn">{{orgName}} <van-icon name="play" custom-class="drop {{isMall?'hide':''}}"/></view>
<view class="slist ~acea-row ~row-around">
<view class="slist ~acea-row ~row-around">
<view class="sitem">
<view class="sitem">
<view class="snum color1">{{cardData
.mall_passenger_number.value
}}</view>
<view class="snum color1">{{cardData
[0].value|| '--'
}}</view>
<view class="sname">
顾客数(人)
</view>
<view class="sname">
{{cardData[0].name|| '--'}}{{cardData[0].unit?'('+cardData[0].unit+')':''}}
</view>
<view class="spercent">
<view class="spercent">
较{{dateStr}}:{{cardData
.mall_passenger_number.ratio
}}
较{{dateStr}}:{{cardData
[0].ratio|| '--'
}}
<image src="/images/ico{{cardData
.mall_passenger_number
.rstatus}}.png" mode="aspecFill"/>
<image src="/images/ico{{cardData
[0]
.rstatus}}.png" mode="aspecFill"/>
</view>
</view>
</view>
</view>
<view class="sitem">
<view class="sitem" wx:if="{{cardData.length>1}}">
<view class="snum color2">--</view>
<view class="snum color2">{{cardData[1].value || '--'}}</view>
<view class="sname">销售额(元)</view>
<view class="sname">{{cardData[1].name|| '--'}}{{cardData[1].unit?'('+cardData[1].unit+')':''}}</view>
<view class="spercent">较{{dateStr}}:--% <image src="/images/ico.png" mode="aspecFill"/></view>
<view class="spercent">较{{dateStr}}:{{cardData[1].ratio|| '--'}}
<image src="/images/ico{{cardData[1].rstatus}}.png" mode="aspecFill"/>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="mcards ~acea-row">
<view class="mcards ~acea-row" wx:if="{{cardData.length>2}}">
<view class="card">
<view class="card" wx:for="{{cardData}}" wx:for-index="index" wx:for-item="item" wx:if="{{index>1}}" wx:key='index'>
<view class="mnum">{{ cardData.mall_passenger_flow.value||'--' }}</view>
<view class="mnum">{{index}}{{ item.value||'--' }}</view>
<view class="mname">客流量(人次)</view>
<view class="mname">{{ item.name||'--' }}{{item.unit?'('+item.unit+')':''}}</view>
</view>
<view class="card">
<view class="mnum">{{ cardData.mall_entry_rate.value||'--' }}</view>
<view class="mname">进店率(%)</view>
</view>
</view>
<
view class="card
">
<
!-- <view class="card" wx:if="{{cardData.length>3}}
">
<view class="mnum">{{ cardData
.custom_residence_time
.value||'--' }}</view>
<view class="mnum">{{ cardData
[3]
.value||'--' }}</view>
<view class="mname">
停留时长(分)
</view>
<view class="mname">
{{ cardData[3].name||'--' }}
</view>
</view>
</view>
<view class="card">
<view class="card"
wx:if="{{cardData.length>4}}"
>
<view class="mnum">{{ '--' }}</view>
<view class="mnum">{{
cardData[4].value||
'--' }}</view>
<view class="mname">
客单价(元)
</view>
<view class="mname">
{{ cardData[4].name||'--' }}
</view>
</view>
</view>
<view class="card" wx:if="{{cardData.length>5}}">
<view class="mnum">{{ cardData[5].value||'--' }}</view>
<view class="mname">{{ cardData[5].name||'--' }}</view>
</view> -->
</view>
</view>
<view class="~echart-item">
<view class="~echart-item">
<view class="~echart-item-title">
<view class="~echart-item-title">
<view>趋势分析</view>
<view>趋势分析</view>
</view>
</view>
<view class="~tablist" style="width:73%;margin-top:10rpx;">
<view class="~tablist" style="margin-top:10rpx;padding: 0 15rpx;">
<van-tabs bindclick="changeTrend" active="{{trendVal}}">
<van-tabs ref="tabs" tab-class='tab-box' bindclick="changeTrend" active="{{trendVal}}">
<van-tab title="客流量" name="mall_passenger_flow"></van-tab>
<van-tab wx:for="{{cardData}}" wx:for-index="index" wx:for-item="item" wx:if="{{item.hasTrend}}" wx:key='index' title="{{item.name}}" name="{{item.key}}"></van-tab>
<van-tab title="进店率" name="mall_entry_rate"></van-tab>
<van-tab title="停留时长" name="custom_residence_time"></van-tab>
<van-tab title="销售额" disabled name="4"></van-tab>
</van-tabs>
</van-tabs>
</view>
</view>
<view class="~echart-item-content">
<view class="~echart-item-content">
...
@@ -74,7 +73,7 @@
...
@@ -74,7 +73,7 @@
<van-tab title="客流量" name="total_passenger"></van-tab>
<van-tab title="客流量" name="total_passenger"></van-tab>
<van-tab title="进店率" name="avg_entry_rate"></van-tab>
<van-tab title="进店率" name="avg_entry_rate"></van-tab>
<van-tab title="停留时长" name="custom_residence_time"></van-tab>
<van-tab title="停留时长" name="custom_residence_time"></van-tab>
<
van-tab title="销售额" disabled name="4"></van-tab
>
<
!-- <van-tab title="销售额" disabled name="4"></van-tab> --
>
</van-tabs>
</van-tabs>
</view>
</view>
<view class="~echart-item-content">
<view class="~echart-item-content">
...
...
miniProject/pages/index/mall/index.wxss
View file @
5251f39
...
@@ -13,7 +13,12 @@
...
@@ -13,7 +13,12 @@
justify-content: space-between;
justify-content: space-between;
position: relative;
position: relative;
}
}
.tab-box{
flex: none !important;
}
.tab-box .tabItem{
width: 80rpx;
}
.top .time {
.top .time {
position: relative;
position: relative;
width: 100%;
width: 100%;
...
...
miniProject/project.config.json
View file @
5251f39
{
{
"description"
:
"项目配置文件"
,
"description"
:
"项目配置文件
,详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html
"
,
"packOptions"
:
{
"packOptions"
:
{
"ignore"
:
[],
"ignore"
:
[],
"include"
:
[]
"include"
:
[]
...
@@ -40,32 +40,17 @@
...
@@ -40,32 +40,17 @@
"minifyWXML"
:
true
,
"minifyWXML"
:
true
,
"showES6CompileOption"
:
false
,
"showES6CompileOption"
:
false
,
"useCompilerPlugins"
:
false
,
"useCompilerPlugins"
:
false
,
"ignoreUploadUnusedFiles"
:
true
"ignoreUploadUnusedFiles"
:
true
,
"useStaticServer"
:
true
},
},
"compileType"
:
"miniprogram"
,
"compileType"
:
"miniprogram"
,
"libVersion"
:
"2.14.4"
,
"libVersion"
:
"2.14.4"
,
"appid"
:
"wx220b5d2dbb82ce64"
,
"appid"
:
"wx220b5d2dbb82ce64"
,
"projectname"
:
"miniProject"
,
"projectname"
:
"miniProject"
,
"cloudfunctionTemplateRoot"
:
"cloudfunctionTemplate"
,
"cloudfunctionTemplateRoot"
:
"cloudfunctionTemplate/"
,
"watchOptions"
:
{
"condition"
:
{},
"ignore"
:
[]
"editorSetting"
:
{
},
"tabIndent"
:
"insertSpaces"
,
"debugOptions"
:
{
"tabSize"
:
4
"hidedInDevtools"
:
[]
},
"scripts"
:
{},
"condition"
:
{
"plugin"
:
{
"list"
:
[]
},
"game"
:
{
"list"
:
[]
},
"gamePlugin"
:
{
"list"
:
[]
},
"miniprogram"
:
{
"list"
:
[]
}
}
}
}
}
\ No newline at end of file
\ No newline at end of file
miniProject/project.private.config.json
View file @
5251f39
{
{
"projectname"
:
"miniProject"
,
"projectname"
:
"miniProject"
,
"setting"
:
{
"setting"
:
{
"compileHotReLoad"
:
true
"compileHotReLoad"
:
true
},
},
"description"
:
"项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
"description"
:
"项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html"
}
}
\ No newline at end of file
\ No newline at end of file
miniProject/utils/card.js
0 → 100644
View file @
5251f39
export
default
{
floor_passenger_flow
:
{
name
:
"楼层客流人次"
,
unit
:
"人次"
,
info
:
"楼层客流人次"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
floor_passenger_number
:
{
name
:
"楼层客流人数"
,
unit
:
"人"
,
info
:
"楼层客流人数"
,
day
:
{
level
:
[
"HOUR"
]
},
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
mall_passenger_flow
:
{
name
:
"客流量"
,
unit
:
"人次"
,
info
:
"客流量"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
mall_passenger_number
:
{
name
:
"顾客人数"
,
unit
:
"人"
,
info
:
"顾客人数"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
zone_total_passenger_flow
:
{
name
:
"店铺总客流人次"
,
unit
:
"人次"
,
info
:
"店铺总客流人次"
,
month
:
{
level
:
[
"HOUR"
],
},
day
:
{
level
:
[],
},
},
zone_total_passenger_number
:
{
name
:
"店铺总客流人数"
,
unit
:
"人"
,
info
:
"店铺总客流人数"
,
month
:
{
level
:
[
"HOUR"
],
},
day
:
{
level
:
[],
},
},
zone_passenger_flow
:
{
name
:
"店铺总客流"
,
unit
:
"人次"
,
info
:
"店铺总客流"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
zone_passenger_number
:
{
name
:
"店铺客流人数"
,
unit
:
"人"
,
info
:
"店铺客流人数"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
],
},
day
:
{
level
:
[
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
zone_passenger_flow_passing_by
:
{
name
:
"路过店铺客流人次"
,
unit
:
"人次"
,
info
:
"路过店铺客流人次"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
format_passenger_flow_average
:
{
name
:
"业态平均客流"
,
unit
:
"人次"
,
info
:
"业态平均客流"
,
month
:
{
level
:
[],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[],
},
},
// 业态客流人次
format_passenger_flow
:
{
name
:
"业态客流人次"
,
unit
:
"人次"
,
info
:
"业态客流人次"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
// 业态主力店客流人次
main_format_passenger_flow
:
{
name
:
"主力店总客流"
,
unit
:
"人次"
,
info
:
"主力店总客流"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
// 滞留时间
format_residence_time
:
{
name
:
"滞留时间"
,
unit
:
'分'
,
unit2
:
'分'
,
info
:
"业态总滞留时长/业态总客流人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
// 周末集客效应
format_weekend_effect
:
{
name
:
"周末集客效应"
,
unit
:
"%"
,
info
:
"周六周日/周一至周五*100%"
,
month
:
{
level
:
[
"WEEK"
],
},
year
:
{
level
:
[
"WEEK"
],
},
day
:
{
level
:
[],
},
},
format_passenger_ranking
:
{
name
:
"业态客流排行"
,
unit
:
'名'
,
info
:
"业态客流排行"
,
month
:
{
level
:
[],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[],
},
},
main_zone_passenger_flow
:
{
name
:
"主力店总客流"
,
unit
:
"人次"
,
info
:
"主力店总客流"
,
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
main_zone_entry_rate_average
:
{
name
:
"主力店平均进店率"
,
unit
:
"%"
,
info
:
"主力店所有店铺,进店人次/过店人次+进店人次*100%"
,
month
:
{
level
:
[
"DAY"
,
"HOUR"
],
},
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
},
mall_weekend_effect
:
{
name
:
"周末集客效应"
,
unit
:
"%"
,
info
:
"周六周日/周一至周五*100%"
,
month
:
{
level
:
[
"WEEK"
],
},
year
:
{
level
:
[
"WEEK"
],
},
day
:
{
level
:
[],
},
},
floor_weekend_effect
:
{
name
:
"周末集客效应"
,
unit
:
"%"
,
info
:
"周六周日/周一至周五*100%"
,
month
:
{
level
:
[
"WEEK"
],
},
year
:
{
level
:
[
"WEEK"
],
},
day
:
{
level
:
[],
},
},
zone_weekend_effect
:
{
name
:
"周末集客效应"
,
unit
:
"%"
,
info
:
"周六周日/周一至周五*100%"
,
month
:
{
level
:
[
"WEEK"
],
},
year
:
{
level
:
[
"WEEK"
],
},
day
:
{
level
:
[],
},
},
store_exposure
:
{
name
:
"店铺曝光率"
,
unit
:
"%"
,
unit2
:
"%"
,
info
:
"店铺过店人次+进店人次/商场总客流"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"DAY"
,
"HOUR"
,
"MINUTE"
],
},
year
:
{
level
:
[
"MONTH"
,
"DAY"
],
},
},
entry_rate
:
{
name
:
"进店率"
,
unit
:
"%"
,
info
:
"主力店所有店铺,进店人次/过店人次*100%"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"DAY"
],
},
},
mall_residence_time
:
{
name
:
"顾客停留时间"
,
unit
:
'分'
,
unit2
:
'分'
,
info
:
"广场总滞留时长/广场总客流人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
/*Reid滞留时间*/
custom_residence_time
:
{
name
:
"滞留时间"
,
unit
:
'分'
,
unit2
:
'分'
,
info
:
"门店总滞留时长/门店总客流人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
mall_flow_evaluation
:
{
name
:
"客流坪效"
,
unit
:
'人次/天/㎡'
,
info
:
"总客流/面积"
,
month
:
{
level
:
[],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[],
},
},
mall_entry_rate
:
{
name
:
"进店率"
,
unit
:
"%"
,
info
:
"进店人次/(进店人次+过店人次)*100%"
,
day
:
{
level
:
[],
},
month
:
{
level
:
[
"DAY"
],
},
year
:
{
level
:
[
"DAY"
],
},
},
floor_residence_time
:
{
name
:
"滞留时间"
,
unit
:
'分'
,
unit2
:
'分'
,
info
:
"楼层总滞留时长/楼层总客流人数"
,
month
:
{
level
:
[
"DAY"
]
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
zone_residence_time
:
{
name
:
"滞留时间"
,
unit
:
'分'
,
unit2
:
'分'
,
info
:
"店铺总滞留时长/店铺总客流人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
zone_flow_evaluation
:
{
name
:
"店铺客流坪效"
,
unit
:
'人次/天/㎡'
,
info
:
"店铺总客流/店铺面积"
,
month
:
{
level
:
[],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[],
},
},
zone_average_visited
:
{
name
:
"平均游逛店铺个数"
,
unit
:
'个'
,
info
:
"店铺总进店人数/总进场人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
floor_average_visited
:
{
name
:
"平均游逛楼层个数"
,
unit
:
'个'
,
info
:
"楼层总人数/总进场人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[]
},
year
:
{
level
:
[
"DAY"
],
},
},
format_average_visited
:
{
name
:
"平均游逛业态个数"
,
unit
:
'个'
,
info
:
"业态总进店人数/总进场人数"
,
month
:
{
level
:
[
"DAY"
],
},
day
:
{
level
:
[],
},
year
:
{
level
:
[
"DAY"
],
},
},
zone_number
:
{
name
:
"店铺个数"
,
unit
:
'个'
,
info
:
"截止当前时间最新的门店数量"
,
month
:
{
level
:
[],
},
day
:
{
level
:
[],
},
},
account_passenger_flow
:
{
name
:
"集团总客流"
,
unit
:
"人次"
,
info
:
"集团总客流"
,
day
:
{
level
:
[],
},
},
account_median
:
{
name
:
"集团客流中位数"
,
unit
:
"人次"
,
info
:
"所有店铺累计客流量排序,中间的那位(若偶数算平均,若单数直接取)"
,
day
:
{
level
:
[],
},
},
account_passenger_flow_average
:
{
name
:
"集团平均客流量"
,
unit
:
"人次"
,
info
:
"集团累计客流量/广场个数"
,
day
:
{
level
:
[]
},
},
mall_number
:
{
name
:
"已开业商场"
,
unit
:
'个'
,
info
:
"截止当前最新的门店数量"
,
day
:
{
level
:
[]
},
},
mall_outside_number
:{
name
:
"过店人次"
,
unit
:
'人次'
,
info
:
"路过人次"
,
day
:
{
level
:
[
"HOUR"
,
"MINUTE"
],
},
month
:
{
level
:
[
"WEEK"
,
"DAY"
,
"HOUR"
],
},
year
:
{
level
:
[
"MONTH"
,
"WEEK"
,
"DAY"
],
},
}
};
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