index.vue 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668
  1. <template>
  2. <view class="container">
  3. <!-- <scroll-view @scrolltolower="scrollTolower" :scroll-top="userScrollTop" scroll-y="true" class="container"
  4. @scroll="userScroll"> -->
  5. <view class="top-cont u-f es-ver">
  6. <view :class="fixedTop?'inner fixed':'inner'">
  7. <!-- 状态栏 -->
  8. <view :class="fixedTop?'status-bar es-bc-theme':'status-bar'" :style="{ background:headerBG }"></view>
  9. <view class="top-title-box show" :style="{ background:headerBG }">
  10. <view>个人中心</view>
  11. </view>
  12. </view>
  13. <!-- <view class="my-header-right inner fixed">
  14. <image :class="isNew ? 'badge':''" @tap="goToMsg()" src="@/static/image/hall/new_hall_icon.png"
  15. mode="aspectFill"></image>
  16. </view> -->
  17. <!-- 用于顶部固定定位后占位 -->
  18. <view :class="fixedTop?'seat show':'seat'"></view>
  19. <view class="mybox">
  20. <view class="mybox-info">
  21. <image class="heads es-br-ban" @tap="navToUserInfo('./userInfo')" :src="user&&user.avatar||avatar"
  22. mode="aspectFill"></image>
  23. <view style="width: 10%;">
  24. <view class="flexBetween">
  25. <view class="flex-center es-c-22 fs20" @tap="navToUserInfo('./userInfo')">
  26. <text
  27. class="mybox-info-name ellipsis2">{{ isLogin&&user&&user.nickName || '请登录' }}</text>
  28. <!-- <image class="arrow_black" src="@/static/image/my/right_arrow_black_icon.png"
  29. mode="aspectFill"></image> -->
  30. </view>
  31. <!-- <image v-if="isOpen" class="es-w-40 es-h-40 es-mr-10" src="@/static/svg/code_icon20.svg"
  32. @tap="toSelfQr()" mode="aspectFill"></image> -->
  33. </view>
  34. <view class="flexBetween es-mt-20" @tap="toSelfQr()" v-if="isOpen">
  35. <!-- <view class="qyh es-c-75">
  36. ID:U{{user.userId}}
  37. </view> -->
  38. <view class="u-f-ajc" @tap.stop.prevent="copyFun(companyUserId?`C${companyUserId}`:`U${user.userId}`)">
  39. <view class="qyh es-c-75" v-if="companyUserId">
  40. 销售号:C{{companyUserId}}
  41. </view>
  42. <view class="qyh es-c-75" v-if="!companyUserId && user.userId">
  43. 用户号:U{{user.userId}}
  44. </view>
  45. <view class="es-ml-12 u-f-ajc">
  46. <image class="es-icon-32 u-f-ajc" src="@/static/image/my/copy.png" mode=""></image>
  47. </view>
  48. </view>
  49. <!-- <image class="arrow_black" src="@/static/image/my/right_arrow_black_icon.png"
  50. mode="aspectFill"></image> -->
  51. </view>
  52. <view class="flex-center" style="margin-top: 14rpx;" v-if="false">
  53. <view class="flex-center vipbox" v-if="user.isVip==1&&(!isIos || (isIos&&showIOSPay==1))"
  54. @click="loginNavTo('/pages/course/vipBuy')">
  55. <image class="arrow_black" src="@/static/image/my/lv_icon.png" mode="aspectFill">
  56. </image>
  57. <text class="es-c-FEF5EA">会员</text>
  58. </view>
  59. <view class="flex-center vipbox intelligentBox" style="margin-left: 16rpx;"
  60. v-if="user.vipLevel">
  61. <image class="arrow_black" src="@/static/image/my/intelligent_icon.png"
  62. mode="aspectFill">
  63. </image>
  64. <text class="es-c-FEF5EA">LV.{{user.vipLevel}}</text>
  65. </view>
  66. </view>
  67. </view>
  68. <image class="es-w-40 es-h-40" style="position: absolute;right: 0;" src="@/static/image/my/code_icon.png"
  69. @tap="toSelfQr()" mode="aspectFill"></image>
  70. </view>
  71. <!-- 福币,币,券信息 -->
  72. <view class="mybox-integral" v-if="false">
  73. <view class="mybox-integral-item" @click="loginNavTo('/pages/user/integral/points')">
  74. <view class="num">{{user.integral}}</view>
  75. <view>福币</view>
  76. </view>
  77. <view class="mybox-integral-item" @click="loginNavTo('/pages/user/coupon/myCouponList?type=0')">
  78. <view class="num">{{coupons.notUsedCount}}</view>
  79. <view>待用券</view>
  80. </view>
  81. <view class="mybox-integral-item" @click="loginNavTo('/pages/user/coupon/myCouponList?type=1')">
  82. <view class="num">{{coupons.usedCount}}</view>
  83. <view>已用券</view>
  84. </view>
  85. <view class="mybox-integral-item" @click="loginNavTo('/pages/user/coupon/myCouponList?type=2')">
  86. <view class="num">{{coupons.expiredCount}}</view>
  87. <view>过期券</view>
  88. </view>
  89. </view>
  90. <!-- vip会员 -->
  91. <!-- <view class="vip-card" v-if="false && user.userId&&(!isIos || (isIos&&showIOSPay==1))">
  92. <view>
  93. <view class="flex-center vip-card-info">
  94. <image src="@/static/image/my/VIP_member.png" mode="aspectFill"></image>
  95. <text>{{getDayMix(user.vipEndDate)}}</text>
  96. </view>
  97. <view class="flex-center vip-card-price">续费享季卡会员约<text>6.5</text>折</view>
  98. </view>
  99. <view class="buyvip" @click="loginNavTo('/pages/course/vipBuy')" >立即续费</view>
  100. </view> -->
  101. <!-- 我的订单 医疗服务等 -->
  102. <view class="menuBox">
  103. <view class="mybox-menu" v-for="(item, index) in menuList" :key="`one_${index}`"
  104. :style="{marginTop:index === 0 ? '40rpx':'30rpx'}">
  105. <view class="u-f-jsb u-f" style="margin-bottom: 36rpx;">
  106. <view class="mybox-menu-title">{{item.menuTitle}}</view>
  107. <navigator url="/pages_user/user/storeOrder" v-if="index==0" class="u-f-ajc">
  108. <text class="allOrderTextClass">全部订单</text>
  109. <u-icon name="arrow-right" size="26rpx" color="#00000073"></u-icon>
  110. </navigator>
  111. <!-- <view class="es-c-99 es-fs-24 u-f-ajc" v-if="index==0" @tap="myOrderFun">
  112. <view class="es-mr-10">我的订单</view>
  113. <view class="u-f-ajc">
  114. <u-icon name="arrow-right" size="24rpx" color="#999999"></u-icon>
  115. </view>
  116. </view> -->
  117. </view>
  118. <view class="mybox-menu-box">
  119. <!-- :class="[index==0?'w20':'']" -->
  120. <view class="mybox-menu-item" v-for="(menu, idx) in item.menus" :key="`two_${idx}`"
  121. @click="handleMenu(menu)">
  122. <view class="mybox-menu-itemImage">
  123. <image :src="menu.icon" mode="aspectFill"></image>
  124. <view v-if="index==0 && 0" class="numBox es-c-white es-fs-20">8</view>
  125. </view>
  126. <text>{{menu.name}}</text>
  127. </view>
  128. </view>
  129. </view>
  130. <view v-if="toolMenu.length>0" class="order-section">
  131. <view class="sec-header">
  132. <text class="sec-title">常用工具</text>
  133. </view>
  134. <view class="order-grid" style="padding: 0;">
  135. <view class="order-item" style="width: 25%;" v-for="(item, index) in toolMenu" :key="index"
  136. @click="navToToolPages(item)">
  137. <image :src="item.icon" mode="aspectFit" class="order-icon" style="width: 52rpx;height: 52rpx;"></image>
  138. <text>{{item.name}}</text>
  139. </view>
  140. </view>
  141. </view>
  142. <!-- <view class="mybox-menu" v-for="(item, index) in menuToolList" :key="`th_${index}`"
  143. style="margin-top: 30rpx;">
  144. <view class="u-f-jsb u-f" style="margin-bottom: 36rpx;">
  145. <view class="mybox-menu-title">{{item.menuTitle}}</view>
  146. </view>
  147. <view class="mybox-menu-box-tool">
  148. <view class="myboxToolMenuItem" v-for="(menu, idx) in item.menus" :key="`fr_${idx}`"
  149. @click="handleMenu(menu)">
  150. <view class="myboxToolMenuItemLeft">
  151. <image :src="menu.icon" mode="aspectFill"></image>
  152. <text>{{menu.name}}</text>
  153. </view>
  154. <u-icon name="arrow-right" size="28rpx" color="#000000A6"></u-icon>
  155. </view>
  156. </view>
  157. </view> -->
  158. </view>
  159. <view class="btns es-mt-40" v-if="isLogin">
  160. <view class="login-btn" @click="showLogout">退出登录</view>
  161. </view>
  162. <view class="like-product">
  163. <likeProduct ref="product" />
  164. </view>
  165. </view>
  166. </view>
  167. <u-popup :show="inviteShow" @close="inviteShow=false" round="32rpx">
  168. <view class="popupBox">
  169. <view class="u-f-ajc u-f-jsb">
  170. <view class="es-fs-36 es-c-00 es-fw-500">
  171. 填写朋友邀请码
  172. </view>
  173. <view class="" @tap="scanCodeFun">
  174. <image class="es-icon-48" src="/static/img/scan_icon24.eb4f6feb.svg" mode=""></image>
  175. </view>
  176. </view>
  177. <input type="text" v-model="inviteCode" class="es-mt-42 es-fs-32" placeholder="请输入邀请码"
  178. placeholder-style="{color: #B2B2B2;}" />
  179. <view class="u-f-ajc es-mt-56">
  180. <view class="popupBox-btn es-mr-32 u-f-ajc colorE62129" @tap="inviteShow=false">
  181. 取消
  182. </view>
  183. <view class="popupBox-btn u-f-ajc bgE62129 es-c-white" @tap="invitationCodeFun">
  184. 确认
  185. </view>
  186. </view>
  187. </view>
  188. </u-popup>
  189. <!-- </scroll-view> -->
  190. </view>
  191. </template>
  192. <script>
  193. import {
  194. getConfigByKey,
  195. getIOSPayStatus
  196. } from '@/api/common.js';
  197. import {
  198. startDrugReport,
  199. getUserFollowDoctor
  200. } from '@/api/drugReport';
  201. import {
  202. getUserInfo,
  203. bindSales,
  204. getMyCouponCount
  205. } from '@/api/user'
  206. import likeProduct from '@/components/likeProduct.vue'
  207. import {
  208. getGoodsProducts
  209. } from '@/api/product'
  210. // #ifdef APP-PLUS
  211. import permision1 from "@/utils/permission.js"
  212. // #endif
  213. const avatar = "/static/image/hall/my_heads_icon.png";
  214. import IMSDK, {
  215. SessionType
  216. } from "openim-uniapp-polyfill";
  217. import {
  218. navigateToDesignatedConversation,
  219. callingModule,
  220. meetingModule,
  221. setConversation
  222. } from "@/pages_im/util/imCommon";
  223. import {
  224. Igexin
  225. } from '@/pages_im/util/common.js';
  226. import {
  227. isMiOpen
  228. } from '@/api/common.js';
  229. export default {
  230. data() {
  231. return {
  232. inviteCode: '',
  233. inviteShow: false,
  234. isLogin: false,
  235. coupons: {
  236. expiredCount: 0,
  237. notUsedCount: 0,
  238. usedCount: 0
  239. },
  240. show: false,
  241. avatar: avatar,
  242. defUser: {
  243. avatar: avatar,
  244. nickName: "请登录",
  245. userName: "请登录",
  246. phone: "",
  247. integral: 0,
  248. balance: 0
  249. },
  250. user: {
  251. avatar: "/static/image/hall/my_heads_icon.png",
  252. userName: "",
  253. phone: "",
  254. nickName: "",
  255. integral: 0,
  256. balance: 0,
  257. userId: null
  258. },
  259. isNew: false,
  260. top: 0,
  261. userScrollTop: 0,
  262. isOpen: true,
  263. fixedTop: false, // 是否固定头部
  264. statusBarHeight: uni.getStorageSync('statusBarHeight'),
  265. menuList: [],
  266. menuToolList: [{
  267. menuTitle: "常用工具",
  268. menus: [{
  269. name: '地址管理',
  270. icon: "/static/image/my/address_management_icon.png",
  271. pageUrl: "/pages_user/user/address"
  272. },
  273. {
  274. name: '优惠券',
  275. icon: "/static/image/my/coupon_collection.png",
  276. pageUrl: "/pages_shopping/shopping/myCoupon"
  277. },
  278. {
  279. name: '关于我们',
  280. icon: "/static/image/my/feedback_icon.png",
  281. pageUrl: "/pages/user/about"
  282. }
  283. ]
  284. }],
  285. toolMenu: [],
  286. isIos: false,
  287. showIOSPay: 0,
  288. ompanyUserId:'',
  289. }
  290. },
  291. components: {
  292. likeProduct
  293. },
  294. onLoad() {
  295. let that = this;
  296. uni.$on('refreshUserInfo', function() {
  297. if (that.$isLogin()) {
  298. that.getUserInfo();
  299. that.$updateMsgDot()
  300. } else {
  301. that.isLogin = that.$isLogin()
  302. }
  303. });
  304. // if (!this.$qconfig.isAppStore) { //应用市场版本隐藏福币商城
  305. // let integralMenus = (this.menuList[2]).menus;
  306. // let integralSubMenu = {
  307. // name: '福币商城',
  308. // icon: "../../static/image/my/my_points_icon.png",
  309. // pageUrl: "/pages/user/integral/integralGoodsList"
  310. // };
  311. // integralMenus.splice(2, 0, integralSubMenu);
  312. // }
  313. // #ifdef APP-PLUS
  314. permision1.checkPush();
  315. this.isIos = (plus.os.name == "iOS")
  316. if (this.isIos) {
  317. this.getIOSPayStatusFun()
  318. }
  319. // #endif
  320. },
  321. onUnload() {
  322. uni.$off('refreshUserInfo');
  323. },
  324. onShow() {
  325. this.isLogin = this.$isLogin()
  326. let token = uni.getStorageSync('AppToken');
  327. if (this.$isLogin()) {
  328. this.getUserInfo();
  329. this.getMyCouponCount();
  330. this.$updateMsgDot()
  331. } else {
  332. this.user = this.defUser;
  333. uni.navigateTo({
  334. url: '/pages/auth/loginIndex'
  335. })
  336. return;
  337. }
  338. this.companyUserId = uni.getStorageSync('companyUserId')
  339. },
  340. onReachBottom() {
  341. if (this.$refs.product) {
  342. this.$refs.product.getGoodsProducts()
  343. }
  344. },
  345. onPageScroll(e) {
  346. if (e.scrollTop >= 50) {
  347. this.fixedTop = true
  348. } else {
  349. this.fixedTop = false
  350. }
  351. this.top = e.scrollTop
  352. },
  353. created() {
  354. this.initMenu();
  355. this.initToolMenu();
  356. },
  357. methods: {
  358. copyFun(e) {
  359. uni.setClipboardData({
  360. data: e,
  361. success: () => {
  362. uni.showToast({ title: '复制成功', icon: 'none' })
  363. },
  364. fail: () => {
  365. uni.showToast({ title: '复制失败', icon: 'none' })
  366. }
  367. })
  368. },
  369. initToolMenu() {
  370. const menus = [{
  371. name: '收货地址',
  372. icon: '/static/image/my/address_management_icon.png',
  373. url: '/pages_user/user/address'
  374. },
  375. {
  376. name: '积分商城',
  377. icon: '/static/image/my/points_mall.png',
  378. url: '/pages_points/integralGoodsList'
  379. },
  380. {
  381. name: '优惠券',
  382. icon: '/static/image/my/coupon_collection.png',
  383. url: '/pages_shopping/shopping/myCoupon'
  384. },
  385. {
  386. name: '我的足迹',
  387. icon: '/static/image/my/my_footprints.png',
  388. url: '/pages_user/user/storeProductRelation'
  389. },
  390. {
  391. name: '专属客服',
  392. icon: '/static/image/my/customer_service.png',
  393. isService: true,
  394. url: ''
  395. }
  396. ]
  397. // if (this.user && this.user.isCompanyUser) {
  398. menus.push({
  399. name: '制单管理',
  400. icon: '/static/image/my/document_management.png',
  401. documentPreparation: true,
  402. url: ''
  403. }, {
  404. name: '销售管理',
  405. icon: '/static/image/my/sales_management.png',
  406. salesManagement: true,
  407. url: ''
  408. })
  409. // }
  410. menus.push({
  411. name: '关于我们',
  412. icon: '/static/image/my/feedback_icon.png',
  413. url: '/pages/user/about'
  414. })
  415. this.toolMenu = menus
  416. },
  417. async initMenu() {
  418. this.menuList = [{
  419. menuTitle: "我的订单",
  420. menus: [{
  421. name: '待付款',
  422. icon: "/static/image/mall/payment.png",
  423. myOrder: true
  424. }, {
  425. name: '待发货',
  426. icon: "/static/image/mall/send_goods.png",
  427. myOrder: true
  428. }, {
  429. name: '待收货',
  430. icon: "/static/image/mall/sou_goods.png",
  431. myOrder: true
  432. }, {
  433. name: '已完成',
  434. icon: "/static/image/mall/completed.png",
  435. myOrder: true
  436. }, {
  437. name: '售后退款',
  438. icon: "/static/image/mall/after_sales.png",
  439. pageUrl: "/pages_user/user/refundOrderList"
  440. }]
  441. },
  442. // {
  443. // menuTitle: "医疗服务",
  444. // menus: [
  445. // {
  446. // name: '我的处方',
  447. // icon: "../../static/image/my/my_prescription_icon.png",
  448. // pageUrl:"/pages/store/prescribeList"
  449. // },{
  450. // name: '我的医生',
  451. // icon: "../../static/image/my/my_doctor_icon.png",
  452. // pageUrl:"./myDoctorList"
  453. // },{
  454. // name: '随访服务',
  455. // icon: "../../static/image/my/follow_up_icon.png",
  456. // pageUrl:"/pages/user/followList"
  457. // },{
  458. // name: '用药咨询',
  459. // icon: "../../static/image/my/medical_consultation_icon.png",
  460. // pageUrl:"/pages/store/inquiryOrderList",
  461. // isIm:true
  462. // },{
  463. // name: '用药报告',
  464. // icon: "../../static/image/my/medication_report_icon.png",
  465. // pageUrl:"/pages/user/drugReportList"
  466. // }
  467. // ]
  468. // },
  469. // {
  470. // menuTitle: "我的应用",
  471. // menus: [
  472. // // {
  473. // // name: '健康档案',
  474. // // icon: "../../static/image/my/my_order_icon.png",
  475. // // pageUrl: "/pages/user/healthRecords/index"
  476. // // }
  477. // // ,{
  478. // // name: '就诊管理',
  479. // // icon: "../../static/image/my/visit_icon.png",
  480. // // pageUrl:"./patient"
  481. // // },
  482. // {
  483. // name: '地址管理',
  484. // icon: "../../static/image/my/address_management_icon.png",
  485. // pageUrl: "./address"
  486. // },
  487. // // {
  488. // // name: '福币管理',
  489. // // icon: "/static/image/my/my_points_icon.png",
  490. // // pageUrl: "/pages_user/user/integral"
  491. // // },
  492. // {
  493. // name: '优惠券',
  494. // icon: "../../static/image/my/coupon_collection.png",
  495. // pageUrl: "/pages_shopping/shopping/myCoupon"
  496. // },
  497. // // {
  498. // // name: '购物车',
  499. // // icon: "/static/image/mall/cart.png",
  500. // // pageUrl: "/pages/shopping/cart"
  501. // // },
  502. // // {
  503. // // name: '我的足迹',
  504. // // icon: "/static/image/mall/footprint.png",
  505. // // pageUrl: "/pages_user/user/storeProductRelation"
  506. // // },
  507. // // {
  508. // // name: '制单管理',
  509. // // icon: "/static/image/my/my_cforder_icon.png",
  510. // // documentPreparation: true
  511. // // }
  512. // // {
  513. // // name: '专属客服',
  514. // // icon: "/static/image/my/drzy_icon.png",
  515. // // isService: true
  516. // // },
  517. // // {
  518. // // name: '领券中心',
  519. // // icon: "../../static/image/my/coupon_collection.png",
  520. // // pageUrl: "/pages/company/couponList?couponType=6"
  521. // // }
  522. // // ,{
  523. // // name: '健康产品',
  524. // // icon: "../../static/image/my/my_points_icon.png",
  525. // // pageUrl:"/pages/shopping/index"
  526. // // }
  527. // // ,{
  528. // // name: '会员中心',
  529. // // icon: "../../static/image/my/member_icon.png",
  530. // // isUserService:true,
  531. // // pageUrl:""
  532. // // }
  533. // // ,{
  534. // // name: '健康管家',
  535. // // icon: "../../static/image/my/my_doctor_icon.png",
  536. // // pageUrl: "/pages/user/addHealthButler"
  537. // // }
  538. // // ,{
  539. // // name: '开票历史',
  540. // // icon: "../../static/image/my/invoicing_icon.png",
  541. // // pageUrl:"/pages/store/invoice/invoiceList",
  542. // // }
  543. // // ,{
  544. // // name: '客服中心',
  545. // // icon: "../../static/image/my/service_center_icon.png",
  546. // // pageUrl:""
  547. // // },
  548. // {
  549. // name: '看课通知',
  550. // icon: "../../static/image/my/my_order_icon.png",
  551. // pageUrl: "/pages/courseAnswer/list"
  552. // }, {
  553. // name: '投诉建议',
  554. // icon: "../../static/image/my/tsjy.png",
  555. // pageUrl: "/pages/user/feedback"
  556. // },
  557. // {
  558. // name: '直播',
  559. // icon: "/static/images/live/live.png",
  560. // pageUrl: "/pages_live/livingList",
  561. // isShow: true
  562. // },
  563. // {
  564. // name: '直播订单',
  565. // icon: "../../static/image/my/my_cforder_icon.png",
  566. // pageUrl: "/pages_live/shopping/order",
  567. // isShow: true
  568. // },
  569. // {
  570. // name: '直播售后',
  571. // icon: "../../static/images/live/live_sale.png",
  572. // pageUrl: "/pages_live/shopping/storeOrderRefundList",
  573. // isShow: true
  574. // },
  575. // {
  576. // name: '商城订单',
  577. // icon: "../../static/image/my/my_cforder_icon.png",
  578. // pageUrl: "/pages_user/user/storeOrder?status=",
  579. // isShow: true
  580. // },
  581. // {
  582. // name: '商城售后',
  583. // icon: "../../static/images/live/live_sale.png",
  584. // pageUrl: "/pages_user/user/refundOrderList",
  585. // isShow: true
  586. // },
  587. // ]
  588. // },
  589. // {
  590. // menuTitle: "我的视频",
  591. // menus: [{
  592. // name: '我的收藏',
  593. // icon: "../../static/image/my/collect_icon.png",
  594. // pageUrl: "./myFavoriteVideo"
  595. // }, {
  596. // name: '我的评论',
  597. // icon: "../../static/image/my/evaluate_icon.png",
  598. // pageUrl: "/pages/store/inquiryOrderPingList"
  599. // }]
  600. // },
  601. // {
  602. // menuTitle: "管理应用",
  603. // menus: [
  604. // // {
  605. // // name: '医生入驻',
  606. // // icon: "../../static/image/my/doctor_entrance_icon.png",
  607. // // pageUrl:"/pages/user/registerDoctor?type=1"
  608. // // },{
  609. // // name: '药师入驻',
  610. // // icon: "../../static/image/my/pharmacist_entrance_icon.png",
  611. // // pageUrl:"/pages/user/registerDoctor?type=2"
  612. // // },
  613. // {
  614. // name: '达人主页',
  615. // icon: "../../static/image/my/drzy_icon.png",
  616. // pageUrl: "/pages/expert/index"
  617. // },
  618. // // {
  619. // // name: '销售登录',
  620. // // icon: "../../static/image/my/login_icon.png",
  621. // // isSale: true,
  622. // // pageUrl: "",
  623. // // },
  624. // // {
  625. // // name: '客服登录',
  626. // // icon: "../../static/image/my/login_icon.png",
  627. // // isService: true,
  628. // // pageUrl: "",
  629. // // },
  630. // {
  631. // name: '关于我们',
  632. // icon: "../../static/image/my/feedback_icon.png",
  633. // pageUrl: "./about"
  634. // }
  635. // ]
  636. // }
  637. ]
  638. let param = {
  639. key: "app.config"
  640. };
  641. let result = await getConfigByKey(param)
  642. result = result.data && JSON.parse(result.data)
  643. if (result.tongueFlag && result.tongueFlag != '0') {
  644. const menuExists3 = this.menuList[0].menus.some(menu => menu.name === '舌苔报告');
  645. if (!menuExists3) {
  646. this.menuList[0].menus.push({
  647. name: '舌苔报告',
  648. icon: "../../static/image/my/shetai.png",
  649. pageUrl: "/pages/user/tongue/tongueList"
  650. })
  651. }
  652. const menuExists4 = this.menuList[0].menus.some(menu => menu.name === 'AI舌诊');
  653. if (!menuExists4) {
  654. this.menuList[0].menus.push({
  655. name: 'AI舌诊',
  656. icon: "/static/image/my/tongue.png",
  657. pageUrl: "/pages/user/tongue/index"
  658. })
  659. }
  660. }
  661. if (false && this.user && !this.user.invitedBySalesId) {
  662. const isExist = this.menuList.some(item => item.name === '填写邀请码');
  663. if (!isExist) {
  664. this.menuList[2].menus.push({
  665. name: '填写邀请码',
  666. icon: "../../static/image/my/my_cforder_icon.png",
  667. isIinvitation: true
  668. })
  669. }
  670. }
  671. if (false &&this.user && this.user.isCompanyUser) {
  672. const menuExists = this.menuList[2].menus.some(menu => menu.name === '客服登录');
  673. if (!menuExists) {
  674. this.menuList[2].menus.push({
  675. name: '客服登录',
  676. icon: "../../static/image/my/login_icon.png",
  677. isService: true,
  678. pageUrl: "",
  679. })
  680. }
  681. const menuExists1 = this.menuList[2].menus.some(menu => menu.name === '销售登录');
  682. if (!menuExists1) {
  683. this.menuList[2].menus.push({
  684. name: '销售登录',
  685. icon: "../../static/image/my/login_icon.png",
  686. isSale: true,
  687. pageUrl: "",
  688. })
  689. }
  690. }
  691. },
  692. navToToolPages(e) {
  693. if (e.isService && !e.url) {
  694. this.toCompany()
  695. return
  696. }
  697. if (e.documentPreparation && !e.url) {
  698. this.documentPreparationFun()
  699. return
  700. }
  701. if (e.salesManagement && !e.url) {
  702. this.toManagerCourse()
  703. return
  704. }
  705. uni.navigateTo({
  706. url: e.url
  707. });
  708. },
  709. scanCodeFun() {
  710. let that = this
  711. uni.scanCode({
  712. onlyFromCamera: true,
  713. success: function(res) {
  714. console.log('条码内容:' + res.result);
  715. const uIndex = res.result.indexOf('U');
  716. that.inviteCode = uIndex !== -1 ? res.result.slice(uIndex + 1) : res.result;
  717. that.invitationCodeFun()
  718. }
  719. });
  720. },
  721. async invitationCodeFun() {
  722. let params = {
  723. userId: this.user.userId,
  724. inviteCode: this.inviteCode
  725. }
  726. const res = await bindSales(params)
  727. if (res.code == 200) {
  728. uni.showToast({
  729. icon: 'none',
  730. title: '绑定成功!'
  731. })
  732. this.inviteShow = false
  733. this.getUserInfo()
  734. this.menuList[2].menus.pop();
  735. } else {
  736. uni.showToast({
  737. icon: 'none',
  738. title: res.msg
  739. })
  740. }
  741. },
  742. getIOSPayStatusFun() {
  743. getIOSPayStatus().then(res => {
  744. if (res.code == 200) {
  745. this.showIOSPay = res.iosPayStatus
  746. }
  747. })
  748. },
  749. doIM() {
  750. uni.showLoading({
  751. title: "处理中..."
  752. });
  753. getUserFollowDoctor().then(res => {
  754. if (res.code == 200) {
  755. if (res.data != null) {
  756. let data = res.data;
  757. var params = {
  758. followId: data.followId
  759. };
  760. console.log(data);
  761. startDrugReport(params).then(res => {
  762. uni.hideLoading();
  763. var that = this;
  764. var user = JSON.parse(uni.getStorageSync('userInfo'));
  765. var uid = 'U' + user.userId;
  766. var did = 'D' + data.followDoctorId;
  767. var conversationID = `si_${did}_${uid}`;
  768. this.$store.commit("timStore/setOrderId", data.orderId);
  769. this.$store.commit("timStore/setFollowId", data.followId);
  770. this.$store.commit("timStore/setImType", 2);
  771. this.$store.commit("timStore/setConversationID", conversationID);
  772. navigateToDesignatedConversation(did, SessionType.Single, false)
  773. .then((
  774. res) => {
  775. // setConversation(conversationID,JSON.stringify(ex)).then(() => {
  776. // console.log("qxj setConversation ex:"+JSON.stringify(ex));
  777. // }).catch(() => {});
  778. }).catch(() => uni.$u.toast("操作失败"));
  779. },
  780. rej => {}
  781. );
  782. } else {
  783. uni.hideLoading()
  784. uni.showToast({
  785. icon: 'none',
  786. title: "当前没有药师为您服务",
  787. });
  788. }
  789. } else {
  790. uni.showToast({
  791. icon: 'none',
  792. title: "请求失败",
  793. });
  794. }
  795. },
  796. rej => {}
  797. );
  798. },
  799. toIM() {
  800. if (this.$isLogin()) {
  801. this.doIM();
  802. } else {
  803. this.$showLoginPage();
  804. }
  805. },
  806. toCompany() {
  807. if (this.$isLogin()) {
  808. var token = uni.getStorageSync('CompanyUserToken');
  809. if (token) {
  810. uni.navigateTo({
  811. url: '/pages/company/index'
  812. })
  813. } else {
  814. uni.navigateTo({
  815. url: '/pages/company/login'
  816. })
  817. }
  818. } else {
  819. this.$showLoginPage();
  820. }
  821. },
  822. showLogout() {
  823. //this.show=true;
  824. let that = this;
  825. uni.showActionSheet({
  826. title: "确认退出吗",
  827. itemList: ["确定"],
  828. success: function(res) {
  829. that.logout();
  830. that.isLogin = that.$isLogin()
  831. // uni.navigateTo({
  832. // url: '/pages/auth/loginIndex'
  833. // })
  834. }
  835. });
  836. },
  837. hideLogout() {
  838. this.show = false;
  839. },
  840. logout() {
  841. uni.clearStorage()
  842. this.$logout();
  843. let IMUserID = uni.getStorageSync('IMUserID');
  844. IMSDK.asyncApi(IMSDK.IMMethods.Logout, IMSDK.uuid()).then(() => {
  845. callingModule?.endCall();
  846. meetingModule?.endCall();
  847. }).catch((err) => console.log(err))
  848. .finally(() => {
  849. Igexin.unbindAlias(IMUserID);
  850. uni.removeStorage({
  851. key: "IMToken"
  852. });
  853. uni.removeStorage({
  854. key: "IMUserID"
  855. });
  856. uni.removeStorage({
  857. key: "IMHasLogin"
  858. });
  859. });
  860. this.user = this.defUser;
  861. this.coupons.expiredCount = 0;
  862. this.coupons.notUsedCount = 0;
  863. this.coupons.usedCount = 0;
  864. },
  865. toSale() {
  866. if (this.$isLogin()) {
  867. var token = uni.getStorageSync('ManageToken');
  868. if (token) {
  869. uni.navigateTo({
  870. url: '/pages_manage/index'
  871. })
  872. } else {
  873. uni.navigateTo({
  874. url: '/pages_manage/login'
  875. });
  876. }
  877. } else {
  878. this.$showLoginPage();
  879. }
  880. },
  881. documentPreparationFun() {
  882. if (this.$checkCompanyUserLoginState()) {
  883. uni.navigateTo({
  884. url: '/pages_company/index'
  885. })
  886. } else {
  887. uni.navigateTo({
  888. url: '/pages_company/auth/login'
  889. })
  890. }
  891. },
  892. toManagerCourse() {
  893. if (uni.getStorageSync('ManageToken')) {
  894. uni.navigateTo({
  895. url: '/pages_manage/index'
  896. })
  897. } else {
  898. uni.navigateTo({
  899. url: '/pages_manage/login'
  900. })
  901. }
  902. },
  903. myOrderFun(item) {
  904. const arr = ['待付款', '待发货', '待收货', '已完成']
  905. let status = ''
  906. if (item.name) {
  907. status = arr.indexOf(item.name)
  908. }
  909. uni.navigateTo({
  910. url: '/pages_user/user/storeOrder?status=' + status
  911. })
  912. },
  913. handleMenu(item) {
  914. if (item.isIm != undefined && item.isIm) {
  915. this.toIM();
  916. } else if (item.isIinvitation != undefined && item.isIinvitation) {
  917. this.inviteShow = true
  918. } else if (item.documentPreparation != undefined && item.documentPreparation) {
  919. this.documentPreparationFun();
  920. } else if (item.myOrder != undefined && item.myOrder) {
  921. this.myOrderFun(item);
  922. } else if (item.isService != undefined && item.isService) {
  923. this.toCompany();
  924. } else if (item.isSale != undefined && item.isSale) {
  925. this.toSale();
  926. } else if (item.isUserService != undefined && item.isUserService) {
  927. this.loginNavTo('/pages/course/vipBuy')
  928. } else if (item.isServerCenter != undefined && item.isServerCenter) {
  929. this.gotoMiniProgram("/page_user/service");
  930. } else if (item.name == '客服中心') {
  931. const url = getApp().globalData.kfurl //企业微信客服链接
  932. const corpId = getApp().globalData.corpId //企业id
  933. this.openCustomerServiceChat(url, corpId)
  934. } else {
  935. this.loginNavTo(item.pageUrl)
  936. }
  937. },
  938. navTo(url) {
  939. console.log(url);
  940. uni.navigateTo({
  941. url: url
  942. });
  943. },
  944. loginNavTo(url) {
  945. if (!this.$isLogin()) {
  946. this.$showLoginPage();
  947. return;
  948. }
  949. uni.navigateTo({
  950. url: url
  951. });
  952. },
  953. navToUserInfo(url) {
  954. if (!this.$isLogin() || !this.user.userId) {
  955. this.$showLoginPage();
  956. return;
  957. }
  958. uni.navigateTo({
  959. url: "./userInfo?userId=" + this.user.userId
  960. });
  961. },
  962. navToServerCenter() {
  963. if (!this.$isLogin()) {
  964. this.$showLoginPage();
  965. return;
  966. }
  967. },
  968. getUserInfo() {
  969. let that = this;
  970. getUserInfo().then(res => {
  971. if (res.code == 200) {
  972. if (res.user != null) {
  973. uni.setStorageSync('userInfo', JSON.stringify(res.user));
  974. this.user = res.user;
  975. this.initMenu()
  976. this.initToolMenu()
  977. } else {
  978. uni.showToast({
  979. icon: 'none',
  980. title: res.msg,
  981. });
  982. }
  983. }
  984. },
  985. rej => {}
  986. );
  987. },
  988. getMyCouponCount() {
  989. let that = this;
  990. getMyCouponCount().then(res => {
  991. if (res.code == 200) {
  992. this.coupons = res.data;
  993. }
  994. },
  995. rej => {}
  996. );
  997. },
  998. getUserNickName() {
  999. let nickName = "";
  1000. if (!this.$isLogin()) { //已登录
  1001. nickName = "请登录";
  1002. return nickName;
  1003. }
  1004. nickName = this.$isEmpty(this.user.nickName) ? "请登录" : this.user.nickName;
  1005. return nickName;
  1006. },
  1007. userScroll(e) {
  1008. if (e.detail.scrollTop >= 50) {
  1009. this.fixedTop = true
  1010. } else {
  1011. this.fixedTop = false
  1012. }
  1013. this.top = e.detail.scrollTop;
  1014. },
  1015. scrollTolower() {
  1016. },
  1017. getDayMix(vipEndDate) {
  1018. // 假设 vipEndDate 字符串
  1019. //let vipEndDate = "2024-09-06T14:43:36.000+0800";
  1020. // 将 vipEndDate 解析为日期对象
  1021. let endDate = new Date(vipEndDate);
  1022. // 获取当前日期
  1023. let currentDate = new Date();
  1024. // 计算时间差(毫秒)
  1025. let timeDiff = endDate - currentDate;
  1026. // 计算天数差
  1027. let dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));
  1028. let dayStr = "";
  1029. // 输出结果
  1030. if (dayDiff > 0) {
  1031. dayStr = `VIP到期还有${dayDiff}天`;
  1032. } else if (dayDiff === 0) {
  1033. dayStr = "今天是VIP到期日";
  1034. } else {
  1035. dayStr = `VIP已过期${Math.abs(dayDiff)}天`;
  1036. }
  1037. return dayStr;
  1038. },
  1039. goToMsg() {
  1040. uni.switchTab({
  1041. // url: '/pages_im/pages/conversation/conversationList/index'
  1042. url: '/pages/index/index'
  1043. });
  1044. },
  1045. async openCustomerServiceChat(url, corpId) {
  1046. // #ifdef H5
  1047. window.location.href = url
  1048. // #endif
  1049. // #ifdef MP-WEIXIN
  1050. wx.openCustomerServiceChat({
  1051. extInfo: {
  1052. url
  1053. },
  1054. corpId,
  1055. success(res) {
  1056. console.log('成功');
  1057. },
  1058. fail(err) {
  1059. console.log(err, '报错');
  1060. }
  1061. })
  1062. // #endif
  1063. // #ifdef APP-PLUS
  1064. let shares = await this.getAppShare().catch(err => {
  1065. throw Error(err)
  1066. });
  1067. shares['weixin'].openCustomerServiceChat({
  1068. corpid: corpId,
  1069. url
  1070. }, suc => {
  1071. console.log("客服打开成功", JSON.stringify(res))
  1072. }, err => {
  1073. console.log("error", JSON.stringify(err))
  1074. })
  1075. // #endif
  1076. },
  1077. getAppShare() {
  1078. // #ifdef APP-PLUS
  1079. return new Promise((re, rj) => {
  1080. let shares = null;
  1081. var pusher = plus.share.getServices(function(s) {
  1082. shares = {};
  1083. s.forEach(e => shares[e.id] = e);
  1084. re(shares)
  1085. }, function(e) {
  1086. rj(e);
  1087. });
  1088. });
  1089. // #endif
  1090. },
  1091. gotoMiniProgram(pageUrl) {
  1092. plus.share.getServices(function(res) {
  1093. var sweixin = null;
  1094. for (var i = 0; i < res.length; i++) {
  1095. var t = res[i];
  1096. if (t.id == 'weixin') {
  1097. sweixin = t;
  1098. }
  1099. }
  1100. if (sweixin) {
  1101. //唤起微信跳转小程序
  1102. sweixin.launchMiniProgram({
  1103. id: getApp().globalData.miniprogamId,
  1104. path: pageUrl,
  1105. type: 0
  1106. }, function() {
  1107. console.log("微信唤起成功");
  1108. return true;
  1109. }, function(e) {
  1110. console.log("微信唤起失败", e);
  1111. uni.showToast({
  1112. title: '微信唤起失败,请检查是否有微信应用',
  1113. icon: 'none'
  1114. })
  1115. return false;
  1116. })
  1117. } else {
  1118. uni.showToast({
  1119. title: '微信唤起失败,请检查是否有微信应用',
  1120. icon: 'none',
  1121. duration: 3000
  1122. })
  1123. return false;
  1124. }
  1125. }, function(res) {
  1126. });
  1127. },
  1128. toSelfQr() {
  1129. uni.navigateTo({
  1130. url: '/pages_im/pages/common/userOrGroupQrCode/index',
  1131. });
  1132. },
  1133. userIsDel() {
  1134. return this.user.status == 0;
  1135. },
  1136. isMiOpen() {
  1137. isMiOpen().then((res) => {
  1138. if (res.code == 200) {
  1139. uni.setStorageSync('isOpen', res.data);
  1140. this.isOpen = res.data;
  1141. }
  1142. });
  1143. },
  1144. getGoodsProducts() {
  1145. var that = this;
  1146. if (that.likeGoodsHasMore == true || that.likeGoodsLoading == true) return;
  1147. that.likeGoodsLoading = true;
  1148. uni.showLoading({
  1149. title: "加载中..."
  1150. })
  1151. getGoodsProducts(that.page).then(
  1152. res => {
  1153. if (res.code == 200) {
  1154. that.total = res.data.total;
  1155. that.likeGoodsList.push.apply(that.likeGoodsList, res.data.list);
  1156. that.likeGoodsLoading = false;
  1157. that.likeGoodsHasMore = that.likeGoodsList.length < that.total ? false : true;
  1158. that.page.page = that.page.page + 1;
  1159. uni.hideLoading()
  1160. }
  1161. },
  1162. err => {
  1163. uni.hideLoading()
  1164. uni.showToast({
  1165. title: err.msg,
  1166. icon: 'none',
  1167. duration: 2000
  1168. });
  1169. }
  1170. );
  1171. },
  1172. showProduct(item) {
  1173. uni.navigateTo({
  1174. url: '/pages/shopping/productDetails?productId=' + item.productId
  1175. })
  1176. },
  1177. },
  1178. computed: {
  1179. // 计算属性的 getter
  1180. headerBG: function() {
  1181. var top = this.top / 88;
  1182. return 'rgba(253,224,204, ' + top + ')';
  1183. },
  1184. }
  1185. }
  1186. </script>
  1187. <style scoped lang="scss">
  1188. page {
  1189. height: 100%;
  1190. background: #F4F6F7;
  1191. }
  1192. .top-cont {
  1193. position: relative;
  1194. display: flex;
  1195. flex-direction: column;
  1196. &::after {
  1197. content: '';
  1198. width: 100%;
  1199. height: 370rpx;
  1200. position: absolute;
  1201. z-index: -1;
  1202. left: 0;
  1203. top: 0;
  1204. border-radius: 0 0 50rpx 50rpx;
  1205. }
  1206. .inner.fixed {
  1207. width: 100%;
  1208. position: fixed;
  1209. top: 0;
  1210. left: 0;
  1211. z-index: 999;
  1212. }
  1213. .seat {
  1214. display: none;
  1215. height: var(--status-bar-height);
  1216. &.show {
  1217. display: block;
  1218. }
  1219. }
  1220. .status-bar {
  1221. background-color: rgba(253, 224, 204, 1);
  1222. height: var(--status-bar-height);
  1223. }
  1224. .status-bar.main-bg {
  1225. background-color: #fff;
  1226. }
  1227. .top-title-box {
  1228. height: 88rpx;
  1229. line-height: 88rpx;
  1230. text-align: center;
  1231. background-color: #fff;
  1232. font-size: 34rpx;
  1233. color: #070707;
  1234. display: none;
  1235. &.show {
  1236. display: block;
  1237. }
  1238. }
  1239. }
  1240. .top-section {
  1241. .bg-img {
  1242. position: fixed;
  1243. width: 100%;
  1244. top: 0;
  1245. left: 0;
  1246. right: 0;
  1247. height: 524rpx;
  1248. z-index: 0;
  1249. }
  1250. }
  1251. @mixin u-flex($flexD, $alignI, $justifyC) {
  1252. display: flex;
  1253. flex-direction: $flexD;
  1254. align-items: $alignI;
  1255. justify-content: $justifyC;
  1256. }
  1257. .flex-center {
  1258. @include u-flex(row, center, flex-start);
  1259. }
  1260. .flexBetween {
  1261. width: calc(100vw - 240rpx);
  1262. @include u-flex(row, center, space-between);
  1263. }
  1264. .container {
  1265. background-image: url("@/static/images/bg.png");
  1266. background-size: contain;
  1267. background-repeat: no-repeat;
  1268. background-position: top;
  1269. font-family: PingFang SC, PingFang SC;
  1270. // padding-top: var(--status-bar-height);
  1271. padding-bottom: 20rpx;
  1272. // height: 100%;
  1273. }
  1274. .my-header-right {
  1275. height: 88rpx;
  1276. padding-right: 28rpx;
  1277. margin-top: var(--status-bar-height);
  1278. @include u-flex(row, center, flex-end);
  1279. image {
  1280. margin-left: 32rpx;
  1281. width: 48rpx;
  1282. height: 48rpx;
  1283. position: relative;
  1284. }
  1285. .badge::after {
  1286. content: "";
  1287. width: 16rpx;
  1288. height: 16rpx;
  1289. background: #FF233C;
  1290. border-radius: 50%;
  1291. position: absolute;
  1292. right: 0;
  1293. top: 0;
  1294. }
  1295. }
  1296. .mybox {
  1297. padding: 12rpx 24rpx;
  1298. padding-bottom: 88rpx;
  1299. &-info {
  1300. padding: 0 16rpx;
  1301. @include u-flex(row, flex-start, flex-start);
  1302. position: relative;
  1303. &-name {
  1304. font-weight: 600;
  1305. font-size: 40rpx;
  1306. color: #000000;
  1307. }
  1308. .heads {
  1309. width: 150rpx;
  1310. height: 150rpx;
  1311. border: 4rpx solid #FFFFFF;
  1312. border-radius: 50%;
  1313. margin-right: 20rpx;
  1314. }
  1315. .arrow_black {
  1316. width: 48rpx;
  1317. height: 48rpx;
  1318. }
  1319. .vipbox {
  1320. background: linear-gradient(90deg, #F26F00 0%, #FF9D1F 100%);
  1321. border-radius: 20rpx 20rpx 20rpx 20rpx;
  1322. border: 1rpx solid #FEDDB9;
  1323. font-weight: 500;
  1324. font-size: 22rpx;
  1325. color: #FEF5EA;
  1326. padding: 0 22rpx 0 12rpx;
  1327. }
  1328. }
  1329. &-integral {
  1330. margin-top: 48rpx;
  1331. @include u-flex(row, center, flex-start);
  1332. &-item {
  1333. width: 25%;
  1334. text-align: center;
  1335. font-weight: 400;
  1336. font-size: 24rpx;
  1337. color: #757575;
  1338. }
  1339. .num {
  1340. margin-bottom: 12rpx;
  1341. font-family: DIN, DIN;
  1342. font-weight: 500;
  1343. font-size: 40rpx;
  1344. color: #313131;
  1345. }
  1346. }
  1347. &-menu {
  1348. background: #FFFFFF;
  1349. border-radius: 16rpx;
  1350. padding: 30rpx 30rpx 40rpx 24rpx;
  1351. margin: 30rpx 0;
  1352. &-title {
  1353. font-weight: 600;
  1354. font-size: 40rpx;
  1355. color: rgba(0, 0, 0, 0.85);
  1356. }
  1357. &-box {
  1358. @include u-flex(row, center, flex-start);
  1359. margin-bottom: -40rpx;
  1360. flex-wrap: wrap;
  1361. }
  1362. .mybox-menu-box-tool {
  1363. @include u-flex(column, center, center);
  1364. padding: 2rpx 16rpx;
  1365. .myboxToolMenuItem {
  1366. @include u-flex(row, center, space-between);
  1367. width: 100%;
  1368. padding-bottom: 44rpx;
  1369. margin-bottom: 38rpx;
  1370. border-bottom: 2rpx solid #D8D8D8;
  1371. .myboxToolMenuItemLeft {
  1372. @include u-flex(row, center, center);
  1373. image {
  1374. width: 50rpx;
  1375. height: 50rpx;
  1376. }
  1377. text {
  1378. font-weight: 400;
  1379. font-size: 36rpx;
  1380. color: rgba(0, 0, 0, 0.85);
  1381. margin-left: 42rpx;
  1382. }
  1383. }
  1384. }
  1385. .myboxToolMenuItem:last-child {
  1386. border-bottom: none;
  1387. padding-bottom: 0;
  1388. margin-bottom: 0;
  1389. }
  1390. }
  1391. .w20 {
  1392. width: 20% !important;
  1393. }
  1394. &-item {
  1395. width: 33.3%;
  1396. margin-bottom: 34rpx;
  1397. @include u-flex(column, center, center);
  1398. font-weight: 400;
  1399. font-size: 36rpx;
  1400. color: rgba(0, 0, 0, 0.85);
  1401. .mybox-menu-itemImage {
  1402. position: relative;
  1403. margin-bottom: 10rpx;
  1404. .numBox {
  1405. position: absolute;
  1406. top: -16rpx;
  1407. right: -16rpx;
  1408. border-radius: 50%;
  1409. padding: 8rpx;
  1410. background: #FF7163;
  1411. }
  1412. image {
  1413. height: 60rpx;
  1414. width: 60rpx;
  1415. }
  1416. }
  1417. }
  1418. }
  1419. }
  1420. .order-section {
  1421. background: #fff;
  1422. border-radius: 24rpx;
  1423. padding: 30rpx 24rpx 40rpx 24rpx;
  1424. margin-bottom: 30rpx;
  1425. .sec-header {
  1426. display: flex;
  1427. justify-content: space-between;
  1428. align-items: center;
  1429. .sec-title {
  1430. font-weight: bold;
  1431. font-size: 40rpx;
  1432. color: rgba(0, 0, 0, 0.85);
  1433. }
  1434. .more {
  1435. display: flex;
  1436. align-items: center;
  1437. text {
  1438. font-size: 32rpx;
  1439. color: rgba(0, 0, 0, 0.65);
  1440. margin-right: 10rpx;
  1441. }
  1442. }
  1443. }
  1444. .order-grid {
  1445. display: flex;
  1446. // justify-content: space-around;
  1447. flex-wrap: wrap;
  1448. padding: 0 10rpx;
  1449. .order-item {
  1450. width: 33.3%;
  1451. display: flex;
  1452. flex-direction: column;
  1453. align-items: center;
  1454. margin-top: 30rpx;
  1455. .order-icon {
  1456. width: 60rpx;
  1457. height: 60rpx;
  1458. margin-bottom: 10rpx;
  1459. }
  1460. text {
  1461. font-size: 36rpx;
  1462. color: rgba(0, 0, 0, 0.85);
  1463. }
  1464. }
  1465. }
  1466. }
  1467. .vip-card {
  1468. height: 172rpx;
  1469. margin-top: 28rpx;
  1470. background: url("@/static/image/my/vip_bg_left.png") no-repeat left / 128rpx 172rpx,
  1471. url("@/static/image/my/vip_bg_right.png") no-repeat right / 324rpx 172rpx,
  1472. linear-gradient(90deg, #FFF3DF 0%, #FADBA9 100%);
  1473. border-radius: 16rpx 16rpx 16rpx 16rpx;
  1474. padding: 0 32rpx;
  1475. box-sizing: border-box;
  1476. @include u-flex(row, center, space-between);
  1477. &-info {
  1478. font-weight: 400;
  1479. font-size: 24rpx;
  1480. color: #834F00;
  1481. margin-bottom: 26rpx;
  1482. image {
  1483. width: 126rpx;
  1484. height: 30rpx;
  1485. margin-right: 34rpx;
  1486. }
  1487. }
  1488. &-price {
  1489. font-weight: 500;
  1490. font-size: 32rpx;
  1491. color: #885201;
  1492. line-height: 38rpx;
  1493. text {
  1494. font-family: Roboto, Roboto;
  1495. font-weight: bold;
  1496. font-size: 40rpx;
  1497. color: #EA8F07;
  1498. margin: 0 8rpx;
  1499. }
  1500. }
  1501. .buyvip {
  1502. height: 72rpx;
  1503. background: #885201;
  1504. border-radius: 36rpx 36rpx 36rpx 36rpx;
  1505. font-weight: 600;
  1506. font-size: 28rpx;
  1507. color: #FFF6E7;
  1508. line-height: 72rpx;
  1509. padding: 0 32rpx;
  1510. display: inline-block;
  1511. }
  1512. }
  1513. .like-product {
  1514. width: 100%;
  1515. margin-top: 40rpx;
  1516. }
  1517. .likeTitleTextClass {
  1518. font-weight: bold;
  1519. font-size: 40rpx;
  1520. color: #222222;
  1521. margin-bottom: 30rpx;
  1522. }
  1523. .btns {
  1524. // height: 110rpx;
  1525. //padding-bottom: 88rpx;
  1526. }
  1527. .login-btn {
  1528. display: flex;
  1529. align-items: center;
  1530. justify-content: center;
  1531. flex: 1;
  1532. height: 110rpx;
  1533. background: #fff;
  1534. // box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
  1535. border-radius: 24rpx;
  1536. font-family: PingFang SC;
  1537. font-weight: 400;
  1538. font-size: 36rpx;
  1539. color: rgba(0,0,0,0.65);
  1540. }
  1541. .popupBox {
  1542. padding: 36rpx 40rpx;
  1543. input {
  1544. padding: 30rpx 0;
  1545. border-bottom: 1rpx solid #EAEAEA;
  1546. margin-top: 42rpx;
  1547. }
  1548. .es-mt-56 {
  1549. margin-top: 56rpx;
  1550. }
  1551. .popupBox-btn {
  1552. width: 282rpx;
  1553. height: 104rpx;
  1554. border-radius: 12rpx;
  1555. background: #F2F2F2;
  1556. }
  1557. .colorE62129 {
  1558. color: #E62129;
  1559. }
  1560. .bgE62129 {
  1561. background: #E62129;
  1562. }
  1563. }
  1564. .menuBox {
  1565. // flex: 1;
  1566. // overflow-y: scroll;
  1567. // overflow-x: hidden;
  1568. }
  1569. .qyh {
  1570. font-size: 32rpx !important;
  1571. color: rgba(0, 0, 0, 0.85) !important;
  1572. }
  1573. .allOrderTextClass {
  1574. font-weight: 400;
  1575. font-size: 32rpx;
  1576. color: #00000073;
  1577. margin-right: 10rpx;
  1578. }
  1579. </style>