提交 20ba6fdd 编写于 作者: zhentian.jia's avatar zhentian.jia

课程、考试跳转人员

上级 bdc6e2fd
......@@ -342,5 +342,14 @@ const vueFilter = {
return '不及格';
}
},
finishFlagType: (value) => {
if(value == 0) {
return '未参与';
} else if(value == 1) {
return '未完成';
} else if(value == 2) {
return '已完成';
}
},
}
export default vueFilter
\ No newline at end of file
......@@ -313,7 +313,7 @@ export function durationOption(xAxisData, seriesData) {
return option;
}
export function educationEffect(xAxisData, seriesBefore ,seriesAfter) {
export function educationEffect(xAxisData, seriesBefore, seriesAfter) {
let option = {
title: {
text: ""
......@@ -405,7 +405,7 @@ export function educationEffect(xAxisData, seriesBefore ,seriesAfter) {
return option;
}
export function knowledgeEffect(xAxisData, seriesBefore ,seriesAfter) {
export function knowledgeEffect(xAxisData, seriesBefore, seriesAfter) {
let option = {
title: {
text: ""
......@@ -639,3 +639,54 @@ export function examScore(xAxisData, seriesData) {
};
return option;
}
export function ringOption(num , color) {
let option = {
title: {
text: num+'%',
x: 'center',
y: 'center',
textStyle: {
fontSize: 24,
fontWeight: 'normal',
color: '#000000',
},
subtextStyle: {
color: "#000000",
fontWeight: 'normal'
}
},
series: [{
type: 'pie',
radius: ['100%', '80%'],
// silent: true,
labelLine: {
show: false
},
data: [{
hoverOffset: 1,
value: num,
itemStyle: {
color: color
},
label: {
show: false
}
},
{
markArea: {
silent: true,
},
value: 100 - num,
itemStyle: {
color: '#F0F2F5'
},
label: {
show: false
}
}
]
}]
};
return option;
}
\ No newline at end of file
......@@ -121,7 +121,7 @@ export default {
value: "0分钟"
}
];
cardData[0].value = data.pCourseCount+'门';
cardData[0].value = data.totalSize+'门';
cardData[1].value = data.pCourseTotalTime+"分钟";
cardData[2].value = operationData.getAvgTime(data.pCourseAvg);
vm.cardData = cardData;
......@@ -186,13 +186,12 @@ export default {
);
routerData.tableType = 1;
routerData.courseId = data.courseId;
routerData.ids = operationData.getIds(
vm.formInline,
vm.organizationList,
checkAll
);
routerData.type = operationData.getSearchType(vm.formInline, checkAll);
routerData.beginDate = operationData.setDuringTime(vm.formInline.during, "begin"),
routerData.endDate = operationData.setDuringTime(vm.formInline.during, "end"),
routerData.regionId = vm.formInline.region[vm.formInline.region.length - 1];
routerData.originalFlag = vm.formInline.checked == false ? 0 : 1;
routerData.timeFlag = vm.formInline.timeFlag;
routerData.hospitalIdList = vm.formInline.organization;
// this.$router.push({ path: '/name-list', query: routerData});
let routeData = this.$router.resolve({
......
......@@ -18,7 +18,10 @@
<div class="sex">
<div class="sex-item" v-for="(item , index) in sexData" :key="index">
<!-- <img class="sex-img" v-bind:src="item.src" /> -->
<el-progress class="sex-img" :color="item.color" :stroke-width=12 type="circle" :percentage="item.rate"></el-progress>
<!-- <el-progress class="sex-img" :color="item.color" :stroke-width=12 type="circle" :percentage="item.rate"></el-progress> -->
<div v-if="index == 0" class="sex-img" id="ring0" ref="ring0"></div>
<div v-if="index == 1" class="sex-img" id="ring1" ref="ring1"></div>
<div v-if="index == 2" class="sex-img" id="ring2" ref="ring2"></div>
<p class="sex-num">{{ item.num }}</p>
<p class="sex-type">{{ item.type }}</p>
</div>
......@@ -35,6 +38,7 @@ import { mapGetters } from "vuex";
import { openLoading, closeLoading } from "../../utils/utils";
import * as commonUtil from "../../utils/utils";
import * as operationData from "../../utils/operation";
import * as chartData from "../../utils/learning/chartData";
import echarts from "echarts";
import { setTimeout } from "timers";
let vm = null;
......@@ -56,7 +60,26 @@ export default {
data() {
return {
radio: 0,
sexData: [],
sexData: [
{
color: '#1890FF',
type: "男性",
num: 0,
rate: 0,
},
{
color: '#FB5B52',
type: "女性",
num: 0,
rate: 0,
},
{
color: '#5D7092',
type: "未完善信息",
num: 0,
rate: 0,
}
],
projectId: "",
crowdData: {},
showData: true,
......@@ -171,15 +194,37 @@ export default {
}
];
let sum = 0;
if(sexList.length > 0) {
for(let i = 0 ; i<sexList.length; i++) {
sum += sexList[i].value;
sexData[i].num = sexList[i].value
// sexData[i].num = sexList[i].value;
}
sexData[0].num = sexList[1].value;
sexData[1].num = sexList[2].value;
sexData[2].num = sexList[0].value;
sexData[0].rate = Math.floor(sexList[1].value / sum *10000) / 100;
sexData[1].rate = Math.floor(sexList[2].value / sum *10000) / 100;
sexData[2].rate = Math.floor(sexList[0].value / sum *10000) / 100;
}
sexData[0].rate = Math.floor(sexList[0].value / sum *10000) / 100;
sexData[1].rate = Math.floor(sexList[1].value / sum *10000) / 100;
// console.log('this.$refs.ring0',this.$refs.ring0[0]);
let myChartRing0 = echarts.init(this.$refs.ring0[0]);
let option0 = chartData.ringOption(sexData[0].rate, sexData[0].color);
myChartRing0.setOption(option0);
let myChartRing1 = echarts.init(this.$refs.ring1[0]);
let option1 = chartData.ringOption(sexData[1].rate, sexData[1].color);
myChartRing1.setOption(option1);
let myChartRing2 = echarts.init(this.$refs.ring2[0]);
let option2 = chartData.ringOption(sexData[2].rate, sexData[2].color);
myChartRing2.setOption(option2);
vm.sexData = sexData;
},
educationDivision(data) {
console.log('this.$refs.education',this.$refs.education)
let myChart = echarts.init(this.$refs.education);
let educationList = this.crowdData.eduList;
let legendData = [];
......@@ -303,11 +348,11 @@ export default {
left: 0;
.sex-item {
float: left;
width: 33.33%;
width: 184px;
.sex-img {
margin: 0 auto;
position: relative;
left: 16%;
// left: 16%;
height: 125px;
width: 125px;
}
......
......@@ -274,13 +274,13 @@ export default {
);
routerData.tableType = 2;
routerData.examId = data.examId;
routerData.ids = operationData.getIds(
vm.formInline,
vm.organizationList,
checkAll
);
(routerData.type = operationData.getSearchType(vm.formInline, checkAll)),
(routerData.originalFlag = vm.formInline.checked == false ? 0 : 1);
routerData.beginDate = operationData.setDuringTime(vm.formInline.during, "begin"),
routerData.endDate = operationData.setDuringTime(vm.formInline.during, "end"),
routerData.regionId = vm.formInline.region[vm.formInline.region.length - 1];
routerData.originalFlag = vm.formInline.checked == false ? 0 : 1;
routerData.timeFlag = vm.formInline.timeFlag;
routerData.hospitalIdList = vm.formInline.organization;
// this.$router.push({ path: '/name-list', query: routerData});
let routeData = this.$router.resolve({
......
......@@ -91,7 +91,7 @@
<div class="button-group">
<el-button v-if="roleType == 1 || roleType == 2" type="default" size="small" @click="changeDate">数据修改</el-button>
<!-- <el-button type="default" size="small" @click="update" v-else>修改范围</el-button> -->
<el-button type="default" size="small" :disabled="exportStatus" @click="exportPDF">导出PDF</el-button>
<el-button type="default" size="small" @click="exportPDF">导出PDF</el-button>
<el-button type="default" size="small" :disabled="exportStatus" @click="exportExcel">导出明细</el-button>
</div>
<div class="item-tab"></div>
......@@ -242,13 +242,13 @@ export default {
},
organizationNotice: '选择地区筛选到区才能选择机构',
dialogData: {
region: "",
region: "全部",
// regionData: "",
organization: ""
// organizationData: "",
},
tags: [],
activeName: "zero",
activeName: "second",
organizationNum: 0,
dialogVisible: false,
dialogUpdate: false,
......@@ -331,7 +331,7 @@ export default {
this.formInline.organization = [];
this.tags = [];
setTimeout(function() {
// console.log(vm.$refs["cascaderRegion"].inputValue);
console.log('行政区域改变',vm.$refs["cascaderRegion"].inputValue);
vm.dialogData.region = vm.$refs["cascaderRegion"].inputValue;
// vm.dialogData.regionData = value[value.length-1];
// console.log('vm.dialogData.region',vm.dialogData.region)
......@@ -430,10 +430,10 @@ export default {
vm.GET("stats/region", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
vm.formInline.region[0] = res.data.list[0].id;
vm.optionsRegion = operationData.setRegionOptionNew(
res.data.list
);
vm.formInline.region[0] = res.data.list[0].id;
vm.search();
}
});
......@@ -522,13 +522,6 @@ export default {
}
},
exportExcel() {
if (vm.formInline.region.length == 0) {
const h = this.$createElement;
vm.$message({
message: h('p', { style: 'color: #FF3399' }, '请先选择地区后再进行导出 ')
});
return;
}
//按钮置灰三秒
vm.exportStatus = true;
setTimeout(function() {
......
......@@ -31,8 +31,8 @@
<el-option
v-for="(item,index) in rankList"
:key="index"
:label="item.gradeName"
:value="item.gradeFlag"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
......@@ -46,25 +46,29 @@
</div>
<el-table :data="tableData" class="course-table">
<el-table-column prop="doctorName" label="姓名" align="center"></el-table-column>
<el-table-column prop="sex" label="性别" align="center"></el-table-column>
<el-table-column prop="sex" label="性别" align="center">
<template slot-scope="scope">
<span>{{ scope.row.sex | sexValue}}</span>
</template>
</el-table-column>
<el-table-column prop="age" label="年龄" align="center"></el-table-column>
<el-table-column prop="titleName" label="职称" align="center"></el-table-column>
<el-table-column prop="hospitalName" label="机构" align="center"></el-table-column>
<el-table-column prop="addressName" label="地区" align="center"></el-table-column>
<el-table-column v-if="tableType == 1" prop="learnStatus" label="参与课程状态" align="center">
<el-table-column v-if="tableType == 1" prop="finishFlag" label="参与课程状态" align="center">
<template slot-scope="scope">
<span>{{ scope.row.learnStatus }}</span>
<span>{{ scope.row.finishFlag | finishFlagType }}</span>
</template>
</el-table-column>
<el-table-column
v-if="tableType == 1"
prop="finishedTime"
prop="finishTime"
label="完成培训日期"
align="center"
min-width="150"
>
<template slot-scope="scope">
<span>{{ scope.row.finishedTime }}</span>
<span>{{ scope.row.finishTime }}</span>
</template>
</el-table-column>
<el-table-column
......@@ -102,7 +106,7 @@
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="formData.pageNo"
:page-sizes="[20, 50 ,100]"
:page-sizes="[20, 50 ,100, 200]"
:page-size="formData.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
......@@ -159,14 +163,47 @@ export default {
},
{
value: 1,
label: "参与中"
label: "未完成"
},
{
value: 2,
label: "已完成"
}
],
rankList: [],
rankList: [
{
value: -1,
label: "全部"
},
{
value: 0,
label: "无成绩"
},
{
value: 1,
label: "优秀"
},
{
value: 2,
label: "良好"
},
{
value: 3,
label: "及格"
},
{
value: 4,
label: "不及格"
},
{
value: 5,
label: "通过"
},
{
value: 6,
label: "不通过"
},
],
queryData: {}
};
},
......@@ -200,9 +237,9 @@ export default {
vm.curmbThird = vm.getUrlSearch(window.location.href, "projectName");
vm.jumPathFouth = '/item-list?id=' + vm.queryData.projectId + '&projectName=' + vm.queryData.projectName;
console.log("queryData", vm.queryData);
if(vm.queryData.type == 4) {
vm.getHostital();
}
// if(vm.queryData.hospitalIdList.length > 0) {
// vm.getHostital();
// }
},
searchData() {
vm.formData.pageNo = 1;
......@@ -216,18 +253,22 @@ export default {
// console.log('this.tableType',this.tableType)
let req = {
projectId: query.projectId,
beginDate: query.beginDate,
endDate: query.endDate,
// hospitalIdList: query.hospitalIdList,
hospitalIdList: [],
originalFlag: query.originalFlag,
ids: query.ids,
type: query.type,
regionId: query.regionId,
timeFlag: query.timeFlag,
courseId: query.courseId,
learnFlag: vm.formData.learnFlag,
doctorName: vm.formData.doctorName,
type: vm.formData.learnFlag,
name: vm.formData.doctorName,
pageNo: vm.formData.pageNo,
pageSize: vm.formData.pageSize,
};
console.log("course req", req);
openLoading(vm);
vm.reportGET("report/portalProjectCourse/getUserList", req).then(res => {
vm.POST("stats/report/courseDetail", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
if(res.data.totalCount == 0 ) {
......@@ -242,28 +283,32 @@ export default {
} else if (this.tableType == 2) {
vm.curmbFouth = "考试培训情况";
//考试分析
let reqRank = {
projectId: query.projectId,
}
vm.reportGET("report/portalProjectExam/getGradeList", reqRank).then(res => {
if (res.code == "000000") {
vm.rankList = operationData.initRank(res.data.list);
}
});
// let reqRank = {
// }
// vm.GET("stats/constants/certGrade", reqRank).then(res => {
// if (res.code == "000000") {
// vm.rankList = operationData.initRank(res.data.list);
// }
// });
let req = {
projectId: query.projectId,
beginDate: query.beginDate,
endDate: query.endDate,
// hospitalIdList: query.hospitalIdList,
hospitalIdList: [],
originalFlag: query.originalFlag,
ids: query.ids,
type: query.type,
regionId: query.regionId,
timeFlag: query.timeFlag,
examId: query.examId,
gradeFlag: vm.formData.gradeFlag,
doctorName: vm.formData.doctorName,
pageNo: vm.formData.pageNo,
pageSize: vm.formData.pageSize,
};
console.log("exam req", req);
// console.log("exam req", req);
openLoading(vm);
vm.reportGET("report/portalProjectExam/getUserList", req).then(res => {
vm.POST("stats/report/getUserList", req).then(res => {
closeLoading(vm);
if (res.code == "000000") {
if(res.data.totalCount == 0 ) {
......@@ -275,6 +320,8 @@ export default {
vm.$message(res.message);
}
});
}
},
resetForm() {
......@@ -293,6 +340,7 @@ export default {
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.formData.pageSize = val;
this.formData.pageNo = 1;
this.search();
},
handleCurrentChange(val) {
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册