You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

805 lines
20 KiB

3 months ago
  1. <template>
  2. <view :data-theme="theme">
  3. <view class="new-users copy-data">
  4. <view class="mid" style="flex:1;overflow: hidden;">
  5. <scroll-view scroll-y="true">
  6. <view class="bg"></view>
  7. <view class="head pad30">
  8. <view class="user-card">
  9. <view class="user-info" @click="goEdit()">
  10. <image class="avatar" :src='userInfo.avatar' v-if="userInfo.avatar && uid"></image>
  11. <image v-else class="avatar" :src="urlDomain+'crmebimage/perset/staticImg/f.png'" mode=""></image>
  12. <view class="info">
  13. <view class="name" v-if="!isLogin" @tap="openAuto">
  14. 请点击登录
  15. </view>
  16. <view class="name" v-if="userInfo && uid">
  17. {{userInfo && userInfo.nickname && uid ? userInfo.nickname : ''}}
  18. <view class="vip" v-if="userInfo.vip">
  19. <image :src="userInfo.vipIcon" alt="">
  20. <view style="margin-left: 10rpx;" class="vip-txt">{{userInfo.vipName|| ''}}
  21. </view>
  22. </view>
  23. </view>
  24. <view class="num" v-if="userInfo && userInfo.phone && uid">
  25. <view class="num-txt">{{userInfo.phone}}</view>
  26. <view class="icon">
  27. <image :src="urlDomain+'crmebimage/perset/staticImg/edit.png'" mode=""></image>
  28. </view>
  29. </view>
  30. <view class="phone" v-if="!userInfo.phone && isLogin" @tap.stop="bindPhone">绑定手机号</view>
  31. <!-- #ifdef APP-PLUS -->
  32. <text class="iconfont icon-shezhi app_set" @click.stop="appUpdate()"></text>
  33. <!-- #endif -->
  34. </view>
  35. </view>
  36. <view class="num-wrapper">
  37. <view class="num-item" @click="goMenuPage('/pages/users/user_money/index')">
  38. <text class="num">{{userInfo.nowMoney && uid ? userInfo.nowMoney:0}}</text>
  39. <view class="txt">余额</view>
  40. </view>
  41. <view class="num-item" @click="goMenuPage('/pages/users/user_integral/index')">
  42. <text class="num">{{userInfo.integral && uid ? userInfo.integral: 0}}</text>
  43. <view class="txt">积分</view>
  44. </view>
  45. <view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
  46. <text class="num">{{userInfo.couponCount && uid ? userInfo.couponCount : 0}}</text>
  47. <view class="txt">优惠券</view>
  48. </view>
  49. <view class="num-item" @click="goMenuPage('/pages/users/user_goods_collection/index')">
  50. <text class="num">{{userInfo.collectCount && uid ? userInfo.collectCount : 0}}</text>
  51. <view class="txt">收藏</view>
  52. </view>
  53. </view>
  54. </view>
  55. <view class="order-wrapper">
  56. <view class="order-hd flex">
  57. <view class="left">订单中心</view>
  58. <view class="right flex" @click="menusTap('/pages/users/order_list/index')">查看全部
  59. <text class="iconfont icon-xiangyou"></text>
  60. </view>
  61. </view>
  62. <view class="order-bd">
  63. <block v-for="(item,index) in orderMenu" :key="index">
  64. <view class="order-item" @click="menusTap(item.url)">
  65. <view class="pic">
  66. <text class="iconfont pic_status" :class="item.img"></text>
  67. <text class="order-status-num" v-if="item.num > 0">{{ item.num }}</text>
  68. </view>
  69. <view class="txt">{{item.title}}</view>
  70. </view>
  71. </block>
  72. </view>
  73. </view>
  74. </view>
  75. <view class="contenBox" id="pageIndex">
  76. <!-- 轮播 -->
  77. <view class="slider-wrapper" @click.native="bindEdit('userBanner')" v-if="imgUrls != null && imgUrls.length > 0">
  78. <swiper v-if="imgUrls.length>0" indicator-dots="true" :autoplay="autoplay" :circular="circular" :interval="interval"
  79. :duration="duration" indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff">
  80. <block v-for="(item,index) in imgUrls" :key="index">
  81. <swiper-item class="borRadius14">
  82. <image :src="item.pic" class="slide-image" @click="navito(item.url)"></image>
  83. </swiper-item>
  84. </block>
  85. </swiper>
  86. </view>
  87. <!-- 会员菜单 -->
  88. <view class="user-menus" style="margin-top: 20rpx;" @click.native="bindEdit('userMenus')">
  89. <view class="menu-title">我的服务</view>
  90. <view class="list-box">
  91. <block v-for="(item,index) in MyMenus" :key="index">
  92. <view class="item" @click="menusTap(item.url)"
  93. v-if="!(item.url =='/pages/service/index' || (item.url =='/pages/promoter/user_spread_user/index' && !userInfo.isPromoter))">
  94. <image :src="item.pic"></image>
  95. <text>{{item.name}}</text>
  96. </view>
  97. </block>
  98. <!-- #ifndef MP -->
  99. <view class="item" @click="onClickService">
  100. <image :src="servicePic"></image>
  101. <text>联系客服</text>
  102. </view>
  103. <!-- #endif -->
  104. <!-- #ifdef MP -->
  105. <!-- v-if="chatConfig.telephone_service_switch" -->
  106. <button class="item" hover-class='none' @click="onClickService" v-if="chatConfig.telephone_service_switch === 'open'">
  107. <image :src="servicePic"></image>
  108. <text>联系客服</text>
  109. </button>
  110. <template v-else>
  111. <button class="item" open-type='contact' hover-class='none' v-if="chatConfig.wx_chant_independent==='open'">
  112. <image :src="servicePic"></image>
  113. <text>联系客服</text>
  114. </button>
  115. <button class="item" hover-class='none' @click="wxChatService" v-else>
  116. <image :src="servicePic"></image>
  117. <text>联系客服</text>
  118. </button>
  119. </template>
  120. <!-- #endif -->
  121. </view>
  122. </view>
  123. <image :src="copyImage" alt="" class='support'>
  124. </view>
  125. </scroll-view>
  126. </view>
  127. </view>
  128. <pageFooter></pageFooter>
  129. </view>
  130. </template>
  131. <script>
  132. let sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
  133. import pageFooter from '@/components/pageFooter/index.vue'
  134. import Cache from '@/utils/cache';
  135. import {goPage} from '@/libs/iframe.js'
  136. import {BACK_URL} from '@/config/cache';
  137. import {getMenuList, copyrightApi} from '@/api/user.js';
  138. import {orderData} from '@/api/order.js';
  139. import {getCity, tokenIsExistApi} from '@/api/api.js';
  140. import {toLogin} from '@/libs/login.js';
  141. import {mapGetters} from "vuex";
  142. import {
  143. getCityList
  144. } from "@/utils";
  145. // #ifdef H5
  146. import Auth from '@/libs/wechat';
  147. // #endif
  148. import {getShare} from '@/api/public.js';
  149. import {setThemeColor} from '@/utils/setTheme.js'
  150. import animationType from '@/utils/animationType.js'
  151. const app = getApp();
  152. export default {
  153. components:{
  154. pageFooter
  155. },
  156. computed: mapGetters(['isLogin', 'chatUrl', 'uid','bottomNavigationIsCustom']),
  157. data() {
  158. return {
  159. urlDomain: this.$Cache.get("imgHost"),
  160. orderMenu: [
  161. {img: 'icon-daifukuan',title: '待付款',url: '/pages/users/order_list/index?status=0',num: 0},
  162. {img: 'icon-daifahuo',title: '待发货',url: '/pages/users/order_list/index?status=1',num: 0},
  163. {img: 'icon-daishouhuo',title: '待收货',url: '/pages/users/order_list/index?status=2',num: 0},
  164. {img: 'icon-daipingjia',title: '待评价',url: '/pages/users/order_list/index?status=3',num: 0},
  165. {img: 'icon-a-shouhoutuikuan',title: '售后/退款',url: '/pages/users/user_return_list/index',num: 0},
  166. ],
  167. imgUrls: [],
  168. userMenu: [],
  169. autoplay: true,
  170. circular: true,
  171. interval: 3000,
  172. duration: 500,
  173. isAuto: false, //没有授权的不会自动授权
  174. isShowAuth: false, //是否隐藏授权
  175. orderStatusNum: {},
  176. MyMenus: [],
  177. wechatUrl: [],
  178. servicePic: `${this.$Cache.get("imgHost")}crmebimage/perset/staticImg/customer.png`,
  179. sysHeight: sysHeight,
  180. // #ifdef MP
  181. pageHeight: '100%',
  182. // #endif
  183. // #ifdef H5 || APP-PLUS
  184. pageHeight: app.globalData.windowHeight,
  185. // #endif
  186. // #ifdef H5
  187. isWeixin: Auth.isWeixin(),
  188. //#endif
  189. configApi: {}, //分享类容配置
  190. theme: '',
  191. bgColor:'#e93323',
  192. chatConfig:{
  193. consumer_hotline:'',
  194. telephone_service_switch:'close',
  195. wx_chant_independent:'open'
  196. } ,//客服配置
  197. userInfo: {},
  198. copyImage: '',//版权图片
  199. }
  200. },
  201. onLoad() {
  202. app.globalData.theme = this.$Cache.get('theme')
  203. if(app.globalData.isIframe){
  204. setTimeout(()=>{
  205. let active;
  206. document.getElementById('pageIndex').children.forEach(dom=>{
  207. dom.addEventListener('click', (e)=>{
  208. e.stopPropagation();
  209. e.preventDefault();
  210. if(dom === active) return;
  211. dom.classList.add('borderShow');
  212. active && active.classList.remove('borderShow');
  213. active = dom;
  214. })
  215. })
  216. });
  217. }
  218. let that = this;
  219. // #ifdef H5 || APP-PLUS
  220. that.$set(that, 'pageHeight', app.globalData.windowHeight);
  221. // #endif
  222. that.$set(that, 'MyMenus', app.globalData.MyMenus);
  223. that.$set(that,'chatConfig',Cache.getItem('chatConfig'));
  224. // #ifdef H5
  225. that.shareApi();
  226. // #endif
  227. that.bgColor = setThemeColor();
  228. // #ifdef APP-PLUS
  229. setTimeout(()=>{
  230. uni.setNavigationBarColor({
  231. frontColor: '#ffffff',
  232. backgroundColor:that.bgColor,
  233. });
  234. },500)
  235. // #endif
  236. // #ifdef MP
  237. uni.setNavigationBarColor({
  238. frontColor: '#ffffff',
  239. backgroundColor:that.bgColor,
  240. });
  241. // #endif
  242. },
  243. onShow: function() {
  244. this.getMyMenus();
  245. this.getTokenIsExist();
  246. this.copyrightImage();
  247. this.theme = this.$Cache.get('theme')
  248. app.globalData.theme = this.$Cache.get('theme')
  249. if (!this.$Cache.getItem('cityList')) getCityList();
  250. !this.$store.state.app.bottomNavigationIsCustom&&uni.showTabBar();
  251. // #ifdef H5
  252. let that = this;
  253. uni.getSystemInfo({
  254. success: function(res) {
  255. that.pageHeight = res.windowHeight + 'px'
  256. }
  257. });
  258. // #endif
  259. // #ifdef MP
  260. let query = uni.createSelectorQuery();
  261. let dom = query.select('.new-users');
  262. // #endif
  263. },
  264. methods: {
  265. //校验token是否有效,true为有效,false为无效
  266. getTokenIsExist() {
  267. tokenIsExistApi().then(res => {
  268. let tokenIsExist = res.data;
  269. if (this.isLogin && tokenIsExist) {
  270. this.getOrderData();
  271. this.$store.dispatch('USERINFO').then(res => {
  272. this.userInfo = res;
  273. });
  274. }else{
  275. this.$store.commit("LOGOUT");
  276. this.$store.commit('UPDATE_LOGIN', '');
  277. this.$store.commit('UPDATE_USERINFO', {});
  278. }
  279. })
  280. },
  281. //获取授权图片
  282. copyrightImage() {
  283. copyrightApi().then(res => {
  284. if (res.data) {
  285. this.copyImage = res.data.companyImage;
  286. } else {
  287. this.copyImage = `${this.urlDomain}crmebimage/perset/staticImg/support.png`;
  288. }
  289. }).catch(err => {
  290. return this.$util.Tips({
  291. title: err
  292. })
  293. });
  294. },
  295. bindEdit(name) {
  296. if (app.globalData.isIframe) {
  297. window.parent.postMessage(
  298. {
  299. name: name
  300. },
  301. '*'
  302. );
  303. return;
  304. }
  305. },
  306. menusTap(url) {
  307. if (!this.isLogin) {
  308. this.openAuto();
  309. }else{
  310. goPage().then(res => {
  311. uni.navigateTo({
  312. animationType: animationType.type,
  313. animationDuration: animationType.duration,
  314. url: url
  315. })
  316. })
  317. }
  318. },
  319. navito(url) {
  320. if(url.indexOf("http") !== -1){
  321. // #ifdef H5
  322. location.href = url
  323. // #endif
  324. // #ifdef APP-PLUS || MP
  325. uni.navigateTo({
  326. url: '/pages/users/web_page/index?webUel=' + url
  327. })
  328. // #endif
  329. }else{
  330. if(['/pages/goods_cate/goods_cate','/pages/order_addcart/order_addcart','/pages/user/index'].indexOf(url) == -1){
  331. uni.navigateTo({
  332. url:url
  333. })
  334. }else{
  335. uni.switchTab({
  336. url:url
  337. })
  338. }
  339. }
  340. },
  341. onClickService() {
  342. if(this.chatConfig.telephone_service_switch === 'open'){
  343. uni.makePhoneCall({
  344. phoneNumber: this.chatConfig.consumer_hotline //仅为示例
  345. });
  346. }else{
  347. // #ifdef APP-PLUS
  348. uni.navigateTo({
  349. animationType: animationType.type,
  350. animationDuration: animationType.duration,
  351. url: '/pages/users/web_page/index?webUel=' + this.chatUrl + '&title=客服'
  352. })
  353. // #endif
  354. // #ifndef APP-PLUS
  355. if (!app.globalData.isIframe) {
  356. location.href = this.chatUrl;
  357. }else{
  358. return false
  359. }
  360. // #endif
  361. }
  362. },
  363. wxChatService(){
  364. let chatUrlArr = this.chatUrl.split('?')
  365. uni.navigateTo({
  366. url:`/pages/users/web_page/index?webUel=${chatUrlArr[0]}&title=客服&${chatUrlArr[1]}`
  367. })
  368. },
  369. getOrderData() {
  370. let that = this;
  371. orderData().then(res => {
  372. that.orderMenu.forEach((item, index) => {
  373. switch (item.title) {
  374. case '待付款':
  375. item.num = res.data.unPaidCount
  376. break
  377. case '待发货':
  378. item.num = res.data.unShippedCount
  379. break
  380. case '待收货':
  381. item.num = res.data.receivedCount
  382. break
  383. case '待评价':
  384. item.num = res.data.evaluatedCount
  385. break
  386. case '售后/退款':
  387. item.num = res.data.refundCount
  388. break
  389. }
  390. })
  391. that.$set(that, 'orderMenu', that.orderMenu);
  392. })
  393. },
  394. // 打开授权
  395. openAuto() {
  396. Cache.set(BACK_URL, '')
  397. toLogin();
  398. },
  399. // 绑定手机
  400. bindPhone() {
  401. uni.navigateTo({
  402. animationType: animationType.type,
  403. animationDuration: animationType.duration,
  404. url: '/pages/users/app_login/index'
  405. })
  406. },
  407. /**
  408. *
  409. * 获取个人中心图标
  410. */
  411. getMyMenus: function() {
  412. let that = this;
  413. // if (this.MyMenus.length) return;
  414. getMenuList().then(res => {
  415. that.$set(that, 'MyMenus', res.data.routine_my_menus);
  416. that.wechatUrl = res.data.routine_my_menus.filter((item) => {
  417. return item.url.indexOf('service') !== -1
  418. })
  419. res.data.routine_my_menus.map((item) => {
  420. if (item.url.indexOf('service') !== -1) that.servicePic = item.pic
  421. })
  422. // that.imgUrls = res.data.routine_my_banner
  423. if(res.data.routine_my_banner){
  424. that.imgUrls = res.data.routine_my_banner
  425. }
  426. }).catch(err=>{
  427. console.log(err);
  428. });
  429. },
  430. // 编辑页面
  431. goEdit() {
  432. if (this.isLogin == false) {
  433. this.openAuto();
  434. } else {
  435. uni.navigateTo({
  436. animationType: animationType.type,
  437. animationDuration: animationType.duration,
  438. url: '/pages/infos/user_info/index'
  439. })
  440. }
  441. },
  442. goMenuPage(url) {
  443. if (this.isLogin) {
  444. uni.navigateTo({
  445. animationType: animationType.type,
  446. animationDuration: animationType.duration,
  447. url
  448. })
  449. } else {
  450. this.openAuto()
  451. }
  452. },
  453. appUpdate(){
  454. uni.navigateTo({
  455. url:'/pages/users/app_update/app_update',
  456. animationType: animationType.type,
  457. animationDuration: animationType.duration,
  458. })
  459. },
  460. shareApi: function() {
  461. getShare().then(res => {
  462. this.$set(this, 'configApi', res.data);
  463. // #ifdef H5
  464. this.setOpenShare(res.data);
  465. // #endif
  466. })
  467. },
  468. // 微信分享;
  469. setOpenShare: function(data) {
  470. let that = this;
  471. if (that.$wechat.isWeixin()) {
  472. let configAppMessage = {
  473. desc: data.synopsis,
  474. title: data.title,
  475. link: location.href,
  476. imgUrl: data.img
  477. };
  478. that.$wechat.wechatEvevt(["updateAppMessageShareData", "updateTimelineShareData"],
  479. configAppMessage);
  480. }
  481. }
  482. }
  483. }
  484. </script>
  485. <style lang="scss" scoped>
  486. page,
  487. body {
  488. height: 100%;
  489. }
  490. .mp-header{
  491. @include main_bg_color(theme);
  492. }
  493. .bg {
  494. position: absolute;
  495. left: 0;
  496. top: 0;
  497. width:100%;
  498. height: 420rpx;
  499. background-image: url('../../static/images/user_bg.png');
  500. background-repeat: no-repeat;
  501. background-size: 100% 100%;
  502. }
  503. .contenBox {
  504. padding: 0 30rpx 100rpx 30rpx;
  505. }
  506. .support {
  507. width: 219rpx;
  508. height: 74rpx;
  509. margin: 54rpx auto;
  510. display: block;
  511. }
  512. .new-users {
  513. display: flex;
  514. flex-direction: column;
  515. height: 100%;
  516. .sys-head {
  517. position: relative;
  518. width: 100%;
  519. background: linear-gradient(90deg, $bg-star1 0%, $bg-end1 100%);
  520. .sys-title {
  521. z-index: 10;
  522. position: relative;
  523. height: 43px;
  524. text-align: center;
  525. line-height: 43px;
  526. font-size: 36rpx;
  527. color: #FFFFFF;
  528. }
  529. }
  530. .head {
  531. @include index-gradient(theme);
  532. .user-card {
  533. position: relative;
  534. width: 100%;
  535. margin: 0 auto;
  536. padding: 35rpx 0 30rpx 0;
  537. .user-info {
  538. z-index: 20;
  539. position: relative;
  540. display: flex;
  541. .avatar {
  542. width: 120rpx;
  543. height: 120rpx;
  544. border-radius: 50%;
  545. }
  546. .info {
  547. flex: 1;
  548. display: flex;
  549. flex-direction: column;
  550. justify-content: space-between;
  551. margin-left: 20rpx;
  552. padding: 15rpx 0;
  553. position: relative;
  554. .name {
  555. display: flex;
  556. align-items: center;
  557. color: #fff;
  558. font-size: 31rpx;
  559. .vip {
  560. display: flex;
  561. align-items: center;
  562. padding: 6rpx 20rpx;
  563. background: rgba(0, 0, 0, 0.2);
  564. border-radius: 18px;
  565. font-size: 20rpx;
  566. margin-left: 12rpx;
  567. image {
  568. width: 27rpx;
  569. height: 27rpx;
  570. }
  571. }
  572. }
  573. .app_set{
  574. position: absolute;
  575. font-size: 36rpx;
  576. color: #fff;
  577. top: 40rpx;
  578. right: 20rpx;
  579. }
  580. .num {
  581. display: flex;
  582. align-items: center;
  583. font-size: 26rpx;
  584. color: rgba(255, 255, 255, 0.6);
  585. image {
  586. width: 22rpx;
  587. height: 23rpx;
  588. margin-left: 20rpx;
  589. }
  590. }
  591. }
  592. }
  593. .num-wrapper {
  594. z-index: 30;
  595. position: relative;
  596. display: flex;
  597. align-items: center;
  598. justify-content: space-between;
  599. margin-top: 30rpx;
  600. color: #fff;
  601. .num-item {
  602. width: 33.33%;
  603. text-align: center;
  604. .num {
  605. font-size: 42rpx;
  606. font-weight: bold;
  607. }
  608. .txt {
  609. margin-top: 10rpx;
  610. font-size: 26rpx;
  611. color: rgba(255, 255, 255, 0.6);
  612. }
  613. }
  614. }
  615. .sign {
  616. z-index: 200;
  617. position: absolute;
  618. right: -12rpx;
  619. top: 80rpx;
  620. display: flex;
  621. align-items: center;
  622. justify-content: center;
  623. width: 120rpx;
  624. height: 60rpx;
  625. background: linear-gradient(90deg, rgba(255, 225, 87, 1) 0%, rgba(238, 193, 15, 1) 100%);
  626. border-radius: 29rpx 4rpx 4rpx 29rpx;
  627. color: #282828;
  628. font-size: 28rpx;
  629. font-weight: bold;
  630. }
  631. }
  632. .order-wrapper {
  633. background-color: #fff;
  634. border-radius: 14rpx;
  635. padding: 30rpx 16rpx;
  636. position: relative;
  637. z-index: 11;
  638. .order-hd {
  639. justify-content: space-between;
  640. font-size: 30rpx;
  641. color: #282828;
  642. margin-bottom: 40rpx;
  643. padding: 0 16rpx;
  644. .left {
  645. color: #282828;
  646. font-size: 30rpx;
  647. font-weight: 600;
  648. }
  649. .right {
  650. align-items: center;
  651. color: #666666;
  652. font-size: 26rpx;
  653. .icon-xiangyou {
  654. margin-left: 5rpx;
  655. font-size: 24rpx;
  656. }
  657. }
  658. }
  659. .order-bd {
  660. display: flex;
  661. justify-content: space-between;
  662. padding: 0;
  663. .order-item {
  664. display: flex;
  665. flex-direction: column;
  666. justify-content: center;
  667. align-items: center;
  668. .pic {
  669. position: relative;
  670. text-align: center;
  671. image {
  672. width: 48rpx;
  673. height: 48rpx;
  674. }
  675. }
  676. .txt {
  677. margin-top: 15rpx;
  678. font-size: 26rpx;
  679. color: #454545;
  680. }
  681. }
  682. }
  683. }
  684. }
  685. .slider-wrapper {
  686. margin: 20rpx 0;
  687. height: 138rpx;
  688. swiper,
  689. swiper-item {
  690. height: 100%;
  691. }
  692. image {
  693. width: 100%;
  694. height: 100%;
  695. }
  696. }
  697. .user-menus {
  698. background-color: #fff;
  699. border-radius: 14rpx;
  700. .menu-title {
  701. padding: 30rpx 30rpx 40rpx;
  702. font-size: 30rpx;
  703. color: #282828;
  704. font-weight: 600;
  705. }
  706. .list-box {
  707. display: flex;
  708. flex-wrap: wrap;
  709. padding: 0;
  710. }
  711. .item {
  712. position: relative;
  713. display: flex;
  714. align-items: center;
  715. justify-content: space-between;
  716. flex-direction: column;
  717. width: 25%;
  718. margin-bottom: 47rpx;
  719. font-size: 26rpx;
  720. color: #333333;
  721. image {
  722. width: 52rpx;
  723. height: 52rpx;
  724. margin-bottom: 18rpx;
  725. }
  726. &:last-child::before {
  727. display: none;
  728. }
  729. }
  730. button {
  731. font-size: 28rpx;
  732. }
  733. }
  734. .phone {
  735. color: #fff;
  736. }
  737. .pic_status{
  738. font-size: 43rpx;
  739. @include main_color(theme);
  740. }
  741. .order-status-num {
  742. min-width: 13rpx;
  743. background-color: #fff;
  744. @include main_color(theme);
  745. border-radius: 15px;
  746. position: absolute;
  747. right: -14rpx;
  748. top: -15rpx;
  749. font-size: 20rpx;
  750. padding: 0 8rpx;
  751. @include coupons_border_color(theme);
  752. }
  753. }
  754. .sub_btn{
  755. width: 690rpx;
  756. height: 86rpx;
  757. line-height: 86rpx;
  758. margin-top: 60rpx;
  759. background: $theme-color;
  760. border-radius: 43rpx;
  761. color: #fff;
  762. font-size: 28rpx;
  763. text-align: center;
  764. }
  765. </style>