Browse Source

微信接口

sunChengjie 11 months ago
parent
commit
f0f7b53c3c
5 changed files with 171 additions and 38 deletions
  1. 76 8
      package-lock.json
  2. 2 1
      package.json
  3. 57 7
      src/App.vue
  4. 11 0
      src/api/index.js
  5. 25 22
      src/main.js

+ 76 - 8
package-lock.json

@@ -915,8 +915,7 @@
     "asynckit": {
       "version": "0.4.0",
       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
-      "dev": true
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
     },
     "atob": {
       "version": "2.1.2",
@@ -950,6 +949,33 @@
       "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
       "dev": true
     },
+    "axios": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.5.0.tgz",
+      "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
+      "requires": {
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      },
+      "dependencies": {
+        "follow-redirects": {
+          "version": "1.15.6",
+          "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.6.tgz",
+          "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
+        },
+        "form-data": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
+          "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.8",
+            "mime-types": "^2.1.12"
+          }
+        }
+      }
+    },
     "babel-code-frame": {
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
@@ -3021,7 +3047,6 @@
       "version": "1.0.8",
       "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
       "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
-      "dev": true,
       "requires": {
         "delayed-stream": "~1.0.0"
       }
@@ -3224,6 +3249,11 @@
       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
       "dev": true
     },
+    "copy-text-to-clipboard": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
+      "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q=="
+    },
     "copy-webpack-plugin": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz",
@@ -4590,8 +4620,7 @@
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
-      "dev": true
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
     },
     "delegate": {
       "version": "3.2.0",
@@ -9234,14 +9263,12 @@
     "mime-db": {
       "version": "1.46.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
-      "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
-      "dev": true
+      "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ=="
     },
     "mime-types": {
       "version": "2.1.29",
       "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
       "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
-      "dev": true,
       "requires": {
         "mime-db": "1.46.0"
       }
@@ -9468,6 +9495,11 @@
       "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
       "dev": true
     },
+    "mutation-observer": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/mutation-observer/-/mutation-observer-1.0.3.tgz",
+      "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
+    },
     "mute-stream": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
@@ -12838,6 +12870,11 @@
         }
       }
     },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
     "prr": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
@@ -15775,6 +15812,37 @@
       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
       "dev": true
     },
+    "vconsole": {
+      "version": "3.15.1",
+      "resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.1.tgz",
+      "integrity": "sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==",
+      "requires": {
+        "@babel/runtime": "^7.17.2",
+        "copy-text-to-clipboard": "^3.0.1",
+        "core-js": "^3.11.0",
+        "mutation-observer": "^1.0.3"
+      },
+      "dependencies": {
+        "@babel/runtime": {
+          "version": "7.24.1",
+          "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.24.1.tgz",
+          "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==",
+          "requires": {
+            "regenerator-runtime": "^0.14.0"
+          }
+        },
+        "core-js": {
+          "version": "3.36.1",
+          "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.36.1.tgz",
+          "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA=="
+        },
+        "regenerator-runtime": {
+          "version": "0.14.1",
+          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+          "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+        }
+      }
+    },
     "vendors": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz",

+ 2 - 1
package.json

@@ -14,13 +14,14 @@
     "build": "node build/build.js"
   },
   "dependencies": {
-    "axios": "1.5.0",
+    "axios": "^1.5.0",
     "clipboard": "^2.0.8",
     "jquery": "^3.6.0",
     "jsbarcode": "^3.11.5",
     "qrcode": "^1.4.4",
     "sass-loader": "^10.1.1",
     "vant": "^2.12.11",
+    "vconsole": "^3.15.1",
     "vue": "^2.5.2",
     "vue-jsonp": "^2.0.0",
     "vue-resource": "^1.5.2",

+ 57 - 7
src/App.vue

@@ -1,21 +1,71 @@
 <template>
   <div id="app">
-    <router-view ></router-view>
+    <router-view></router-view>
   </div>
 </template>
 
 <script>
+import { getWxConfig } from './api/index'
+import wx from "weixin-jsapi";
 export default {
-  name: 'App'
+  name: 'App',
+  provide() { //父组件中通过provide来提供变量,在子组件中通过inject来注入变量。                                             
+    return {
+      reload: this.reload
+    }
+  },
+  data() {
+    return {
+      isRouterAlive: true //控制视图是否显示的变量
+    }
+  },
+
+  async created() {
+    window.localStorage.setItem('scanUrl', location.href.split('#')[0])
+    // this.$http.post(this.$store.state.host + "/weixin/getWxConfig", {
+    // 	url: window.location.href.split('#')[0]
+    // }, {
+    // 	emulateJSON: true
+    // })
+
+    const res = await getWxConfig({ url: window.location.href.split('#')[0] })
+
+    //发送成功
+    var timestamp = res.wxConfig.timestamp;
+    var noncestr = res.wxConfig.nonceStr;
+    var signature = res.wxConfig.signature;
+    var appId = res.wxConfig.appId;
+    wx.config({
+      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+      // debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+      appId: appId, // 必填,公众号的唯一标识
+      timestamp: timestamp, // 必填,生成签名的时间戳
+      nonceStr: noncestr, // 必填,生成签名的随机串
+      signature: signature, // 必填,签名,见附录1
+      jsApiList: [
+        "scanQRCode",
+      ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+    });
+    //  res => {
+    // 	//发送失败
+    // 	Toast("网络错误!")
+    // }
+  },
+  methods: {
+    reload() {
+      this.isRouterAlive = false; //先关闭,
+      this.$nextTick(function () {
+        this.isRouterAlive = true; //再打开
+      })
+    }
+  }
 }
 </script>
 
-<style  scoped>
+<style scoped>
 #app {
   width: 100%;
- max-width:7.5rem;
- margin: 0 auto;
+  max-width: 7.5rem;
+  margin: 0 auto;
 }
-
-
 </style>

+ 11 - 0
src/api/index.js

@@ -86,5 +86,16 @@ export function UserUpdate(data) {
     })
 }
 
