CXBPhoneLoginButton.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <script lang="ts" setup>
  2. import {authAppletPhone, bindPhone, getUserUnionId} from "~/apis/user";
  3. import {useUserStore} from "~/stores/userStore";
  4. import Cache from "~/utils/cache";
  5. const userStore = useUserStore()
  6. const props = defineProps({
  7. text: {
  8. type: String,
  9. require: true
  10. },
  11. key: {
  12. type: String
  13. }
  14. })
  15. function getPhoneNumber(e) {
  16. // console.log(e.detail)
  17. // console.log(e)
  18. if (e.detail.errMsg === 'getPhoneNumber:ok') {
  19. uni.login({
  20. provider: 'weixin',
  21. success: result => {
  22. const source = 'cxb'
  23. getUserUnionId({
  24. code: result.code,
  25. source,
  26. }).then(unionRes => {
  27. // getShareId(shareI)
  28. const shareId = Cache.get('SHARE_ID')
  29. let params = {
  30. sessionKey: unionRes.session_key,
  31. encryptedData: e.detail.encryptedData,
  32. iv: e.detail.iv,
  33. }
  34. if (shareId) {
  35. params.share_id = shareId
  36. }
  37. // 手机号授权
  38. authAppletPhone({
  39. ...params
  40. }).then(authRes => {
  41. userStore.login(authRes.token, authRes.exp)
  42. userStore.setUID(authRes.user.uid)
  43. userStore.setUserInfo(authRes.user)
  44. // 绑定手机号
  45. bindPhone({
  46. phone: authRes.user.account,
  47. sms: 1,
  48. sms_code: '1024',
  49. password: '12345678',
  50. third_user_id: unionRes.unionid,
  51. type: 1
  52. }).then(bindRes => {
  53. // console.log('已绑定手机')
  54. // console.log(bindRes)
  55. Cache.clear('SHARE_ID')
  56. // 跳转
  57. switch (props.key) {
  58. case '10':
  59. uni.switchTab({
  60. url: '/pages/user/index'
  61. })
  62. break;
  63. case '4':
  64. uni.navigateBack({
  65. delta: 2
  66. })
  67. break;
  68. case '1':
  69. uni.switchTab({
  70. url: '/pages/order_addcart/index'
  71. })
  72. break;
  73. case undefined:
  74. uni.switchTab({
  75. url: '/pages/user/index'
  76. })
  77. break;
  78. case '30':
  79. uni.switchTab({
  80. url: '/pages/home/index'
  81. })
  82. break;
  83. default:
  84. uni.switchTab({
  85. url: '/pages/home/index'
  86. })
  87. }
  88. })
  89. // console.log(authRes)
  90. // authRes.token
  91. })
  92. // 手机号绑定
  93. // res.openid
  94. // res.session_key
  95. // bindPhone({
  96. //
  97. // })
  98. })
  99. }
  100. })
  101. }
  102. }
  103. </script>
  104. <template>
  105. <div class="bg-white border border-solid border-1 border-gray-300 rounded-md py-3 gap-2 flex justify-center items-center">
  106. <image
  107. src="https://test.bjtdba.com/applet/static/home/4879edf0b6e2b0ad29fa7d4053d676b.png" mode="widthFix"
  108. class="w-4 h-4"
  109. ></image>
  110. <button
  111. open-type="getPhoneNumber" @getphonenumber="getPhoneNumber"
  112. >
  113. {{ text }}
  114. </button>
  115. </div>
  116. </template>
  117. <style>
  118. button{
  119. margin: 0;
  120. padding: 0;
  121. outline: none;
  122. border-radius: 0;
  123. background-color: transparent;
  124. line-height: inherit;
  125. }
  126. button::after{
  127. border: none;
  128. }
  129. </style>