<template>
	<view class="questionBank">
		<uni-nav-bar @clickLeft="clickLeft" left-icon="back" :statusBar="true" title="试卷"></uni-nav-bar>
		<swiper class="swiper" :current="current" @change="swiperChange" :interval="interval">
			<swiper-item v-for="(bank, bankIndex) in questionList" :key="bankIndex">
				<view class="pageContent">
					<view class="pad_8 titBox">
						<view class="firstLetter">
							<view class="leftLetters">
								<view class="btnType">
									<text v-if="bank.type == 1">单选</text>
									<text v-if="bank.type == 2">多选</text>
									<text v-if="bank.type == 3">判断</text>
									<text v-if="bank.type == 4">案例</text>
									<text v-if="bank.type == 5">简答</text>
								</view>
								<text>{{ bankIndex + 1 }}/{{ questionList.length }}</text>
							</view>
							<view style="color: #666;font-size: 28rpx;">{{ countdown(lastTime) }}</view>
							<view class="leftLetters"></view>
						</view>
						<view class="titles"><rich-text :nodes="bank.content"></rich-text></view>
					</view>
					
					<template v-if="bank.type == 1">
						<view class="pad_8 titBox no-margin">
							<view v-if="!bank.ques">
								<view v-for="(item, index) in bank.jsonStr" :key="index" class="lisSty" @click="radioSelect(item.optionsId, bankIndex)">
									<view class="activeTI">{{ ast[index] }}</view>
									<view class="flex_auto">{{ item.content }}</view>
								</view>
							</view>
							<view v-if="bank.ques">
								<view v-for="(item, index) in bank.jsonStr" :key="index" class="lisSty">
									<text
										:class="{ right: item.optionsId == bank.ques || item.optionsId == bank.ans, wrong: item.optionsId == bank.ques && bank.ques != bank.ans }"
										class="activeTI"
									>
										{{ ast[index] }}
									</text>
									<view class="flex_auto">{{ item.content }}</view>
								</view>
							</view>
							<view v-if="bank.ques">
								<view class="pad_8 answer">
									<view>正确答案：{{ ast[bank.ans - 1] }}</view>
									<view>我的答案：{{ ast[bank.ques - 1] }}</view>
								</view>
								<view class="pad_8 answerInfos">
									<view class="answerTitle">答案解析</view>
									<view class="answerContent"><rich-text :nodes="bank.analysisContent"></rich-text></view>
								</view>
							</view>
						</view>
					</template>

					<template v-if="bank.type == 2">
						<view class="pad_8 titBox no-margin">
							<view v-if="!bank.ques">
								<view v-for="(item, index) in bank.jsonStr" :key="index" class="lisSty" @click="checkboxSelect(item.optionsId, bankIndex, index)">
									<view :class="{ checked: item.checked }" class="activeTI">{{ ast[index] }}</view>
									<view class="flex_auto">{{ item.content }}</view>
								</view>
							</view>
							<view v-if="!bank.ques" class="submit_checkbox" @click="checkboxSubmit(bankIndex)">确认答案</view>
							<view v-if="bank.ques">
								<view v-for="(item, index) in bank.jsonStr" :key="index" class="lisSty">
									<text
										:class="{
											right: bank.ques.indexOf(item.optionsId) != -1 || bank.ans.indexOf(item.optionsId) != -1,
											wrong: bank.ques.indexOf(item.optionsId) != -1 && bank.ans.indexOf(item.optionsId) == -1
										}"
										class="activeTI"
									>
										{{ ast[index] }}
									</text>
									<view class="flex_auto">{{ item.content }}</view>
								</view>
							</view>
							<view v-if="bank.ques">
								<view class="pad_8 answer">
									<view>
										正确答案：
										<text v-for="(ansItem,ansItemIndex) in bank.ans" :key="ansItemIndex">{{ ast[ansItem - 1] }}</text>
									</view>
									<view>
										我的答案：
										<text v-for="(quesItem,quesItemIndex) in bank.ques" :key="quesItemIndex">{{ ast[quesItem - 1] }}</text>
									</view>
								</view>
								<view class="pad_8 answerInfos">
									<view class="answerTitle">答案解析</view>
									<view class="answerContent"><rich-text :nodes="bank.analysisContent"></rich-text></view>
								</view>
							</view>
						</view>
					</template>

					<template v-if="bank.type == 3">
						<view class="pad_8 titBox no-margin">
							<view v-if="!bank.ques">
								<view v-for="(item, index) in judge" :key="index" class="lisSty" @click="judgeSelect(index, bankIndex)">
									<view class="activeTI">{{ ast[index] }}</view>
									{{ item }}
								</view>
							</view>
							<view v-if="bank.ques">
								<view v-for="(item, index) in judge" :key="index" class="lisSty">
									<text :class="{ right: index == bank.ques || index == bank.ans, wrong: index == bank.ques && bank.ques != bank.ans }" class="activeTI">
										{{ ast[index] }}
									</text>
									{{ item }}
								</view>
							</view>
							<view v-if="bank.ques">
								<view class="pad_8 answer">
									<view>正确答案：{{ ast[bank.ans] }}</view>
									<view>我的答案：{{ ast[bank.ques] }}</view>
								</view>
								<view class="pad_8 answerInfos">
									<view class="answerTitle">答案解析</view>
									<view class="answerContent"><rich-text :nodes="bank.analysisContent"></rich-text></view>
								</view>
							</view>
						</view>
					</template>

					<!-- 简答题 -->
					<template v-if="bank.type == 5">
						<view class="pad_8 titBox">
							<view class="ans">
								<view class="ans_input" v-if="!bank.ques || (!bank.ques.text && !bank.ques.imageList.length)">
									<view class="top flex">
										<image :data-index="bankIndex" class="icon" @click="chooseImg(bankIndex)" src="/static/camera.png" mode=""></image>
										<view class="progress">{{bank.ansText.imageList.length || '0'}}/4</view>
										<view class="submit" :class="{disabled:!bank.ansText.text && hasImgs(bank)}" @click="submitAns(bankIndex)">确认答案</view>
									</view>
									<view class="textarea"><textarea v-model="bank.ansText.text" placeholder="在此输入答案"></textarea></view>
									<view class="imgs">
										<view class="img" v-for="(img, imgIndex) in bank.ansText.imageList" :key="imgIndex">
											<text @click="deleteImg(imgIndex, bankIndex)">x</text>
											<image :src="$method.splitImgHost(img, true)"></image>
										</view>
									</view>
								</view>
								<view class="ans_submit answerInfos" v-if="bank.ques">
									<view class="answerTitle">我的答案:</view>
									{{ bank.ques.text }}
									<view class="imgs"><image class="img" v-for="(ques,quesIndex) in bank.ques.imageList" :key="quesIndex" :src="$method.splitImgHost(ques, true)"></image></view>
								</view>
							</view>
							<view v-if="bank.ques">
								<view class="pad_8 answerInfos">
									<view class="answerTitle">答案解析:</view>
									<view class="answerContent"><rich-text :nodes="bank.analysisContent"></rich-text></view>
								</view>
							</view>
						</view>
					</template>

					<!-- 案例题 -->
					<template v-if="bank.type == 4">
						<view class="pad_8 titBox">
							<view class="tabs">
								<view
									class="tab"
									:class="{ current: tabIndex == bank.current }"
									:key="tabIndex"
									v-for="(tab, tabIndex) in bank.jsonStr"
									@click="tabSelect(tabIndex, bankIndex)"
								>
									问题{{ tabIndex }}
								</view>
							</view>
							<view v-for="(ansItem, ansIndex) in bank.jsonStr" v-if="bank.current == ansIndex" :key="ansIndex">
								<view class="titles"><rich-text :nodes="ansItem.content"></rich-text></view>
								<template v-if="ansItem.type == 1">
									<view v-if="!bank.ques[ansIndex]">
										<view
											v-for="(option, childIndex) in ansItem.optionsList"
											:key="childIndex"
											class="lisSty"
											@click="radioSelectChild(option.optionsId, ansIndex, bankIndex)"
										>
											<view class="activeTI">{{ ast[childIndex] }}</view>
											<rich-text class="textChild" :nodes="option.content"></rich-text>
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view v-for="(option, childIndex) in ansItem.optionsList" :key="childIndex" class="lisSty">
											<text
												:class="{
													right: option.optionsId == bank.ques[ansIndex] || option.optionsId == bank.ans[ansIndex],
													wrong: option.optionsId == bank.ques[ansIndex] && bank.ques[ansIndex] != bank.ans[ansIndex]
												}"
												class="activeTI"
											>
												{{ ast[childIndex] }}
											</text>
											<rich-text :nodes="option.content"></rich-text>
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view class="pad_8 answer">
											<view>正确答案：{{ ast[bank.ans[ansIndex] - 1] }}</view>
											<view>我的答案：{{ ast[bank.ques[ansIndex] - 1] }}</view>
										</view>
										<view class="pad_8 answerInfos">
											<view class="answerTitle">答案解析</view>
											<view class="answerContent"><rich-text :nodes="option.analysisContent"></rich-text></view>
										</view>
									</view>
								</template>

								<template v-if="ansItem.type == 2">
									<view v-if="!bank.ques[ansIndex]">
										<view
											v-for="(option, childindex) in ansItem.optionsList"
											:key="childindex"
											class="lisSty"
											@click="checkboxSelectChild(bankIndex, ansIndex, childindex)"
										>
											<view :class="{ checked: option.checked }" class="activeTI">{{ ast[childindex] }}</view>
											<rich-text :nodes="option.content"></rich-text>
										</view>
									</view>
									<view v-if="!bank.ques[ansIndex]" class="submit_checkbox" @click="checkboxSubmitChild(bankIndex, ansIndex)">确认答案</view>
									<view v-if="bank.ques && bank.ques[ansIndex]">
										<view v-for="(option, childindex) in ansItem.optionsList" :key="childindex" class="lisSty">
											<text :class="{ right: right(bankIndex, ansIndex, option), wrong: wrong(bankIndex, ansIndex, option) }" class="activeTI">
												{{ ast[childindex] }}
											</text>
											<rich-text :nodes="option.content"></rich-text>
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view class="pad_8 answer">
											<view>
												正确答案：
												<text :key="ansItemIndex1" v-for="(ansItem1,ansItemIndex1) in bank.ans[ansIndex]">{{ ast[ansItem1 - 1] }}</text>
											</view>
											<view>
												我的答案：
												<text :key="quesItemIndex" v-for="(quesItem,quesItemIndex) in bank.ques[ansIndex]">{{ ast[quesItem - 1] }}</text>
											</view>
										</view>
										<view class="pad_8 answerInfos">
											<view class="answerTitle">答案解析</view>
											<view class="answerContent"><rich-text :nodes="ansItem.analysisContent"></rich-text></view>
										</view>
									</view>
								</template>

								<template v-if="ansItem.type == 3">
									<view v-if="!bank.ques[ansIndex]">
										<view v-for="(option, childindex) in judge" :key="childindex" class="lisSty" @click="judgeSelectChild(ansIndex, childindex, bankIndex)">
											<view class="activeTI">{{ ast[childindex] }}</view>
											{{ option }}
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view v-for="(option, childindex) in judge" :key="childindex" class="lisSty">
											<text
												:class="{
													right: childindex == bank.ques[ansIndex] || childindex == bank.ans[ansIndex],
													wrong: childindex == bank.ques[ansIndex] && bank.ques[ansIndex] != bank.ans[ansIndex]
												}"
												class="activeTI"
											>
												{{ ast[childindex] }}
											</text>
											{{ option }}
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view class="pad_8 answer">
											<view>正确答案：{{ ast[bank.ans[ansIndex]] }}</view>
											<view>我的答案：{{ ast[bank.ques[ansIndex]] }}</view>
										</view>
										<view class="pad_8 answerInfos">
											<view class="answerTitle">答案解析</view>
											<view class="answerContent"><rich-text :nodes="ansItem.analysisContent"></rich-text></view>
										</view>
									</view>
								</template>

								<!-- 简答题 -->
								<template v-if="ansItem.type == 5">
									<view class="ans">
										<view class="ans_input" v-if="!bank.ques[ansIndex] || (!bank.ques[ansIndex].text && !bank.ques[ansIndex].imageList.length)">
											<view class="top flex">
												<image class="icon" @click="chooseImgChild(bankIndex, ansIndex)" src="/static/08-10_032.jpg" mode=""></image>
												<view class="progress">{{ansItem.ansText.imageList.length || '0'}}/4</view>
												<view class="submit" @click="submitAnsChild(bankIndex, ansIndex)">确认答案</view>
											</view>
											<view class="textarea"><textarea v-model="ansItem.ansText.text" placeholder="在此输入答案"></textarea></view>
											<view class="imgs">
												<view class="img" :key="imgIndex" v-for="(img, imgIndex) in ansItem.ansText.imageList">
													<text @click="deleteImgChild(imgIndex, bankIndex, ansIndex)">x</text>
													<image :src="$method.splitImgHost(img, true)"></image>
												</view>
											</view>
										</view>
										<view class="ans_submit answerInfos" v-if="bank.ques[ansIndex]">
											<view class="answerTitle">我的答案</view>
											{{ bank.ques[ansIndex].text }}
											<view class="imgs">
												<image class="img" :key="quesIndex" v-for="(ques,quesIndex) in bank.ques[ansIndex].imageList" :src="$method.splitImgHost(ques, true)"></image>
											</view>
										</view>
									</view>
									<view v-if="bank.ques[ansIndex]">
										<view class="pad_8 answerInfos">
											<view class="answerTitle">答案解析</view>
											<view class="answerContent"><rich-text :nodes="ansItem.analysisContent"></rich-text></view>
										</view>
									</view>
								</template>
							</view>
						</view>
					</template>

					<view class="footer_btn">
						<view class="collect">
							<view v-if="collectList[bankIndex]">
								<image src="/static/icon/collected.png" mode=""></image>
								<view>取消收藏</view>
							</view>
						</view>
						<view class="flex_center" @click="openFooterTab">
							<view class="up-icon">
								<image src="/static/up.png"></image>
							</view>
							答题卡
						</view>
						<view class="collect show" @click="pdsubmit">
							<view>
								<image src="/static/jj.png" mode=""></image>
								<view>交卷</view>
							</view>
						</view>
					</view>
				</view>
			</swiper-item>
		</swiper>

		<u-popup v-model="show" mode="bottom" border-radius="14" height="680rpx">
			<view class="popupView">
				<view class="popupTops">
					<view class="topIcon"></view>
					点击编号即可跳转至对应题目
				</view>
				<view class="popupContent">
					<scroll-view scroll-y="true" style="height: 506rpx;">
						<view class="boxSty">
							<view
								v-for="(item, index) in questionList"
								:key="index"
								@click="changeIndex(index)"
								:class="{ isRight: isRight(item, index), isWrong: isWrong(item, index) }"
								class="liListSty"
							>
								{{ index + 1 }}
							</view>
						</view>
					</scroll-view>
				</view>
			</view>
		</u-popup>

		<view class="dialog" v-if="showDialog">
			<view class="text">左右滑动切换上下题</view>
			<view class="btn" @click="hideDialog">我知道了</view>
		</view>

		<view class="dialog_wrap" v-if="testOver">
			<view class="bg"></view>
			<view class="dialog">
				<view class="title">温馨提示</view>
				<view class="content">
					<view>您已完成所有题目，</view>
					<view>快去交卷吧！</view>
				</view>
				<view class="btns">
					<view class="btn" @click="noSubmit()">暂不交卷</view>
					<view class="btn active" @click="submitNow()">立即交卷</view>
				</view>
			</view>
		</view>

		<view class="dialog_wrap" v-if="isLastCount">
			<view class="bg"></view>
			<view class="dialog">
				<view class="title">温馨提示</view>
				<view class="content">
					<view>您当前正在测试，还剩{{ lastCount }}道题未完成，离开视为交卷</view>
				</view>
				<view class="btns">
					<view class="btn" @click="noLeave()">暂不离开</view>
					<view class="btn active" @click="leaveNow()">继续离开</view>
				</view>
			</view>
		</view>
		<u-popup v-model="showpopups" mode="center" border-radius="24" height="439rpx" width="640rpx" :mask-close-able="false">
			<view class="popboxs">
				<view class="classTops">温馨提示</view>
				<view class="textStys">
					{{
						cgType === 7
							? '您还未交卷,确定结束做题吗？'
							: cgType === 8
							? `您还有${lastCount}道题未作答， 现在继续作答，还是下次继续？`
							: cgType === 6
							? `您还有${lastCount}道题未作答， 您确定要交卷吗？`
							: ''
					}}
				</view>
				<view class="classFootsty" v-if="cgType === 6">
					<view class="btnsty btns1" @click="submit">立即交卷</view>
					<view class="btnsty btns2" @click="showpopups = false">继续做题</view>
				</view>
				<view class="classFootsty" v-if="cgType === 7">
					<view class="btnsty btns1" @click="showpopups = false">下次继续</view>
					<view class="btnsty btns2" @click="backPages">结束做题</view>
				</view>
				<view class="classFootsty" v-if="cgType === 8">
					<view class="btnsty btns1" @click="leaveNow()">下次继续</view>
					<view class="btnsty btns2" @click="showpopups = false">继续作答</view>
				</view>
			</view>
		</u-popup>
		<u-mask :show="photoPopup" >
		<!-- 播放前拍照start -->
		<view v-if="photoPopup"  :mask-close-able="false" style="bottom: 0;position: fixed;width: 100%;z-index: 999;">
			<view class="photoBox">
				<view class="photoTop">
					<view class="sqzz" v-if="false"><u-icon name="close" color="#333333" size="30" @click="closePhoto"></u-icon></view>
					<view class="centersq">请正视手机屏幕</view>
					<view class="sqzz"></view>
				</view>
				<view class="photoCenter">
					<view style="width: 100%; height: 979rpx;position: fixed;" v-if="photoPopup">
						<camera device-position="front" flash="off" @error="error" style="width: 100%; height: 100%;" ></camera>
					</view>
					<view class="custom"><image src="@/pages2/static/zhezhao.png" mode=""></image></view>
				</view>
				<view class="btnResult" @click="takePhoto">拍照</view>
			</view>
		</view>
		
		</u-mask>
	</view>
