AnswerReport.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <template>
  2. <view>
  3. <navbar :viewLogo="false" :backPath="url" />
  4. <view style="height:92rpx;"></view>
  5. <view class="topic-area"
  6. :style="answer_mode === answer_mode_list[0].value ? `height: ${contentRealHeight}px` : `height: ${contentRealHeight + 60}px`">
  7. <view class="answer-record-area">
  8. <text class="big-title">测试报告</text>
  9. <view class="answer-record">
  10. <view class="record-item">
  11. <text class="title-text">耗时</text>
  12. <text class="record-text">{{secondFormatConversion(answer_record.answer_duration,'chinese')}}</text>
  13. </view>
  14. <view class="record-item">
  15. <text class="title-text">正确</text>
  16. <text class="record-text">{{answer_record.right_count}}</text>
  17. </view>
  18. <view class="record-item">
  19. <text class="title-text">错误</text>
  20. <text class="record-text">{{answer_record.error_count}}</text>
  21. </view>
  22. </view>
  23. </view>
  24. <view class="topic-item-area"
  25. v-if="answer_mode == answer_mode_list[0].value||isEnable(answer_record.is_remarked)">
  26. <uni-section title="">
  27. <!-- {{question_item.is_objective}}{{answer_status_list[question_item.answer_status].label}} -->
  28. <view v-for="(question_item,index) in question_list" :key="index">
  29. <uni-badge class="uni-badge-left-margin"
  30. :style="{backgroundColor:question_item.color_mark,color:question_item.color_mark=='#F0F0F0'?'#000':'#fff'}"
  31. :text="isEnable(question_item.is_remarked)?'.':''" absolute="rightTop" size="small">
  32. <view class="topic-item-box"
  33. @click="viewAnswerQuestion(question_item.question_id,index+1,answer_record.is_remarked)">
  34. <text class="box-text">{{index+1}}</text>
  35. </view>
  36. </uni-badge>
  37. </view>
  38. </uni-section>
  39. </view>
  40. </view>
  41. <!-- 按钮 -->
  42. <template v-if="answer_mode == answer_mode_list[0].value">
  43. <view class="foot-btn">
  44. <button class="next-btn start-answer-btn" @click="enterStartAnswer()">重新答题</button>
  45. </view>
  46. </template>
  47. </view>
  48. </template>
  49. <script setup>
  50. import {
  51. GetAnswerRecordReport,
  52. GetAnswerRecordInfo
  53. } from '@/api/exercise.js';
  54. import {
  55. secondFormatConversion
  56. } from '@/utils/transform.js';
  57. import {
  58. answer_mode_list,
  59. answer_status_list,
  60. isEnable
  61. } from '@/pages/answer_question/common/data/common.js';
  62. export default {
  63. data() {
  64. return {
  65. isEnable,
  66. secondFormatConversion,
  67. answer_mode_list,
  68. answer_status_list,
  69. answer_record_id: '',
  70. exercise_share_record_id: '',
  71. answer_mode: -1,
  72. answer_record: {},
  73. question_list: [],
  74. isTask: false,
  75. selectDate: '', // 用户返回
  76. contentRealHeight: 0, //答题内容区域高度
  77. }
  78. },
  79. //第一次加载时调用
  80. created() {},
  81. onLoad(options) {
  82. uni.getSystemInfo({
  83. success: (res) => {
  84. this.contentRealHeight = res.windowHeight - 160;
  85. }
  86. });
  87. this.answer_record_id = options.answer_record_id;
  88. this.exercise_share_record_id = options.exercise_share_record_id;
  89. this.answer_mode = options.answer_mode;
  90. this.isTask = this.isEnable(options.isTask);
  91. this.selectDate = options.date;
  92. this.getAnswerRecordReport();
  93. },
  94. computed: {
  95. url() {
  96. return this.isTask ? '/pages/tabbar/task/index?date=' + this.selectDate : '/pages/tabbar/exercise/index';
  97. }
  98. },
  99. methods: {
  100. getAnswerRecordReport() {
  101. GetAnswerRecordReport({
  102. 'answer_record_id': this.answer_record_id
  103. }).then((res) => {
  104. if (res.status) {
  105. this.answer_record = res.answer_record;
  106. this.answer_mode = res.answer_record.answer_mode;
  107. this.question_list = res.question_list;
  108. // console.log('得到分享记录', res.question_list);
  109. }
  110. })
  111. },
  112. enterStartAnswer() {
  113. uni.navigateTo({
  114. url: '/pages/answer_question/answer/index?share_record_id=' + this.answer_record.exercise_share_record_id +
  115. '&isTask=' + this.isTask + '&date=' + this.selectDate
  116. })
  117. },
  118. viewAnswerQuestion(id, cur_number, is_remarked) {
  119. uni.navigateTo({
  120. url: '/pages/answer_question/answer/index?share_record_id=' + this.exercise_share_record_id +
  121. '&question_id=' + id + "&cur_number=" + cur_number + "&exercise_id=" + this.answer_record.exercise_id +
  122. "&is_remarked=" + is_remarked + "&answer_record_id=" + this.answer_record_id + '&date=' + this.selectDate
  123. })
  124. }
  125. }
  126. }
  127. </script>
  128. <style lang="scss" scoped>
  129. .topic-area {
  130. display: flex;
  131. flex-direction: column;
  132. width: 88%;
  133. margin: 16rpx auto 32rpx auto;
  134. background-color: #fff;
  135. border-radius: 16rpx;
  136. padding: 32rpx;
  137. overflow: scroll;
  138. box-shadow: 0rpx 20rpx 48rpx 0rpx rgba(0, 0, 0, 0.2);
  139. .answer-record-area {
  140. display: flex;
  141. flex-direction: column;
  142. align-items: center;
  143. row-gap: 32rpx;
  144. width: 100%;
  145. margin: 0 auto;
  146. .big-title {
  147. color: #306EFF;
  148. font-weight: 500;
  149. font-size: 64rpx;
  150. align-items: center;
  151. }
  152. .answer-record {
  153. width: 100%;
  154. height: 212rpx;
  155. background-color: #F7F7F7;
  156. border-radius: 16rpx;
  157. display: flex;
  158. align-items: center;
  159. justify-content: center;
  160. column-gap: 100rpx;
  161. .record-item {
  162. display: flex;
  163. flex-direction: column;
  164. row-gap: 16rpx;
  165. .title-text {
  166. opacity: 0.4;
  167. }
  168. .record-text {
  169. font-weight: 500;
  170. font-size: 40srpx;
  171. }
  172. }
  173. }
  174. }
  175. /deep/ .uni-section {
  176. width: 100%;
  177. .uni-section-content {
  178. display: flex;
  179. flex-wrap: wrap;
  180. row-gap: 48rpx;
  181. column-gap: 16rpx;
  182. uni-view {
  183. width: 116rpx;
  184. height: 80rpx;
  185. border-radius: 40rpx;
  186. display: flex;
  187. align-items: center;
  188. justify-content: center;
  189. .uni-badge--error {
  190. background-color: #fff;
  191. }
  192. .uni-badge-left-margin {
  193. margin-left: 10px;
  194. }
  195. .box {
  196. width: 40px;
  197. height: 40px;
  198. display: flex;
  199. justify-content: center;
  200. align-items: center;
  201. text-align: center;
  202. background-color: #DCDFE6;
  203. color: #fff;
  204. font-size: 12px;
  205. }
  206. }
  207. }
  208. }
  209. }
  210. .foot-btn {
  211. display: flex;
  212. flex-direction: row;
  213. justify-content: space-around;
  214. width: 94%;
  215. margin: 0 auto;
  216. .next-btn {
  217. border-radius: 220rpx;
  218. font-size: 28rpx;
  219. font-weight: 400;
  220. padding: 8rpx 124rpx;
  221. border: none;
  222. background-color: #306EFF;
  223. color: #fff;
  224. }
  225. .start-answer-btn {
  226. width: 100%;
  227. }
  228. }
  229. </style>