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
5804f6bf
Commit
5804f6bf
authored
Mar 04, 2022
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
总经理视图
parent
2307d119
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
2214 additions
and
59 deletions
+2214
-59
App.vue
src/App.vue
+27
-19
index.js
src/api/dataservice/index.js
+17
-0
admin.vue
src/components/work/dataservice/admin.vue
+233
-0
course.vue
src/components/work/dataservice/course.vue
+218
-0
customer.vue
src/components/work/dataservice/customer.vue
+290
-0
finance.vue
src/components/work/dataservice/finance.vue
+345
-0
sell.vue
src/components/work/dataservice/sell.vue
+349
-0
student.vue
src/components/work/dataservice/student.vue
+393
-0
index.vue
src/components/work/index.vue
+76
-40
workbench.vue
src/components/work/workbench.vue
+266
-0
No files found.
src/App.vue
View file @
5804f6bf
...
...
@@ -8,39 +8,44 @@
export
default
{
name
:
"App"
,
mounted
()
{
if
((
navigator
.
userAgent
.
match
(
/
(
phone|pad|pod|iPhone|iPod|ios|iPad|Android|wOSBrowser|BrowserNG|WebOS
)
/i
)))
{
//alert("shouji");
if
(
navigator
.
userAgent
.
match
(
/
(
phone|pad|pod|iPhone|iPod|ios|iPad|Android|wOSBrowser|BrowserNG|WebOS
)
/i
)
)
{
//alert("shouji");
}
else
{
//alert("diannao");
document
.
write
(
'<link href="http://edu.oytour.com/font.css" rel="stylesheet" type="text/css" media="screen" />'
);
//alert("diannao");
document
.
write
(
'<link href="http://edu.oytour.com/font.css" rel="stylesheet" type="text/css" media="screen" />'
);
}
}
,
}
};
</
script
>
<
style
>
@import
url("//at.alicdn.com/t/font_2077629_w1o8daso6r9.css")
;
@font-face
{
font-family
:
'din'
;
src
:
url('./assets/font/DIN-Bold.otf')
format
(
'opentype'
);
font-weight
:
normal
;
font-style
:
normal
;
@font-face
{
font-family
:
"din"
;
src
:
url("./assets/font/DIN-Bold.otf")
format
(
"opentype"
);
font-weight
:
normal
;
font-style
:
normal
;
}
.border-radius
{
.border-radius
{
border-radius
:
5px
;
}
.din
{
font-family
:
din
!important
;
.din
{
font-family
:
din
!important
;
}
.q-scrollarea__thumb
{
z-index
:
999999
!important
;
}
body
{
min-width
:
1360px
!important
;
body
{
min-width
:
1360px
!important
;
}
header
{
min-width
:
1360px
;
header
{
min-width
:
1360px
;
}
html
,
body
,
...
...
@@ -309,8 +314,11 @@ button.bg-accent:active {
background
:
#ecf1ff
!important
;
color
:
var
(
--q-color-primary
)
!important
;
}
.big-dialog
.q-dialog__inner--minimized
>
div
{
.big-dialog
.q-dialog__inner--minimized
>
div
{
max-width
:
unset
!important
;
}
.f12
{
font-size
:
12px
;
}
/***************************************************** End 重写ElementUI 抽屉效果 ***************************************************************/
</
style
>
src/api/dataservice/index.js
0 → 100644
View file @
5804f6bf
import
request
from
'../../utils/request'
export
function
GetGMView
(
data
)
{
return
request
({
url
:
'/DataService/GetGMView'
,
method
:
'post'
,
data
})
}
export
function
UpdateGMView
(
data
)
{
return
request
({
url
:
'/DataService/UpdateGMView'
,
method
:
'post'
,
data
})
}
src/components/work/dataservice/admin.vue
0 → 100644
View file @
5804f6bf
<
template
>
<div
class=
"big-dataservice-box"
style=
"border-color:#ffe0b2!important"
:class=
"
{ 'hide-border': shouType == '6' }"
>
<div
class=
"tag-title"
style=
"background:#ffe0b2!important"
>
行政数据
</div>
<div
class=
"row q-gutter-md"
>
<q-card
flat
>
<div
class=
"data-title"
>
员工
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
在职员工
</div>
<div
class=
"value"
>
{{
d
.
EmpCount
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label"
>
兼职员工
</div>
<div
class=
"value"
>
{{
d
.
InactiveEmpCount
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
新增员工
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
NewEmpCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
NewEmpCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
NewEmpCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
离职员工
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
LeaveEmpCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
LeaveEmpCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
LeaveEmpCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
红事件
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
RedEventCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
RedEventCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
RedEventCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
黑事件
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
BlackEventCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
BlackEventCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
BlackEventCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
缺勤
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
AbsenceCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
AbsenceCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
AbsenceCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
旷工
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
AbsenteeismCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
AbsenteeismCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
AbsenteeismCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
请假
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
AFLeaveCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
AFLeaveCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
AFLeaveCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
[
"d"
,
"formatDate"
,
"shouType"
],
data
()
{
return
{};
},
methods
:
{
numberFormat
(
value
)
{
let
param
=
{};
let
k
=
10000
;
let
sizes
=
[
"元"
,
"万"
,
"亿"
,
"万亿"
];
let
i
;
if
(
value
<
k
)
{
param
.
value
=
parseFloat
(
value
).
toFixed
(
2
);
param
.
unit
=
"元"
;
}
else
{
i
=
Math
.
floor
(
Math
.
log
(
value
)
/
Math
.
log
(
k
));
param
.
value
=
(
value
/
Math
.
pow
(
k
,
i
)).
toFixed
(
2
);
param
.
unit
=
sizes
[
i
];
}
return
param
;
}
}
};
</
script
>
<
style
></
style
>
src/components/work/dataservice/course.vue
0 → 100644
View file @
5804f6bf
<
template
>
<div
class=
"big-dataservice-box"
style=
"border-color:#b2dfdb!important"
:class=
"
{ 'hide-border': shouType == '4' }"
>
<div
class=
"tag-title"
style=
"background:#b2dfdb!important"
>
课程动态
</div>
<div
class=
"row q-gutter-md"
>
<q-card
flat
>
<div
class=
"data-title"
>
课程信息
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
课程总数
</div>
<div
class=
"value"
>
{{
d
.
CourseCount
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
<div>
<div
class=
"label"
>
在售课程
</div>
<div
class=
"value"
>
{{
d
.
SellCourseCount
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
课程排名
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
></div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
排课
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
PlanCount
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
节
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
PlanCount
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
节
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
PlanCount
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
节
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
平均上座率
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
parseFloat
(
d
.
FullRate
.
split
(
","
)[
0
]).
toFixed
(
2
)
}}
<span
class=
"unit"
>
%
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
parseFloat
(
d
.
FullRate
.
split
(
","
)[
1
]).
toFixed
(
2
)
}}
<span
class=
"unit"
>
%
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
parseFloat
(
d
.
FullRate
.
split
(
","
)[
2
]).
toFixed
(
2
)
}}
<span
class=
"unit"
>
%
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
平均授课时长
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
parseFloat
(
d
.
AvgClassTime
.
split
(
","
)[
0
]).
toFixed
(
2
)
}}
<span
class=
"unit"
>
分钟
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
numberFormat
(
d
.
AvgClassTime
.
split
(
","
)[
1
]).
value
}}
<span
class=
"unit"
>
分钟
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
parseFloat
(
d
.
AvgClassTime
.
split
(
","
)[
2
]).
toFixed
(
2
)
}}
<span
class=
"unit"
>
分钟
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
无授课老师
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
NoneClassTeacher
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
NoneClassTeacher
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
NoneClassTeacher
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
未备课
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
UnLessonClass
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
UnLessonClass
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
UnLessonClass
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
未备课老师
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
UnLessonTeacher
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
UnLessonTeacher
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
UnLessonTeacher
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
个
</span>
</div>
</div>
</div>
</q-card>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
[
"d"
,
"formatDate"
,
"shouType"
],
data
()
{
return
{};
},
methods
:
{
numberFormat
(
value
)
{
let
param
=
{};
let
k
=
10000
;
let
sizes
=
[
"元"
,
"万"
,
"亿"
,
"万亿"
];
let
i
;
if
(
value
<
k
)
{
param
.
value
=
parseFloat
(
value
).
toFixed
(
2
);
param
.
unit
=
"元"
;
}
else
{
i
=
Math
.
floor
(
Math
.
log
(
value
)
/
Math
.
log
(
k
));
param
.
value
=
(
value
/
Math
.
pow
(
k
,
i
)).
toFixed
(
2
);
param
.
unit
=
sizes
[
i
];
}
return
param
;
}
}
};
</
script
>
<
style
></
style
>
src/components/work/dataservice/customer.vue
0 → 100644
View file @
5804f6bf
<
template
>
<div
class=
"big-dataservice-box"
style=
"border-color:#bbdefb!important;"
:class=
"
{ 'hide-border': shouType == '1' }"
>
<div
class=
"tag-title"
style=
"background:#bbdefb!important"
>
客户动态
</div>
<div
class=
"row q-gutter-md"
>
<q-card
flat
>
<div
class=
"data-title"
>
客户线索
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Stu
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Stu
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Stu
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
总数
</div>
<div
class=
"value samll"
>
{{
d
.
Stu
.
split
(
","
)[
3
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
到访客户
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Visit
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Visit
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Visit
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
试听客户
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Reserve
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Reserve
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Reserve
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
跟进客户
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Follow
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Follow
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Follow
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
无效客户
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Invalid
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Invalid
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Invalid
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
总数
</div>
<div
class=
"value samll"
>
{{
d
.
Invalid
.
split
(
","
)[
3
]
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
未跟进学员
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
截止到当日未跟进
</div>
<div
class=
"value"
>
{{
d
.
UnFollow
}}
<span
class=
"unit"
>
人
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
有效通话
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
MakeCall
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
MakeCall
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
MakeCall
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
无效通话
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
InvalidCall
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
InvalidCall
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
InvalidCall
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
新增同业
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Company
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Company
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Company
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
<q-card
flat
>
<div
class=
"data-title"
>
新增同业联系人
</div>
<div
class=
"data-time"
>
{{
formatDate
.
date
}}
{{
formatDate
.
week
}}
</div>
<div
class=
"wrapper"
>
<div
class=
"col"
>
<div
class=
"label"
>
当日
</div>
<div
class=
"value"
>
{{
d
.
Contacts
.
split
(
","
)[
0
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div
class=
"q-mr-lg"
>
<div
class=
"label big"
>
当周
</div>
<div
class=
"value samll"
>
{{
d
.
Contacts
.
split
(
","
)[
1
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
<div>
<div
class=
"label big"
>
当月
</div>
<div
class=
"value samll"
>
{{
d
.
Contacts
.
split
(
","
)[
2
]
}}
<span
class=
"unit"
>
次
</span>
</div>
</div>
</div>
</q-card>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
[
"d"
,
"formatDate"
,
"shouType"
],
data
()
{
return
{};
},
methods
:
{
numberFormat
(
value
)
{
let
param
=
{};
let
k
=
10000
;
let
sizes
=
[
"元"
,
"万"
,
"亿"
,
"万亿"
];
let
i
;
if
(
value
<
k
)
{
param
.
value
=
parseFloat
(
value
).
toFixed
(
2
);
param
.
unit
=
"元"
;
}
else
{
i
=
Math
.
floor
(
Math
.
log
(
value
)
/
Math
.
log
(
k
));
param
.
value
=
(
value
/
Math
.
pow
(
k
,
i
)).
toFixed
(
2
);
param
.
unit
=
sizes
[
i
];
}
return
param
;
}
}
};
</
script
>
<
style
></
style
>
src/components/work/dataservice/finance.vue
0 → 100644
View file @
5804f6bf
This diff is collapsed.
Click to expand it.
src/components/work/dataservice/sell.vue
0 → 100644
View file @
5804f6bf
This diff is collapsed.
Click to expand it.
src/components/work/dataservice/student.vue
0 → 100644
View file @
5804f6bf
This diff is collapsed.
Click to expand it.
src/components/work/index.vue
View file @
5804f6bf
...
...
@@ -121,32 +121,52 @@
</q-list>
</div>
<div
class=
"col q-pt-md q-pr-md"
>
<div
class=
"row work_Top"
>
<
!-- <
div class="row work_Top">
<div class="text-h6 col"></div>
<q-btn-group
outline
>
<q-btn
dense
v-if=
"(IsQueryAuth||CurrentUserInfo.IsMarket==1)||(IsQueryAuth||CurrentUserInfo.IsCourseConsultant==1)"
:outline=
"viewMode != 1"
@
click=
"changeViewModel(1)"
class=
"q-px-md"
color=
"primary"
size=
"12px"
label=
"今日数据统计"
/>
<q-btn
dense
:outline=
"viewMode != 2"
@
click=
"changeViewModel(2)"
class=
"q-px-md"
color=
"primary"
size=
"12px"
label=
"数据统计"
/>
</q-btn-group>
</div>
<dasbord
v-if=
"viewMode==2"
></dasbord>
<todayData
v-if=
"viewMode==1"
></todayData>
</div> -->
<q-btn-group
outline
style=
"position: fixed;top: 75px;right:20px;z-index: 666666;"
>
<q-btn
dense
v-if=
"IsHaveGMView"
:outline=
"viewMode != 1"
@
click=
"changeViewModel(1)"
class=
"q-px-md"
color=
"primary"
size=
"12px"
label=
"总经理视图"
/>
<q-btn
dense
v-if=
"
IsQueryAuth ||
CurrentUserInfo.IsMarket == 1 ||
IsQueryAuth ||
CurrentUserInfo.IsCourseConsultant == 1
"
:outline=
"viewMode != 2"
@
click=
"changeViewModel(2)"
class=
"q-px-md"
color=
"primary"
size=
"12px"
label=
"今日数据统计"
/>
<q-btn
dense
:outline=
"viewMode != 3"
@
click=
"changeViewModel(3)"
class=
"q-px-md"
color=
"primary"
size=
"12px"
label=
"数据统计"
/>
</q-btn-group>
<dasbord
v-if=
"viewMode == 3"
></dasbord>
<todayData
v-if=
"viewMode == 2"
></todayData>
<workbench
v-if=
"viewMode == 1"
></workbench>
</div>
</div>
</template>
...
...
@@ -156,13 +176,15 @@ import { mapGetters } from "vuex";
import
{
queryOKRMyEmployeeList
}
from
"../../api/okr/work"
;
import
{
queryEmployee
}
from
"../../api/users/user"
;
import
dasbord
from
"./dasbord.vue"
;
import
todayData
from
"./todayData.vue"
import
{
Encrypt
,
Decrypt
}
from
'../../utils/encrypt'
import
todayData
from
"./todayData.vue"
;
import
{
Encrypt
,
Decrypt
}
from
"../../utils/encrypt"
;
import
workbench
from
"./workbench.vue"
;
export
default
{
components
:
{
components
:
{
dasbord
,
todayData
todayData
,
workbench
},
data
()
{
return
{
...
...
@@ -174,26 +196,40 @@ export default {
viewMode
:
2
,
IsQueryAuth
:
false
,
//是否有查询市场部和课程顾问部人员权限
CurrentUserInfo
:
{},
//当前登录用户信息
IsHaveGMView
:
false
};
},
created
()
{
this
.
CurrentUserInfo
=
this
.
getLocalStorage
();
if
(
this
.
CurrentUserInfo
&&
this
.
CurrentUserInfo
.
ActionMenuList
&&
this
.
CurrentUserInfo
.
ActionMenuList
.
length
>
0
)
{
this
.
CurrentUserInfo
.
ActionMenuList
.
forEach
((
x
)
=>
{
if
(
this
.
CurrentUserInfo
&&
this
.
CurrentUserInfo
.
ActionMenuList
&&
this
.
CurrentUserInfo
.
ActionMenuList
.
length
>
0
)
{
this
.
CurrentUserInfo
.
ActionMenuList
.
forEach
(
x
=>
{
if
(
x
.
FunctionCode
==
"Query_MarketConsultant"
)
{
this
.
IsQueryAuth
=
true
;
}
if
(
x
.
FunctionCode
==
"GM_VIEW"
)
{
this
.
IsHaveGMView
=
true
;
}
});
}
if
((
this
.
IsQueryAuth
||
this
.
CurrentUserInfo
.
IsMarket
==
1
)
||
(
this
.
IsQueryAuth
||
this
.
CurrentUserInfo
.
IsCourseConsultant
==
1
)){
this
.
viewMode
=
1
}
else
{
this
.
viewMode
=
2
if
(
this
.
IsHaveGMView
)
{
this
.
viewMode
=
1
;
}
else
if
(
this
.
IsQueryAuth
||
this
.
CurrentUserInfo
.
IsMarket
==
1
||
this
.
IsQueryAuth
||
this
.
CurrentUserInfo
.
IsCourseConsultant
==
1
)
{
this
.
viewMode
=
2
;
}
else
{
this
.
viewMode
=
3
;
}
this
.
getUserList
();
let
str
=
Encrypt
(
"2"
)
let
str
=
Encrypt
(
"2"
);
},
computed
:
{
...
mapGetters
([
"userInfo"
])
...
...
@@ -229,9 +265,9 @@ export default {
</
script
>
<
style
>
.work_Top
{
padding
:
20px
;
background-color
:
#fff
;
.work_Top
{
padding
:
20px
;
background-color
:
#fff
;
}
.work-box
{
height
:
100%
;
...
...
src/components/work/workbench.vue
0 → 100644
View file @
5804f6bf
<
template
>
<div
class=
"q-pa-md q-px-lg"
style=
"background:rgb(244,245,252) !important;margin:-14px -14px 0 0; height:calc(100% + 14px)"
>
<div
style=
"background:#FFF;border-radius:12px;margin-bottom:5px;"
class=
"q-px-md row items-center"
>
<q-tabs
v-model=
"showType"
indicator-color=
"transparent"
active-color=
"dark"
align=
"left"
class=
"text-grey-6 col"
>
<q-tab
name=
"0"
label=
"全部"
/>
<q-tab
name=
"1"
label=
"客户"
/>
<q-tab
name=
"2"
label=
"交易"
/>
<q-tab
name=
"3"
label=
"学员"
/>
<q-tab
name=
"4"
label=
"教学"
/>
<q-tab
name=
"5"
label=
"财务"
/>
<q-tab
name=
"6"
label=
"行政"
/>
</q-tabs>
<div
class=
"q-mr-xl cursor-pointer"
style=
"line-height:48px;position: relative;"
id=
"timebox"
>
<el-date-picker
v-model=
"formatDay.dateFull"
type=
"date"
:clearable=
"false"
value-format=
"yyyy/MM/dd"
:picker-options=
"pickerOptions"
:editable=
"false"
placeholder=
"选择日期"
@
change=
"changeTimeData"
>
</el-date-picker>
</div>
<div
v-if=
"!loading"
class=
"text-right"
style=
"line-height:32px;"
>
<span
class=
"f12 text-right text-grey-5"
>
<span
>
每10分钟更新一次 最后更新时间:
{{
today
.
dateFull
==
formatDay
.
dateFull
?
d
.
FirendTime
:
formatDay
.
time
}}
</span
>
<span></span>
</span>
<q-btn
color=
"negative"
style=
"font-size:12px;"
class=
"q-mx-md"
size=
"mini"
dense
flat
v-if=
"today.dateFull == formatDay.dateFull"
@
click=
"updateData"
>
手动刷新
</q-btn
>
</div>
<div
v-else
class=
"f12 text-right q-mr-md"
>
<q-spinner-ios
color=
"primary"
size=
"1.5em"
/>
正在更新数据中...
</div>
</div>
<customer
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '1')"
></customer>
<sell
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '2')"
></sell>
<student
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '3')"
></student>
<course
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '4')"
></course>
<admin
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '6')"
></admin>
<finance
:d=
"d"
:formatDate=
"formatDay"
:shouType=
"showType"
v-if=
"!loading && (showType == '0' || showType == '5')"
></finance>
</div>
</
template
>
<
script
>
import
{
GetGMView
,
UpdateGMView
}
from
"../../api/dataservice/index"
;
import
student
from
"./dataservice/student"
;
import
customer
from
"./dataservice/customer"
;
import
sell
from
"./dataservice/sell"
;
import
admin
from
"./dataservice/admin"
;
import
course
from
"./dataservice/course"
;
import
finance
from
"./dataservice/finance"
;
export
default
{
components
:
{
student
,
customer
,
sell
,
admin
,
course
,
finance
},
data
()
{
return
{
d
:
{},
queryDay
:
""
,
formatDay
:
""
,
loading
:
true
,
showType
:
"0"
,
today
:
{},
pickerOptions
:
{
disabledDate
(
time
)
{
return
(
time
.
getTime
()
>
Date
.
now
()
||
time
.
getTime
()
<
Date
.
parse
(
"2022-03-02"
)
);
}
}
};
},
created
()
{
this
.
today
=
this
.
formatWeekFn
(
new
Date
());
this
.
init
();
},
methods
:
{
changeTimeData
(
val
)
{
this
.
queryDay
=
val
.
replaceAll
(
"/"
,
"-"
);
this
.
init
();
},
init
()
{
this
.
loading
=
true
;
GetGMView
({
day
:
this
.
queryDay
}).
then
(
r
=>
{
this
.
d
=
r
.
Data
;
this
.
formatDay
=
this
.
formatWeekFn
(
this
.
d
.
Day
);
this
.
loading
=
false
;
});
},
updateData
()
{
this
.
loading
=
true
;
UpdateGMView
().
then
(
r
=>
{
this
.
d
=
r
.
Data
;
this
.
formatDay
=
this
.
formatWeekFn
(
this
.
d
.
Day
);
this
.
loading
=
false
;
});
},
formatWeekFn
(
dateStr
)
{
var
date
=
new
Date
(
dateStr
);
var
year
=
date
.
getFullYear
();
var
month
=
date
.
getMonth
()
>
9
?
date
.
getMonth
()
+
1
:
`0
${
date
.
getMonth
()
+
1
}
`
;
var
day
=
date
.
getDate
()
>
10
?
date
.
getDate
()
:
`0
${
date
.
getDate
()}
`
;
var
d
=
date
.
getDay
();
var
hour
=
date
.
getHours
()
>
10
?
date
.
getHours
()
:
`0
${
date
.
getHours
()}
`
;
var
mint
=
date
.
getMinutes
()
>
10
?
date
.
getMinutes
()
:
`0
${
date
.
getMinutes
()}
`
;
var
sec
=
date
.
getSeconds
()
>
10
?
date
.
getSeconds
()
:
`0
${
date
.
getSeconds
()}
`
;
var
arr
=
[
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
,
"日"
];
var
d
=
arr
[
d
-
1
];
return
{
dateFull
:
`
${
year
}
/
${
month
}
/
${
day
}
`
,
date
:
`
${
month
}
/
${
day
}
`
,
week
:
`周
${
d
}
`
,
time
:
`
${
hour
}
时
${
mint
}
分
${
sec
}
秒`
};
}
}
};
</
script
>
<
style
>
.workbench-item-value
{
font-family
:
din
;
font-size
:
20px
;
}
.todo-list-item
{
background
:
rgb
(
244
,
245
,
252
)
!important
;
}
.big-dataservice-box
{
border
:
4px
dashed
rgb
(
200
,
230
,
201
);
border-radius
:
10px
;
position
:
relative
;
padding
:
30px
16px
;
margin-bottom
:
20px
;
}
.big-dataservice-box.hide-border
{
border
:
none
!important
;
}
.big-dataservice-box.hide-border
.tag-title
{
display
:
none
;
}
.big-dataservice-box
.tag-title
{
position
:
absolute
;
top
:
-4px
;
left
:
-4px
;
height
:
30px
;
line-height
:
30px
;
padding
:
0
10px
;
font-size
:
14px
;
background
:
rgb
(
200
,
230
,
201
);
border-top-left-radius
:
10px
;
border-bottom-right-radius
:
10px
;
}
.big-dataservice-box
.q-card
{
padding
:
32px
!important
;
width
:
calc
(
25%
-
16px
);
}
.big-dataservice-box
.q-card
.data-title
{
font-size
:
17px
;
}
.big-dataservice-box
.q-card
.data-time
{
font-size
:
14px
;
color
:
rgba
(
0
,
0
,
0
,
0.5
);
margin-top
:
3px
;
}
.big-dataservice-box
.q-card
.wrapper
{
display
:
flex
;
height
:
84px
;
justify-content
:
space-between
;
align-items
:
flex-end
;
}
.big-dataservice-box
.q-card
.wrapper
.label
{
color
:
rgba
(
0
,
0
,
0
,
0.3
);
font-size
:
12px
;
margin-bottom
:
4px
;
}
.big-dataservice-box
.q-card
.wrapper
.label.big
{
margin-bottom
:
18px
;
}
.big-dataservice-box
.q-card
.wrapper
.value
{
font-family
:
"din"
;
font-size
:
24px
;
}
.big-dataservice-box
.q-card
.wrapper
.value
.unit
{
font-size
:
12px
;
color
:
rgba
(
0
,
0
,
0
,
0.3
);
margin-left
:
4px
;
}
.big-dataservice-box
.q-card
.wrapper
.value.samll
{
font-size
:
14px
;
font-family
:
"pingfang"
;
}
.big-dataservice-box
.q-card
.wrapper
.value.red
{
color
:
#c10015
;
}
.big-dataservice-box
.q-card
.wrapper
.value.green
{
color
:
#21ba45
;
}
</
style
>
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