index.vue 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016
  1. <template>
  2. <view :data-theme="theme">
  3. <!-- #ifdef MP -->
  4. <view class="cart_nav" :style='"height:"+navH+"rpx;"'>
  5. <nav-bar iconColor='#fff' ref="navBarRef" navTitle="个人中心">
  6. </nav-bar>
  7. </view>
  8. <!-- #endif -->
  9. <tui-skeleton v-if="showSkeleton"></tui-skeleton>
  10. <view class="new-users copy-data tui-skeleton">
  11. <view class="mid" style="flex:1;overflow: hidden;">
  12. <scroll-view scroll-y="true">
  13. <view class="head borderPad">
  14. <view class="bg"
  15. :style="{'background-image': `url(${urlDomain}crmebimage/presets/user_bg.png)`}">
  16. <view class="user-card">
  17. <view class="user-info">
  18. <image class="avatar tui-skeleton-rect" :src='userInfo.avatar'
  19. v-if="userInfo.avatar" @click="goEdit()"></image>
  20. <image v-else class="avatar tui-skeleton-rect"
  21. :src="urlDomain+'crmebimage/presets/morenT.png'" mode="" @click="goEdit()">
  22. </image>
  23. <view class="info">
  24. <view class="name" v-if="!isLogin" @tap="openAuto">
  25. 请点击登录
  26. </view>
  27. <view class="name" v-if="userInfo && uid">
  28. <view @click="goEdit()">
  29. {{userInfo && userInfo.nickname && uid ? userInfo.nickname : ''}}
  30. </view>
  31. <view class="vip" v-if="userInfo.vipIcon" @click="goEdit()">
  32. <image :src="userInfo.vipIcon" alt=""></image>
  33. </view>
  34. <view class="vip" v-if="userInfo.isPaidMember"
  35. @click="menusTap('/pages/activity/vip_paid/index')">
  36. <image
  37. :style="{'background-image': `url(${urlDomain}crmebimage/presets/viptu.png)`}">
  38. </image>
  39. </view>
  40. </view>
  41. <view class="num mt10" v-if="userInfo && userInfo.phone && uid"
  42. @click="goEdit()">
  43. <view class="num-txt">{{userInfo.phone}}</view>
  44. </view>
  45. </view>
  46. <view class="app_set" @click="handleUserSetting()">
  47. <text class="iconfont icon-shezhi"></text>
  48. </view>
  49. </view>
  50. <view class="num-wrapper tui-skeleton-rect">
  51. <view class="num-item" @click="goMenuPage('/pages/merchant/user_integral/index')">
  52. <text class="num">{{userInfo.integral && uid ? userInfo.integral: 0}}</text>
  53. <view class="txt">积分</view>
  54. </view>
  55. <view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
  56. <text
  57. class="num">{{userInfo.couponCount && uid ? userInfo.couponCount : 0}}</text>
  58. <view class="txt">优惠券</view>
  59. </view>
  60. <view class="num-item"
  61. @click="goMenuPage('/pages/goods/user_goods_collection/index')">
  62. <text
  63. class="num">{{userInfo.collectCount && uid ? userInfo.collectCount : 0}}</text>
  64. <view class="txt">收藏</view>
  65. </view>
  66. <view class="num-item" @click="goMenuPage('/pages/goods/browsing_history/index')">
  67. <text class="num">{{userInfo.browseNum && uid ? userInfo.browseNum:0}}</text>
  68. <view class="txt">浏览记录</view>
  69. </view>
  70. </view>
  71. </view>
  72. </view>
  73. <view v-show="userInfo.paidMemberPaidEntrance===1"
  74. @click="menusTap('/pages/activity/vip_paid/index')" class="h-128 svip-box px-30"
  75. :style="{'background-image': `url(${urlDomain}crmebimage/presets/cardbj.png)`}">
  76. <view class="acea-row row-middle row-between h-94">
  77. <view class="acea-row">
  78. <view class="w-34 h-28 no-repeat vipicon"
  79. :style="{'background-image': `url(${urlDomain}crmebimage/presets/huangguan.png)`}">
  80. </view>
  81. <view class="f-s-24 text ml-12">加入SVIP畅享精彩</view>
  82. </view>
  83. <view class="acea-row row-middle">
  84. <view class="f-s-24 text mr10">{{userInfo.isPaidMember?'去查看':'去开通'}}</view>
  85. <text class="iconfont icon-gengduo3 text f-s-20"></text>
  86. </view>
  87. </view>
  88. </view>
  89. <view class="order-wrapper tui-skeleton-rect"
  90. :class="userInfo.paidMemberPaidEntrance===1?'mt34rpx':''">
  91. <view class="order-hd flex">
  92. <view class="left">订单中心</view>
  93. <view class="right flex" @click="menusTap('/pages/goods/order_list/index')">查看全部
  94. <text class="iconfont icon-xiangyou"></text>
  95. </view>
  96. </view>
  97. <view class="order-bd">
  98. <block v-for="(item,index) in orderMenu" :key="index">
  99. <view class="order-item" @click="menusTap(item.url)">
  100. <view class="pic">
  101. <text class="iconfont pic_status" :class="item.img"></text>
  102. <text class="order-status-num" v-if="item.num > 0">{{ item.num }}</text>
  103. </view>
  104. <view class="txt tui-skeleton-rect">{{item.title}}</view>
  105. </view>
  106. </block>
  107. </view>
  108. </view>
  109. </view>
  110. <view class="contenBox borderPad" id="pageIndex">
  111. <!-- 轮播 -->
  112. <view class="slider-wrapper tui-skeleton-rect" @click.native="bindEdit('userBanner')"
  113. v-if="centerBanner != null && centerBanner.length > 0">
  114. <swiper v-if="centerBanner.length>0" indicator-dots="true" :autoplay="autoplay"
  115. :circular="circular" :interval="interval" :duration="duration"
  116. indicator-color="rgba(255,255,255,0.6)" indicator-active-color="#fff">
  117. <block v-for="(item,index) in centerBanner" :key="index">
  118. <swiper-item class="borRadius14">
  119. <image :src="item.pic" class="slide-image" @click="navito(item.url)"></image>
  120. </swiper-item>
  121. </block>
  122. </swiper>
  123. </view>
  124. <!-- 会员菜单 -->
  125. <view class="user-menus mt20" @click.native="bindEdit('userMenus')">
  126. <view class="menu-title">我的服务</view>
  127. <view class="list-box">
  128. <block v-for="(item,index) in centerMenu" :key="index">
  129. <view class="item tui-skeleton-rect" @click="menusTap(item.url)"
  130. v-if="!(item.url =='/pages/service/index' || (item.url =='/pages/users/user_spread_user/index' && !userInfo.isPromoter)||(!isEmployee&&item.url=='/pages/admin/work/index'))">
  131. <image :src="item.pic"></image>
  132. <text>{{item.name}}</text>
  133. </view>
  134. </block>
  135. <!-- #ifndef MP -->
  136. <view class="item" @click="kefuClick">
  137. <image :src="servicePic"></image>
  138. <text>联系客服</text>
  139. </view>
  140. <!-- #endif -->
  141. <!-- #ifdef MP -->
  142. <button class="item" hover-class='none' @click="kefuClick"
  143. v-if="chatConfig.telephone_service_switch === 'true'">
  144. <image :src="servicePic"></image>
  145. <text>联系客服</text>
  146. </button>
  147. <button class="item" open-type='contact' hover-class='none' v-else>
  148. <image :src="servicePic"></image>
  149. <text>联系客服</text>
  150. </button>
  151. <!-- #endif -->
  152. </view>
  153. </view>
  154. <!-- 商家管理 -->
  155. <view class="user-menus mt20" v-if="isEmployee">
  156. <view class="menu-title">店铺管理</view>
  157. <view class="list-box">
  158. <view class="item" @click="toggle('bottom')">
  159. <image :src="urlDomain+'crmebimage/presets/adminImg/sjgl.png'"></image>
  160. <text>商家管理</text>
  161. </view>
  162. </view>
  163. </view>
  164. <!-- 骑手管理 -->
  165. <view class="user-menus mt20" v-if="userInfo.isRider">
  166. <view class="menu-title">骑手管理</view>
  167. <view class="list-box">
  168. <view class="item" @click="menusTap('/pages/rider_index/index')">
  169. <image :src="urlDomain+'crmebimage/presets/adminImg/ic-rider.png'"></image>
  170. <text>骑手管理</text>
  171. </view>
  172. </view>
  173. </view>
  174. <image :src="copyImage" alt="" class='support'></image>
  175. </scroll-view>
  176. </view>
  177. </view>
  178. <!-- <view v-if="bottomNavigationIsCustom" class="footerBottom"></view> -->
  179. <!-- <pageFooter></pageFooter> -->
  180. <uni-popup ref="popup" type="bottom" background-color="rgba(0,0,0,0)" border-radius="10px 10px 0 0">
  181. <view class="popup-content">
  182. <view class="item" v-for="(item,index) in merchantEmployeeList" :key="index"
  183. :class="{bottom_border:index!=merchantEmployeeList.length-1}">
  184. <view class="item_main">
  185. <image :src="item.currentMerchant.avatar" mode="" class="item_img"></image>
  186. <view class="item_name" :class="{nameColor:item.merId==selectMerId}">
  187. {{item.currentMerchant.name}}</view>
  188. </view>
  189. <text v-if="item.merId==selectMerId" class="iconfont icon-xuanzhong11 icon-size icon_color"></text>
  190. <text v-else class="iconfont icon-weixuan icon-size" @click="radioChange(item)"></text>
  191. </view>
  192. </view>
  193. </uni-popup>
  194. </view>
  195. </template>
  196. <script>
  197. let sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
  198. import Cache from '@/utils/cache';
  199. import navBar from '@/components/navBar';
  200. import {
  201. goPage
  202. } from '@/libs/iframe.js'
  203. import {
  204. BACK_URL,
  205. USER_INFO
  206. } from '@/config/cache';
  207. import {
  208. userCenterInfo,
  209. copyrightImageApi
  210. } from '@/api/user.js';
  211. import {
  212. MerchantBelongListApi,
  213. merchantActive
  214. } from '@/api/work.js';
  215. import {
  216. orderNum
  217. } from '@/api/order.js';
  218. import {
  219. toLogin
  220. } from '@/libs/login.js';
  221. import {
  222. mapGetters
  223. } from "vuex";
  224. import {
  225. getCityList
  226. } from "@/utils";
  227. import {
  228. tokenIsExistApi
  229. } from '@/api/api.js';
  230. // #ifdef H5
  231. import Auth from '@/libs/wechat';
  232. // #endif
  233. import {
  234. getShare
  235. } from '@/api/public.js';
  236. import {
  237. setThemeColor
  238. } from '@/utils/setTheme.js'
  239. import animationType from '@/utils/animationType.js'
  240. import {
  241. chatConfig
  242. } from '@/utils/consumerType.js'
  243. import tuiSkeleton from '@/components/base/tui-skeleton.vue';
  244. import pageFooter from "@/components/pageFooter/index.vue";
  245. const app = getApp();
  246. export default {
  247. computed: mapGetters(['isLogin', 'chatUrl', 'uid', 'globalData', 'bottomNavigationIsCustom',
  248. 'merchantEmployeeList', 'isEmployee', 'selectMerId'
  249. ]),
  250. data() {
  251. return {
  252. scrollHeight: 0,
  253. triggered: false,
  254. isRefresher: false, //下拉刷新状态
  255. urlDomain: this.$Cache.get("imgHost"),
  256. showSkeleton: true, //骨架屏显示隐藏
  257. orderMenu: [{
  258. img: 'icon-daifukuan',
  259. title: '待付款',
  260. url: '/pages/goods/order_list/index?status=0',
  261. num: 0
  262. },
  263. {
  264. img: 'icon-daifahuo',
  265. title: '待发货',
  266. url: '/pages/goods/order_list/index?status=1',
  267. num: 0
  268. },
  269. {
  270. img: 'icon-daihexiao',
  271. title: '待核销',
  272. url: '/pages/goods/order_list/index?status=3',
  273. num: 0
  274. },
  275. {
  276. img: 'icon-daishouhuo',
  277. title: '待收货',
  278. url: '/pages/goods/order_list/index?status=4',
  279. num: 0
  280. },
  281. {
  282. img: 'icon-daipingjia',
  283. title: '待评价',
  284. url: '/pages/goods/evaluation_list/index',
  285. num: 0
  286. },
  287. {
  288. img: 'icon-a-shouhoutuikuan',
  289. title: '售后/退款',
  290. url: '/pages/goods/user_return_list/index',
  291. num: 0
  292. },
  293. ],
  294. centerBanner: [],
  295. userMenu: [],
  296. autoplay: true,
  297. circular: true,
  298. interval: 3000,
  299. duration: 500,
  300. isAuto: false, //没有授权的不会自动授权
  301. isShowAuth: false, //是否隐藏授权
  302. orderStatusNum: {},
  303. centerMenu: [],
  304. wechatUrl: [],
  305. servicePic: '',
  306. sysHeight: sysHeight,
  307. // #ifdef MP
  308. pageHeight: '100%',
  309. // #endif
  310. // #ifdef H5 || APP-PLUS
  311. pageHeight: '',
  312. // #endif
  313. // #ifdef H5
  314. isWeixin: Auth.isWeixin(),
  315. //#endif
  316. configApi: {}, //分享类容配置
  317. theme: app.globalData.theme,
  318. bgColor: '#e93323',
  319. userInfo: {},
  320. copyImage: '',
  321. navH:''
  322. }
  323. },
  324. components: {
  325. tuiSkeleton,
  326. pageFooter,
  327. navBar
  328. },
  329. onLoad() {
  330. this.servicePic = this.urlDomain + 'crmebimage/presets/customer.png'
  331. this.getTokenIsExist();
  332. // #ifdef MP
  333. this.navH = this.globalData.navHeight;
  334. // #endif
  335. // #ifndef MP
  336. this.navH = 96;
  337. // #endif
  338. if (this.globalData.isIframe) {
  339. setTimeout(() => {
  340. let active;
  341. document.getElementById('pageIndex').children.forEach(dom => {
  342. dom.addEventListener('click', (e) => {
  343. e.stopPropagation();
  344. e.preventDefault();
  345. if (dom === active) return;
  346. dom.classList.add('borderShow');
  347. active && active.classList.remove('borderShow');
  348. active = dom;
  349. })
  350. })
  351. });
  352. }
  353. // #ifdef APP-PLUS
  354. setTimeout(()=>{
  355. uni.setNavigationBarColor({
  356. frontColor: '#ffffff',
  357. backgroundColor:that.bgColor,
  358. });
  359. },500)
  360. // #endif
  361. let that = this;
  362. // #ifdef H5 || APP-PLUS
  363. that.$set(that, 'pageHeight', this.globalData.windowHeight);
  364. // #endif
  365. that.$set(that, 'centerMenu', this.globalData.centerMenu);
  366. that.bgColor = setThemeColor();
  367. },
  368. onShow: function() {
  369. if (this.isLogin) {
  370. this.getUserCenterInfo();
  371. this.getOrderData();
  372. this.getMerchantList()
  373. }
  374. this.copyrightImage();
  375. this.showSkeleton = false
  376. let that = this;
  377. if (!that.$Cache.get('cityList')) getCityList();
  378. // #ifdef H5
  379. uni.getSystemInfo({
  380. success: function(res) {
  381. that.pageHeight = res.windowHeight + 'px'
  382. }
  383. });
  384. // #endif
  385. // #ifdef MP
  386. let query = uni.createSelectorQuery();
  387. let dom = query.select('.new-users');
  388. // #endif
  389. },
  390. methods: {
  391. /**
  392. * 发现列表滑动中用到的方法
  393. */
  394. onScroll() {
  395. uni.$emit('scroll');
  396. },
  397. toggle(type) {
  398. if (this.merchantEmployeeList.length == 1) {
  399. merchantActive(this.merchantEmployeeList[0].merId).then(res => {
  400. this.$store.commit('SetSelectMerId', this.merchantEmployeeList[0].merId);
  401. this.$store.commit('SetSelectMerchantRole', this.merchantEmployeeList[0].role);
  402. this.$store.commit('SET_MANAGER_TOKEN', {
  403. managerToken: res.data.token
  404. });
  405. Cache.set('electrPrintingSwitch', res.data.electrPrintingSwitch);
  406. uni.navigateTo({
  407. url: '/pages/admin/work/index'
  408. })
  409. return
  410. })
  411. return
  412. }
  413. if (this.selectMerId) {
  414. uni.navigateTo({
  415. url: '/pages/admin/work/index'
  416. })
  417. } else {
  418. this.type = type
  419. // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
  420. this.$refs.popup.open(type)
  421. }
  422. },
  423. //选中商户
  424. radioChange(item) {
  425. let that = this
  426. merchantActive(item.merId).then(res => {
  427. if (res.code == 200) {
  428. that.$store.commit('SET_MANAGER_TOKEN', {
  429. managerToken: res.data.token
  430. });
  431. Cache.set('electrPrintingSwitch', res.data.electrPrintingSwitch);
  432. that.$store.commit('SetSelectMerId', item.merId);
  433. this.$store.commit('SetSelectMerchantRole', item.role);
  434. this.$refs.popup.close()
  435. uni.navigateTo({
  436. url: '/pages/admin/work/index'
  437. })
  438. }
  439. })
  440. },
  441. //获取商户列表
  442. getMerchantList() {
  443. let that = this
  444. MerchantBelongListApi().then(res => {
  445. if (this.selectMerId) {
  446. let flag = res.data.find(item => item.merId === this.selectMerId);
  447. !flag && that.$store.commit('CLEAR_SELECTMERID');
  448. }
  449. this.$store.commit("SetMerchantEmployeeList", res.data);
  450. })
  451. },
  452. //校验token是否有效,true为有效,false为无效
  453. getTokenIsExist() {
  454. tokenIsExistApi().then(res => {
  455. let tokenIsExist = res.data;
  456. if (!tokenIsExist) {
  457. this.$store.commit('UPDATE_LOGIN', '');
  458. this.$store.commit('UPDATE_USERINFO', {});
  459. }
  460. })
  461. },
  462. copyrightImage() {
  463. copyrightImageApi().then(res => {
  464. if (res.data) {
  465. this.copyImage = res.data;
  466. } else {
  467. this.copyImage = `${this.urlDomain}crmebimage/presets/support.png`;
  468. }
  469. }).catch(err => {
  470. return this.$util.Tips({
  471. title: err
  472. })
  473. });
  474. },
  475. bindEdit(name) {
  476. if (this.globalData.isIframe) {
  477. window.parent.postMessage({
  478. name: name
  479. },
  480. '*'
  481. );
  482. return;
  483. }
  484. },
  485. menusTap(url) {
  486. if (!this.isLogin) {
  487. this.openAuto();
  488. } else {
  489. if (url === '/pages/activity/vip_paid/index' && this.userInfo.paidMemberPaidEntrance === 0) return
  490. this.$util.navigateTo(url);
  491. }
  492. },
  493. //轮播图跳转
  494. navito(url) {
  495. this.$util.navigateTo(url);
  496. },
  497. kefuClick() {
  498. chatConfig(this.$Cache.getItem('platChatConfig'));
  499. },
  500. getOrderData() {
  501. let that = this;
  502. orderNum().then(res => {
  503. that.orderMenu.forEach((item, index) => {
  504. switch (item.title) {
  505. case '待付款':
  506. item.num = res.data.awaitPayCount
  507. break
  508. case '待发货':
  509. item.num = res.data.awaitShippedCount
  510. break
  511. case '待收货':
  512. item.num = res.data.receiptCount
  513. break
  514. case '待核销':
  515. item.num = res.data.verificationCount
  516. break
  517. case '待评价':
  518. item.num = res.data.awaitReplyCount
  519. break
  520. default:
  521. item.num = res.data.refundCount
  522. }
  523. })
  524. that.$set(that, 'orderMenu', that.orderMenu);
  525. })
  526. },
  527. // 绑定手机
  528. bindPhone() {
  529. uni.navigateTo({
  530. animationType: animationType.type,
  531. animationDuration: animationType.duration,
  532. url: '/pages/users/app_login/index'
  533. })
  534. },
  535. /**
  536. *
  537. * 获取个人中心详情
  538. */
  539. getUserCenterInfo: function() {
  540. userCenterInfo().then(res => {
  541. let data = res.data;
  542. this.userInfo = data;
  543. this.$store.commit("SETUID", data.id);
  544. this.$store.commit("SetIsEmployee", data.isEmployee);
  545. this.$set(this, 'centerMenu', data.centerMenu);
  546. this.$store.commit('UPDATE_USERINFO', {
  547. avatar: data.avatar,
  548. nickname: data.nickname,
  549. phone: data.phone
  550. });
  551. if (data.centerBanner) {
  552. this.centerBanner = data.centerBanner
  553. }
  554. this.showSkeleton = false;
  555. }).catch(err => {
  556. this.showSkeleton = false;
  557. });
  558. },
  559. // 编辑页面
  560. goEdit() {
  561. if (this.isLogin == false) {
  562. this.openAuto();
  563. } else {
  564. uni.navigateTo({
  565. animationType: animationType.type,
  566. animationDuration: animationType.duration,
  567. url: '/pages/users/user_info/index'
  568. })
  569. }
  570. },
  571. goMenuPage(url) {
  572. if (this.isLogin) {
  573. uni.navigateTo({
  574. animationType: animationType.type,
  575. animationDuration: animationType.duration,
  576. url
  577. })
  578. } else {
  579. // #ifdef MP
  580. this.openAuto()
  581. // #endif
  582. }
  583. },
  584. // 打开授权
  585. openAuto() {
  586. Cache.set(BACK_URL, '')
  587. toLogin();
  588. },
  589. // 去设置页面
  590. handleUserSetting() {
  591. if (!this.isLogin) {
  592. return this.openAuto();
  593. }
  594. uni.navigateTo({
  595. url: '/pages/users/user_setting/index'
  596. })
  597. },
  598. shareApi: function() {
  599. getShare().then(res => {
  600. this.$set(this, 'configApi', res.data);
  601. // #ifdef H5
  602. this.setOpenShare(res.data);
  603. // #endif
  604. })
  605. },
  606. // 微信分享;
  607. setOpenShare: function() {
  608. let that = this;
  609. if (that.$wechat.isWeixin()) {
  610. let configAppMessage = {
  611. desc: 'crmeb',
  612. title: 'crmeb',
  613. link: location.href,
  614. imgUrl: ''
  615. };
  616. that.$wechat.wechatEvevt([
  617. "updateAppMessageShareData",
  618. "updateTimelineShareData",
  619. "onMenuShareAppMessage",
  620. "onMenuShareTimeline",
  621. ],
  622. configAppMessage);
  623. }
  624. }
  625. }
  626. }
  627. </script>
  628. <style lang="scss" scoped>
  629. .vipicon {
  630. background-size: 100% 100%;
  631. }
  632. .mt34rpx {
  633. margin-top: -34rpx;
  634. }
  635. .svip-box {
  636. width: 702rpx;
  637. background-repeat: no-repeat;
  638. background-size: 702rpx 128rpx;
  639. .text {
  640. color: #FFD89C;
  641. }
  642. }
  643. .num-txt {
  644. padding: 6rpx 20rpx;
  645. border-radius: 36rpx;
  646. background: rgba(255, 255, 255, 0.2);
  647. }
  648. page,
  649. body {
  650. height: 100%;
  651. margin: 0;
  652. }
  653. .ma .mp-header {
  654. @include main_bg_color(theme);
  655. }
  656. .bg {
  657. width: 100%;
  658. background-repeat: no-repeat;
  659. background-size: 100% 100%;
  660. }
  661. .support {
  662. width: 219rpx;
  663. height: 74rpx;
  664. margin: 20rpx auto;
  665. display: block;
  666. }
  667. .new-users {
  668. display: flex;
  669. flex-direction: column;
  670. height: 100%;
  671. .sys-head {
  672. position: relative;
  673. width: 100%;
  674. background: linear-gradient(90deg, $bg-star1 0%, $bg-end1 100%);
  675. .sys-title {
  676. z-index: 10;
  677. position: relative;
  678. height: 43px;
  679. text-align: center;
  680. line-height: 43px;
  681. font-size: 36rpx;
  682. color: #FFFFFF;
  683. }
  684. }
  685. .head {
  686. width: 100%;
  687. background-repeat: no-repeat;
  688. background-size: 100% 100%;
  689. @include index-gradient(theme);
  690. .user-card {
  691. width: 100%;
  692. margin: 0 auto;
  693. padding: 35rpx 0 40rpx 0;
  694. .user-info {
  695. z-index: 20;
  696. display: flex;
  697. align-items: center;
  698. color: #fff;
  699. .avatar {
  700. width: 120rpx;
  701. height: 120rpx;
  702. border-radius: 50%;
  703. }
  704. .app_set {
  705. color: #fff;
  706. width: 140rpx;
  707. height: 110rpx;
  708. text-align: right;
  709. line-height: 110rpx;
  710. .icon-shezhi {
  711. font-size: 36rpx;
  712. }
  713. }
  714. .info {
  715. flex: 1;
  716. display: flex;
  717. flex-direction: column;
  718. justify-content: space-between;
  719. margin-left: 20rpx;
  720. padding: 15rpx 0;
  721. .name {
  722. display: flex;
  723. align-items: center;
  724. color: #fff;
  725. font-size: 31rpx;
  726. .vip {
  727. display: flex;
  728. align-items: center;
  729. border-radius: 18px;
  730. font-size: 20rpx;
  731. margin-left: 14rpx;
  732. image {
  733. width: 27rpx;
  734. height: 27rpx;
  735. background-repeat: no-repeat;
  736. background-size: 100% 100%;
  737. }
  738. }
  739. }
  740. .num {
  741. display: flex;
  742. align-items: center;
  743. font-size: 26rpx;
  744. color: rgba(255, 255, 255, 0.6);
  745. image {
  746. width: 22rpx;
  747. height: 23rpx;
  748. margin-left: 20rpx;
  749. }
  750. }
  751. }
  752. }
  753. .num-wrapper {
  754. z-index: 30;
  755. position: relative;
  756. display: flex;
  757. align-items: center;
  758. justify-content: space-between;
  759. margin-top: 30rpx;
  760. color: #fff;
  761. .num-item {
  762. width: 33.33%;
  763. text-align: center;
  764. .num {
  765. font-size: 42rpx;
  766. font-weight: bold;
  767. }
  768. .txt {
  769. margin-top: 10rpx;
  770. font-size: 26rpx;
  771. color: rgba(255, 255, 255, 0.6);
  772. }
  773. }
  774. }
  775. .sign {
  776. z-index: 200;
  777. position: absolute;
  778. right: -12rpx;
  779. top: 80rpx;
  780. display: flex;
  781. align-items: center;
  782. justify-content: center;
  783. width: 120rpx;
  784. height: 60rpx;
  785. background: linear-gradient(90deg, rgba(255, 225, 87, 1) 0%, rgba(238, 193, 15, 1) 100%);
  786. border-radius: 29rpx 4rpx 4rpx 29rpx;
  787. color: #282828;
  788. font-size: 28rpx;
  789. font-weight: bold;
  790. }
  791. }
  792. .order-wrapper {
  793. background-color: #fff;
  794. border-radius: 14rpx;
  795. padding: 30rpx 16rpx;
  796. position: relative;
  797. z-index: 11;
  798. .order-hd {
  799. justify-content: space-between;
  800. font-size: 30rpx;
  801. color: #282828;
  802. margin-bottom: 40rpx;
  803. padding: 0 16rpx;
  804. .left {
  805. color: #282828;
  806. font-size: 30rpx;
  807. font-weight: 600;
  808. }
  809. .right {
  810. align-items: center;
  811. color: #666666;
  812. font-size: 26rpx;
  813. .icon-xiangyou {
  814. margin-left: 5rpx;
  815. font-size: 24rpx;
  816. }
  817. }
  818. }
  819. .order-bd {
  820. display: flex;
  821. justify-content: space-between;
  822. padding: 0;
  823. .order-item {
  824. display: flex;
  825. flex-direction: column;
  826. justify-content: center;
  827. align-items: center;
  828. .pic {
  829. position: relative;
  830. text-align: center;
  831. image {
  832. width: 48rpx;
  833. height: 48rpx;
  834. }
  835. }
  836. .txt {
  837. margin-top: 15rpx;
  838. font-size: 26rpx;
  839. color: #454545;
  840. }
  841. }
  842. }
  843. }
  844. }
  845. .slider-wrapper {
  846. margin: 20rpx 0;
  847. height: 138rpx;
  848. swiper,
  849. swiper-item {
  850. height: 100%;
  851. }
  852. image {
  853. width: 100%;
  854. height: 100%;
  855. }
  856. }
  857. .user-menus {
  858. background-color: #fff;
  859. border-radius: 14rpx;
  860. .menu-title {
  861. padding: 30rpx 30rpx 40rpx;
  862. font-size: 30rpx;
  863. color: #282828;
  864. font-weight: 600;
  865. }
  866. .list-box {
  867. display: flex;
  868. flex-wrap: wrap;
  869. padding: 0;
  870. }
  871. .item {
  872. position: relative;
  873. display: flex;
  874. align-items: center;
  875. justify-content: space-between;
  876. flex-direction: column;
  877. width: 25%;
  878. margin-bottom: 47rpx;
  879. font-size: 26rpx;
  880. color: #333333;
  881. image {
  882. width: 52rpx;
  883. height: 52rpx;
  884. margin-bottom: 18rpx;
  885. }
  886. &:last-child::before {
  887. display: none;
  888. }
  889. }
  890. button {
  891. font-size: 28rpx;
  892. }
  893. }
  894. .phone {
  895. color: #fff;
  896. }
  897. .pic_status {
  898. font-size: 43rpx;
  899. @include main_color(theme);
  900. }
  901. .order-status-num {
  902. min-width: 13rpx;
  903. background-color: #fff;
  904. @include main_color(theme);
  905. border-radius: 15px;
  906. position: absolute;
  907. right: -14rpx;
  908. top: -15rpx;
  909. font-size: 20rpx;
  910. padding: 0 8rpx;
  911. @include coupons_border_color(theme);
  912. }
  913. }
  914. .sub_btn {
  915. width: 690rpx;
  916. height: 86rpx;
  917. line-height: 86rpx;
  918. margin-top: 60rpx;
  919. background: $theme-color;
  920. border-radius: 43rpx;
  921. color: #fff;
  922. font-size: 28rpx;
  923. text-align: center;
  924. }
  925. .popup-content {
  926. border-radius: 16rpx 16rpx 0px 0px;
  927. .bottom_border {
  928. border-bottom: 1px solid #F5F5F5;
  929. }
  930. .item {
  931. display: flex;
  932. align-items: center;
  933. justify-content: space-between;
  934. padding: 20rpx;
  935. .icon_color {
  936. color: #2A7EFB;
  937. }
  938. .item_main {
  939. display: flex;
  940. align-items: center;
  941. .item_name {
  942. margin-left: 20rpx;
  943. font-weight: 500;
  944. font-size: 28rpx;
  945. }
  946. }
  947. .item_img {
  948. width: 60rpx;
  949. height: 60rpx;
  950. border-radius: 60rpx;
  951. }
  952. }
  953. }
  954. </style>