Quellcode durchsuchen

文档观看统计/文档跳出分析/开课每日访问人数统计/选择课程

canghailong vor 6 Monaten
Ursprung
Commit
eee65498b4

+ 9 - 5
src/api/statisticalAnalysis/analysisTeachingActivities.js

@@ -509,19 +509,23 @@ Mock.mock(/\/api\/webapp\/teaching-analysis\/documents/, 'get', generateDocument
 
 // 导出的API函数
 export const getCourseOptions = (params = {}) => {
-	return request('teaching-analysis/course-options', params, 'get')
+	return request('disk/courseinfo/allList', params, 'get')
 }
-
+// 文档观看统计
 export const getTeachingStats = (params = {}) => {
-	return request('teaching-analysis/stats', params, 'get')
+	return request('teachingActivity/documentStatistic', params, 'get')
+}
+// 文档跳出分析
+export const documentJumpStatistic = (params = {}) => {
+	return request('teachingActivity/documentJumpStatistic', params, 'get')
 }
 
 export const getWeeklyStats = (params = {}) => {
 	return request('teaching-analysis/weekly-stats', params, 'get')
 }
-
+// 开课每日访问人数统计
 export const getDailyVisits = (params = {}) => {
-	return request('teaching-analysis/daily-visits', params, 'get')
+	return request('teachingActivity/courseOpenStatistic', params, 'get')
 }
 
 export const getDiscussionData = (params = {}) => {

+ 26 - 19
src/views/statisticalAnalysis/analysisTeachingActivities/index.vue

@@ -12,19 +12,19 @@
 			<div class="filter-controls">
 				<div class="filter-group">
 					<label>选择课程</label>
-					<a-select v-model:value="filters.courseId" placeholder="全部课程" @change="updateStats" :loading="loading">
-						<a-select-option v-for="option in courseOptions" :key="option.value" :value="option.value">
-							{{ option.label }}
+					<a-select v-model:value="filters.courseId" placeholder="全部课程" @change="updateStats" :loading="loading" allowClear>
+						<a-select-option v-for="option in courseOptions" :key="option.courseId" :value="option.courseId">
+							{{ option.courseName }}
 						</a-select-option>
 					</a-select>
 				</div>
 				<div class="filter-group">
 					<label>时间范围</label>
 					<a-select v-model:value="filters.timeRange" @change="updateStats">
-						<a-select-option :value="7">最近7天</a-select-option>
-						<a-select-option :value="30">最近30天</a-select-option>
-						<a-select-option :value="90">最近90天</a-select-option>
-						<a-select-option :value="365">最近一年</a-select-option>
+						<a-select-option :value="1">最近30天</a-select-option>
+						<a-select-option :value="2">最近90天</a-select-option>
+						<a-select-option :value="3">最近180天</a-select-option>
+						<a-select-option :value="4">最近一年</a-select-option>
 					</a-select>
 				</div>
 				<div class="filter-group">
@@ -37,21 +37,21 @@
 		<div class="stats-grid">
 			<div class="stat-card">
 				<h3>📖 文档观看统计</h3>
-				<div class="stat-number">{{ stats.totalDocViewers.toLocaleString() }}</div>
+				<div class="stat-number">{{ stats.allUserCount }}</div>
 				<div class="stat-label">总观看人数</div>
-				<div class="stat-number">{{ stats.completedDocViewers.toLocaleString() }}</div>
+				<div class="stat-number">{{ stats.alreadyUserCount }}</div>
 				<div class="stat-label">完成观看人数</div>
-				<div class="completion-rate">{{ stats.docCompletionRate }}%</div>
+				<div class="completion-rate">{{ stats.finishRate }}%</div>
 				<div class="stat-label">完成率</div>
 			</div>
 
 			<div class="stat-card">
 				<h3>🚪 文档跳出分析</h3>
-				<div class="stat-number">{{ stats.totalDocExits.toLocaleString() }}</div>
+				<div class="stat-number">{{ stats.allHourCount }}</div>
 				<div class="stat-label">总跳出次数</div>
-				<div class="stat-number">{{ stats.docExitRate }}%</div>
+				<div class="stat-number">{{ stats.allHourCount }}%</div>
 				<div class="stat-label">跳出率</div>
-				<div class="stat-number">{{ stats.avgDocExitTime }}</div>
+				<div class="stat-number">{{ stats.jumpAvgTime }}</div>
 				<div class="stat-label">平均跳出时间</div>
 			</div>
 
@@ -129,6 +129,7 @@
 	import {
 		getCourseOptions,
 		getTeachingStats,
+		documentJumpStatistic,
 		getWeeklyStats,
 		getDailyVisits,
 		getDiscussionData,
@@ -138,7 +139,7 @@
 	// 响应式数据
 	const filters = reactive({
 		courseId: '',
-		timeRange: 30
+		timeRange: 1
 	})
 
 	const stats = reactive({
@@ -429,9 +430,14 @@
 		try {
 			const response = await getTeachingStats({
 				courseId: filters.courseId,
-				timeRange: filters.timeRange
+				type: filters.timeRange
 			})
-			Object.assign(stats, response)
+			const statistic = await documentJumpStatistic({
+				courseId: filters.courseId,
+				type: filters.timeRange
+			})
+
+			Object.assign(stats, response, statistic)
 		} catch (error) {
 			console.error('获取统计数据失败:', error)
 		}
@@ -453,10 +459,11 @@
 	const loadDailyVisits = async () => {
 		try {
 			const response = await getDailyVisits({
-				timeRange: filters.timeRange
+				type: filters.timeRange,
+				courseId:filters.courseId
 			})
-			chartData.dates = response.dates
-			chartData.visits = response.visits
+			chartData.dates = response.map(r=>r.TIME)
+			chartData.visits = response.map(r=>r.num)
 			updateChartData()
 		} catch (error) {
 			console.error('获取每日访问数据失败:', error)