dedsudiyu 1 day ago
parent
commit
301248fb26

+ 16 - 0
pages_safetyEducationExamination/api/index.js

@@ -260,4 +260,20 @@ export const examElUserExamAttemptAttemptRecord = (data) => {
 		method: 'POST',
 		method: 'POST',
 		data: { ...data }
 		data: { ...data }
 	})
 	})
+};
+//在线考试-详情
+export const examUserExamDetail = (data) => {
+	return apiResquest({
+		url: `/exam/user/exam/detail`,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+//模拟考试-详情
+export const examUserExamMockDetail = (data) => {
+	return apiResquest({
+		url: `/exam/user/exam/mockDetail`,
+		method: 'POST',
+		data: { ...data }
+	})
 };
 };

+ 19 - 19
pages_safetyEducationExamination/component/richTextPdf.vue

@@ -68,27 +68,27 @@
 				// 2. 使用 web-view 加载HTML后截图
 				// 2. 使用 web-view 加载HTML后截图
 				// 3. 提示用户长按保存或分享
 				// 3. 提示用户长按保存或分享
 
 
-				uni.showModal({
-					title: '提示',
-					content: '微信小程序暂不支持直接生成PDF,建议在电脑端下载或长按保存内容',
-					showCancel: false
-				});
+				// uni.showModal({
+				// 	title: '提示',
+				// 	content: '微信小程序暂不支持直接生成PDF,建议在电脑端下载或长按保存内容',
+				// 	showCancel: false
+				// });
 
 
 				// 如果有后端PDF生成接口,可以这样调用:
 				// 如果有后端PDF生成接口,可以这样调用:
-				// const result = await this._callBackendPdfApi();
-				// if (result.pdfUrl) {
-				//   uni.downloadFile({
-				//     url: result.pdfUrl,
-				//     success: (res) => {
-				//       uni.saveFile({
-				//         tempFilePath: res.tempFilePath,
-				//         success: () => {
-				//           uni.showToast({ title: '保存成功' });
-				//         }
-				//       });
-				//     }
-				//   });
-				// }
+				const result = await this._callBackendPdfApi();
+				if (result.pdfUrl) {
+				  uni.downloadFile({
+				    url: result.pdfUrl,
+				    success: (res) => {
+				      uni.saveFile({
+				        tempFilePath: res.tempFilePath,
+				        success: () => {
+				          uni.showToast({ title: '保存成功' });
+				        }
+				      });
+				    }
+				  });
+				}
 			},
 			},
 
 
 			// 调用后端PDF生成接口(示例)
 			// 调用后端PDF生成接口(示例)

+ 18 - 3
pages_safetyEducationExamination/views/exam/mockExamInfo.vue

