Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/utils/aescbc.js
This commit is contained in:
haozq 2025-02-11 11:15:28 +08:00
commit 59a9cd2f90
6 changed files with 405 additions and 92 deletions

View File

@ -5,7 +5,7 @@ export function getCoursewareTreeTable(query) {
return request({
url: '/exam/coursewareLibrary/getCoursewareTreeTable',
method: 'get',
params: query
params: query,
})
}
@ -14,7 +14,7 @@ export function getCoursewareLibraryTree(query) {
return request({
url: '/exam/coursewareLibrary/getCoursewareLibraryTree',
method: 'get',
params: query
params: query,
})
}
@ -23,7 +23,7 @@ export function addFolder(data) {
return request({
url: '/exam/coursewareLibrary/addFolder',
method: 'post',
data
data,
})
}
@ -32,26 +32,23 @@ export function operFolderOrFile(data) {
return request({
url: '/exam/coursewareLibrary/operFolderOrFile',
method: 'post',
data
data,
})
}
// 上传课件
export function uploadFiles(data) {
console.log("uploadFiles data==="+JSON.stringify(data))
console.log('uploadFiles data===' + JSON.stringify(data))
return request({
url: '/exam/coursewareLibrary/uploadFiles',
method: 'post',
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
// 下载课件
export function downLoadFile(query) {
return request({
@ -67,7 +64,7 @@ export function testQuestLibraryList(query) {
return request({
url: '/exam/testQuestLibrary/list',
method: 'get',
params: query
params: query,
})
}
@ -76,7 +73,7 @@ export function addTestQuest(data) {
return request({
url: '/exam/testQuestLibrary/addTestQuest',
method: 'post',
data
data,
})
}
@ -85,7 +82,7 @@ export function editTestQuest(data) {
return request({
url: '/exam//testQuestLibrary/renameTestQuest',
method: 'post',
data
data,
})
}
@ -94,7 +91,7 @@ export function delTestQuest(data) {
return request({
url: '/exam/testQuestLibrary/delTestQuest',
method: 'post',
data
data,
})
}
@ -103,7 +100,7 @@ export function getQuestionsExamList(query) {
return request({
url: '/exam/testQuestLibrary/getQuestionsExamList',
method: 'get',
params: query
params: query,
})
}
@ -112,7 +109,7 @@ export function getLabels(query) {
return request({
url: '/exam/testQuestLibrary/getLabels',
method: 'get',
params: query
params: query,
})
}
@ -124,7 +121,7 @@ export function addTopic(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
@ -136,7 +133,7 @@ export function editTopic(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
@ -145,7 +142,7 @@ export function delTopic(data) {
return request({
url: '/exam/testQuestLibrary/delTopic',
method: 'post',
data
data,
})
}
@ -154,7 +151,7 @@ export function getTopicDetail(query) {
return request({
url: '/exam/testQuestLibrary/getTopicDetail',
method: 'get',
params: query
params: query,
})
}
@ -163,7 +160,7 @@ export function getQuestionsExamNums(query) {
return request({
url: '/exam/testQuestLibrary/getQuestionsExamNums',
method: 'get',
params: query
params: query,
})
}
@ -172,7 +169,7 @@ export function labelLibraryList(query) {
return request({
url: '/exam/labelLibrary/list',
method: 'get',
params: query
params: query,
})
}
@ -181,7 +178,7 @@ export function addLabel(data) {
return request({
url: '/exam/labelLibrary/addLabel',
method: 'post',
data
data,
})
}
@ -190,7 +187,7 @@ export function editLabel(data) {
return request({
url: '/exam/labelLibrary/renameLabel',
method: 'post',
data
data,
})
}
@ -199,7 +196,7 @@ export function delLabel(data) {
return request({
url: '/exam/labelLibrary/delLabel',
method: 'post',
data
data,
})
}
@ -208,7 +205,7 @@ export function editEnabled(data) {
return request({
url: '/exam/labelLibrary/editEnabled',
method: 'post',
data
data,
})
}
@ -217,7 +214,7 @@ export function practiceTemplateList(query) {
return request({
url: '/exam/practiceTemplate/list',
method: 'get',
params: query
params: query,
})
}
@ -226,7 +223,7 @@ export function addExam(data) {
return request({
url: '/exam/practiceTemplate/addExam',
method: 'post',
data
data,
})
}
@ -235,7 +232,7 @@ export function renameExam(data) {
return request({
url: '/exam/practiceTemplate/renameExam',
method: 'post',
data
data,
})
}
@ -244,7 +241,7 @@ export function delExam(data) {
return request({
url: '/exam/practiceTemplate/delExam',
method: 'post',
data
data,
})
}
@ -253,7 +250,7 @@ export function getQuestionAndLibrary(query) {
return request({
url: '/exam/practiceTemplate/getQuestionAndLibrary',
method: 'get',
params: query
params: query,
})
}
@ -262,7 +259,7 @@ export function extractTestQuestions(data) {
return request({
url: '/exam/practiceTemplate/extractTestQuestions',
method: 'post',
data
data,
})
}
@ -271,7 +268,7 @@ export function getTestQuestions(query) {
return request({
url: '/exam/practiceTemplate/getTestQuestions',
method: 'get',
params: query
params: query,
})
}
@ -280,7 +277,7 @@ export function delTemplateExamQuestion(data) {
return request({
url: '/exam/practiceTemplate/delTemplateExamQuestion',
method: 'post',
data
data,
})
}
@ -289,7 +286,7 @@ export function saveTemplateExamQuestion(data) {
return request({
url: '/exam/practiceTemplate/saveTemplateExamQuestion',
method: 'post',
data
data,
})
}
@ -298,7 +295,7 @@ export function getTestQuestionDetail(query) {
return request({
url: '/exam/practiceTemplate/getTestQuestionDetail',
method: 'get',
params: query
params: query,
})
}
@ -307,7 +304,7 @@ export function examTemplateList(query) {
return request({
url: '/exam/examTemplate/list',
method: 'get',
params: query
params: query,
})
}
@ -316,7 +313,7 @@ export function addExamTemplate(data) {
return request({
url: '/exam/examTemplate/addExam',
method: 'post',
data
data,
})
}
@ -325,7 +322,7 @@ export function renameExamTemplate(data) {
return request({
url: '/exam/examTemplate/renameExam',
method: 'post',
data
data,
})
}
@ -334,7 +331,7 @@ export function delExamTemplate(data) {
return request({
url: '/exam/examTemplate/delExam',
method: 'post',
data
data,
})
}
@ -343,7 +340,7 @@ export function getQuestionAndLibraryExam(query) {
return request({
url: '/exam/examTemplate/getQuestionAndLibrary',
method: 'get',
params: query
params: query,
})
}
@ -352,7 +349,7 @@ export function extractTestQuestionsExam(data) {
return request({
url: '/exam/examTemplate/extractTestQuestions',
method: 'post',
data
data,
})
}
@ -361,7 +358,7 @@ export function getTestQuestionsExam(query) {
return request({
url: '/exam/examTemplate/getTestQuestions',
method: 'get',
params: query
params: query,
})
}
@ -370,7 +367,7 @@ export function delTemplateExamQuestionExam(data) {
return request({
url: '/exam/examTemplate/delTemplateExamQuestion',
method: 'post',
data
data,
})
}
@ -379,7 +376,7 @@ export function saveTemplateExamQuestionExam(data) {
return request({
url: '/exam/examTemplate/saveTemplateExamQuestion',
method: 'post',
data
data,
})
}
@ -388,7 +385,7 @@ export function getTestQuestionDetailExam(query) {
return request({
url: '/exam/examTemplate/getTestQuestionDetail',
method: 'get',
params: query
params: query,
})
}
@ -397,7 +394,7 @@ export function learningTaskList(query) {
return request({
url: '/exam/learningTask/list',
method: 'get',
params: query
params: query,
})
}
@ -406,7 +403,7 @@ export function getProsSelectByStudyTask(query) {
return request({
url: '/exam/learningTask/getProsSelectByStudyTask',
method: 'get',
params: query
params: query,
})
}
@ -415,7 +412,7 @@ export function getPersonTreeByType(query) {
return request({
url: '/exam/learningTask/getPersonTreeByType',
method: 'get',
params: query
params: query,
})
}
@ -424,7 +421,7 @@ export function getCoursewareTreeTableByTask(query) {
return request({
url: '/exam/learningTask/getCoursewareTreeTable',
method: 'get',
params: query
params: query,
})
}
@ -433,7 +430,7 @@ export function getExamTemplateLists(query) {
return request({
url: '/exam/learningTask/getExamTemplateLists',
method: 'get',
params: query
params: query,
})
}
@ -442,7 +439,7 @@ export function getQuestionAndLibraryByTask(query) {
return request({
url: '/exam/selfBuildExam/getQuestionAndLibrary',
method: 'get',
params: query
params: query,
})
}
@ -451,7 +448,7 @@ export function extractTestQuestionsByTask(data) {
return request({
url: '/exam/selfBuildExam/extractTestQuestions',
method: 'post',
data
data,
})
}
@ -463,7 +460,7 @@ export function addTopicByTask(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
@ -472,7 +469,7 @@ export function saveTemplateExamQuestionByTask(data) {
return request({
url: '/exam/selfBuildExam/saveTemplateExamQuestion',
method: 'post',
data
data,
})
}
@ -484,7 +481,7 @@ export function addStudyTask(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
@ -493,7 +490,7 @@ export function getStudyTaskById(query) {
return request({
url: '/exam/learningTask/getStudyTaskById',
method: 'get',
params: query
params: query,
})
}
@ -505,7 +502,7 @@ export function editStudyTask(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
data
data,
})
}
// 学习任务-学习任务数据详情
@ -513,7 +510,7 @@ export function getStudyTaskDataDetail(query) {
return request({
url: '/exam/learningTask/getStudyTaskDataDetail',
method: 'get',
params: query
params: query,
})
}
// 学习任务数据-培训人员数据
@ -521,7 +518,7 @@ export function getStudyTaskDataList(query) {
return request({
url: '/exam/learningTask/getStudyTaskDataList',
method: 'get',
params: query
params: query,
})
}
@ -530,7 +527,7 @@ export function delStudyTaskById(data) {
return request({
url: '/exam/learningTask/delStudyTaskById',
method: 'post',
data
data,
})
}
@ -539,7 +536,7 @@ export function getTrainingTasksList(query) {
return request({
url: '/exam/trainingTasks/list',
method: 'get',
params: query
params: query,
})
}
// 培训-新增任务
@ -547,7 +544,7 @@ export function addTrainingTask(data) {
return request({
url: '/exam/trainingTasks/addTrainingTask',
method: 'post',
data: data
data: data,
})
}
@ -556,7 +553,7 @@ export function editTrainingTask(data) {
return request({
url: '/exam/trainingTasks/editTrainingTask',
method: 'post',
data: data
data: data,
})
}
@ -565,7 +562,7 @@ export function getTrainingTaskDetail(query) {
return request({
url: '/exam/trainingTasks/getTrainingTaskDetail',
method: 'get',
params: query
params: query,
})
}
@ -574,7 +571,7 @@ export function changeSignStatus(query) {
return request({
url: '/exam/trainingTasks/changeSignStatus',
method: 'post',
data: query
data: query,
})
}
// 培训-删除任务
@ -582,7 +579,7 @@ export function delTrainingTaskById(query) {
return request({
url: '/exam/trainingTasks/delTrainingTaskById',
method: 'post',
data: query
data: query,
})
}
@ -591,7 +588,7 @@ export function selectTrainingDataList(query) {
return request({
url: '/exam/trainingTasks/selectTrainingDataList',
method: 'get',
params: query
params: query,
})
}
@ -604,14 +601,14 @@ export function uploadScenePhoto(data) {
headers: {
'Content-Type': 'multipart/form-data',
},
});
})
}
// 培训 -获取现场照片
export function selectScenePhoto(query) {
return request({
url: '/exam/trainingTasks/selectScenePhoto',
method: 'get',
params: query
params: query,
})
}
// 培训 -获取数据详情表头
@ -619,88 +616,88 @@ export function selectTrainingDataHeader(query) {
return request({
url: '/exam/trainingTasks/selectTrainingDataHeader',
method: 'get',
params: query
params: query,
})
}
export function getTaskUsersByChecked(params){
export function getTaskUsersByChecked(params) {
return request({
url: '/exam/examTask/getTaskUsersByChecked',
method: 'post',
data: params
data: params,
})
}
//考试 -新增
export function addExamTask(data){
export function addExamTask(data) {
return request({
url: '/exam/examTask/addExamTask',
method: 'post',
data: data
data: data,
})
}
//考试 -修改
export function editExamTask(data){
export function editExamTask(data) {
return request({
url: '/exam/examTask/editExamTask',
method: 'post',
data: data
data: data,
})
}
//考试 -列表
export function getExamList(query){
export function getExamList(query) {
return request({
url: '/exam/examTask/list',
method: 'get',
params: query
params: query,
})
}
// 考试 -获取详情
export function getExamTaskById(query){
export function getExamTaskById(query) {
return request({
url: '/exam/examTask/getExamTaskById',
method: 'get',
params: query
params: query,
})
}
// 考试 -删除
export function delExamTask(data){
export function delExamTask(data) {
return request({
url: '/exam/examTask/delExamTask',
method: 'post',
data: data
data: data,
})
}
// 考试 -学员数据列表
export function getTaskUsers(params){
export function getTaskUsers(params) {
return request({
url: '/exam/examTask/getTaskUsers',
method: 'get',
params: params
params: params,
})
}
// 考试 -试题数据列表
export function getExamPaperQuestions(params){
export function getExamPaperQuestions(params) {
return request({
url: '/exam/examTask/getExamPaperQuestions',
method: 'get',
params: params
params: params,
})
}
// 考试 -试题详情
export function getExamPaperDetail(params){
export function getExamPaperDetail(params) {
return request({
url: '/exam/examTask/getExamPaperDetail',
method: 'get',
params: params
params: params,
})
}
export function downLoadCoursewareFile(params){
export function downLoadCoursewareFile(params) {
return request({
url: '/exam/coursewareLibrary/downLoadFile',
method: 'get',
params: params
params: params,
})
}

View File

@ -0,0 +1,18 @@
import request from '@/utils/request'
// 获取统计分析卡片区学习次数接口
export function getTaskStatisticsApi(query) {
return request({
url: '/exam/studentManagement/getTaskStatistics',
method: 'get',
params: query,
})
}
// 获取统计分析折线图数据接口
export function getTaskStatisticsByMonthApi(query) {
return request({
url: '/exam/studentManagement/getTaskStatisticsByMonth',
method: 'get',
params: query,
})
}

View File

@ -0,0 +1,68 @@
<template>
<div style="margin-bottom: 12px">
<el-row type="flex" justify="space-around">
<el-col :span="6" v-for="(item, index) in cardList" :key="index">
<div class="grid-content bg-purple">
<div>
<span>{{ cardData[item.card_num] || 0 }}</span>
<span style="font-size: 14px"></span>
</div>
<div>{{ item.card_title }}</div>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
export default {
data() {
return {
cardList: [
{
card_num: 'studyTaskCount',
card_title: '学习任务',
},
{
card_num: 'examTaskCount',
card_title: '考试任务',
},
{
card_num: 'trainingTaskCount',
card_title: '培训任务',
},
],
}
},
//
props: {
cardData: {
type: Object,
default: () => {},
},
},
}
</script>
<style lang="scss" scoped>
.grid-content {
min-height: 120px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.3);
border-radius: 8px;
& div:first-child span:first-child {
font-size: 20px;
font-weight: bold;
letter-spacing: 2px;
}
& div:last-child {
margin-top: 12px;
}
}
</style>

View File

@ -0,0 +1,156 @@
<template>
<div :style="{ height: height, width: width }" />
</template>
<script>
import * as echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from '@/views/dashboard/mixins/resize.js'
export default {
mixins: [resize],
props: {
width: {
type: String,
default: '100%',
},
height: {
type: String,
default: '500px',
},
autoResize: {
type: Boolean,
default: true,
},
chartData: {
type: Object,
required: true,
default: () => {},
},
},
data() {
return {
chart: null,
}
},
watch: {
chartData: {
deep: true,
handler(val) {
this.setOptions(val)
},
},
},
mounted() {
this.$nextTick(() => {
this.initChart()
})
},
beforeDestroy() {
if (!this.chart) {
return
}
this.chart.dispose()
this.chart = null
},
methods: {
//
initChart() {
this.chart = echarts.init(this.$el, 'macarons')
this.setOptions(this.chartData)
},
//
setOptions({ studyTaskCountByMonth, examTaskCountByMonth, trainingTaskCountByMonth } = null) {
this.chart.setOption({
xAxis: {
data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
boundaryGap: false,
axisTick: {
show: false,
},
},
grid: {
left: 10,
right: 10,
bottom: 40,
top: 30,
containLabel: true,
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
},
padding: [5, 10],
},
yAxis: {
axisTick: {
show: false,
},
},
legend: {
data: ['学习任务', '考试任务', '培训任务'],
},
series: [
{
name: '学习任务',
itemStyle: {
normal: {
color: '#1890ff',
lineStyle: {
color: '#1890ff',
width: 2,
},
},
},
smooth: false,
type: 'line',
data: this.setChartsNum(studyTaskCountByMonth),
animationDuration: 2800,
animationEasing: 'cubicInOut',
},
{
name: '考试任务',
smooth: false,
type: 'line',
itemStyle: {
normal: {
color: '#2fc25b',
lineStyle: {
color: '#2fc25b',
width: 2,
},
},
},
data: this.setChartsNum(examTaskCountByMonth),
animationDuration: 2800,
animationEasing: 'quadraticOut',
},
{
name: '培训任务',
smooth: false,
type: 'line',
itemStyle: {
normal: {
color: '#facc14',
lineStyle: {
color: '#facc14',
width: 2,
},
},
},
data: this.setChartsNum(trainingTaskCountByMonth),
animationDuration: 2800,
animationEasing: 'quadraticOut',
},
],
})
},
//
setChartsNum(data) {
const numList = data ? data.map(e => e.recordCount) : []
return numList
},
},
}
</script>

View File

@ -0,0 +1,73 @@
<template>
<!-- 统计分析 -->
<div class="app-container statistical-container">
<el-form :model="queryParams" ref="queryForm" size="small" inline>
<el-form-item>
<el-date-picker type="year" value-format="yyyy" placeholder="请选择年" v-model="queryParams.years" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
</el-form-item>
</el-form>
<!-- 上方卡片 -->
<CardInfo :cardData="cardData" />
<!-- 图表 -->
<ChartInfo :chartData="chartData" />
</div>
</template>
<script>
import CardInfo from './components/card-info'
import ChartInfo from './components/chart-info'
import { getTaskStatisticsApi, getTaskStatisticsByMonthApi } from '@/api/educationalTraining/statisticalAnalysis.js'
export default {
components: {
CardInfo,
ChartInfo,
},
data() {
return {
queryParams: {
years: new Date().getFullYear() + '',
},
cardData: {}, //
chartData: {}, //
}
},
methods: {
handleQuery() {
this.getTaskStatisticsAndChartData()
},
//
async getTaskStatisticsAndChartData() {
const res = await getTaskStatisticsApi({
year: this.queryParams.years,
})
if (res.code === 200) {
this.cardData = res.data
}
const result = await getTaskStatisticsByMonthApi({ year: this.queryParams.years })
console.log('resultresult', result)
if (result.code === 200) {
this.chartData = result.data
}
},
},
created() {
this.getTaskStatisticsAndChartData()
},
}
</script>
<style lang="scss" scoped>
.statistical-container {
display: flex;
flex-direction: column;
}
</style>

View File

@ -38,9 +38,10 @@ module.exports = {
// target: `http://localhost:18080`,
// target: 'http://192.168.0.176:18080',
// target: 'http://192.168.0.58:19090', // 杰
target: 'http://192.168.0.14:18080', // 测试环境
// target: 'http://192.168.0.14:18080', // 测试环境
// target: 'http://218.21.27.6:1999/prod-api', // 生产环境
// target: 'http://192.168.0.38:18080', // 郝
// target: 'http://192.168.0.38:18080', // 郝志权
target: 'http://192.168.2.122:18080', // 梁超
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '',