index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903
  1. <template>
  2. <view>
  3. <u-navbar
  4. :is-back="false"
  5. title="选课中心"
  6. :border-bottom="false"
  7. title-color="#333333"
  8. back-icon-color="#ffffff"
  9. >
  10. <view class="slot-wrap">
  11. <image
  12. :src="logo"
  13. style="width: 178rpx; height: 31rpx; margin-left: 30rpx"
  14. ></image>
  15. </view>
  16. </u-navbar>
  17. <view v-show="!show">
  18. <view style="position: fixed; width: 100%; z-index: 999">
  19. <view class="check_ck">
  20. <view style="display: flex; align-items: center">
  21. <view style="margin: 0 auto">
  22. <u-tabs
  23. :list="courseLists"
  24. height="70"
  25. :current="current"
  26. @change="change"
  27. :scrollable="false"
  28. ></u-tabs>
  29. </view>
  30. </view>
  31. <view class="check_search u-flex">
  32. <view class="check_level u-flex" @click="openLeft()">
  33. <view class="u-line-1"
  34. >{{ selObj.eName }}:{{ selObj.aliasName }}</view
  35. >
  36. <u-icon name="arrow-down-fill" color="#000000" size="20"> </u-icon
  37. ></view>
  38. <view class="line">|</view>
  39. <view class="check_search_input u-flex">
  40. <img src="../../static/icon/icon-search.png" />
  41. <u-input
  42. style="padding-left: 10rpx"
  43. v-model="paramList[current].goodsName"
  44. :type="type"
  45. :border="border"
  46. placeholder="搜索"
  47. />
  48. </view>
  49. </view>
  50. <view class="menuSel" v-show="current == 0">
  51. <scroll-view class="r_sliper" scroll-x="true">
  52. <view
  53. v-for="(item, index) in sList"
  54. :key="index"
  55. style="margin-right: 20rpx; display: inline-block"
  56. >
  57. <view
  58. :class="paramList[0].subjectId == item.id ? 'r_t1' : 'r_t2'"
  59. @click="cMenu(item.id)"
  60. >
  61. {{ item.subjectName }}
  62. </view>
  63. </view>
  64. </scroll-view>
  65. </view>
  66. <view class="menuSel" v-show="current == 1">
  67. <scroll-view class="r_sliper" scroll-x="true">
  68. <view
  69. v-for="(item, index) in sList"
  70. :key="index"
  71. style="margin-right: 20rpx; display: inline-block"
  72. >
  73. <view
  74. :class="paramList[1].subjectId == item.id ? 'r_t1' : 'r_t2'"
  75. @click="cMenu1(item.id)"
  76. >
  77. {{ item.subjectName }}
  78. </view>
  79. </view>
  80. </scroll-view>
  81. </view>
  82. <view class="menuSel" v-show="current == 2">
  83. <scroll-view class="r_sliper" scroll-x="true">
  84. <view
  85. v-for="(item, index) in sList"
  86. :key="index"
  87. style="margin-right: 20rpx; display: inline-block"
  88. >
  89. <view
  90. :class="paramList[2].subjectId == item.id ? 'r_t1' : 'r_t2'"
  91. @click="cMenu2(item.id)"
  92. >
  93. {{ item.subjectName }}
  94. </view>
  95. </view>
  96. </scroll-view>
  97. </view>
  98. </view>
  99. </view>
  100. <view v-show="current == 0" class="contents">
  101. <view class="listBox">
  102. <navigator
  103. hover-class="none"
  104. :url="
  105. '/pages3/course/detail?id=' +
  106. item.goodsId +
  107. '&goodsType=' +
  108. item.goodsType
  109. "
  110. v-for="(item, index) in list1"
  111. :key="index"
  112. >
  113. <view class="itemBox">
  114. <image
  115. :src="$method.splitImgHost(item.coverUrl)"
  116. style="height: 367rpx; width: 100%; border-radius: 24rpx"
  117. ></image>
  118. <view
  119. style="display: flex; margin-top: 13rpx; align-items: center"
  120. >
  121. <view class="yearTag" v-if="item.year">{{ item.year }}</view>
  122. <view class="titleTag">{{ item.goodsName }}</view>
  123. </view>
  124. <view
  125. style="
  126. display: flex;
  127. justify-content: space-between;
  128. margin-top: 15rpx;
  129. "
  130. >
  131. <view class="noteTag"
  132. ><image
  133. src="/static/icon/wk_icon1.png"
  134. class="wk_icon"
  135. ></image>
  136. 共 <text class="blackFont">{{ item.courseNum }}</text>
  137. <text class="margin30">课程</text>
  138. <text class="blackFont">{{ item.classHours || "-" }}</text>
  139. 学时</view
  140. >
  141. <view>
  142. <view
  143. class="priceTag"
  144. v-if="
  145. !item.specTemplateId || (!item.maxPrice && !item.minPrice)
  146. "
  147. >
  148. {{
  149. item.standPrice === 0 ? "免费" : `¥${item.standPrice}`
  150. }}
  151. </view>
  152. <!-- 范围价格 -->
  153. <view v-else class="priceTag">
  154. <view>{{ item.minPrice }}</view>
  155. <template v-if="item.minPrice != item.maxPrice">
  156. <text>-</text>
  157. <view>{{ item.maxPrice }}</view>
  158. </template>
  159. </view>
  160. <text v-if="item.linePrice" class="sale">¥ </text>
  161. <text v-if="item.linePrice" class="price_line">
  162. {{ item.linePrice }}</text
  163. >
  164. </view>
  165. </view>
  166. </view>
  167. </navigator>
  168. <view class="emptyTip" v-if="list1.length == 0"
  169. >暂未上架相关网课~</view
  170. >
  171. </view>
  172. </view>
  173. <view v-show="current == 1" class="contents">
  174. <view class="listBox">
  175. <navigator
  176. hover-class="none"
  177. :url="'/pages2/bank/detail?id=' + item.goodsId"
  178. v-for="(item, index) in list2"
  179. :key="index"
  180. >
  181. <view class="itemBox">
  182. <image
  183. :src="$method.splitImgHost(item.coverUrl)"
  184. style="height: 367rpx; width: 100%; border-radius: 24rpx"
  185. ></image>
  186. <view
  187. style="display: flex; margin-top: 13rpx; align-items: center"
  188. >
  189. <view class="yearTag" v-if="item.year">{{ item.year }}</view>
  190. <view
  191. class="titleTag"
  192. style="display: flex; justify-content: space-between; flex: 1"
  193. >
  194. <view style="flex: 1">{{ item.goodsName }}</view>
  195. <view>
  196. <view
  197. class="priceTag"
  198. v-if="
  199. !item.specTemplateId ||
  200. (!item.maxPrice && !item.minPrice)
  201. "
  202. >
  203. {{
  204. item.standPrice === 0 ? "免费" : `¥${item.standPrice}`
  205. }}
  206. </view>
  207. <!-- 范围价格 -->
  208. <view v-else class="priceTag">
  209. <view>{{ item.minPrice }}</view>
  210. <template v-if="item.minPrice != item.maxPrice">
  211. <text>-</text>
  212. <view>{{ item.maxPrice }}</view>
  213. </template>
  214. </view>
  215. <text v-if="item.linePrice" class="sale">¥ </text>
  216. <text v-if="item.linePrice" class="price_line">
  217. {{ item.linePrice }}</text
  218. >
  219. </view>
  220. </view>
  221. </view>
  222. <view
  223. style="
  224. display: flex;
  225. justify-content: space-between;
  226. margin-top: 15rpx;
  227. "
  228. v-if="false"
  229. >
  230. <view class="noteTag"
  231. ><image
  232. src="/static/icon/wk_icon1.png"
  233. class="wk_icon"
  234. ></image>
  235. 共 <text class="blackFont">6</text>
  236. <view class="margin30">张卷</view>
  237. <text class="blackFont">120</text>道题
  238. </view>
  239. <view>
  240. <view
  241. class="priceTag"
  242. v-if="
  243. !item.specTemplateId || (!item.maxPrice && !item.minPrice)
  244. "
  245. >
  246. {{
  247. item.standPrice === 0 ? "免费" : `¥${item.standPrice}`
  248. }}
  249. </view>
  250. <!-- 范围价格 -->
  251. <view v-else class="priceTag">
  252. <view>{{ item.minPrice }}</view>
  253. <template v-if="item.minPrice != item.maxPrice">
  254. <text>-</text>
  255. <view>{{ item.maxPrice }}</view>
  256. </template>
  257. </view>
  258. <text v-if="item.linePrice" class="sale">¥ </text>
  259. <text v-if="item.linePrice" class="price_line">
  260. {{ item.linePrice }}</text
  261. >
  262. </view>
  263. </view>
  264. </view>
  265. </navigator>
  266. <view class="emptyTip" v-if="list2.length == 0"
  267. >暂未上架相关题库~</view
  268. >
  269. </view>
  270. </view>
  271. <view v-show="current == 2" class="contents">
  272. <view class="listBox">
  273. <!-- /pages5/liveDetail/index -->
  274. <navigator
  275. hover-class="none"
  276. :url="
  277. '/pages3/course/detail?id=' +
  278. item.goodsId +
  279. '&goodsType=' +
  280. item.goodsType
  281. "
  282. v-for="(item, index) in list3"
  283. :key="index"
  284. >
  285. <view class="itemBox">
  286. <image
  287. :src="$method.splitImgHost(item.coverUrl)"
  288. style="height: 367rpx; width: 100%; border-radius: 24rpx"
  289. ></image>
  290. <view
  291. style="display: flex; margin-top: 13rpx; align-items: center"
  292. >
  293. <view class="yearTag" v-if="item.year">{{ item.year }}</view>
  294. <view
  295. class="titleTag"
  296. style="display: flex; justify-content: space-between; flex: 1"
  297. >
  298. <view style="flex: 1">{{ item.goodsName }}</view>
  299. <view>
  300. <view
  301. class="priceTag"
  302. v-if="
  303. !item.specTemplateId ||
  304. (!item.maxPrice && !item.minPrice)
  305. "
  306. >
  307. {{
  308. item.standPrice === 0 ? "免费" : `¥${item.standPrice}`
  309. }}
  310. </view>
  311. <!-- 范围价格 -->
  312. <view v-else class="priceTag">
  313. <view>{{ item.minPrice }}</view>
  314. <template v-if="item.minPrice != item.maxPrice">
  315. <text>-</text>
  316. <view>{{ item.maxPrice }}</view>
  317. </template>
  318. </view>
  319. <text v-if="item.linePrice" class="sale">¥ </text>
  320. <text v-if="item.linePrice" class="price_line">
  321. {{ item.linePrice }}</text
  322. >
  323. </view>
  324. </view>
  325. </view>
  326. <!-- <view style="display: flex;justify-content: space-between;margin-top: 15rpx;" v-if="false">
  327. <view class="noteTag">
  328. <image src="/static/icon/wk_icon1.png" class="wk_icon"></image>
  329. <view>
  330. <text v-if="item.standPrice" class="priceTag">¥ {{item.standPrice.toFixed(2)}}</text>
  331. <text v-else class="priceTag free">免费</text>
  332. <view class="priceTag">¥ {{item.standPrice.toFixed(2)}}</view>
  333. <text class="sale"> ¥ </text>
  334. <text class="price_line"> {{ item.linePrice }}</text>
  335. </view>
  336. </view>
  337. </view> -->
  338. </view>
  339. </navigator>
  340. <view class="emptyTip" v-if="list3.length == 0"
  341. >暂未上架相关直播~</view
  342. >
  343. </view>
  344. </view>
  345. </view>
  346. <u-popup v-model="show" mode="bottom" border-radius="32">
  347. <view class="popuBox">
  348. <view class="popuBox-title">选择分类</view>
  349. <view class="flex-d">
  350. <view class="contentZ">
  351. <view class="lzs">
  352. <view
  353. class="tylsz u-flex"
  354. v-for="(item, index) in eList"
  355. :key="index"
  356. @click="active1(item)"
  357. :class="item.id === selObj.eId ? 'activeStys' : 'b-l-eee'"
  358. ><view style="padding-left: 30rpx">{{
  359. item.educationName
  360. }}</view></view
  361. >
  362. </view>
  363. <view class="rzs">
  364. <view
  365. class="tylszB"
  366. v-for="(item, index) in bList"
  367. :key="index"
  368. @click="active2(item)"
  369. :class="item.id === selObj.bId ? 'activeStys2' : ''"
  370. >{{ item.aliasName }}</view
  371. >
  372. </view>
  373. </view>
  374. </view>
  375. </view>
  376. </u-popup>
  377. </view>
  378. </template>
  379. <script>
  380. import { mapGetters } from "vuex";
  381. import config from "@/common/config";
  382. export default {
  383. components: {},
  384. data() {
  385. return {
  386. logo: config.TOP_LOGO,
  387. show: false,
  388. courseLists: [
  389. {
  390. name: "网课",
  391. },
  392. {
  393. name: "题库通",
  394. },
  395. {
  396. name: "直播课",
  397. },
  398. ],
  399. // array:['全部','建设工程施工管理','机电全科','机电工程管理与实','机电全科','全科'],
  400. current: 0,
  401. menuIndex: 0,
  402. menuIndex1: 0,
  403. paramList: [
  404. {
  405. pageNum: 1,
  406. pageSize: 10,
  407. total: 0,
  408. showStatus: 1,
  409. goodsType: 1,
  410. subjectId: 0,
  411. sortType: 1,
  412. goodsName: "",
  413. },
  414. {
  415. pageNum: 1,
  416. pageSize: 10,
  417. total: 0,
  418. showStatus: 1,
  419. goodsType: 2,
  420. subjectId: 0,
  421. sortType: 1,
  422. goodsName: "",
  423. },
  424. {
  425. pageNum: 1,
  426. pageSize: 10,
  427. total: 0,
  428. showStatus: 1,
  429. goodsType: 6,
  430. subjectId: 0,
  431. sortType: 1,
  432. goodsName: "",
  433. },
  434. ],
  435. list1: [],
  436. list2: [],
  437. list3: [],
  438. eList: [],
  439. bList: [],
  440. sList: [],
  441. selObj: {
  442. eName: "",
  443. pName: "",
  444. bName: "",
  445. eId: 0,
  446. bId: 0,
  447. pId: 0,
  448. },
  449. };
  450. },
  451. onPullDownRefresh() {
  452. this.initList();
  453. setTimeout(function () {
  454. uni.stopPullDownRefresh();
  455. }, 500);
  456. },
  457. onLoad(option) {
  458. console.log("item", this.current);
  459. let eduStr = uni.getStorageSync("eduObj");
  460. if (eduStr) {
  461. this.selObj = JSON.parse(eduStr);
  462. this.subjectList({
  463. businessId: this.selObj.bId,
  464. projectId: this.selObj.pId,
  465. educationId: this.selObj.eId,
  466. });
  467. this.mergeBusiness();
  468. } else {
  469. this.show = true;
  470. }
  471. this.initList();
  472. },
  473. methods: {
  474. mergeBusiness() {
  475. this.paramList[0].educationTypeId = this.selObj.eId;
  476. this.paramList[0].businessId = this.selObj.bId;
  477. this.paramList[0].subjectId = 0;
  478. this.paramList[1].educationTypeId = this.selObj.eId;
  479. this.paramList[1].businessId = this.selObj.bId;
  480. this.paramList[1].subjectId = 0;
  481. this.paramList[2].educationTypeId = this.selObj.eId;
  482. this.paramList[2].businessId = this.selObj.bId;
  483. this.paramList[2].subjectId = 0;
  484. },
  485. subjectList(data) {
  486. var self = this;
  487. // /app/common/course/subject/list
  488. this.$api.subjectList(data).then((res) => {
  489. if (res.data.code == 200) {
  490. self.sList = res.data.rows;
  491. let allItem = { id: 0, subjectName: "全部" };
  492. self.sList.unshift(allItem);
  493. }
  494. });
  495. },
  496. active2(item) {
  497. // console.log('item', item)
  498. if (item.topicId) {
  499. uni.navigateTo({
  500. url: "/pages4/courseTopic/goodsTopic?topicId=" + item.topicId,
  501. });
  502. return;
  503. }
  504. this.selObj.bId = item.id;
  505. this.show = false;
  506. this.selObj.pId = item.projectId;
  507. this.selObj.bName = item.businessName;
  508. this.selObj.pName = item.projectName;
  509. this.selObj.aliasName = item.aliasName;
  510. uni.setStorageSync("eduObj", JSON.stringify(this.selObj));
  511. this.subjectList({
  512. businessId: item.id,
  513. projectId: item.projectId,
  514. educationId: this.selObj.eId,
  515. });
  516. this.mergeBusiness();
  517. //初始化
  518. this.initList();
  519. },
  520. businessList(data) {
  521. var self = this;
  522. // /app/common/course/business/list
  523. this.$api.businessList(data).then((res) => {
  524. if (res.data.code == 200) {
  525. self.bList = res.data.rows;
  526. }
  527. });
  528. },
  529. active1(item) {
  530. this.selObj.eId = item.id;
  531. this.selObj.eName = item.educationName;
  532. this.businessList({ educationId: item.id });
  533. },
  534. educationList() {
  535. var self = this;
  536. // /app/common/course/educationType/list
  537. this.$api.educationTypeList().then((res) => {
  538. if (res.data.code == 200) {
  539. self.eList = res.data.rows;
  540. if (self.selObj.eId) {
  541. self.businessList({ educationId: self.selObj.eId });
  542. } else {
  543. this.active1(self.eList[0]);
  544. }
  545. }
  546. });
  547. },
  548. openLeft() {
  549. this.show = true;
  550. },
  551. initList() {
  552. this.paramList[0].pageNum = 1;
  553. this.paramList[1].pageNum = 1;
  554. this.list1 = [];
  555. this.list2 = [];
  556. this.list3 = [];
  557. this.courseList();
  558. this.bankList();
  559. this.liveList();
  560. this.educationList();
  561. },
  562. cMenu(index) {
  563. this.paramList[0].pageNum = 1;
  564. this.paramList[0].subjectId = index;
  565. this.list1 = [];
  566. // this.menuIndex
  567. this.courseList();
  568. },
  569. cMenu1(index) {
  570. this.paramList[1].pageNum = 1;
  571. this.paramList[1].subjectId = index;
  572. this.list2 = [];
  573. // this.menuIndex1 = index;
  574. this.bankList();
  575. },
  576. cMenu2(index) {
  577. this.paramList[2].pageNum = 1;
  578. this.paramList[2].subjectId = index;
  579. this.list3 = [];
  580. // this.menuIndex1 = index;
  581. this.liveList();
  582. },
  583. change(index) {
  584. this.current = index;
  585. },
  586. //课程
  587. courseList() {
  588. var self = this;
  589. var param = this.paramList[0];
  590. this.$api.goodsList(param).then((res) => {
  591. self.paramList[0].total = res.data.total;
  592. self.list1.push.apply(self.list1, res.data.rows);
  593. // if (self.list1.length === res.data.total) {
  594. // self.paramList[0].showStatus = true;
  595. // }
  596. });
  597. },
  598. //题库
  599. bankList() {
  600. var self = this;
  601. var param = this.paramList[1];
  602. this.$api.goodsList(param).then((res) => {
  603. self.paramList[1].total = res.data.total;
  604. self.list2.push.apply(self.list2, res.data.rows);
  605. // if (self.list2.length === res.data.total) {
  606. // self.paramList[1].showStatus = true;
  607. // }
  608. });
  609. },
  610. //直播
  611. liveList() {
  612. var self = this;
  613. var param = this.paramList[2];
  614. this.$api.goodsList(param).then((res) => {
  615. self.paramList[2].total = res.data.total;
  616. self.list3.push.apply(self.list3, res.data.rows);
  617. // if (self.list3.length === res.data.total) {
  618. // self.paramList[2].showStatus = true;
  619. // }
  620. });
  621. },
  622. },
  623. onReachBottom() {
  624. if (this.current == 0) {
  625. if (this.list1.length < this.paramList[0].total) {
  626. this.paramList[0].pageNum++;
  627. this.courseList();
  628. }
  629. }
  630. if (this.current == 1) {
  631. if (this.list2.length < this.paramList[1].total) {
  632. this.paramList[1].pageNum++;
  633. this.bankList();
  634. }
  635. }
  636. },
  637. computed: { ...mapGetters(["userInfo"]) },
  638. };
  639. </script>
  640. <style >
  641. ::-webkit-scrollbar {
  642. width: 0;
  643. height: 0;
  644. color: transparent;
  645. }
  646. page {
  647. background-color: #eaeef1;
  648. }
  649. </style>
  650. <style scoped lang="scss">
  651. .check_ck {
  652. background: #ffffff;
  653. padding: 0 38rpx 24rpx;
  654. .again_ck {
  655. width: 30%;
  656. display: flex;
  657. align-items: center;
  658. justify-content: space-between;
  659. }
  660. .check_search {
  661. border: 2rpx solid #333333;
  662. border-radius: 100rpx;
  663. margin-top: 32rpx;
  664. padding: 0 28rpx;
  665. height: 72rpx;
  666. .check_level {
  667. font-size: 28rpx;
  668. .u-line-1 {
  669. width: 160rpx;
  670. margin-right: 8rpx;
  671. }
  672. }
  673. .line {
  674. margin: -10rpx 18rpx 0 20rpx;
  675. color: #d9d9d9;
  676. }
  677. .check_search_input {
  678. flex: 1;
  679. img {
  680. width: 36rpx;
  681. height: 36rpx;
  682. }
  683. }
  684. }
  685. }
  686. .contents {
  687. position: relative;
  688. left: 0;
  689. top: 320rpx;
  690. }
  691. .emptyTip {
  692. color: #999999;
  693. font-size: 32rpx;
  694. text-align: center;
  695. margin-top: 20%;
  696. }
  697. .popuBox {
  698. border-radius: 30% !important;
  699. height: 70vh;
  700. width: 100%;
  701. background-color: #ffffff;
  702. .popuBox-title {
  703. border-radius: 30%;
  704. font-weight: bold;
  705. color: #222222;
  706. font-size: 32rpx;
  707. height: 100rpx;
  708. line-height: 100rpx;
  709. text-align: center;
  710. }
  711. }
  712. .activeStys2 {
  713. color: #007aff;
  714. }
  715. .tylszB {
  716. margin-bottom: 56rpx;
  717. background: #ffffff;
  718. font-size: 32rpx;
  719. overflow: hidden;
  720. white-space: nowrap;
  721. text-overflow: ellipsis;
  722. }
  723. .activeStys {
  724. height: 32rpx;
  725. font-weight: bold;
  726. color: #222222 !important;
  727. border-left: 6rpx solid #0080ff;
  728. }
  729. .b-l-eee {
  730. border-left: 6rpx solid #ffffff;
  731. }
  732. .tylsz {
  733. color: #666;
  734. font-size: 30rpx;
  735. font-size: 32rpx;
  736. color: #999999;
  737. margin-bottom: 40rpx;
  738. vertical-align: bottom;
  739. white-space: nowrap;
  740. }
  741. .popup_t1 {
  742. padding-left: 35rpx;
  743. border-bottom: 1rpx solid #eee;
  744. height: 57rpx;
  745. margin-top: 86rpx;
  746. font-weight: bold;
  747. color: #007aff;
  748. font-size: 27rpx;
  749. }
  750. .flex-d {
  751. background-color: #ffffff;
  752. font-size: 30rpx;
  753. }
  754. .contentZ {
  755. display: flex;
  756. height: calc(70vh - 100rpx);
  757. .lzs {
  758. width: 208rpx;
  759. height: 100%;
  760. overflow-y: scroll;
  761. border-right: 2rpx solid #e8e8e8;
  762. }
  763. .rzs {
  764. margin-left: 32rpx;
  765. flex: 1;
  766. height: 100%;
  767. overflow-y: scroll;
  768. }
  769. }
  770. .contentZ::-webkit-scrollbar {
  771. display: none;
  772. }
  773. .fots {
  774. height: 100rpx;
  775. display: flex;
  776. align-items: center;
  777. justify-content: space-around;
  778. border-top: 1rpx solid #eee;
  779. }
  780. .leftBtns {
  781. font-size: 30rpx;
  782. color: #007aff;
  783. font-weight: 500;
  784. }
  785. .right_Btns {
  786. font-size: 30rpx;
  787. color: #fff;
  788. background-color: #007aff;
  789. border-radius: 24rpx;
  790. height: 60rpx;
  791. line-height: 60rpx;
  792. text-align: center;
  793. padding: 0rpx 23rpx;
  794. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
  795. }
  796. .blackFont {
  797. color: #333333;
  798. margin: 0 10rpx;
  799. }
  800. .margin30 {
  801. margin: 0 20rpx 0 0;
  802. }
  803. .wk_icon {
  804. width: 24rpx;
  805. height: 24rpx;
  806. margin-right: 12rpx;
  807. }
  808. .noteTag {
  809. font-size: 24rpx;
  810. font-family: PingFang SC;
  811. font-weight: 500;
  812. color: #999999;
  813. align-items: center;
  814. }
  815. .priceTag {
  816. display: flex;
  817. font-size: 32rpx;
  818. font-family: PingFang SC;
  819. font-weight: bold;
  820. color: #fc3f3f;
  821. view::before {
  822. content: "¥";
  823. font-size: 24rpx;
  824. font-weight: bold;
  825. }
  826. }
  827. .sale {
  828. color: #999999;
  829. font-size: 28rpx;
  830. margin-left: 8rpx;
  831. }
  832. .price_line {
  833. color: #999999;
  834. font-size: 28rpx;
  835. text-decoration: line-through;
  836. font-weight: 400;
  837. }
  838. .titleTag {
  839. font-size: 32rpx;
  840. font-weight: bold;
  841. color: #333333;
  842. margin-left: 8rpx;
  843. }
  844. .yearTag {
  845. width: 80rpx;
  846. height: 32rpx;
  847. background: #ebf5ff;
  848. border: 2rpx solid #007aff;
  849. border-radius: 16rpx;
  850. font-size: 24rpx;
  851. color: #007aff;
  852. text-align: center;
  853. line-height: 32rpx;
  854. }
  855. .itemBox {
  856. background: #ffffff;
  857. border-radius: 24rpx;
  858. width: 100%;
  859. padding: 23rpx 22rpx 32rpx 22rpx;
  860. margin-bottom: 24rpx;
  861. box-shadow: 0rpx 0rpx 20rpx 1rpx rgba(1, 99, 235, 0.1);
  862. }
  863. .listBox {
  864. background-color: #eaeef1;
  865. padding: 24rpx 24rpx 150rpx 24rpx;
  866. position: relative;
  867. // top: 235rpx;
  868. }
  869. .menuSel {
  870. margin-top: 32rpx;
  871. // width: 100%;
  872. // height: 70rpx;
  873. // padding: 30rpx 0rpx;
  874. // background: #eaeef1;
  875. white-space: nowrap;
  876. overflow: hidden;
  877. }
  878. .r_sliper {
  879. padding: 0 20rpx;
  880. }
  881. .r_t1 {
  882. background: #f2f7ff;
  883. border-radius: 8rpx;
  884. padding: 9rpx 21rpx;
  885. font-size: 26rpx;
  886. color: #3f8dfd;
  887. }
  888. .r_t2 {
  889. background: #f7f8fc;
  890. border-radius: 8rpx;
  891. padding: 9rpx 21rpx;
  892. color: #666666;
  893. font-size: 26rpx;
  894. }
  895. </style>