</template>

<script>
export default {
	data() {
		return {
			photoPopup:false,
			showpopups: false,
			id: '',
			current: 0,
			questionList: [],
			ast: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
			judge: ['错误', '正确'],
			ans: [],
			ques: [],
			show: false,
			showDialog: false,
			bankList: [],
			collectList: [],
			goodsId: '',
			recordId: '',
			isSubmit: false,
			lastTime: 0, //剩余考试时长
			allTimes: 0, //总考试时长
			timer: null,
			wrongList: [],
			bankType: 0, //试卷类型
			needBack: false, //是否是考试
			testOver: false,
			isLastCount: false, //是否有未答题目
			lastCount: 0, //剩余没有回答的题目数
			chapterId: 0,
			moduleId: 0,
			isFromVideo:'',
			gradeId:'',
			courseId:0,
			cgType: 0 ,//对应设计稿弹窗编码,
			avatarUrl:'',
			ossAvatarUrl: '',
			goodsDetail:{},
			isTakePhoto:false,
			needPhoto:false //是否需要拍照
		};
	},
	onLoad(option) {
		this.id = option.id;
		this.goodsId = option.goodsid;
		this.chapterId = option.chapterId;
		this.courseId = option.courseId;
		this.moduleId = option.moduleId;
		this.isFromVideo = option.isFromVideo||'';
		this.gradeId = option.gradeId || '';
		let isBack = option.isback;
		
		let showDialog = uni.getStorageSync('showDialog');
		
		if(showDialog) {
			this.showDialog = false;
		} else {
			this.showDialog = true;
			uni.setStorageSync('showDialog','1');
		}
		
		//考试时候用手势或者返回键 被迫返回做题
		if (isBack) {
			console.log(getApp());
			let app = getApp();
			let globalData = app.globalData;

			for (var k in globalData.bankData) {
				this[k] = globalData.bankData[k];
			}
			
			//需要拍没拍过直接弹出摄像头
			if(this.needPhoto && !this.isTakePhoto) {
				this.photoPopup = true;
			} else { //不需要拍照
				if(this.lastTime) {
					this.timer = setInterval(() => {
						if (this.lastTime <= 0) {
							clearInterval(this.timer);
							uni.showToast({
								icon:'none',
								mask:true,
								title:'考试时间已到，系统将自动交卷',
								duration:10000
							})
					
							this.submit();
							return;
						}
						this.lastTime--;
					}, 1000);
				}
			}
		} else {
			this.goodsQuestionList();
			this.bankExam();
			this.getGoodsDetail()
		}
	},
	onUnload() {
		if (this.isSubmit) {
			clearInterval(this.timer)
			return;
		}
		//考试试卷 阻止ios手势返回，自动跳回答题页
		if (this.needBack) {
			let app = getApp();
			app.globalData.bankData = this.$data;
			clearInterval(this.timer);
			uni.navigateTo({
				url: '/pages2/class/questionBank?id=' + this.id + '&goodsid=' + this.goodsId + '&isback=true'
			});
		} else {
			//点击返回按钮确认允许退出，交卷
			clearInterval(this.timer)
			this.examRecordEdit();
		}
	},
	methods: {
		getGoodsDetail() {
			let self = this
			this.$api.goodsDetail(this.goodsId).then(res => {
				self.goodsDetail = res.data.data;
				if (self.goodsDetail.goodsPhotoExamConfig) {
					let goodsPhotoExamConfig = JSON.parse(self.goodsDetail.goodsPhotoExamConfig);
					if (goodsPhotoExamConfig.photograph > 0) {
						self.needPhoto = true;
					}
				}
				
			});
		},
		postStudyRecord() {
			let self = this
			let data = {
				photo: self.ossAvatarUrl,
				recordId: self.recordId
			};
			this.$api.studyExamPhotoRecord(data).then(res => {
				self.ossAvatarUrl = ''
				self.isTakePhoto = true;
				//拍照
				if(this.lastTime) {
					this.timer = setInterval(() => {
						if (this.lastTime <= 0) {
							clearInterval(this.timer);
							uni.showToast({
								icon:'none',
								mask:true,
								title:'考试时间已到，系统将自动交卷',
								duration:10000
							})
					
							this.submit();
							return;
						}
						this.lastTime--;
					}, 1000);
				}
			});
		},
		uploadFile(options, int) {
			var self = this;
			return new Promise((resolve, reject) => {
				var data = {
					imageStatus: int
				};
				self.$api.aliyunpolicy(data).then(res => {
					if (res.data.code != 200) {
						self.$method.showToast('签名错误' + JSON.stringify(res.data));
						return;
					}
					var ossToken = res.data.data.resultContent;
					if (ossToken.host == null || ossToken.host == undefined) {
						self.$method.showToast('上传路径报错' + JSON.stringify(res.data));
						return;
					}
					uni.uploadFile({
						url: ossToken.host,
						name: 'file',
						filePath: options,
						fileType: 'image',
						header: {
							AuthorizationToken: 'WX ' + uni.getStorageSync('token')
						},
						formData: {
							key: ossToken.dir,
							OSSAccessKeyId: ossToken.accessid,
							policy: ossToken.policy,
							Signature: ossToken.signature,
							callback: ossToken.callback,
							success_action_status: 200
						},
						success: result => {
							if (result.statusCode === 200) {
								self.ossAvatarUrl = ossToken.dir;
								resolve();
							} else {
								uni.showToast({
									title: '上传失败',
									icon: 'none'
								});
								return;
							}
						},
						fail: error => {
							uni.showToast({
								title: '上传接口报错' + error,
								icon: 'none'
							});
							return;
						}
					});
				});
			});
		},
		imageInfos() {
			var self = this;
			return new Promise((resolve, reject) => {
				uni.getImageInfo({
					src: self.avatarUrl,
					success: async res => {
						let canvasWidth = res.width; //图片原始长宽
						let canvasHeight = res.height;
						if (canvasWidth > 1000 || canvasHeight > 1000) {
							uni.compressImage({
								src: self.avatarUrl,
								quality: 75,
								width: '50%',
								height: '50%',
								success: async rest => {
									const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
									resolve();
								}
							});
						} else {
							console.log('无需压缩');
							const waitUpload = await self.uploadFile(self.avatarUrl, 0);
							resolve();
						}
					}
				});
			});
		},
		async submitPhoto() {
			const waitYS = await this.imageInfos();
			this.postStudyRecord(); //提交记录
		},
		//确认拍照
		takePhoto() {
			var self = this;
			const ctx = uni.createCameraContext();
			ctx.takePhoto({
				quality: 'high',
				success: res => {
					console.log(res.tempImagePath);
					self.avatarUrl = res.tempImagePath;
					self.submitPhoto();
		
					self.photoPopup = false;
				},
				fail: err => {
					console.log(err);
				}
			});
		},
		/**
		 * 是否有上传图片
		 */
		hasImgs(bank) {
			
			return bank.ansText.imageList.length == 0;
		},
		/**
		 * 获取试卷类型2考试,1练习
		 */
		bankExam() {
			this.$api.bankExam(this.id).then(res => {
				this.bankType = res.data.data.doType;
				if (this.bankType == 2) {
					this.needBack = true;
				}
			});
		},
		/**
		 * 点击后退按钮
		 */
		clickLeft() {
			if (this.bankType == 1) {
				let ansCount = this.questionOverNum(); //已答题数
				this.lastCount = this.questionList.length - ansCount; //统计未答完的题数

				//所有题目答完
				if (this.lastCount == 0) {
					// this.testOver = true;
					this.cgType = 7;
					//未答完
				} else {
					this.cgType = 8;
					// this.isLastCount = true;
				}
				this.showpopups = true;
			} else if (this.bankType == 2) {
				let ansCount = this.questionOverNum(); //已答题数
				this.lastCount = this.questionList.length - ansCount; //统计未答完的题数

				//所有题目答完
				if (this.lastCount == 0) {
					this.testOver = true;
					//未答完
				} else {
					this.isLastCount = true;
				}
			}
		},
		/**
		 * 返回上一页
		 */
		backPages() {
			this.needBack = false;
			uni.navigateBack({
				delta: 1
			});
		},
		/**
		 * 获取已经回答的题目数
		 * hasSpecail (是否包含简答和案例)
		 */
		questionOverNum(hasSpecail) {
			let count = 0;
			this.questionList.forEach(item => {
				if (item.type == 1 || item.type == 2 || item.type == 3) {
					if (item.ques) {
						count++;
					}
				} else if (item.type == 4) {
					//案例题
					if(hasSpecail) {
						
						let isOver = item.jsonStr.every((jsonItem, indexs) => {
							if (jsonItem.type == 1 || jsonItem.type == 2 || jsonItem.type == 3) {
								if (item.ques[indexs]) {
									return true;
								} else {
									return false;
								}
							} else if (jsonItem.type == 5) {
								console.log(jsonItem, 111);
								if (item.ques[indexs] && (item.ques[indexs].text.length || item.ques[indexs].imageList.length)) {
									return true;
								} else {
									return false;
								}
							}
						});
						
						if (isOver) {
							count++;
							console.log(item, 444);
						}
					}
				} else if (item.type == 5) {
					//简答题
					if(hasSpecail) {
						
						if (item.ques && (item.ques.text.length || item.ques.imageList.length)) {
							count++;
						}
					}
				}
			});

			return count;
		},
		/**
		 * 暂不交卷
		 */
		noSubmit() {
			//设为允许退出页面
			this.needBack = false;
			uni.navigateBack({
				delta: 1
			});
		},
		/**
		 * 不离开
		 */
		noLeave() {
			this.isLastCount = false;
		},
		/**
		 * 立即离开并交卷
		 */
		leaveNow() {
			this.isSubmit = true;
			uni.navigateBack({
				delta: 1
			});
			let score = 0; //计算总分
			let reportStatus = 0;
			let number = 0;
			let passScore = 0;
			let allScore = 0;  //总分
			this.questionList.forEach((item, index) => {
				passScore = item.passScore
				if (item.type == 1) {
					if (item.ques == item.ans) {
						item.scoreResult = item.score;
						score += item.score;
						number++;
					} else {
						
						item.scoreResult = 0;
					}
					allScore += item.score;
				} else if (item.type == 2) {
					let isRight =
						item.ques &&
						item.ques.every((quesItem, quesIndex) => {
							return item.ques[quesIndex] == item.ans[quesIndex];
						});

					if (isRight) { //全对
						item.scoreResult = item.score;
						score += item.score;
						number++;
					} else {
						let checkboxScore = item.score;  //获取单题总分数
						item.ques && item.ques.forEach((ques,quesIndex) => {
							//选错一个全扣
							if(item.ques) {
								if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
									checkboxScore = 0;
								} 
							} else {
								checkboxScore = 0;
							}
						})
						
						//没选错
						if(checkboxScore) {
							item.ans.forEach((ans,quesIndex) => {
								//漏选扣一部分
								if(item.ques) {
									
									if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
										checkboxScore -= item.partScore;
									}
								} else {
									checkboxScore = 0;
								}
							})
						}
						
						
						if(checkboxScore <= 0) {
							item.scoreResult = 0;
						} else {
							item.scoreResult = checkboxScore;
						}
						
						score += checkboxScore;
						
					}
					allScore += item.score;
				} else if (item.type == 3) {
					if (item.ques == item.ans) {
						item.scoreResult = item.score;
						score += item.score;
						number++;
					} else {
						
						item.scoreResult = 0;
					}
					allScore += item.score;
				}
			});

			if(score >= passScore) {
				reportStatus = 1
			} else {
				reportStatus = 0
			}

			this.$api
				.bankRecordEdit({
					chapterId:this.chapterId || 0,
					moduleId:this.moduleId || 0,
					examId: this.id,
					goodsId: this.goodsId,
					recordId:this.recordId,
					courseId:this.courseId,
					reportStatus:reportStatus,
					rightQuestionNum: number,
					status: 1,
					gradeId:this.gradeId,
					performance: score,
					totalScore: allScore,
					// examTime: parseInt(this.allTimes),
					// doTime: parseInt(this.allTimes) - parseInt(this.lastTime),
					// historyExamJson: JSON.stringify(this.questionList)
				})
				.then(res => {});
		},
		/**
		 * 立即交卷
		 */
		submitNow() {
			this.showpopups = false;
			this.needBack = false;
			this.submit();
		},
		/**
		 * 离开页面统计回答正确题数
		 */
		examRecordEdit() {
			if (!this.isSubmit) {
				let number = 0;
				let score = 0;
				let doQuestionNum = 0;
				let reportStatus = 0;
				this.questionList.forEach((item, index) => {
					if (item.type == 1) {
						if (item.ques == item.ans) {
							score += item.score;
							number++;
						}

						if (item.ques) {
							doQuestionNum++;
						}
					} else if (item.type == 2) {
						let isRight =
							item.ques &&
							item.ques.every((quesItem, quesIndex) => {
								return item.ques[quesIndex] == item.ans[quesIndex];
							});

						if (isRight) {
							score += item.score;
							number++;
						} else {
							let checkboxScore = item.score;  //获取单题总分数
							item.ques.forEach((ques,quesIndex) => {
								//选错一个全扣
								if(item.ques) {
									if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
										checkboxScore = 0;
									} 
								} else {
									checkboxScore = 0;
								}
							})
							
							//没选错
							if(checkboxScore) {
								item.ans.forEach((ans,quesIndex) => {
									//漏选扣一部分
									if(item.ques) {
										
										if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
											checkboxScore -= item.partScore;
										}
									} else {
										checkboxScore = 0;
									}
								})
							}
							
							
							if(checkboxScore <= 0) {
								item.scoreResult = 0;
							} else {
								item.scoreResult = checkboxScore;
								score += checkboxScore;
								number++;
							}
						}

						if (item.ques && item.ques.length) {
							doQuestionNum++;
						}
					} else if (item.type == 3) {
						if (item.ques == item.ans) {
							score += item.score;
							number++;
						}

						if (item.ques) {
							doQuestionNum++;
						}
					} else if (item == 4) {
						if (item.ques.length) {
							doQuestionNum++;
						}
					} else if (item.type == 5) {
						if (item.ques) {
							doQuestionNum++;
						}
					}
				});
				
				if(score >= 60) {
					reportStatus = 1
				}

				this.$api
					.bankRecordEdit({
						chapterId:this.chapterId || 0,
						moduleId:this.moduleId || 0,
						gradeId:this.gradeId,
						examId: this.id,
						courseId:this.courseId,
						goodsId: this.goodsId,
						recordId:this.recordId,
						performance:score,
						reportStatus:reportStatus,
						status: 1,
						// historyExamJson: JSON.stringify(this.questionList)
					})
					.then(res => {});
			}
		},
		
		/**
		 * @param {Object} second倒计时过滤器
		 */
		countdown(second) {
			if (second) {
				let h = parseInt((second / 60 / 60) % 24); //   计算小时
				let m = parseInt((second / 60) % 60); //   计算分数
				let s = parseInt(second % 60); //   计算当前秒数

				if (h < 10) h = '0' + h;
				if (m < 10) m = '0' + m;
				if (s < 10) s = '0' + s;

				return h + ':' + m + ':' + s;
			} else {
				return '';
			}
		},
		/**
		 * 请求题目列表
		 */
		goodsQuestionList() {
			this.$api
				.goodsQuestionList({
					examId: this.id
				})
				.then(res => {
					if (!res.data.data.length) {
						this.hideDialog();
						uni.showModal({
							showCancel: false,
							content: '该试卷暂无题目',
							success: function(k) {
								if (k.confirm) {
									uni.navigateBack();
								}
							}
						});
						return;
					}
					this.allTimes = res.data.data[0].answerTime * 60;
					this.lastTime = res.data.data[0].answerTime && res.data.data[0].answerTime * 60;
					
					res.data.data.forEach((item, index) => {
						if (typeof item.jsonStr == 'string') {
							item.jsonStr = JSON.parse(item.jsonStr);

							if (item.type == 2) {
								//多选
								item.jsonStr.forEach(str => {
									str.optionsId = '' + str.optionsId;
								});
								let arr = item.answerQuestion.split(',');
								arr.forEach((a, i) => {
									arr[i] = '' + a;
								});
								item.ans = arr;
								return;
							} else if (item.type == 5) {
								//简答题
								item.ansText = {
									text: '',
									imageList: []
								};
								
								item.ques = {
									text: '',
									imageList: []
								}
							} else if (item.type == 4) {
								//案例题
								console.log(item.jsonStr);
								item.ques = [];
								item.current = 0;
								let ansArr = [];
								item.jsonStr.forEach((json, index) => {
									if (json.type == 1) {
										ansArr[index] = json.answerQuestion;
									} else if (json.type == 2) {
										json.optionsList.forEach(str => {
											str.optionsId = '' + str.optionsId;
										});
										let arr = json.answerQuestion.split(',');
										arr.forEach((a, i) => {
											arr[i] = '' + a;
										});
										ansArr[index] = arr;
									} else if (json.type == 3) {
										ansArr[index] = json.answerQuestion;
									} else if (json.type == 5) {
										ansArr[index] = {
											text: '',
											imageList: []
										};
										json.ansText = {
											text: '',
											imageList: []
										};
									}
								});

								item.ans = ansArr;
								return;
							}

							item.ans = item.answerQuestion;
						}
					});

					this.questionList = res.data.data;
					this.lastCount = this.questionList.length;
					this.examRecord();
				});
		},
		/**
		 * 记录总题数
		 * hasSpecial (是否包含简答和案例) true 包含  false 不包含
		 */
		examRecord(hasSpecial) {
			let self = this
			let questionList = 0;
			if(!hasSpecial) {
				this.questionList.forEach((item, index) => {
					if(item.type == 1 || item.type == 2 || item.type == 3) {
						questionList++;
					}
				})
			} else {
				questionList = this.questionList.length;
			}
			 
			this.$api
				.bankRecord({
					chapterExamId: this.chapterId || 0,
					moduleExamId: this.moduleId || 0,
					examId: this.id,
					goodsId: this.goodsId,
					gradeId:this.gradeId,
					totalQuestionNum: questionList
				})
				.then(res => {
					this.recordId = res.data.data;
					if(self.needPhoto){
						self.photoPopup = true; //拍照
					} else {
						if(this.lastTime) {
							this.timer = setInterval(() => {
								if (this.lastTime <= 0) {
									clearInterval(this.timer);
									uni.showToast({
										icon:'none',
										mask:true,
										title:'考试时间已到，系统将自动交卷',
										duration:10000
									})
							
									this.submit();
									return;
								}
								this.lastTime--;
							}, 1000);
						}
					}
					
				});
			
		},
		/**
		 * @param {Object} e单选点击
		 */
		radioSelect(optionsId, bindex) {
			if (this.questionList[bindex].ques) return;
			this.$set(this.questionList[bindex], 'ques', optionsId);
		},

		/**
		 * @param {Object} e案例单选点击
		 */
		radioSelectChild(optionsId, ansIndex, bindex) {
			if (this.questionList[bindex].ques[ansIndex]) return;
			this.$set(this.questionList[bindex].ques, ansIndex, optionsId);
		},

		/**
		 * @param {Object} 多选点击
		 */
		checkboxSelect(optionsId, bindex, index) {
			this.$set(this.questionList[bindex].jsonStr[index], 'checked', !this.questionList[bindex].jsonStr[index].checked);
		},

		/**
		 * @param {Object} 案例多选点击
		 */
		checkboxSelectChild(bindex, ansIndex, childIndex) {
			this.$set(this.questionList[bindex].jsonStr[ansIndex].optionsList[childIndex], 'checked', !this.questionList[bindex].jsonStr[ansIndex].optionsList[childIndex].checked);
		},

		/**
		 * @param {Object} 多选确认
		 */
		checkboxSubmit(bindex) {
			if (this.questionList[bindex].ques) return;
			let arr = [];
			this.questionList[bindex].jsonStr.forEach(item => {
				if (item.checked) {
					arr.push(item.optionsId);
				}
			});

			this.$set(this.questionList[bindex], 'ques', arr);

			let isWrong = this.questionList[bindex].ques.some((quesItem, quesIndex) => {
				return this.questionList[bindex].ques[quesIndex] != this.questionList[bindex].ans[quesIndex];
			});
		},

		/**
		 * @param {Object} 案例多选确认
		 */
		checkboxSubmitChild(bindex, ansIndex) {
			if (this.questionList[bindex].ques[ansIndex]) return;
			let arr = [];
			this.questionList[bindex].jsonStr[ansIndex].optionsList.forEach(item => {
				if (item.checked) {
					arr.push(item.optionsId);
				}
			});

			this.$set(this.questionList[bindex].ques, ansIndex, arr);
		},

		/**
		 * @param {Object} index
		 * @param {Object} bindex
		 * 判断题
		 */
		judgeSelect(index, bindex) {
			if (this.questionList[bindex].ques) return;
			this.$set(this.questionList[bindex], 'ques', index + '');
		},

		/**
		 * @param {Object} ansindex
		 * @param {Object} childindex
		 * @param {Object} bindex
		 * 案例判断题
		 */
		judgeSelectChild(ansindex, childindex, bindex) {
			if (this.questionList[bindex].ques[ansindex]) return;
			this.$set(this.questionList[bindex].ques, ansindex, childindex + '');
		},

		openFooterTab() {
			this.show = true;
		},
		hideDialog() {
			this.showDialog = false;
		},
		changeIndex(index) {
			this.current = index;
		},

		swiperChange(e) {
			this.current = e.detail.current;
		},

		
		pdsubmit() {
			if (this.bankType == 1) {
				let ansCount = this.questionOverNum(); //已答题数
				this.lastCount = this.questionList.length - ansCount; //统计未答完的题数
				//没有答完
				if (this.lastCount !== 0) {
					this.cgType = 6;
					this.showpopups = true;
					return;
				}
			}
			this.submit();
		},
		/**
		 * 交卷
		 */
		submit() {
			let score = 0; //计算总分
			let reportStatus = 0;
			let number = 0;  //做对的题目数量
			let doQuestionNum = 0;  //做过的题目数量
			let allScore = 0;  //总分
			let passScore = 0;
			let doWrongQuestionIds = []; //错题和未做题id(客观题)
			let doQuestionIds = []; //做过的题目id
			let rightQuestionIds = []; //做对的题目id
			this.questionList.forEach((item, index) => {
				passScore = item.passScore
				if (item.type == 1) {
					//正确
					if (item.ques == item.ans) {
						item.scoreResult = item.score;
						score += item.score;
						number++;
						rightQuestionIds.push(item.questionId)
					} else { //错误
						item.scoreResult = 0;
						doWrongQuestionIds.push(item.questionId)
					}
					allScore += item.score;
					if (item.ques) {
						doQuestionNum++;
						doQuestionIds.push(item.questionId)
					}
				} else if (item.type == 2) {
					let isRight =
						item.ans &&
						item.ans.every((quesItem, quesIndex) => {
							if(item.ques) {
								return item.ques[quesIndex] == item.ans[quesIndex];
							} else {
								return false;
							}
							
						});

					if (isRight) {
						score += item.score;
						number++;
						item.scoreResult = item.score;
						rightQuestionIds.push(item.questionId)
					} else {
						let checkboxScore = item.score;  //获取单题总分数
						item.ques && item.ques.forEach((ques,quesIndex) => {
							//选错一个全扣
							if(item.ques) {
								if(item.ans.indexOf(item.ques[quesIndex]) == -1) {
									checkboxScore = 0;
								} 
							} else {
								checkboxScore = 0;
							}
						})
						console.log(checkboxScore)
						
						//没选错
						if(checkboxScore) {
							
							item.ans.forEach((ans,quesIndex) => {
								//漏选扣一部分
								if(item.ques) {
									
									if(item.ques.indexOf(item.ans[quesIndex]) == -1) {
										checkboxScore -= item.partScore;
									}
								} else {
									checkboxScore = 0;
								} 
							})
						}
						
						
						if(checkboxScore <= 0) { //0分
							item.scoreResult = 0;
							doWrongQuestionIds.push(item.questionId)
						} else { //部分分
							number++;
							item.scoreResult = checkboxScore;
							score += checkboxScore;
							rightQuestionIds.push(item.questionId)
						}
					}
					allScore += item.score;
					if (item.ques && item.ques.length) {
						doQuestionNum++;
						doQuestionIds.push(item.questionId)
					}
				} else if (item.type == 3) {
					if (item.ques == item.ans) {
						item.scoreResult = item.score;
						score += item.score;
						number++;
						rightQuestionIds.push(item.questionId)
					} else {
						item.scoreResult = 0;
						doWrongQuestionIds.push(item.questionId)
					}
					allScore += item.score;
					if (item.ques) {
						doQuestionNum++;
						doQuestionIds.push(item.questionId)
					}
				} else if (item.type == 4) {
					if (item.ques && item.ques.length) {
						doQuestionNum++;
					}
				} else if (item.type == 5) {
					if (item.ques) {
						doQuestionNum++;
					}
				}
			});
			
			//大于分及格
			if(score >= passScore) {
				reportStatus = 1
			} else {
				reportStatus = 0
			}
			
			//交卷
			this.$api
				.bankRecordEdit({
					moduleId:this.moduleId || 0,
					chapterId:this.chapterId || 0,
					gradeId:this.gradeId,
					examId: this.id,
					goodsId: this.goodsId,
					reportStatus:reportStatus,
					recordId: this.recordId,
					courseId:this.courseId,
					// rightQuestionNum: number,
					status: 1,
					// doQuestionIds:doQuestionIds.join(','),
					// rightQuestionIds:rightQuestionIds.join(','),
					// doQuestionNum: doQuestionNum,
					performance: score,
					totalScore: allScore,
					// examTime: parseInt(this.allTimes),
					// doTime: parseInt(this.allTimes) - parseInt(this.lastTime),
					// historyExamJson: JSON.stringify(this.questionList)
				})
				.then(res => {
					this.isSubmit = true;
					if (res.data.code == 200) {
						uni.showToast({
							title: '交卷成功',
							duration: 1000,
							mask:true,
							icon: 'none'
						});

						setTimeout(() => {
							uni.redirectTo({
								url: '/pages2/class/question_report?rightQuestionNum='+number+'&doWrongQuestionNum='+doWrongQuestionIds.length+'&score='+score+'&totalScore='+allScore+'&reportStatus='+reportStatus
							});
						}, 1000);
					}
				});
				
		},


		/**
		 * @param {Object} imgIndex
		 * @param {Object} bankIndex
		 * 删除简答图片
		 */
		deleteImg(imgIndex, bankIndex) {
			this.questionList[bankIndex].ansText.imageList.splice(imgIndex, 1);
		},

		/**
		 * @param {Object} imgIndex
		 * @param {Object} bankIndex
		 * @param {Object} ansIndex
		 * 删除案例题简答图片
		 */
		deleteImgChild(imgIndex, bankIndex, ansIndex) {
			this.questionList[bankIndex].jsonStr[ansIndex].ansText.imageList.splice(imgIndex, 1);
		},

		/**
		 * @param {Object} bankindex
		 * 选择上传图片
		 */
		chooseImg(bankindex) {
			if(this.questionList[bankindex] && this.questionList[bankindex].ansText && this.questionList[bankindex].ansText.imageList.length >= 4) {
				uni.showToast({
					icon:'none',
					title:'最多选择4张'
				})
				return;
			}
			uni.chooseImage({
				count: 1, //默认9
				sizeType: ['compressed'], //可以指定是原图还是压缩图，默认二者都有
				sourceType: ['album', 'camera'], //从相册选择
				success: res => {
					let self = this;
					// console.log(JSON.stringify(res.tempFilePaths));
					let img = res.tempFilePaths[0];
					uni.getImageInfo({
						src: img,
						success: async res => {
							let canvasWidth = res.width; //图片原始长宽
							let canvasHeight = res.height;
							if (canvasWidth > 1000 || canvasHeight > 1000) {
								uni.compressImage({
									src: img,
									quality: 75,
									width: '50%',
									height: '50%',
									success: async rest => {
										const dir = await self.uploadFile(rest.tempFilePath, 0);
										this.questionList[bankindex].ansText.imageList.push(dir);
									}
								});
							} else {
								const dir = await self.uploadFile(img, 0);
								this.questionList[bankindex].ansText.imageList.push(dir);
							}
						}
					});
				}
			});
		},

		/**
		 * @param {Object} bankindex
		 * @param {Object} ansindex
		 * 案例题选择上传图片
		 */
		chooseImgChild(bankindex, ansindex) {
			uni.chooseImage({
				count: 1, //默认9
				sizeType: ['compressed'], //可以指定是原图还是压缩图，默认二者都有
				sourceType: ['album', 'camera'], //从相册选择
				success: res => {
					let self = this;
					// console.log(JSON.stringify(res.tempFilePaths));
					let img = res.tempFilePaths[0];
					uni.getImageInfo({
						src: img,
						success: async res => {
							let canvasWidth = res.width; //图片原始长宽
							let canvasHeight = res.height;
							if (canvasWidth > 1000 || canvasHeight > 1000) {
								uni.compressImage({
									src: img,
									quality: 75,
									width: '50%',
									height: '50%',
									success: async rest => {
										const dir = await self.uploadFile(rest.tempFilePath, 0);
										this.questionList[bankindex].jsonStr[ansindex].ansText.imageList.push(dir);
									}
								});
							} else {
								const dir = await self.uploadFile(img, 0);
								this.questionList[bankindex].jsonStr[ansindex].ansText.imageList.push(dir);
							}
						}
					});
				}
			});
		},

		uploadFile(options, int) {
			var self = this;
			return new Promise((resolve, reject) => {
				var data = {
					imageStatus: int
				};
				self.$api.aliyunpolicy(data).then(res => {
					console.log(res.data, 6);
					if (res.data.code != 200) {
						self.$method.showToast('签名错误' + JSON.stringify(res.data));
						return;
					}
					var ossToken = res.data.data.resultContent;
					if (ossToken.host == null || ossToken.host == undefined) {
						self.$method.showToast('上传路径报错' + JSON.stringify(res.data));
						return;
					}
					uni.uploadFile({
						url: ossToken.host,
						name: 'file',
						filePath: options,
						fileType: 'image',
						header: {
							AuthorizationToken: 'WX ' + uni.getStorageSync('token')
						},
						formData: {
							key: ossToken.dir,
							OSSAccessKeyId: ossToken.accessid,
							policy: ossToken.policy,
							Signature: ossToken.signature,
							callback: ossToken.callback,
							success_action_status: 200
						},
						success: result => {
							if (result.statusCode === 200) {
								self.ossAvatarUrl = ossToken.dir;
								resolve(ossToken.dir);
							} else {
								uni.showToast({
									title: '上传失败',
									icon: 'none'
								});
								return;
							}
						},
						fail: error => {
							uni.showToast({
								title: '上传接口报错' + error,
								icon: 'none'
							});
							return;
						}
					});
				});
			});
		},
		/**
		 * @param {Object} type
		 * @param {Object} bankindex
		 * 简答题答案确认
		 */
		submitAns(bankindex) {
			console.log(this.questionList[bankindex]);
			if (!this.questionList[bankindex].ansText.text && !this.questionList[bankindex].ansText.imageList.length) {
				uni.showToast({
					title: '请输入内容或上传图片',
					duration: 2000,
					icon: 'none'
				});
				return;
			}

			this.$set(this.questionList[bankindex], 'ques', {
				imageList: this.questionList[bankindex].ansText.imageList,
				text: this.questionList[bankindex].ansText.text
			});
		},

		/**
		 * @param {Object} bankindex
		 * @param {Object} ansindex
		 * 案例题简答答案确认
		 */
		submitAnsChild(bankindex, ansindex) {
			if (!this.questionList[bankindex].jsonStr[ansindex].ansText.text && !this.questionList[bankindex].jsonStr[ansindex].ansText.imageList.length) {
				uni.showToast({
					title: '请输入内容或上传图片',
					duration: 2000,
					icon: 'none'
				});
				return;
			}

			this.$set(this.questionList[bankindex].ques, ansindex, {
				imageList: this.questionList[bankindex].jsonStr[ansindex].ansText.imageList,
				text: this.questionList[bankindex].jsonStr[ansindex].ansText.text
			});
		},

		isRight(item, index) {
			//单选
			if (this.questionList[index].ques) {
				if (item.type == 1) {
					return this.questionList[index].ques == this.questionList[index].ans;
					//多选
				} else if (item.type == 2) {
					//每一项都相等
					return this.questionList[index].ques.every((item, i) => {
						return item == this.questionList[index].ans[i];
					});
					//判断
				} else if (item.type == 3) {
					return this.questionList[index].ques == this.questionList[index].ans;
					// } else if (item.type == 5) {
					// 	if(this.questionList[index].ques.text){
					// 		return true
					// 	}else{
					// 		return false
					// 	}
				} else {
					return false;
				}
			} else {
				return false;
			}
		},

		right(bankIndex, ansIndex, option) {
			if (this.questionList[bankIndex].ques[ansIndex] && this.questionList[bankIndex].ans[ansIndex]) {
				if (this.questionList[bankIndex].ques[ansIndex].indexOf(option.optionsId) != -1 || this.questionList[bankIndex].ans[ansIndex].indexOf(option.optionsId) != -1) {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		},

		wrong(bankIndex, ansIndex, option) {
			if (this.questionList[bankIndex].ques[ansIndex] && this.questionList[bankIndex].ans[ansIndex]) {
				if (this.questionList[bankIndex].ques[ansIndex].indexOf(option.optionsId) != -1 && this.questionList[bankIndex].ans[ansIndex].indexOf(option.optionsId) == -1) {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		},

		isWrong(item, index) {
			if (this.questionList[index].ques) {
				//单选
				if (item.type == 1) {
					return this.questionList[index].ques != this.questionList[index].ans;
					//多选
				} else if (item.type == 2) {
					//每一项都相等
					return this.questionList[index].ques.some((item, index) => {
						return item != this.questionList[index].ans;
					});
					//判断
				} else if (item.type == 3) {
					return this.questionList[index].ques != this.questionList[index].ans;
				} else {
					return false;
				}
			} else {
				return false;
			}
		},

		tabSelect(index, bankindex) {
			this.$set(this.questionList[bankindex], 'current', index);
		}
	}
};
</script>

<style lang="scss" scoped>
	.photoBox {
		background-color: #FFFFFF;
		border-radius: 32px 32px 0px 0px;
		.photoTop {
			height: 74upx;
			display: flex;
			align-items: center;
			justify-content: space-between;
			padding: 0upx 38upx;
			.sqzz {
				width: 28upx;
				height: 28upx;
				display: flex;
				align-items: center;
				justify-content: center;
			}
			.centersq {
				color: #333;
				font-size: 30upx;
				font-weight: 500;
			}
		}
		.photoCenter {
			width: 750upx;
			height: 979upx;
			position: relative;
			.custom {
				width: 750upx;
				height: 979upx;
				position: absolute;
				z-index: 1000;
				top: 0;
				left: 0;
				image {
					width: 100%;
					height: 100%;
				}
			}
		}
		.btnResult {
			height: 100rpx;
			width: 100%;
			background-color: #07c160;
			text-align: center;
			line-height: 100upx;
			color: #fff;
			font-size: 32upx;
			font-weight: bold;
		}
	}
	
.questionBank {
	width:100%;
	height:100vh;
	display: flex;
	flex-direction: column;
}
.swiper {
	width: 100%;
	flex:1;
}
.lisSty {
	margin-bottom: 16rpx;
	display: flex;

	.flex_auto {
		flex: 1;
	}
}
.activeTI {
	vertical-align: middle;
	display: inline-block;
	border: 1rpx solid #eee;
	border-radius: 50rpx;
	height: 48rpx;
	line-height: 46rpx;
	text-align: center;
	width: 48rpx;
	margin-right: 15rpx;
	color: #666;
	font-size: 30rpx;

	&.right {
		color: #fff;
		background: green;
	}

	&.wrong {
		color: #fff;
		background: red;
	}

	&.checked {
		color: #fff;
		background: blue;
	}
}

.submit_checkbox {
	margin: 20rpx auto;
	width: 526rpx;
	height: 80rpx;
	background: rgba(0, 122, 255, 1);
	color: #fff;
	text-align: center;
	line-height: 80rpx;
	font-size: 30rpx;
	border-radius: 40rpx;
}
.titles {
	overflow: hidden;
	margin-bottom: 24rpx;
}
.titBox {
	padding: 41rpx 25rpx 24rpx 25rpx;
}

.tabs {
	margin: 10rpx;
	display: flex;
	.tab {
		margin: 0 10rpx;
		width: 96rpx;
		height: 48rpx;
		line-height: 48rpx;
		text-align: center;
		color: #007aff;
		font-size: 28rpx;
		border-radius: 16rpx;

		&.current {
			color: #fff;
			background: #007aff;
		}
	}
}

.ans {
	margin: 8rpx 8rpx 8rpx;

	.ans_input {
		border-radius: 16rpx;
		background: #fff;
		.top {
			border-bottom: 1rpx solid #eeeeee;
			padding: 16rpx;
			display: flex;
			align-items: center;

			.icon {
				margin-right: 20rpx;
				width: 40rpx;
				height: 38rpx;
			}

			.progress {
				flex: 1;
			}

			.submit {
				width: 168rpx;
				height: 48rpx;
				line-height: 48rpx;
				text-align: center;
				color: #fff;
				font-size: 30rpx;
				background: #007aff;
				border-radius: 24rpx;
				
				&.disabled {
					opacity: 0.6;
				}
			}
		}

		.textarea {
			textarea {
				width: 100%;
				height: 287rpx;
				padding: 10rpx;
			}
		}

		.imgs {
			overflow: hidden;
			display: flex;
			width: 100%;
			.img {
				width: 104rpx;
				height: 104rpx;
				border-radius: 8rpx;
				position: relative;
				margin: 20rpx;

				text {
					position: absolute;
					right: -15rpx;
					top: -15rpx;
					width: 30rpx;
					height: 30rpx;
					text-align: center;
					line-height: 30rpx;
					color: #fff;
					background: red;
					border-radius: 50%;
				}

				image {
					width: 100%;
					height: 100%;
				}
			}
		}
	}

	.ans_submit {
		padding: 16rpx;
		border-radius: 16rpx;
		background: #fff;

		.imgs {
			overflow: hidden;
			display: flex;
			width: 100%;
			.img {
				width: 104rpx;
				height: 104rpx;
				border-radius: 8rpx;
				position: relative;
				margin: 20rpx;

				image {
					width: 100%;
					height: 100%;
				}
			}
		}
	}
}
.firstLetter {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 30rpx;
	.leftLetters {
		display: flex;
		align-items: center;
		width: 220rpx;
		.btnType {
			padding: 5rpx 10rpx;
			border: 1rpx solid #007aff;
			border-radius: 10rpx;
			background-color: rgba(0, 122, 255, 0.1);
			font-size: 28rpx;
			color: #007aff;
			margin-right: 15rpx;
		}
	}
}
.popupView {
	height: 100%;
	padding-bottom: 100rpx;
	.popupTops {
		height: 77rpx;
		border-bottom: 1rpx solid #eee;
		text-align: center;
		line-height: 77rpx;
		font-size: 24rpx;
		color: #999;
		position: relative;
		.topIcon {
			position: absolute;
			top: 10rpx;
			left: 50%;
			transform: translateX(-50%);
			width: 80rpx;
			height: 8rpx;
			background-color: #999;
			border-radius: 4rpx;
		}
	}
	.popupContent {
	}
}
.pageContent {
	position: relative;
	background-color: #eaeef1;
	height: 100%;
	padding-top: 8rpx;
	padding-bottom: 100rpx;
	overflow-y: scroll;
}
.pad_8 {
	background-color: #fff;
	margin: 0rpx 8rpx 8rpx;
	border-radius: 16rpx;
	
	&.no-margin {
		margin-top:-16rpx;
		border-radius: 0 0 16rpx 16rpx;
	}
}
.answer {
	height: 80rpx;
	line-height: 80rpx;
	padding: 0rpx 24rpx;
	display: flex;
	align-items: center;
	justify-content: space-between;
	color: #666;
	font-size: 30rpx;
}
.footer_btn {
	background-color: #fff;
	z-index: 10078;
	position: fixed;
	bottom: 0rpx;
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	height: 98rpx;
	padding: 0rpx 38rpx;
	border-top: 1rpx solid #eee;

	.flex_center {
		flex:1;
		display: flex;
		justify-content: center;
		align-items: center;
		flex-direction: column;
		margin:0 200rpx;
		font-size: 24rpx;
		color: #999999;
		
		
		.up-icon {
			margin-bottom:18rpx;
			width:100%;
			display: flex;
			justify-content: center;
			image {
				width:58rpx;
				height:21rpx;
			}
		}
	}
	.collect {
		visibility: hidden;
		width:100rpx;

		&.show {
			visibility: visible;
		}
		
		>view {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			
			image {
				width:32rpx;
				height:32rpx;
				margin-bottom:6rpx;
			}
			
			view {
				font-size: 24rpx;
				color: #999999;
			}
		}
	}
}
.boxSty {
	padding: 44rpx 41rpx 0rpx;
}
.liListSty {
	border: 1rpx solid #eeeeee;
	width: 88rpx;
	height: 88rpx;
	border-radius: 32rpx;
	text-align: center;
	line-height: 88rpx;
	color: #333;
	font-size: 32rpx;
	float: left;
	margin: 20rpx 23rpx;

	&.isRight {
		border: 1rpx solid #eeeeee;
		color: #fff;
		background: green;
	}

	&.isWrong {
		border: 1rpx solid #eeeeee;
		color: #fff;
		background: red;
	}
}
.answerInfos {
	padding: 25rpx 25rpx 25rpx 23rpx;
}
.answerTitle {
	margin-bottom: 28rpx;
	color: #666;
	font-size: 30rpx;
}
.answerContent {
	font-size: 30rpx;
	color: #666;
}

.textChild {
	display: inline-block;
	vertical-align: middle;
}

.dialog {
	position: fixed;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, 0.8);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	z-index: 20000;

	.text {
		font-size: 32rpx;
		color: #ffffff;
		text-align: center;
	}

	.btn {
		width: 242rpx;
		height: 82rpx;
		border: 2rpx solid #ffffff;
		border-radius: 16rpx;
		text-align: center;
		line-height: 82rpx;
		margin: 41rpx auto;
		color: #fff;
		font-size: 32rpx;
	}
}

.dialog_wrap {
	position: fixed;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	z-index: 9999999999;

	.bg {
		background: rgba(0, 0, 0, 0.3);
		position: absolute;
		left: 0;
		top: 0;
		width: 100%;
		height: 100%;
	}

	.dialog {
		position: absolute;
		left: 50%;
		top: 50%;
		transform: translate3D(-50%, -50%, 0);
		width: 640rpx;
		height: 439rpx;
		background: #ffffff;
		border-radius: 24rpx;

		.title {
			font-size: 30rpx;
			font-weight: bold;
			color: #333333;
			line-height: 48rpx;
			text-align: center;
			margin-top: 40rpx;
		}

		.content {
			margin: 35rpx 35rpx 0;
			font-size: 30rpx;
			color: #666666;
			line-height: 48rpx;
		}

		.btns {
			margin-top: 35rpx;
			display: flex;
			align-items: center;
			justify-content: center;

			.btn {
				width: 200rpx;
				height: 80rpx;
				line-height: 80rpx;
				text-align: center;
				background: #f5f5f5;
				border-radius: 40rpx;
				font-size: 30rpx;
				color: rgba(0, 122, 255, 1);
				background: #f5f5f5;
				margin: 0 20rpx;

				&.active {
					color: #f5f5f5;
					background: rgba(0, 122, 255, 1);
				}
			}
		}
	}
}
.popboxs {
	width: 100%;
	height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.classTops {
	flex-shrink: 0;
	padding: 39rpx 0rpx 4rpx;
	font-weight: bold;
	color: #333;
	font-size: 30rpx;
}
.textStys {
	width: 100%;
	flex: 1;
	padding: 36rpx;
}
.classFootsty {
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10rpx 0rpx 40rpx;
	.btnsty {
		width: 200rpx;
		height: 80rpx;
		border-radius: 40rpx;
		font-weight: bold;
		font-size: 30rpx;
		text-align: center;
		line-height: 80rpx;
	}
	.btns1 {
		background-color: #f5f5f5;
		color: #007aff;
	}
	.btns2 {
		margin-left: 40rpx;
		background-color: #007aff;
		color: #ffffff;
	}
}
</style>
