Mine.jsx 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. import { useState, useEffect } from 'react'
  2. import Taro from '@tarojs/taro'
  3. import { Slot } from '@tarojs/components'
  4. import AuthPage from '@/components/AuthPage'
  5. import boy from '@/assets/icons/UserCenter/boy.png'
  6. import girl from '@/assets/icons/UserCenter/girl.png'
  7. import awaitPay from '@/assets/icons/UserCenter/awaitPay.png'
  8. import AllOrder from '@/assets/icons/UserCenter/AllOrder.png'
  9. import Refund from '@/assets/icons/UserCenter/Refund.png'
  10. import ToShop from '@/assets/icons/UserCenter/ToShop.png'
  11. import HomeLogo from '@/assets/icons/UserCenter/HomeLogo.png'
  12. import ContactMe from '@/assets/icons/UserCenter/ContactMe.png'
  13. import collect from '@/assets/icons/UserCenter/collect.png'
  14. import Rules from '@/assets/icons/UserCenter/Rules.png'
  15. import DefaultImage from '@/assets/icons/UserCenter/DefaultImage.png'
  16. import cutoverUser from '@/assets/icons/UserCenter/cutoverUser.png'
  17. import SwitchSelect from '@/components/SwitchSelect'
  18. import { PaysOrder, getMineOrder } from '@/services/payOrder' //创建订单
  19. import { useModel } from '@/store'
  20. import './MineCss/style.less'
  21. export default (props) => {
  22. const { person } = props
  23. const { getAvatar } = useModel('person')
  24. const [showCutover, setShowCutover] = useState(false)
  25. const hasAvatar = !!person.avatar
  26. const [orderNum, setOrderNum] = useState([])
  27. console.log("🚀 ~ file: Mine.jsx ~ line 34 ~ orderNum", orderNum)
  28. const ShowMoldeOn = () => {
  29. setShowCutover(!showCutover)
  30. }
  31. useEffect(() => {
  32. getMineOrder().then(res => setOrderNum(res))
  33. }, [])
  34. // 通过getUserProfile获取微信用户信息
  35. const handleGetUserProfile = () => {
  36. if (hasAvatar) return;
  37. Taro.getUserProfile({
  38. lang: 'zh_CN',
  39. desc: "获取你的昵称、头像、地区及性别",
  40. success: (res) => {
  41. const sessionKey = Taro.getStorageSync('sessionKey')
  42. const data = {
  43. ...res,
  44. sessionKey,
  45. }
  46. getAvatar(data)
  47. },
  48. fail: () => {
  49. //拒绝授权
  50. console.error("拒绝了请求");
  51. return;
  52. }
  53. })
  54. };
  55. //#region
  56. // 待支付
  57. const handleTobePaid = () => {
  58. Taro.navigateTo({ url: '/pages/MineUserAll/AllOrder/index?tabJump=1' })
  59. }
  60. // 待核销
  61. const handleTobeWritten = () => {
  62. Taro.navigateTo({ url: '/pages/MineUserAll/AllOrder/index?tabJump=2' })
  63. }
  64. // 我的订单全部
  65. const handleAllOrder = () => {
  66. Taro.navigateTo({ url: '/pages/MineUserAll/AllOrder/index?tabJump=0' })
  67. }
  68. //退款
  69. const handleRefund = () => {
  70. Taro.navigateTo({ url: '/pages/MineUserAll/RefundMoney/index' })
  71. }
  72. //入住指引
  73. const handleHomeLogo = () => {
  74. Taro.navigateTo({ url: '/pages/index/index?tab=1' })
  75. }
  76. //收藏
  77. const handleCollect = () => {
  78. Taro.navigateTo({ url: '/pages/MineUserAll/Collect/index' })
  79. }
  80. //联系我们
  81. const handleContactMe = () => {
  82. Taro.navigateTo({ url: '/pages/MineUserAll/ContactMe/index' })
  83. }
  84. //条款
  85. const handleRules = () => {
  86. Taro.navigateTo({ url: '/pages/MineUserAll/Rules/index' })
  87. }
  88. //#endregion
  89. return !person.phone ? <AuthPage /> : (
  90. <scroll-view scroll-y style='height: 77vh;' >
  91. <view className='User-box'>
  92. {/* 身份切换 */}
  93. <SwitchSelect show={showCutover} maskClosable />
  94. <view className='User-info'>
  95. <view className='User-photos-box'>
  96. <image src={person.avatar || { DefaultImage }} className='User-photos' />
  97. </view>
  98. <view className='User-info-all'>
  99. <view onClick={handleGetUserProfile} className='User-name'>{hasAvatar ? person.nickName : '点击授权头像'}</view>
  100. <view className='User-phone'>{person.phone.replace(/^(\d{3})\d{4}(\d+)/, "$1****$2") || ''}</view>
  101. <image className='User-sex' src={person.sex === 1 ? boy : girl} />
  102. </view>
  103. {/* 切换身份 */}
  104. <view onClick={ShowMoldeOn} className='User-info-cutover'>
  105. <image className='User-info-cutover-image' src={cutoverUser} />
  106. </view>
  107. </view>
  108. <view>
  109. <view className='buy-list-box'>
  110. <view className='buy-list-Paybox' onClick={handleTobePaid} >
  111. <image className='buy-list-PayLogo' src={awaitPay} />
  112. <view className='buy-list-goPay'>待支付</view>
  113. <view className='buy-list-OrderNumber'>{orderNum?.unPayNum}笔订单</view>
  114. </view>
  115. <view className='buy-list-Paybox ' onClick={handleTobeWritten} >
  116. <image className='buy-list-PayLogo' src={ToShop} />
  117. <view className='buy-list-goPay'>待核销</view>
  118. <view className='buy-list-OrderNumber'>{orderNum?.unVerifiedNum}个订单</view>
  119. </view>
  120. <view className='buy-list-Paybox ' onClick={handleAllOrder} >
  121. <image className='buy-list-PayLogo' src={AllOrder} />
  122. <view className='buy-list-goPay'>全部订单</view>
  123. <view className='buy-list-OrderNumber'>查看详情</view>
  124. </view>
  125. <view className='buy-list-Paybox ' onClick={handleRefund} >
  126. <image className='buy-list-PayLogo' src={Refund} />
  127. <view className='buy-list-goPay'>退款/售后</view>
  128. <view className='buy-list-OrderNumber'>{orderNum?.refundNum}笔订单</view>
  129. </view>
  130. </view>
  131. <view className='Badge-box'>
  132. <view className='Badge-list' onClick={handleHomeLogo}>
  133. <image className='Badge-list-logo' src={HomeLogo} />
  134. <text className='Badge-list-titme'> 入住指引</text>
  135. <text className='Badge-list-gt'>&gt;</text>
  136. </view>
  137. <view className='Badge-list' onClick={handleCollect}>
  138. <image className='Badge-list-logo' src={collect} />
  139. <text className='Badge-list-titme'> 我的收藏</text>
  140. <text className='Badge-list-gt'>&gt;</text>
  141. </view>
  142. <view className='Badge-list' onClick={handleContactMe}>
  143. <image className='Badge-list-logo' src={ContactMe} />
  144. <text className='Badge-list-titme'> 联系我们</text>
  145. <text className='Badge-list-gt'>&gt;</text>
  146. </view>
  147. <view className='Badge-list' onClick={handleRules}>
  148. <image className='Badge-list-logo' src={Rules} />
  149. <text className='Badge-list-titme'> 协议声明</text>
  150. <text className='Badge-list-gt'>&gt;</text>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </scroll-view>
  156. )
  157. }