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
585ca345
Commit
585ca345
authored
Mar 01, 2022
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
parents
337e48f7
bcedbbc5
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
786 additions
and
3 deletions
+786
-3
sale.js
src/api/sale/sale.js
+30
-0
table.sass
src/assets/css/table.sass
+4
-3
everyMonthFirst.vue
src/pages/sale/everyMonthFirst.vue
+269
-0
everyMonthSecond.vue
src/pages/sale/everyMonthSecond.vue
+153
-0
everyMonthTotal.vue
src/pages/sale/everyMonthTotal.vue
+41
-0
monthTotal.vue
src/pages/sale/monthTotal.vue
+279
-0
routes.js
src/router/routes.js
+10
-0
No files found.
src/api/sale/sale.js
View file @
585ca345
...
...
@@ -485,5 +485,35 @@ export function queryGuestStateList(data) {
});
}
//获取月份统计数据
export
function
GetStudentStatic
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentStatic'
,
method
:
'post'
,
data
});
}
//获取每月统计数据
export
function
GetStudentStaticMonth
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentStaticMonth'
,
method
:
'post'
,
data
});
}
//获取每月成长率数据
export
function
GetStudentStaticRateMonth
(
data
)
{
return
request
({
url
:
'/StudentStat/GetStudentStaticRateMonth'
,
method
:
'post'
,
data
});
}
src/assets/css/table.sass
View file @
585ca345
...
...
@@ -115,14 +115,15 @@
.sticky-header-column-table
td
:first-child
/* bg color is important for td; just specify one */
background-color
:
#c1f4cd
!
important
/* background-color: #c1f4cd !important */
tr
th
position
:
sticky
/* higher than z-index for td below */
z-index
:
2
z-index
:
3
/* bg color is important; just specify one */
background
:
#fff
/* background: #fff */
background-color
:
#f5f6f7
/* this will be the loading indicator */
thead
tr
:last-child
th
...
...
src/pages/sale/everyMonthFirst.vue
0 → 100644
View file @
585ca345
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"col row wrap q-mb-lg"
>
<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>
<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
{
GetStudentStaticMonth
}
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
:
'NewCount'
,
label
:
'新客户'
,
field
:
'NewCount'
,
align
:
'left'
,
},
{
name
:
'CommunicationCount'
,
label
:
'初步沟通(二次沟通)'
,
field
:
'CommunicationCount'
,
align
:
'left'
,
},
{
name
:
'TrialLessonCount'
,
label
:
'预约试听(已到店,已试听)'
,
field
:
'TrialLessonCount'
,
align
:
'left'
},
{
name
:
'NotContacted'
,
label
:
'待联系'
,
field
:
'NotContacted'
,
align
:
'left'
},
{
name
:
'JPCount'
,
label
:
'日本语培'
,
field
:
'JPCount'
,
align
:
'left'
},
{
name
:
'KRCount'
,
label
:
'韩国语培'
,
field
:
'KRCount'
,
align
:
'left'
},
{
name
:
'FRCount'
,
label
:
'法国语培'
,
field
:
'FRCount'
,
align
:
'left'
},
{
name
:
'JPStudyCount'
,
label
:
'日本留学'
,
field
:
'JPStudyCount'
,
align
:
'left'
},
{
name
:
'KRStudyCount'
,
label
:
'韩国留学'
,
field
:
'KRStudyCount'
,
align
:
'left'
},
{
name
:
'YGAStudyCount'
,
label
:
'英港澳留学'
,
field
:
'YGAStudyCount'
,
align
:
'left'
},
{
name
:
'USStudyCount'
,
label
:
'美国留学'
,
field
:
'USStudyCount'
,
align
:
'left'
},
{
name
:
'SGStudyCount'
,
label
:
'新加坡留学'
,
field
:
'SGStudyCount'
,
align
:
'left'
},
{
name
:
'AXStudyCount'
,
label
:
'澳新留学'
,
field
:
'AXStudyCount'
,
align
:
'left'
},
{
name
:
'OtherCount'
,
label
:
'其他'
,
field
:
'OtherCount'
,
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
:
'CustomerCount'
,
label
:
'同行介绍'
,
field
:
'CustomerCount'
,
align
:
'left'
},
{
name
:
'B2CCount'
,
label
:
'直客'
,
field
:
'B2CCount'
,
align
:
'left'
},
{
name
:
'TransCount'
,
label
:
'学员转介绍'
,
field
:
'TransCount'
,
align
:
'left'
},
{
name
:
'InnerCount'
,
label
:
'内部介绍'
,
field
:
'InnerCount'
,
align
:
'left'
},
{
name
:
'InvalidCount'
,
label
:
'无效'
,
field
:
'InvalidCount'
,
align
:
'left'
},
{
name
:
'SuspectedCount'
,
label
:
'疑似'
,
field
:
'SuspectedCount'
,
align
:
'left'
},
{
name
:
'IntentionCount'
,
label
:
'意向'
,
field
:
'IntentionCount'
,
align
:
'left'
},
{
name
:
'InvitationCount'
,
label
:
'近期可邀约'
,
field
:
'InvitationCount'
,
align
:
'left'
},
{
name
:
'NegotiationCount'
,
label
:
'谈判'
,
field
:
'NegotiationCount'
,
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
:
1000
},
}
},
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
()
{
GetStudentStaticMonth
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/pages/sale/everyMonthSecond.vue
0 → 100644
View file @
585ca345
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"col row wrap q-mb-lg"
>
<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>
<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
{
GetStudentStaticRateMonth
}
from
'../../api/sale/sale'
;
export
default
{
props
:
{},
meta
:
{
title
:
""
},
components
:
{},
data
()
{
return
{
tabCheck
:
1
,
dataList
:
[],
msg
:
{
YearStr
:
''
},
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
()
{
},
mounted
()
{
let
d
=
new
Date
();
this
.
msg
.
YearStr
=
d
.
getFullYear
().
toString
();
this
.
getList
();
},
methods
:
{
getList
()
{
GetStudentStaticRateMonth
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
src/pages/sale/everyMonthTotal.vue
0 → 100644
View file @
585ca345
<
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"
>
<everyMonthFirst></everyMonthFirst>
</
template
>
<
template
v-if=
"tabCheck==2"
>
<everyMonthSecond></everyMonthSecond>
</
template
>
</div>
</template>
<
script
>
import
everyMonthFirst
from
'../sale/everyMonthFirst'
;
import
everyMonthSecond
from
'../sale/everyMonthSecond'
;
export
default
{
props
:
{},
meta
:
{
title
:
""
},
components
:
{
everyMonthFirst
,
everyMonthSecond
},
data
()
{
return
{
tabCheck
:
1
,
}
},
created
()
{
},
mounted
()
{},
methods
:
{
}
}
</
script
>
src/pages/sale/monthTotal.vue
0 → 100644
View file @
585ca345
<
style
>
.Sysuser_Date
.el-input__inner
{
background
:
transparent
!important
;
border
:
0
!important
;
}
</
style
>
<
template
>
<div
class=
"page-body"
>
<div
class=
"col row wrap q-mb-lg"
>
<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>
<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
{
GetStudentStatic
}
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
:
'NewCount'
,
label
:
'新客户'
,
field
:
'NewCount'
,
align
:
'left'
,
},
{
name
:
'CommunicationCount'
,
label
:
'初步沟通(二次沟通)'
,
field
:
'CommunicationCount'
,
align
:
'left'
,
},
{
name
:
'TrialLessonCount'
,
label
:
'预约试听(已到店,已试听)'
,
field
:
'TrialLessonCount'
,
align
:
'left'
},
{
name
:
'NotContacted'
,
label
:
'待联系'
,
field
:
'NotContacted'
,
align
:
'left'
},
{
name
:
'JPCount'
,
label
:
'日本语培'
,
field
:
'JPCount'
,
align
:
'left'
},
{
name
:
'KRCount'
,
label
:
'韩国语培'
,
field
:
'KRCount'
,
align
:
'left'
},
{
name
:
'FRCount'
,
label
:
'法国语培'
,
field
:
'FRCount'
,
align
:
'left'
},
{
name
:
'JPStudyCount'
,
label
:
'日本留学'
,
field
:
'JPStudyCount'
,
align
:
'left'
},
{
name
:
'KRStudyCount'
,
label
:
'韩国留学'
,
field
:
'KRStudyCount'
,
align
:
'left'
},
{
name
:
'YGAStudyCount'
,
label
:
'英港澳留学'
,
field
:
'YGAStudyCount'
,
align
:
'left'
},
{
name
:
'USStudyCount'
,
label
:
'美国留学'
,
field
:
'USStudyCount'
,
align
:
'left'
},
{
name
:
'SGStudyCount'
,
label
:
'新加坡留学'
,
field
:
'SGStudyCount'
,
align
:
'left'
},
{
name
:
'AXStudyCount'
,
label
:
'澳新留学'
,
field
:
'AXStudyCount'
,
align
:
'left'
},
{
name
:
'OtherCount'
,
label
:
'其他'
,
field
:
'OtherCount'
,
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
:
'CustomerCount'
,
label
:
'同行介绍'
,
field
:
'CustomerCount'
,
align
:
'left'
},
{
name
:
'B2CCount'
,
label
:
'直客'
,
field
:
'B2CCount'
,
align
:
'left'
},
{
name
:
'TransCount'
,
label
:
'学员转介绍'
,
field
:
'TransCount'
,
align
:
'left'
},
{
name
:
'InnerCount'
,
label
:
'内部介绍'
,
field
:
'InnerCount'
,
align
:
'left'
},
{
name
:
'InvalidCount'
,
label
:
'无效'
,
field
:
'InvalidCount'
,
align
:
'left'
},
{
name
:
'SuspectedCount'
,
label
:
'疑似'
,
field
:
'SuspectedCount'
,
align
:
'left'
},
{
name
:
'IntentionCount'
,
label
:
'意向'
,
field
:
'IntentionCount'
,
align
:
'left'
},
{
name
:
'InvitationCount'
,
label
:
'近期可邀约'
,
field
:
'InvitationCount'
,
align
:
'left'
},
{
name
:
'NegotiationCount'
,
label
:
'谈判'
,
field
:
'NegotiationCount'
,
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
:
1000
,
},
}
},
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
()
{
GetStudentStatic
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
dataList
=
res
.
Data
;
}
})
}
}
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
src/router/routes.js
View file @
585ca345
...
...
@@ -1065,6 +1065,16 @@ const routes = [{
component
:
()
=>
import
(
"pages/sale/guestConsultation.vue"
)
},
{
path
:
"/sale/monthTotal"
,
//月份统计
component
:
()
=>
import
(
"pages/sale/monthTotal.vue"
)
},
{
path
:
"/sale/everyMonthTotal"
,
//每月统计
component
:
()
=>
import
(
"pages/sale/everyMonthTotal.vue"
)
},
{
path
:
"/activity/activeType"
,
//活动 活动类型
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