shoppingCart.vue 24 KB

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