index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <template>
  2. <view>
  3. <nav-bar title="我的订单"></nav-bar>
  4. <view style="
  5. width: 100%;
  6. text-align: center;
  7. position: fixed;
  8. height: 96rpx;
  9. z-index: 999;
  10. ">
  11. <u-tabs :list="list" sticky :current="current" @change="change" active-color="#007AFF"
  12. :offset="[-1, 0]"></u-tabs>
  13. </view>
  14. <view style="padding: 96rpx 8rpx 130rpx">
  15. <view v-if="!order.length" class="noData">您暂无相关订单哦~</view>
  16. <template v-else>
  17. <view v-for="(item, index) in order" :key="index" class="lisChild">
  18. <view class="item">
  19. <view class="header" @click="openPopup(index)">
  20. <view>订单编号:{{ item.orderSn }}</view>
  21. <view>{{ $method.timestampToTime(item.createTime) }}</view>
  22. </view>
  23. <u-line color="#D6D6DB" />
  24. <view v-if="current == 3">
  25. <view class="body">
  26. <view class="body__content">
  27. <image class="goods-img" :src="$method.splitImgHost(item.coverUrl)"></image>
  28. <view class="goods-text">
  29. <view class="goods-name">{{ item.goodsName }}</view>
  30. <!-- <view class="goods-price">¥ {{ items.goodsRealPrice }}</view> -->
  31. </view>
  32. </view>
  33. </view>
  34. </view>
  35. <view v-else>
  36. <view class="body" v-for="(items, indexs) in item.orderGoodsList" :key="indexs"
  37. @click="goCourse(items, item.orderStatus)">
  38. <view class="body__content">
  39. <image class="goods-img" :src="$method.splitImgHost(items.coverUrl)"></image>
  40. <view class="goods-text">
  41. <view class="goods-name">{{ items.goodsName }}</view>
  42. <view class="goods-name" v-if="items.sevenYear">{{
  43. items.sevenYear
  44. }}</view>
  45. <view v-if="item.orderFrom !== 6" class="goods-price">¥
  46. {{ items.goodsRealPrice }}
  47. </view>
  48. </view>
  49. </view>
  50. <view style="
  51. display: flex;
  52. flex-direction: row-reverse;
  53. padding: 10rpx 0;
  54. ">
  55. <view v-if="
  56. items.refundStatus === 0 &&
  57. (item.orderFrom === 2 || item.orderFrom === 3) &&
  58. (item.orderStatus === 1 ||
  59. item.orderStatus === 2 ||
  60. item.orderStatus === 3) &&
  61. (items.goodsType == '1' ||
  62. items.goodsType == '2' ||
  63. items.goodsType == '6') &&
  64. items.goodsPrice > 0
  65. " class="btn2" @click.stop="handelRefund(item.orderSn, items)">申请退款</view>
  66. <!-- <view v-if="items.refundStatus == 2"> 已退款</view> -->
  67. <view v-if="items.periodStatus !== null">{{
  68. [
  69. "复审不通过",
  70. "初审不通过",
  71. "待审核",
  72. "初审通过",
  73. "复审通过待退款",
  74. "已退款",
  75. ][items.periodStatus + 2]
  76. }}</view>
  77. </view>
  78. </view>
  79. </view>
  80. <u-line color="#D6D6DB" />
  81. <view class="footer" v-if="current == 3">
  82. <view>
  83. <text style="color: #999; font-size: 24rpx; margin-right: 8rpx">退款金额</text>
  84. <text
  85. style="color: #ff2d55; font-size: 30rpx; font-weight: bold">¥{{ item.refundFee }}</text>
  86. </view>
  87. </view>
  88. <view class="footer" v-else>
  89. <view>
  90. <text
  91. style="color: #999; font-size: 24rpx; margin-right: 8rpx">共{{ item.orderGoodsList.length }}项</text>
  92. <!-- 业务系统下单的需要隐藏价格 -->
  93. <!-- 订单来源:1业务员普通单,2祥粤云学堂小程序,3祥粤云学堂网站,4祥粤e管证小程序,5业务员录单,6业务系统下单 -->
  94. <text v-if="item.orderFrom !== 6">
  95. <text style="color: #333; font-size: 30rpx; font-weight: bold">合计</text>
  96. <text
  97. style="color: #ff2d55; font-size: 30rpx; font-weight: bold">¥{{ item.payPrice }}</text>
  98. </text>
  99. </view>
  100. <view style="display: flex; align-items: center">
  101. <view class="btn2" v-if="
  102. item.orderStatus === 0 &&
  103. (item.orderFrom === 2 || item.orderFrom === 3)
  104. " @click="resumeOrder(item)">继续支付</view>
  105. <!-- <view class="btn2" v-if="item.orderStatus === -1 || item.orderStatus === -2" @click="againBuy(item)">重新购买</view> -->
  106. <view class="btn1" v-if="
  107. (item.orderStatus === -1 || item.orderStatus === -2) &&
  108. (item.orderFrom === 2 || item.orderFrom === 3)
  109. " @click="delOrder(item)">删除订单</view>
  110. <view class="btn1" @click="closeOrder(item)" v-if="
  111. item.orderStatus === 0 &&
  112. (item.orderFrom === 2 || item.orderFrom === 3)
  113. ">取消订单</view>
  114. </view>
  115. </view>
  116. </view>
  117. </view>
  118. </template>
  119. <template v-if="current == 1 && order.length">
  120. <view class="apply_btn">
  121. <view class="apply-invoice" @click="goInvoice">发票申请</view>
  122. </view>
  123. </template>
  124. </view>
  125. <!-- 退款弹窗 -->
  126. <u-popup v-model="show" :mask-close-able="false" closeable mode="center" width="80%" border-radius="24">
  127. <view class="rf-popup-main">
  128. <view class="title">确认要退款吗</view>
  129. <u-select v-model="showConfirm" mode="single-column" :list="refundList"
  130. :default-value="[refundForm.applyReasonIndex-1]" @confirm="confirm"></u-select>
  131. <view @click="showConfirm = true" class="btn_refund">
  132. {{refundForm.applyReasonIndex?refundList[refundForm.applyReasonIndex-1].label:'选择退款原因'}}
  133. </view>
  134. <u-input v-if="refundForm.applyReasonIndex == 5" v-model.trim="refundForm.applyReason"
  135. placeholder-style="color:#999999" placeholder="输入退款原因" class="applyInput" />
  136. <u-button type="primary" style="border-radius: 60rpx;" @click="refund">确定</u-button>
  137. </view>
  138. </u-popup>
  139. </view>
  140. </template>
  141. <script>
  142. import {
  143. mapGetters
  144. } from "vuex";
  145. export default {
  146. components: {},
  147. data() {
  148. return {
  149. showConfirm: false,
  150. refundList: [{
  151. label: "已学过,重复报名",
  152. value: 1
  153. },
  154. {
  155. label: "报错专业/课程",
  156. value: 2
  157. },
  158. {
  159. label: "班级未开班",
  160. value: 3
  161. },
  162. {
  163. label: "培训/继教周期未到",
  164. value: 4
  165. },
  166. {
  167. label: "其他",
  168. value: 5
  169. }
  170. ],
  171. list: [{
  172. name: "待支付",
  173. count: 0,
  174. },
  175. {
  176. name: "已支付",
  177. count: 0,
  178. },
  179. {
  180. name: "已取消",
  181. count: 0,
  182. },
  183. {
  184. name: "已退款",
  185. count: 0,
  186. },
  187. ],
  188. current: 0,
  189. order: [],
  190. formData: {
  191. status: "0,1",
  192. pageNum: 1,
  193. pageSize: 10,
  194. },
  195. pageNum1: 0,
  196. pageNum2: 0,
  197. pageNum3: 0,
  198. pageNum4: 0,
  199. refundForm: {},
  200. show: false,
  201. value: "",
  202. };
  203. },
  204. // onPullDownRefresh() {},
  205. onLoad(option) {
  206. this.current = +option.current || 0;
  207. this.getOrderList();
  208. this.getOrderNum();
  209. },
  210. onShow() {
  211. /* if(this.current === 2 && this.$method.isLogin()){
  212. this.$refs.refMy.init();
  213. } */
  214. },
  215. //分享功能
  216. onShareAppMessage(res) {
  217. var self = this;
  218. return {
  219. title: "中正",
  220. path: `/pages/index/index?inviteCode=` + userInfo == null ?
  221. "" : userInfo.userAccount,
  222. };
  223. },
  224. onReachBottom() {
  225. this.formData.pageNum++;
  226. this.getFY();
  227. },
  228. methods: {
  229. confirm(e) {
  230. this.refundForm.applyReasonIndex = e[0].value
  231. this.refundForm.applyReason = ''
  232. },
  233. getOrderNum() {
  234. this.$api
  235. .getorderlists({
  236. status: "0,1",
  237. pageNum: 1,
  238. pageSize: 1,
  239. orderStatus: "0",
  240. })
  241. .then((res) => {
  242. if (res.data.code === 200) {
  243. this.list[0].count = res.data.total;
  244. }
  245. });
  246. this.$api
  247. .getorderlists({
  248. status: "0,1",
  249. pageNum: 1,
  250. pageSize: 1,
  251. orderStatus: "1,2,3,4",
  252. })
  253. .then((res) => {
  254. if (res.data.code === 200) {
  255. this.list[1].count = res.data.total;
  256. }
  257. });
  258. this.$api
  259. .getorderlists({
  260. status: "0,1",
  261. pageNum: 1,
  262. pageSize: 1,
  263. orderStatus: "-1,-2",
  264. })
  265. .then((res) => {
  266. if (res.data.code === 200) {
  267. this.list[2].count = res.data.total;
  268. }
  269. });
  270. },
  271. /**
  272. * 跳转发票申请页面
  273. */
  274. goInvoice() {
  275. uni.navigateTo({
  276. url: `/pages2/invoice/index`,
  277. });
  278. },
  279. handelRefund(orderSn, item) {
  280. this.refundForm = {
  281. orderSn: orderSn,
  282. goodsId: item.goodsId,
  283. orderGoodsId: item.orderGoodsId,
  284. applyReasonIndex: "",
  285. applyReason: "",
  286. };
  287. this.show = true;
  288. },
  289. refund() {
  290. if (!this.refundForm.applyReasonIndex) {
  291. uni.showToast({
  292. title: "请选择退款原因"
  293. })
  294. return
  295. } else if (this.refundForm.applyReasonIndex == 5 && !this.refundForm.applyReason) {
  296. uni.showToast({
  297. title: "请输入退款原因"
  298. })
  299. return
  300. }
  301. this.refundForm.applyReason = this.refundForm.applyReasonIndex == 5 ? this.refundForm.applyReason : this
  302. .refundList[this.refundForm.applyReasonIndex - 1].label
  303. delete this.refundForm.applyReasonIndex
  304. this.$api.refundSmallOrder(this.refundForm).then((res) => {
  305. this.show = false;
  306. if (res.data.code == 200) {
  307. this.$method.showToast(res.data.msg);
  308. this.getOrderList();
  309. } else {
  310. uni.showToast({
  311. icon: "none",
  312. title: res.data.msg,
  313. });
  314. }
  315. });
  316. },
  317. /**
  318. * 跳转课程
  319. */
  320. goCourse(item, orderStatus) {
  321. // if(orderStatus == 1 || orderStatus == 2) {
  322. // console.log(item)
  323. // if(item.goodsType == 1) { //网课
  324. // uni.navigateTo({
  325. // url:'/pages2/wd/course?gid='+item.gradeId+'&id='+item.goodsId
  326. // })
  327. // } else if(item.goodsType == 2) { //题库
  328. // uni.navigateTo({
  329. // url:'/pages2/bank/question_detail?id='+item.goodsId
  330. // })
  331. // }
  332. // }
  333. },
  334. resumeOrder(item) {
  335. let self = this;
  336. // #ifdef MP-WEIXIN
  337. uni.login({
  338. provider: "weixin",
  339. success: function(loginRes) {
  340. console.log(loginRes, 69);
  341. self.getOpenid(loginRes.code, item);
  342. },
  343. });
  344. // #endif
  345. // #ifdef H5
  346. // 在首页已经请求过接口/gzh_login 提交code了
  347. this.resumeOrderPay(item);
  348. // #endif
  349. },
  350. getOpenid(code, item) {
  351. let self = this;
  352. this.$api.wxOpenid({
  353. code: code
  354. }).then((res) => {
  355. if (res.data.code == 200) {
  356. self.resumeOrderPay(item);
  357. }
  358. });
  359. },
  360. resumeOrderPay(item) {
  361. let data = {
  362. orderSn: item.orderSn
  363. };
  364. // #ifdef MP-WEIXIN
  365. this.$api.resumeSmallOrder(data).then((res) => {
  366. if (res.data.code == 200) {
  367. let data = res.data.data;
  368. uni.requestPayment({
  369. provider: data.provider,
  370. nonceStr: data.nonceStr,
  371. package: data.package,
  372. signType: data.signType,
  373. paySign: data.sign,
  374. timeStamp: String(data.timeStamp),
  375. success: function(res) {
  376. uni.redirectTo({
  377. url: "/pages2/order/confirm_success?sn=" + data.orderSn,
  378. });
  379. console.log("success:" + JSON.stringify(res));
  380. },
  381. fail: function(err) {
  382. console.log("fail:" + JSON.stringify(err));
  383. },
  384. });
  385. } else {
  386. uni.showModal({
  387. title: "提示",
  388. content: res.data.msg,
  389. showCancel: false,
  390. });
  391. }
  392. });
  393. // #endif
  394. // #ifdef H5
  395. data["url"] = location.href;
  396. this.$api.resumePlaceGzhOrder(data).then((res) => {
  397. console.log(res, "继续支付res");
  398. if (res.data.code == 200) {
  399. this.h5_wxpay(res.data.data);
  400. } else {
  401. uni.showModal({
  402. title: "提示",
  403. content: res.data.msg,
  404. showCancel: false,
  405. });
  406. }
  407. });
  408. // #endif
  409. },
  410. h5_wxpay(data) {
  411. console.log("调起支付状态1", data);
  412. let self = this;
  413. function onBridgeReady() {
  414. // 加载框
  415. WeixinJSBridge.invoke(
  416. "getBrandWCPayRequest", {
  417. appId: data.appId, // 公众号名称,由商户传入
  418. timeStamp: data.timeStamp, // 时间戳,自1970年以来的秒数
  419. nonceStr: data.nonceStr, // 随机串
  420. package: data.package,
  421. signType: data.signType, // 微信签名方式:
  422. paySign: data.paySign, // 微信签名
  423. },
  424. function(res) {
  425. // 判断支付状态
  426. console.log("支付状态", res, "this:", this, self);
  427. if (res.err_msg === "get_brand_wcpay_request:ok") {
  428. self.$u.toast("支付成功");
  429. uni.redirectTo({
  430. url: "/pages2/order/confirm_success?sn=" + data.orderSn,
  431. });
  432. } else if (res.err_msg === "get_brand_wcpay_request:cancel") {
  433. self.$u.toast("取消支付");
  434. } else {
  435. self.$u.toast("支付失败");
  436. }
  437. }
  438. );
  439. }
  440. if (typeof WeixinJSBridge === "undefined") {
  441. if (document.addEventListener) {
  442. document.addEventListener(
  443. "WeixinJSBridgeReady",
  444. onBridgeReady,
  445. false
  446. );
  447. } else if (document.attachEvent) {
  448. document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
  449. document.attachEvent("onWeixinJSBridgeReady", onBridgeReady);
  450. }
  451. } else {
  452. onBridgeReady();
  453. }
  454. },
  455. openPopup() {},
  456. //删除订单
  457. delOrder(item) {
  458. var self = this;
  459. uni.showModal({
  460. content: "确定要删除该订单吗",
  461. success: function(res) {
  462. if (res.confirm) {
  463. self.$api
  464. .eddOrder({
  465. orderId: item.orderId,
  466. status: -1,
  467. })
  468. .then((res) => {
  469. if (res.data.code === 200) {
  470. self.$method.showToast("订单删除成功");
  471. self.getOrderList();
  472. }
  473. });
  474. }
  475. },
  476. });
  477. },
  478. //取消订单
  479. closeOrder(item) {
  480. var self = this;
  481. uni.showModal({
  482. content: "确定要取消该订单吗",
  483. success: function(res) {
  484. if (res.confirm) {
  485. self.$api
  486. .eddOrder({
  487. orderId: item.orderId,
  488. orderStatus: -1,
  489. })
  490. .then((res) => {
  491. if (res.data.code === 200) {
  492. self.$method.showToast("订单取消成功", "success");
  493. self.getOrderList();
  494. }
  495. });
  496. }
  497. },
  498. });
  499. },
  500. getFY() {
  501. if (this.current === 0) {
  502. this.formData.orderStatus = "0";
  503. if (this.order.length >= this.pageNum1) {
  504. return;
  505. }
  506. }
  507. if (this.current === 1) {
  508. this.formData.orderStatus = "1,2,3,4";
  509. if (this.order.length >= this.pageNum2) {
  510. return;
  511. }
  512. }
  513. if (this.current === 2) {
  514. this.formData.orderStatus = "-1,-2";
  515. if (this.order.length >= this.pageNum3) {
  516. return;
  517. }
  518. }
  519. if (this.current == 3) {
  520. if (this.order.length >= this.pageNum4) {
  521. return;
  522. }
  523. this.formData.orderStatus = "";
  524. this.$api.orderRefundList(this.formData).then((res) => {
  525. if (res.data.code == 200) {
  526. this.order = this.order.concat(res.data.rows);
  527. }
  528. });
  529. return;
  530. }
  531. this.$api.getorderlists(this.formData).then((res) => {
  532. if (res.data.code === 200) {
  533. if (res.data.rows.length) {
  534. this.order = this.order.concat(res.data.rows);
  535. }
  536. }
  537. });
  538. },
  539. //获取订单
  540. getOrderList() {
  541. this.formData.pageNum = 1;
  542. if (this.current === 0) {
  543. this.formData.orderStatus = "0";
  544. }
  545. if (this.current === 1) {
  546. this.formData.orderStatus = "1,2,3,4";
  547. }
  548. if (this.current === 2) {
  549. this.formData.orderStatus = "-1,-2";
  550. }
  551. this.order = [];
  552. this.$api.getorderlists(this.formData).then((res) => {
  553. if (res.data.code === 200) {
  554. if (this.current === 0) {
  555. this.list[0].count = res.data.total;
  556. this.pageNum1 = res.data.total;
  557. }
  558. if (this.current === 1) {
  559. this.list[1].count = res.data.total;
  560. this.pageNum2 = res.data.total;
  561. }
  562. if (this.current === 2) {
  563. this.list[2].count = res.data.total;
  564. this.pageNum3 = res.data.total;
  565. }
  566. this.order = res.data.rows;
  567. console.log("订单列表this.order", this.order);
  568. }
  569. });
  570. },
  571. orderRefundList() {
  572. this.order = [];
  573. this.formData.pageNum = 1;
  574. this.formData.orderStatus = "";
  575. this.$api.orderRefundList(this.formData).then((res) => {
  576. if (res.data.code == 200) {
  577. this.order = res.data.rows;
  578. }
  579. });
  580. },
  581. change(index) {
  582. if (this.current === index) {
  583. return;
  584. }
  585. this.current = index;
  586. console.log("this.current", this.current);
  587. if (this.current == 3) {
  588. //退款订单
  589. this.formData.status = "";
  590. this.orderRefundList();
  591. } else {
  592. //其他订单
  593. this.formData.status = "0,1";
  594. this.getOrderList();
  595. }
  596. uni.pageScrollTo({
  597. scrollTop: 0,
  598. });
  599. },
  600. },
  601. computed: {
  602. ...mapGetters(["userInfo"])
  603. },
  604. };
  605. </script>
  606. <style>
  607. page {
  608. background: #eaeef1;
  609. }
  610. </style>
  611. <style scoped lang="scss">
  612. .lisChild {
  613. border-radius: 16rpx;
  614. margin-bottom: 16rpx;
  615. background: #fff;
  616. .header {
  617. display: flex;
  618. justify-content: space-between;
  619. align-items: center;
  620. height: 80rpx;
  621. padding: 0 15rpx;
  622. color: #666666;
  623. font-size: 24rpx;
  624. }
  625. .body {
  626. padding: 16rpx;
  627. &__content {
  628. display: flex;
  629. justify-content: space-between;
  630. .goods-img {
  631. height: 156rpx;
  632. width: 278rpx;
  633. border-radius: 16rpx;
  634. flex-shrink: 0;
  635. }
  636. .goods-text {
  637. margin-left: 20rpx;
  638. flex: 1;
  639. display: flex;
  640. flex-direction: column;
  641. .goods-name {
  642. color: #333333;
  643. font-size: 30rpx;
  644. font-weight: bold;
  645. flex: 1;
  646. }
  647. .goods-price {
  648. font-size: 30rpx;
  649. font-family: PingFang SC;
  650. font-weight: bold;
  651. color: #ff2d55;
  652. display: flex;
  653. flex-direction: row-reverse;
  654. }
  655. }
  656. }
  657. .btn2 {
  658. width: 144rpx;
  659. height: 46rpx;
  660. background: #ffffff;
  661. border: 2rpx solid #007aff;
  662. border-radius: 16rpx;
  663. text-align: center;
  664. line-height: 48rpx;
  665. color: #007aff;
  666. margin: 0 8rpx;
  667. }
  668. }
  669. .footer {
  670. padding: 0 24rpx;
  671. height: 80rpx;
  672. display: flex;
  673. justify-content: space-between;
  674. align-items: center;
  675. .btn2 {
  676. width: 144rpx;
  677. height: 46rpx;
  678. background: #ffffff;
  679. border: 2rpx solid #007aff;
  680. border-radius: 16rpx;
  681. text-align: center;
  682. line-height: 48rpx;
  683. color: #007aff;
  684. margin: 0 8rpx;
  685. }
  686. .btn1 {
  687. width: 144rpx;
  688. height: 48rpx;
  689. background: #ffffff;
  690. border: 2rpx solid #999999;
  691. border-radius: 16rpx;
  692. text-align: center;
  693. line-height: 48rpx;
  694. color: #999999;
  695. margin: 0 8rpx;
  696. }
  697. }
  698. }
  699. .lisChild:last-child {
  700. margin-bottom: 34rpx;
  701. }
  702. .noData {
  703. text-align: center;
  704. font-size: 32rpx;
  705. font-family: PingFang SC;
  706. font-weight: 500;
  707. color: #999999;
  708. margin: 160rpx 0;
  709. }
  710. .apply_btn {
  711. width: 100%;
  712. height: 124rpx;
  713. background: #ffffff;
  714. box-shadow: 0rpx -2rpx 6rpx 0rpx rgba(0, 0, 0, 0.1);
  715. z-index: 100;
  716. position: fixed;
  717. left: 0;
  718. right: 0;
  719. bottom: 0rpx;
  720. }
  721. .apply-invoice {
  722. margin: 0 auto;
  723. width: 686rpx;
  724. height: 84rpx;
  725. line-height: 84rpx;
  726. text-align: center;
  727. font-size: 32rpx;
  728. color: #fff;
  729. background: #0080ff;
  730. margin-top: 20rpx;
  731. border-radius: 120rpx;
  732. }
  733. .bottomBox {
  734. position: fixed;
  735. bottom: 0;
  736. width: 100%;
  737. left: 0;
  738. height: 98rpx;
  739. background-color: #ffffff;
  740. display: flex;
  741. justify-content: space-between;
  742. align-items: center;
  743. padding: 0 30rpx;
  744. }
  745. .rf-popup-main {
  746. text-align: center;
  747. padding: 40rpx;
  748. .title {
  749. font-size: 40rpx;
  750. font-weight: 600;
  751. }
  752. .tip {
  753. margin: 30rpx 0 40rpx;
  754. font-size: 32rpx;
  755. }
  756. .u-input {
  757. border-radius: 20rpx;
  758. background: #eee;
  759. padding-left: 20rpx !important;
  760. margin-bottom: 40rpx;
  761. }
  762. .u-button {
  763. border-radius: 60rpx !important;
  764. }
  765. }
  766. .btn_refund {
  767. border: 1rpx solid #999;
  768. border-radius: 8rpx;
  769. padding: 20rpx;
  770. margin: 20rpx 0rpx;
  771. }
  772. .applyInput {
  773. display: flex;
  774. padding: 0rpx 10rpx;
  775. margin-bottom: 10rpx;
  776. border: 1rpx solid #999;
  777. border-radius: 8rpx;
  778. }
  779. </style>