contribution.vue 22 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018
  1. <template>
  2. <view class="content">
  3. <!-- <view class="top">
  4. 爱心捐款
  5. </view> -->
  6. <view class="jg" style="height: 43rpx;"></view>
  7. <view class="nav flex">
  8. <view class="nav-item" v-for="(item,indez) in navList" :class="{'action': currentIndex == indez}"
  9. @click="navClick(indez)">
  10. {{item.tit}}
  11. </view>
  12. </view>
  13. <template v-if="currentIndex == 1">
  14. <view class="tit">
  15. 捐赠意向
  16. </view>
  17. <picker :value="jkindex" @change="PickerDire" :range="chooseDire" class="choose-yx-box">
  18. <view class="">{{ intention || '请选择捐款意向'}}</view>
  19. </picker>
  20. <view class="list-box" v-for="(item,index) in gyList" :key='index' @click="Jump(item)"
  21. v-if="item.title == intention">
  22. <view class="box-left">
  23. <image :src="item.image_input[0]" mode="" class="left-img"></image>
  24. </view>
  25. <view class="box-right">
  26. <view class="right-top word1_ellipsis">
  27. {{item.title}}
  28. </view>
  29. <view class="right-center">
  30. {{item.synopsis}}
  31. </view>
  32. <!-- <view class="right-foot">
  33. 已阅读人数:{{item.visit || 0}}
  34. </view> -->
  35. </view>
  36. </view>
  37. </template>
  38. <template v-if="currentIndex == 0">
  39. <view class="tit">
  40. 类型
  41. </view>
  42. <picker :value="index" @change="PickerHf" :range="hfList" class="choose-yx-box">
  43. <view class="">{{ hfType || '请选择会费类型'}}</view>
  44. </picker>
  45. </template>
  46. <view class="tit">
  47. {{currentIndex == 1? '捐款方式' : '缴费方式'}}
  48. </view>
  49. <picker :value="index" @change="PickerType" :range="chooseType" class="choose-yx-box">
  50. <view class="">{{ way || '请选择捐款方式'}}</view>
  51. </picker>
  52. <view class="tit">
  53. {{currentIndex == 1? '捐赠者' : '缴费者'}}
  54. </view>
  55. <template v-if="currentIndex == 1">
  56. <view class="flex" style="align-items: center;">
  57. <input type="text" placeholder="请输入姓名" v-model="donate_er" v-if="way=='个人'" class="name-ipt" />
  58. <input type="text" placeholder="请输入单位名称" v-model="donate_er" v-else class="name-ipt" />
  59. <view class="">
  60. <switch :checked="!is_public" color='#E63931' style="transform: scale(0.7,0.7)"
  61. @change="switch1Change" />匿名捐赠<br />
  62. <switch :checked="is_receipts" color='#E63931' style="transform: scale(0.7,0.7)"
  63. @change="switch2Change" />寄发票
  64. </view>
  65. </view>
  66. </template>
  67. <template v-if="currentIndex == 0">
  68. <input type="text" placeholder="请输入姓名" v-model="donate_er" v-if="way=='个人'" class="name-ipt name-ipt-t" />
  69. <input type="text" placeholder="请输入单位名称" v-model="donate_er" v-else class="name-ipt name-ipt-t" />
  70. </template>
  71. <input type="text" placeholder="请输入手机号" v-model="mobile" class="name-ipt name-ipt-t"
  72. style="margin: 40rpx 0 40rpx 30rpx" />
  73. <view class="tit">
  74. {{currentIndex == 1? '捐赠金额' : '缴费金额'}}
  75. </view>
  76. <input type="text" placeholder="请输入金额" v-model="money" class="name-ipt name-ipt-t money-box" />
  77. <template v-if="is_receipts">
  78. <view class="tit">
  79. 联系地址
  80. </view>
  81. <input type="text" placeholder="请输入联系地址" v-model="address" class="name-ipt name-ipt-t" />
  82. </template>
  83. <view class="submit" @click="confirm()">
  84. 立即提交
  85. </view>
  86. <template v-if="currentIndex == 1 ">
  87. <view class="tit">
  88. 爱心榜
  89. </view>
  90. <scroll-view class="love-wrap" scroll-y @scrolltolower="getLoveList()">
  91. <view class="love-item" v-for="item in loveList">
  92. <view class="itemt clamp">
  93. {{item.donate_er}}
  94. </view>
  95. <view class="itemt clamp" style="text-align: center;">
  96. {{item.pay_time | time}}
  97. </view>
  98. <view class="itemt clamp" style="text-align: right;">
  99. ¥{{item.money}}
  100. </view>
  101. </view>
  102. <uni-load-more :status="loadingType"></uni-load-more>
  103. </scroll-view>
  104. <view class="" style="height: 20rpx;">
  105. </view>
  106. </template>
  107. <uni-popup ref="popup1" type="center">
  108. <view class="popup-box">
  109. <!-- <view class="img">
  110. <image src="../../static/img/WechatIMG662.png" mode=""></image>
  111. </view> -->
  112. <view class="mian">
  113. <view class="delivery">
  114. 支付失败
  115. <!-- {{ i18n.qrhwsdm }} -->
  116. </view>
  117. <view class="nocancel">
  118. 请退出页面,重新登录
  119. <!-- {{ i18n.wfcx }} -->
  120. </view>
  121. <view class="comfirm-box">
  122. <view class="cancel" @click="cancel1">
  123. 取消
  124. </view>
  125. <view class="comfirm" @click="comfirmExit()">
  126. 确认
  127. </view>
  128. </view>
  129. </view>
  130. </view>
  131. </uni-popup>
  132. </view>
  133. </template>
  134. <script>
  135. import {
  136. getArticleList
  137. } from '@/api/index.js'
  138. import {
  139. chosintention,
  140. joinDona
  141. } from '@/api/ask.js';
  142. import uniPopup from '@/components/uni-popup/uni-popup.vue';
  143. import {
  144. computedOrderkey,
  145. balance,
  146. createOrderkey,
  147. orderPay
  148. } from '@/api/money.js';
  149. import {
  150. saveUrl,
  151. interceptor
  152. } from '@/utils/loginUtils.js';
  153. import {
  154. mapState,
  155. mapMutations
  156. } from 'vuex';
  157. import {
  158. userinfo
  159. } from '@/api/user.js';
  160. import {
  161. loveList
  162. } from '@/api/order.js'
  163. export default {
  164. filters: {
  165. time(val) {
  166. let str = ''
  167. if (val) {
  168. let date = new Date(val * 1000)
  169. let y = date.getFullYear()
  170. let m = date.getMonth() + 1
  171. let d = date.getDate()
  172. return str = y + '/' + m + '/' + d
  173. }
  174. return str
  175. }
  176. },
  177. components: {
  178. uniPopup,
  179. // uniLoadMore
  180. },
  181. watch: {
  182. currentIndex(newValue, oldValue) {
  183. if (newValue == 0) {
  184. uni.setNavigationBarTitle({
  185. title: '会费缴纳'
  186. })
  187. } else if (newValue == 1) {
  188. uni.setNavigationBarTitle({
  189. title: '在线捐赠'
  190. })
  191. } else if (newValue == 2) {
  192. uni.setNavigationBarTitle({
  193. title: '我的记录'
  194. })
  195. }
  196. }
  197. },
  198. data() {
  199. return {
  200. jkindex: '',
  201. hfType: '',
  202. hfList: [],
  203. navList: [{
  204. tit: '会费缴纳',
  205. },
  206. {
  207. tit: '在线捐赠',
  208. },
  209. // {
  210. // tit: '我的记录',
  211. // }
  212. ],
  213. currentIndex: 0,
  214. index: 0,
  215. intention: '', // 捐款意向
  216. way: '个人', // 捐款方式
  217. money: '', // 捐款金额
  218. // elsemoney: '', // 其他金额
  219. popmoney: '', // 按钮金额 弹窗金额
  220. is_show: true,
  221. moneyList: [{
  222. id: 0,
  223. money: 500
  224. },
  225. {
  226. id: 1,
  227. money: 200
  228. },
  229. {
  230. id: 2,
  231. money: 100
  232. },
  233. {
  234. id: 3,
  235. money: 50
  236. },
  237. {
  238. id: 4,
  239. money: 20
  240. },
  241. ],
  242. is_public: true, // 是否实名公开
  243. is_receipts: false, // 是否开发票
  244. donate_er: '', // 捐款人/单位
  245. mobile: '', // 手机号
  246. isshowMoney: false, // 其他金额是否展示
  247. address: '', // 联系地址
  248. // chooseDire: ['请选择捐款意向','红十字人道事业(非定向捐赠)','疫情防控','其他','红十字博爱送万家','AED救护及科普','青少年生命安全教育基地建设项目','关注重度失能老人项目','青少年白血病救护项目','地芯行动-关爱地中海贫血儿童','会费缴纳'],
  249. chooseDire: [],
  250. chooseType: ['个人', '单位'],
  251. chooseMoney: ['5元', '10元', '50元', '其他金额'],
  252. payLoding: false, //判断是否支付中
  253. froms: '', //保存h5中数据来源对象
  254. type: '', //判断是否从订单中进入
  255. payName: 'weixin',
  256. loveList: [],
  257. page: 1,
  258. limit: 20,
  259. loadingType: 'more',
  260. loaded: false,
  261. gyList: []
  262. // orderInfo: {},
  263. }
  264. },
  265. onLoad(options) {
  266. // console.log(333,options)
  267. if (options.key) {
  268. this.intention = options.key
  269. }
  270. this.getYxList()
  271. this.getLoveList()
  272. this.getGyList()
  273. this.currentIndex = 1
  274. },
  275. onShow() {
  276. // this.getYxList()
  277. saveUrl()
  278. // let token = uni.getStorageSync('token');
  279. console.log(1, this);
  280. // uni.showModal({
  281. // title: '判断hasLogin',
  282. // content: JSON.stringify(this.hasLogin),
  283. // })
  284. if (!this.hasLogin) {
  285. // 登录拦截
  286. // interceptor();
  287. uni.showModal({
  288. title: '登录',
  289. content: '您未登录,是否马上登陆?',
  290. success: e => {
  291. if (e.confirm) {
  292. interceptor();
  293. }
  294. },
  295. fail: e => {
  296. console.log(e);
  297. uni.showModal({
  298. title: 'cuowu',
  299. content: JSON.stringify(e),
  300. })
  301. }
  302. });
  303. } else {
  304. // this.loadData();
  305. }
  306. },
  307. computed: {
  308. ...mapState('user', ['userInfo', 'baseURL', 'hasLogin']),
  309. ...mapState(['weichatObj']),
  310. },
  311. methods: {
  312. // 获取公益项目
  313. getGyList() {
  314. getArticleList({
  315. page: 1,
  316. limit: 20
  317. }, 17).then(({
  318. data
  319. }) => {
  320. console.log(data, '17')
  321. this.gyList = data.list
  322. })
  323. },
  324. Jump(item) {
  325. console.log(item.url, 'item.url')
  326. if (item.url != '') {
  327. window.location.href = item.url
  328. } else {
  329. uni.navigateTo({
  330. url: '/pages/article/detail?id=' + item.id
  331. })
  332. }
  333. },
  334. ceshi() {
  335. window.location.href = 'weixin://dl/business/?t=gLuI4kyK2mj'
  336. },
  337. getLoveList() {
  338. let obj = this
  339. if (obj.loadingType == 'loading' || obj.loadingType == 'noMore') {
  340. return
  341. }
  342. obj.loadingType = 'loading'
  343. loveList({
  344. page: this.page,
  345. limit: this.limit
  346. }).then(res => {
  347. console.log(res, 'loveList')
  348. this.loveList = this.loveList.concat(res.data.list)
  349. this.page++
  350. if (res.data.list.length == this.limit) {
  351. this.loadingType = 'more'
  352. } else {
  353. this.loadingType = 'noMore'
  354. }
  355. obj.loaded = true
  356. })
  357. },
  358. navClick(indez) {
  359. this.currentIndex = indez
  360. },
  361. //获取捐赠意向
  362. getYxList() {
  363. chosintention({}).then(({
  364. data
  365. }) => {
  366. console.log(data)
  367. let arr = data.filter(item => {
  368. return item.title.indexOf('会费') == -1
  369. })
  370. let arr2 = data.filter(item => {
  371. return item.title.indexOf('会费') != -1
  372. })
  373. this.hfList = arr2.map(item => item.title)
  374. this.hfType = this.hfList[0]
  375. this.chooseDire = arr.map(item => item.title)
  376. if (!this.intention) {
  377. this.intention = this.chooseDire[0]
  378. }
  379. console.log(this.chooseDire, 'filter')
  380. }).catch()
  381. },
  382. // 点击捐赠意向
  383. addType(e) {
  384. chosintention({}).then(({
  385. data
  386. }) => {
  387. console.log(data)
  388. this.chooseDire = data.map(item => item.title)
  389. }).catch()
  390. },
  391. // 选择捐赠意向
  392. PickerDire: function(e) {
  393. // console.log(334, this.chooseDire)
  394. this.intention = this.chooseDire[e.target.value];
  395. this.index = e.target.value + 1;
  396. },
  397. PickerHf(e) {
  398. // console.log(334, this.chooseDire)
  399. this.hfType = this.hfList[e.target.value];
  400. },
  401. // 选择捐款方式
  402. PickerType: function(e) {
  403. this.way = this.chooseType[e.target.value];
  404. this.index = e.target.value + 1;
  405. console.log('选择捐款方式', this.index)
  406. if (this.index == 1) {
  407. this.is_show = true
  408. } else {
  409. this.is_show = false
  410. }
  411. // if ( )
  412. },
  413. // 选择捐款金额
  414. PickerMoney: function(e) {
  415. this.money = this.chooseMoney[e.target.value];
  416. this.index = e.target.value + 1;
  417. console.log('选择金额', this.money)
  418. if (this.money == '其他金额') {
  419. this.isshowMoney = true
  420. } else {
  421. this.isshowMoney = false
  422. this.elsemoney = ''
  423. }
  424. },
  425. // 其他金额 选择
  426. tochooseMoney: function() {
  427. this.$refs.popup.open();
  428. },
  429. addmoney(mon) {
  430. console.log('点击金额按钮', mon.money)
  431. this.popmoney = mon.money
  432. console.log(123, this.popmoney)
  433. },
  434. cancel() {
  435. this.$refs.popup.close();
  436. },
  437. cancel1() {
  438. this.$refs.popup1.close();
  439. },
  440. comfirm1: function() {
  441. let obj = this
  442. if (obj.popmoney.toString().trim() == '') {
  443. console.log('输入框为空')
  444. } else {
  445. console.log('输入框为不为空')
  446. obj.money = obj.popmoney
  447. obj.popmoney = ''
  448. this.$refs.popup.close();
  449. }
  450. },
  451. comfirmExit() {
  452. console.log('点击comfirmExit')
  453. this.$refs.popup1.close()
  454. uni.switchTab({
  455. url: '/pages/home/home'
  456. });
  457. },
  458. // 是否实名公开
  459. switch1Change(e) {
  460. this.is_public = e.detail.value
  461. console.log(this.is_public)
  462. },
  463. //是都寄发票
  464. switch2Change(e) {
  465. this.is_receipts = e.detail.value
  466. console.log('is_receipts', this.is_receipts)
  467. },
  468. // 提交
  469. confirm: async function() {
  470. let obj = this
  471. if (!obj.way) {
  472. this.$api.msg('请选择捐款方式!');
  473. return;
  474. }
  475. if (!obj.money) {
  476. this.$api.msg('请输入捐款金额!');
  477. return;
  478. }
  479. if (this.is_show) {
  480. if (!obj.donate_er) {
  481. this.$api.msg('请填写您的姓名');
  482. return;
  483. }
  484. } else {
  485. if (!obj.donate_er) {
  486. this.$api.msg('请填写您的单位');
  487. return;
  488. }
  489. }
  490. const reg = /^(\+?0?86-?)?1[\d]\d{9}$/;
  491. if (!reg.test(obj.mobile)) {
  492. obj.$api.msg('请填写正确的手机号码');
  493. return;
  494. }
  495. if (this.is_receipts == true) {
  496. // obj.address = '用户未填写联系地址'
  497. if (!obj.address) {
  498. this.$api.msg('请输入联系地址');
  499. return;
  500. }
  501. }
  502. if (!obj.address) {
  503. obj.address = '用户未填写联系地址'
  504. }
  505. createOrderkey({
  506. money: obj.money, //捐款金额
  507. intention: obj.currentIndex == 0 ? obj.hfType : obj.intention, //捐款意向
  508. way: obj.way, //捐款方式
  509. is_public: obj.is_public, //是否实名公开
  510. is_receipts: obj.is_receipts, //是否开发票
  511. donate_er: obj.donate_er, //捐款人/单位
  512. mobile: obj.mobile, //手机号
  513. address: obj.address, //联系地址
  514. }).then(({
  515. data
  516. }) => {
  517. console.log(345, data)
  518. console.log(666, obj)
  519. let res = data.result.jsConfig;
  520. console.log(res)
  521. // 仅作为示例,非真实参数信息。
  522. obj.weichatObj.chooseWXPay({
  523. timestamp: res.timestamp,
  524. nonceStr: res.nonceStr,
  525. package: res.package,
  526. signType: res.signType,
  527. paySign: res.paySign,
  528. success: function(res) {
  529. // obj.$api.msg('支付成功')
  530. uni.navigateTo({
  531. url: '/pages/form/donaSuccess?money=' + obj.money
  532. })
  533. },
  534. fail: function(res) {
  535. this.$refs.popup1.open()
  536. console.log(res, "失败")
  537. console.log(res.errMsg)
  538. }
  539. });
  540. })
  541. // 支付中
  542. obj.payLoding = true;
  543. }
  544. },
  545. }
  546. </script>
  547. <style lang="scss">
  548. .content {}
  549. .top {
  550. display: flex;
  551. align-items: center;
  552. justify-content: center;
  553. background-color: #E63931;
  554. color: #FFFFFF;
  555. padding: 22rpx 0;
  556. }
  557. .box {
  558. margin-top: 10rpx;
  559. .box-item2 {
  560. background-color: #FFFFFF;
  561. padding: 18rpx 24rpx;
  562. // display: flex;
  563. border-bottom: 1rpx solid #F2F2F2;
  564. .box-left {
  565. color: #E63931;
  566. }
  567. .box-info {
  568. text-indent: 68rpx;
  569. margin-top: 16rpx;
  570. color: #7b7b7b;
  571. }
  572. .box-phone {
  573. text-indent: 68rpx;
  574. margin-top: 6rpx;
  575. // text-align: center;
  576. color: #7b7b7b;
  577. }
  578. }
  579. .box-item1 {
  580. background-color: #FFFFFF;
  581. padding: 18rpx 24rpx;
  582. // display: flex;
  583. border-bottom: 1rpx solid #F2F2F2;
  584. }
  585. .box-main {
  586. display: flex;
  587. .box-left {
  588. width: 200rpx;
  589. flex-shrink: 0;
  590. // flex: 0;
  591. }
  592. .box-right {
  593. width: 100%;
  594. color: #999999;
  595. text-align: right;
  596. }
  597. }
  598. .box-bottom {
  599. color: #999999;
  600. // padding-left: 12rpx;
  601. padding-top: 12rpx;
  602. font-size: 26rpx;
  603. }
  604. .box-item {
  605. background-color: #FFFFFF;
  606. padding: 24rpx;
  607. display: flex;
  608. border-bottom: 1rpx solid #F2F2F2;
  609. }
  610. .box-left {
  611. width: 200rpx;
  612. flex-shrink: 0;
  613. // flex: 0;
  614. .imp {
  615. color: #E63931;
  616. margin-right: 2rpx;
  617. }
  618. }
  619. .box-right {
  620. width: 100%;
  621. color: #999999;
  622. text-align: right;
  623. }
  624. }
  625. .switch-box {
  626. margin-top: 24rpx;
  627. display: flex;
  628. align-items: center;
  629. padding: 16rpx 24rpx;
  630. color: #7b7b7b;
  631. background-color: #FFFFFF;
  632. border-bottom: 1rpx solid #F2F2F2;
  633. justify-content: space-between;
  634. .switch-right {
  635. // background-color: #E63931;
  636. }
  637. }
  638. .infoOptional {
  639. padding: 20rpx 24rpx;
  640. }
  641. .submit {
  642. // position: fixed;
  643. // bottom: 0;
  644. // left: 0;
  645. // right: 0;
  646. width: 675rpx;
  647. height: 95rpx;
  648. background: #ff5c5c;
  649. color: #FFFFFF;
  650. display: flex;
  651. align-items: center;
  652. justify-content: center;
  653. margin: 40rpx auto;
  654. border-radius: 10rpx;
  655. }
  656. .popup_row {
  657. height: 500rpx;
  658. width: 100%;
  659. padding: 24rpx;
  660. background-color: #FFFFFF;
  661. .title {
  662. border-bottom: 2rpx solid #F2F2F2;
  663. color: #E63931;
  664. font-size: 32rpx;
  665. padding-left: 4rpx;
  666. padding-bottom: 16rpx;
  667. display: flex;
  668. justify-content: space-between;
  669. // align-items: center;
  670. .cancel {
  671. width: 36rpx;
  672. height: 36rpx;
  673. image {
  674. width: 36rpx;
  675. height: 36rpx;
  676. }
  677. }
  678. }
  679. .money-btn {
  680. display: flex;
  681. justify-content: space-around;
  682. margin-top: 28rpx;
  683. .btn {
  684. // width: 20%;
  685. // display: flex;
  686. // button{
  687. // background-color: #FFFFFF;
  688. // }
  689. }
  690. }
  691. .pop-main {
  692. margin-top: 32rpx;
  693. font-size: 34rpx;
  694. display: flex;
  695. .money-left {
  696. // width: 100rpx;
  697. padding: 0 6rpx;
  698. flex-shrink: 0;
  699. color: #E63931;
  700. // background-color: #457DBF;
  701. }
  702. .money-iup {
  703. width: 100%;
  704. padding-left: 22rpx;
  705. input {
  706. font-size: 32rpx;
  707. // color: #1B1B1B;
  708. color: #FF9797;
  709. .input-placeholder {
  710. // height: 70rpx;
  711. font-size: 32rpx;
  712. color: #FF9797;
  713. }
  714. }
  715. // background-color: pink;
  716. }
  717. }
  718. .comfirm {
  719. display: flex;
  720. justify-content: flex-end;
  721. margin-top: 54rpx;
  722. .comfirm1 {
  723. padding: 12rpx 24rpx;
  724. border-radius: 12rpx;
  725. color: #FFFFFF;
  726. background-color: #E63931;
  727. }
  728. }
  729. }
  730. .popup-box {
  731. width: 522rpx;
  732. height: 605rpx;
  733. background-color: #FFFFFF;
  734. border-radius: 20rpx;
  735. .img {
  736. border-radius: 20rpx 20rpx 0 0;
  737. width: 522rpx;
  738. height: 307rpx;
  739. image {
  740. border-radius: 20rpx 20rpx 0 0;
  741. width: 522rpx;
  742. height: 307rpx;
  743. }
  744. }
  745. .mian {
  746. display: flex;
  747. flex-direction: column;
  748. align-items: center;
  749. padding: 32rpx 32rpx;
  750. background-color: #FFFFFF;
  751. border-radius: 0 0 20rpx 20rpx;
  752. text-align: center;
  753. .delivery {
  754. font-size: 36rpx;
  755. color: #333333;
  756. // margin-top: 46rpx;
  757. }
  758. .nocancel {
  759. font-size: 30rpx;
  760. color: #999999;
  761. margin-top: 26rpx;
  762. }
  763. .comfirm-box {
  764. margin-top: 52rpx;
  765. display: flex;
  766. // margin-bottom: 32rpx;
  767. // justify-content: space-around;
  768. .cancel {
  769. display: flex;
  770. align-items: center;
  771. justify-content: center;
  772. width: 197rpx;
  773. height: 61rpx;
  774. border: 1px solid #C90F1B;
  775. border-radius: 31rpx;
  776. font-size: 24rpx;
  777. color: #C90F1B;
  778. }
  779. .comfirm {
  780. margin-left: 32rpx;
  781. display: flex;
  782. align-items: center;
  783. justify-content: center;
  784. width: 197rpx;
  785. height: 61rpx;
  786. background: #FA7E67;
  787. border-radius: 31px;
  788. font-size: 24rpx;
  789. color: #FFFFFF;
  790. }
  791. }
  792. }
  793. }
  794. .nav {
  795. height: 84rpx;
  796. width: 660rpx;
  797. margin: auto;
  798. color: #ff5c5c;
  799. font-size: 32rpx;
  800. font-weight: bold;
  801. .nav-item {
  802. flex-grow: 1;
  803. line-height: 84rpx;
  804. text-align: center;
  805. border: 1px solid #ff5c5c;
  806. }
  807. .action {
  808. background-color: #ff5c5c;
  809. color: #fff;
  810. }
  811. }
  812. .tit {
  813. font-size: 34rpx;
  814. font-weight: bold;
  815. padding-left: 30rpx;
  816. margin: 40rpx 0;
  817. }
  818. .choose-yx-box {
  819. width: 676rpx;
  820. height: 92rpx;
  821. border: 1px solid #989898;
  822. background-color: #dddddd;
  823. margin-left: 30rpx;
  824. view {
  825. line-height: 92rpx;
  826. width: 676rpx;
  827. height: 92rpx;
  828. padding-left: 28rpx;
  829. font-size: 32rpx;
  830. }
  831. }
  832. .name-ipt {
  833. width: 470rpx;
  834. height: 120rpx;
  835. font-size: 32rpx;
  836. line-height: 120rpx;
  837. border: 1px solid #989898;
  838. padding-left: 30rpx;
  839. margin-left: 30rpx;
  840. background-color: #ffffff;
  841. }
  842. .name-ipt-t {
  843. width: 676rpx;
  844. }
  845. .money-box {
  846. position: relative;
  847. &::after {
  848. content: '元';
  849. position: absolute;
  850. top: 0;
  851. bottom: 0;
  852. right: 20rpx;
  853. margin: auto;
  854. }
  855. }
  856. .love-wrap {
  857. width: 693rpx;
  858. height: 380rpx;
  859. margin: auto;
  860. border-radius: 10rpx;
  861. background-color: #fff;
  862. .love-item {
  863. height: 60rpx;
  864. line-height: 60rpx;
  865. display: flex;
  866. justify-content: space-between;
  867. align-items: center;
  868. .itemt {
  869. width: 231rpx;
  870. height: 60rpx;
  871. font-size: 30rpx;
  872. }
  873. }
  874. }
  875. .list-box {
  876. width: 725rpx;
  877. height: 200rpx;
  878. margin: 20rpx auto 0;
  879. background: #FFFFFF;
  880. box-shadow: 0px 5rpx 5rpx 0px rgba(35, 24, 21, 0.06);
  881. border-radius: 7rpx;
  882. padding: 0 20rpx;
  883. display: flex;
  884. align-items: center;
  885. .box-left {
  886. width: 230rpx;
  887. height: 145rpx;
  888. margin-right: 20rpx;
  889. .left-img {
  890. width: 230rpx;
  891. height: 145rpx;
  892. }
  893. }
  894. .box-right {
  895. width: 430rpx;
  896. height: 145rpx;
  897. position: relative;
  898. .right-top {
  899. font-size: 25rpx;
  900. font-weight: bold;
  901. color: #333333;
  902. margin-bottom: 24rpx;
  903. }
  904. .right-center {
  905. width: 362rpx;
  906. // height: 53rpx;
  907. font-size: 21rpx;
  908. font-weight: bold;
  909. color: #999999;
  910. line-height: 33rpx;
  911. overflow: hidden;
  912. text-overflow: ellipsis;
  913. display: -webkit-box;
  914. -webkit-line-clamp: 2; //在第几行显示...
  915. -webkit-box-orient: vertical;
  916. }
  917. .right-foot {
  918. font-size: 21rpx;
  919. font-weight: bold;
  920. color: #999999;
  921. line-height: 31rpx;
  922. text-align: right;
  923. // margin-top: 13rpx;
  924. position: absolute;
  925. right: 0;
  926. bottom: 0;
  927. }
  928. }
  929. }
  930. </style>