Commit 7f3fe2ab authored by 罗超's avatar 罗超

1

parent a0cc33d2
...@@ -5,127 +5,235 @@ ...@@ -5,127 +5,235 @@
<view class="name"> <view class="name">
<view> <view>
{{ changeNumToHan(sortIndex) }}{{ data.GroupName }} {{ changeNumToHan(sortIndex) }}{{ data.GroupName }}
<text style="color: #999999">(共{{ data.DetailsList.length }}道,{{ data.GScore }}分)</text> <text style="color: #999999"
>(共{{ data.DetailsList.length }}道,{{ data.GScore }}分)</text
>
</view> </view>
<view class="ExamIndex_Box"> <view class="ExamIndex_Box">
<text class="Single_Before">{{ ExamIndex }}</text>/<text <text class="Single_Before">{{ ExamIndex }}</text
class="Exam_Total">{{ data.DetailsList.length }}</text> >/<text class="Exam_Total">{{ data.DetailsList.length }}</text>
</view> </view>
</view> </view>
<swiper class="swiper-box" :style="{ <swiper
class="swiper-box"
:style="{
height: `calc(100vh - 300rpx - ${statusBarHeight}px)`, height: `calc(100vh - 300rpx - ${statusBarHeight}px)`,
}" :autoplay="autoplay" :current="current" @change="onchange" :skip-hidden-item-layout="true"> }"
:autoplay="autoplay"
:current="current"
@change="onchange"
:skip-hidden-item-layout="true"
>
<swiper-item v-if="sortIndex != 1"></swiper-item> <swiper-item v-if="sortIndex != 1"></swiper-item>
<swiper-item v-for="(item1, index1) in data.DetailsList" :key="index1"> <swiper-item v-for="(item1, index1) in data.DetailsList" :key="index1">
<view class="item1"> <view class="item1">
<view class="flex flex_start_center"> <view class="flex flex_start_center">
<view class="audioBox flex flex_center_center" @click="audioManage(item1.Src)"> <view
<image style="width: 26rpx; height: 22rpx" class="audioBox flex flex_center_center"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/horn.png" /> @click="audioManage(item1.Src)"
<van-count-down :time="audioTime" :auto-start="false" class="flex flex_center_center" >
style="color: #00acf9" ref="listenCountdown" format="mm:ss" /> <image
style="width: 26rpx; height: 22rpx"
src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/horn.png"
/>
<van-count-down
:time="audioTime"
:auto-start="false"
class="flex flex_center_center"
style="color: #00acf9"
ref="listenCountdown"
format="mm:ss"
/>
</view> </view>
</view> </view>
<view class="questionView"> <view class="questionView">
<view v-for="(item2, index2) in item1.QuestionContentObj" :key="index2" class="item2"> <view
v-for="(item2, index2) in item1.QuestionContentObj"
:key="index2"
class="item2"
>
<view class="flex questionTitle"> <view class="flex questionTitle">
<view>{{ index2 + 1 }}、({{ item2.QuestionName }},{{item2.SubScore}}分)</view> <view
>{{ index2 + 1 }}、({{ item2.QuestionName }},{{
item2.SubScore
}}分)</view
>
<view v-html="item2.SubTitle"></view> <view v-html="item2.SubTitle"></view>
</view> </view>
<view v-for="(item3, index3) in item2.SubAnwser" :key="index3"> <view v-for="(item3, index3) in item2.SubAnwser" :key="index3">
<!-- 单选 、判断--> <!-- 单选 、判断-->
<view class="flex flex_start_center item3" <view
v-if="item2.QuestionKey === 'single' || item2.QuestionKey === 'judge'"> class="flex flex_start_center item3"
v-if="
item2.QuestionKey === 'single' ||
item2.QuestionKey === 'judge'
"
>
<template v-if="isOperate"> <template v-if="isOperate">
<view class="chooseNum" :class="{ myAnswer: item3.IsAnswer }" <view
@click="singerChange(item2, item3)">{{ item3.Name }} class="chooseNum"
:class="{ myAnswer: item3.IsAnswer }"
@click="singerChange(item2, item3)"
>{{ item3.Name }}
</view> </view>
<view class="chooseName" @click="singerChange(item2, item3)" <view
v-html="item3.Content"></view> class="chooseName"
@click="singerChange(item2, item3)"
v-html="item3.Content"
></view>
</template> </template>
<template v-else> <template v-else>
<view class="chooseNum" :class="{ isTrueAnswer: item3.IsAnswer }"> <view
class="chooseNum"
:class="{ isTrueAnswer: item3.IsAnswer }"
>
{{ item3.Name }} {{ item3.Name }}
</view> </view>
<view class="chooseName" :class="{ isTrueAnswer: item3.IsAnswer }" <view
v-html="item3.Content"></view> class="chooseName"
:class="{ isTrueAnswer: item3.IsAnswer }"
v-html="item3.Content"
></view>
</template> </template>
</view> </view>
<!-- 多选 --> <!-- 多选 -->
<view class="flex flex_start_center item3" v-if="item2.QuestionKey === 'multiple'"> <view
class="flex flex_start_center item3"
v-if="item2.QuestionKey === 'multiple'"
>
<template v-if="isOperate"> <template v-if="isOperate">
<view class="chooseNum" :class="{ myAnswer: item3.IsAnswer }" <view
@click="multipleChange(item2,item3)">{{ item3.Name }} class="chooseNum"
:class="{ myAnswer: item3.IsAnswer }"
@click="multipleChange(item2, item3)"
>{{ item3.Name }}
</view> </view>
<view class="chooseName" @click="multipleChange(item2, item3)" <view
v-html="item3.Content"></view> class="chooseName"
@click="multipleChange(item2, item3)"
v-html="item3.Content"
></view>
</template> </template>
<template v-else> <template v-else>
<view class="chooseNum" :class="{ isTrueAnswer: item3.IsAnswer }"> <view
class="chooseNum"
:class="{ isTrueAnswer: item3.IsAnswer }"
>
{{ item3.Name }} {{ item3.Name }}
</view> </view>
<view class="chooseName" :class="{ isTrueAnswer: item3.IsAnswer }" <view
v-html="item3.Content"></view> class="chooseName"
:class="{ isTrueAnswer: item3.IsAnswer }"
v-html="item3.Content"
></view>
</template> </template>
</view> </view>
<!-- 填空 --> <!-- 填空 -->
<view class="flex flex_start_center item3" v-if="item2.QuestionKey === 'fill-in'"> <view
class="flex flex_start_center item3"
v-if="item2.QuestionKey === 'fill-in'"
>
<view class="chooseNum">{{ index3 + 1 }} </view> <view class="chooseNum">{{ index3 + 1 }} </view>
<template v-if="isOperate"> <template v-if="isOperate">
<input type="text" v-model="item2.myAnswer" class="chooseName chooseName2" <input
placeholder="请填写答案" @input="AnswerChange(item2)" /> type="text"
v-model="item2.myAnswer"
class="chooseName chooseName2"
placeholder="请填写答案"
@input="AnswerChange(item2)"
/>
</template> </template>
<template v-else> <template v-else>
<view class="viewAnswerContent" v-html="item2.myAnswer"></view> <view
class="viewAnswerContent"
v-html="item2.myAnswer"
></view>
</template> </template>
</view> </view>
<!-- 简答 --> <!-- 简答 -->
<view class="flex flex_start_center item3" <view
v-if="item2.QuestionKey === 'short-answer'"> class="flex flex_start_center item3"
v-if="item2.QuestionKey === 'short-answer'"
>
<template v-if="isOperate"> <template v-if="isOperate">
<textarea type="text" v-model="item2.myAnswer" <textarea
class="chooseName chooseName2" placeholder="请填写答案" type="text"
@input="AnswerChange(item2)" /> v-model="item2.myAnswer"
class="chooseName chooseName2"
placeholder="请填写答案"
@input="AnswerChange(item2)"
/>
</template> </template>
<template v-else> <template v-else>
<view class="viewAnswerContent" v-html="item2.myAnswer"></view> <view
class="viewAnswerContent"
v-html="item2.myAnswer"
></view>
</template> </template>
</view> </view>
</view> </view>
<template v-if="!isOperate&&(ExamStatus==2||ExamStatus==3)"> <template
v-if="!isOperate && (ExamStatus == 2 || ExamStatus == 3)"
>
<view class="AnswerContent"> <view class="AnswerContent">
<view> <view>
<text style="color: #8c8a94">正确答案:</text> <text style="color: #8c8a94">正确答案:</text>
<text class="isTrueAnswer">{{ item1.QuestionAnswerList[index2].SubAnswer }}</text> <text class="isTrueAnswer">{{
item1.QuestionAnswerList[index2].SubAnswer
}}</text
>
<text> <text>
您的答案: 您的答案:
<template v-if="item1.AnswerList && item1.AnswerList.length>0"> <template
<text v-if="item1.QuestionAnswerList[index2].SubAnswer == item1.AnswerList[index2].SubAnswer" v-if="item1.AnswerList && item1.AnswerList.length > 0"
class="isTrueAnswer"> >
<text
v-if="
item1.QuestionAnswerList[index2].SubAnswer ==
item1.AnswerList[index2].SubAnswer
"
class="isTrueAnswer"
>
{{ item1.AnswerList[index2].SubAnswer }},回答正确 {{ item1.AnswerList[index2].SubAnswer }},回答正确
</text> </text>
<text v-else class="isNotAnswer"> <text v-else class="isNotAnswer">
<template v-if="item1.AnswerList[index2].SubAnswer!=''"> <template
v-if="item1.AnswerList[index2].SubAnswer != ''"
>
{{ item1.AnswerList[index2].SubAnswer }},回答错误 {{ item1.AnswerList[index2].SubAnswer }},回答错误
</template> </template>
<template v-else> <template v-else> 未回答 </template>
未回答
</template>
</text> </text>
</template> </template>
</text> </text>
</view> </view>
<view style="margin:20rpx 0;" v-if="item1.AnswerList[index2].StudentScore"> <view
<text style="color:#8c8a94">您的得分:</text> style="margin: 20rpx 0"
<text class="isTrueAnswer" v-if="item1.AnswerList[index2].StudentScore>0">{{item1.AnswerList[index2].StudentScore}}</text> v-if="item1.AnswerList[index2].StudentScore"
<text class="isNotAnswer" v-else>{{item1.AnswerList[index2].StudentScore}}</text> >
<text style="color: #8c8a94">您的得分:</text>
<text
class="isTrueAnswer"
v-if="item1.AnswerList[index2].StudentScore > 0"
>{{ item1.AnswerList[index2].StudentScore }}</text
>
<text class="isNotAnswer" v-else>{{
item1.AnswerList[index2].StudentScore
}}</text>
</view> </view>
</view> </view>
</template> </template>
</view> </view>
</view> </view>
</view> </view>
<view class="AnswerContent" v-if="!isOperate&&item1.AnswerParse&&(ExamStatus==2||ExamStatus==3)"> <view
class="AnswerContent"
v-if="
!isOperate &&
item1.AnswerParse &&
(ExamStatus == 2 || ExamStatus == 3)
"
>
<view style="word-wrap: break-word"> <view style="word-wrap: break-word">
<text style="color: #8c8a94">解析:</text> <text style="color: #8c8a94">解析:</text>
<view <view
...@@ -143,7 +251,7 @@ ...@@ -143,7 +251,7 @@
</template> </template>
<script> <script>
import { import {
ref, ref,
reactive, reactive,
toRefs, toRefs,
...@@ -153,13 +261,11 @@ ...@@ -153,13 +261,11 @@
computed, computed,
onMounted, onMounted,
onUnmounted, onUnmounted,
} from "vue"; } from "vue";
import { import { changeNumToHan } from "../../utils/index";
changeNumToHan const innerAudioContext = uni.createInnerAudioContext();
} from "../../utils/index"; innerAudioContext.autoplay = true;
const innerAudioContext = uni.createInnerAudioContext(); export default {
innerAudioContext.autoplay = true;
export default {
props: { props: {
paperData: Object, paperData: Object,
sort: Number, sort: Number,
...@@ -167,14 +273,11 @@ ...@@ -167,14 +273,11 @@
isLast: Boolean, isLast: Boolean,
startIndex: Number, startIndex: Number,
isOperate: Boolean, isOperate: Boolean,
ExamStatus: Number ExamStatus: Number,
}, },
setup(props, context) { setup(props, context) {
let s = getCurrentInstance(); let { refs } = getCurrentInstance();
let { console.log(163, refs);
refs
} = getCurrentInstance();
console.log(163, s.$refs);
let data = reactive({ let data = reactive({
autoplay: false, autoplay: false,
sortIndex: props.sort + 1, //大题序号 sortIndex: props.sort + 1, //大题序号
...@@ -186,7 +289,7 @@ ...@@ -186,7 +289,7 @@
isPlay: true, isPlay: true,
statusBarHeight: 0, statusBarHeight: 0,
isOperate: props.isOperate, isOperate: props.isOperate,
ExamStatus: props.ExamStatus ExamStatus: props.ExamStatus,
}); });
data.data.DetailsList.map((item) => { data.data.DetailsList.map((item) => {
let arr = item.Title.split(" "); //按空格分段 let arr = item.Title.split(" "); //按空格分段
...@@ -234,7 +337,6 @@ ...@@ -234,7 +337,6 @@
}, },
audioManage(url) { audioManage(url) {
innerAudioContext.src = url; innerAudioContext.src = url;
console.log(188, innerAudioContext);
innerAudioContext.onCanplay(() => { innerAudioContext.onCanplay(() => {
// 必须。可以当做是初始化时长 // 必须。可以当做是初始化时长
innerAudioContext.duration; innerAudioContext.duration;
...@@ -332,10 +434,10 @@ ...@@ -332,10 +434,10 @@
...methods, ...methods,
}; };
}, },
}; };
</script> </script>
<style> <style>
.name { .name {
height: 90rpx; height: 90rpx;
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC; font-family: PingFang SC;
...@@ -344,67 +446,67 @@ ...@@ -344,67 +446,67 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.ExamIndex_Box { .ExamIndex_Box {
margin-right: 20px; margin-right: 20px;
} }
.Single_Before { .Single_Before {
font-size: 28rpx; font-size: 28rpx;
font-weight: bold; font-weight: bold;
color: #da7878; color: #da7878;
} }
.isTrueAnswer { .isTrueAnswer {
color: green !important; color: green !important;
} }
.isNotAnswer { .isNotAnswer {
color: red !important; color: red !important;
} }
.AnswerContent { .AnswerContent {
font-size: 28rpx; font-size: 28rpx;
padding: 25rpx; padding: 25rpx;
background-color: #f4f4f4; background-color: #f4f4f4;
border-radius: 5px; border-radius: 5px;
} }
.viewAnswerContent { .viewAnswerContent {
width: 100%; width: 100%;
border-bottom: 1px solid #d1d1d1; border-bottom: 1px solid #d1d1d1;
padding-bottom: 5px; padding-bottom: 5px;
} }
.Exam_Total { .Exam_Total {
font-size: 25rpx; font-size: 25rpx;
color: gray; color: gray;
} }
.swiper-box { .swiper-box {
height: calc(100vh - 270rpx); height: calc(100vh - 270rpx);
box-sizing: border-box; box-sizing: border-box;
} }
.num { .num {
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: bold; font-weight: bold;
color: #111111; color: #111111;
} }
.item { .item {
/* margin-bottom: 40rpx; */ /* margin-bottom: 40rpx; */
position: relative; position: relative;
} }
.item1 { .item1 {
/* margin: 25rpx 0; */ /* margin: 25rpx 0; */
align-items: center; align-items: center;
} }
.audioBox { .audioBox {
width: 120rpx; width: 120rpx;
height: 30rpx; height: 30rpx;
background: #b4ddfe; background: #b4ddfe;
...@@ -414,25 +516,25 @@ ...@@ -414,25 +516,25 @@
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 500; font-weight: 500;
color: #00acf9; color: #00acf9;
} }
.item2 { .item2 {
box-sizing: border-box; box-sizing: border-box;
margin: 30rpx 0; margin: 30rpx 0;
/* padding: 0 30rpx; */ /* padding: 0 30rpx; */
} }
.item3 { .item3 {
padding-left: 25rpx; padding-left: 25rpx;
margin: 20rpx 0; margin: 20rpx 0;
} }
.myAnswer { .myAnswer {
background-color: #00acf9 !important; background-color: #00acf9 !important;
color: #ffffff !important; color: #ffffff !important;
} }
.chooseNum { .chooseNum {
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
text-align: center; text-align: center;
...@@ -444,29 +546,29 @@ ...@@ -444,29 +546,29 @@
font-family: PingFang SC; font-family: PingFang SC;
font-weight: bold; font-weight: bold;
color: #111111; color: #111111;
} }
.chooseName { .chooseName {
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 500; font-weight: 500;
color: #111111; color: #111111;
} }
.chooseName2 { .chooseName2 {
flex-grow: 1; flex-grow: 1;
border-bottom: 1px solid #111; border-bottom: 1px solid #111;
} }
.questionTitle { .questionTitle {
font-size: 28rpx; font-size: 28rpx;
font-family: PingFang SC; font-family: PingFang SC;
font-weight: bold; font-weight: bold;
color: #111111; color: #111111;
} }
.listen .van-count-down { .listen .van-count-down {
font-size: 22rpx !important; font-size: 22rpx !important;
color: #00acf9 !important; color: #00acf9 !important;
} }
</style> </style>
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
} }
.details-box-top-z { .details-box-top-z {
width: 100%; width: 100%;
height: 3px; height: 6rpx;
} }
.details-box-top-f { .details-box-top-f {
width: 100%; width: 100%;
height: 3px; height: 6rpx;
background: #e2e2e2; background: #e2e2e2;
} }
.details-box-t-positions { .details-box-t-positions {
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
align-items: center; align-items: center;
box-sizing: border-box; box-sizing: border-box;
padding: 0 26rpx; padding: 0 26rpx;
border-top-right-radius: 6px; border-top-right-radius: 12rpx;
border-bottom-left-radius: 6px; border-bottom-left-radius: 12rpx;
position: absolute; position: absolute;
right: 0; right: 0;
top: 0; top: 0;
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 14px; font-size: 28rpx;
color: #ffffff; color: #ffffff;
background: #cccccc; background: #cccccc;
} }
...@@ -116,7 +116,6 @@ ...@@ -116,7 +116,6 @@
font-family: PingFang SC; font-family: PingFang SC;
font-weight: 800; font-weight: 800;
color: #111111; color: #111111;
// text-align: center;
margin-top: 40rpx; margin-top: 40rpx;
margin-bottom: 30rpx; margin-bottom: 30rpx;
position: relative; position: relative;
...@@ -124,7 +123,7 @@ ...@@ -124,7 +123,7 @@
.title-pic .line-bottom { .title-pic .line-bottom {
width: 71rpx; width: 71rpx;
height: 12rpx; height: 12rpx;
background-color: #00ACF9; background-color: #00acf9;
border-radius: 4rpx; border-radius: 4rpx;
position: absolute; position: absolute;
left: 0; left: 0;
...@@ -197,7 +196,7 @@ ...@@ -197,7 +196,7 @@
width: 100%; width: 100%;
min-height: 90rpx; min-height: 90rpx;
border-radius: 20rpx; border-radius: 20rpx;
background-color: #00ACF9; background-color: #00acf9;
color: #fff; color: #fff;
display: flex; display: flex;
box-sizing: border-box; box-sizing: border-box;
...@@ -221,7 +220,7 @@ ...@@ -221,7 +220,7 @@
position: absolute; position: absolute;
width: 4rpx; width: 4rpx;
height: 100%; height: 100%;
background-color: #00ACF9; background-color: #00acf9;
left: 24rpx; left: 24rpx;
top: 90rpx; top: 90rpx;
} }
...@@ -245,8 +244,8 @@ ...@@ -245,8 +244,8 @@
background-color: #dfbe6e; background-color: #dfbe6e;
border-radius: 50%; border-radius: 50%;
position: absolute; position: absolute;
left: -17.6px; left: -32rpx;
top: 4px; top: 8rpx;
} }
.Jiaheactivitydetails .con { .Jiaheactivitydetails .con {
width: 622rpx; width: 622rpx;
...@@ -343,7 +342,7 @@ ...@@ -343,7 +342,7 @@
</view> </view>
</view> </view>
<view v-if="detial.IsJoinActivity == 1"> <view v-if="detial.IsJoinActivity == 1">
<view class="details-box-top-f" style="background: #00ACF9"></view> <view class="details-box-top-f" style="background: #00acf9"></view>
<view <view
class="details-box-t-positions" class="details-box-t-positions"
:style="{ background: '#00ACF9' }" :style="{ background: '#00ACF9' }"
......
...@@ -250,14 +250,13 @@ export default { ...@@ -250,14 +250,13 @@ export default {
} }
}, },
Pay() { Pay() {
let that = this;
uni.requestPayment({ uni.requestPayment({
provider: "wxpay", provider: "wxpay",
timeStamp: this.orderInfo.timeStamp, timeStamp: data.orderInfo.timeStamp,
nonceStr: this.orderInfo.nonceStr, nonceStr: data.orderInfo.nonceStr,
package: this.orderInfo.package, package: data.orderInfo.package,
signType: this.orderInfo.signType, signType: data.orderInfo.signType,
paySign: this.orderInfo.sign, paySign: data.orderInfo.sign,
success: function (res) { success: function (res) {
console.log("success", res); console.log("success", res);
uni.showToast({ uni.showToast({
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment