Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
0ce4d62a
Commit
0ce4d62a
authored
Mar 04, 2022
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加统计
parent
ae8c5321
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1090 additions
and
0 deletions
+1090
-0
sale.js
src/api/sale/sale.js
+48
-0
customDailyTotal.vue
src/pages/sale/customDailyTotal.vue
+260
-0
customMonthFirst.vue
src/pages/sale/customMonthFirst.vue
+239
-0
customMonthSecond.vue
src/pages/sale/customMonthSecond.vue
+232
-0
customMonthlyTotal.vue
src/pages/sale/customMonthlyTotal.vue
+41
-0
customYearFirst.vue
src/pages/sale/customYearFirst.vue
+150
-0
customyearTotal.vue
src/pages/sale/customyearTotal.vue
+105
-0
routes.js
src/router/routes.js
+15
-0
No files found.
src/api/sale/sale.js
View file @
0ce4d62a
...
...
@@ -530,6 +530,54 @@ export function GetStudentStaticYearRate(data) {
});
}
//获取市场每日成长数据
export
function
GetStudentMarket
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentMarket'
,
method
:
'post'
,
data
});
}
//获取市场月度数据
export
function
GetStudentMarketMonth
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentMarketMonth'
,
method
:
'post'
,
data
});
}
//获取市场月度成长率数据
export
function
GetStudentMarketMonthRate
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentMarketMonthRate'
,
method
:
'post'
,
data
});
}
//获取市场年度成长率数据
export
function
GetStudentMarketYear
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentMarketYear'
,
method
:
'post'
,
data
});
}
//获取市场年度成长率数据
export
function
GetStudentMarketYearRate
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentMarketYearRate'
,
method
:
'post'
,
data
});
}
...
...
src/pages/sale/customDailyTotal.vue
0 → 100644
View file @
0ce4d62a
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.myTable_Zk
tbody
tr
:first-child
td
{
background
:
yellow
!important
;
}
.myTable_Zk
tbody
tr
:first-child
{
background
:
yellow
!important
;
z-index
:
1
!important
;
}
.TotalredClass
{
color
:
red
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"col row wrap q-mb-lg"
style=
"justify-content:space-between;"
>
<div
class=
"col-3 Sysuser_Date q-mr-lg"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"myDate"
style=
"width:100%"
value-format=
"yyyy-MM"
@
change=
"getCheckDate()"
size=
"small"
type=
"month"
placeholder=
"选择年月"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div
style=
"display:none"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:15px;"
label=
"下载"
/>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
ref=
"table"
:loading=
"loading"
:style=
"{'height':tableHeight+'px'}"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-header-column-table no-bottom-table myTable_Zk"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
""
>
<
template
v-slot:bottom
>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetStudentMarket
}
from
'../../api/sale/sale'
;
export
default
{
props
:
{},
meta
:
{
title
:
"每日统计"
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
'DateStr'
,
label
:
'日期'
,
field
:
'DateStr'
,
align
:
'left'
},
{
name
:
'PushCount'
,
label
:
'进单人数'
,
field
:
'PushCount'
,
align
:
'left'
},
{
name
:
'TrainCount'
,
label
:
'语培需求'
,
field
:
'TrainCount'
,
align
:
'left'
,
},
{
name
:
'StudyCount'
,
label
:
'留学需求'
,
field
:
'StudyCount'
,
align
:
'left'
,
},
{
name
:
'MeiTuanCount'
,
label
:
'美团点评'
,
field
:
'MeiTuanCount'
,
align
:
'left'
},
{
name
:
'EduCustomerSign'
,
label
:
'教育同行(签约)'
,
field
:
'EduCustomerSign'
,
align
:
'left'
},
{
name
:
'EduCustomerNotSign'
,
label
:
'教育同行(未签约)'
,
field
:
'EduCustomerNotSign'
,
align
:
'left'
},
{
name
:
'PassBy'
,
label
:
'过路客(直客)'
,
field
:
'PassBy'
,
align
:
'left'
},
{
name
:
'WeChatFriend'
,
label
:
'朋友圈'
,
field
:
'WeChatFriend'
,
align
:
'left'
},
{
name
:
'TransCount'
,
label
:
'学员转介绍'
,
field
:
'TransCount'
,
align
:
'left'
},
{
name
:
'SchoolPromote'
,
label
:
'校园推广'
,
field
:
'SchoolPromote'
,
align
:
'left'
},
{
name
:
'SchoolAgent'
,
label
:
'校园代理'
,
field
:
'SchoolAgent'
,
align
:
'left'
},
{
name
:
'OfflineActivity'
,
label
:
'线下活动'
,
field
:
'OfflineActivity'
,
align
:
'left'
},
{
name
:
'OfficialAccount'
,
label
:
'公众号'
,
field
:
'OfficialAccount'
,
align
:
'left'
},
{
name
:
'TeacherRecommend'
,
label
:
'教师推荐'
,
field
:
'TeacherRecommend'
,
align
:
'left'
},
{
name
:
'ByteDance'
,
label
:
'字节跳动'
,
field
:
'ByteDance'
,
align
:
'left'
},
{
name
:
'ThirdPartyPlatform'
,
label
:
'第三方平台'
,
field
:
'ThirdPartyPlatform'
,
align
:
'left'
},
{
name
:
'Other'
,
label
:
'其他'
,
field
:
'Other'
,
align
:
'left'
},
{
name
:
'ClassACount'
,
label
:
'A类客户'
,
field
:
'ClassACount'
,
align
:
'left'
},
{
name
:
'ClassBCount'
,
label
:
'B类客户'
,
field
:
'ClassBCount'
,
align
:
'left'
},
{
name
:
'ClassCCount'
,
label
:
'C类客户'
,
field
:
'ClassCCount'
,
align
:
'left'
},
{
name
:
'ClassDCount'
,
label
:
'D类客户'
,
field
:
'ClassDCount'
,
align
:
'left'
},
{
name
:
'InvalidCount'
,
label
:
'无效'
,
field
:
'InvalidCount'
,
align
:
'left'
},
{
name
:
'ContractCount'
,
label
:
'签约(成交.续费)'
,
field
:
'ContractCount'
,
align
:
'left'
},
{
name
:
'OrderMoney'
,
label
:
'语培签约金额'
,
field
:
'OrderMoney'
,
align
:
'left'
},
{
name
:
'StudyOrderMoney'
,
label
:
'留学签约金额'
,
field
:
'StudyOrderMoney'
,
align
:
'left'
}
],
dataList
:
[],
loading
:
false
,
myDate
:
''
,
tableHeight
:
500
,
msg
:
{
YearStr
:
''
,
MonthStr
:
''
,
rowsPerPage
:
0
},
}
},
created
()
{
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
msg
.
MonthStr
=
(
d
.
getMonth
()
+
1
).
toString
();
this
.
myDate
=
this
.
msg
.
YearStr
+
'-'
+
this
.
msg
.
MonthStr
this
.
getList
();
},
methods
:
{
getCheckDate
(){
if
(
this
.
myDate
){
this
.
msg
.
YearStr
=
this
.
myDate
.
split
(
'-'
)[
0
];
this
.
msg
.
MonthStr
=
this
.
myDate
.
split
(
'-'
)[
1
];
this
.
getList
();
}
},
//获取数据
getList
()
{
this
.
loading
=
true
;
GetStudentMarket
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/customMonthFirst.vue
0 → 100644
View file @
0ce4d62a
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
</
style
>
<
template
>
<div>
<div
class=
"col row wrap q-mb-lg"
style=
"justify-content:space-between;"
>
<div
class=
"col-3 Sysuser_Date q-mr-lg"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"msg.YearStr"
@
change=
"getList"
style=
"width:100%"
value-format=
"yyyy"
size=
"small"
type=
"year"
placeholder=
"选择年"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:15px;display:none;"
label=
"下载"
/>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
ref=
"table"
:loading=
"loading"
:style=
"{'height':tableHeight+'px'}"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-header-column-table no-bottom-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
""
>
<
template
v-slot:bottom
>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetStudentMarketMonth
}
from
'../../api/sale/sale'
;
export
default
{
props
:
{},
meta
:
{
title
:
"月度统计"
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
'DateStr'
,
label
:
'日期'
,
field
:
'DateStr'
,
align
:
'left'
},
{
name
:
'PushCount'
,
label
:
'进单人数'
,
field
:
'PushCount'
,
align
:
'left'
},
{
name
:
'TrainCount'
,
label
:
'培训需求'
,
field
:
'TrainCount'
,
align
:
'left'
,
},
{
name
:
'StudyCount'
,
label
:
'留学需求'
,
field
:
'StudyCount'
,
align
:
'left'
,
},
{
name
:
'MeiTuanCount'
,
label
:
'美团点评'
,
field
:
'MeiTuanCount'
,
align
:
'left'
},
{
name
:
'EduCustomerSign'
,
label
:
'教育同行(签约)'
,
field
:
'EduCustomerSign'
,
align
:
'left'
},
{
name
:
'EduCustomerNotSign'
,
label
:
'教育同行(未签约)'
,
field
:
'EduCustomerNotSign'
,
align
:
'left'
},
{
name
:
'PassBy'
,
label
:
'过路客(直客)'
,
field
:
'PassBy'
,
align
:
'left'
},
{
name
:
'WeChatFriend'
,
label
:
'朋友圈'
,
field
:
'WeChatFriend'
,
align
:
'left'
},
{
name
:
'TransCount'
,
label
:
'学员转介绍'
,
field
:
'TransCount'
,
align
:
'left'
},
{
name
:
'SchoolPromote'
,
label
:
'校园推广'
,
field
:
'SchoolPromote'
,
align
:
'left'
},
{
name
:
'SchoolAgent'
,
label
:
'校园代理'
,
field
:
'SchoolAgent'
,
align
:
'left'
},
{
name
:
'OfflineActivity'
,
label
:
'线下活动'
,
field
:
'OfflineActivity'
,
align
:
'left'
},
{
name
:
'OfficialAccount'
,
label
:
'公众号'
,
field
:
'OfficialAccount'
,
align
:
'left'
},
{
name
:
'TeacherRecommend'
,
label
:
'教师推荐'
,
field
:
'TeacherRecommend'
,
align
:
'left'
},
{
name
:
'ByteDance'
,
label
:
'字节跳动'
,
field
:
'ByteDance'
,
align
:
'left'
},
{
name
:
'ThirdPartyPlatform'
,
label
:
'第三方平台'
,
field
:
'ThirdPartyPlatform'
,
align
:
'left'
},
{
name
:
'Other'
,
label
:
'其他'
,
field
:
'Other'
,
align
:
'left'
},
{
name
:
'ClassACount'
,
label
:
'A类客户'
,
field
:
'ClassACount'
,
align
:
'left'
},
{
name
:
'ClassBCount'
,
label
:
'B类客户'
,
field
:
'ClassBCount'
,
align
:
'left'
},
{
name
:
'ClassCCount'
,
label
:
'C类客户'
,
field
:
'ClassCCount'
,
align
:
'left'
},
{
name
:
'ClassDCount'
,
label
:
'D类客户'
,
field
:
'ClassDCount'
,
align
:
'left'
},
{
name
:
'InvalidCount'
,
label
:
'无效'
,
field
:
'InvalidCount'
,
align
:
'left'
},
{
name
:
'ContractCount'
,
label
:
'签约(成交.续费)'
,
field
:
'ContractCount'
,
align
:
'left'
},
{
name
:
'OrderMoney'
,
label
:
'语培签约金额'
,
field
:
'OrderMoney'
,
align
:
'left'
},
{
name
:
'StudyOrderMoney'
,
label
:
'留学签约金额'
,
field
:
'StudyOrderMoney'
,
align
:
'left'
}
],
dataList
:
[],
loading
:
false
,
myDate
:
''
,
tableHeight
:
500
,
msg
:
{
YearStr
:
''
,
rowsPerPage
:
0
},
}
},
created
()
{
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
getList
();
},
methods
:
{
//获取数据
getList
()
{
this
.
loading
=
true
;
GetStudentMarketMonth
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/customMonthSecond.vue
0 → 100644
View file @
0ce4d62a
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.TotalredClass
{
color
:
red
;
}
</
style
>
<
template
>
<div>
<div
class=
"col row wrap q-mb-lg"
style=
"justify-content:space-between;"
>
<div
class=
"col-3 Sysuser_Date q-mr-lg"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"msg.YearStr"
@
change=
"getList"
style=
"width:100%"
value-format=
"yyyy"
size=
"small"
type=
"year"
placeholder=
"选择年"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:15px;display:none;"
label=
"下载"
/>
</div>
</div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
ref=
"table"
:loading=
"loading"
:style=
"{'height':tableHeight+'px'}"
no-data-label=
"暂无相关数据"
flat
class=
"sticky-column-table sticky-header-column-table no-bottom-table"
separator=
"none"
:data=
"dataList"
:columns=
"columns"
row-key=
""
>
<
template
v-slot:body-cell-JanuaryRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.JanuaryRate
<0
}"
>
{{
props
.
row
.
JanuaryRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-FebruaryRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.FebruaryRate
<0
}"
>
{{
props
.
row
.
FebruaryRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-MarchRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.MarchRate
<0
}"
>
{{
props
.
row
.
MarchRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-AprilRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.AprilRate
<0
}"
>
{{
props
.
row
.
AprilRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-MayRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.MayRate
<0
}"
>
{{
props
.
row
.
MayRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-JuneRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.JuneRate
<0
}"
>
{{
props
.
row
.
JuneRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-JulyRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.JulyRate
<0
}"
>
{{
props
.
row
.
JulyRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-AugustRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.AugustRate
<0
}"
>
{{
props
.
row
.
AugustRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-SeptemberRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.SeptemberRate
<0
}"
>
{{
props
.
row
.
SeptemberRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-OctoberRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.OctoberRate
<0
}"
>
{{
props
.
row
.
OctoberRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-NovemberRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.NovemberRate
<0
}"
>
{{
props
.
row
.
NovemberRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-DecemberRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.DecemberRate
<0
}"
>
{{
props
.
row
.
DecemberRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-AvgRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.AvgRate
<0
}"
>
{{
props
.
row
.
AvgRate
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:bottom
>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
import
{
GetStudentMarketMonthRate
}
from
'../../api/sale/sale'
;
export
default
{
props
:
{},
meta
:
{
title
:
"月度统计"
},
components
:
{},
data
()
{
return
{
tabCheck
:
1
,
dataList
:
[],
loading
:
false
,
tableHeight
:
500
,
msg
:
{
YearStr
:
''
,
rowsPerPage
:
0
},
columns
:
[{
name
:
'ItemName'
,
label
:
'名称'
,
field
:
'ItemName'
,
align
:
'left'
},
{
name
:
'JanuaryRate'
,
label
:
'1月'
,
field
:
'JanuaryRate'
,
align
:
'left'
},
{
name
:
'FebruaryRate'
,
label
:
'2月'
,
field
:
'FebruaryRate'
,
align
:
'left'
,
},
{
name
:
'MarchRate'
,
label
:
'3月'
,
field
:
'MarchRate'
,
align
:
'left'
,
},
{
name
:
'AprilRate'
,
label
:
'4月'
,
field
:
'AprilRate'
,
align
:
'left'
},
{
name
:
'MayRate'
,
label
:
'5月'
,
field
:
'MayRate'
,
align
:
'left'
},
{
name
:
'JuneRate'
,
label
:
'6月'
,
field
:
'JuneRate'
,
align
:
'left'
},
{
name
:
'JulyRate'
,
label
:
'7月'
,
field
:
'JulyRate'
,
align
:
'left'
},
{
name
:
'AugustRate'
,
label
:
'8月'
,
field
:
'AugustRate'
,
align
:
'left'
},
{
name
:
'SeptemberRate'
,
label
:
'9月'
,
field
:
'SeptemberRate'
,
align
:
'left'
},
{
name
:
'OctoberRate'
,
label
:
'10月'
,
field
:
'OctoberRate'
,
align
:
'left'
},
{
name
:
'NovemberRate'
,
label
:
'11月'
,
field
:
'NovemberRate'
,
align
:
'left'
},
{
name
:
'DecemberRate'
,
label
:
'12月'
,
field
:
'DecemberRate'
,
align
:
'left'
},
{
name
:
'AvgRate'
,
label
:
'平均'
,
field
:
'AvgRate'
,
align
:
'left'
}
],
}
},
created
()
{
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
getList
();
},
methods
:
{
getList
()
{
this
.
loading
=
true
;
GetStudentMarketMonthRate
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
src/pages/sale/customMonthlyTotal.vue
0 → 100644
View file @
0ce4d62a
<
template
>
<div
class=
"page-body"
>
<q-tabs
v-model=
"tabCheck"
narrow-indicator
dense
align=
"left"
class=
"text-primary q-mb-sm"
>
<q-tab
:ripple=
"false"
:name=
"1"
label=
"月份统计"
/>
<q-tab
:ripple=
"false"
:name=
"2"
label=
"成长率"
/>
</q-tabs>
<template
v-if=
"tabCheck==1"
>
<customMonthFirst></customMonthFirst>
</
template
>
<
template
v-if=
"tabCheck==2"
>
<customMonthSecond></customMonthSecond>
</
template
>
</div>
</template>
<
script
>
import
customMonthFirst
from
'../sale/customMonthFirst'
;
import
customMonthSecond
from
'../sale/customMonthSecond'
;
export
default
{
props
:
{},
meta
:
{
title
:
"月度统计"
},
components
:
{
customMonthFirst
,
customMonthSecond
},
data
()
{
return
{
tabCheck
:
1
,
}
},
created
()
{
},
mounted
()
{},
methods
:
{
}
}
</
script
>
src/pages/sale/customYearFirst.vue
0 → 100644
View file @
0ce4d62a
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
.zk_Table
thead
tr
:last-child
th
{
top
:
35px
!important
;
z-index
:
1
!important
;
}
.zk_Table
thead
tr
{
height
:
35px
;
}
.TotalredClass
{
color
:
red
;
}
</
style
>
<
template
>
<div>
<div
class=
"page-content"
>
<q-table
:pagination=
"msg"
ref=
"table"
:loading=
"loading"
:style=
"
{'height':tableHeight+'px'}"
no-data-label="暂无相关数据" flat class="sticky-header-column-table no-bottom-table zk_Table"
separator="none" :data="dataList" :columns="columns" row-key="">
<tr
slot=
"header"
>
<q-th
rowspan=
"2"
style=
"text-align:left;width:300px;"
>
名称
</q-th>
<q-th
colspan=
"2"
>
年份
</q-th>
<q-th
rowspan=
"2"
>
成长率
</q-th>
</tr>
<tr
slot=
"header"
>
<q-th>
<span
v-if=
"dataList&&dataList.length>0"
>
{{
dataList
[
0
].
FirstYearStr
}}
</span>
</q-th>
<q-th>
<span
v-if=
"dataList&&dataList.length>0"
>
{{
dataList
[
0
].
SecondYearStr
}}
</span>
</q-th>
</tr>
<template
v-slot:body-cell-FirstYear=
"props"
v-if=
"tabCheck==2"
>
<q-td
style=
"text-align:center;"
>
{{
props
.
row
.
FirstYear
}}
%
</q-td>
</
template
>
<
template
v-slot:body-cell-SecondYear=
"props"
v-if=
"tabCheck==2"
>
<q-td
style=
"text-align:center;"
>
{{
props
.
row
.
SecondYear
}}
%
</q-td>
</
template
>
<
template
v-slot:body-cell-YearRate=
"props"
>
<q-td
style=
"text-align:center;"
>
{{
props
.
row
.
YearRate
}}
%
</q-td>
</
template
>
<
template
v-slot:body-cell-FirstYear=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.FirstYear
<0
}"
>
{{
props
.
row
.
FirstYear
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-SecondYear=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.SecondYear
<0
}"
>
{{
props
.
row
.
SecondYear
}}
%
</span>
</q-td>
</
template
>
<
template
v-slot:body-cell-YearRate=
"props"
>
<q-td>
<span
:class=
"
{'TotalredClass':props.row.YearRate
<0
}"
>
{{
props
.
row
.
YearRate
}}
%
</span>
</q-td>
</
template
>
<!-- <template v-slot:header-cell-FirstYear="props">
<q-th :props="props">
<span v-if="dataList&&dataList.length>0">{{dataList[0].FirstYearStr}}</span>
</q-th>
</template>
<template v-slot:header-cell-SecondYear="props">
<q-th :props="props">
<span v-if="dataList&&dataList.length>0">{{dataList[0].SecondYearStr}}</span>
</q-th>
</template> -->
<
template
v-slot:bottom
>
</
template
>
</q-table>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
dataList
:
{
type
:
Array
,
default
:
null
},
tabCheck
:
{
type
:
Number
,
default
:
null
}
},
meta
:
{
title
:
"年度统计"
},
components
:
{},
data
()
{
return
{
columns
:
[{
name
:
'ItemName'
,
label
:
'名称'
,
field
:
'ItemName'
,
align
:
'left'
},
{
name
:
'FirstYear'
,
label
:
'第一条'
,
field
:
'FirstYear'
,
align
:
'center'
},
{
name
:
'SecondYear'
,
label
:
'第二条'
,
field
:
'SecondYear'
,
align
:
'center'
,
},
{
name
:
'YearRate'
,
label
:
'成长率'
,
field
:
'YearRate'
,
align
:
'center'
,
}
],
loading
:
false
,
msg
:{
rowsPerPage
:
0
},
tableHeight
:
500
,
}
},
created
()
{
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
mounted
()
{
},
methods
:
{
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/customyearTotal.vue
0 → 100644
View file @
0ce4d62a
<
template
>
<div
class=
"page-body"
>
<q-tabs
v-model=
"tabCheck"
@
input=
"getList"
narrow-indicator
dense
align=
"left"
class=
"text-primary q-mb-sm"
>
<q-tab
:ripple=
"false"
:name=
"1"
label=
"年份统计"
/>
<q-tab
:ripple=
"false"
:name=
"2"
label=
"成长率"
/>
</q-tabs>
<div
class=
"col row wrap q-mb-lg"
>
<div
class=
"col-3 Sysuser_Date q-mr-lg"
style=
"display:none;"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"msg.YearStr"
@
change=
"getList"
style=
"width:100%"
value-format=
"yyyy"
size=
"small"
type=
"year"
placeholder=
"选择年"
>
</el-date-picker>
</
template
>
</q-field>
</div>
<div
style=
"display:none;"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
style=
"margin-top:15px;"
label=
"下载"
@
click=
"downloadStudentStaticYear"
/>
</div>
</div>
<customYearFirst
:dataList=
"dataList"
:tabCheck=
"tabCheck"
></customYearFirst>
</div>
</template>
<
script
>
import
{
EduDownLoad
}
from
"../../api/common/common"
;
import
customYearFirst
from
'../sale/customYearFirst'
;
import
{
GetStudentMarketYear
}
from
'../../api/sale/sale'
;
import
{
GetStudentMarketYearRate
}
from
'../../api/sale/sale'
;
export
default
{
props
:
{},
meta
:
{
title
:
"年度统计"
},
components
:
{
customYearFirst
},
data
()
{
return
{
tabCheck
:
1
,
dataList
:
[],
msg
:
{
YearStr
:
''
,
rowsPerPage
:
0
}
}
},
created
()
{
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
getList
();
},
methods
:
{
//下载文件
downloadStudentStaticYear
()
{
this
.
loading
=
true
;
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
var
url
=
"/StudentStat/DownLoadStudentStaticYear"
;
var
fileName
=
"课程顾问部年数据统计.xls"
;
if
(
this
.
tabCheck
==
2
)
{
url
=
"/StudentStat/DownLoadStudentStaticYearRate"
;
fileName
=
"课程顾问部年成长率数据统计.xls"
;
}
EduDownLoad
(
url
,
msg
,
fileName
,
res
=>
{
this
.
loading
=
false
;
}
);
},
//获取数据
getList
()
{
if
(
this
.
tabCheck
==
1
)
{
this
.
loading
=
true
;
GetStudentMarketYear
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
else
{
this
.
loading
=
true
;
GetStudentMarketYearRate
(
this
.
msg
).
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
}
</
script
>
\ No newline at end of file
src/router/routes.js
View file @
0ce4d62a
...
...
@@ -1075,6 +1075,21 @@ const routes = [{
component
:
()
=>
import
(
"pages/sale/yearTotal.vue"
)
},
{
path
:
"/sale/customDailyTotal"
,
//市场部每日统计
component
:
()
=>
import
(
"pages/sale/customDailyTotal.vue"
)
},
{
path
:
"/sale/customMonthlyTotal"
,
//市场部月度统计
component
:
()
=>
import
(
"pages/sale/customMonthlyTotal.vue"
)
},
{
path
:
"/sale/customyearTotal"
,
//市场部年度统计
component
:
()
=>
import
(
"pages/sale/customyearTotal.vue"
)
},
{
path
:
"/sale/everyMonthTotal"
,
//每月统计
component
:
()
=>
...
...
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