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.

330 lines
8.7 KiB

1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
3 weeks ago
1 month ago
  1. <template>
  2. <view class="content">
  3. <up-navbar title="理论学习" :leftIconColor="'#333'" :safeAreaInsetTop="true" :autoBack="true" >
  4. <template #right>
  5. <view class="u-nav-slot flex">
  6. <view class="txt">小车</view>
  7. <u-icon name="arrow-down-fill" color="#333" size="12"></u-icon>
  8. </view>
  9. </template>
  10. </up-navbar>
  11. <view class="tabs flex">
  12. <view class="tab" @click="changeTab(1)" :class="{active: currentTab==1}">科目一</view>
  13. <view class="tab" @click="changeTab(2)" :class="{active: currentTab==2}">科目四</view>
  14. </view>
  15. <view class="swiperBox">
  16. <u-swiper :list="list1" @click="swiperClick" :dots-styles="dotsStyles" indicatorMode="dot" imgMode="" height="160rpx"></u-swiper>
  17. </view>
  18. <view class="notice">
  19. <view class="yellowT">通知/</view>
  20. <view class="txt">06月11日已更新至最新题库</view>
  21. </view>
  22. <view class="iconBox">
  23. <view class="iconComl">
  24. <view class="item" v-for="(item,index) in leftItem" :key="index" @click="$goPage(item.url)">
  25. <view class="icon">
  26. <image :src="item.icon" mode=""></image>
  27. </view>
  28. <view class="text">{{item.name}}</view>
  29. </view>
  30. </view>
  31. <view class="centerComl">
  32. <view class="ctItem" @click="$goPage('/pages/exercises/brushQuestions/brushQuestions')">
  33. <view class="txt">顺序练习</view>
  34. <view class="txt">0/1700</view>
  35. </view>
  36. <view class="ctItem" @click="$goPage('/pages/vip/vipEntry/vipEntry')">
  37. <view class="txt">精选试题</view>
  38. <view class="txt">0/1700</view>
  39. </view>
  40. </view>
  41. <view class="iconComl">
  42. <view class="item" v-for="(item,index) in rightItem" :key="index" @click="$goPage(item.url)">
  43. <view class="icon">
  44. <image :src="item.icon" mode=""></image>
  45. </view>
  46. <view class="text">{{ item.name }}</view>
  47. </view>
  48. </view>
  49. </view>
  50. <view class="simulatedExam flex-b">
  51. <view class="leftTxt">
  52. <view class="h8">科一模拟考试</view>
  53. <view class="text">考试次数1</view>
  54. <view class="text">预测通过率10%</view>
  55. <view class="btnBox flex">
  56. <view class="btnTxt" @click="$goPage('/pages/exercises/examSubjiect1/examSubjiect1')">开始考试</view>
  57. <view class="btnIcon">
  58. <image src="@/static/images/theory/sanjx.png" mode=""></image>
  59. </view>
  60. </view>
  61. </view>
  62. <view class="rightImg">
  63. <image src="@/static/images/theory/computed.png" mode=""></image>
  64. </view>
  65. </view>
  66. <view class="ul flex">
  67. <view class="li" v-for="(item,index) in bottomItem" :key="index" @click="$goPage('pages/exercises/examIntroduction/examIntroduction?tab='+item.name)">
  68. <view class="icon">
  69. <image :src="item.icon" mode=""></image>
  70. </view>
  71. <view class="txt">{{ item.name }}</view>
  72. </view>
  73. </view>
  74. </view>
  75. </template>
  76. <script setup>
  77. import { ref } from 'vue'
  78. const list1 = [
  79. new URL('@/static/images/bigImg/banner1.png', import.meta.url).href,
  80. new URL('@/static/images/bigImg/banner2.png', import.meta.url).href,
  81. ]
  82. function swiperClick(val) {
  83. console.log(val)
  84. }
  85. const currentTab = ref(1)
  86. const dotsStyles = ref({
  87. backgroundColor: '#E8E9EC',
  88. border: '1px #E8E9EC solid',
  89. color: '#fff',
  90. selectedBackgroundColor: '#1989FA',
  91. selectedBorder: '1px #1989FA solid'
  92. })
  93. const leftItem = ref([
  94. {name: '分类学习', icon: new URL('@/static/images/theory/theoryIcon1.png', import.meta.url).href, url: '/pages/exercises/categoryExercises/categoryExercises'},
  95. {name: '章节练习', icon: new URL('@/static/images/theory/theoryIcon7.png', import.meta.url).href, url: '/pages/exercises/chapter/chapter'},
  96. {name: '精选试题', icon: new URL('@/static/images/theory/theoryIcon9.png', import.meta.url).href, url: '/pages/exercises/brushQuestions/brushQuestions'},
  97. {name: '考前密卷', icon: new URL('@/static/images/theory/theoryIcon11.png', import.meta.url).href, url: '/pages/exercises/brushQuestions/brushQuestions'},
  98. ])
  99. const rightItem = ref([
  100. {name: '题型练习', icon: new URL('@/static/images/theory/theoryIcon6.png', import.meta.url).href, url: '/pages/exercises/queTypeExercises/queTypeExercises'},
  101. {name: '错题收藏', icon: new URL('@/static/images/theory/theoryIcon8.png', import.meta.url).href, url: '/pages/exercises/wrongQuestion/wrongQuestion'},
  102. {name: '仿真考试', icon: new URL('@/static/images/theory/theoryIcon10.png', import.meta.url).href, url: '/pages/exercises/beforeExam/beforeExam'},
  103. {name: '我的学习', icon: new URL('@/static/images/theory/theoryIcon12.png', import.meta.url).href, url: '/pages/exercises/myStudy/myStudy'},
  104. ])
  105. const bottomItem = ref([
  106. {name: '考试简介', icon: new URL('@/static/images/theory/theoryIcon3.png', import.meta.url).href, url: ''},
  107. {name: '考试准备', icon: new URL('@/static/images/theory/theoryIcon2.png', import.meta.url).href, url: ''},
  108. {name: '考试流程', icon: new URL('@/static/images/theory/theoryIcon4.png', import.meta.url).href, url: ''},
  109. {name: '注意事项', icon: new URL('@/static/images/theory/theoryIcon5.png', import.meta.url).href, url: ''},
  110. ])
  111. function changeTab(num) {
  112. currentTab.value = num
  113. }
  114. </script>
  115. <style lang="scss" scoped>
  116. image {
  117. display: block;
  118. width: 100%;
  119. height: 100%;
  120. }
  121. .tabs {
  122. display: flex;
  123. height: 100rpx;
  124. width: 100%;
  125. justify-content: center;
  126. .tab {
  127. color: #333;
  128. position: relative;
  129. padding: 0 40rpx;
  130. font-weight: 400;
  131. flex: 1;
  132. text-align: center;
  133. &.active {
  134. width: 100%;
  135. &::before {
  136. content: '';
  137. position: absolute;
  138. left: 50%;
  139. bottom: -20rpx;
  140. width: 30rpx;
  141. height: 4rpx;
  142. background: #333;
  143. font-weight: 700;
  144. border-radius: 2rpx;
  145. transform: translateX(-50%);
  146. }
  147. }
  148. }
  149. }
  150. .content {
  151. padding: 100rpx 30rpx 30rpx 30rpx;
  152. .u-nav-slot {
  153. .txt {
  154. font-size: 28rpx;
  155. margin-right: 10rpx;
  156. }
  157. }
  158. .swiperBox {
  159. padding-top: 20rpx;
  160. }
  161. .notice {
  162. padding: 18rpx;
  163. background: #FEF9ED;
  164. border-radius: 8rpx;
  165. margin-top: 20rpx;
  166. font-size: 28rpx;
  167. .yellowT {
  168. font-weight: 800;
  169. color: #F1AD40;
  170. font-style: italic;
  171. display: inline-block;
  172. margin-right: 10rpx;
  173. }
  174. .txt {
  175. display: inline-block;
  176. }
  177. }
  178. .iconBox {
  179. display: flex;
  180. justify-content: space-between;
  181. padding: 60rpx 30rpx;
  182. .iconComl {
  183. display: flex;
  184. flex-direction: column;
  185. .item {
  186. text-align: center;
  187. margin-bottom: 40rpx;
  188. display: flex;
  189. flex-direction: column;
  190. justify-content: center;
  191. align-items: center;
  192. .icon {
  193. width: 72rpx;
  194. height: 72rpx;
  195. }
  196. .text {
  197. font-size: 28rpx;
  198. margin-top: 10rpx;
  199. }
  200. }
  201. }
  202. .centerComl {
  203. display: flex;
  204. flex-direction: column;
  205. justify-content: space-around;
  206. padding-bottom: 30rpx;
  207. .ctItem {
  208. width: 230rpx;
  209. height: 230rpx;
  210. background: url('../../../static/images/circular1.png') no-repeat;
  211. background-size: 100% 100%;
  212. border-radius: 50%;
  213. // border: 10px solid;
  214. // opacity: 0.1;
  215. // border-image: linear-gradient(0deg, #4FACFE, #00F2FE) 10 10;
  216. display: flex;
  217. align-items: center;
  218. justify-content: center;
  219. flex-direction: column;
  220. &:last-child {
  221. background: url('../../../static/images/circular2.png') no-repeat;
  222. background-size: 100% 100%;
  223. }
  224. .txt {
  225. font-size: 32rpx;
  226. color: #fff;
  227. padding: 6rpx 0;
  228. }
  229. }
  230. }
  231. }
  232. .simulatedExam {
  233. background: #DFF6FF;
  234. border-radius: 20rpx;
  235. padding: 30rpx;
  236. // margin-top: 40rpx;
  237. .leftTxt {
  238. flex: 1;
  239. width: 0;
  240. .h8 {
  241. font-weight: bold;
  242. font-size: 44rpx;
  243. }
  244. .text {
  245. font-size: 28rpx;
  246. margin-top: 12rpx;
  247. }
  248. .btnBox {
  249. width: 188rpx;
  250. height: 66rpx;
  251. background: #3776FF;
  252. border-radius: 33rpx;
  253. display: flex;
  254. justify-content: center;
  255. margin-top: 30rpx;
  256. .btnTxt {
  257. font-size: 30rpx;
  258. color: #FFFFFF;
  259. }
  260. .btnIcon {
  261. width: 10rpx;
  262. height: 12rpx;
  263. margin-left: 12rpx;
  264. }
  265. }
  266. }
  267. .rightImg {
  268. width: 256rpx;
  269. height: 256rpx;
  270. img {
  271. }
  272. }
  273. }
  274. .ul {
  275. padding: 20rpx 0 0 0;
  276. justify-content: space-between;
  277. .li {
  278. width: 23%;
  279. height: 174rpx;
  280. background: linear-gradient(0deg, #FFFFFF 0%, #E5F7FF 100%);
  281. box-shadow: 0px 2px 2px 0px #E5F7FF;
  282. border-radius: 10px;
  283. display: flex;
  284. flex-direction: column;
  285. align-items: center;
  286. justify-content: center;
  287. .icon {
  288. width: 58rpx;
  289. height: 60rpx;
  290. margin: 0 auto;
  291. }
  292. .txt {
  293. font-weight: 500;
  294. font-size: 28rpx;
  295. margin-top: 24rpx;
  296. text-align: center;
  297. }
  298. }
  299. }
  300. }
  301. </style>