shoppingCart.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  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="isLogin">
  18. <view v-if="!list.length"
  19. ><u-empty text="购物车为空" margin-top="500" mode="car"></u-empty
  20. ></view>
  21. <view v-else>
  22. <view class="shop_list">
  23. <uni-swipe-action>
  24. <u-checkbox-group @change="checkboxGroupChange" placement="column">
  25. <view>
  26. <uni-swipe-action-item
  27. :autoClose="false"
  28. @change="swipeChange($event, item)"
  29. :show="item.show"
  30. v-for="(item, index) in list"
  31. :key="index"
  32. >
  33. <view class="goods-item">
  34. <view class="item-wrap">
  35. <view class="goods-msg">
  36. <u-checkbox
  37. @change="checkboxChange"
  38. :disabled="item.goodsStatus == 0"
  39. style="width: 100%"
  40. v-model="list[index].checked"
  41. shape="circle"
  42. :name="index"
  43. >
  44. <view class="flex">
  45. <view class="goods-img">
  46. <image
  47. :src="$method.splitImgHost(item.coverUrl, true)"
  48. ></image>
  49. </view>
  50. <view class="flex__auto">
  51. <view class="goods-title">{{
  52. item.goodsName
  53. }}</view>
  54. <view class="priceTag"
  55. >¥ {{ item.standPrice }}</view
  56. >
  57. <view
  58. class="priceTag"
  59. v-if="item.goodsStatus == 0"
  60. >该商品已下架</view
  61. >
  62. </view>
  63. </view>
  64. </u-checkbox>
  65. </view>
  66. <view
  67. class="goods-select"
  68. v-if="item.templateType != null && item.goodsType == 1"
  69. >
  70. <u-line color="#D6D6DB" />
  71. <view
  72. class="goods-select__type"
  73. v-if="item.templateType == 'class'"
  74. @click="openPopup(0, item, index)"
  75. >
  76. <view style="color: #666666; font-size: 24rpx">{{
  77. !item.gradObj.className
  78. ? "选择班级"
  79. : item.gradObj.className
  80. }}</view>
  81. <view
  82. ><u-icon
  83. name="arrow-right"
  84. color="#999999"
  85. size="28"
  86. ></u-icon
  87. ></view>
  88. </view>
  89. <view
  90. v-if="item.gradObj.gradeId"
  91. style="padding: 0 100rpx 0 15rpx"
  92. >
  93. <Class-time-tip
  94. :classInfo="item.gradObj"
  95. ></Class-time-tip>
  96. </view>
  97. <view
  98. class="goods-select__type"
  99. v-if="item.templateType == 'apply'"
  100. @click="openPopup(1, item, index)"
  101. >
  102. <view style="color: #666666; font-size: 24rpx">
  103. {{
  104. !item.applyAreas.areaName
  105. ? "报考地区"
  106. : item.examDate.examineName +
  107. "-" +
  108. item.applyAreas.areaName +
  109. "-" +
  110. item.applyAreas.cityName
  111. }}
  112. </view>
  113. <view
  114. ><u-icon
  115. name="arrow-right"
  116. color="#999999"
  117. size="28"
  118. ></u-icon
  119. ></view>
  120. </view>
  121. </view>
  122. </view>
  123. </view>
  124. <template v-slot:right>
  125. <view class="operate" @click="delItem(item)">
  126. <view><text>删除</text></view>
  127. </view>
  128. </template>
  129. </uni-swipe-action-item>
  130. </view>
  131. </u-checkbox-group>
  132. </uni-swipe-action>
  133. </view>
  134. </view>
  135. <u-popup v-model="show" mode="bottom" border-radius="40">
  136. <view class="popup_box">
  137. <view style="margin-bottom: 20rpx">
  138. <view class="line1"></view>
  139. <view class="grade">选择班级</view>
  140. </view>
  141. <u-line color="#D6D6DB" />
  142. <view>
  143. <scroll-view scroll-y="true" style="height: 536rpx">
  144. <view>
  145. <u-radio-group v-model="gradeValue">
  146. <view v-for="(item, index) in gradeList" :key="index">
  147. <view
  148. style="display: flex; align-items: center; padding: 20rpx"
  149. >
  150. <view>
  151. <u-radio shape="circle" :name="index">
  152. <view
  153. :class="
  154. index == gradeValue
  155. ? 'white-box blue-box'
  156. : 'white-box'
  157. "
  158. >
  159. <view>
  160. <view class="blackTxt">{{ item.className }}</view>
  161. <Class-time-tip
  162. :classInfo="item"
  163. ></Class-time-tip>
  164. </view>
  165. </view>
  166. </u-radio>
  167. </view>
  168. </view>
  169. </view>
  170. </u-radio-group>
  171. </view>
  172. </scroll-view>
  173. </view>
  174. <view class="confrim-btn"
  175. ><view class="okBtn" @click="okPopup(0)">确定</view></view
  176. >
  177. </view>
  178. </u-popup>
  179. <u-popup v-model="show1" mode="bottom" border-radius="40">
  180. <view class="popup_box">
  181. <view style="margin-bottom: 20rpx">
  182. <view class="line1"></view>
  183. <view class="grade">选择考期/地区</view>
  184. </view>
  185. <u-line color="#D6D6DB" />
  186. <view style="display: flex; height: 536rpx">
  187. <view style="width: 50%">
  188. <view class="topTxt">考期</view>
  189. <view>
  190. <picker-view
  191. :indicator-style="indicatorStyle"
  192. :value="value"
  193. @change="bindChangeE"
  194. class="picker-view"
  195. >
  196. <picker-view-column>
  197. <view
  198. class="picker-item"
  199. v-for="(item, index) in examine"
  200. :key="index"
  201. >{{ item.examineName }}</view
  202. >
  203. </picker-view-column>
  204. </picker-view>
  205. </view>
  206. </view>
  207. <view style="width: 50%">
  208. <view class="topTxt">地区</view>
  209. <view>
  210. <picker-view
  211. :indicator-style="indicatorStyle"
  212. :value="value"
  213. @change="bindChange"
  214. class="picker-view"
  215. >
  216. <picker-view-column>
  217. <view
  218. class="picker-item"
  219. v-for="(item, index) in provinceList"
  220. :key="index"
  221. >{{ item.areaName }}</view
  222. >
  223. </picker-view-column>
  224. <picker-view-column>
  225. <view
  226. class="picker-item"
  227. v-for="(item, index) in cityList"
  228. :key="index"
  229. >{{ item.areaName }}</view
  230. >
  231. </picker-view-column>
  232. </picker-view>
  233. </view>
  234. </view>
  235. </view>
  236. <view class="confrim-btn"
  237. ><view class="okBtn" @click="okPopup(1)">确定</view></view
  238. >
  239. </view>
  240. </u-popup>
  241. </view>
  242. <view v-show="!isLogin">
  243. <view
  244. style="
  245. display: flex;
  246. align-items: center;
  247. flex-direction: column;
  248. margin-top: 40%;
  249. font-size: 32rpx;
  250. "
  251. >
  252. <view style="color: #999999">您还没有登录哦~</view>
  253. <view style="margin-top: 30rpx"
  254. ><u-button type="primary" @click="login">去登录</u-button></view
  255. >
  256. </view>
  257. </view>
  258. <view class="bottomBox" v-if="!hideBuyState">
  259. <view class="bottons_all">
  260. <view class="check_alls">
  261. <u-checkbox
  262. label="all"
  263. name="all"
  264. shape="circle"
  265. @change="checkboxAllChange"
  266. v-model="allChecked"
  267. ></u-checkbox>
  268. <text class="checkall">全选</text>
  269. <!-- <text class="rmb">¥</text> -->
  270. <view class="all_sum">结算:</view>
  271. <view class="priceTag">¥ {{ toFixed(totalPrice) }}</view>
  272. </view>
  273. <view style="display: flex; align-items: center">
  274. <!-- <view style="color: #999999;margin-right: 8rpx;">合计</view> -->
  275. <view
  276. style="display: flex; color: #ffffff; align-items: center"
  277. @click="goBuy()"
  278. >
  279. <view class="btn2">结算</view>
  280. <!-- <u-icon name="arrow-right" color="#fff" size="30"></u-icon> -->
  281. </view>
  282. </view>
  283. </view>
  284. </view>
  285. </view>
  286. </template>
  287. <script>
  288. import { mapGetters } from "vuex";
  289. import ClassTimeTip from "../../components/common/ClassTimeTip.vue";
  290. import config from "@/common/config";
  291. export default {
  292. data() {
  293. return {
  294. logo: config.TOP_LOGO,
  295. gradeValue: -1,
  296. isLogin: false,
  297. allChecked: false,
  298. checkboxValue1: [],
  299. list: [],
  300. value1: "",
  301. show: false,
  302. show1: false,
  303. totalPrice: 0.0,
  304. isOld: false,
  305. checkboxList: [],
  306. gradeList: [],
  307. examine: [],
  308. provinceList: [],
  309. cityList: [],
  310. detail: {},
  311. detailIndex: -1,
  312. applyObj: {
  313. applyAreasJson: null,
  314. examDateJson: null,
  315. },
  316. pAreaIndex: 0,
  317. cAreaIndex: 0,
  318. examIndex: 0,
  319. current: 3,
  320. };
  321. },
  322. computed: { ...mapGetters(["userInfo", "hideBuyState"]) },
  323. onLoad(option) {
  324. // console.log(option,987)
  325. },
  326. onShow() {
  327. this.isLogin = this.$method.isLogin();
  328. if (this.isLogin) {
  329. if (uni.getStorageSync("updateCart") || !this.isOld) {
  330. this.isOld = true;
  331. this.cartList();
  332. uni.removeStorageSync("updateCart"); //消费购物车刷新事件
  333. }
  334. }
  335. },
  336. methods: {
  337. toFixed(num) {
  338. return num.toFixed(2);
  339. },
  340. bindChangeE(e) {
  341. this.examIndex = e.detail.value[0];
  342. },
  343. bindChange(e) {
  344. const val = e.detail.value;
  345. if (this.pAreaIndex != e.detail.value[0]) {
  346. this.pAreaIndex = e.detail.value[0];
  347. this.getCityList(this.provinceList[this.pAreaIndex].areaId);
  348. }
  349. if (this.cAreaIndex != e.detail.value[1]) {
  350. this.cAreaIndex = e.detail.value[1];
  351. }
  352. },
  353. checkAreaData() {
  354. if (this.examine.length == 0) {
  355. uni.showModal({
  356. title: "提示",
  357. content: "请选择考期",
  358. showCancel: false,
  359. });
  360. return false;
  361. }
  362. return true;
  363. },
  364. checkData() {
  365. if (this.detail.templateType == "class") {
  366. if (this.gradeValue < 0) {
  367. uni.showModal({
  368. title: "提示",
  369. content: "请选择班级",
  370. showCancel: false,
  371. });
  372. return false;
  373. }
  374. } else if (this.detail.templateType == "apply") {
  375. if (!this.applyObj.examDateJson) {
  376. uni.showModal({
  377. title: "提示",
  378. content: "请选择考期",
  379. showCancel: false,
  380. });
  381. return false;
  382. }
  383. }
  384. return true;
  385. },
  386. //弹出框确定
  387. okPopup(index) {
  388. if (index == 0) {
  389. if (!this.checkData()) {
  390. return;
  391. }
  392. this.gradeIndex = this.gradeValue;
  393. this.list[this.detailIndex].gradObj = this.gradeList[this.gradeIndex]; //商品赋值选中班级
  394. // this.$set(
  395. // this.list[this.detailIndex],
  396. // "gradObj",
  397. // this.gradeList[this.gradeIndex]
  398. // );
  399. this.show = false;
  400. } else {
  401. if (!this.checkAreaData()) {
  402. return;
  403. }
  404. this.examDate = this.examine[this.examIndex];
  405. let pData = this.provinceList[this.pAreaIndex];
  406. let cData = this.cityList[this.cAreaIndex];
  407. this.applyAreas = {
  408. areaName: pData.areaName,
  409. areaId: pData.areaId,
  410. cityId: cData.areaId,
  411. cityName: cData.areaName,
  412. };
  413. // this.applyObj.applyAreasJson = JSON.stringify(this.applyAreas)
  414. // this.applyObj.examDateJson = JSON.stringify(this.examDate)
  415. this.list[this.detailIndex].examDate = this.examDate; //商品赋值选中考期地区
  416. this.list[this.detailIndex].applyAreas = this.applyAreas; //商品赋值选中考期地区
  417. this.show1 = false;
  418. }
  419. },
  420. getExamine(id) {
  421. let self = this;
  422. this.$api.getExamine({ projectId: id }).then((res) => {
  423. if (res.data.code == 200) {
  424. self.examine = res.data.rows;
  425. }
  426. });
  427. },
  428. getCityList(id) {
  429. let self = this;
  430. this.$api.getCityList({ parentId: id }).then((res) => {
  431. if (res.data.code == 200) {
  432. self.cityList = res.data.rows;
  433. }
  434. });
  435. },
  436. getProvinceList() {
  437. let self = this;
  438. if (self.provinceList.length > 0) {
  439. return;
  440. }
  441. this.$api.getProvinceList().then((res) => {
  442. if (res.data.code == 200) {
  443. self.provinceList = res.data.rows;
  444. if (self.provinceList.length > 0) {
  445. self.getCityList(self.provinceList[0].areaId);
  446. }
  447. }
  448. });
  449. },
  450. goodsGradeList(goodsId) {
  451. let self = this;
  452. this.$api.goodsGradeList({ goodsId: goodsId }).then((res) => {
  453. if (res.data.code == 200) {
  454. self.gradeList = res.data.rows;
  455. if (self.gradeList.length == 0) {
  456. let item = {
  457. className: "系统分班",
  458. gradeId: 0,
  459. };
  460. self.gradeList.push(item);
  461. }
  462. }
  463. });
  464. },
  465. openPopup(index, item, itemIndex) {
  466. this.detail = item;
  467. this.detailIndex = itemIndex;
  468. if (index == 0) {
  469. this.gradeValue = -1;
  470. this.show = true;
  471. this.goodsGradeList(item.goodsId);
  472. } else {
  473. this.applyObj = {
  474. applyAreasJson: null,
  475. examDateJson: null,
  476. };
  477. (this.pAreaIndex = 0),
  478. (this.cAreaIndex = 0),
  479. (this.examIndex = 0),
  480. (this.show1 = true);
  481. this.getProvinceList();
  482. this.getExamine(item.projectId);
  483. }
  484. },
  485. checkboxGroupChange(e) {
  486. this.checkboxList = e;
  487. if (this.checkboxList.length == this.list.length) {
  488. this.allChecked = true;
  489. } else {
  490. this.allChecked = false;
  491. }
  492. },
  493. login() {
  494. uni.navigateTo({ url: "/pages4/login/login" });
  495. },
  496. cartList() {
  497. let self = this;
  498. this.allChecked = false;
  499. this.totalPrice = 0.0;
  500. this.checkboxList = [];
  501. this.$api.cartList().then((res) => {
  502. if (res.data.code == 200) {
  503. for (let i = 0; i < res.data.rows.length; i++) {
  504. let item = res.data.rows[i];
  505. item.checked = false;
  506. if (item.status != 1 || item.goodsStatus != 1) {
  507. item.disabled = true;
  508. } else {
  509. item.disabled = false;
  510. }
  511. item.show = false;
  512. item.gradObj = {}; //存储班级
  513. item.applyAreas = {};
  514. item.examDate = {};
  515. }
  516. self.list = res.data.rows;
  517. }
  518. });
  519. },
  520. delItem(item) {
  521. let self = this;
  522. this.$api.deleteCart(item.id).then((res) => {
  523. if (res.data.code == 200) {
  524. self.cartList();
  525. }
  526. });
  527. },
  528. swipeChange(e, item) {
  529. item.show = e;
  530. },
  531. goBuy() {
  532. if (this.checkboxList.length == 0) {
  533. uni.showModal({
  534. title: "提示",
  535. content: "请选择商品",
  536. showCancel: false,
  537. });
  538. return;
  539. }
  540. let checkGoodsList = [];
  541. for (let i = 0; i < this.checkboxList.length; i++) {
  542. let index = this.checkboxList[i];
  543. let item = this.list[index];
  544. checkGoodsList.push(item);
  545. if (item.templateType == "class" && item.goodsType == 1) {
  546. if (!item.gradObj.className) {
  547. uni.showModal({
  548. title: "提示",
  549. content: "请选择班级",
  550. showCancel: false,
  551. });
  552. return false;
  553. }
  554. }
  555. if (item.templateType == "apply" && item.goodsType == 1) {
  556. // if (!item.applyAreas.areaName) {
  557. // uni.showModal({
  558. // title: '提示',
  559. // content: '请选择报考地区',
  560. // showCancel: false
  561. // });
  562. // return false;
  563. // }
  564. }
  565. }
  566. this.$store.commit("setShoppingCartList", {
  567. shoppingCartList: checkGoodsList,
  568. });
  569. this.$navTo.togo("/pages2/order/confirm_pay?fromCart=true");
  570. },
  571. checkboxChange(n) {
  572. this.$nextTick(() => {
  573. this.totalPrice = 0.0;
  574. for (let i = 0; i < this.list.length; i++) {
  575. if (this.list[i].checked) {
  576. this.totalPrice += this.list[i].standPrice;
  577. }
  578. }
  579. });
  580. },
  581. checkboxAllChange(n) {
  582. this.$nextTick(() => {
  583. this.totalPrice = 0.0;
  584. this.checkboxList = [];
  585. if (n.value) {
  586. for (let i = 0; i < this.list.length; i++) {
  587. this.list[i].checked = true;
  588. this.totalPrice += this.list[i].standPrice;
  589. this.checkboxList.push(i);
  590. }
  591. } else {
  592. for (let i = 0; i < this.list.length; i++) {
  593. this.list[i].checked = false;
  594. }
  595. }
  596. });
  597. },
  598. },
  599. components: { ClassTimeTip },
  600. };
  601. </script>
  602. <style>
  603. page {
  604. background-color: #eaeef1;
  605. }
  606. </style>
  607. <style scoped lang="scss">
  608. .shop_list {
  609. padding: 16rpx 16rpx 180rpx 16rpx;
  610. // padding-bottom: 98rpx;
  611. }
  612. .operate {
  613. background-color: #ff3b30;
  614. color: #ffffff;
  615. border-top-right-radius: 16rpx;
  616. border-bottom-right-radius: 16rpx;
  617. margin-bottom: 20rpx;
  618. display: flex;
  619. align-items: center;
  620. justify-content: center;
  621. padding: 0 20rpx;
  622. }
  623. .picker-item {
  624. height: 50px;
  625. align-items: center;
  626. justify-content: center;
  627. text-align: center;
  628. }
  629. .picker-view {
  630. width: 100%;
  631. height: 420rpx;
  632. text-align: center;
  633. }
  634. .topTxt {
  635. font-size: 30rpx;
  636. color: #666666;
  637. text-align: center;
  638. padding: 20rpx 0;
  639. }
  640. .blackTxt {
  641. font-size: 30rpx;
  642. font-family: PingFang SC;
  643. font-weight: bold;
  644. color: #333333;
  645. }
  646. .blue-box {
  647. background: #ebf5ff;
  648. }
  649. .white-box {
  650. width: 646rpx;
  651. border-radius: 24rpx;
  652. align-items: center;
  653. display: flex;
  654. padding-left: 15rpx;
  655. }
  656. .okBtn {
  657. width: 200rpx;
  658. height: 64rpx;
  659. background: linear-gradient(0deg, #015eea, #00c0fa);
  660. border-radius: 32rpx;
  661. color: #ffffff;
  662. text-align: center;
  663. line-height: 64rpx;
  664. }
  665. .confrim-btn {
  666. border-top: 1px solid #eeeeee;
  667. height: 98rpx;
  668. width: 100%;
  669. display: flex;
  670. align-items: center;
  671. justify-content: center;
  672. }
  673. .grade {
  674. height: 23rpx;
  675. font-size: 24rpx;
  676. color: #999999;
  677. margin: 0 auto;
  678. margin-top: 15rpx;
  679. text-align: center;
  680. }
  681. .line1 {
  682. width: 80rpx;
  683. height: 8rpx;
  684. background: #999999;
  685. border-radius: 4rpx;
  686. margin: 0 auto;
  687. margin-top: 15rpx;
  688. }
  689. .popup_box {
  690. height: 700rpx;
  691. box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);
  692. border-radius: 32rpx 32rpx 0rpx 0rpx;
  693. }
  694. .goods-item {
  695. width: 100%;
  696. background: #ffffff;
  697. border-radius: 24rpx;
  698. margin-bottom: 12rpx;
  699. padding: 15rpx 0;
  700. display: flex;
  701. .item-wrap {
  702. width: 100%;
  703. .goods-msg {
  704. padding: 0rpx 0rpx 0rpx 22rpx;
  705. display: flex;
  706. align-items: center;
  707. .flex {
  708. display: flex;
  709. padding-bottom: 15rpx;
  710. width: 630rpx;
  711. .goods-img {
  712. overflow: hidden;
  713. width: 204rpx;
  714. height: 120rpx;
  715. border-radius: 22rpx;
  716. margin-left: 22rpx;
  717. margin-right: 24rpx;
  718. image {
  719. display: block;
  720. // width: 278rpx;
  721. // height: 156rpx;
  722. width: 100%;
  723. height: 100%;
  724. }
  725. }
  726. &__auto {
  727. flex: 1;
  728. .goods-title {
  729. color: #333333;
  730. font-size: 28rpx;
  731. font-weight: bold;
  732. text-align: right;
  733. width: 378rpx;
  734. overflow: hidden;
  735. text-overflow: ellipsis;
  736. white-space: nowrap;
  737. }
  738. .priceTag {
  739. font-size: 32rpx;
  740. font-family: PingFang SC;
  741. font-weight: bold;
  742. color: #fc3f3f;
  743. display: flex;
  744. // flex-direction: row-reverse;
  745. margin-right: 8rpx;
  746. margin-top: 25rpx;
  747. }
  748. }
  749. }
  750. }
  751. .goods-select {
  752. &__type {
  753. display: flex;
  754. justify-content: space-between;
  755. align-items: center;
  756. height: 50rpx;
  757. padding: 0 15rpx;
  758. }
  759. }
  760. }
  761. }
  762. .btn2 {
  763. font-size: 32rpx;
  764. font-weight: 500;
  765. color: #ffffff;
  766. margin-right: 8rpx;
  767. width: 232rpx;
  768. height: 92rpx;
  769. line-height: 92rpx;
  770. text-align: center;
  771. background: #fc3f3f;
  772. border-radius: 120rpx;
  773. }
  774. .bottomBox {
  775. position: fixed;
  776. bottom: 0rpx;
  777. width: 100%;
  778. left: 0;
  779. height: 132rpx;
  780. background-color: #ffffff;
  781. display: flex;
  782. justify-content: space-between;
  783. align-items: center;
  784. padding: 0 32rpx;
  785. box-shadow: 0px -2px 6px 0px rgba(0, 0, 0, 0.1);
  786. z-index: 9999;
  787. .bottons_all {
  788. // width: 674rpx;
  789. // height: 104rpx;
  790. // background: #007AFF;
  791. // border-radius: 52rpx;
  792. width: 100%;
  793. display: flex;
  794. align-items: center;
  795. justify-content: space-between;
  796. // padding: 0rpx 26rpx 0rpx 23rpx;
  797. }
  798. .priceTag {
  799. font-size: 32rpx;
  800. font-family: PingFang SC;
  801. font-weight: bold;
  802. color: #fc3f3f;
  803. display: flex;
  804. flex-direction: row-reverse;
  805. margin-right: 20rpx;
  806. }
  807. .check_alls {
  808. display: flex;
  809. align-items: center;
  810. color: #969696;
  811. // .rmb {
  812. // // margin-right: 9rpx;
  813. // // margin-left: 35rpx;
  814. // // font-size: 20rpx;
  815. // // position: relative;
  816. // // top: -14rpx;
  817. // // left: 0rpx;
  818. // }
  819. }
  820. .all_sum {
  821. font-size: 28rpx;
  822. font-weight: 800;
  823. color: #303030;
  824. margin-left: 35rpx;
  825. }
  826. .checkall {
  827. font-weight: 500;
  828. color: #969696;
  829. font-size: 28rpx;
  830. }
  831. }
  832. .half_circle {
  833. position: fixed;
  834. bottom: 0rpx;
  835. width: 100%;
  836. left: 0;
  837. height: 20rpx;
  838. border: 1rpx solid;
  839. display: flex;
  840. justify-content: center;
  841. .bulge {
  842. width: 110rpx;
  843. height: 55rpx;
  844. border-radius: 55px 55px 0px 0px;
  845. background-color: #fff;
  846. }
  847. }
  848. </style>