张延森 před 3 roky
rodič
revize
0e94298a82
3 změnil soubory, kde provedl 182 přidání a 25 odebrání
  1. 3
    0
      src/main.js
  2. 94
    0
      src/utils/wx.js
  3. 85
    25
      yarn.lock

+ 3
- 0
src/main.js Zobrazit soubor

@@ -3,6 +3,9 @@ import App from './App.vue'
3 3
 
4 4
 import router from './router/index'//路由
5 5
 
6
+import { redirect } from './utils/wx'
7
+redirect()
8
+
6 9
 Vue.config.productionTip = false
7 10
 
8 11
 new Vue({

+ 94
- 0
src/utils/wx.js Zobrazit soubor

@@ -0,0 +1,94 @@
1
+
2
+function request (url, options) {
3
+  return fetch(url, options)
4
+    .then(response => response.json())
5
+    .then(data => {
6
+      if (data.code === 1000) return data.data
7
+      return Promise.reject(data.message)
8
+    })
9
+}
10
+
11
+const jsApiList = [
12
+  'updateAppMessageShareData',
13
+  'updateTimelineShareData',
14
+  'onMenuShareTimeline',
15
+  'onMenuShareAppMessage',
16
+  'onMenuShareQQ',
17
+  'onMenuShareWeibo',
18
+  'onMenuShareQZone'
19
+]
20
+
21
+function initSDK (url) {
22
+  request(`https://api.h5.njyunzhi.com/mp/jssdk?url=${encodeURIComponent(url)}`).then((res) => {
23
+    window.wx.config({
24
+      debug: process.env.NODE_ENV === 'development', // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
25
+      appId: res.appId, // 必填,公众号的唯一标识
26
+      timestamp: res.timestamp, // 必填,生成签名的时间戳
27
+      nonceStr: res.nonceStr, // 必填,生成签名的随机串
28
+      signature: res.signature, // 必填,签名
29
+      jsApiList // 必填,需要使用的JS接口列表
30
+    })
31
+  })
32
+}
33
+
34
+/**
35
+ * 分享
36
+ * @param {*} opt
37
+ */
38
+export function share (opt) {
39
+  initSDK(opt.link)
40
+  window.wx.ready(function () {
41
+    jsApiList.map((apiName) => {
42
+      const api = window.wx[apiName]
43
+      api({
44
+        title: opt.title || '', // 分享标题
45
+        link: opt.link || '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
46
+        imgUrl: opt.imgUrl || '', // 分享图标
47
+        desc: opt.desc || ''
48
+      })
49
+    })
50
+  })
51
+}
52
+
53
+/**
54
+ * 获取 code
55
+ * @returns 
56
+ */
57
+function getCode() {
58
+  const matched = /[?&]*code=([^&]+)/.exec(location.search)
59
+  if (matched) {
60
+    return decodeURIComponent(matched[1])
61
+  }
62
+}
63
+
64
+/**
65
+ * 跳转授权页面
66
+ */
67
+export function redirect() {
68
+  if (process.env.NODE_ENV === 'development') return;
69
+
70
+  const originCode = localStorage.getItem('wxcode');
71
+  const queryCode = getCode();
72
+  localStorage.setItem('wxcode', queryCode)
73
+
74
+  if (!queryCode || queryCode !== originCode) {
75
+    const local = encodeURIComponent(location.href)
76
+    const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd3bab568bc42d1de&redirect_uri=${local}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
77
+    window.location.href = url
78
+  }
79
+}
80
+
81
+/**
82
+ * 获取 openid
83
+ * @returns 
84
+ */
85
+export function getOpenId() {
86
+  if (process.env.NODE_ENV === 'development') return Promise.resolve('123');
87
+
88
+  const code = getCode()
89
+  if (!code) {
90
+    return Promise.reject("获取用户信息失败, 请刷新重试")
91
+  }
92
+
93
+  return request(`https://api.h5.njyunzhi.com/mp/openid?code=${encodeURIComponent(code)}`)
94
+}

+ 85
- 25
yarn.lock Zobrazit soubor

@@ -2490,6 +2490,11 @@ clone@^1.0.2:
2490 2490
   resolved "https://registry.nlark.com/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
2491 2491
   integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
2492 2492
 
2493
+clone@^2.1.1:
2494
+  version "2.1.2"
2495
+  resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
2496
+  integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
2497
+
2493 2498
 coa@^2.0.2:
2494 2499
   version "2.0.2"
2495 2500
   resolved "https://registry.npmmirror.com/coa/download/coa-2.0.2.tgz?cache=0&sync_timestamp=1636035838814&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcoa%2Fdownload%2Fcoa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
@@ -2665,6 +2670,13 @@ cookie@0.4.1:
2665 2670
   resolved "https://registry.npmmirror.com/cookie/download/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
2666 2671
   integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
2667 2672
 
2673
+copy-anything@^2.0.1:
2674
+  version "2.0.3"
2675
+  resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87"
2676
+  integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==
2677
+  dependencies:
2678
+    is-what "^3.12.0"
2679
+
2668 2680
 copy-concurrently@^1.0.0:
2669 2681
   version "1.0.5"
2670 2682
   resolved "https://registry.nlark.com/copy-concurrently/download/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -3361,10 +3373,10 @@ entities@^2.0.0:
3361 3373
   resolved "https://registry.nlark.com/entities/download/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
3362 3374
   integrity sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=
3363 3375
 
3364
-errno@^0.1.3, errno@~0.1.7:
3376
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
3365 3377
   version "0.1.8"
3366
-  resolved "https://registry.nlark.com/errno/download/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
3367
-  integrity sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=
3378
+  resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
3379
+  integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
3368 3380
   dependencies:
3369 3381
     prr "~1.0.1"
3370 3382
 
@@ -4461,10 +4473,10 @@ human-signals@^1.1.1:
4461 4473
   resolved "https://registry.nlark.com/human-signals/download/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
4462 4474
   integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M=
4463 4475
 
4464
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
4476
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
4465 4477
   version "0.4.24"
4466
-  resolved "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
4467
-  integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
4478
+  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
4479
+  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
4468 4480
   dependencies:
4469 4481
     safer-buffer ">= 2.1.2 < 3"
4470 4482
 
@@ -4495,6 +4507,11 @@ ignore@^4.0.3, ignore@^4.0.6:
4495 4507
   resolved "https://registry.npmmirror.com/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
4496 4508
   integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
4497 4509
 
4510
+image-size@~0.5.0:
4511
+  version "0.5.5"
4512
+  resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
4513
+  integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
4514
+
4498 4515
 import-cwd@^2.0.0:
4499 4516
   version "2.1.0"
4500 4517
   resolved "https://registry.nlark.com/import-cwd/download/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
@@ -4938,6 +4955,11 @@ is-weakref@^1.0.1:
4938 4955
   dependencies:
4939 4956
     call-bind "^1.0.2"
4940 4957
 
4958
+is-what@^3.12.0:
4959
+  version "3.14.1"
4960
+  resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
4961
+  integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
4962
+
4941 4963
 is-windows@^1.0.2:
4942 4964
   version "1.0.2"
4943 4965
   resolved "https://registry.nlark.com/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -5127,11 +5149,6 @@ kind-of@^6.0.0, kind-of@^6.0.2:
5127 5149
   resolved "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
5128 5150
   integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
5129 5151
 
5130
-klona@^2.0.4:
5131
-  version "2.0.5"
5132
-  resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
5133
-  integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
5134
-
5135 5152
 launch-editor-middleware@^2.2.1:
5136 5153
   version "2.3.0"
5137 5154
   resolved "https://registry.npmmirror.com/launch-editor-middleware/download/launch-editor-middleware-2.3.0.tgz#edd0ed45a46f5f1cf27540f93346b5de9e8c3be0"
@@ -5147,12 +5164,31 @@ launch-editor@^2.2.1, launch-editor@^2.3.0:
5147 5164
     picocolors "^1.0.0"
5148 5165
     shell-quote "^1.6.1"
5149 5166
 
5150
-less-loader@^10.2.0:
5151
-  version "10.2.0"
5152
-  resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32"
5153
-  integrity sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==
5167
+less-loader@^5.0.0:
5168
+  version "5.0.0"
5169
+  resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-5.0.0.tgz#498dde3a6c6c4f887458ee9ed3f086a12ad1b466"
5170
+  integrity sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==
5171
+  dependencies:
5172
+    clone "^2.1.1"
5173
+    loader-utils "^1.1.0"
5174
+    pify "^4.0.1"
5175
+
5176
+less@^4.0.0:
5177
+  version "4.1.2"
5178
+  resolved "https://registry.yarnpkg.com/less/-/less-4.1.2.tgz#6099ee584999750c2624b65f80145f8674e4b4b0"
5179
+  integrity sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==
5154 5180
   dependencies:
5155
-    klona "^2.0.4"
5181
+    copy-anything "^2.0.1"
5182
+    parse-node-version "^1.0.1"
5183
+    tslib "^2.3.0"
5184
+  optionalDependencies:
5185
+    errno "^0.1.1"
5186
+    graceful-fs "^4.1.2"
5187
+    image-size "~0.5.0"
5188
+    make-dir "^2.1.0"
5189
+    mime "^1.4.1"
5190
+    needle "^2.5.2"
5191
+    source-map "~0.6.0"
5156 5192
 
5157 5193
 levn@^0.3.0, levn@~0.3.0:
5158 5194
   version "0.3.0"
@@ -5295,10 +5331,10 @@ lru-cache@^5.1.1:
5295 5331
   dependencies:
5296 5332
     yallist "^3.0.2"
5297 5333
 
5298
-make-dir@^2.0.0:
5334
+make-dir@^2.0.0, make-dir@^2.1.0:
5299 5335
   version "2.1.0"
5300
-  resolved "https://registry.nlark.com/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
5301
-  integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=
5336
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
5337
+  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
5302 5338
   dependencies:
5303 5339
     pify "^4.0.1"
5304 5340
     semver "^5.6.0"
@@ -5436,10 +5472,10 @@ mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
5436 5472
   dependencies:
5437 5473
     mime-db "1.51.0"
5438 5474
 
5439
-mime@1.6.0:
5475
+mime@1.6.0, mime@^1.4.1:
5440 5476
   version "1.6.0"
5441
-  resolved "https://registry.npmmirror.com/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
5442
-  integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
5477
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
5478
+  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
5443 5479
 
5444 5480
 mime@^2.4.4:
5445 5481
   version "2.6.0"
@@ -5607,6 +5643,15 @@ natural-compare@^1.4.0:
5607 5643
   resolved "https://registry.npmmirror.com/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
5608 5644
   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
5609 5645
 
5646
+needle@^2.5.2:
5647
+  version "2.9.1"
5648
+  resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684"
5649
+  integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==
5650
+  dependencies:
5651
+    debug "^3.2.6"
5652
+    iconv-lite "^0.4.4"
5653
+    sax "^1.2.4"
5654
+
5610 5655
 negotiator@0.6.2:
5611 5656
   version "0.6.2"
5612 5657
   resolved "https://registry.nlark.com/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -6044,6 +6089,11 @@ parse-json@^5.0.0:
6044 6089
     json-parse-even-better-errors "^2.3.0"
6045 6090
     lines-and-columns "^1.1.6"
6046 6091
 
6092
+parse-node-version@^1.0.1:
6093
+  version "1.0.1"
6094
+  resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
6095
+  integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
6096
+
6047 6097
 parse5-htmlparser2-tree-adapter@^6.0.0:
6048 6098
   version "6.0.1"
6049 6099
   resolved "https://registry.nlark.com/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6"
@@ -7072,10 +7122,10 @@ safe-regex@^1.1.0:
7072 7122
   resolved "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
7073 7123
   integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
7074 7124
 
7075
-sax@~1.2.4:
7125
+sax@^1.2.4, sax@~1.2.4:
7076 7126
   version "1.2.4"
7077
-  resolved "https://registry.nlark.com/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
7078
-  integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk=
7127
+  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
7128
+  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
7079 7129
 
7080 7130
 schema-utils@^1.0.0:
7081 7131
   version "1.0.0"
@@ -7857,6 +7907,11 @@ tslib@^1.9.0:
7857 7907
   resolved "https://registry.npmmirror.com/tslib/download/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
7858 7908
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
7859 7909
 
7910
+tslib@^2.3.0:
7911
+  version "2.3.1"
7912
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
7913
+  integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
7914
+
7860 7915
 tty-browserify@0.0.0:
7861 7916
   version "0.0.0"
7862 7917
   resolved "https://registry.nlark.com/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
@@ -8191,6 +8246,11 @@ vue-loader@^15.9.2:
8191 8246
     vue-hot-reload-api "^2.3.0"
8192 8247
     vue-style-loader "^4.1.0"
8193 8248
 
8249
+vue-router@^3.5.3:
8250
+  version "3.5.3"
8251
+  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.3.tgz#041048053e336829d05dafacf6a8fb669a2e7999"
8252
+  integrity sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg==
8253
+
8194 8254
 vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
8195 8255
   version "4.1.3"
8196 8256
   resolved "https://registry.nlark.com/vue-style-loader/download/vue-style-loader-4.1.3.tgz#6d55863a51fa757ab24e89d9371465072aa7bc35"