Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CRM
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
华国豪
CRM
Commits
79b930ee
Commit
79b930ee
authored
Mar 29, 2020
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调整
parent
9bc2e187
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
2145 additions
and
1824 deletions
+2145
-1824
customerManage.vue
src/components/customerManage/customerManage.vue
+14
-1
sceneBox.vue
src/components/dialogModel/sceneBox.vue
+2
-1
sceneEditBox.vue
src/components/dialogModel/sceneEditBox.vue
+1
-0
Opinionpolls.vue
src/components/statistics/Opinionpolls.vue
+2
-1
assets.vue
src/components/statistics/assets.vue
+225
-212
festivalOrderList.vue
src/components/statistics/festivalOrderList.vue
+25
-5
gaoxiao.vue
src/components/statistics/gaoxiao.vue
+242
-210
job.vue
src/components/statistics/job.vue
+205
-181
marital.vue
src/components/statistics/marital.vue
+31
-8
marriage.vue
src/components/statistics/marriage.vue
+2
-1
discussBox.vue
src/components/statistics/model/discussBox.vue
+3
-3
festivalChart.vue
src/components/statistics/model/festivalChart.vue
+2
-2
old.vue
src/components/statistics/old.vue
+23
-28
roomStatistical.vue
src/components/statistics/roomStatistical.vue
+268
-223
season.vue
src/components/statistics/season.vue
+244
-224
sex.vue
src/components/statistics/sex.vue
+247
-209
tourType.vue
src/components/statistics/tourType.vue
+331
-279
unit.vue
src/components/statistics/unit.vue
+278
-236
No files found.
src/components/customerManage/customerManage.vue
View file @
79b930ee
...
...
@@ -213,6 +213,12 @@
<p
@
click=
"openDetails(scope)"
class=
"font-color-link cp"
>
{{
scope
.
row
.
CustomerName
}}
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"CustomerType"
label=
"客户类型"
v-if=
"queryType[20].show"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"CustomerSourceTypeStr"
label=
"客户来源"
...
...
@@ -540,6 +546,10 @@ export default {
label
:
'交客数'
,
show
:
true
,
},
{
label
:
'客户类型'
,
show
:
true
,
}
],
queryType
:
[
{
...
...
@@ -602,7 +612,10 @@ export default {
},{
label
:
'交客数'
,
show
:
true
,
},
},
{
label
:
'客户类型'
,
show
:
true
,
}
],
CustomerId
:
0
,
CustomerIdStr
:
''
,
...
...
src/components/dialogModel/sceneBox.vue
View file @
79b930ee
...
...
@@ -303,6 +303,7 @@ export default {
SceneName
:
''
,
IsDefault
:
0
,
}
console
.
log
(
val
)
},
deep
:
true
}
...
...
@@ -502,7 +503,7 @@ export default {
x
.
region
=
this
.
optionsNames
.
filter
(
item
=>
{
return
!
item
.
t
})
}
else
if
(
x
.
Name
===
'负责人'
||
x
.
Name
===
'创建人'
||
x
.
Name
===
'线索来源'
||
x
.
Name
===
'客户来源'
||
x
.
Name
===
'客人级别'
||
x
.
Name
===
'经营场所'
||
x
.
Name
===
'性别'
||
x
.
Name
===
'是否关键决策人'
||
x
.
Name
===
'职务'
||
x
.
Name
===
'商机状态组'
||
x
.
Name
===
'交客数'
||
x
.
Name
===
'优惠券数'
||
x
.
Name
===
'交易金额'
||
x
.
Name
===
'幸福存折'
)
{
}
else
if
(
x
.
Name
===
'负责人'
||
x
.
Name
===
'
客户类别'
||
x
.
Name
===
'
创建人'
||
x
.
Name
===
'线索来源'
||
x
.
Name
===
'客户来源'
||
x
.
Name
===
'客人级别'
||
x
.
Name
===
'经营场所'
||
x
.
Name
===
'性别'
||
x
.
Name
===
'是否关键决策人'
||
x
.
Name
===
'职务'
||
x
.
Name
===
'商机状态组'
||
x
.
Name
===
'交客数'
||
x
.
Name
===
'优惠券数'
||
x
.
Name
===
'交易金额'
||
x
.
Name
===
'幸福存折'
)
{
x
.
region
=
this
.
optionsNames
.
filter
(
item
=>
{
return
(
item
.
c
===
'等于'
||
item
.
c
===
'不等于'
)
&&
item
.
t
})
...
...
src/components/dialogModel/sceneEditBox.vue
View file @
79b930ee
...
...
@@ -68,6 +68,7 @@ export default {
this
.
sceneDataList
=
this
.
sceneData
.
filter
(
x
=>
x
.
WhereType
===
0
)
console
.
log
(
this
.
sceneDataList
)
let
$this
=
this
this
.
MsgBus
.
$on
(
'editScene'
,
function
(){
console
.
log
(
1
)
...
...
src/components/statistics/Opinionpolls.vue
View file @
79b930ee
...
...
@@ -205,7 +205,8 @@
<span
class=
"font-size-12"
>
{{
item
.
SeasonTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
SeasonCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
SeasonCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- ,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万 -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
</div>
</div>
...
...
src/components/statistics/assets.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,41 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,13 +91,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/zc.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/zc.png"
alt
/
>
</div>
<p>
资产
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -106,13 +105,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -121,14 +123,22 @@
<div
style=
"height: 100%;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/in1.png"
alt=
""
>
<img
v-if=
"index==1"
src=
"../../assets/img/tongji/in2.png"
alt=
""
>
<img
v-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt=
""
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/in1.png"
alt
/
>
<img
v-if=
"index==1"
src=
"../../assets/img/tongji/in2.png"
alt
/
>
<img
v-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
ZiChanTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- ,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万 -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -138,18 +148,16 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对资产的统计可以,更好的了解不同资产客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
...
...
@@ -157,18 +165,14 @@
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:id=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -184,69 +188,78 @@ export default {
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'10万以下'
,
'10-50万'
,
'50万以上'
],
orders
:[]
strArr
:
[
"10万以下"
,
"10-50万"
,
"50万以上"
],
orders
:
[],
discussID
:
10
,
BbsList
:
[],
topOne
:{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
()
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
});
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetZiChanOrderOrderList"
,
{},
res
=>
{
// this.SexOrder = res.data.data
this
.
loading
=
false
console
.
log
(
"res.data.data"
,
res
.
data
.
data
)
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
+
res
.
data
.
data
[
2
].
ShopMoney
,
this
.
loading
=
false
;
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
+
res
.
data
.
data
[
2
].
ShopMoney
,
zai
=
res
.
data
.
data
[
0
].
ShopMoney
,
bi
=
res
.
data
.
data
[
1
].
ShopMoney
,
ot
=
res
.
data
.
data
[
2
].
ShopMoney
,
contNum
=
res
.
data
.
data
[
0
].
OrderCount
+
res
.
data
.
data
[
1
].
OrderCount
+
res
.
data
.
data
[
2
].
OrderCount
,
contNum
=
res
.
data
.
data
[
0
].
OrderCount
+
res
.
data
.
data
[
1
].
OrderCount
+
res
.
data
.
data
[
2
].
OrderCount
,
zaiN
=
res
.
data
.
data
[
0
].
OrderCount
,
biN
=
res
.
data
.
data
[
1
].
OrderCount
,
otN
=
res
.
data
.
data
[
2
].
OrderCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
biN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
otN
/
contNum
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
zai
/
contShop
)
*
100
).
toFixed
(
2
)),
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
biN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
otN
/
contNum
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
({
num
:
Number
(((
zai
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'10万以下'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
bi
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"10万以下"
});
shopChartData
.
push
({
num
:
Number
(((
bi
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'10-50万'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
ot
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"10-50万"
});
shopChartData
.
push
({
num
:
Number
(((
ot
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#999"
,
text
:
'50万以上'
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
text
:
"50万以上"
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
// console.log("this.orders",this.orders)
});
},
}
}
}
};
</
script
>
\ No newline at end of file
src/components/statistics/festivalOrderList.vue
View file @
79b930ee
...
...
@@ -204,7 +204,8 @@
<p>
{{
item
.
FestivalName
}}
</p>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
{{
item
.
LtName
}}
</span></p>
</div>
</div>
...
...
@@ -219,14 +220,14 @@
推荐解答
</el-col>
<el-col
:span=
"12"
class=
"right-title"
>
<
i
class=
"iconfont icondianzan1"
></i>
点赞
<
!--
<i
class=
"iconfont icondianzan1"
></i>
点赞 -->
</el-col>
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"fesRemind"
>
根据对客户年龄段的统计,可以更好的了解不同年龄段客 人的喜根据对客户年龄段的统计。根据对客户年龄段的统 计,可以更好的了解不同年龄段客人的喜根据对客户年龄 段的统计
</div>
<div
class=
"fesRemind"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"botTaolun"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
...
...
@@ -239,7 +240,7 @@
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:
id
=
"discussID"
/>
<discussBox
:
type
=
"discussID"
/>
</el-drawer>
</div>
</
template
>
...
...
@@ -259,14 +260,33 @@ export default {
discussID
:
0
,
drawer
:
false
,
isShowFeature
:
false
,
discussID
:
11
,
BbsList
:
[],
topOne
:{}
};
},
watch
:{
},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetBbsListByType
()
},
methods
:
{
GetBbsListByType
(){
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
]
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
){
this
.
topOne
=
x
}
})
}
});
},
GetSexOrderList
(){
this
.
loading
=
true
this
.
apipost
(
"/api/Statistic/GetFestivalOrderList"
,
{},
res
=>
{
...
...
src/components/statistics/gaoxiao.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,41 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,13 +91,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/gaoxiao.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/gaoxiao.png"
alt
/
>
</div>
<p>
学历统计
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -106,13 +105,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -121,13 +123,21 @@
<div
style=
"height: 100%;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"item.StudentType === 1"
src=
"../../assets/img/tongji/zaidu.png"
alt=
""
>
<img
v-if=
"item.StudentType === 2"
src=
"../../assets/img/tongji/biye.png"
alt=
""
>
<img
v-if=
"item.StudentType === 1"
src=
"../../assets/img/tongji/zaidu.png"
alt
/
>
<img
v-if=
"item.StudentType === 2"
src=
"../../assets/img/tongji/biye.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
StudentTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
StudentCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
StudentCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -137,37 +147,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对客户年学历的统计可以,更好的了解不同学历段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
<i
class=
"el-icon-d-arrow-right"
></i>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -183,76 +189,102 @@ export default {
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'高校在读生'
,
'高校毕业生'
,
'非高校'
],
orders
:[]
strArr
:
[
"高校在读生"
,
"高校毕业生"
,
"非高校"
],
orders
:
[],
discussID
:
12
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetStudentShopList"
,
{},
res
=>
{
// this.SexOrder = res.data.data
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
,
console
.
log
(
res
.
data
.
data
)
let
m
=
3
-
res
.
data
.
data
.
length
if
(
res
.
data
.
data
.
length
<
3
){
for
(
let
i
=
0
;
i
<
m
;
i
++
)
{
res
.
data
.
data
.
push
({
TotalMoney
:
0
,
StudentCount
:
0
})
}
}
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
,
zai
=
res
.
data
.
data
[
0
].
TotalMoney
,
bi
=
res
.
data
.
data
[
1
].
TotalMoney
,
ot
=
res
.
data
.
data
[
2
].
TotalMoney
,
contNum
=
res
.
data
.
data
[
0
].
StudentCount
+
res
.
data
.
data
[
1
].
StudentCount
+
res
.
data
.
data
[
2
].
StudentCount
,
contNum
=
res
.
data
.
data
[
0
].
StudentCount
+
res
.
data
.
data
[
1
].
StudentCount
+
res
.
data
.
data
[
2
].
StudentCount
,
zaiN
=
res
.
data
.
data
[
0
].
StudentCount
,
biN
=
res
.
data
.
data
[
1
].
StudentCount
,
otN
=
res
.
data
.
data
[
2
].
StudentCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
biN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
otN
/
contNum
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
zai
/
contShop
)
*
100
).
toFixed
(
2
)),
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
biN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
otN
/
contNum
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
({
num
:
Number
(((
zai
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'高校在读生'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
bi
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"高校在读生"
});
shopChartData
.
push
({
num
:
Number
(((
bi
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'高校毕业生'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
ot
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"高校毕业生"
});
shopChartData
.
push
({
num
:
Number
(((
ot
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#999"
,
text
:
'非高校'
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
text
:
"非高校"
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
this
.
getOrders
()
this
.
getOrders
();
});
},
getOrders
()
{
getOrders
()
{
this
.
apipost
(
"/api/Statistic/GetStudentOrderList"
,
{},
res
=>
{
console
.
log
(
res
)
console
.
log
(
res
);
res
.
data
.
data
.
forEach
(
x
=>
{
this
.
orders
[
x
.
NewStudentType
-
1
].
LtName
=
x
.
LtName
;
this
.
orders
[
x
.
NewStudentType
-
1
].
Unit_Price
=
x
.
Unit_Price
;
});
this
.
loading
=
false
this
.
loading
=
false
;
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/job.vue
View file @
79b930ee
<
style
>
.job
{
.job
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.job
.conten-box
{
.job
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.job
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.job
.conten-box
.top
{
.job
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.job
.conten-box
.bottom
{
flex
:
.8
;
.job
.conten-box
.bottom
{
flex
:
0
.8
;
}
.job
.conten-box
.left
{
.job
.conten-box
.left
{
height
:
100%
;
}
.job
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,45 +41,44 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
27px
0
0
90px
!important
;
padding
:
27px
0
0
90px
!important
;
justify-content
:
center
;
font-size
:
14px
;
}
.job
.sjsm
{
.job
.sjsm
{
height
:
198px
;
overflow
:
auto
;
}
.job
.sjsm
>
div
{
.job
.sjsm
>
div
{
margin-bottom
:
20px
;
}
.job
.sjsm
>
div
:last-child
{
.job
.sjsm
>
div
:last-child
{
margin-bottom
:
0px
;
}
.job
.sjsm
>
div
{
.job
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.job
.sjsm
>
div
.left
{
.job
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.job
.sjsm
>
div
.left
img
{
.job
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.job
.sjsm
>
div
.right
{
.job
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.job
.hight-font
{
color
:
#0D
2481
!important
;
.job
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
</
style
>
<
template
>
<div
class=
"job"
v-loading=
"loading"
>
...
...
@@ -95,19 +94,19 @@
<el-col
:span=
"6"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/qinzi.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/qinzi.png"
alt
/
>
</div>
<p>
教育
</p>
</div>
</el-col>
<el-col
:span=
"18"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"12"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -116,17 +115,25 @@
<div
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt=
""
>
<img
v-else-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt=
""
>
<img
v-else-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt=
""
>
<img
v-else-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt=
""
>
<img
v-else-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt=
""
>
<img
v-else
src=
"../../assets/img/tongji/qinzhi.png"
alt=
""
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt
/
>
<img
v-else-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt
/
>
<img
v-else-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt
/
>
<img
v-else-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt
/
>
<img
v-else-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt
/
>
<img
v-else
src=
"../../assets/img/tongji/qinzhi.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
DutyTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -136,18 +143,16 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(19)
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
...
...
@@ -155,18 +160,14 @@
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -176,45 +177,68 @@ export default {
},
data
()
{
return
{
orders
:
[],
orders
:
[],
discussID
:
0
,
drawer
:
false
,
chartData
:
[],
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'娱乐'
,
'教育'
,
'服务'
]
strArr
:
[
"娱乐"
,
"教育"
,
"服务"
],
discussID
:
13
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetDutyTypeOrderList"
,
{},
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
strArr
=
[];
let
data
=
res
.
data
.
data
;
var
totalOrder
=
0
;
var
totalMoney
=
0
;
data
.
forEach
(
item
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
strArr
=
[];
let
data
=
res
.
data
.
data
;
var
totalOrder
=
0
;
var
totalMoney
=
0
;
data
.
forEach
(
item
=>
{
this
.
strArr
.
push
(
item
.
DutyTypeName
);
totalOrder
+=
item
.
OrderCount
;
totalMoney
+=
item
.
ShopMoney
;
})
data
.
forEach
(
item
=>
{
this
.
chartData
.
push
(((
item
.
OrderCount
/
totalOrder
)
*
100
).
toFixed
(
2
));
})
this
.
orders
=
res
.
data
.
data
;
}
else
{
totalOrder
+=
item
.
OrderCount
;
totalMoney
+=
item
.
ShopMoney
;
});
data
.
forEach
(
item
=>
{
this
.
chartData
.
push
(
((
item
.
OrderCount
/
totalOrder
)
*
100
).
toFixed
(
2
)
);
});
this
.
orders
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/marital.vue
View file @
79b930ee
...
...
@@ -25,13 +25,15 @@
<div
class=
"r"
>
<div>
累计报名
<b>
{{
item
.
AgeCount
}}
</b>
人,关联购物金额
<b>
{{
item
.
AgeCount
}}
</b>
人,
<!-- 关联购物金额
<b>
<template
v-if=
"item.TotalMoney"
>
{{
(
item
.
TotalMoney
/
10000
).
toFixed
(
2
)
}}
</
template
>
万
</b>
,报名均价为:
</b>
, -->
报名均价为:
<b>
<
template
v-if=
"item.Unit_Price"
>
{{
item
.
Unit_Price
.
toFixed
(
0
)
}}
...
...
@@ -71,9 +73,9 @@
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{topOne
&&
topOne.Content ? topOne.Content : '暂无'}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(19)
{{BbsList.length ? '查看更多,参与讨论('+ BbsList.length +')' : '暂时还没有讨论,快来发起讨论吧~'}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
...
...
@@ -123,13 +125,32 @@ export default {
"未婚"
,
"丧偶"
,
"其他未知"
]
],
discussID
:
14
,
BbsList
:
[],
topOne
:{}
};
},
mounted
()
{
this
.
init
();
this
.
GetBbsListByType
()
},
methods
:
{
GetBbsListByType
(){
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
]
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
){
this
.
topOne
=
x
}
})
}
});
},
init
()
{
this
.
apipost
(
"/api/Statistic/GetMarriageShopList"
,
{},
res
=>
{
res
.
data
.
data
.
forEach
(
x
=>
{
...
...
@@ -154,8 +175,10 @@ export default {
initOrders
()
{
this
.
apipost
(
"/api/Statistic/GetMarriageOrderList"
,
{},
res
=>
{
res
.
data
.
data
.
forEach
(
x
=>
{
if
(
x
.
Marriage
-
1
<
this
.
showChats
.
length
){
this
.
showChats
[
x
.
Marriage
-
1
].
LtName
=
x
.
LtName
;
this
.
showChats
[
x
.
Marriage
-
1
].
Unit_Price
=
x
.
Unit_Price
;
}
});
this
.
isLoaded
=
true
;
});
...
...
src/components/statistics/marriage.vue
View file @
79b930ee
...
...
@@ -124,7 +124,8 @@
<span
class=
"font-size-12"
>
{{
item
.
MarriageName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
MarriageCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
MarriageCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
</div>
</div>
...
...
src/components/statistics/model/discussBox.vue
View file @
79b930ee
...
...
@@ -147,7 +147,7 @@
<img
width=
"24"
height=
"24"
:src=
"item.ImgPhoto"
alt=
""
>
<span
style=
"font-size:14px;font-family:perfectFont;font-weight:700;"
>
{{
item
.
RejectUserName
}}
</span>
</div>
<span
class=
"font-color-info"
>
{{
item
.
TimeStr
}}
</span>
<span
class=
"font-color-info"
style=
"font-size:12px;"
>
{{
item
.
TimeStr
}}
</span>
</div>
<div
class=
"content"
>
<p>
{{
item
.
Content
}}
</p>
...
...
@@ -176,13 +176,13 @@
<span>
{{
c
.
RejectUserName
}}
</span>
</div>
</div>
<span
class=
"font-color-info"
>
{{
c
.
TimeStr
}}
</span>
<span
class=
"font-color-info"
style=
"font-size:12px;"
>
{{
c
.
TimeStr
}}
</span>
</div>
<div
class=
"content"
>
<p>
{{
c
.
Content
}}
</p>
</div>
<div
class=
"footer"
>
<
span
class=
"cp like"
@
click=
"AddLike(c)"
><i
class=
"iconfont iconzan"
></i>
赞
{{
c
.
Likes
>
0
?
c
.
Likes
:
''
}}
</span
>
<
!--
<span
class=
"cp like"
@
click=
"AddLike(c)"
><i
class=
"iconfont iconzan"
></i>
赞
{{
c
.
Likes
>
0
?
c
.
Likes
:
''
}}
</span>
--
>
<span
class=
"cp"
@
click=
"setHF(c.Id)"
><i
class=
"iconfont iconhuifu"
></i>
{{
hfID
===
c
.
Id
?
'取消'
:
''
}}
回复
</span>
</div>
<div
class=
"msg-box"
v-if=
"hfID === c.Id"
>
...
...
src/components/statistics/model/festivalChart.vue
View file @
79b930ee
...
...
@@ -52,7 +52,7 @@ export default {
},
tooltip
:
{
trigger
:
'item'
,
formatter
:
'{a} <br/>{b} :
{c}
({d}%)'
formatter
:
'{a} <br/>{b} : ({d}%)'
},
legend
:
{
orient
:
'vertical'
,
...
...
@@ -61,7 +61,7 @@ export default {
},
series
:
[
{
name
:
'
访问来源
'
,
name
:
'
购物占比
'
,
type
:
'pie'
,
radius
:
'55%'
,
center
:
[
'50%'
,
'60%'
],
...
...
src/components/statistics/old.vue
View file @
79b930ee
...
...
@@ -25,12 +25,14 @@
<div
class=
"r"
>
<div>
累计报名
<b>
{{
item
.
AgeCount
}}
</b>
人,关联购物金额
<b>
{{
item
.
AgeCount
}}
</b>
人,
<!-- 关联购物金额
<b>
<template
v-if=
"item.TotalMoney"
>
{{
(
item
.
TotalMoney
/
10000
).
toFixed
(
2
)
}}
</
template
>
万
</b>
,报名均价为:
万
</b>
, -->
报名均价为:
<b>
<
template
v-if=
"item.Unit_Price"
>
{{
item
.
Unit_Price
.
toFixed
(
0
)
}}
...
...
@@ -72,7 +74,7 @@
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
{{
BbsList.length ? BbsList[0]
.Content : '暂无'}}
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne.Content ? topOne
.Content : '暂无'}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
{{BbsList.length ? '查看更多,参与讨论('+ BbsList.length +')' : '暂时还没有讨论,快来发起讨论吧~'}}
<i
class=
"el-icon-d-arrow-right"
></i>
...
...
@@ -81,27 +83,6 @@
</el-card>
</div>
</div>
<!-- <div class="title">购物统计(按平均计算)</div>
<shopping></shopping>
<div class="title" style="margin-top:30px;">我来解图</div>
<div class="situ">
<div class="head">
<el-row style="width:100%">
<el-col ::span="12" size="30" style="font-size:14px;">
<el-avatar style="margin-top:3px;margin-right:5px;vertical-align: bottom;">系统</el-avatar>系统默认
</el-col>
<el-col :span="12" class="right">
<i class="iconfont icondianzan1"></i> 点赞
</el-col>
</el-row>
</div>
<div class="c">根据对客户年龄段的统计可以,更好的了解不同年龄段客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等</div>
<div class="bot">
查看更多,参与讨论(19)
<i class="el-icon-d-arrow-right"></i>
</div>
</div>-->
</el-col>
</el-row>
<el-drawer
...
...
@@ -126,7 +107,7 @@ export default {
},
data
()
{
return
{
discussID
:
2
,
drawer
:
false
,
scaleData
:
[],
showChats
:
[],
...
...
@@ -151,7 +132,9 @@ export default {
"中年(46-69岁)"
,
"老年(70岁以上)"
],
discussID
:
2
,
BbsList
:
[],
topOne
:{}
};
},
mounted
()
{
...
...
@@ -160,8 +143,18 @@ export default {
},
methods
:
{
GetBbsListByType
(){
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
2
},
res
=>
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
]
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
){
this
.
topOne
=
x
}
})
}
});
},
init
()
{
...
...
@@ -190,8 +183,10 @@ export default {
initOrders
()
{
this
.
apipost
(
"/api/Statistic/GetAgeOrderList"
,
{},
res
=>
{
res
.
data
.
data
.
forEach
(
x
=>
{
if
(
x
.
NewAgeType
-
1
<
this
.
showChats
.
length
){
this
.
showChats
[
x
.
NewAgeType
-
1
].
LtName
=
x
.
LtName
;
this
.
showChats
[
x
.
NewAgeType
-
1
].
Unit_Price
=
x
.
Unit_Price
;
}
});
this
.
isLoaded
=
true
;
});
...
...
src/components/statistics/roomStatistical.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,67 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
.sex
.situ
{
/* width: 100%;*/
height
:
100%
;
}
.sex
.situ
.head
{
height
:
36px
;
display
:
flex
;
line-height
:
36px
;
margin
:
10px
0
;
/* border-bottom: 1px solid #EEE; */
}
.sex
.situ
.c
{
font-size
:
14px
;
color
:
#333
;
height
:
calc
(
100%
-
20px
);
overflow-y
:
auto
;
}
.sex
.situ
.bot
{
height
:
20px
;
line-height
:
20px
;
/* text-decoration: underline; */
cursor
:
pointer
;
color
:
rgb
(
13
,
36
,
129
);
font-size
:
12px
;
text-align
:
right
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,13 +117,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/zhufang.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/zhufang.png"
alt
/
>
</div>
<p>
住房
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -106,13 +131,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -121,15 +149,23 @@
<div
style=
"height: 100%;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in orderList"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"item.NewHouseType==1"
src=
"../../assets/img/tongji/room1.png"
alt=
""
>
<img
v-if=
"item.NewHouseType==2"
src=
"../../assets/img/tongji/room2.png"
alt=
""
>
<img
v-if=
"item.NewHouseType==3"
src=
"../../assets/img/tongji/room3.png"
alt=
""
>
<img
v-if=
"item.NewHouseType==5"
src=
"../../assets/img/tongji/room4.png"
alt=
""
>
<img
v-if=
"item.NewHouseType==1"
src=
"../../assets/img/tongji/room1.png"
alt
/
>
<img
v-if=
"item.NewHouseType==2"
src=
"../../assets/img/tongji/room2.png"
alt
/
>
<img
v-if=
"item.NewHouseType==3"
src=
"../../assets/img/tongji/room3.png"
alt
/
>
<img
v-if=
"item.NewHouseType==5"
src=
"../../assets/img/tongji/room4.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
HouseTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
orders
[
index
].
HouseCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
orders
[
index
].
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
orders
[
index
].
HouseCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
orders
[
index
].
TotalMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -139,37 +175,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对客户年龄段的统计,可以更好的了解不同年龄段客 人的喜根据对客户年龄段的统计。根据对客户年龄段的统 计,可以更好的了解不同年龄段客人的喜根据对客户年龄 段的统计
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
<i
class=
"el-icon-d-arrow-right"
></i>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:id=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -184,89 +216,102 @@ export default {
chartData
:
[
0
,
0
],
shopChartData
:
[],
loading
:
false
,
strArr
:
[
"70平米以下"
,
"71-90平米"
,
"91-120平米"
,
"未知"
],
orders
:[],
orderList
:[],
strArr
:
[
"70平米以下"
,
"71-90平米"
,
"91-120平米"
,
"未知"
],
orders
:
[],
orderList
:
[],
discussID
:
15
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
();
this
.
getOrderInfo
();
this
.
GetBbsListByType
()
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetHouseShopList"
,
{},
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
){
let
contHouse
=
res
.
data
.
data
[
0
].
HouseCount
+
res
.
data
.
data
[
1
].
HouseCount
+
res
.
data
.
data
[
2
].
HouseCount
+
res
.
data
.
data
[
3
].
HouseCount
,
if
(
res
.
data
.
resultCode
==
1
)
{
let
contHouse
=
res
.
data
.
data
[
0
].
HouseCount
+
res
.
data
.
data
[
1
].
HouseCount
+
res
.
data
.
data
[
2
].
HouseCount
+
res
.
data
.
data
[
3
].
HouseCount
,
one
=
res
.
data
.
data
[
0
].
HouseCount
,
two
=
res
.
data
.
data
[
1
].
HouseCount
,
three
=
res
.
data
.
data
[
2
].
HouseCount
,
four
=
res
.
data
.
data
[
3
].
HouseCount
,
contNum
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
,
four
=
res
.
data
.
data
[
3
].
HouseCount
,
contNum
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
,
oneN
=
res
.
data
.
data
[
0
].
TotalMoney
,
twoN
=
res
.
data
.
data
[
1
].
TotalMoney
,
threeN
=
res
.
data
.
data
[
2
].
TotalMoney
,
fourN
=
res
.
data
.
data
[
3
].
TotalMoney
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
one
/
contHouse
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
two
/
contHouse
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
three
/
contHouse
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
four
/
contHouse
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
oneN
/
contNum
)
*
100
).
toFixed
(
2
)),
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
one
/
contHouse
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
two
/
contHouse
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
three
/
contHouse
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
four
/
contHouse
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
({
num
:
Number
(((
oneN
/
contNum
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'70平米以下'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
twoN
/
contNum
)
*
100
).
toFixed
(
2
)),
text
:
"70平米以下"
});
shopChartData
.
push
({
num
:
Number
(((
twoN
/
contNum
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'71-90平米'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
threeN
/
contNum
)
*
100
).
toFixed
(
2
)),
text
:
"71-90平米"
});
shopChartData
.
push
({
num
:
Number
(((
threeN
/
contNum
)
*
100
).
toFixed
(
2
)),
color
:
"#99BD7B"
,
text
:
'91-120平米'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
fourN
/
contNum
)
*
100
).
toFixed
(
2
)),
text
:
"91-120平米"
});
shopChartData
.
push
({
num
:
Number
(((
fourN
/
contNum
)
*
100
).
toFixed
(
2
)),
color
:
"#D2C9F1"
,
text
:
'未知'
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
}
else
{
text
:
"未知"
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
}
else
{
}
});
},
getOrderInfo
()
{
getOrderInfo
()
{
this
.
apipost
(
"/api/Statistic/GetHouseOrderList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
orderList
=
res
.
data
.
data
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
orderList
=
res
.
data
.
data
;
}
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/season.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,41 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
:nth-child
(
1
)
{
.sex
.sjsm
>
div
:nth-child
(
1
)
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,13 +91,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/jj.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/jj.png"
alt
/
>
</div>
<p>
季节
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -106,13 +105,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -121,15 +123,23 @@
<div
style=
"height: 100%;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"item.SeasonType === 1"
src=
"../../assets/img/tongji/cj.png"
alt=
""
>
<img
v-if=
"item.SeasonType === 2"
src=
"../../assets/img/tongji/xj.png"
alt=
""
>
<img
v-if=
"item.SeasonType === 3"
src=
"../../assets/img/tongji/qj.png"
alt=
""
>
<img
v-if=
"item.SeasonType === 4"
src=
"../../assets/img/tongji/dj.png"
alt=
""
>
<img
v-if=
"item.SeasonType === 1"
src=
"../../assets/img/tongji/cj.png"
alt
/
>
<img
v-if=
"item.SeasonType === 2"
src=
"../../assets/img/tongji/xj.png"
alt
/
>
<img
v-if=
"item.SeasonType === 3"
src=
"../../assets/img/tongji/qj.png"
alt
/
>
<img
v-if=
"item.SeasonType === 4"
src=
"../../assets/img/tongji/dj.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
SeasonTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
StudentCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
StudentCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -139,37 +149,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对客户季节的统计可以,更好的了解不同季节客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
<i
class=
"el-icon-d-arrow-right"
></i>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:id=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -185,88 +191,102 @@ export default {
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'春季'
,
'夏季'
,
'秋季'
,
'冬季'
],
orders
:[]
strArr
:
[
"春季"
,
"夏季"
,
"秋季"
,
"冬季"
],
orders
:
[],
discussID
:
16
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetSeasonShopList"
,
{},
res
=>
{
console
.
log
(
"dsafsaf"
,
res
);
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
,
console
.
log
(
"dsafsaf"
,
res
);
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
,
one
=
res
.
data
.
data
[
0
].
TotalMoney
,
two
=
res
.
data
.
data
[
1
].
TotalMoney
,
three
=
res
.
data
.
data
[
2
].
TotalMoney
,
four
=
res
.
data
.
data
[
3
].
TotalMoney
,
contNum
=
res
.
data
.
data
[
0
].
SeasonCount
+
res
.
data
.
data
[
1
].
SeasonCount
+
res
.
data
.
data
[
2
].
SeasonCount
+
res
.
data
.
data
[
3
].
SeasonCount
,
four
=
res
.
data
.
data
[
3
].
TotalMoney
,
contNum
=
res
.
data
.
data
[
0
].
SeasonCount
+
res
.
data
.
data
[
1
].
SeasonCount
+
res
.
data
.
data
[
2
].
SeasonCount
+
res
.
data
.
data
[
3
].
SeasonCount
,
oneN
=
res
.
data
.
data
[
0
].
SeasonCount
,
twoN
=
res
.
data
.
data
[
1
].
SeasonCount
,
threeN
=
res
.
data
.
data
[
2
].
SeasonCount
,
fourN
=
res
.
data
.
data
[
3
].
SeasonCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
oneN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
twoN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
threeN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
fourN
/
contNum
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
oneN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
twoN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
threeN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
fourN
/
contNum
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
({
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'春季'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"春季"
});
shopChartData
.
push
({
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'夏季'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"夏季"
});
shopChartData
.
push
({
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#99BD7B"
,
text
:
'秋季'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"秋季"
});
shopChartData
.
push
({
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#D2C9F1"
,
text
:
'冬季'
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
text
:
"冬季"
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
this
.
getOrders
()
this
.
getOrders
();
});
},
getOrders
()
{
getOrders
()
{
this
.
apipost
(
"/api/Statistic/GetSeasonOrderList"
,
{},
res
=>
{
console
.
log
(
res
)
console
.
log
(
res
);
res
.
data
.
data
.
forEach
(
x
=>
{
this
.
orders
[
x
.
NewSeasonType
-
1
].
LtName
=
x
.
LtName
;
this
.
orders
[
x
.
NewSeasonType
-
1
].
Unit_Price
=
x
.
Unit_Price
;
});
this
.
loading
=
false
this
.
loading
=
false
;
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/sex.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,67 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
:nth-child
(
1
)
{
.sex
.sjsm
>
div
:nth-child
(
1
)
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
.sex
.situ
{
/* width: 100%;*/
height
:
100%
;
}
.sex
.situ
.head
{
height
:
36px
;
display
:
flex
;
line-height
:
36px
;
margin
:
10px
0
;
/* border-bottom: 1px solid #EEE; */
}
.sex
.situ
.c
{
font-size
:
14px
;
color
:
#333
;
height
:
calc
(
100%
-
20px
);
overflow-y
:
auto
;
}
.sex
.situ
.bot
{
height
:
20px
;
line-height
:
20px
;
/* text-decoration: underline; */
cursor
:
pointer
;
color
:
rgb
(
13
,
36
,
129
);
font-size
:
12px
;
text-align
:
right
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,19 +117,19 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/man.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/man.png"
alt
/
>
</div>
<p>
男
</p>
</div>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/woman.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/woman.png"
alt
/
>
</div>
<p>
女
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -112,13 +137,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -127,13 +155,21 @@
<div
style=
"height: 100%;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in SexOrder"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"item.Sex === 1"
src=
"../../assets/img/tongji/man1.png"
alt=
""
>
<img
v-else
src=
"../../assets/img/tongji/woman1.png"
alt=
""
>
<img
v-if=
"item.Sex === 1"
src=
"../../assets/img/tongji/man1.png"
alt
/
>
<img
v-else
src=
"../../assets/img/tongji/woman1.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
SexStr
}}
士
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
SexCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
SexCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -143,37 +179,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
{{
BbsList
.
length
?
BbsList
[
0
]
.
Content
:
'暂无'
}}
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -189,61 +221,67 @@ export default {
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'男'
,
'女'
],
strArr
:
[
"男"
,
"女"
],
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetBbsListByType
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetBbsListByType
(){
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
2
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
});
},
GetSexOrderList
()
{
this
.
loading
=
true
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetSexOrderList"
,
{},
res
=>
{
this
.
SexOrder
=
res
.
data
.
data
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
,
man
=
res
.
data
.
data
[
0
].
ShopMoney
,
woman
=
res
.
data
.
data
[
1
].
ShopMoney
,
contNum
=
res
.
data
.
data
[
0
].
SexCount
+
res
.
data
.
data
[
1
].
SexCount
,
manN
=
res
.
data
.
data
[
0
].
SexCount
,
womanN
=
res
.
data
.
data
[
1
].
SexCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
manN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
womanN
/
contNum
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
man
/
contShop
)
*
100
).
toFixed
(
0
)),
this
.
SexOrder
=
res
.
data
.
data
;
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
,
man
=
res
.
data
.
data
[
0
].
ShopMoney
,
woman
=
res
.
data
.
data
[
1
].
ShopMoney
,
contNum
=
res
.
data
.
data
[
0
].
SexCount
+
res
.
data
.
data
[
1
].
SexCount
,
manN
=
res
.
data
.
data
[
0
].
SexCount
,
womanN
=
res
.
data
.
data
[
1
].
SexCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
manN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
womanN
/
contNum
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
(
{
num
:
Number
(((
man
/
contShop
)
*
100
).
toFixed
(
0
)),
color
:
"#0D2481"
,
text
:
'男'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
woman
/
contShop
)
*
100
).
toFixed
(
0
)),
text
:
"男"
});
shopChartData
.
push
({
num
:
Number
(((
woman
/
contShop
)
*
100
).
toFixed
(
0
)),
color
:
"#FFA475"
,
text
:
'女'
}
)
shopChartData
.
push
(
{
num
:
100
-
(
Number
(((
man
/
contShop
)
*
100
).
toFixed
(
0
))
+
Number
(((
woman
/
contShop
)
*
100
).
toFixed
(
0
))),
text
:
"女"
});
shopChartData
.
push
({
num
:
100
-
(
Number
(((
man
/
contShop
)
*
100
).
toFixed
(
0
))
+
Number
(((
woman
/
contShop
)
*
100
).
toFixed
(
0
))),
color
:
"#FFFFFF"
,
text
:
''
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
loading
=
false
text
:
""
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
loading
=
false
;
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/tourType.vue
View file @
79b930ee
<
style
>
.tourType
{
.tourType
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.tourType
.conten-box
{
.tourType
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.tourType
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.tourType
.conten-box
.top
{
.tourType
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.tourType
.conten-box
.bottom
{
flex
:
.8
;
.tourType
.conten-box
.bottom
{
flex
:
0
.8
;
}
.tourType
.conten-box
.left
{
.tourType
.conten-box
.left
{
height
:
100%
;
}
.tourType
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,48 +41,73 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
27px
0
0
40px
!important
;
padding
:
27px
0
0
40px
!important
;
justify-content
:
center
;
font-size
:
14px
;
}
.tourType
.sjsm
{
.tourType
.sjsm
{
height
:
198px
;
overflow
:
auto
;
}
.tourType
.sjsm
>
div
{
.tourType
.sjsm
>
div
{
margin-bottom
:
20px
;
}
.tourType
.sjsm
>
div
:last-child
{
.tourType
.sjsm
>
div
:last-child
{
margin-bottom
:
0px
;
}
.tourType
.sjsm
>
div
{
.tourType
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.tourType
.sjsm
>
div
.left
{
.tourType
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
font-size
:
14px
;
font-family
:
'perfectFont'
;
font-family
:
"perfectFont"
;
font-weight
:
900
;
}
.tourType
.sjsm
>
div
.left
img
{
.tourType
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.tourType
.sjsm
>
div
.right
{
.tourType
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.tourType
.hight-font
{
color
:
#0D
2481
!important
;
.tourType
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
.tourType
.situ
{
/* width: 100%;*/
height
:
100%
;
}
.tourType
.situ
.head
{
height
:
36px
;
display
:
flex
;
line-height
:
36px
;
margin
:
10px
0
;
/* border-bottom: 1px solid #EEE; */
}
.tourType
.situ
.c
{
font-size
:
14px
;
color
:
#333
;
height
:
calc
(
100%
-
20px
);
overflow-y
:
auto
;
}
.tourType
.situ
.bot
{
height
:
20px
;
line-height
:
20px
;
/* text-decoration: underline; */
cursor
:
pointer
;
color
:
rgb
(
13
,
36
,
129
);
font-size
:
12px
;
text-align
:
right
;
}
</
style
>
<
template
>
<div
class=
"tourType"
v-loading=
"loading"
>
...
...
@@ -98,13 +123,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/qinzi.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/qinzi.png"
alt
/
>
</div>
<!--
<p>
亲子出游
</p>
-->
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -112,13 +137,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -127,16 +155,24 @@
<div
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt=
""
>
<img
v-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt=
""
>
<img
v-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt=
""
>
<img
v-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt=
""
>
<img
v-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt=
""
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt
/
>
<img
v-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt
/
>
<img
v-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt
/
>
<img
v-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt
/
>
<img
v-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
TravelTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
TravelCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
TravelCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
TotalMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -146,37 +182,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
<!--
<i
class=
"iconfont icondianzan1"
></i>
点赞 -->
</el-col>
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对出游类型的统计可以,更好的了解不同出游类型客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
<i
class=
"el-icon-d-arrow-right"
></i>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -186,135 +218,155 @@ export default {
},
data
()
{
return
{
orders
:[],
discussID
:
0
,
orders
:
[],
drawer
:
false
,
chartData
:
[],
shopChartData
:
[],
SexOrder
:
[
17
,
5
,
20
,
37
,
21
],
SexOrder
:
[
17
,
5
,
20
,
37
,
21
],
loading
:
false
,
strArr
:
[
'亲子'
,
'蜜月'
,
'夕阳红'
,
'暑期'
,
'寒假'
],
imgs
:[{
url
:
require
(
'../../assets/img/tongji/qinzhi.png'
)
},{
url
:
require
(
'../../assets/img/tongji/miyue.png'
)
},{
url
:
require
(
'../../assets/img/tongji/xiyang.png'
)
},{
url
:
require
(
'../../assets/img/tongji/shujia.png'
)
},{
url
:
require
(
'../../assets/img/tongji/hanjia.png'
)
}]
strArr
:
[
"亲子"
,
"蜜月"
,
"夕阳红"
,
"暑期"
,
"寒假"
],
imgs
:
[
{
url
:
require
(
"../../assets/img/tongji/qinzhi.png"
)
},
{
url
:
require
(
"../../assets/img/tongji/miyue.png"
)
},
{
url
:
require
(
"../../assets/img/tongji/xiyang.png"
)
},
{
url
:
require
(
"../../assets/img/tongji/shujia.png"
)
},
{
url
:
require
(
"../../assets/img/tongji/hanjia.png"
)
}
],
discussID
:
17
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
this
.
apipost
(
"/api/Statistic/GetTravelTypeShopList"
,
{},
res
=>
{
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
this
.
strArr
=
[];
let
data
=
res
.
data
.
data
;
data
.
forEach
(
item
=>
{
this
.
strArr
.
push
(
item
.
TravelTypeName
)
})
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
+
res
.
data
.
data
[
4
].
TotalMoney
,
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Statistic/GetTravelTypeShopList"
,
{},
res
=>
{
this
.
strArr
=
[];
let
data
=
res
.
data
.
data
;
data
.
forEach
(
item
=>
{
this
.
strArr
.
push
(
item
.
TravelTypeName
);
});
let
contShop
=
res
.
data
.
data
[
0
].
TotalMoney
+
res
.
data
.
data
[
1
].
TotalMoney
+
res
.
data
.
data
[
2
].
TotalMoney
+
res
.
data
.
data
[
3
].
TotalMoney
+
res
.
data
.
data
[
4
].
TotalMoney
,
one
=
res
.
data
.
data
[
0
].
TotalMoney
,
two
=
res
.
data
.
data
[
1
].
TotalMoney
,
three
=
res
.
data
.
data
[
2
].
TotalMoney
,
four
=
res
.
data
.
data
[
3
].
TotalMoney
,
five
=
res
.
data
.
data
[
4
].
TotalMoney
,
contNum
=
res
.
data
.
data
[
0
].
TravelCount
+
res
.
data
.
data
[
1
].
TravelCount
+
res
.
data
.
data
[
2
].
TravelCount
+
res
.
data
.
data
[
3
].
TravelCount
+
res
.
data
.
data
[
4
].
TravelCount
,
four
=
res
.
data
.
data
[
3
].
TotalMoney
,
five
=
res
.
data
.
data
[
4
].
TotalMoney
,
contNum
=
res
.
data
.
data
[
0
].
TravelCount
+
res
.
data
.
data
[
1
].
TravelCount
+
res
.
data
.
data
[
2
].
TravelCount
+
res
.
data
.
data
[
3
].
TravelCount
+
res
.
data
.
data
[
4
].
TravelCount
,
oneN
=
res
.
data
.
data
[
0
].
TravelCount
,
twoN
=
res
.
data
.
data
[
1
].
TravelCount
,
threeN
=
res
.
data
.
data
[
2
].
TravelCount
,
fourN
=
res
.
data
.
data
[
3
].
TravelCount
,
fiveN
=
res
.
data
.
data
[
4
].
TravelCount
;
let
chartData
=
[],
shopChartData
=
[];
if
(
contNum
==
0
){
chartData
=
[
0
,
0
,
0
,
0
,
0
];
}
else
{
chartData
.
push
(
((
oneN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
twoN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
threeN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
fourN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
fiveN
/
contNum
)
*
100
).
toFixed
(
2
)
)
let
chartData
=
[],
shopChartData
=
[];
if
(
contNum
==
0
)
{
chartData
=
[
0
,
0
,
0
,
0
,
0
];
}
else
{
chartData
.
push
(((
oneN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
twoN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
threeN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
fourN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
fiveN
/
contNum
)
*
100
).
toFixed
(
2
));
}
if
(
contShop
==
0
){
let
colorArr
=
[
'#0D2481'
,
'#FFA475'
,
'#99BD7B'
,
'#D2C9F1'
,
'#6EBCE2'
];
let
strArr
=
this
.
strArr
;
for
(
let
i
=
0
;
i
<
5
;
i
++
){
shopChartData
.
push
(
{
if
(
contShop
==
0
)
{
let
colorArr
=
[
"#0D2481"
,
"#FFA475"
,
"#99BD7B"
,
"#D2C9F1"
,
"#6EBCE2"
];
let
strArr
=
this
.
strArr
;
for
(
let
i
=
0
;
i
<
5
;
i
++
)
{
shopChartData
.
push
({
num
:
0
,
color
:
colorArr
[
i
],
text
:
strArr
[
i
]
});
}
)
}
}
else
{
shopChartData
.
push
(
{
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
}
else
{
shopChartData
.
push
({
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'亲子'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"亲子"
});
shopChartData
.
push
({
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'蜜月'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"蜜月"
});
shopChartData
.
push
({
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#99BD7B"
,
text
:
'夕阳红'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"夕阳红"
});
shopChartData
.
push
({
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#D2C9F1"
,
text
:
'暑假'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
five
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"暑假"
});
shopChartData
.
push
({
num
:
Number
(((
five
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#6EBCE2"
,
text
:
'寒假'
}
)
text
:
"寒假"
});
}
this
.
chartData
=
chartData
console
.
log
(
"this.chartData"
,
this
.
chartData
)
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
this
.
chartData
=
chartData
;
console
.
log
(
"this.chartData"
,
this
.
chartData
);
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
this
.
getOrders
();
});
},
getOrders
()
{
getOrders
()
{
this
.
apipost
(
"/api/Statistic/GetTravelTypeOrderList"
,
{},
res
=>
{
this
.
loading
=
false
this
.
loading
=
false
;
// console.log("res",res);
res
.
data
.
data
.
forEach
(
x
=>
{
this
.
orders
[
x
.
NewTravelType
-
1
].
LtName
=
x
.
LtName
;
...
...
@@ -323,5 +375,5 @@ export default {
});
}
}
}
}
;
</
script
>
\ No newline at end of file
src/components/statistics/unit.vue
View file @
79b930ee
<
style
>
.sex
{
.sex
{
height
:
calc
(
100%
-
25px
);
}
.statistics-title
{
...
...
@@ -9,7 +9,7 @@
margin-bottom
:
30px
;
font-family
:
perfectFont
;
}
.sex
.conten-box
{
.sex
.conten-box
{
display
:
flex
;
flex-direction
:
column
;
height
:
calc
(
100%
-
62px
);
...
...
@@ -17,18 +17,18 @@
.sex
.conten-box
.el-card
.el-card__header
{
font-weight
:
normal
!important
;
}
.sex
.conten-box
.top
{
.sex
.conten-box
.top
{
flex
:
1.2
;
margin-bottom
:
25px
;
}
.sex
.conten-box
.bottom
{
flex
:
.8
;
.sex
.conten-box
.bottom
{
flex
:
0
.8
;
}
.sex
.conten-box
.left
{
.sex
.conten-box
.left
{
height
:
100%
;
}
.sex
.conten-box
.el-card.blue
{
background
:
#0
D2481
!important
;
background
:
#0
d2481
!important
;
color
:
#fff
!important
;
height
:
calc
(
100%
-
2px
);
}
...
...
@@ -41,42 +41,67 @@
display
:
flex
;
align-items
:
flex-end
;
text-align
:
center
;
padding
:
20px
70px
10px
70px
!important
;
padding
:
20px
70px
10px
70px
!important
;
justify-content
:
space-between
;
font-size
:
14px
;
}
.sex
.sjsm
{
.sex
.sjsm
{
display
:
flex
;
flex-direction
:
column
;
}
.sex
.sjsm
>
div
:nth-child
(
1
)
{
.sex
.sjsm
>
div
:nth-child
(
1
)
{
margin-bottom
:
20px
;
}
.sex
.sjsm
>
div
{
.sex
.sjsm
>
div
{
flex
:
1
;
background
:
rgba
(
244
,
245
,
249
,
1
);
background
:
rgba
(
244
,
245
,
249
,
1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
20px
;
}
.sex
.sjsm
>
div
.left
{
.sex
.sjsm
>
div
.left
{
display
:
flex
;
align-items
:
center
;
}
.sex
.sjsm
>
div
.left
img
{
.sex
.sjsm
>
div
.left
img
{
padding-right
:
10px
;
}
.sex
.sjsm
>
div
.right
{
.sex
.sjsm
>
div
.right
{
text-align
:
right
;
color
:
#888888
;
font-size
:
12px
;
}
.sex
.hight-font
{
color
:
#0D
2481
!important
;
.sex
.hight-font
{
color
:
#0d
2481
!important
;
font-size
:
14px
;
}
.sex
.situ
{
/* width: 100%;*/
height
:
100%
;
}
.sex
.situ
.head
{
height
:
36px
;
display
:
flex
;
line-height
:
36px
;
margin
:
10px
0
;
/* border-bottom: 1px solid #EEE; */
}
.sex
.situ
.c
{
font-size
:
14px
;
color
:
#333
;
height
:
calc
(
100%
-
20px
);
overflow-y
:
auto
;
}
.sex
.situ
.bot
{
height
:
20px
;
line-height
:
20px
;
/* text-decoration: underline; */
cursor
:
pointer
;
color
:
rgb
(
13
,
36
,
129
);
font-size
:
12px
;
text-align
:
right
;
}
</
style
>
<
template
>
<div
class=
"sex"
v-loading=
"loading"
>
...
...
@@ -92,13 +117,13 @@
<el-col
:span=
"10"
class=
"img"
>
<div>
<div
style=
"margin-bottom: 10px;"
>
<img
src=
"../../assets/img/tongji/zc.png"
alt=
""
>
<img
src=
"../../assets/img/tongji/zc.png"
alt
/
>
</div>
<p>
单位
</p>
</div>
</el-col>
<el-col
:span=
"14"
style=
"height: 100%;"
>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
<sexChart
:myData=
"chartData"
:strArr=
"strArr"
/>
</el-col>
</el-row>
</el-card>
...
...
@@ -106,13 +131,16 @@
<el-col
:span=
"8"
style=
"height: 100%;"
>
<el-card
style=
"height: calc(100% - 2px);"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span></span>
<span>
购物统计
<span
class=
"font-size-12"
>
(按平均计算)
</span>
</span>
</div>
<shopChart
:shopChartData=
"shopChartData"
/>
<shopChart
:shopChartData=
"shopChartData"
/>
</el-card>
</el-col>
</el-row>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-row
:gutter=
"25"
class=
"bottom"
>
<el-col
:span=
"16"
style=
"height: 100%;"
>
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
...
...
@@ -121,18 +149,26 @@
<div
style=
"height: 198px;overflow: auto;"
class=
"sjsm"
>
<div
v-for=
"(item, index) in orders"
:key=
"index"
>
<div
class=
"left"
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt=
""
>
<img
v-else-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt=
""
>
<img
v-else-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt=
""
>
<img
v-else-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt=
""
>
<img
v-else-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt=
""
>
<img
v-else
src=
"../../assets/img/tongji/qinzhi.png"
alt=
""
>
<img
v-if=
"index==0"
src=
"../../assets/img/tongji/qinzhi.png"
alt
/
>
<img
v-else-if=
"index==1"
src=
"../../assets/img/tongji/miyue.png"
alt
/
>
<img
v-else-if=
"index==2"
src=
"../../assets/img/tongji/in3.png"
alt
/
>
<img
v-else-if=
"index==3"
src=
"../../assets/img/tongji/d1.png"
alt
/
>
<img
v-else-if=
"index==4"
src=
"../../assets/img/tongji/hanjia.png"
alt
/
>
<img
v-else
src=
"../../assets/img/tongji/qinzhi.png"
alt
/
>
<span
class=
"font-size-12"
>
{{
item
.
UnitTypeName
}}
</span>
</div>
<div
class=
"right"
>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span></p>
<p>
累计报名
<span
class=
"hight-font"
>
{{
item
.
OrderCount
}}
</span>
人,报名均价为
<span
class=
"hight-font"
>
{{
item
.
Unit_Price
}}
</span>
元
</p>
<!-- 关联购物金额
<span
class=
"hight-font"
>
{{
item
.
ShopMoney
}}
</span>
万, -->
<p>
最喜爱产品
<span
class=
"hight-font"
>
《
{{
item
.
LtName
}}
》
</span>
</p>
</div>
</div>
</div>
...
...
@@ -142,37 +178,33 @@
<el-card
style=
"height: 100%;"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-row
style=
"width:100%"
>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<el-col
:span=
"12"
size=
"30"
>
推荐解答
</el-col>
<!--
<el-col
:span=
"12"
class=
"right-title"
>
<i
class=
"iconfont icondianzan1"
></i>
点赞
</el-col>
-->
</el-col>
-->
</el-row>
</div>
<div
class=
"situ"
>
<div
class=
"c"
>
根据对单位的统计可以,更好的了解不同单位客人的喜好,消费能力的判读,从而快速的推荐团队给客人等等等
</div>
<div
class=
"c"
>
{{
topOne
&&
topOne
.
Content
?
topOne
.
Content
:
'暂无'
}}
</div>
<div
class=
"bot"
@
click=
"drawer = true"
>
查看更多,参与讨论(1)
<i
class=
"el-icon-d-arrow-right"
></i>
{{
BbsList
.
length
?
'查看更多,参与讨论('
+
BbsList
.
length
+
')'
:
'暂时还没有讨论,快来发起讨论吧~'
}}
<i
class=
"el-icon-d-arrow-right"
></i>
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-drawer
size=
'695px'
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:id=
"discussID"
/>
<el-drawer
size=
"695px"
:visible
.
sync=
"drawer"
direction=
"rtl"
:with-header=
"false"
>
<discussBox
:type=
"discussID"
/>
</el-drawer>
</div>
</
template
>
<
script
>
import
sexChart
from
'./model/sexChart'
import
shopChart
from
'./model/shopChart'
import
sexChart
from
"./model/sexChart"
;
import
shopChart
from
"./model/shopChart"
;
import
discussBox
from
"./model/discussBox"
;
export
default
{
components
:
{
...
...
@@ -182,104 +214,114 @@ export default {
},
data
()
{
return
{
discussID
:
0
,
drawer
:
false
,
chartData
:
[
0
,
0
],
shopChartData
:
[],
SexOrder
:
[],
loading
:
false
,
strArr
:
[
'世界500强'
,
'事业单位'
,
'其他'
,
"教育机构"
],
orders
:[]
strArr
:
[
"世界500强"
,
"事业单位"
,
"其他"
,
"教育机构"
],
orders
:
[],
discussID
:
18
,
BbsList
:
[],
topOne
:
{}
};
},
watch
:{
},
watch
:
{},
mounted
()
{
this
.
GetSexOrderList
()
this
.
GetSexOrderList
();
this
.
GetBbsListByType
();
},
methods
:
{
GetSexOrderList
(){
this
.
loading
=
true
this
.
strArr
=
[];
GetBbsListByType
()
{
this
.
apipost
(
"/api/Customer/GetBbsListByType"
,
{
t
:
this
.
discussID
},
res
=>
{
this
.
BbsList
=
res
.
data
.
data
;
if
(
this
.
BbsList
&&
this
.
BbsList
.
length
>
0
)
{
this
.
topOne
=
this
.
BbsList
[
0
];
this
.
BbsList
.
forEach
(
x
=>
{
if
(
x
.
Likes
>
this
.
topOne
.
Likes
)
{
this
.
topOne
=
x
;
}
});
}
}
);
},
GetSexOrderList
()
{
this
.
loading
=
true
;
this
.
strArr
=
[];
this
.
apipost
(
"/api/Statistic/GetUnitTypeOrderList"
,
{},
res
=>
{
// this.SexOrder = res.data.data
let
data
=
res
.
data
.
data
;
data
.
forEach
(
item
=>
{
this
.
strArr
.
push
(
item
.
UnitTypeName
)
})
let
data
=
res
.
data
.
data
;
data
.
forEach
(
item
=>
{
this
.
strArr
.
push
(
item
.
UnitTypeName
);
});
this
.
loading
=
false
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
+
res
.
data
.
data
[
2
].
ShopMoney
+
res
.
data
.
data
[
3
].
ShopMoney
+
res
.
data
.
data
[
4
].
ShopMoney
,
this
.
loading
=
false
;
let
contShop
=
res
.
data
.
data
[
0
].
ShopMoney
+
res
.
data
.
data
[
1
].
ShopMoney
+
res
.
data
.
data
[
2
].
ShopMoney
+
res
.
data
.
data
[
3
].
ShopMoney
+
res
.
data
.
data
[
4
].
ShopMoney
,
one
=
res
.
data
.
data
[
0
].
ShopMoney
,
two
=
res
.
data
.
data
[
1
].
ShopMoney
,
three
=
res
.
data
.
data
[
2
].
ShopMoney
,
four
=
res
.
data
.
data
[
3
].
ShopMoney
,
five
=
res
.
data
.
data
[
4
].
ShopMoney
,
contNum
=
res
.
data
.
data
[
0
].
OrderCount
+
res
.
data
.
data
[
1
].
OrderCount
+
res
.
data
.
data
[
2
].
OrderCount
+
res
.
data
.
data
[
3
].
OrderCount
+
res
.
data
.
data
[
4
].
OrderCount
,
contNum
=
res
.
data
.
data
[
0
].
OrderCount
+
res
.
data
.
data
[
1
].
OrderCount
+
res
.
data
.
data
[
2
].
OrderCount
+
res
.
data
.
data
[
3
].
OrderCount
+
res
.
data
.
data
[
4
].
OrderCount
,
zaiN
=
res
.
data
.
data
[
0
].
OrderCount
,
twoN
=
res
.
data
.
data
[
1
].
OrderCount
,
threeN
=
res
.
data
.
data
[
2
].
OrderCount
,
fourN
=
res
.
data
.
data
[
3
].
OrderCount
,
fiveN
=
res
.
data
.
data
[
4
].
OrderCount
;
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(
((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
twoN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
threeN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
fourN
/
contNum
)
*
100
).
toFixed
(
2
)
)
chartData
.
push
(
((
fiveN
/
contNum
)
*
100
).
toFixed
(
2
)
)
shopChartData
.
push
(
{
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
let
chartData
=
[],
shopChartData
=
[];
chartData
.
push
(((
zaiN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
twoN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
threeN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
fourN
/
contNum
)
*
100
).
toFixed
(
2
));
chartData
.
push
(((
fiveN
/
contNum
)
*
100
).
toFixed
(
2
));
shopChartData
.
push
({
num
:
Number
(((
one
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#0D2481"
,
text
:
'世界500强'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"世界500强"
});
shopChartData
.
push
({
num
:
Number
(((
two
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#FFA475"
,
text
:
'事业单位'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"事业单位"
});
shopChartData
.
push
({
num
:
Number
(((
three
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#999"
,
text
:
'其他'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"其他"
});
shopChartData
.
push
({
num
:
Number
(((
four
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#6EBCE2"
,
text
:
'教育机构'
}
)
shopChartData
.
push
(
{
num
:
Number
(((
five
/
contShop
)
*
100
).
toFixed
(
2
)),
text
:
"教育机构"
});
shopChartData
.
push
({
num
:
Number
(((
five
/
contShop
)
*
100
).
toFixed
(
2
)),
color
:
"#98BD7B"
,
text
:
'聚集'
}
)
this
.
chartData
=
chartData
this
.
shopChartData
=
shopChartData
this
.
orders
=
res
.
data
.
data
;
text
:
"聚集"
});
this
.
chartData
=
chartData
;
this
.
shopChartData
=
shopChartData
;
this
.
orders
=
res
.
data
.
data
;
// console.log("this.orders",this.orders)
});
},
}
}
}
};
</
script
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment