invite.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <template>
  2. <view class="page">
  3. <view class="qr-card">
  4. <view class="title">
  5. 邀请好友加入慧研学惠生活
  6. </view>
  7. <view class="qrcode-box">
  8. <u--image width="360rpx" height="360rpx" :src="src">
  9. <template v-slot:loading>
  10. <u-loading-icon size="56rpx" color="#0C6FFE"></u-loading-icon>
  11. </template>
  12. </u--image>
  13. </view>
  14. <view class="save-btn">
  15. <view style="width: 480rpx">
  16. <u-button shape="circle" @click="save">保存二维码</u-button>
  17. </view>
  18. </view>
  19. </view>
  20. <view class="rules">
  21. <view class="title">
  22. 慧研学惠生活用户邀请活动奖励规则
  23. </view>
  24. <view class="rules-content">
  25. <text>
  26. 一、返利激励机制
  27. 1. 订购奖励:当被推荐的新用户首次订购慧研学惠生活任意档会员,推荐者将从新用户订购期内的月会员费中获得10%的返利激励;
  28. 2. 持续激励:被推荐的新用户持续订购会员,推荐者每月都能享受返利;
  29. 3. 推荐人数无上限:每个慧研学惠生活用户可以推荐的新用户人数没有上限;
  30. 4. 新用户在取消会员订购后,推荐者停止获得返利;
  31. 5. 新用户在取消会员订购后再次订购会员,原推荐者无法继续获得返利;
  32. 二、返利发放条件与时间
  33. 1. 新用户定义:被邀请者须是邀请前未注册、登录过慧研学惠生活平台的用户。
  34. 2. 确认订购:新用户被邀请后的48小时内订购成功,且在5天内无退订行为,系统将自动确认发放返利资格。
  35. 3. 发放时间:当月返利将在次月发放至慧研学惠生活个人账号。
  36. 5. 提现时间:每月25日,推荐者可进行上月返利的提现操作。
  37. *最终解释权归本平台所有。
  38. </text>
  39. </view>
  40. </view>
  41. </view>
  42. </template>
  43. <script>
  44. import { BASE_URL } from '@/utils/config.js'
  45. export default {
  46. data() {
  47. return {
  48. src: '',
  49. userInfo: {}
  50. }
  51. },
  52. methods: {
  53. save() {
  54. // uni.getImageInfo({
  55. // src:this.src,
  56. // success: function (image) {
  57. // uni.saveImageToPhotosAlbum({
  58. // filePath:image.path
  59. // })
  60. // }
  61. // })
  62. uni.showLoading({
  63. title: '正在保存图片...'
  64. });
  65. //获取用户的当前设置。获取相册权限
  66. uni.getSetting({
  67. success: (res) => {
  68. //如果没有相册权限
  69. if (!res.authSetting["scope.writePhotosAlbum"]) {
  70. //向用户发起授权请求
  71. uni.authorize({
  72. scope: "scope.writePhotosAlbum",
  73. success: () => {
  74. //授权成功保存图片到系统相册
  75. // uni.saveImageToPhotosAlbum({
  76. // //图片路径,不支持网络图片路径
  77. // filePath: url,
  78. // success: (res) => {
  79. // uni.hideLoading();
  80. // return uni.showToast({
  81. // title: "保存成功!",
  82. // });
  83. // },
  84. // fail: (res) => {
  85. // console.log(res.errMsg);
  86. // return uni.showToast({
  87. // title: res.errMsg,
  88. // });
  89. // },
  90. // complete: (res) => { uni.hideLoading(); },
  91. // });
  92. console.log(this.src.slice(22))
  93. console.log(this.src)
  94. console.log(wx.env.USER_DATA_PATH + '/pic' + number + '.png')
  95. const number = Math.random()
  96. wx.getFileSystemManager().writeFile({
  97. filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
  98. data: this.src.slice(22),
  99. encoding: 'base64',
  100. success: res => {
  101. wx.saveImageToPhotosAlbum({
  102. filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
  103. success: function (res) {
  104. wx.showToast({ title: '保存成功', })
  105. },
  106. fail: function (err) {
  107. console.log(err)
  108. }
  109. })
  110. console.log(res)
  111. }, fail: err => {
  112. console.log(err)
  113. }
  114. })
  115. },
  116. //授权失败
  117. fail: () => {
  118. uni.hideLoading();
  119. uni.showModal({
  120. title: "您已拒绝获取相册权限",
  121. content: "是否进入权限管理,调整授权?",
  122. success: (res) => {
  123. if (res.confirm) {
  124. //调起客户端小程序设置界面,返回用户设置的操作结果。(重新让用户授权)
  125. uni.openSetting({
  126. success: (res) => {
  127. console.log(res.authSetting);
  128. },
  129. });
  130. } else if (res.cancel) {
  131. return uni.showToast({
  132. title: "已取消!",
  133. });
  134. }
  135. },
  136. });
  137. },
  138. });
  139. } else {
  140. //如果已有相册权限,直接保存图片到系统相册
  141. // uni.saveImageToPhotosAlbum({
  142. // filePath: url,
  143. // success: (res) => {
  144. // uni.hideLoading();
  145. // return uni.showToast({
  146. // title: "保存成功!",
  147. // });
  148. // },
  149. // fail: (res) => {
  150. // uni.hideLoading();
  151. // console.log(res.errMsg);
  152. // return uni.showToast({
  153. // title: res.errMsg,
  154. // });
  155. // },
  156. // //无论成功失败都走的回调
  157. // complete: (res) => { uni.hideLoading(); },
  158. // });
  159. const number = Math.random()
  160. wx.getFileSystemManager().writeFile({
  161. filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
  162. data: this.src.slice(22),
  163. encoding: 'base64',
  164. success: res => {
  165. wx.saveImageToPhotosAlbum({
  166. filePath: wx.env.USER_DATA_PATH + '/pic' + number + '.png',
  167. success: function (res) {
  168. wx.showToast({ title: '保存成功', })
  169. },
  170. fail: function (err) {
  171. console.log(err)
  172. }
  173. })
  174. console.log(res)
  175. }, fail: err => {
  176. console.log(err)
  177. }
  178. })
  179. }
  180. },
  181. fail: (res) => { },
  182. });
  183. },
  184. },
  185. created() {
  186. this.userInfo = JSON.parse(uni.getStorageSync('userInfo'))
  187. uni.request({
  188. url: BASE_URL + '/zswl-cloud-bdb/promotion/qrcode',
  189. method: "post",
  190. data: {
  191. "scene": JSON.parse(uni.getStorageSync('userInfo')).userId,
  192. },
  193. responseType: 'arraybuffer'
  194. }).then(res => {
  195. this.src = 'data:image/png;base64,' + uni.arrayBufferToBase64(res.data)
  196. })
  197. }
  198. }
  199. </script>
  200. <style lang="scss" scoped>
  201. .page {
  202. background: #F9F9F9;
  203. min-height: 100vh;
  204. padding: 24rpx 20rpx;
  205. .qr-card {
  206. padding: 42rpx;
  207. display: flex;
  208. flex-direction: column;
  209. justify-items: center;
  210. justify-content: center;
  211. background: #FFFFFF;
  212. border-radius: 16rpx;
  213. .title {
  214. font-size: 36rpx;
  215. color: #222222;
  216. font-weight: Bold;
  217. margin-bottom: 36rpx;
  218. text-align: center;
  219. }
  220. .qrcode-box {
  221. display: flex;
  222. justify-content: center;
  223. margin-bottom: 78rpx;
  224. }
  225. .save-btn {
  226. display: flex;
  227. justify-content: center;
  228. margin-bottom: 16rpx;
  229. }
  230. }
  231. .rules {
  232. color: #222222;
  233. font-size: 36rpx;
  234. font-weight: Bold;
  235. margin-top: 30rpx;
  236. .rules-content {
  237. color: #CCCCCC;
  238. font-size: 28rpx;
  239. margin-top: 16rpx;
  240. font-weight: 400;
  241. }
  242. }
  243. }
  244. </style>