share.helper.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /* 小程序码 */
  2. import store from '@/store/index.js'
  3. import { wxUnlimited } from '@/services/api/auth.js'
  4. const fs = uni.getFileSystemManager()
  5. const qrcodePath = `${wx.env.USER_DATA_PATH}/qrcodePath`
  6. const defalutOptions = {
  7. title: '护肤上颜选,正品有好货~',
  8. path: '/pages/index/index',
  9. imageUrl: 'https://static.caimei365.com/app/mini-hehe/icon/icon-share.png'
  10. }
  11. export function shareDataResult(shareData, title, coverUrl) {
  12. const state_str = encodeURIComponent(encrypt(shareData))
  13. const result = {
  14. title: title || defalutOptions.title,
  15. path: `${defalutOptions.path}?state_str=${state_str}`,
  16. imageUrl: coverUrl || defalutOptions.imageUrl
  17. }
  18. return result
  19. }
  20. const queryKeyOfMap = {
  21. 'type': 't',
  22. 'inviteUserId': 'i',
  23. 'activityId': 'a',
  24. 'dealerUserId': 'd',
  25. 'keyWord': 'k',
  26. 'productId': 'p',
  27. 'jumpState': 'j',
  28. 'collageId': 'c'
  29. }
  30. const enQueryKeyOfMap = {
  31. 't': 'type',
  32. 'i': 'inviteUserId',
  33. 'a': 'activityId',
  34. 'd': 'dealerUserId',
  35. 'k': 'keyWord',
  36. 'p': 'productId',
  37. 'j': 'jumpState',
  38. 'c': 'collageId'
  39. }
  40. // 创建二维码保存路径
  41. function createQrcodeDir(callback) {
  42. try {
  43. fs.accessSync(qrcodePath)
  44. console.log('已存在文件夹')
  45. callback(qrcodePath)
  46. } catch (e) {
  47. fs.mkdirSync(qrcodePath)
  48. console.log('不存在文件夹')
  49. callback(qrcodePath)
  50. }
  51. }
  52. /* 生成二维码链接 */
  53. export async function generateWxUnlimited(params) {
  54. try {
  55. // 从服务端获取二维码arrayBuffer
  56. return await wxUnlimited({
  57. page: params.pagePath || 'pages/index/index',
  58. scene: codeQueryStr(params.queryStr),
  59. check_path: process.env.NODE_ENV === 'production', // 是否校验页面
  60. env_version: process.env.NODE_ENV === 'production' ? 'release' : 'trial', // 正式版 or 开发版
  61. width: 200, // 二维码宽度
  62. auto_color: false, // 自动颜色
  63. line_color: { 'r': 0, 'g': 0, 'b': 0 }, // 线条颜色
  64. is_hyaline: true // 透明底
  65. })
  66. } catch (e) {
  67. return Promise.reject(e)
  68. }
  69. }
  70. // 编码查询参数
  71. export function codeQueryStr(query = '') {
  72. const keys = Object.keys(queryKeyOfMap)
  73. return query.split('&').map(str => {
  74. return str.split('=').map((substr, index) => {
  75. if (!index) {
  76. return queryKeyOfMap[keys.find(item => substr === item)]
  77. } else {
  78. return substr
  79. }
  80. }).join('=')
  81. }).join('&')
  82. }
  83. // 反编码查询参数
  84. export function enCodeQueryStr(query) {
  85. const keys = Object.keys(enQueryKeyOfMap)
  86. return query.split('&').map(str => {
  87. return str.split('=').map((substr, index) => {
  88. if (!index) {
  89. return enQueryKeyOfMap[keys.find(item => substr === item)]
  90. } else {
  91. return substr
  92. }
  93. }).join('=')
  94. }).join('&')
  95. }