index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. <template>
  2. <loading v-if="loading"></loading>
  3. <view v-else class="carVideo iPhoneX">
  4. <m-privacy-popup></m-privacy-popup>
  5. <!-- <topbar>
  6. <van-search shape="round" placeholder="搜索学车视频" @search="search" />
  7. </topbar>
  8. <van-tabs id="tabs" :active="active" :sticky="true">
  9. <van-tab
  10. :title="item.chapterName"
  11. v-for="(item, index) in typeList"
  12. :key="index"
  13. class="vant-tab"
  14. >
  15. <branch-one
  16. v-if="index == 0"
  17. :carVideoList="item.children"
  18. ></branch-one>
  19. <branch-two
  20. v-else-if="index == 1"
  21. :carVideoList="item.children"
  22. ></branch-two>
  23. <branch-two
  24. v-else-if="index == 2"
  25. :carVideoList="item.children"
  26. ></branch-two>
  27. <branch-one
  28. v-else-if="index == 3"
  29. :carVideoList="item.children"
  30. ></branch-one>
  31. <get-cert v-else-if="index == 4"></get-cert>
  32. <branch-two v-else :carVideoList="item.children"></branch-two>
  33. </van-tab>
  34. </van-tabs> -->
  35. <!-- #ifdef MP-WEIXIN -->
  36. <topbar>
  37. <userInfoHead :userData="userData"></userInfoHead>
  38. </topbar>
  39. <!-- #endif -->
  40. <view>
  41. <swiper indicator-color="#fff" autoplay circular style="height: 200rpx">
  42. <swiper-item class="swiperBanner">
  43. <image class="banner" src="https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/banner.png"></image>
  44. </swiper-item>
  45. <swiper-item class="swiperBanner">
  46. <view class="banner-ad">
  47. <ad unit-id="adunit-f9ac1a546be5b3f0"></ad>
  48. </view>
  49. </swiper-item>
  50. </swiper>
  51. </view>
  52. <view class="carType">
  53. <view v-for="(item, index) in carType" @click="changeVehicle(item)" :key="index">
  54. <view @click="() => {
  55. carTypeIndex = index;
  56. }
  57. " class="col" :class="{
  58. col_selected: carTypeIndex == index,
  59. }">
  60. <image :class="['carType-img' + index]" :src="item.img"></image>
  61. <view class="h6"></view>
  62. <text class="carType-title">{{ item.title }}</text>
  63. <text class="carType-typeName">{{ item.typeName }}</text>
  64. </view>
  65. </view>
  66. </view>
  67. <view class="point">
  68. <view :style="{
  69. left: carTypeIndex * 172 + 'rpx',
  70. }" class="point-area">
  71. <image class="" src="https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/triangle1@2x.png"></image>
  72. </view>
  73. </view>
  74. <!-- #ifdef MP-WEIXIN-->
  75. <!-- (废弃) -->
  76. <!-- <view class="tab">
  77. <van-tabs animated class="custom-tabs " :active="active" id="tabs" @change="changeSubject" :sticky="true">
  78. <van-tab class="uni-app-fontsize-paragraph" v-if="xcx_video_open" title="教学视频">
  79. <subjectVideoSelect></subjectVideoSelect>
  80. </van-tab>
  81. <van-tab title-style="font-size:36rpx;" title="科目一">
  82. <view class="tab-container">
  83. <tab-left :subject="1" :query="tabQuery" :leftList="leftList1"></tab-left>
  84. <tab-center :subject="1" :query="tabQuery" :centerList="centerList1"></tab-center>
  85. <tab-right :subject="1" :query="tabQuery" :rightList="rightList1"></tab-right>
  86. </view>
  87. </van-tab>
  88. <van-tab title-style="font-size:36rpx;" title="科目四">
  89. <view class="tab-container">
  90. <tab-left :query="tabQuery" :subject="4" :leftList="leftList4"></tab-left>
  91. <tab-center :query="tabQuery" :subject="4" :centerList="centerList4"></tab-center>
  92. <tab-right :query="tabQuery" :subject="4" :rightList="rightList4"></tab-right>
  93. </view>
  94. </van-tab>
  95. </van-tabs>
  96. </view> -->
  97. <view class="subject">
  98. <view class="subject-tab">
  99. <view class="subject-slider" :class="{
  100. left0: active == 0,
  101. right0: active == 1,
  102. }"></view>
  103. <view @click="() => {
  104. active = 0;
  105. tabQuery.subject = 1;
  106. }
  107. " class="subject-tabs">
  108. <span v-if="active == 0">科目一</span>
  109. <span style="color: #498ef5" v-else>科目一</span>
  110. </view>
  111. <view @click="() => {
  112. active = 1;
  113. tabQuery.subject = 4;
  114. }
  115. " class="subject-tabs">
  116. <span v-if="active == 1">科目四</span>
  117. <span style="color: #498ef5" v-else>科目四</span>
  118. </view>
  119. </view>
  120. </view>
  121. <view class="tab">
  122. <scroll-view @scrolltoupper="() => {
  123. active = 0;
  124. tabQuery.subject = 1;
  125. }
  126. " @scrolltolower="() => {
  127. active = 1;
  128. tabQuery.subject = 4;
  129. }
  130. " scroll-with-animation :scroll-into-view="'tab-container' + active" enhanced
  131. style="width: 100%; white-space: nowrap" enable-flex :scroll-x="true">
  132. <view id="tab-container0" style="display: inline-block; white-space: nowrap">
  133. <view class="tab-container">
  134. <tab-left :subject="1" :query="tabQuery" :leftList="leftList1"></tab-left>
  135. <tab-center :subject="1" :query="tabQuery" :centerList="centerList1"></tab-center>
  136. <tab-right :subject="1" :query="tabQuery" :rightList="rightList1"></tab-right>
  137. </view>
  138. </view>
  139. <view id="tab-container1" style="display: inline-block; white-space: nowrap">
  140. <view class="tab-container">
  141. <tab-left :query="tabQuery" :subject="4" :leftList="leftList4"></tab-left>
  142. <tab-center :query="tabQuery" :subject="4" :centerList="centerList4"></tab-center>
  143. <tab-right :query="tabQuery" :subject="4" :rightList="rightList4"></tab-right>
  144. </view>
  145. </view>
  146. </scroll-view>
  147. </view>
  148. <view class="wxad">
  149. <ad ad-type="video" :ad-intervals="100" unit-id="adunit-8eb44bbd7e3147d4"></ad>
  150. </view>
  151. <view style="width: 100%;height: 48px;"></view>
  152. <!-- #endif -->
  153. <!-- <view class="splitLine"> </view>
  154. <view v-if="tabQuery.name !== '教学视频'" class="two">
  155. <view
  156. @click="
  157. goPath(
  158. '/otherPages/selectRulePaper/index',
  159. {
  160. title: '新规秘卷',
  161. },
  162. true
  163. )
  164. "
  165. class="two-item"
  166. >
  167. <image
  168. class=""
  169. src="https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/xingui.png"
  170. ></image>
  171. <text style="color: #fff; font-size: 46rpx; top: 34rpx" class="twp-text"
  172. >新规秘卷</text
  173. >
  174. <text
  175. style="color: #fff; font-size: 30rpx; top: 104rpx"
  176. class="twp-text"
  177. >考前秘籍 直击考点</text
  178. >
  179. </view>
  180. </view> -->
  181. <!-- <view v-if="active == 0 || active == 3">
  182. <van-cell
  183. v-if="active == 0"
  184. @click="clickCell(recomVideos0)"
  185. :title="'科目一教学视频'"
  186. is-link
  187. value="更多"
  188. />
  189. <van-cell
  190. v-if="active == 3"
  191. @click="clickCell(recomVideos3)"
  192. :title="'科目四教学视频'"
  193. is-link
  194. value="更多"
  195. />
  196. <view v-if="active == 0" class="video-box">
  197. <m-video-topbottom
  198. @click="returnData(item)"
  199. :carVideoItem="item"
  200. v-for="(item, index) in recomVideos0.list"
  201. :key="index"
  202. />
  203. </view>
  204. <view v-if="active == 3" class="video-box">
  205. <m-video-topbottom
  206. @click="returnData(item)"
  207. :carVideoItem="item"
  208. v-for="(item, index) in recomVideos3.list"
  209. :key="index"
  210. />
  211. </view>
  212. </view> -->
  213. </view>
  214. </template>
  215. <script>
  216. import shortVideo from "./components/shortVideo.vue";
  217. import branchOne from "./components/branchOne.vue";
  218. import branchTwo from "./components/branchTwo.vue";
  219. import tabLeft from "./components/tabLeft.vue";
  220. import tabRight from "./components/tabRight.vue";
  221. import TabCenter from "./components/tabCenter.vue";
  222. import VideoListBox from "./components/videoListBox.vue";
  223. import userInfoHead from "./components/userInfoHead.vue";
  224. import mPrivacyPopup from "@/components/m-privacy-popup/m-privacy-popup.vue";
  225. import utils from "@/utils/index";
  226. import api from "@/api";
  227. import subjectVideoSelect from "./components/subjectVideoSelect.vue";
  228. import userInfoAuth from "./components/userInfoAuth.vue";
  229. import { mapGetters, mapState } from "vuex";
  230. export default {
  231. components: {
  232. userInfoAuth,
  233. shortVideo,
  234. branchOne,
  235. branchTwo,
  236. tabLeft,
  237. TabCenter,
  238. tabRight,
  239. VideoListBox,
  240. userInfoHead,
  241. subjectVideoSelect,
  242. mPrivacyPopup,
  243. },
  244. data: () => ({
  245. userInfoAuthVisible: false,
  246. xcx_video_open: 0,
  247. subjectMap: ["科目一", "科目二", "科目三", "科目四"],
  248. recomVideos0: [],
  249. recomVideos3: [],
  250. tabQuery: {
  251. gs: "xc",
  252. name: "科目一",
  253. model: "cart",
  254. cert: "C1/C2/C3",
  255. vehicle: "小车",
  256. subject: 1,
  257. title: "顺序练习",
  258. sort: 3,
  259. },
  260. //科目一
  261. rightList1: [
  262. {
  263. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/LocalTopics@2x.png",
  264. text: "地方专题",
  265. path: "/otherPages/classifyArea/index",
  266. },
  267. {
  268. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/WrongTopicCollection@2x.png",
  269. text: "错题·收藏",
  270. path: "/otherPages/collection/index",
  271. },
  272. {
  273. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/NotesBeforeExamination@2x.png",
  274. text: "色盲测试",
  275. path: "/otherPages/beforeColorExam/index",
  276. },
  277. {
  278. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/learnToSee@2x.png",
  279. text: "三力测试",
  280. path: "/otherPages/beforeThreeExam/index",
  281. },
  282. ],
  283. centerList1: [
  284. {
  285. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/selectedTestQuestions@2x.png",
  286. text: "精选考题",
  287. path: "/otherPages/classifyChoose/index",
  288. },
  289. {
  290. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/simulationTestTopics@2x.png",
  291. text: "模拟考试",
  292. path: "/otherPages/beforeMockExam/index",
  293. },
  294. ],
  295. leftList1: [
  296. {
  297. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/sequentialPractice@2x.png",
  298. text: "顺序练习",
  299. path: "/otherPages/classifyOrder/index",
  300. },
  301. {
  302. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/classificationExercise@2x.png",
  303. text: "分类练习",
  304. path: "/otherPages/classifyKind/index",
  305. },
  306. {
  307. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/newRulesPaper@2x.png",
  308. text: "新规秘卷",
  309. path: "/otherPages/selectRulePaper/index",
  310. },
  311. {
  312. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/simulationResults@2x.png",
  313. text: "模拟成绩",
  314. path: "/otherPages/testScores/index",
  315. },
  316. ],
  317. //科目四
  318. rightList4: [
  319. {
  320. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/localTopics%402x.png",
  321. text: "地方专题",
  322. path: "/otherPages/classifyArea/index",
  323. },
  324. {
  325. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/wrongTopicCollection%402x.png",
  326. text: "错题·收藏",
  327. path: "/otherPages/collection/index",
  328. },
  329. {
  330. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/notesBeforeExamination%402x.png",
  331. text: "色盲测试",
  332. path: "/otherPages/beforeColorExam/index",
  333. },
  334. {
  335. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/learnToSee@2x.png",
  336. text: "三力测试",
  337. path: "/otherPages/beforeThreeExam/index",
  338. },
  339. ],
  340. centerList4: [
  341. {
  342. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/selectedTestQuestions@2x.png",
  343. text: "精选考题",
  344. path: "/otherPages/classifyChoose/index",
  345. },
  346. {
  347. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/simulationTestTopics@2x.png",
  348. text: "模拟考试",
  349. path: "/otherPages/beforeMockExam/index",
  350. },
  351. ],
  352. leftList4: [
  353. {
  354. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/sequentialPractice@2x.png",
  355. text: "顺序练习",
  356. path: "/otherPages/classifyOrder/index",
  357. },
  358. {
  359. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/classificationExercise@2x.png",
  360. text: "分类练习",
  361. path: "/otherPages/classifyKind/index",
  362. },
  363. {
  364. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/newRulesPaper@2x.png",
  365. text: "新规秘卷",
  366. path: "/otherPages/selectRulePaper/index",
  367. },
  368. {
  369. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/simulationResults@2x.png",
  370. text: "模拟成绩",
  371. path: "/otherPages/testScores/index",
  372. },
  373. ],
  374. active: 0,
  375. carTypeIndex: 0,
  376. carType: [
  377. {
  378. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/xc.png",
  379. typeName: "小车",
  380. title: "C1/C2/C3",
  381. },
  382. {
  383. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/kc.png",
  384. typeName: "客车",
  385. title: "A1/A3/B1",
  386. },
  387. {
  388. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/hc.png",
  389. typeName: "货车",
  390. title: "A2/B2",
  391. },
  392. {
  393. img: "https://ndata.zzxcx.net/ctjk/mp-wx/carVideo/mtc.png",
  394. typeName: "摩托车",
  395. title: "D/E/F",
  396. },
  397. ],
  398. typeList: [
  399. {
  400. id: 1,
  401. typeName: "科目一",
  402. pid: 0,
  403. typeDescribe: null,
  404. typeIcon: null,
  405. typeSort: 0,
  406. status: "0",
  407. children: [],
  408. },
  409. {
  410. id: 2,
  411. typeName: "科目二",
  412. pid: 0,
  413. typeDescribe: null,
  414. typeIcon: null,
  415. typeSort: 0,
  416. status: "0",
  417. children: [],
  418. },
  419. {
  420. id: 3,
  421. typeName: "科目三",
  422. pid: 0,
  423. typeDescribe: null,
  424. typeIcon: null,
  425. typeSort: 0,
  426. status: "0",
  427. children: [],
  428. },
  429. {
  430. id: 4,
  431. typeName: "科目四",
  432. pid: 0,
  433. typeDescribe: null,
  434. typeIcon: null,
  435. typeSort: 0,
  436. status: "0",
  437. children: [],
  438. },
  439. ],
  440. loading: true,
  441. query: {},
  442. }),
  443. computed: {
  444. userData() {
  445. console.log(this.$store.state);
  446. return this.$store.state.user.userInfo || {};
  447. },
  448. },
  449. onShow() {
  450. if (typeof this.$mp.page.getTabBar === 'function' &&
  451. this.$mp.page.getTabBar()) {
  452. this.$mp.page.getTabBar().init()
  453. }
  454. // const query = tt.createSelectorQuery();
  455. // // 选择 ttml 中的示例按钮,并添加一个对它布局信息的查询
  456. // query.select("#btn").boundingClientRect();
  457. // // 选择显示区域,并查询它的滚动位置信息
  458. // query.selectViewport().scrollOffset();
  459. },
  460. async mounted() {
  461. this.loading = false;
  462. this.$nextTick(() => {
  463. // 需要延迟
  464. api.user.getInfo().then((res) => {
  465. uni.setStorageSync("userInfo", res.data);
  466. this.$store.commit("SET_USERINFO", res.data);
  467. this.$store.dispatch("GetRoadExamVip");
  468. this.$store.dispatch("GetNbjkSet");
  469. this.$store.dispatch("GetNbjkSph");
  470. // if (!res.data.nickName) {
  471. // uni.showModal({
  472. // title: "新用户更新信息",
  473. // confirmText: "去更新",
  474. // success: function (res) {
  475. // if (res.confirm) {
  476. // uni.navigateTo({
  477. // url:"/otherPages/userInfoAuth/index"
  478. // })
  479. // } else if (res.cancel) {
  480. // }
  481. // }
  482. // })
  483. });
  484. });
  485. // api.user.getInfo().then(res => {
  486. // uni.setStorageSync("userInfo", res.data);
  487. // this.$store.commit('SET_USERINFO', res.data)
  488. // // if (!res.data.nickName) {
  489. // // uni.showModal({
  490. // // title: "新用户更新信息",
  491. // // confirmText: "去更新",
  492. // // success: function (res) {
  493. // // if (res.confirm) {
  494. // // uni.navigateTo({
  495. // // url:"/otherPages/userInfoAuth/index"
  496. // // })
  497. // // } else if (res.cancel) {
  498. // // }
  499. // // }
  500. // // })
  501. // // }
  502. // })
  503. // this.$nextTick(() => {
  504. // this.selectComponent("#tabs").resize();
  505. // });
  506. },
  507. onShareAppMessage(res) {
  508. if (res.from === "button") {
  509. // 来自页面内分享按钮
  510. console.log(res.target);
  511. }
  512. let userInfo = uni.getStorageSync("userInfo");
  513. return {
  514. title: "自定义分享标题",
  515. path: `/pages/carVideo/index?pUnionId=${userInfo.unionId}`,
  516. };
  517. },
  518. methods: {
  519. clickCell(carVideoList) {
  520. this.$utils.route.goPage(
  521. `/pages/carVideo/moreVideo?active=${this.active}`,
  522. null,
  523. {
  524. carVideoList: carVideoList,
  525. active: this.active,
  526. }
  527. );
  528. },
  529. goPath(url, extraQuery = {}, needVip = false) {
  530. uni.navigateTo({
  531. url:
  532. url + "?" + utils.mapToUrlQuery({ ...this.tabQuery, ...extraQuery }),
  533. });
  534. },
  535. scrollTabs(e) {
  536. console.log(e);
  537. },
  538. changeVehicle(item) {
  539. this.tabQuery.vehicle = item.typeName;
  540. this.tabQuery.cert = item.title;
  541. switch (item.typeName) {
  542. case "小车":
  543. this.tabQuery.gs = "xc"
  544. this.tabQuery.model = "cart";
  545. break;
  546. case "货车":
  547. this.tabQuery.gs = "hc"
  548. this.tabQuery.model = "truck";
  549. break;
  550. case "客车":
  551. this.tabQuery.gs = "kc"
  552. this.tabQuery.model = "bus";
  553. break;
  554. case "摩托车":
  555. this.tabQuery.gs = "mtc"
  556. this.tabQuery.model = "mtc";
  557. break;
  558. default:
  559. break;
  560. }
  561. },
  562. changeSubject(e) {
  563. this.tabQuery.subject = e.detail.title == "科目一" ? 1 : 4;
  564. this.tabQuery.name = e.detail.title;
  565. },
  566. goLightMock(e) {
  567. uni.navigateTo({
  568. url: "/pages/lightMock/index",
  569. });
  570. },
  571. goAprilExam() {
  572. uni.navigateTo({
  573. url: "/pages/extraWeb/index?src=https://mn.zzxcx.net/#/aprilExam/test",
  574. });
  575. },
  576. async search(e) {
  577. let { data } = await this.$api.carVideo.getSearchList(e.detail);
  578. console.log(data);
  579. this.$utils.route.goPage("/pages/carVideo/more", null, {
  580. carVideoList: data,
  581. });
  582. },
  583. },
  584. };
  585. </script>
  586. <style lang="scss" scoped>
  587. .splitLine {
  588. width: 750rpx;
  589. height: 20rpx;
  590. background: #f2f3f5;
  591. }
  592. .subject {
  593. width: 100%;
  594. display: flex;
  595. justify-content: center;
  596. margin-top: 40rpx;
  597. .subject-tab {
  598. width: 546rpx;
  599. height: 80rpx;
  600. background: #e3edfc;
  601. border-radius: 46rpx;
  602. position: relative;
  603. display: flex;
  604. .subject-tabs {
  605. width: 50%;
  606. height: 100%;
  607. line-height: 80rpx;
  608. color: #fff;
  609. text-align: center;
  610. font-size: 40rpx;
  611. z-index: 11;
  612. }
  613. .subject-slider {
  614. border-radius: 46rpx;
  615. background: -webkit-linear-gradient(left, #26a1ee, #498ef5);
  616. width: 300rpx;
  617. height: 100%;
  618. position: absolute;
  619. z-index: 10;
  620. }
  621. }
  622. }
  623. .two {
  624. width: 100%;
  625. padding: 40rpx 30rpx;
  626. display: flex;
  627. justify-content: space-between;
  628. flex-wrap: wrap;
  629. background: #fff;
  630. .two-item {
  631. position: relative;
  632. .twp-text {
  633. position: absolute;
  634. top: 32rpx;
  635. left: 30rpx;
  636. font-size: 32rpx;
  637. }
  638. image {
  639. width: 690rpx;
  640. height: 192rpx;
  641. }
  642. }
  643. }
  644. .tabTitle {
  645. width: 690rpx;
  646. margin: 0 auto;
  647. font-size: 28rpx;
  648. display: flex;
  649. justify-content: space-between;
  650. text-align: center;
  651. line-height: 66rpx;
  652. height: 66rpx;
  653. position: relative;
  654. box-sizing: border-box;
  655. .tabTitle-row {
  656. width: 172rpx;
  657. }
  658. .rect {
  659. width: 25%;
  660. text-align: center;
  661. position: absolute;
  662. bottom: 0;
  663. left: 0;
  664. height: 4rpx;
  665. .rect-color {
  666. width: 60%;
  667. height: 4rpx;
  668. margin: 0 auto;
  669. background: red;
  670. }
  671. }
  672. }
  673. swiper-item {
  674. overflow-y: scroll;
  675. }
  676. .h6 {
  677. height: 6rpx;
  678. }
  679. .carVideo {
  680. position: relative;
  681. background: #fff;
  682. min-height: 100vh;
  683. width: 100%;
  684. // padding-bottom: constant(safe-area-inset-bottom); //兼容 IOS<11.2
  685. //padding-bottom: env(safe-area-inset-bottom); //兼容 IOS>11.2
  686. }
  687. .swiperBanner {
  688. width: 690rpx;
  689. height: 200rpx;
  690. display: flex;
  691. justify-content: center;
  692. align-content: center;
  693. align-items: center;
  694. .banner-ad {
  695. padding: 30rpx;
  696. }
  697. }
  698. .banner {
  699. width: 690rpx;
  700. height: 200rpx;
  701. }
  702. .carType {
  703. width: 690rpx;
  704. height: 152rpx;
  705. background: #f0f3f7;
  706. margin: 0 auto;
  707. display: flex;
  708. flex-direction: row;
  709. margin-top: 32rpx;
  710. .col_selected {
  711. background: #bfd8ff;
  712. }
  713. .col {
  714. width: 172rpx;
  715. height: 100%;
  716. display: flex;
  717. flex-direction: column;
  718. align-items: center;
  719. align-content: center;
  720. justify-content: center;
  721. .carType-img0 {
  722. width: 133rpx;
  723. height: 45rpx;
  724. }
  725. .carType-img1 {
  726. width: 108rpx;
  727. height: 56rpx;
  728. }
  729. .carType-img2 {
  730. width: 82rpx;
  731. height: 60rpx;
  732. }
  733. .carType-img3 {
  734. width: 86rpx;
  735. height: 59rpx;
  736. }
  737. .carType-typeName {
  738. color: #333;
  739. font-size: $uni-app-fontsize-paragraph;
  740. }
  741. .carType-title {
  742. color: #333;
  743. font-size: $uni-app-fontsize-paragraph;
  744. }
  745. }
  746. }
  747. .point {
  748. width: 690rpx;
  749. margin: 0 auto;
  750. height: 16rpx;
  751. display: flex;
  752. position: relative;
  753. image {
  754. width: 30rpx;
  755. height: 14rpx;
  756. }
  757. .point-area {
  758. width: 25%;
  759. display: flex;
  760. justify-content: center;
  761. position: absolute;
  762. }
  763. }
  764. .tab {
  765. width: 100%;
  766. margin: 0 auto;
  767. display: inline-block;
  768. font-size: $uni-app-fontsize-paragraph;
  769. white-space: nowrap;
  770. #tabs {
  771. height: 800rpx;
  772. }
  773. .custom-tabs {
  774. /deep/ .van-tabs__line {
  775. background: #498ef5;
  776. }
  777. }
  778. .tab-container {
  779. width: 750rpx;
  780. display: flex;
  781. justify-content: space-between;
  782. align-content: flex-start;
  783. align-items: flex-start;
  784. padding: 0 30rpx;
  785. }
  786. }
  787. .vant-tab {
  788. height: 100px;
  789. }
  790. .video-box {
  791. background-color: #ffffff;
  792. display: flex;
  793. flex-wrap: wrap;
  794. width: 690rpx;
  795. margin-left: auto;
  796. margin-right: auto;
  797. margin-bottom: 30rpx;
  798. z-index: 0;
  799. justify-content: space-between;
  800. .custom-video-topbottom ::v-deep .video-item {
  801. margin-right: 0;
  802. margin-bottom: 0;
  803. }
  804. }
  805. .left0 {
  806. left: 0;
  807. }
  808. .right0 {
  809. right: 0;
  810. }
  811. </style>