You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

860 lines
21 KiB

4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
3 weeks ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
4 months ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
3 weeks ago
4 months ago
4 months ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
4 months ago
3 weeks ago
3 weeks ago
4 months ago
  1. <template>
  2. <view id="brushQuestions">
  3. <view class="content">
  4. <view class="row row1">
  5. <view class="userInfoBox">
  6. <view class="examNo">
  7. <view class="h3">洛阳学车</view>
  8. <view class="card">第0{{ randomNumber }}号台</view>
  9. <view class="back" @click="goBack">
  10. <u-icon name="arrow-left" size="16"></u-icon>
  11. </view>
  12. </view>
  13. <view class="user">
  14. <view class="card">
  15. <view class="h3">考生信息</view>
  16. <view class="avatar">
  17. <image src="@/static/images/avatarbg.png" mode=""></image>
  18. </view>
  19. <view class="txt">用户 <text style="margin-top: 10rpx;">{{ phone }}</text></view>
  20. <!-- <view class="txt">性别</view> -->
  21. <view class="txt">类型{{ usecarStore.carInfo.carTypeName}}</view>
  22. <view class="txt">科目科目{{ usecarStore.carInfo.stepType==1?'一': '四'}}</view>
  23. </view>
  24. </view>
  25. </view>
  26. <view class="examConBox">
  27. <view class="leftBox">
  28. <view class="h3">考试题目</view>
  29. <view class="questionTxt">
  30. <view class="txt">{{currentIndex+1}}.{{ questionBank.title }}</view>
  31. <view class="txt" v-for="(item,index) in questionBank.optionArr">
  32. <view class="text"><text >{{item.key}}</text> {{item.text}}</view>
  33. </view>
  34. </view>
  35. <view class="answer flex-b">
  36. <view class="lab">您的答案
  37. <text v-if="questionBank.types==3">{{ curOption.answer=='true'?'A':'B'}}</text>
  38. <text v-else>{{ curOption.answer}}</text>
  39. </view>
  40. <view class="rightSelect flex">
  41. <view class="lab">选项</view>
  42. <view class="optio flex" v-for="(item,index) in questionBank.optionArr" >
  43. <view class="optionItem" :class="{ active: curOption.answer?.includes(item.key)}" @click="chooseOption(item)">{{item.key}}</view>
  44. </view>
  45. </view>
  46. </view>
  47. </view>
  48. <view class="rightBox">
  49. <!-- 右边盒子 -->
  50. <table style="width: 100%;height: 100%;" v-if="ansCard.length">
  51. <tr>
  52. <th class="blueItem br">题目</th>
  53. <th v-for="(item,index) in usecarStore.carInfo.stepType==1?10:5" class="blueItem br">{{index+1}}</th>
  54. </tr>
  55. <tr v-for="(item,index) in ansCard">
  56. <td class="blueItem bb">{{index+1}}</td>
  57. <td v-for="(item2,index2) in item" class="ansItem" :class="{green: item2.answer==item2.answerMy}" @click="ansCardClick(item2)">
  58. <text v-if="item2.types==3&&item2.answerMy" class="flex" style="justify-content: center;">
  59. <up-icon name="checkmark" color="#55ff7f" size="18" v-if="item2.answer==item2.answerMy"></up-icon>
  60. <up-icon name="close" color="#ff0000" size="18" v-else></up-icon>
  61. </text>
  62. <text v-else>{{ item2.answerMy }}</text>
  63. </td>
  64. </tr>
  65. </table>
  66. </view>
  67. </view>
  68. </view>
  69. <view class="row row2">
  70. <view class="timeBox">
  71. <view class="h3">考试时间</view>
  72. <view class="time"><up-count-down :time="info.totalExamTime * 60 * 1000" format="mm:ss" @finish="finishFn" ref="countDownRef"></up-count-down></view>
  73. </view>
  74. <view class="leftTpsBox">
  75. <view class="card">
  76. <view class="h3">操作提示</view>
  77. <view class="txt">本题为{{types[questionBank.types-1]}}请在备选答案中选择 {{ questionBank.types==2? '多': '一'}}个你认为正确的答案</view>
  78. </view>
  79. </view>
  80. <view class="rightBtnBox">
  81. <button class="btn hui" @click="debounce(nextQuestion(-1), 500)" :class="{disable: currentIndex==0}" :disabled="currentIndex==0">上一题</button>
  82. <button class="btn hui" @click="debounce(nextQuestion(1), 500)" :class="{disable: currentIndex>=questionBankList.length-1}" :disabled="currentIndex>=questionBankList.length-1">下一题</button>
  83. <view class="btn"@click="handApaper"> </view>
  84. </view>
  85. </view>
  86. <view class="picBox">
  87. <view class="h3">考题图片</view>
  88. <view class="imgBox">
  89. <image :src="questionBank.img" v-if="questionBank.img" @click="previewImg" mode="aspectFit"></image>
  90. </view>
  91. <u-popup :show="show" mode="center" :closeable="true" @close="show=false" bgColor="transparent">
  92. <view class="imgView">
  93. <!-- <view class="closeIcon" @click="show=false">
  94. <u-icon name="close-circle" color="#fff" size="28"></u-icon>
  95. </view> -->
  96. <view class="img">
  97. <image :src="questionBank.img" mode="aspectFit"></image>
  98. </view>
  99. </view>
  100. </u-popup>
  101. </view>
  102. </view>
  103. <u-popup :show="showCommit" mode="center" :closeable="true" round="10" @close="closeCommitPopup" >
  104. <view class="commitView">
  105. <view class="commitTit">考试确认窗口</view>
  106. <view class="commitTxt">你当前考试答对{{yesNum}}答错{{ questionBankList.length-yesNum-noNum}}未答{{ noNum }} </view>
  107. <view class="commitTxt">1点击确认交卷将提交考试成绩考试结束</view>
  108. <view class="commitTxt">2点击继续考试将关闭本窗口继续考试</view>
  109. <view class="commitBtn">
  110. <view class="btn border" @click="submitBtnFn">确定交卷</view>
  111. <view class="btn" @click="closeCommitPopup">继续考试</view>
  112. </view>
  113. </view>
  114. </u-popup>
  115. <u-popup :show="showNoPass" mode="center" :closeable="true" @close="showNoPass=false" round="10" >
  116. <view class="commitView">
  117. <view class="commitTit">考试不合格</view>
  118. <view class="commitTxt">学员您本次成绩为{{grade}}</view>
  119. <view class="commitTxt">考试不合格预祝您下次顺利</view>
  120. <view class="commitBtn">
  121. <view class="btn" @click="goBack">确定</view>
  122. </view>
  123. <view class="djs">
  124. <up-count-down :time="4 * 1000" format="ss" @finish="goBack" style="color: red;"></up-count-down> <view class="djsTxt"> <text style="color: red;"></text></view>
  125. </view>
  126. </view>
  127. </u-popup>
  128. <u-popup :show="showWrong" mode="center" :closeable="true" round="10" @close="showWrongClose" >
  129. <view class="commitView">
  130. <view class="commitTit">错题学习</view>
  131. <view class="commitTxt">{{ questionBank.title }}</view>
  132. <view class="commitTxt" v-for="(item,index) in questionBank.optionArr" >
  133. <view class="text"><text >{{item.key}}</text> {{item.text}}</view>
  134. </view>
  135. <view class="rowBg">
  136. <view class="ans">正确答案
  137. <text v-if="questionBank.types==3">{{ questionBank.answer=='true'?'A':'B'}}</text>
  138. <text v-else>{{ questionBank.answer}}</text>
  139. </view>
  140. <view class="ans blue">你的答案
  141. <text v-if="questionBank.types==3">{{ questionBank.answerMy=='true'?'A':'B'}}</text>
  142. <text v-else>{{ questionBank.answerMy}}</text>
  143. </view>
  144. </view>
  145. <view class="commitBtn">
  146. <view class="btn" @click="showWrongClose">继续考试</view>
  147. </view>
  148. <view class="djs">
  149. <view class="djsTxt">页面将在</view> <up-count-down :time="6 * 1000" format="ss" style="color: red;" @finish="showWrongClose" ></up-count-down> <view class="djsTxt"> <text style="color: red;"></text> </view>
  150. </view>
  151. </view>
  152. </u-popup>
  153. </view>
  154. </template>
  155. <script setup>
  156. import { detectOrient } from '@/utils/utils.js'
  157. import { startExamDo, startExam, questionExam } from '@/config/api.js'
  158. import { ref, onMounted, nextTick } from 'vue'
  159. import { debounce } from '@/uni_modules/uview-plus';
  160. import {
  161. onLoad,
  162. } from "@dcloudio/uni-app"
  163. import carStore from '@/store/modules/car.js'
  164. let usecarStore = carStore()
  165. let randomNumber = ''
  166. onLoad((options)=>{
  167. randomNumber = options.randomNumber
  168. })
  169. const types = ref([
  170. '单选题',
  171. '多选题',
  172. '判断题'
  173. ])
  174. let phone = uni.getStorageSync('loginInfo')?.phone
  175. const showCommit = ref(false)
  176. const showNoPass = ref(false)
  177. const showWrong = ref(false)
  178. const show = ref(false)
  179. onMounted(()=>{
  180. detectOrient('#brushQuestions')
  181. })
  182. function previewImg() {
  183. show.value = true
  184. }
  185. function goBack() {
  186. uni.navigateBack()
  187. }
  188. // 请求数据
  189. const questionBank = ref({})
  190. const questionBankList = ref([])
  191. let ansCard = ref([])
  192. let examInfo = ref({})
  193. let currentIndex = ref(0)
  194. async function startQuestionFn() {
  195. try{
  196. uni.showLoading({
  197. title: '正在加载...'
  198. })
  199. let obj = {
  200. carType: usecarStore.carInfo.carType,
  201. stepType: usecarStore.carInfo.stepType,
  202. examType: 2,
  203. }
  204. const {data: res} = await startExam(obj)
  205. uni.hideLoading()
  206. questionBank.value = res.questionBank[0]
  207. questionBankList.value = res.questionBank
  208. let size = usecarStore.carInfo.stepType==1?10:5
  209. ansCard.value = chunk(questionBankList.value, size)
  210. initOptionArr()
  211. examInfo.value = res
  212. }catch(e){
  213. uni.hideLoading()
  214. }
  215. }
  216. startQuestionFn()
  217. // 搞个二维数组来
  218. function chunk(arr, size) {
  219. if(arr.length==0) return []
  220. let result = []
  221. let tmp = []
  222. arr.forEach((item,index)=>{
  223. if(tmp.length==0) {
  224. result.push(tmp)
  225. }
  226. item.index = index
  227. tmp.push(item)
  228. if(tmp.length==size) {
  229. tmp = []
  230. }
  231. })
  232. return result
  233. }
  234. function initOptionArr() {
  235. questionBank.value.optionArr = []
  236. let abcd = [
  237. 'a',
  238. 'b',
  239. 'c',
  240. 'd',
  241. 'e',
  242. 'f'
  243. ]
  244. abcd.forEach((k,i)=>{
  245. let option = 'option'+k
  246. if(questionBank.value[option]) {
  247. let obj = {
  248. key: k.toLocaleUpperCase(),
  249. text: questionBank.value[option],
  250. index: i+1
  251. }
  252. questionBank.value.optionArr.push(obj)
  253. }
  254. })
  255. // 如果是判断题
  256. // if(questionBank.value.types==3) {
  257. // questionBank.value.optionArr[0].key1 = 'true'
  258. // questionBank.value.optionArr[1].key1 = 'false'
  259. // }
  260. // console.log(questionBank.value.optionArr)
  261. }
  262. // 选择答案
  263. const curOption = ref({})
  264. async function chooseOption(item) {
  265. if(questionBank.value.answerMy) return
  266. console.log(item)
  267. if(questionBank.value.types != 2) {
  268. item.answer = item.key
  269. curOption.value = item
  270. }else if(questionBank.value.types == 2){
  271. if(!curOption.value.answer) curOption.value.answer = ''
  272. if(curOption.value.answer.includes(item.key)) {
  273. curOption.value.answer = curOption.value.answer.replace(item.key, '')
  274. return
  275. }
  276. curOption.value.answer = (curOption.value.answer + item.key).split('').sort().join('')
  277. // console.log(curOption.value.ans)
  278. }
  279. }
  280. // 下一题
  281. async function nextQuestion(num) {
  282. // 如果有答案,给答题卡上添加
  283. if(curOption.value.answer) {
  284. questionBank.value.answerMy = curOption.value.answer
  285. if(questionBank.value.types==3) questionBank.value.answerMy = curOption.value.answer=='A'? 'true': 'false'
  286. }
  287. // 如果答错了 并且是第一次点
  288. if(questionBank.value.answerMy&&questionBank.value.answer != questionBank.value.answerMy&&curOption.value.isNext != 'next') {
  289. curOption.value.isNext = 'next'
  290. showWrong.value = true
  291. if (countDownRef.value) {
  292. countDownRef.value.pause();
  293. }
  294. return false
  295. }
  296. curOption.value = {}
  297. currentIndex.value = currentIndex.value + num
  298. getQuestionFn()
  299. }
  300. // 请求下一题
  301. async function getQuestionFn() {
  302. console.log(currentIndex.value)
  303. questionBank.value = questionBankList.value[currentIndex.value]
  304. curOption.value = {}
  305. curOption.value.isNext = ''
  306. if(questionBank.value.answerMy) curOption.value.answer = questionBank.value.answerMy
  307. initOptionArr()
  308. }
  309. // 点击题卡片里
  310. function ansCardClick(item) {
  311. currentIndex.value = item.index
  312. getQuestionFn()
  313. }
  314. function goOnExam() {
  315. showWrong.value = false
  316. }
  317. // 交卷
  318. let grade = ref(0)
  319. async function submitBtnFn() {
  320. // 如果是最后一题也把答案交上去
  321. if(curOption.value.answer) questionBank.value.answerMy = curOption.value.answer
  322. let wrongArr = questionBankList.value.filter(item=>item.answer!=item.answerMy)
  323. let worngId = wrongArr.map(item=>item.id).join(',')
  324. // grade = 100分/总题数 * 做对题数
  325. grade.value = info.value.funllScore / questionBankList.value.length * (questionBankList.value.length - wrongArr.length)
  326. let obj = {
  327. "answer": null,
  328. "carType": usecarStore.carInfo.carType,
  329. "examId": examInfo.value.id,
  330. "examType": 2,
  331. "grade": grade.value,
  332. "isEnd": 1,
  333. "pass": 1,
  334. "sort": examInfo.value.sort,
  335. "stepType": usecarStore.carInfo.stepType,
  336. "userId": examInfo.value.userId,
  337. "wrongQuestionIds": worngId
  338. }
  339. const res = await startExamDo(obj)
  340. console.log(res)
  341. // uni.$u.toast('已交卷')
  342. if(showCommit.value) showCommit.value = false
  343. if(grade.value<info.value.score) {
  344. showNoPass.value = true
  345. }else {
  346. setTimeout(()=>{
  347. uni.navigateBack()
  348. },1500)
  349. }
  350. }
  351. function finishFn() {
  352. uni.$u.toast('考试时间已到,准备自动为您交卷')
  353. setTimeout(()=>{
  354. submitBtnFn()
  355. },1500)
  356. }
  357. // 点击交卷
  358. const countDownRef = ref(null)
  359. const yesNum = ref(0)
  360. const noNum = ref(0)
  361. function handApaper() {
  362. // 如果是最后一题也要把题算上去
  363. if(curOption.value.answer) questionBank.value.answerMy = curOption.value.answer
  364. yesNum.value = questionBankList.value.filter(item=>item.answer==item.answerMy).length
  365. noNum.value = questionBankList.value.filter(item=>item.answerMy==undefined).length
  366. console.log(questionBankList.value)
  367. // 不有没有做完的题
  368. if(noNum) {
  369. showCommit.value = true
  370. if (countDownRef.value) {
  371. countDownRef.value.pause();
  372. }
  373. }else {
  374. submitBtnFn()
  375. }
  376. }
  377. // 关闭交卷弹框
  378. function closeCommitPopup() {
  379. showCommit.value = false
  380. if (countDownRef.value) {
  381. countDownRef.value.start();
  382. }
  383. }
  384. // 关闭错题弹框
  385. function showWrongClose() {
  386. showWrong.value = false
  387. if (countDownRef.value) {
  388. countDownRef.value.start();
  389. }
  390. curOption.value = {}
  391. currentIndex.value = currentIndex.value + 1
  392. getQuestionFn()
  393. }
  394. // 合格标准
  395. let info = ref({})
  396. async function questionExamFn() {
  397. const {data:res} = await questionExam({stepType: usecarStore.carInfo.stepType, carType: usecarStore.carInfo.carType})
  398. info.value = res
  399. }
  400. questionExamFn()
  401. </script>
  402. <style lang="scss" scoped>
  403. uni-page-body {
  404. width: 100%;
  405. height: 100%;
  406. }
  407. html {
  408. width: 100vh;
  409. height: 100vw;
  410. -webkit-transform: rotate(90deg);
  411. -webkit-transform-origin: 50vw 50vw;
  412. transform: rotate(90deg);
  413. transform-origin: 50vw 50vw;
  414. }
  415. image {
  416. display: block;
  417. width: 100%;
  418. height: 100%;
  419. }
  420. .imgView {
  421. position: relative;
  422. background: none;
  423. // max-width: 80%;
  424. // padding: 50px;
  425. .closeIcon {
  426. position: absolute;
  427. color: #fff;
  428. top: 40rpx;
  429. left: 40rpx;
  430. z-index: 99;
  431. background-color: #333;
  432. border-radius: 50%;
  433. }
  434. .img {
  435. // width: calc(100vh - 200rpx);
  436. // height: calc(100vw - 100rpx);
  437. width: 750rpx;
  438. height: 750rpx;
  439. }
  440. }
  441. .content {
  442. padding: 30rpx 30rpx 0rpx 30rpx;
  443. width: 100%;
  444. height: 100%;
  445. display: flex;
  446. flex-direction: column;
  447. background-color: #F7FBFE;
  448. font-size: 20rpx;
  449. // display: flex;
  450. .h3 {
  451. position: absolute;
  452. top: -16rpx;
  453. left: 0;
  454. width: 100%;
  455. text-align: center;
  456. color: $themC;
  457. }
  458. .row {
  459. width: 100%;
  460. display: flex;
  461. .userInfoBox {
  462. width: 140rpx;
  463. // height: 408rpx;
  464. // background-color: pink;
  465. display: flex;
  466. flex-direction: column;
  467. .examNo {
  468. width: 100%;
  469. height: 60rpx;
  470. background: #FFFFFF;
  471. border: 1px solid #F0F0F0;
  472. position: relative;
  473. .card {
  474. line-height: 70rpx;
  475. text-align: center;
  476. padding-left: 20rpx;
  477. }
  478. .back {
  479. position: absolute;
  480. left: -20rpx;
  481. top: 50%;
  482. transform: translateY(-50%);
  483. width: 40rpx;
  484. height: 40rpx;
  485. background: #fff;
  486. border-radius: 50%;
  487. display: flex;
  488. align-items: center;
  489. justify-content: center;
  490. u-icon {
  491. }
  492. }
  493. }
  494. .user {
  495. // position: relative;
  496. flex: 1;
  497. height: 0;
  498. padding: 10rpx 0 0 0rpx;
  499. .h3 {
  500. }
  501. .card {
  502. padding-left: 15rpx;
  503. position: relative;
  504. background: #FFFFFF;
  505. border: 1px solid #F0F0F0;
  506. height: 100%;
  507. .avatar {
  508. width: 90rpx;
  509. height: 90rpx;
  510. border-radius: 50%;
  511. overflow: hidden;
  512. margin-top: 36rpx;
  513. margin-bottom: 20rpx;
  514. img {
  515. }
  516. }
  517. .txt {
  518. margin: 10px 0;
  519. font-size: 18rpx;
  520. }
  521. }
  522. }
  523. }
  524. .examConBox {
  525. width: 0;
  526. flex: 1;
  527. display: flex;
  528. // height: 408rpx;
  529. padding-left: 20rpx;
  530. .leftBox {
  531. flex: 2;
  532. background-color: #fff;
  533. position: relative;
  534. display: flex;
  535. flex-direction: column;
  536. .h3 {
  537. left: 40rpx;
  538. text-align: left;
  539. }
  540. .questionTxt {
  541. padding: 30rpx;
  542. flex: 1;
  543. line-height: 2em;
  544. .txt {
  545. }
  546. }
  547. .answer.flex-b {
  548. height: 60rpx;
  549. border-top: 1px solid #F0F0F0;
  550. padding-left: 20rpx;
  551. .lab {
  552. }
  553. .rightSelect {
  554. .lab {
  555. }
  556. .optio {
  557. padding-left: 20rpx;
  558. .optionItem {
  559. width: 38rpx;
  560. height: 38rpx;
  561. border: 1px solid #F0F0F0;
  562. font-size: 18rpx;
  563. color: #333;
  564. text-align: center;
  565. line-height: 38rpx;
  566. margin-right: 20rpx;
  567. &.active {
  568. color: #fff;
  569. background-color: $themC;
  570. }
  571. }
  572. }
  573. }
  574. }
  575. }
  576. .rightBox {
  577. flex: 1.4;
  578. background-color: #fff;
  579. table {
  580. display: table;
  581. border-collapse: collapse;
  582. border-spacing: 0px;
  583. table-layout: fixed;
  584. td, th {
  585. width: 9.09%;
  586. // text-overflow: ellipsis;
  587. overflow: hidden;
  588. white-space: nowrap;
  589. }
  590. // border-color: gray;
  591. }
  592. .ansItem {
  593. font-size: 24rpx;
  594. text-align: center;
  595. border-bottom: 1px solid #E1DFDF;
  596. border-right: 1px solid #E1DFDF;
  597. color: #ff0000;
  598. &.green {
  599. color: #55ff7f;
  600. }
  601. &.red {
  602. color: red;
  603. }
  604. }
  605. .blueItem {
  606. background-color: $themC;
  607. color: #fff;
  608. text-align: center;
  609. font-size: 24rpx;
  610. &.br {
  611. border-right: 1px solid #fff;
  612. &:last-child {
  613. border: none;
  614. }
  615. }
  616. &.bb {
  617. border-top: 1px solid #fff;
  618. // &:last-child {
  619. // border: none;
  620. // }
  621. }
  622. }
  623. }
  624. }
  625. &.row1 {
  626. flex: 4;
  627. }
  628. &.row2 {
  629. height: 100rpx;
  630. padding: 20rpx 0;
  631. .timeBox {
  632. width: 140rpx;
  633. height: 100%;
  634. background-color: #fff;
  635. border: 1px solid #F0F0F0;
  636. position: relative;
  637. .h3 {
  638. font-weight: 400;
  639. }
  640. .time {
  641. font-weight: bold;
  642. font-size: 24rpx;
  643. color: #333333;
  644. line-height: 60rpx;
  645. text-align: center;
  646. }
  647. }
  648. .leftTpsBox {
  649. padding-left: 20rpx;
  650. flex: 2;
  651. position: relative;
  652. .card {
  653. background-color: #fff;
  654. height: 100%;
  655. }
  656. .h3 {
  657. text-align: left;
  658. left: 40rpx;
  659. }
  660. .txt {
  661. padding: 14rpx 20rpx 0 20rpx;
  662. }
  663. }
  664. .rightBtnBox {
  665. flex: 1;
  666. padding-left: 20rpx;
  667. display: flex;
  668. // justify-content: space-between;
  669. justify-content: flex-end;
  670. .btn {
  671. width: 133rpx;
  672. margin: 0 0 0 20rpx;
  673. text-align: center;
  674. font-size: 24rpx;
  675. height: 60rpx;
  676. line-height: 60rpx;
  677. background: #3776FF;
  678. line-height: 60rpx;
  679. color: #fff;
  680. border: none;
  681. border-radius: 8rpx;
  682. &.disable {
  683. opacity: 0.4;
  684. }
  685. &.hui {
  686. background: #F4F4F4;
  687. color: #333;
  688. // border: 1rpx solid #E1DFDF;
  689. }
  690. }
  691. }
  692. }
  693. }
  694. .picBox {
  695. width: 100%;
  696. flex: 1.8;
  697. background-color: #fff;
  698. border: 1px solid #F0F0F0;
  699. padding: 20rpx;
  700. position: relative;
  701. .h3 {
  702. text-align: left;
  703. left: 40rpx;
  704. }
  705. .imgBox {
  706. width: 650px;
  707. // max-height: 163rpx;
  708. // background-color: skyblue;
  709. height: 100%;
  710. overflow: hidden;
  711. margin: 0 auto;
  712. }
  713. }
  714. }
  715. .commitView {
  716. width: 780rpx;
  717. // height: 400rpx;
  718. background: #FFFFFF;
  719. border-radius: 10rpx;
  720. padding: 40rpx;
  721. .commitTit {
  722. font-weight: bold;
  723. font-size: 32rpx;
  724. color: #333333;
  725. line-height: 40rpx;
  726. margin-bottom: 34rpx;
  727. text-align: center;
  728. }
  729. .commitTxt {
  730. font-family: PingFang SC;
  731. font-weight: 500;
  732. font-size: 24rpx;
  733. color: #333333;
  734. line-height: 42rpx;
  735. }
  736. .rowBg {
  737. width: 100%;
  738. height: 64rpx;
  739. background: #F4F4F4;
  740. border-radius: 10rpx;
  741. font-size: 24rpx;
  742. margin-top: 20rpx;
  743. color: #333333;
  744. line-height: 64rpx;
  745. display: flex;
  746. align-items: center;
  747. padding: 0 0 0 20rpx;
  748. .blue {
  749. color: #3776FF;
  750. margin-left: 30rpx;
  751. }
  752. }
  753. .commitBtn {
  754. display: flex;
  755. align-items: center;
  756. justify-content: center;
  757. margin: 50rpx 0 20rpx 0;
  758. .btn.border {
  759. background: none;
  760. color: #3776FF;
  761. border: 1px solid #3776FF;
  762. }
  763. .btn {
  764. width: 180rpx;
  765. height: 60rpx;
  766. background: #3776FF;
  767. border-radius: 10rpx;
  768. font-weight: 500;
  769. font-size: 24rpx;
  770. color: #FFFFFF;
  771. text-align: center;
  772. line-height: 60rpx;
  773. margin: 0 20rpx;
  774. }
  775. }
  776. }
  777. .djs {
  778. display: flex;
  779. align-items: center;
  780. justify-content: center;
  781. margin-top: 6rpx;
  782. .djsTxt {
  783. font-size: 24rpx;
  784. color: #999;
  785. margin: -4rpx 0 0 2rpx;
  786. }
  787. }
  788. </style>
  789. <style lang="scss">
  790. .djs {
  791. :deep .u-count-down__text {
  792. color: red !important;
  793. }
  794. }
  795. </style>