Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-learning-report
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.education.frontend
pica-learning-report
提交
d4ce4531
提交
d4ce4531
编写于
12月 30, 2019
作者:
张平
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev-optimization-1223' into 'release'
code reviewer: 张平:修复几个UI bug等 code reviewer: 张平:修复几个UI bug等 See merge request
!1
上级
7c4318b8
a59defcb
变更
11
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
297 行增加
和
215 行删除
+297
-215
chart-pie-cert.vue
components/bussiness/charts/chart-pie-cert.vue
+24
-10
chart-pie-edu.vue
components/bussiness/charts/chart-pie-edu.vue
+29
-13
chart-pie-title.vue
components/bussiness/charts/chart-pie-title.vue
+32
-16
chart-pie.vue
components/bussiness/charts/chart-pie.vue
+21
-8
course-times-list.vue
components/bussiness/course-times-list.vue
+6
-1
exam-list.vue
components/bussiness/exam-list.vue
+6
-1
exam-score-list.vue
components/bussiness/exam-score-list.vue
+5
-2
exam-times-list.vue
components/bussiness/exam-times-list.vue
+5
-2
ranking-item-days.vue
components/bussiness/ranking-item-days.vue
+24
-16
ranking-item.vue
components/bussiness/ranking-item.vue
+6
-1
index.vue
pages/index.vue
+139
-145
未找到文件。
components/bussiness/charts/chart-pie-cert.vue
浏览文件 @
d4ce4531
...
...
@@ -18,9 +18,9 @@ export default {
pieData
:
{
type
:
Array
,
default
:
()
=>
[
{
value
:
335
,
name
:
"优秀证书"
},
{
value
:
31
0
,
name
:
"及格证书"
},
{
value
:
234
,
name
:
"未获证"
}
{
value
:
0
,
name
:
"优秀证书"
},
{
value
:
0
,
name
:
"及格证书"
},
{
value
:
0
,
name
:
"未获证"
}
]
}
},
...
...
@@ -28,6 +28,7 @@ export default {
return
{
pieId
:
'certPieId'
,
chartHeight
:
"1000px"
,
legendDataNotSelected
:
{},
handledData
:
{},
legendData
:
[],
seriesData
:
{}
...
...
@@ -48,18 +49,30 @@ export default {
},
methods
:
{
handlePieData
(
pieData
)
{
this
.
legendData
=
pieData
.
map
(
item
=>
{
return
item
.
certName
})
this
.
seriesData
=
pieData
.
map
(
item
=>
{
return
{
name
:
item
.
certName
,
value
:
item
.
doneCount
}
let
legendDataNotSelected
=
{},
legendData
=
[],
seriesData
=
[];
pieData
.
forEach
(
(
item
,
i
)
=>
{
if
(
!
pieData
[
i
].
doneCount
)
{
legendDataNotSelected
[
pieData
[
i
].
certName
]
=
false
}
legendData
.
push
(
item
.
certName
);
seriesData
.
push
({
name
:
item
.
certName
,
value
:
item
.
doneCount
});
})
this
.
legendDataNotSelected
=
legendDataNotSelected
;
this
.
legendData
=
legendData
;
this
.
seriesData
=
seriesData
;
// this.legendData = pieData.map( item => {
// return item.certName
// })
// this.seriesData = pieData.map( item => {
// return { name: item.certName, value: item.doneCount}
// })
},
// 绘制图表
drawPie
()
{
let
chartPie
=
vm
.
$echarts
.
init
(
document
.
getElementById
(
vm
.
pieId
));
let
options
=
{
color
:
echartColors
,
//
color: echartColors,
tooltip
:
{
trigger
:
"item"
,
formatter
:
"{a} <br/>{b} : {c} ({d}%)"
...
...
@@ -71,6 +84,7 @@ export default {
top
:
'30%'
,
left
:
'60%'
,
bottom
:
20
,
selected
:
this
.
legendDataNotSelected
,
data
:
vm
.
legendData
,
// ["优秀证书", "及格证书", "未获证"],
textStyle
:
{
fontSize
:
12
,
...
...
@@ -112,7 +126,7 @@ export default {
let
item
=
this
.
pieData
.
find
(
item
=>
{
return
item
.
certName
===
name
;
});
return
(
item
&&
item
.
doneCount
)
||
""
;
return
(
item
&&
item
.
doneCount
)
||
0
;
}
}
};
...
...
components/bussiness/charts/chart-pie-edu.vue
浏览文件 @
d4ce4531
...
...
@@ -19,9 +19,9 @@ export default {
dataList
:
{
type
:
Array
,
default
:
()
=>
[
{
value
:
335
,
name
:
"优秀证书"
},
{
value
:
31
0
,
name
:
"及格证书"
},
{
value
:
234
,
name
:
"未获证"
}
{
value
:
0
,
name
:
"优秀证书"
},
{
value
:
0
,
name
:
"及格证书"
},
{
value
:
0
,
name
:
"未获证"
}
]
},
...
...
@@ -31,6 +31,7 @@ export default {
chartWidth
:
'320px'
,
pieId
:
'eduPieId'
,
chartHeight
:
"1000px"
,
legendDataNotSelected
:
{},
handledData
:
{},
legendData
:
[],
seriesData
:
{},
...
...
@@ -68,23 +69,37 @@ export default {
mounted
()
{},
methods
:
{
handlePieData
(
pieData
)
{
this
.
legendData
=
pieData
.
map
(
item
=>
{
return
item
.
name
})
this
.
seriesData
=
pieData
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
value
:
item
.
value
}
})
let
count
=
0
pieData
.
forEach
(
item
=>
{
let
count
=
0
,
legendDataNotSelected
=
{},
legendData
=
[],
seriesData
=
[];
pieData
.
forEach
(
(
item
,
i
)
=>
{
if
(
!
pieData
[
i
].
value
)
{
legendDataNotSelected
[
pieData
[
i
].
name
]
=
false
}
legendData
.
push
(
item
.
name
);
seriesData
.
push
({
name
:
item
.
name
,
value
:
item
.
value
});
count
+=
item
.
value
;
})
this
.
legendDataNotSelected
=
legendDataNotSelected
;
this
.
legendData
=
legendData
;
this
.
seriesData
=
seriesData
;
this
.
count
=
count
;
// this.legendData = pieData.map( item => {
// return item.name
// })
// this.seriesData = pieData.map( item => {
// return { name: item.name, value: item.value}
// })
// let count = 0
// pieData.forEach( item => {
// count += item.value;
// })
// this.count = count;
},
// 绘制图表
drawPie
()
{
let
chartPie
=
vm
.
$echarts
.
init
(
document
.
getElementById
(
vm
.
pieId
));
let
options
=
{
color
:
echartColors
,
//
color: echartColors,
title
:
{
text
:
"总人数: "
+
vm
.
count
,
top
:
'10%'
,
...
...
@@ -111,6 +126,7 @@ export default {
top: '20%',
left: '60%',
bottom: 20,
selected: this.legendDataNotSelected,
data: vm.legendData, // ["
优秀证书
", "
及格证书
", "
未获证
"],
textStyle: {
fontSize: 12,
...
...
@@ -152,7 +168,7 @@ export default {
let
item
=
this
.
dataList
.
find
(
item
=>
{
return
item
.
name
===
name
;
});
return
(
item
&&
item
.
value
)
||
""
;
return
(
item
&&
item
.
value
)
||
0
;
}
}
};
...
...
components/bussiness/charts/chart-pie-title.vue
浏览文件 @
d4ce4531
...
...
@@ -19,17 +19,17 @@ export default {
pieData
:
{
type
:
Array
,
default
:
()
=>
[
{
value
:
335
,
name
:
"优秀证书"
},
{
value
:
31
0
,
name
:
"及格证书"
},
{
value
:
234
,
name
:
"未获证"
}
{
value
:
0
,
name
:
"优秀证书"
},
{
value
:
0
,
name
:
"及格证书"
},
{
value
:
0
,
name
:
"未获证"
}
]
},
dataList
:
{
type
:
Array
,
default
:
()
=>
[
{
value
:
335
,
name
:
"优秀证书"
},
{
value
:
31
0
,
name
:
"及格证书"
},
{
value
:
234
,
name
:
"未获证"
}
{
value
:
0
,
name
:
"优秀证书"
},
{
value
:
0
,
name
:
"及格证书"
},
{
value
:
0
,
name
:
"未获证"
}
]
},
},
...
...
@@ -38,6 +38,7 @@ export default {
chartWidth
:
'320px'
,
pieId
:
"titlePieId"
,
chartHeight
:
"1000px"
,
legendDataNotSelected
:
{},
handledData
:
{},
legendData
:
[],
seriesData
:
{},
...
...
@@ -74,23 +75,37 @@ export default {
mounted
()
{},
methods
:
{
handlePieData
(
pieData
)
{
this
.
legendData
=
pieData
.
map
(
item
=>
{
return
item
.
name
;
});
this
.
seriesData
=
pieData
.
map
(
item
=>
{
return
{
name
:
item
.
name
,
value
:
item
.
value
};
});
let
count
=
0
pieData
.
forEach
(
item
=>
{
let
count
=
0
,
legendDataNotSelected
=
{},
legendData
=
[],
seriesData
=
[];
pieData
.
forEach
(
(
item
,
i
)
=>
{
if
(
!
pieData
[
i
].
value
)
{
legendDataNotSelected
[
pieData
[
i
].
name
]
=
false
}
legendData
.
push
(
item
.
name
);
seriesData
.
push
({
name
:
item
.
name
,
value
:
item
.
value
});
count
+=
item
.
value
;
})
this
.
legendDataNotSelected
=
legendDataNotSelected
;
this
.
legendData
=
legendData
;
this
.
seriesData
=
seriesData
;
this
.
count
=
count
;
// this.legendData = pieData.map(item => {
// return item.name;
// });
// this.seriesData = pieData.map(item => {
// return { name: item.name, value: item.value };
// });
// let count = 0
// pieData.forEach( item => {
// count += item.value;
// })
// this.count = count;
},
// 绘制图表
drawPie
()
{
let
chartPie
=
vm
.
$echarts
.
init
(
document
.
getElementById
(
vm
.
pieId
));
let
options
=
{
color
:
echartColors
,
//
color: echartColors,
title
:
{
text
:
"总人数: "
+
vm
.
count
,
top
:
'10%'
,
...
...
@@ -118,6 +133,7 @@ export default {
top: '20%',
left: "
60
%
",
bottom: 20,
selected: this.legendDataNotSelected,
data: vm.legendData, // ["
优秀证书
", "
及格证书
", "
未获证
"],
textStyle: {
fontSize: 12,
...
...
@@ -159,7 +175,7 @@ export default {
let item = this.dataList.find(item => {
return item.name === name;
});
return (item && item.value) ||
""
;
return (item && item.value) ||
0
;
}
}
};
...
...
components/bussiness/charts/chart-pie.vue
浏览文件 @
d4ce4531
...
...
@@ -45,6 +45,7 @@ export default {
return
{
chartHeight
:
"1000px"
,
handledData
:
{},
legendDataNotSelected
:
{},
legendData
:
[],
seriesData
:
{},
isShow
:
true
...
...
@@ -78,12 +79,23 @@ export default {
},
methods
:
{
handlePieData
(
pieData
)
{
this
.
legendData
=
pieData
.
map
(
item
=>
{
return
item
.
certName
})
this
.
seriesData
=
pieData
.
map
(
item
=>
{
return
{
name
:
item
.
certName
,
value
:
item
.
doneCount
}
let
legendDataNotSelected
=
{},
legendData
=
[],
seriesData
=
[];
pieData
.
forEach
(
(
item
,
i
)
=>
{
if
(
!
pieData
[
i
].
doneCount
)
{
legendDataNotSelected
[
pieData
[
i
].
certName
]
=
false
}
legendData
.
push
(
item
.
certName
);
seriesData
.
push
({
name
:
item
.
certName
,
value
:
item
.
doneCount
});
})
this
.
legendDataNotSelected
=
legendDataNotSelected
;
this
.
legendData
=
legendData
;
this
.
seriesData
=
seriesData
;
// this.legendData = pieData.map( item => {
// return item.certName
// })
// this.seriesData = pieData.map( item => {
// return { name: item.certName, value: item.doneCount}
// })
},
// 绘制图表
drawPie
()
{
...
...
@@ -91,7 +103,7 @@ export default {
chartPie
=
vm
.
$echarts
.
init
(
document
.
getElementById
(
vm
.
id
));
}
options
=
{
color
:
echartColors
,
//
color: echartColors,
tooltip
:
{
trigger
:
"item"
,
// formatter: "{a}
<
br
/>
{
b
}
:
{
c
}
({
d
}
%
)
"
...
...
@@ -102,9 +114,10 @@ export default {
type: "
scroll
",
orient: "
vertical
",
// orient:'horizontal',
top: '
30
%',
top: '
25
%',
left: '60%',
bottom: 20,
selected: this.legendDataNotSelected,
data: vm.legendData, // ["
优秀证书
", "
及格证书
", "
未获证
"],
textStyle: {
fontSize: 12,
...
...
@@ -145,7 +158,7 @@ export default {
let item = this.pieData.find(item => {
return item.certName === name;
});
return (item && item.doneCount) ||
""
;
return (item && item.doneCount) ||
0
;
}
}
};
...
...
components/bussiness/course-times-list.vue
浏览文件 @
d4ce4531
...
...
@@ -6,17 +6,22 @@
<li>
课程时长
</li>
<li>
人均学习时长
</li>
</ul>
<ul
class=
"list"
>
<ul
v-if=
"dataList.length"
class=
"list"
>
<li
v-for=
"(item, index) in dataList"
:key=
"index"
>
<span>
{{
item
.
courseName
|
shortName
}}
</span>
<span>
{{
item
.
courseTime
|
convert
}}
</span>
<span>
{{
item
.
averageTime
|
convert
}}
</span>
</li>
</ul>
<NoContent
v-show=
"!dataList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
NoContent
},
props
:
{
dataList
:
{
type
:
Array
,
...
...
components/bussiness/exam-list.vue
浏览文件 @
d4ce4531
...
...
@@ -5,16 +5,21 @@
<li>
考试名
</li>
<li>
参与通过率
</li>
</ul>
<ul
class=
"list"
>
<ul
v-if=
"dataList.length"
class=
"list"
>
<li
v-for=
"(item, index) in dataList"
:key=
"index"
>
<span>
{{
item
.
examName
|
shortName
}}
</span>
<span>
{{
(
item
.
joinRate
*
100
).
toFixed
(
1
)
}}
%
</span>
</li>
</ul>
<NoContent
v-show=
"!dataList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
NoContent
},
props
:
{
dataList
:
{
type
:
Array
,
...
...
components/bussiness/exam-score-list.vue
浏览文件 @
d4ce4531
...
...
@@ -6,19 +6,22 @@
<li>
考试分数(分)
</li>
<li>
考试人数(个)
</li>
</ul>
<ul
class=
"list"
>
<ul
v-if=
"dataList.length"
class=
"list"
>
<li
v-for=
"(item, index) in dataList"
:key=
"index"
>
<span>
{{
item
.
timesStr
}}
</span>
<span>
{{
item
.
count
}}
</span>
</li>
</ul>
<NoContent
v-show=
"!dataList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
TipsInfo
from
'@/components/bussiness/tips-info'
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
TipsInfo
TipsInfo
,
NoContent
},
props
:
{
dataList
:
{
...
...
components/bussiness/exam-times-list.vue
浏览文件 @
d4ce4531
...
...
@@ -6,19 +6,22 @@
<li>
考试次数(次)
</li>
<li>
考试人数(个)
</li>
</ul>
<ul
class=
"list"
>
<ul
v-if=
"dataList.length"
class=
"list"
>
<li
v-for=
"(item, index) in dataList"
:key=
"index"
>
<span>
{{
item
.
times
}}
</span>
<span>
{{
item
.
count
}}
</span>
</li>
</ul>
<NoContent
v-show=
"!dataList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
TipsInfo
from
'@/components/bussiness/tips-info'
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
TipsInfo
TipsInfo
,
NoContent
},
props
:
{
dataList
:
{
...
...
components/bussiness/ranking-item-days.vue
浏览文件 @
d4ce4531
<!-- 完成天数排名组件 -->
<
template
>
<ul
class=
"rank-item-days"
>
<li
v-for=
"(item, index) in rankList"
:key=
"index"
>
<div
class=
"order"
>
<img
v-if=
"index === 0 || index === 1 || index === 2"
:src=
"getRankImgUrl(index)"
alt=
""
>
<span
v-else
>
{{
index
+
1
}}
</span>
</div>
<div
class=
"content"
>
<p
class=
"desc-3"
>
{{
item
.
subName
|
shortName
}}
</p>
<!--
<p
class=
"desc-2"
>
完成人数 8860 | 参与人数 101
</p>
-->
</div>
<div
class=
"ratio"
>
<p
class=
"desc-1"
>
{{
(
item
.
costTime
||
0
).
toFixed
(
1
)
}}
天
</p>
<p
class=
"desc-2"
>
完成天数
</p>
</div>
</li>
</ul>
<div>
<ul
v-if=
"rankList.length"
class=
"rank-item-days"
>
<li
v-for=
"(item, index) in rankList"
:key=
"index"
>
<div
class=
"order"
>
<img
v-if=
"index === 0 || index === 1 || index === 2"
:src=
"getRankImgUrl(index)"
alt=
""
>
<span
v-else
>
{{
index
+
1
}}
</span>
</div>
<div
class=
"content"
>
<p
class=
"desc-3"
>
{{
item
.
subName
|
shortName
}}
</p>
<!--
<p
class=
"desc-2"
>
完成人数 8860 | 参与人数 101
</p>
-->
</div>
<div
class=
"ratio"
>
<p
class=
"desc-1"
>
{{
(
item
.
costTime
||
0
).
toFixed
(
1
)
}}
天
</p>
<p
class=
"desc-2"
>
完成天数
</p>
</div>
</li>
</ul>
<NoContent
v-show=
"!rankList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
NoContent
},
props
:
{
rankList
:
{
type
:
Array
,
...
...
components/bussiness/ranking-item.vue
浏览文件 @
d4ce4531
<!-- 培训情况排名组件 -->
<
template
>
<div>
<ul
class=
"rank-item"
>
<ul
v-if=
"rankList.length"
class=
"rank-item"
>
<li
v-for=
"(item, index) in rankList"
:key=
"index"
>
<div
class=
"order"
>
<img
v-if=
"index === 0 || index === 1 || index === 2"
:src=
"getRankImgUrl(index)"
alt
/>
...
...
@@ -17,10 +17,15 @@
</div>
</li>
</ul>
<NoContent
v-if=
"!rankList.length"
></NoContent>
</div>
</
template
>
<
script
>
import
NoContent
from
"@/components/bussiness/no-content"
;
export
default
{
components
:
{
NoContent
},
props
:
{
rankList
:
{
type
:
Array
,
...
...
pages/index.vue
浏览文件 @
d4ce4531
<
template
>
<section
class=
"container"
>
<CommonHeader
:title=
"projectInfo.projectName | shortName"
></CommonHeader>
<CommonAreaSelect
v-show=
"!isScroll"
@
areaClick=
"areaTabClick"
@
orgClick=
"orgTabClick"
:areaName=
"areaName"
:orgName=
"orgName"
:showArea=
"isShowArea"
:showOrg=
"isShowOrg"
>
</CommonAreaSelect>
<CommonTaps
:needFixed=
"isScroll"
:projectInfo=
"projectInfo"
@
tabClicked=
"tabClicked"
></CommonTaps>
<!-- 总体概况 -->
<div
v-show=
"isScroll"
class=
"pd-top-60"
></div>
<article
v-show=
"cIndex === 0"
>
<CommonSwiperItem
:isSingleOrg=
"isSingleOrg"
:percentData=
"allData.percentData ||
{}"
:certFlag="projectInfo.certFlag"
@tipsClick="tipsSwiperClick"
>
</CommonSwiperItem>
<div
v-show=
"!isSingleOrg"
>
<CommonTitle
v-if=
"projectInfo.certFlag"
title=
"证书分布情况"
></CommonTitle>
<ChartPie
v-if=
"projectInfo.certFlag"
:certFlag=
"projectInfo.certFlag"
id=
"certPieId2"
:pieData=
"(allData && allData.certData)"
></ChartPie>
<CommonTitle
v-if=
"projectInfo.certFlag"
title=
"证书级别按学历分布情况"
></CommonTitle>
<ChartColumnStack
v-if=
"projectInfo.certFlag"
:certFlag=
"projectInfo.certFlag"
:echartsData=
"echartsData"
></ChartColumnStack>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"项目情况排名"
></CommonTitle>
<RankingList
:certFlag=
"projectInfo.certFlag"
:rankList=
"studyRankList.slice(0, 5)"
></RankingList>
<ShowAll
v-show=
"studyRankList.length > 5"
@
action=
"gotoPage('/rankedu', true)"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
<CommonTitleWithWhat
@
tipsClick=
"tipsRankingItemClick"
title=
"完成天数排名"
></CommonTitleWithWhat>
<RankingItemDays
:rankList=
"costRankList.slice(0, 5)"
></RankingItemDays>
<ShowAll
v-show=
"costRankList.length > 5"
@
action=
"gotoPage('/rankdays')"
></ShowAll>
</div>
<div
v-show=
"isSingleOrg"
>
<CommonTitle
title=
"培训机构情况"
></CommonTitle>
<OrgDoctorList
@
orgDoctorTabChange=
"orgDoctorTabChange"
:certUserList=
"orgDoctorTabData.certUserList"
:noCertUserList=
"orgDoctorTabData.noCertUserList"
:noJoinList=
"orgDoctorTabData.noJoinList"
:certFlag=
"projectInfo.certFlag"
:containOfficialFlag=
"projectInfo.containOfficialFlag"
></OrgDoctorList>
</div>
<CommonBottomInfo></CommonBottomInfo>
</article>
<!-- 人群分析 -->
<article
v-show=
"cIndex === 1"
>
<CommonTitleWithBtn
title=
"人员学历情况"
@
btnClick=
"analysisEduClick"
></CommonTitleWithBtn>
<ChartPieEdu
:dataList=
"analysisEduData"
></ChartPieEdu>
<section
class=
"container"
>
<CommonHeader
:title=
"projectInfo.projectName | shortName"
></CommonHeader>
<CommonAreaSelect
v-show=
"!isScroll"
@
areaClick=
"areaTabClick"
@
orgClick=
"orgTabClick"
:areaName=
"areaName"
:orgName=
"orgName"
:showArea=
"isShowArea"
:showOrg=
"isShowOrg"
>
</CommonAreaSelect>
<CommonTaps
:needFixed=
"isScroll"
:projectInfo=
"projectInfo"
@
tabClicked=
"tabClicked"
></CommonTaps>
<!-- 总体概况 -->
<div
v-show=
"isScroll"
class=
"pd-top-60"
></div>
<article
v-show=
"cIndex === 0"
>
<CommonSwiperItem
:isSingleOrg=
"isSingleOrg"
:percentData=
"allData.percentData ||
{}" :certFlag="projectInfo.certFlag" @tipsClick="tipsSwiperClick">
</CommonSwiperItem>
<div
v-show=
"!isSingleOrg"
>
<CommonTitle
v-if=
"projectInfo.certFlag"
title=
"证书分布情况"
></CommonTitle>
<ChartPie
v-if=
"projectInfo.certFlag"
:certFlag=
"projectInfo.certFlag"
id=
"certPieId2"
:pieData=
"(allData && allData.certData)"
></ChartPie>
<CommonTitle
v-if=
"projectInfo.certFlag"
title=
"证书级别按学历分布情况"
></CommonTitle>
<ChartColumnStack
v-if=
"projectInfo.certFlag"
:certFlag=
"projectInfo.certFlag"
:echartsData=
"echartsData"
></ChartColumnStack>
<CommonSplitLine></CommonSplitLine>
<CommonTitleWithBtn
title=
"人员职称情况"
@
btnClick=
"analysisTitleClick"
></CommonTitleWithBtn>
<ChartPieTitle
:dataList=
"analysisTitleData"
></ChartPieTitle>
<CommonBottomInfo></CommonBottomInfo>
</article>
<!-- 课程分析 -->
<article
ref=
"courseAnalysitRef"
v-show=
"(cIndex === 2) && (projectInfo.existCourse == 1)"
style=
"padding-top: 8px;"
>
<CourseTimesStat
:totalSize=
"courseInfo.totalSize"
:maxDuration=
"courseInfo.pCourseTotalTime"
:avgDuration=
"courseInfo.pCourseAvg"
:processDataObj=
"processDataObj"
></CourseTimesStat>
<CommonTitle
title=
"项目情况排名"
></CommonTitle>
<RankingList
:certFlag=
"projectInfo.certFlag"
:rankList=
"studyRankList.slice(0, 5)"
></RankingList>
<ShowAll
v-show=
"studyRankList.length > 5"
@
action=
"gotoPage('/rankedu', true)"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"课程列表"
></CommonTitle>
<CourseTimesList
:dataList=
"courseInfo.pCourseList"
></CourseTimesList>
<CommonBottomInfo
:class=
"
{'fixed-bottom-info': needFixedBottomInfo}">
</CommonBottomInfo>
</article>
<!-- 考试分析 -->
<article
v-show=
"(cIndex === 3) && (projectInfo.existExam == 1)"
>
<CommonCard
:cardList=
"examCardList"
></CommonCard>
<CommonTitleWithWhat
@
tipsClick=
"tipsRankingItemClick"
title=
"完成天数排名"
></CommonTitleWithWhat>
<RankingItemDays
:rankList=
"costRankList.slice(0, 5)"
></RankingItemDays>
<ShowAll
v-show=
"costRankList.length > 5"
@
action=
"gotoPage('/rankdays')"
></ShowAll>
</div>
<div
v-show=
"isSingleOrg"
>
<CommonTitle
title=
"培训机构情况"
></CommonTitle>
<OrgDoctorList
@
orgDoctorTabChange=
"orgDoctorTabChange"
:certUserList=
"orgDoctorTabData.certUserList"
:noCertUserList=
"orgDoctorTabData.noCertUserList"
:noJoinList=
"orgDoctorTabData.noJoinList"
:certFlag=
"projectInfo.certFlag"
:containOfficialFlag=
"projectInfo.containOfficialFlag"
></OrgDoctorList>
</div>
<CommonBottomInfo></CommonBottomInfo>
</article>
<!-- 人群分析 -->
<article
v-show=
"cIndex === 1"
>
<CommonTitleWithBtn
title=
"人员学历情况"
@
btnClick=
"analysisEduClick"
></CommonTitleWithBtn>
<ChartPieEdu
:dataList=
"analysisEduData"
></ChartPieEdu>
<CommonSplitLine></CommonSplitLine>
<CommonTitleWithBtn
title=
"人员职称情况"
@
btnClick=
"analysisTitleClick"
></CommonTitleWithBtn>
<ChartPieTitle
:dataList=
"analysisTitleData"
></ChartPieTitle>
<CommonBottomInfo></CommonBottomInfo>
</article>
<!-- 课程分析 -->
<article
ref=
"courseAnalysitRef"
v-show=
"(cIndex === 2) && (projectInfo.existCourse == 1)"
style=
"padding-top: 8px;"
>
<CourseTimesStat
:totalSize=
"courseInfo.totalSize"
:maxDuration=
"courseInfo.pCourseTotalTime"
:avgDuration=
"courseInfo.pCourseAvg"
:processDataObj=
"processDataObj"
></CourseTimesStat>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"课程列表"
></CommonTitle>
<CourseTimesList
:dataList=
"courseInfo.pCourseList"
></CourseTimesList>
<CommonBottomInfo
:class=
"
{'fixed-bottom-info': needFixedBottomInfo}">
</CommonBottomInfo>
</article>
<!-- 考试分析 -->
<article
v-show=
"(cIndex === 3) && (projectInfo.existExam == 1)"
>
<CommonCard
:cardList=
"examCardList"
></CommonCard>
<CommonSplitLine></CommonSplitLine>
<div
v-if=
"projectInfo.containOfficialFlag"
>
<CommonTitle
title=
"完成项目考试次数情况"
></CommonTitle>
<ChartColumnVerticalTimes
:dataList=
"(generalExamData.examTimesList || []).slice(0, 5)"
id=
"chartCourseTimesId"
:colors=
"colors"
></ChartColumnVerticalTimes>
<!--
<ShowAll
v-show=
"generalExamData.examTimesList.length"
@
action=
"gotoPage('/examtimes')"
class=
"mt-10"
></ShowAll>
-->
<ShowAll
v-show=
"generalExamData && generalExamData.examTimesList.length > 5"
@
action=
"gotoPage('/examtimes')"
class=
"mt-10"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
<div
v-if=
"projectInfo.containOfficialFlag"
>
<CommonTitle
title=
"完成项目考试次数情况"
></CommonTitle>
<ChartColumnVerticalTimes
:dataList=
"(generalExamData.examTimesList || []).slice(0, 5)"
id=
"chartCourseTimesId"
:colors=
"colors"
></ChartColumnVerticalTimes>
<!--
<ShowAll
v-show=
"generalExamData.examTimesList.length"
@
action=
"gotoPage('/examtimes')"
class=
"mt-10"
></ShowAll>
-->
<ShowAll
v-show=
"generalExamData && generalExamData.examTimesList.length > 5"
@
action=
"gotoPage('/examtimes')"
class=
"mt-10"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"完成项目考试分数情况"
></CommonTitle>
<ChartColumnVerticalScore
id=
"chartCourseScoreId"
:dataList=
"generalExamData.examScoreList"
></ChartColumnVerticalScore>
<ShowAll
v-show=
"generalExamData.examScoreList & generalExamData.examScoreList.length > 5"
@
action=
"gotoPage('/examscore')"
class=
"mt-10"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
</div>
<CommonTitle
title=
"考试列表"
></CommonTitle>
<ExamList
:dataList=
"examInfoList"
></ExamList>
<CommonBottomInfo
:class=
"
{'fixed-bottom-info': !projectInfo.containOfficialFlag
&&
examInfoList.length
<
4
}"
></CommonBottomInfo>
</article>
<!-- 学习效果分析 -->
<article
v-show=
"(cIndex === 4) && (projectInfo.existEffect == 1)"
>
<CommonCard
:needBG=
"needBG"
:cardList=
"effectCardList"
></CommonCard>
<CommonTitle
title=
"完成项目考试分数情况"
></CommonTitle>
<ChartColumnVerticalScore
id=
"chartCourseScoreId"
:dataList=
"(generalExamData.examScoreList || []).slice(0, 5)"
></ChartColumnVerticalScore>
<ShowAll
v-show=
"generalExamData.examScoreList && generalExamData.examScoreList.length > 5"
@
action=
"gotoPage('/examscore')"
class=
"mt-10"
></ShowAll>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"不同学历培训前后正确率对比"
></CommonTitle>
<ChartColumnVerticalTC
:dataList=
"studyEffect.educationEffectList || []"
id=
"chartColumnVerticalTC"
></ChartColumnVerticalTC>
<CommonSplitLine
style=
"margin-top: 10px;"
></CommonSplitLine>
<CommonTitle
title=
"培训前后知识点掌握情况"
></CommonTitle>
<ChartColumnHorizontalTC
:dataList=
"studyEffect.knowledgeEffectList || []"
id=
"ChartColumnVerticalTC2"
></ChartColumnHorizontalTC>
<ShowAll
v-show=
"studyEffect.knowledgeEffectList && studyEffect.knowledgeEffectList.length > 5"
@
action=
"gotoPage('/klgpoint')"
class=
"mt-10"
></ShowAll>
<CommonBottomInfo></CommonBottomInfo>
</article>
<PicaArea
v-show=
"isShowArea"
@
confirm=
"areaConfirm"
@
cancel=
"areaCancel"
:projectId=
"projectId"
:token=
"token"
></PicaArea>
<PicaOrg
v-show=
"isShowOrg"
@
confirm=
"orgConfirm"
@
cancel=
"orgCancel"
></PicaOrg>
<CommonLoading
v-show=
"false"
></CommonLoading>
<PopTips
:tipsContent=
"tipsContent"
@
clickTips=
"clickTips"
v-show=
"isShowTips"
></PopTips>
</section>
</div>
<CommonTitle
title=
"考试列表"
></CommonTitle>
<ExamList
:dataList=
"examInfoList"
></ExamList>
<CommonBottomInfo
:class=
"
{'fixed-bottom-info': !projectInfo.containOfficialFlag
&&
examInfoList.length
<
4
}"
></CommonBottomInfo>
</article>
<!-- 学习效果分析 -->
<article
v-show=
"(cIndex === 4) && (projectInfo.existEffect == 1)"
>
<CommonCard
:needBG=
"needBG"
:cardList=
"effectCardList"
></CommonCard>
<CommonSplitLine></CommonSplitLine>
<CommonTitle
title=
"不同学历培训前后正确率对比"
></CommonTitle>
<ChartColumnVerticalTC
:dataList=
"studyEffect.educationEffectList || []"
id=
"chartColumnVerticalTC"
></ChartColumnVerticalTC>
<CommonSplitLine
style=
"margin-top: 10px;"
></CommonSplitLine>
<CommonTitle
title=
"培训前后知识点掌握情况"
></CommonTitle>
<ChartColumnHorizontalTC
:dataList=
"(studyEffect.knowledgeEffectList || []).slice(0, 5)"
id=
"ChartColumnVerticalTC2"
></ChartColumnHorizontalTC>
<ShowAll
v-show=
"studyEffect.knowledgeEffectList && studyEffect.knowledgeEffectList.length > 5"
@
action=
"gotoPage('/klgpoint')"
class=
"mt-10"
></ShowAll>
<CommonBottomInfo></CommonBottomInfo>
</article>
<PicaArea
v-show=
"isShowArea"
@
confirm=
"areaConfirm"
@
cancel=
"areaCancel"
:projectId=
"projectId"
:token=
"token"
></PicaArea>
<PicaOrg
v-show=
"isShowOrg"
@
confirm=
"orgConfirm"
@
cancel=
"orgCancel"
></PicaOrg>
<CommonLoading
v-show=
"false"
></CommonLoading>
<PopTips
:tipsContent=
"tipsContent"
@
clickTips=
"clickTips"
v-show=
"isShowTips"
></PopTips>
</section>
</
template
>
<
script
>
const
cookies
=
require
(
"cookie-universal"
)();
import
{
goPageByNative
}
from
"@/utils"
;
import
{
mapGetters
,
mapActions
}
from
"vuex"
;
import
{
goPageByNative
}
from
"@/utils"
;
import
{
mapGetters
,
mapActions
}
from
"vuex"
;
import
{
getProvinceList
,
getUserAnalysis
,
...
...
@@ -160,7 +140,9 @@ import OrgDoctorList from "@/components/bussiness/org-doctor-list";
import
ExamList
from
"@/components/bussiness/exam-list"
;
import
PopTips
from
"@/components/bussiness/pop-tips"
;
import
CommonCard
from
"@/components/common/common-card"
;
import
{
getGeneralData
}
from
"@/service/index"
;
import
{
getGeneralData
}
from
"@/service/index"
;
let
timeOutId
=
null
;
export
default
{
components
:
{
...
...
@@ -209,8 +191,7 @@ export default {
cIndex
:
0
,
colors
:
[
"#39AF9A"
,
"#FF9A4B"
,
"#abb7bb"
,
"#76d2d2"
],
needBG
:
true
,
effectCardList
:
[
{
effectCardList
:
[{
count
:
65
,
unitName
:
"%"
,
description
:
"培训前正确率"
...
...
@@ -225,8 +206,7 @@ export default {
studyRankList
:
[],
costRankList
:
[],
projectId
:
""
,
token
:
"2DEF4802111943C49A98A1429095A876"
||
token
:
"2DEF4802111943C49A98A1429095A876"
||
"79A005DB585C45C389ED1DD0C76E3633"
||
"A220943B006347799F277CC524EBB662"
,
isOrgStat
:
false
,
...
...
@@ -253,8 +233,14 @@ export default {
},
echartsData
:
null
,
analysisData
:
{
eduList
:
{
join
:
[],
finish
:
[]},
titleList
:
{
join
:
[],
finish
:
[]},
eduList
:
{
join
:
[],
finish
:
[]
},
titleList
:
{
join
:
[],
finish
:
[]
},
},
analysisEduData
:
[],
analysisTitleData
:
[],
...
...
@@ -338,7 +324,7 @@ export default {
this
.
setProjectId
(
this
.
projectId
);
}
else
{
this
.
getUserInfo
();
}
}
}
// this.$store.dispatch('searchHospital', { name: '测试' });
},
...
...
@@ -366,16 +352,16 @@ export default {
);
},
methods
:
{
handleScroll
()
{
var
scrollTop
=
window
.
pageYOffset
||
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
;
if
(
scrollTop
>
5
)
{
this
.
isScroll
=
true
;
}
else
{
this
.
isScroll
=
false
;
}
handleScroll
()
{
var
scrollTop
=
window
.
pageYOffset
||
document
.
documentElement
.
scrollTop
||
document
.
body
.
scrollTop
;
if
(
scrollTop
>
5
)
{
this
.
isScroll
=
true
;
}
else
{
this
.
isScroll
=
false
;
}
},
// 获取可区域高度
...
...
@@ -398,11 +384,13 @@ export default {
// 查询用户信息和权限
getProjectInfo
(
params
)
{
getProjectInfo
({
projectId
:
this
.
projectId
}).
then
(
res
=>
{
getProjectInfo
({
projectId
:
this
.
projectId
}).
then
(
res
=>
{
if
(
res
.
code
===
"000000"
)
{
this
.
projectInfo
=
res
.
data
;
getProvinceList
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
"000000"
)
{
if
(
res
.
code
===
"000000"
)
{
this
.
queryGDParams
.
regionId
=
(
res
.
data
&&
res
.
data
.
list
[
0
]
&&
res
.
data
.
list
[
0
].
id
)
||
''
;
this
.
CNTParams
.
regionId
=
(
res
.
data
&&
res
.
data
.
list
[
0
]
&&
res
.
data
.
list
[
0
].
id
)
||
''
;
this
.
setProvinceList
((
res
.
data
&&
res
.
data
.
list
)
||
[]);
...
...
@@ -478,7 +466,7 @@ export default {
if
(
res
.
code
===
"000000"
)
{
this
.
analysisData
=
res
.
data
;
this
.
analysisEduData
=
res
.
data
.
eduList
.
join
;
this
.
analysisTitleData
=
res
.
data
.
titleList
.
join
;
this
.
analysisTitleData
=
res
.
data
.
titleList
.
join
;
}
});
},
...
...
@@ -488,11 +476,11 @@ export default {
// 上面三个图标数据
getGeneralExam
(
queryData
).
then
(
res
=>
{
if
(
res
.
code
===
"000000"
)
{
debugger
this
.
generalExamData
=
res
.
data
;
this
.
setExamTimesList
(
res
.
data
.
examTimesList
)
this
.
setExamScoreList
(
res
.
data
.
examScoreList
)
this
.
examCardList
=
[
{
this
.
examCardList
=
[{
count
:
res
.
data
.
afterExamCount
,
unitName
:
"门"
,
description
:
"正式考试数"
...
...
@@ -532,7 +520,7 @@ export default {
let
viewportHeight
=
this
.
getViewportHeight
();
let
courseLength
=
res
.
data
.
pCourseList
.
length
;
// 上面的高度 468 每一条数据的高度 60
if
(
viewportHeight
>
(
468
+
(
courseLength
-
1
)
*
60
))
{
if
(
viewportHeight
>
(
468
+
(
courseLength
-
1
)
*
60
))
{
this
.
needFixedBottomInfo
=
true
;
}
}
...
...
@@ -569,7 +557,7 @@ export default {
this
.
getHospitalsCNT
(
this
.
CNTParams
);
this
.
isShowArea
=
false
;
this
.
setAreaDegree
(
selData
.
areaDegree
);
if
(
selData
.
townName
||
selData
.
countyName
||
selData
.
cityName
||
selData
.
provinceName
)
{
if
(
selData
.
townName
||
selData
.
countyName
||
selData
.
cityName
||
selData
.
provinceName
)
{
this
.
areaName
=
this
.
shortName
(
selData
.
townName
||
selData
.
countyName
||
selData
.
cityName
||
selData
.
provinceName
,
6
)
}
},
...
...
@@ -595,7 +583,7 @@ export default {
this
.
isShowOrg
=
false
;
this
.
orgName
=
this
.
shortName
(
hospitalNames
[
0
]
||
'全部机构'
,
6
);
this
.
queryGDParams
.
hospitalIdList
=
hospitalIds
;
if
(
hospitalIds
.
length
==
0
)
{
if
(
hospitalIds
.
length
==
0
)
{
this
.
getHospitalsCNT
(
this
.
CNTParams
);
return
;
}
...
...
@@ -620,7 +608,7 @@ export default {
// 弹出选择区域控件
areaTabClick
()
{
if
(
this
.
isShowOrg
)
{
if
(
this
.
isShowOrg
)
{
this
.
isShowOrg
=
false
;
}
this
.
isShowArea
=
!
this
.
isShowArea
;
...
...
@@ -628,22 +616,22 @@ export default {
// 弹出选择机构控件
orgTabClick
()
{
if
(
this
.
areaDegree
!==
3
&&
this
.
areaDegree
!==
4
)
{
if
(
this
.
areaDegree
!==
3
&&
this
.
areaDegree
!==
4
)
{
this
.
$toast
(
'选择区/县后才可选择机构'
);
return
;
}
if
(
this
.
orgList
.
length
===
0
)
{
if
(
this
.
orgList
.
length
===
0
)
{
this
.
$toast
(
'此区域下无机构'
);
return
;
}
this
.
isShowOrg
=
!
this
.
isShowOrg
;
},
// 通用跳转页面
gotoPage
(
subUrl
,
hasCert
)
{
let
subUrlAndParams
=
`
${
subUrl
}
?token=
${
this
.
token
}
&projectId=
${
this
.
queryGDParams
.
projectId
}
®ionId=
${
this
.
queryGDParams
.
regionId
}
&hospitalIdList=
${
this
.
queryGDParams
.
hospitalIdList
.
join
(
','
)}
`
if
(
hasCert
)
{
if
(
hasCert
)
{
subUrlAndParams
+=
`&certFlag=
${
this
.
projectInfo
.
certFlag
}
`
}
if
(
this
.
$rocNative
.
isWeb
)
{
...
...
@@ -657,7 +645,7 @@ export default {
// 人员学历情况切换按钮
analysisEduClick
(
index
)
{
this
.
analysisEduData
=
this
.
analysisData
.
eduList
[
index
?
"finish"
:
"join"
index
?
"finish"
:
"join"
]
||
[];
this
.
$forceUpdate
();
},
...
...
@@ -674,7 +662,7 @@ export default {
getUserInfo
()
{
this
.
$rocNative
.
getUserInfo
&&
this
.
$rocNative
.
getUserInfo
().
then
(
params
=>
{
this
.
token
=
params
.
userToken
;
// 测试用时注释掉
this
.
token
=
params
.
userToken
;
// 测试用时注释掉
// cookies.remove("token");
cookies
.
set
(
"lreporttoken"
,
this
.
token
);
this
.
setUserToken
(
this
.
token
);
...
...
@@ -727,24 +715,30 @@ export default {
.container {
margin: 0 auto;
font-size: 17px;
h1 {
font-size: 36px;
text-align: center;
}
.m1 {
width: 100%;
> div {
>div {
width: 100%;
}
}
.mt-10 {
margin-top: 0;
}
.fixed-bottom-info {
position: fixed;
bottom: 0;
left: 0;
}
.pd-top-60 {
padding-top: 40px;
}
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录