+//获取微信
+export function getWxConfig(data) {
+    return request({
+        url: '/tianzong/weixin/getWxConfig',
+        method: 'post',
+        data: data,
+        emulateJSON: true
+    })
+}
+
+
 
 

+ 25 - 22
src/main.js

@@ -2,7 +2,7 @@
 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
 
 import Vue from 'vue'
-import {VueJsonp} from 'vue-jsonp'
+import { VueJsonp } from 'vue-jsonp'
 Vue.use(VueJsonp)
 import App from './App'
 import router from './router'
@@ -16,13 +16,15 @@ import Vant from 'vant'
 import clipboard from 'clipboard'
 import 'vant/lib/index.css'
 import wx from 'weixin-js-sdk'
-import request from "@/utils/request" 
+import VConsole from 'vconsole';
+const vconsole = new VConsole()
+import request from "@/utils/request"
 Vue.prototype.$axios = request
-Vue.prototype.$wx= wx
-Vue.component('tabbar',tabbar)
-Vue.component('banner',banner)
-Vue.component('back',back)
-Vue.component('backindex',backIndex)
+Vue.prototype.$wx = wx
+Vue.component('tabbar', tabbar)
+Vue.component('banner', banner)
+Vue.component('back', back)
+Vue.component('backindex', backIndex)
 Vue.config.productionTip = false
 Vue.use(Vant)
 Vue.use(resource)
@@ -31,11 +33,12 @@ Vue.use(common)
 Vue.prototype.clipboard = clipboard
 
 
+
 // 时间戳过滤器
 Vue.filter('dateFormat', (dataStr) => {
   var time = new Date(dataStr)
 
-  function timeAdd0 (str) {
+  function timeAdd0(str) {
     if (str < 10) {
       str = '0' + str
     }
@@ -60,24 +63,24 @@ Vue.filter('dateFormat', (dataStr) => {
 // })
 /* eslint-disable no-new */
 router.beforeEach((to, from, next) => {
-	if (to.matched.some(record => record.meta.needLogin)) { // 判断该路由是否需要登录权限
-		//登录判断
-		
-		if (localStorage.getItem('userId')) { // 判断当前用户的登录信息loginInfo是否存在
-			next();
-		} else {
-			next({
-				path: '/Login'
-			})
-		}
-	} else {
-		next();
-	}
+  if (to.matched.some(record => record.meta.needLogin)) { // 判断该路由是否需要登录权限
+    //登录判断
+
+    if (localStorage.getItem('userId')) { // 判断当前用户的登录信息loginInfo是否存在
+      next();
+    } else {
+      next({
+        path: '/Login'
+      })
+    }
+  } else {
+    next();
+  }
 })
 new Vue({
   el: '#app',
   router,
-  store:store,
+  store: store,
   components: { App },
   template: '<App/>'
 })