@@ -55,6 +55,7 @@
 	} from '@/pages_safetyEducationExamination/utils/index.js'
 	} from '@/pages_safetyEducationExamination/utils/index.js'
 	import {
 	import {
 		examUserExamStart,
 		examUserExamStart,
+		examUserExamMockDetail,
 	} from '@/pages_safetyEducationExamination/api/index.js'
 	} from '@/pages_safetyEducationExamination/api/index.js'
 	import {
 	import {
 		parseTime
 		parseTime
@@ -63,7 +64,8 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
-				examData: {}
+				examData: {},
+				newData: {}
 			}
 			}
 		},
 		},
 		computed: {
 		computed: {
@@ -74,14 +76,27 @@
 		onLoad(options) {
 		onLoad(options) {
 			if (options.examData) {
 			if (options.examData) {
 				try {
 				try {
-					this.examData = JSON.parse(decodeURIComponent(options.examData));
-					this.formatExamData();
+					this.newData = JSON.parse(decodeURIComponent(options.examData));
 				} catch (e) {
 				} catch (e) {
 					console.error('解析模拟考试数据失败', e);
 					console.error('解析模拟考试数据失败', e);
 				}
 				}
 			}
 			}
 		},
 		},
+		onShow(){
+			this.examUserExamMockDetail();
+		},
 		methods: {
 		methods: {
+			async examUserExamMockDetail() {
+				try {
+					const { data } = await examUserExamMockDetail({examId:this.newData.examId});
+					if (data.code === 200 && data.data) {
+						this.$set(this,'examData',data.data);
+						this.formatExamData();
+					}
+				} catch (e) {
+					console.error('获取考试详情失败', e);
+				}
+			},
 			formatExamData() {
 			formatExamData() {
 				if (this.examData.startTime) {
 				if (this.examData.startTime) {
 					this.examData.startTime = parseTime(this.examData.startTime, '{y}-{m}-{d} {h}:{i}');
 					this.examData.startTime = parseTime(this.examData.startTime, '{y}-{m}-{d} {h}:{i}');

+ 20 - 2
pages_safetyEducationExamination/views/exam/onlineExamInfo.vue

@@ -82,6 +82,9 @@
 		parseTime
 		parseTime
 	} from '@/component/public.js'
 	} from '@/component/public.js'
 	import {
 	import {
+		examUserExamDetail, 
+	} from '@/pages_safetyEducationExamination/api/index.js'
+	import {
 		goToExamPage,
 		goToExamPage,
 		confirmCommitmentAndStart,
 		confirmCommitmentAndStart,
 		startFormalExam,
 		startFormalExam,
@@ -95,6 +98,7 @@
 		data() {
 		data() {
 			return {
 			return {
 				examData: {},
 				examData: {},
+				newData:{},
 				// 承诺书相关
 				// 承诺书相关
 				preButtonType: false,
 				preButtonType: false,
 				richTextHtml: '',
 				richTextHtml: '',
@@ -111,14 +115,28 @@
 			// 接收从上个页面传递的考试数据
 			// 接收从上个页面传递的考试数据
 			if (options.examData) {
 			if (options.examData) {
 				try {
 				try {
-					this.examData = JSON.parse(decodeURIComponent(options.examData));
-					this.formatExamData();
+					this.newData = JSON.parse(decodeURIComponent(options.examData));
+					// this.examUserExamDetail();
 				} catch (e) {
 				} catch (e) {
 					console.error('解析考试数据失败', e);
 					console.error('解析考试数据失败', e);
 				}
 				}
 			}
 			}
 		},
 		},
+		onShow(){
+			this.examUserExamDetail();
+		},
 		methods: {
 		methods: {
+			async examUserExamDetail() {
+				try {
+					const { data } = await examUserExamDetail({examId:this.newData.examId});
+					if (data.code === 200 && data.data) {
+						this.$set(this,'examData',data.data);
+						this.formatExamData();
+					}
+				} catch (e) {
+					console.error('获取考试详情失败', e);
+				}
+			},
 			formatExamData() {
 			formatExamData() {
 				// 格式化时间
 				// 格式化时间
 				if (this.examData.startTime) {
 				if (this.examData.startTime) {

+ 10 - 5
pages_safetyEducationExamination/views/home/component/specialExam.vue

@@ -15,20 +15,20 @@
 						<view style="height:24rpx;line-height:24rpx;margin-top:10rpx;">学时要求</view>
 						<view style="height:24rpx;line-height:24rpx;margin-top:10rpx;">学时要求</view>
 						<view style="height:24rpx;line-height:24rpx;">{{examData.completedStudyHours}} / {{examData.studyHoursRequirement}} 学时</view>
 						<view style="height:24rpx;line-height:24rpx;">{{examData.completedStudyHours}} / {{examData.studyHoursRequirement}} 学时</view>
 					</view>
 					</view>
-					<view class="card-min-right-box-1" @click="tableButton(1,item)"
+					<view class="card-min-right-box-1" @click="goToPage()"
 					v-if="examData.needStudy">开始学习</view>
 					v-if="examData.needStudy">开始学习</view>
 				</view>
 				</view>
 				<view class="card-min-box" v-if="examData.examStudy">
 				<view class="card-min-box" v-if="examData.examStudy">
 					<view class="card-min-left-box">
 					<view class="card-min-left-box">
 						<view>考前学习</view>
 						<view>考前学习</view>
 					</view>
 					</view>
-					<view class="card-min-right-box-1" @click="tableButton(2,item)">开始学习</view>
+					<view class="card-min-right-box-1" @click="goToPage()">开始学习</view>
 				</view>
 				</view>
 				<view class="card-min-box" v-if="examData.mockExam">
 				<view class="card-min-box" v-if="examData.mockExam">
 					<view class="card-min-left-box">
 					<view class="card-min-left-box">
 						<view>模拟考试</view>
 						<view>模拟考试</view>
 					</view>
 					</view>
-					<view class="card-min-right-box-1" @click="tableButton(3,item)"
+					<view class="card-min-right-box-1" @click="goToPage()"
 					v-if="!examData.examStudy">开始考试</view>
 					v-if="!examData.examStudy">开始考试</view>
 					<view class="card-min-right-box-2" v-if="examData.examStudy">待通过模拟考试后解锁</view>
 					<view class="card-min-right-box-2" v-if="examData.examStudy">待通过模拟考试后解锁</view>
 				</view>
 				</view>
@@ -36,7 +36,7 @@
 					<view class="card-min-left-box">
 					<view class="card-min-left-box">
 						<view>在线考试</view>
 						<view>在线考试</view>
 					</view>
 					</view>
-					<view class="card-min-right-box-1" @click="tableButton(4,item)"
+					<view class="card-min-right-box-1" @click="goToPage()"
 					v-if="examData.examKind==1&&examData.conditionType == 4">开始考试</view>
 					v-if="examData.examKind==1&&examData.conditionType == 4">开始考试</view>
 					<view class="card-min-right-box-2" v-if="examData.examKind==1&&examData.conditionType != 4">待通过模拟考试后解锁</view>
 					<view class="card-min-right-box-2" v-if="examData.examKind==1&&examData.conditionType != 4">待通过模拟考试后解锁</view>
 				</view>
 				</view>
@@ -64,6 +64,11 @@
 </template>
 </template>
 
 
 <script>
 <script>
+	import {
+		goToExamPage,
+		confirmCommitmentAndStart,
+		startFormalExam,
+	} from '@/pages_safetyEducationExamination/utils/index.js'
 	import { 
 	import { 
 		examUserExamStudyTaskList, 
 		examUserExamStudyTaskList, 
 	} from '@/pages_safetyEducationExamination/api/index.js'
 	} from '@/pages_safetyEducationExamination/api/index.js'
@@ -93,7 +98,7 @@
 			resetMethod(){
 			resetMethod(){
 				this.examUserExamStudyTaskList();
 				this.examUserExamStudyTaskList();
 			},
 			},
-			goToPage(item) {
+			goToPage() {
 				this.$set(this,'itemData',this.examData);
 				this.$set(this,'itemData',this.examData);
 				goToExamPage(this.examData, {
 				goToExamPage(this.examData, {
 					openCommitmentDialog: (examItem) => {
 					openCommitmentDialog: (examItem) => {

+ 1 - 7
pages_safetyEducationExamination/views/home/component/userInfoCard.vue

@@ -71,8 +71,7 @@
 				<view class="card-footer" style="margin-top:10rpx;">
 				<view class="card-footer" style="margin-top:10rpx;">
 					<view class="footer-right">
 					<view class="footer-right">
 						<text class="text-sm text-gray">目标考试</text>
 						<text class="text-sm text-gray">目标考试</text>
-						<text class="exam-link"
-							@click="handleExamClick">{{userInfo.targetExamName?userInfo.targetExamName:'无'}}</text>
+						<text class="exam-link">{{userInfo.targetExamName?userInfo.targetExamName:'无'}}</text>
 					</view>
 					</view>
 				</view>
 				</view>
 			</view>
 			</view>
@@ -154,11 +153,6 @@
 			refreshPageData() {
 			refreshPageData() {
 				this.loadUserInfo();
 				this.loadUserInfo();
 			},
 			},
-			handleExamClick() {
-				uni.navigateTo({
-					url: '/pages_safetyEducationExamination/views/exam/index',
-				});
-			},
 			async loadUserInfo() {
 			async loadUserInfo() {
 				const { data } = await examElLabEduRelationBindStatus({});
 				const { data } = await examElLabEduRelationBindStatus({});
 				if (data.code == 200) {
 				if (data.code == 200) {

+ 3 - 2
pages_safetyEducationExamination/views/home/index.vue

@@ -7,7 +7,7 @@
 			<!-- 学年数据统计 -->
 			<!-- 学年数据统计 -->
 			<academic-year-stats ref="academicYearStats"></academic-year-stats>
 			<academic-year-stats ref="academicYearStats"></academic-year-stats>
 			<!-- 实验室绑定 -->
 			<!-- 实验室绑定 -->
-			<lab-binding ref="labBinding"></lab-binding>
+			<lab-binding ref="labBinding" v-show="userType == 1"></lab-binding>
 			<!-- 考试任务 -->
 			<!-- 考试任务 -->
 			<exam-task ref="examTask"></exam-task>
 			<exam-task ref="examTask"></exam-task>
 			<!-- 特殊考试 -->
 			<!-- 特殊考试 -->
@@ -84,6 +84,7 @@
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
+				userType:0,
 				baseUrl: config.base_url,
 				baseUrl: config.base_url,
 				topCheckIndex:0,
 				topCheckIndex:0,
 				tableList:[],
 				tableList:[],
@@ -102,7 +103,7 @@
 			
 			
 		},
 		},
 		mounted() {
 		mounted() {
-			console.log('mounted')
+			this.userType = uni.getStorageSync('userType')
 			// this.examElDisciplineTypeList();
 			// this.examElDisciplineTypeList();
 		},
 		},
 		onShow(){
 		onShow(){

+ 13 - 8
pages_safetyEducationExamination/views/webViewPage/courseLearning.vue

@@ -15,14 +15,19 @@
 			}
 			}
 		},
 		},
 		onLoad(option) {
 		onLoad(option) {
-			this.$set(this,'dataText',
-				uni.getStorageSync('cameraExtranetAgent')+
-				// 'http://192.168.1.8/stream/#/'+
-				'?pageType=learningCourse&touken='+uni.getStorageSync('token')+
-				'&courseId='+option.courseId+
-				'&examId='+option.examId
-			);
-			this.$set(this,'webViewType',true);
+			if(uni.getStorageSync('weChatProgramVersion')){
+				this.$set(this,'dataText',
+					uni.getStorageSync('cameraExtranetAgent')+
+					// 'http://192.168.1.8/stream/#/'+
+					'?pageType=learningCourse&touken='+uni.getStorageSync('token')+
+					'&courseId='+option.courseId+
+					'&examId='+option.examId
+				);
+				this.$set(this,'webViewType',true);
+			}else{
+				this.$set(this,'dataText','');
+				this.$set(this,'webViewType',false);
+			}
 		},
 		},
 		mounted() {
 		mounted() {
 
 

+ 12 - 7
pages_safetyEducationExamination/views/webViewPage/coursewareLearning.vue

@@ -16,13 +16,18 @@
 			}
 			}
 		},
 		},
 		onLoad(option) {
 		onLoad(option) {
-			this.$set(this,'dataText',
-				uni.getStorageSync('cameraExtranetAgent')+
-				// 'http://192.168.1.8/stream/#/'+
-				'?pageType=learningMaterials&touken='+uni.getStorageSync('token')+
-				'&coursewareId='+option.coursewareId
-			);
-			this.$set(this,'webViewType',true);
+			if(uni.getStorageSync('weChatProgramVersion')){
+				this.$set(this,'dataText',
+					uni.getStorageSync('cameraExtranetAgent')+
+					// 'http://192.168.1.8/stream/#/'+
+					'?pageType=learningMaterials&touken='+uni.getStorageSync('token')+
+					'&coursewareId='+option.coursewareId
+				);
+				this.$set(this,'webViewType',true);
+			}else{
+				this.$set(this,'dataText','');
+				this.$set(this,'webViewType',false);
+			}
 		},
 		},
 		mounted() {
 		mounted() {